Alter : 29 Ort : Deutschland/Frankfurt Main Anmeldedatum : 07.07.10
Thema: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 4:49 pm
Ich habe im moment das Problem, dass ich wenn ich einen Clonk habe und dann ChangeDef (KNIG, GetCrew()); auf ihn anwende ich ihn nicht mehr kontrollieren kann obwohl er noch zu meiner Crew gehört.
Pitri Feldmarschall
Alter : 30 Ort : Karlsruhe Anmeldedatum : 02.03.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 5:30 pm
Denn ohne die zweite Zeile hat der Clonk keine Action! Und Ohne Action kann man nicht laufen!
Wenn du sie abgeworfen hast, wäre es gegangen! :Þ
Dark Oberst
Alter : 29 Ort : Deutschland/Frankfurt Main Anmeldedatum : 07.07.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 5:35 pm
Gibt es och eine andere Variante wie ich aus einem Clonk einen Ritter mit alen Aktionen machen kann ohne dass sich der Name des Clonks ändert und ohne, dass ein neuer Clonk der Crew hizu gefügt wird.
Denn bei mir soll ein Clonk zum Ritter geschlagen werden und dann vom Clonk zum Ritter werden.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 5:57 pm
Ritter erstellen und per GrabObjectInfo zum gleichen Clonk machen.
Code:
var pClonk = GetCrew(); GrabObjectInfo(pClonk, CreateObject(KNIG, GetX(pClonk), GetY(pClonk), GetOwner(pClonk))); RemoveObject(pClonk);
Edit: Bei CreateObject() wird der Ritter gleich initialisiert, "Walk" wird also gleich gesetzt.
Dark Oberst
Alter : 29 Ort : Deutschland/Frankfurt Main Anmeldedatum : 07.07.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 8:06 pm
Limeox deine Variante funzt irgendwie net. Der Name stimmt, aber ich kann den Conk immernoch net steuern.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 8:39 pm
Crew durchwechseln oder SetCursor()... der Clonk ist noch nicht ausgewählt. x)
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 9:53 pm
Man muss den Clonk Initializen.....zu was schreib ich eig. Tuts? @Dark: Ruf im Clonk die Funktion Initialize() auf, dann sollte er laufen.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Jul 12, 2010 10:27 pm
Zitat :
Man muss den Clonk Initializen.....zu was schreib ich eig. Tuts? @Dark: Ruf im Clonk die Funktion Initialize() auf, dann sollte er laufen.
Immer wenn ein Objekt erstellt wird, wird es sofort initialisiert. Das muss man nicht manuell nachholen.
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar Di Jul 13, 2010 12:10 am
Ich bezog mich auf den ursprünglichen Post, nicht auf dein Beispiel, Limeox. Und nach ChangeDef muss man Initialize aufrufen das der Clonk sich bewegen kann.
Dark Oberst
Alter : 29 Ort : Deutschland/Frankfurt Main Anmeldedatum : 07.07.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Di Jul 13, 2010 1:08 am
Mit
Code:
var pClonk = GetCrew(); GrabObjectInfo(pClonk, CreateObject(KNIG, GetX(pClonk), GetY(pClonk), GetOwner(pClonk))); RemoveObject(pClonk);
Ging es ja nachdem ich den clonk ausgewählt habe
Gurkenglas Oberst
Anmeldedatum : 04.01.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar Di Jul 13, 2010 7:57 pm
Häng noch ein SetCursor(0,GetCrew(0),true,true); hintenran, das macht den einzigen Clonk des ersten Spielers (Nr. 0) zum ausgewählten Clonk des Spielers (immer noch Nr. 0). Die beiden trues sind dafür zuständig dass kein Pfeil und kein Auswahlrechteck angezeigt werden, wie beim normalen Auswählen.
Donky Hauptman
Alter : 26 Ort : In der Nähe Hamburgs Anmeldedatum : 03.11.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar So Nov 14, 2010 9:54 pm
Ähhh kurze Frage: Im Clonk gibts ne Funktion, die Redefine2(idTo) heißt. Warum nutzt ihr die nicht?
Code:
private func RedefinePhysical(szPhys, idTo) { // Physical-Werte ermitteln var physDefFrom = GetPhysical(szPhys, 0, 0, GetID()), physDefTo = GetPhysical(szPhys, 0, 0, idTo), physCurr = GetPhysical(szPhys); // Neuen Wert berechnen var physNew; if (physDefTo) physNew=BoundBy(physDefTo-physDefFrom+physCurr, 0, 100000); // Neuen Wert für den Reset immer temporär setzen, selbst wenn keine Änderung besteht, damit der Reset richtig funktioniert SetPhysical(szPhys, physNew, PHYS_StackTemporary); // Fertig return(1); }
protected func FxIntRedefineStart(object trg, int num, int tmp, id idTo) { // Ziel-ID in Effektvariable if (tmp) idTo = EffectVar(0, trg, num); else { EffectVar(0, trg, num) = idTo; EffectVar(1, trg, num) = GetID(); } // Physicals anpassen RedefinePhysical("Energy", idTo); RedefinePhysical("Breath", idTo); RedefinePhysical("Walk", idTo); RedefinePhysical("Jump", idTo); RedefinePhysical("Scale", idTo); RedefinePhysical("Hangle", idTo); RedefinePhysical("Dig", idTo); RedefinePhysical("Swim", idTo); RedefinePhysical("Throw", idTo); RedefinePhysical("Push", idTo); RedefinePhysical("Fight", idTo); RedefinePhysical("Magic", idTo); RedefinePhysical("Float", idTo); /*if (GetRank()<4) RedefinePhysical("CanScale", idTo); if (GetRank()<6) RedefinePhysical("CanHangle", idTo);*/ // z.Z. können es alle RedefinePhysical("CanDig", idTo); RedefinePhysical("CanConstruct", idTo); RedefinePhysical("CanChop", idTo); RedefinePhysical("CanSwimDig", idTo); RedefinePhysical("CorrosionResist", idTo); RedefinePhysical("BreatheWater", idTo); // Damit Aufwertungen zu nicht-Magiern keine Zauberenergie übrig lassen if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy()); // Echtes Redefine nur bei echten Aufrufen (hat zu viele Nebenwirkungen) if (tmp) return(FX_OK); Redefine(idTo); // Fertig return(FX_OK); }
protected func FxIntRedefineStop(object trg, int num, int iReason, bool tmp) { // Physicals wiederherstellen ResetPhysical(0, "BreatheWater"); ResetPhysical(0, "CorrosionResist"); ResetPhysical(0, "CanSwimDig"); ResetPhysical(0, "CanChop"); ResetPhysical(0, "CanConstruct"); ResetPhysical(0, "CanDig"); ResetPhysical(0, "Float"); ResetPhysical(0, "Magic"); ResetPhysical(0, "Fight"); ResetPhysical(0, "Push"); ResetPhysical(0, "Throw"); ResetPhysical(0, "Swim"); ResetPhysical(0, "Dig"); ResetPhysical(0, "Hangle"); ResetPhysical(0, "Scale"); ResetPhysical(0, "Jump"); ResetPhysical(0, "Walk"); ResetPhysical(0, "Breath"); ResetPhysical(0, "Energy"); // Keine Rückänderung bei temporären Aufrufen oder beim Tod/Löschen if (tmp || iReason) return(); // Damit Aufwertungen von nicht-Magiern keine Zauberenergie übrig lassen if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy()); // OK; alte Definition wiederherstellen Redefine(EffectVar(1, trg, num)); }
public func Redefine2(idTo) { if (GetID() == idTo) return(true); RemoveEffect("IntRedefine", this()); if (GetID() == idTo) return(true); return(!!AddEffect("IntRedefine", this(), 10, 0, this(), 0, idTo)); }
public func Redefine(idTo) { // Aktivitätsdaten sichern var phs=GetPhase(),act=GetAction(); // Umwandeln ChangeDef(idTo); // Aktivität wiederherstellen var chg=SetAction(act); if (!chg) SetAction("Walk"); if (chg) SetPhase(phs); // Fertig return(1); }
Pitri Feldmarschall
Alter : 30 Ort : Karlsruhe Anmeldedatum : 02.03.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar Mo Nov 15, 2010 9:04 pm
Berechtigte Frage. Ich hab sie ja noch vor kurzem angeschaut, aber war so vernagelt und habe sie hier nicht gepostet.
der kleine boss Vizeadmiral
Alter : 28 Ort : In einem gaaaaanz kleinen Kaff in Austria Anmeldedatum : 21.03.09
Thema: Re: Clonk nach ChangeDef nicht steuerbar So Nov 21, 2010 2:08 pm
es gibt afaik einen unterschied zwischen ChangeDef() und Redefine2() und zwar glaub ich war das, wenn man zb nen hazard zu nem mage machte mit Redefine2() hatte der Mage dann die Kraft und Atem vom Hazard
und ja mich gibts auch noch ;D
Wipfmagus Konteradmiral
Alter : 28 Anmeldedatum : 06.03.10
Thema: Re: Clonk nach ChangeDef nicht steuerbar Sa Dez 04, 2010 10:01 pm
War es nicht umgekehrt, dass ChangeDef() die Eigenschaften (Vertices etc.) behält?