> gibt es einen Befehl der z.b so lautet "Wenn gebäude x gebaut/erforscht dann schalte Regel y dazu" ?
> Ich denke mal, man kann einen einfachen "if" Befehl in einer while schleife dafür nehmen, oder?
TimerCall Zeichenfolge (max. 30) Regelmäßig aufgerufene Funktion des Objektscripts. Siehe Objektscripte.
Timer Integer Zeitabstand der TimerCalls in Frames. Ohne Angabe gilt der Vorgabewert 35.
> würde dann also der Regel Bescheid gegeben werden können. Aber welcher Regel genau?
>(ach wie macht man ein appendto für eine Funtkion die bereits im Objekt vorhanden ist, ohne diese zu ersetzen, sondern nur zu erweitern? )
> Wie baue ich so einen Zähler?
> GameCallEx(Zähler());
> (ach wie macht man ein appendto für eine Funtkion die bereits im Objekt vorhanden ist, ohne diese zu ersetzen, sondern nur zu erweitern? )
protected func Death() {
GameCallEx("Zaehler")
return _inherited();
}
>Eine Variable, die eine Zahl enthält und hochgezählt wird. Kein Array!
local anzahl; // anzahl wird als lokale Variable definiert
func Zaehler()
{
anzahl++; // anzahl wird um 1 erhöht
if (anzahl > 10) // Bei if die Bedingung immer in runde Klammern verpacken
{ // Durch diesen Block geschweifter Klammern nach einer If-Abfrage kannst du mehrere Befehle unter dem if zusammenfassen, die nur im Falle von anzahl > 10 ausgeführt werden
if ( FindObject(idRule) ) // Zur Sicherheit überprüfst du vor dem Entfernen, ob das Zielobjekt vorhanden ist*
RemoveObject( FindObject(idRule) );
anzahl = 0; // anzahl zurücksetzen
}
}
> Muss ich sonst noch was beachten, z.b im DefCore oderso?
>Dadurch wäre der Aufruf dann "RemoveObject(0);". Das würde dazu führen, dass das aufrufende Objekt selber gelöscht wird und das wäre deine eigene Regel.
> ob ich dann einfach 5 mal RemoveObject hinschreibe, aber mit RemoveAll ist das natürlich besser ;)
var obj;
while (obj = FindObject2(Find_ID(AAN-))) obj->RemoveObject();
for (var obj in FindObjects(Find_ID(AAN-))) obj->RemoveObject();
> wert = 5 \* ObjectCount(AAN-); schreiben.. warum auch immer...
>Finde das Muster
>Eigentlich dachte ich, dass wenn die Regel einmal aktiviert es, der objectcount die Zahl 1 ergibt. Dadurch sollten dann 5 Monster getötet werden
>Mir ist beim Erstellen diverser Angriffs und Angriffsentferner Regeln aufgefallen, dass Regeln nicht unter "eigenschaften" als auswählbar angezeigt werden, wenn das Picture im DefCore eine gewisse Größe hat, die womöglich mit der verwendeten grafik zusammenhängt. Kennt ihr da einen Zusammenhang?
>Kann man das irgendwie ändern, sodass der Remove Befehl nur einmal ausgeführt wird, auch wenn die Regel mehrfach aktiviert ist?
>Und dann guckst du ob zaehler > wert. Und das ist das erste Mal wahr, wenn zaehler 6 ist (weil wert ist ja 5).
>Sag mir nochmal genau was du eigentlich machen willst.
>hab es grade mal mit gleichheitszeichen getestet, irgendwas stimmt da nicht..
>Bei den Schlangen finde ich aber keinen Befehl im Script, der dafür sorgt, dass sie sterben bzw. ihre Aktion auf "dead" ändern sollen, weshalb ich auch nicht weiß, wo ich da "removeobject" einfügen könnte.
>Deswegen: wie kann ich machen, dass die Berserker kein Feuer mehr fangen? Ich konnte nichts diesbezüglich im Script finden und auch im DefCore steht nichts hilfreiches.
>Jo, hatten wir schonmal. Ein einfaches Gleichheitszeichen ist eine Zuweisung und kein Vergleich.
>Ansonsten würde ich auch >= vorschlagen, weil du sonst Probleme bekommst wenn zB zwei Monster gleichzeitig getötet werden
>Das passiert automatisch.
>Du könntest einfach den Death() Befehl einfügen wenn du magst.
>Ansonsten könntest du die lebenden Schlangen auch so zaehlen: ObjectCount2(Find_ID(SNKE), Find_OCF(OCF_Alive))
>Der DefCore-Eintrag dazu heisst ContactIncinerate wenn ich mich grad nicht irre. Setz den einfach auf 0.
> worin der unterschied ziwschen return inherited und nur inherited besteht
// Irgendwo im Script, wo ist nicht relevant für das Beispiel
var a = 0;
a = SuperFunktion();
Log("%v", a);
func SuperFunktion()
{
return 1;
return 2;
}
// Objekt 1 mit ID AAAA:
func SuperFunktion()
{
return 1;
}
------------------
// Objekt 2
`#appendto AAAA // Dieses Script wird also an Objekt AAAA angehängt`
func SuperFunktion() // SuperFunktion() wird überladen
{
return 2;
}
------------------
// Irgendwo in einem Script
var a = 0;
a = FindObject(AAAA)->SuperFunktion(); // Es wird ein Objekt mit der ID AAAA gesucht und bei diesem dann SuperFunktion() aufgerufen, der Rückgabewert in a gespeichert
Log("%v", a);
var a = _inherited();
return a;
// Objekt 1 mit ID AAAA:
func SuperFunktion()
{
return 1;
}
------------------
// Objekt 2
`#appendto AAAA // Dieses Script wird also an Objekt AAAA angehängt`
func SuperFunktion() // SuperFunktion() wird überladen
{
return _inherited();
}
------------------
// Irgendwo in einem Script
var a = 0;
a = FindObject(AAAA)->SuperFunktion();
Log("%v", a);
`#appendto CLNK // Wird an den Clonk angehängt`
protected func Death() // Wenn der Clonk stirbt
{
// Ich möchte gerne, dass diese Logzeile geschrieben wird, wenn ein Clonk stirbt
Log("Oh nein, es wurde ein Clonk getötet");
// außerdem soll alles mögliche passieren, was passiert, wenn ein Clonk stirbt
_inherited();
}
`#appendto FLNT`
public func ExplodeSize()
{
return(36);
}
`#appendto FLNT // Feuerstein`
`#appendto SFLN // Super-Flint`
`#appendto TFLN // Tera-Flint`
public func ExplodeSize()
{
return _inherited() * 2;
}
`#appendto FLNT // Feuerstein`
`#appendto SFLN // Super-Flint`
`#appendto TFLN // Tera-Flint`
public func ExplodeSize()
{
var size = _inherited();
size = size * 2;
return size;
}
> ich habs grad mal getestet. Wenn es die Funktion bereits gibt und ich sie nochmal mit einem anderen Befehl und _inherited dazuschreibe, dann wird diese Funktion nicht beachtet, sondern nur die erste bereits vorher vorhandene.
Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill