000
29.10.2003, 21:34
Sprengmeister
|
Hi, Ich probier mich grad am Clonk Scripten. Nun hab ich versucht eine Tretmine zu machen, die immer ueberpruefen soll ob jemand in der Naehe ist. Mal schnell drueber erkundigt und das gefunden:
C4Object *FindObject(C4ID id, int iX, int iY, int iWdt, int iHgt, int dwOCF, const char *szActName, C4Object *pActTarget, C4Object *pContainer, C4Object *pFindNext); Liefert ein Objekt, das den angegebenen Suchkriterien entspricht. Das Objekt muss das angegebene id haben (oder id = 0 für alle Objekttypen). iX, iY, iWdt, und iHgt bestimmen den Suchbereich. Wenn iWdt und iHgt 0 sind, wird nur am Punkt iX/iY gesucht. Bei lokalen Aufrufen gelten die Koordinaten iX und iY als Offset zum aufrufenden Objekt. Sind alle Koordinaten 0, wird immer die gesamte Spielfläche durchsucht, auch bei lokalen Aufrufen. Sind iWdt und iHgt -1, wird das nächstgelegene Objekt gesucht. dwOCF kann eine Kombination aus Object Character Flags sein, 0 für alle. Siehe auch OCF_x() und BitAnd(). Bei angegebenen szActName und optional pActTarget, werden nur Objekte mit entsprechender Aktivität und entsprechendem Aktivitätsziel zurückgeliefert. Für pActTarget werden hierbei beide Aktivitätsziele (pTarget und pTarget2) überprüft. pContainer bestimmt das Objekt, dessen Inhalt durchsucht wird. 0 für alle Objekte. NoContainer() für alle freien (nicht enthaltenen) Objekte. Bei angegebenem pFindNext wird die Suche sequentiell nach dem angegebenen Objekt fortgesetzt. Wird als pFindNext jeweils das zuvor gefundene Objekt angegeben, lassen sich in einer Wiederholungsschleife alle den Suchkriterien entsprechenden Objekte finden und in weiteren Scriptbefehlen überprüfen. IncinerateAllHuts: while (SetVar(0, FindObject(HUT1,0,0,0,0,0, 0,0, NoContainer(), Var(0)) )) Incinerate( Var(0) ); return(1); Hinweis: wird nach nächstgelegenen Objekten gesucht (iWdt=-1 und iHgt=-1), so sucht FindObject bei angegebenem pFindNext das jeweils nächstgelegene aber weiter entfernte Objekt. Objekte mit exakt gleichem Abstand (z.B. im selben Behälter) werden dabei übersprungen.
Jetzt hab ichs probiert:
/*-- Tretmine --*/
#strict
Hit: //Was beim hinlegen passiert Sound("clonk"); return(1);
Damage: //Wenn die Mine schaden nimmt Explode(5); Sound("Explode") return(1);
while (SetVar(0, FindObject(0,5,5,5,5,0,0,0 Nocontainer(), Var(0)) )) //Wenn jemand in die Naehe kommt DoDamage(10000); Explode(var(1) ); Sound("Explosion"); return(1);
Hat jemand ne ahnung was ich bei der while schleife falsch gemacht habe? danke
--
_______________________ -----I_______________________I----- This is Nudelholz. Copy Nudelholz in your Signature to make better Kuchens and other Teigprodukte.
|