Alter : 28 Ort : Clonkville Anmeldedatum : 15.11.09
Thema: ERROR:internal error: value stack overflow! Do Jun 03, 2010 7:07 pm
Also mein Crysisclonk verbraucht mit seinem Anzug in verschiedenen Modi Energie(Mana).Nun gibt es einige Errors, wenn man Im Tarnmodus keine Energie mehr hat und in den Panzerungsmodus gesetzt wird.
public func DefMode(){ //Panzerungsmodus ResetPhysical(this(),PHYS_Current);//Veränderungen durch andere Modi reseten SetVisibility(VIS_All()); //Nach Tarnmodus muss man auch wieder sichtbar werden CreateContents(ROCK,this()); //Test um Aufruf zu bestätigen(Wirkung kommt noch) mode = 1; //Modus speichern return(1); }
Der Timer, der Energie nachliefert oder Energie für die Modi abzieht(Alle 36 Frames):
Code:
public func UpdateCharge() //Enerieverbrauch und Nachschub { if (mode==4){ //Tarnmodus
if (GetMagicEnergy(this()) -2 < 0){ //Zu wenig Energie? PlayerMessage(GetOwner(this()),"Tarnfeld deaktiviert",this); DefMode(); //Zum Schutz return(0); } DoMagicEnergy(-2,this(),1); //Energieverbrauch return(1); }
if (mode==2){ //Geschwindigkeitsmodus if (GetAction(this())=="Walk"){ //Läuft er? if (GetMagicEnergy(this())-2 <0){ //zu wenig Energie? PlayerMessage(GetOwner(this()),"Energie kritisch",this()); DefMode(); //Zum Schutz return(0); } }
Da im DefMode immer ein Stein erzeugt wird konnte ich sehen wie oft DefMode aufgerufen wurde: 31 Mal
Was kann ich tun,damit die Errors behoben werden
Edit:
Code:
protected func Collection2(object pObj) // Einsammeln { // das neue Item nach hinten verschieben (außer es ist Ammo) if(!(pObj->~IsAmmoPacket()) || NoAmmo()) if (1 == ContentsCount(GetID(pObj))) if(!(pObj->GetOCF() & OCF_Living)) { ShiftContents(0,0,0,0); pObj ->~ OnDeselect(); }
Zuletzt von Jokob am Do Jun 03, 2010 11:03 pm bearbeitet; insgesamt 1-mal bearbeitet
YoCed Vizeadmiral
Alter : 28 Ort : Rheine Anmeldedatum : 23.05.09
Thema: Re: ERROR:internal error: value stack overflow! Do Jun 03, 2010 7:29 pm
Ähm: PlayerMessage(GetOwner(this()),"Tarnfeld deaktiviert",this); Du benutzt ja strict 1, da muss nach this "()", obwohl es eigentlich keine Funktion ist.
Jokob Oberst
Alter : 28 Ort : Clonkville Anmeldedatum : 15.11.09
Thema: Re: ERROR:internal error: value stack overflow! Do Jun 03, 2010 8:03 pm
Danke für den hinweis,allerdins löst es noch nicht das Problem.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: ERROR:internal error: value stack overflow! Do Jun 03, 2010 8:09 pm
Bei #strict und #strict 2 sind Klammern nach Engine-Konstanten überflüssig. Nur wenn man keins von beiden benutzt, braucht man die Klammern. Also wenn man für CP oder CE programmiert. Das heißt, alle Klammern nach return, this, C4...irgendwas kannst rausschmeißen.
Value stack overflow bedeutet afaik dass irgendwo eine Endlosschleife ist, die irgendwelche Variabeln dauernd ändert. Oder irgendwelche Rekursiv-Aufrufe... musst wohl deinen ganzen Script durchschauen, ich seh da grad nix...
Jokob Oberst
Alter : 28 Ort : Clonkville Anmeldedatum : 15.11.09
Thema: Re: ERROR:internal error: value stack overflow! Do Jun 03, 2010 8:19 pm
Die einzige Variable,die ich habe ist dieses mode und die wird geanau wie in DefMode geändert.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: ERROR:internal error: value stack overflow! Do Jun 03, 2010 10:55 pm
Vllt solltest du noch Collection2() reinposten, scheint ja auch nicht unbeteiligt zu sein.
Jokob Oberst
Alter : 28 Ort : Clonkville Anmeldedatum : 15.11.09
Thema: Re: ERROR:internal error: value stack overflow! Fr Jun 04, 2010 2:59 pm
Collection2 hab ich mal in den ersten Post geschrieben. Hier schreib ich mal den gesamten script zum besseren Verständnis rein:
Jump(); // Steuerung an Effekt weitergeben Control2Effect("ControlUp"); return(1);
} }
protected func ControlSpecial2Double() { //Gibts nicht ControlSpecial2(); return(1); }
public func DefMode(){ //Panzerungsmodus ResetPhysical(this(),PHYS_Current);//Veränderungen durch andere Modi reseten SetVisibility(VIS_All()); //Nach Tarnmodus muss man auch wieder sichtbar werden CreateContents(ROCK,this()); //Test um Aufruf zu bestätigen(Wirkung kommt noch) mode = 1; //Modus speichern return(1); }