Hi, ich hab gestern angefangen in CR zu scripten, und bin gleich auf das erste Problem gestoßen. Ich habe nämlich einen Flint gemacht, der eigentlich mit Doppelgraben anfangen zu brennen soll, dann nen Counter von 10 - 0 startet und dann explodiert. Allerdings fängt er nur an zu brennen, und CR sagt mir nur, das er SetVar und if nicht kennt. Hilfe.
Code:
/*-- Suicid Flint --*/
#strict
SetVar(timer, 10);
protected func Activate() { Incinerate(); }
if (OnFire()) { Schedule ("DecVar(timer--);", 1, 10, TSUI); Message ("%d seconds till explosion.", timer); }
Das Problem mit SetVar besteht darin das es nur füt Threadlokale Variablen gilt, sprich nur für welche innerhalt einer Funktion. Statt:
Code:
SetVar(timer, 10);
schreibe
Code:
local timer; //locale gelten überall im Objekt func Initialize() //Das wird beim erzeugen des Flints aufgerufen..... { timer = 10; //...wodurch der timer gleich zu beginn auf 10 gesetzt wird. }
Das Problem mit if besteht wohl darin das if einfach in der Landschaft rumsteht und nicht aufgerufen wird. Du brauchst einen Timer um die Funktion immer wieder aufzufufen, hierzu schreibe in deine DefCore die Zeile Timer=36 und TimerCall=Burn. Jetzt wird jede Sekunde die Funktion Burnaufgerufen. Jetzt brauchen wir nur noch eine Funktion Burn.
Code:
func Burn() { if(OnFire()) //Gucken obs brennt { timer = timer-1; //Jeden Aufruf also jede Sekunde wir "timer" eines weniger bis es nach 10 sek null ist. Message ("%d seconds till explosion.", timer); //Das sollte passen das lassen wir. if(!timer) Explode(50); //Wenn Tier Null ist (das ! dreht if um) explodiert die Sache. } }
Dein Acivate passt das kannste lassen, hoffe habe keine Syntaxfehler wenns nicht klappt, am besten mit Fehlermeldungen posten. Und: Willkommen auf dem CNDG. Und: Ich weiß das ein Timer performance lastig ist aber ich hab kb hier jetzt Actmap und Effekte zu erklären.
Teehee Brigadegeneral
Alter : 27 Ort : Irgendwo im Nirgendwo :O Anmeldedatum : 28.09.09