Thema: Appendto Funktioniert nicht Di Apr 28, 2009 3:27 pm
Moin, Ich wollte ein Append auf alle Clonks machen. also habe einen Ordner namens "System.c4g" erstellt und darein einen Script Namens "ClonkAppend.c" eingefügt.
In diesem Script steht dann einfach mal folgendes:
Allerdings tut sich da gar nichts keine Fehlermeldung kein Stein.´Nicht mal für den Normalen Clonk.
danke schon mal im voraus für Hilfe.
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Appendto Funktioniert nicht Di Apr 28, 2009 3:32 pm
Soweit ich weiß überlädst du damit die normale Initialize Funktion im Clonk du musst in dein Appendto die Orginal Initialize übernehmen plus das was du appenden willst. Ist ist zumindest so wenn man Include nimmt....
Code:
#strict #appendto CLNK
protected func Initialize() { // Clonks mit Magiephysikal aus fehlerhaften Szenarien korrigieren if (GetID () == CLNK) if (GetPhysical ("Magic", 1)) SetPhysical ("Magic", 0, 1); SetAction("Walk"); SetDir(Random(2)); // Broadcast für Spielregeln GameCallEx("OnClonkCreation", this()); CreateContents(ROCK); return(_inherited()); }
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Appendto Funktioniert nicht Di Apr 28, 2009 4:04 pm
Da passiert auch überhaupt nichts. Aber eigentlich ist es doch überflüssig die Funktion ganz zu übernehmen da return(_inherited()); ja die überladene Funkltion aufruft.
Extremclonk Staatsrat
Ort : Am Anti-Spam-Limes Anmeldedatum : 19.01.09
Thema: Re: Appendto Funktioniert nicht Di Apr 28, 2009 4:06 pm
Okay das mit return(_inherited) kenn ich net sorry, ich hatte halt dieses Problem mal mit #include.... Mit meinem Latein bin ich am ende sry.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Di Apr 28, 2009 4:18 pm
_inherited hängt das eigentlich ja an. Also kopier die echte Clonk Initialize, schreib deinen Text rein, und schreib retrun(1); rein. Müsste dann ja eigentlich tun. Und wegen 3 Zeilen mehr im Appendto sparst du dir keine Zeit und wenn dann nur Nanosekunden.
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Appendto Funktioniert nicht Di Apr 28, 2009 8:48 pm
Also wenn ich das richtig verstanden habe hängt das inherited nicht den Script ran sondern ruft die Funktion auf die Überladen wurde.
Allerdings hat der Script inzwischen Funktioniert.Es ging als ich den SystemOrdner aus einem Unterverzeichnis direct in den Level geladen hatte.
Vielen dank an alle die Was geschrieben haben.
mfg Toastbrot
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 10:33 am
wie unterordner? also system.c4g und dann nen ordner wo das script drin ist?
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 6:10 pm
Theoretisch müsste das funktionieren. Vielleicht hast du den System.c4g ordner nicht richtig platziert. Probier mal ob irgendein anderes Script das du dort reintust funktioniert.
z.B:
Zitat :
global func A(){Log("!");}
Ansonsten: Wo hast du den Ordner rein getan?
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 6:58 pm
Toastbrot schrieb:
(...)Allerdings hat der Script inzwischen Funktioniert.(...)
Wie ich schon schrieb es ging, nur ging es nicht als ich in einem Scenario einen ObjecOrdner hatte darin ein Object und darin den SystemOrdner. Dann passierte gar nichts aber inzwischen geht das so wie ich will.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 8:52 pm
Ich habe auch ein Skript, dass aber beim Szenariostart nicht an jeden Clonk angehängt wird. Sehts euch mal an:
// Jetzt Hangelanimation umstellen if(GetAction() eq "Hangle") { SetObjDrawTransform(1000,0,0,0,-1000,0); } if(GetAction() ne "Hangle" && GetAction() ne "Scale" && GetAction() ne "ScaleDown") SetObjDrawTransform(); //Das Rauf und runterhangeln noch if(GetAction() ne "Hangle" && GetAction() ne "Scale") SetObjDrawTransform();
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 9:05 pm
Was soll dein Script denn nützen? Du brauchst ja kein #appendto, wenn du eine Globale Funktoin machst. Nehme doch einfach einen Parameter
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 9:17 pm
Verstehe ich nicht :S Der Sinn ist, dass man an der Wand+Decke laufen kann.
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Mi Apr 29, 2009 9:18 pm
Warum appendierst du die globale Funnktion an den Clonk?
EDIT: Dein Script dürfte eigentlich auch gar nicht funzen :O
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Do Apr 30, 2009 10:17 am
Doch, denn wenn ich sie in den Clonk schreibe, und dann im Szenarioskript aufrufe, kommen die richtigen Animationen, welche ich mit SetObjectDrawTransform gemacht habe. Nur soll eben die Funktion in jeden Clonk geschrieben werden, und dannach im Szenskript aufgerufen werden.
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 1:35 am
Dann ist das aber ein ekeliger hack Nimm doch sowas, dafür brauchst du nichtmal ein #appendto:
// Jetzt Hangelanimation umstellen if(GetAction(obj) eq "Hangle") { obj->SetObjDrawTransform(1000,0,0,0,-1000,0); } if(GetAction(obj) ne "Hangle" && GetAction(obj) ne "Scale" && GetAction(obj) ne "ScaleDown") obj->SetObjDrawTransform(); //Das Rauf und runterhangeln noch if(GetAction(obj) ne "Hangle" && GetAction(obj) ne "Scale") obj->SetObjDrawTransform();
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 9:59 am
Das Skript für doch so gar nichts durch? Hab ins Szenarioskript kopiert und mit GameCall aufgerufen, aber es tat gar nicht. Die hangeln immer noch normal. Oh warte mal, ich glaube, dass ist, weils nur an Clonks angehängt ist! Dann müsste man es noch für alle Typen umschreiben, jetzt wirds mir erst klar.
Soterotu Generalleutnant
Alter : 31 Ort : Einsames Dorf in Oberfranken Anmeldedatum : 27.01.09
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 10:09 am
Bowserkoopa schrieb:
Das Skript für doch so gar nichts durch? Hab ins Szenarioskript kopiert und mit GameCall aufgerufen, aber es tat gar nicht. Die hangeln immer noch normal. Oh warte mal, ich glaube, dass ist, weils nur an Clonks angehängt ist! Dann müsste man es noch für alle Typen umschreiben, jetzt wirds mir erst klar.
Irrtum da sobald man etwas als Appendto an CLNK anhängt betrifft das alle Clonkarten da jede andere Clonkart CLNK includiert.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 10:11 am
Ja aber das Skript davor hat gar kein #appendto. Da steht Find_ID(CLNK) und das sucht ja nur nach clonks. Ich löse es gerade mit Find_OCF(OCF_CrewMember())
EDIT: meine Variante funktioniert auch nicht, da noch ein Timer fehlt, der immer überprüft, ob man klettert oder hangelt. EDIT: Habs jetzt einfach in jeden Clonk kopiert und den Timer dazugemacht. Ist es eigentlich möglich, Skriptteile in einen Clonk zu kopieren(also neue Fähigkeiten spendierten) wenn ein anderes Objekt aktiviert wird?
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 4:27 pm
Zitat :
Das Skript für doch so gar nichts durch? Hab ins Szenarioskript kopiert und mit GameCall aufgerufen, aber es tat gar nicht. Die hangeln immer noch normal. Oh warte mal, ich glaube, dass ist, weils nur an Clonks angehängt ist! Dann müsste man es noch für alle Typen umschreiben, jetzt wirds mir erst klar.
Das wollte ich dir die ganze Zeit sagen, und auf deine letzte Frage: Nein, es ist nicht möglich. Du kannst lediglich überprüfen, ob ein bestimmtes Objekt existiert, und dann in der Funktion erst eine Aktion ausführen.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Fr Mai 01, 2009 5:37 pm
ohh schade, also lässt sich mit dem einen Skriptteil nichts machen? Ich habe nämlich jetzt JEDEN Clonktyp ins Szen kopiert, Timer hinzugefügt und Skript erneuert, und nun braucht das satte 9 MB.
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Sa Mai 02, 2009 3:00 pm
1. Mache deine Funktion public 2. Hänge sie an CLNK an und überlade Initialize(), 3. wo du einen Effekt erstellst, der den Timer darstellt 4. in dem du die tolle Funktion mit der Überprüfung einbaust
=> Alle Clonks können deine neue, Implementierte Funktion!
Ich erwarte nicht, dass du alles verstanden hast
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Sa Mai 02, 2009 5:42 pm
oK, habe wirklich nicht alles verstanden. Soweit komme ich:
1.public func Gravit() machen 2.#appendto CLNK 3. In Initalize etwas schreiben, was ich nicht verstanden habe.
Also fragt sich nur. Wie mache ich jetzt den Timer?
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Mo Mai 11, 2009 11:30 pm
Ich schaue mal, ob ich dazu nicht ein Tutorial schreibe...
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Appendto Funktioniert nicht Di Mai 12, 2009 1:55 pm
Also Clonkfunktionen über Appendto anhängen, und dann per Szenarioskript aufrufen? Es fehlt eben ein Timer am ganzen, der prüft, ob der Clonk die Wand hochläuft. DefCore appendtos gibts ja nicht
Flinti Kadett
Alter : 31 Anmeldedatum : 07.04.09
Thema: Re: Appendto Funktioniert nicht Mi Mai 13, 2009 12:17 am
Ein Tutorial für den Timer per Effekt. Mal schaue, wann ich Zeit finde.