Funktionieren scripte ?

  • Habt ihr eigentlich Erfolg mit euren Skripten?


    ich wollte es mal austesten, und eine Armee schaffen, die von Tag zu Tag wächst (und einen Gral hat) - und ein paar NebenArmeen zur Ablenkung erschaffen...


    function AddArmy()
    AddObjectCreatures("Graal_Defender",3,15);
    CreateMonster(randommonster,random(CREATURES_COUNT-1)+1,30,31,20,0, MONSTER_MOOD_AGGRESSIVE,0,0);
    end;


    Trigger(NEW_DAY_TRIGGER,AddArmy);


    Naja, ausprobiert, aber neue Armeen erscheinen nicht, und die Ausgangsarmee wird auch nicht gröÃer (die enthielt übrigens Archer, also Kreaturen Nummer 3)
    okay, hin- und herprobiert, aber passierte nichts;


    dann wollte ich testen, ob das Ereignis überhaupt ausgelöst wird, und hab zusätzlich noch eingeführt, daà die Haupthelden Erfahrungspunkte kriegen - Hauptheld bei dem einen war Agrael, bei dem anderen Deirdre, die ja intern Nemor heiÃt:


    SetGameVar(AnzahlMonsterArmies,0);


    function AddArmy
    SetGameVar(AnzahlMonsterArmies,AnzahlMonsterArmies+1);
    ChangeHeroStat("Agrael",STAT_EXPERIENCE,1000+100*AnzahlMonsterArmies);
    ChangeHeroStat("Nemor",STAT_EXPERIENCE,1000+50*AnzahlMonsterArmies);
    AddObjectCreatures("Graal_Defender",3,15);
    CreateMonster(monstername[AnzahlMonsterArmies],random(CREATURES_COUNT-1)+1,30,31,20,0, MONSTER_MOOD_AGGRESSIVE,0,0);
    end;


    Trigger(0,AddArmy);


    Naja, Fazit: es passiert trotzdem nichts; hat jemand eine Ahnung, warum der Trigger nicht ausgelöst wird? Muà man irgendwas vorher noch einstellen? Funktionuiert bei irgendjemanden das scripten?

    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)

  • Es kann sein, dass du bei den Triggern den Funktionsnamen in Anführungszeichen setzen musst, weil sonst als Funktion der Rückgabe wert der Funktion angenommen wird.
    AuÃerdem, hast du die Karte auch im SP-Modus gestartet? Im MP gehts ja nicht :(


    Edit: Meistens hilft es, beim Testen die Konsole zu öffnen, weil da auch Fehlermeldungen angezeigt werden.

    "Well, things just got simpler. And a lot more complicated."

    Einmal editiert, zuletzt von makrise ()

  • Es hilft nicht nur meistens, sondern ist ziemlich hilfreich um die scripts zu testen.


    Bau ein paar print(" +5 Archers added oder alles klappt") ein


    Ich geh mal davon aus das Graal_Defender ein Gebäude/Garnission in der map definiert.
    folglich:


    Trigger(NEW_DAY_TRIGGER,"AddArmy"); <<-- Es kann nur 1nen Newdaytrigger geben


    function AddArmy()
    AddObjectCreatures("Graal_Defender",3,15);
    print("AddObjectCreatures ok");
    CreateMonster("Der kleine IMP", random(91)+1 , 30,31,20,0, 1,0,0);
    print("Create monster done");
    end;


    creaturetyps von 0 - 92, mit einigen monstern, die ingame nicht existieren, musst schauen was passiert, ob CreateMonster überhaupt täglich funktioniert.



    Erfolg ?
    Ja sehr viel , schon für 2 maps scripts gemacht u a. Capture the Flag :P mit Morphtown 8o

  • 1. klar, waren Karten im single-player...
    2. ob ich nun ein print irgendwas (mit notwendiger offener Konsole) oder einen Experience-Bonus für einen existierenden Helden mache, kommt doch auf dasselbe raus - ist ein Test, ob das Ganze ausgelöst wird
    3. Graal-Defender ist eine Monster-Gruppe
    4. Trigger(NEW_DAY_TRIGGER,"AddArmy") - im Tutorial steht der Funktions-Name auch nicht in Anführungsstrichen, deshalb bei mir auch nicht
    5. es kann nur einen geben - bei mir gibts auch nur einen - aber selbst, wenn es mehrere gäbe, sollte der letzte den vorletzten ersetzen, oder ?(so hab ich das Tutorial jedenfalls verstanden)
    6.7.8. privat-Debugger per print xyz ist natürlich immer eine Möglichkeit - bin aber eigentlich beim Programmieren anderes gewöhnt :rolleyes: - vielleicht fange ich erstmal mit


    function AddArmy()
    print("der Trigger wird überhaupt ausgelöst") an


    P.S. bisher war ich so blauäugig, und bin davon ausgegangen, daà die Variablen (z.B. CREATURES_COUNT auch benutzt werden können, und nicht explizit die Zahlen geschrieben werden müssen - allerdings hatte ich auch die Hoffnung, daÃ, wenn ich bei der lokation von einem Objekt in den Eigenschaften die xy-Koordinaten ändere, daà dann das Objekt auch auf der Karte an den entsprechenden Platz verrutscht - läuft aber nicht - in der Ãbersicht hat es die alten Werte, bei den Eigenschaften die neuen, in der Karte die alten ... :wall:


    P.P.S. da von den ganzen geschriebenen Funktionen bei AddArmy nicht eine einzige ausgelöst wird, geh ich mal davon aus, daà der Trigger gar nicht erst ausgelöst wird (weil irgendwelche Voraussetzungen fehlen ???), oder daà er ausgelöst wird, aber die Funktion nicht aufgerufen wird ???


    P.P.P.S. hat jemand eine Ahnung, was diese seltsamen zusätzlichen Inferno-Städte für eine Funktion haben (wo angeblich jemand eingekerkert ist) - man kann sie einer Farbe zuordnen, aber keiner kann sie einnehmen...

    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)

    3 Mal editiert, zuletzt von Andrean ()

  • Code
    function AddArmy()
    print("der Trigger wird überhaupt ausgelöst")
    end;
    
    
    Trigger(NEW_DAY_TRIGGER,"AddArmy")


    Dieser Code funktioniert bei mir.
    Es kann also entweder wirklich an den "" liegen oder in dem Script ist schon vorher ein Fehler drin, sodass die Ausführung schon vor setzen des Triggers abgebrochen wird. Allerdings wird er erst zu Beginn des zweiten Tages das erste Mal ausgelöst.

    "Well, things just got simpler. And a lot more complicated."

  • irgendwie hab ich es noch nichtmal hingekriegt, die Konsole zum Vorschein zu bringen; ehe jetzt irgendeiner auf irgendeine FAQ-Seite verweist:
    die Ãnderungen in der autoexec.cfg (im Heroes-Verzeichnis unter Profiles) hab ich gemacht (mit Sicherheit auch nicht vertippt, steht direkt unter mainmenu, wie es empfohlen war)
    setvar dev_console_password = schwinge-des-todes


    die Ãnderungen in der input.cfg
    bind show_console 'F9'
    hab ich gemacht; F9 hab ich genommen, damit auch garantiert kein Problem wegen deutscher/englischer Tastatur kommt (die Sonderzeichen davor hatten auch keinen Effekt); hab auch vorher geguckt, ob F9 nicht mit irgendwas anderem gebunden ist;
    Falls die Erklärung auf der Seite falsch sein sollte, daà die input.cfg im Heroes-Verzeichnis (unter default-profile) genommen werden soll, hab ichs im save-Ordner bei der input.cfg des Profiles auch noch geändert, und hab auch noch das richtige Profile eingeladen...


    Fazit: Nach dem Erstellen der Karte und F9-Taste tut sich nichts - damit krieg ich also keine Konsole, und damit auch keine Fehlermeldungen...
    hat irgendjemand eine Ahnung, warum das nicht klappt? was müÃte überhaupt passieren (ich stell mir irgendein Extra-Fenster oder eine Extra-Zeile vor, so wie die Minimap, oder die Helden-Ãbersicht)


    Edit: Mods benutze ich nicht (auÃer dem wait/load-mod), also daran wirds auch nicht liegen

    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 ()

  • Hast du das bind show_console ganz unten eingefügt?
    Wenn ja, versuchs mal ganz oben einzufügen, sonst steht es evtl. unter einer bind section und ist damit nur in einem bestimmten Spielbereich aktiv.
    Bei mir hat das spiel eine sicherheitskopie der alten input.vonfig angelegt, und da ist es schon vordefiniert, ich verwende jetzt einfach die alte datei.

    "Well, things just got simpler. And a lot more complicated."

  • danke, so hats jetzt funktioniert (wer soll denn darauf kommen, die Sektionen fangen doch alle mit // an, was ja Synonym für remark ist)


    jetzt hab ich auch rausgekriegt, woran es lag:
    SetGameVar (Original-Text in der Anleitung: If there is no suchvariable, it will be created) scheint so nicht zu funktionieren; (war jedenfalls immer auf nil, und deshalb hat das skript nicht geklappt) hab jetzt alles auf
    Variable = Wert
    umgestellt, und jetzt klappt es:


    die Konstante CREATURES_COUNT scheint es in Wirklichkeit auch nicht zu geben...

    Bilder

    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.