Script

  • Verdammte Axt!!


    Ich versuche jetzt seit zwei Stunden ein Script zu bauen:


    Wenn der Held auf "Tieru" trifft, dann soll er ihm das "Pendant of Mastery" geben.


    Ich bekomme immer den Fehler "function not definied", egal was ich mache.


    Hat vielleicht irgendjemand mal ein Beispielscript?
    Was mache ich denn falsch?


    greez&thx
    Hank

  • Zitat

    Original von Hank
    Was mache ich denn falsch?
    Hank


    du achtest auf die Fehlermeldungen ?!? :D
    ein paar der Fehlermeldungen kannst du ignorieren, z.B. die Meldung 'Function not defined' oder diese seltsame Meldung, daà es eine Ãberschneidung zwischen einem Objekt und ??? Geröll ??? gibt; genauso Meckereien, daà eine Stadt keine Spezialisierung hat; die Editor-Anleitung solltest du auch nicht so ernst nehmen - diverse Konstanten, die im pdf-File erklärt sind, gibt es in Wirklichkeit nicht (da solltest du die Fehlermeldungen dann doch ernst nehmen), ein paar Funktionen gibt es nicht, oder die machen nicht das, was in der Anleitung beschrieben ist ...
    Vielleicht gibt es ja irgendwann eine zertifizierte Anleitung der Editor-Nutzer :D

    lest Terry Pratchett(RIP) ... und Stephen King, John Katzenbach, Hohlbein, Frank Schätzing, Anne Rice, Andrzej Sapkowski, Anne Bishop, Bernhard Hennen, George R.R. Martin, Markus Heitz, ... (wurde ja langsam Zeit, dass was dazu kommt)

  • tja das mit function not definied ist normal.


    Du brauchst dich auserdem auch nicht schämen, wenn dein script schlampig geschrieben ist. Jeder hat ne Handschrift.
    Also sei doch bitte so lieb und poste es einfach^^


    Ich denke mal das mit dem "Treffen" meinst du sobald der Held in eine bestimmte Region läuft ?

  • function Meeting( heroname )
    if heroname -- "Findan" then
    GiveArtefact( heroname, ARTIFACT_PEDANT_OF_MASTERY, 1 );
    Trigger( REGION_ENTER_AND_STOP_TRIGGER, "meeting", nil );
    end;
    end;


    Trigger( REGION_ENTER_AND_STOP_TRIGGER, "meeting", "Meeting" );

  • Code
    function Meeting(heroname)
        if heroname=="Findan" then
           GiveArtefac("Findan",15,1,);
            print("Findan hat artefact Pendant of Mastery erhalten");
           Trigger(6, "meeting",nil);
        end;
    end;
    
    
    Trigger(6,"meeting", "Meeting");


    du brauchst:
    1. Nen Helden der als Scriptname Findan hat
    2. Eine Region, die meeting heisst

  • was passiert bei dir, wenn nicht Findan, sondern ein anderer Held (z.B. ein Held des Gegners) das Gebiet betritt? dann kriegt trotzdem Findan das Artefakt, oder???

    lest Terry Pratchett(RIP) ... und Stephen King, John Katzenbach, Hohlbein, Frank Schätzing, Anne Rice, Andrzej Sapkowski, Anne Bishop, Bernhard Hennen, George R.R. Martin, Markus Heitz, ... (wurde ja langsam Zeit, dass was dazu kommt)

    Einmal editiert, zuletzt von Andrean ()

  • Das Wichtigste ist, dass du dem Helden den script name "Findan" zuweist.
    Dazu 'Objects List Panel' öffnen, den Helden suchen, den Helden rechtsklicken und Properties auswählen. Dann 'Name' markieren, Leertaste drücken und 'Findan' eingeben.
    AuÃerdem musst du, wie Lachdanan sagte, die Region 'meeting' erstellt haben (Kleinschreibung ist wichtig, glaub ich) und der Held muss in der Region auch anhalten, er darf nicht nur durchrauschen.


    Ansonsten siehe Andreans Post, wenn man glaubt, dass alles richtig ist, Fehlermeldungen in den Wind schieÃen und ingame testen.


    Andrean:
    Nein, der Trigger übergibt der Funktion den Wert von Heroname. Ist dieser ungleich "Findan", wird die If-Aktion übersprungen und die Funktion macht dahinter (also bei 'end;' ;)) weiter. Ergo passiert nix.

  • bei dem Post, auf das ich geantwortet hab, stand noch


    function Meeting("Findan")
    GiveArtefac("Findan",15,1,);
    ...


    für mich würde das bedeuten, daà der heroname nicht ausgewertet wird...
    ansonsten ist es mir bisher noch nicht gelungen, einem Helden einen script-Namen zuzuweisen (finde ich äuÃerst seltsam, aber vielleicht gibts ja einen Trick); nen Helden aussuchen geht, ihm einen neuen Namen geben (nebst Biographie) geht auch; was festgehämmert ist, ist der script-Name - komme ich irgendwie nicht zum Editieren rein ...

    lest Terry Pratchett(RIP) ... und Stephen King, John Katzenbach, Hohlbein, Frank Schätzing, Anne Rice, Andrzej Sapkowski, Anne Bishop, Bernhard Hennen, George R.R. Martin, Markus Heitz, ... (wurde ja langsam Zeit, dass was dazu kommt)

  • Zitat

    ansonsten ist es mir bisher noch nicht gelungen, einem Helden einen script-Namen zuzuweisen


    Ich glaube man kann den scriptnamen nicht ändern, weil es jeden Helden nur einmal im Spiel gibt. Wenn jetzt ein Held zweimal auf der Map wäre, würde das Spielprinzip mit den reserveHelden durcheinanderkommen.

    "Da ich mich aber zuwenig damit auskenne, warte ich darauf, dass es einer von euch Freaks rausfindet und die Dummen (also mich) an seiner Erkenntnis Teilhaben lässt."

    Einmal editiert, zuletzt von Bugrider ()

  • Sorry fürs Selbst-zitierem, aber ich hab schon beschrieben, wie man den script name ändert ;)

    Zitat

    Original von ringo
    Das Wichtigste ist, dass du dem Helden den script name "Findan" zuweist.
    Dazu 'Objects List Panel' öffnen, den Helden suchen, den Helden rechtsklicken und Properties auswählen. Dann 'Name' markieren, Leertaste drücken und 'Findan' eingeben.

  • Zitat

    Original von ringo
    Sorry fürs Selbst-zitierem, aber ich hab schon beschrieben, wie man den script name ändert ;)


    Sorry, wenn wir dich eines besseren belehren müssen, aber:
    mit deiner Methode änderst du den (angezeigten) Namen des Helden; nicht aber den script-Namen
    das gleiche erreichst du übrigens, wenn du bei den Objekt-Eigenschaften des Helden auf den Reiter 'main' gehst
    der SCRIPT-Name des Helden ist beim Reiter 'settings' (ebenfalls bei den Objekt-Eigenschaften) - und den kann man genausowenig ändern, wie man seine Spezialisierung editieren kann, oder wie man den Namen der Helden-Klasse editieren kann
    und last but not least - im script muÃt du den SCRIPT-Namen benutzen, auf den editierbaren Heldennamen reagiert das scipt nicht


    und bevor du jetzt wieder auf deine Lösung verweist - probier es einfach mal aus, und poste erst nachher! :crazy:

    lest Terry Pratchett(RIP) ... und Stephen King, John Katzenbach, Hohlbein, Frank Schätzing, Anne Rice, Andrzej Sapkowski, Anne Bishop, Bernhard Hennen, George R.R. Martin, Markus Heitz, ... (wurde ja langsam Zeit, dass was dazu kommt)

  • Zitat

    Original von AndreanSorry, wenn wir dich eines besseren belehren müssen


    Wenn einem niemand sagt, was man falsch macht, kann man es ja nicht verbessern... :)
    Also... ich muss dir widersprechen und Recht geben :P
    Die Methode ändert nicht den ingame-Namen (siehe screen1),
    sondern den in der FuÃleiste des Editors angezeigten scriptnamen (screen2),
    der aber wiederum keinen Effekt auf den script name im Object Properties Tab hat (screen3)
    und im Script auch nicht berücksichtigt wird.
    Ist relativ verworren und unlogisch; Ich muss ehrlich zugeben, dass ich es nicht ausprobiert hatte. Ich war einfach faul und habe von Anfang an nur vorgegebene script names benutzt, da ich keine Notwendigkeit gesehen habe, diese zu ändern. Da der Vorschlag aber nicht kommentiert wurde, ging ich davon aus, dass er übersehen wurde. Man möge es mir verzeihen.


    Und Hank:
    Wenn du es nicht schon rausgefunden hast: "Findan" muss im Script einfach durch "Heam" ersetzt werden. Wenn du dann noch das "--" in Zeile 2 durch "==" ersetzt, funzt es (habs getestet ;))

  • okay, dann nehme ich jeglichen Vorwurf des Besserwissens ohne Wissen zurück, weil du auf einen blöden Bug des Editors reingefallen bist (bzw. selbigen überhaupt erst mal rausgefunden hast :) )
    ist also eine falsche Erklärung im Editor (die ich selbst gar nicht erst gesehen hab, da die description bei mir (trotz Riesen-Monitor) immer so schmal ist, daà ich von der Erklärung nur ein Schnipsel sehe


    P.S. den Vorschlag hab ich nicht kommentiert, weil ichs ja selbst schon probiert hatte, und es ging (bei mir) nicht, und genau das hab ich ja geschrieben ... ich wollte besonders diskret sein, und nicht mit dem Holzhammer drauf hinweisen, daà es es so wie beschrieben nicht geht, sondern nur ganz leise Zweifel andeuten - will ja niemanden verschrecken ;)

    lest Terry Pratchett(RIP) ... und Stephen King, John Katzenbach, Hohlbein, Frank Schätzing, Anne Rice, Andrzej Sapkowski, Anne Bishop, Bernhard Hennen, George R.R. Martin, Markus Heitz, ... (wurde ja langsam Zeit, dass was dazu kommt)

  • Forum

    Hat das Thema geschlossen.