Zu dumm oder zu alt für Scripte

  • Hallo zusammen


    Ich kann mich des Eindrucks nicht erwehren, dass ich entweder zu dumm oder zu alt oder vielleicht beides bin, um das Scripting zu verstehen.


    Ich arbeite zur Zeit an einer XXL Einzelspieler-Karte mit ca. 40 bis 50 Aufgaben. Bei der Erstellung der ersten Scriptversuche habe ich einige Codes aus dem Handbuch und hier aus dem Forum verwenden wollen.


    1. Versuch - beim Betreten einer Region soll eine Messagebox erscheinen
    Der Code dazu wurde hier in einem anderen Thread bereits veröffentlicht.


    Den Code habe ich auf meinen Helden angepasst. Der Scriptname des Helden entspricht dem, der im Code verwendet wird.


    Code
    function willkommen("Ossir")
       MessageBox( "/Maps/SingleMissions/Eine weite Reise3/willkommen.txt" );
       Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER,"nachricht1",nil );
    end;
    Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER,"nachricht1","willkommen" );


    Man sollte meinen, es kann eigentlich nicht falsch sein und dennoch funktioniert es nicht.



    2. Versucht - beim Betreten einer Region soll dem Helden eine Anzahl Kreaturen übergeben werden


    Der Code ist im Practical Guide genau erklärt.


    Auch hier wurde der Code auf meinen Helden angepasst.


    Code
    function drachen( heroname )
    	if heroname == "Ossir" then
    		AddHeroCreatures( heroname, CREATURE_GOLD_DRAGON,3 );
    		print("3 Smaragddrachen möchten sich Siobhan anschliessen");
    		Trigger( REGION_ENTER_AND_STOP_TRIGGER, "drachen",
    	end;
    end;
    Trigger( REGION_ENTER_AND_STOP_TRIGGER, "drachen", "drachen" );


    (Gross-und Kleinschreibung wirde beachtet)


    Es wäre sehr nett, wenn mir jemand bei diesen Problemen helfen könnte, denn ich habe bereits sehr viel Arbeit in diese Karte investiert.

  • 1. Bist du sicher, dass die entsprechende Textdatei /Maps/SingleMissions/Eine weite Reise3/willkommen.txt auch als Unicode abgespeichert ist? Sonst kann sie vom Spiel nämlich nicht gelesen werden.


    2. Ich weià nicht ob es daran liegt, oder nur ein Fehler beim kopieren hier her war, aber in Zeile 5 steht bei dir
    Trigger( REGION_ENTER_AND_STOP_TRIGGER, "drachen",
    müsste es nicht eigentlich
    Trigger( REGION_ENTER_AND_STOP_TRIGGER, "drachen",nil);
    heiÃen?


    P.S. Falls es nicht geht, poste mal bitte die Fehlermeldungen, die in der Konsole angezeigt werden(falls es welche gibt).

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

  • Hallo Kristian


    Erst einmal vielen Dank für Deine Antwort.


    Die Textdatei war tatsächlich nicht im gewünschten Format gespeichert. Nach der Ãnderung habe ich es erneut versucht, allerdings ohne Erfolg.


    Den zweiten Hinweis von Dir habe ich auch eingearbeitet, auch hier leider erfolglos.


    Nun suche ich schon in verschiedenen Foren nach einer genauen Erklärung, wie man in den Konsolenbereich gelangt.


    Es gibt zwar hier im Forum einen Thread, in dem die Ãnderungen zum Teil erwähnt werden, allerdings macht er keinen Eindruck auf Vollständigkeit.


    Die Such-Funktion brachte leider auch kein zufriedenes Ergebnis.


    Daher meine Bitte, ob jemand hier einen Link oder eine Erläuterung hinterlassen kann, in der beschrieben wird, welche Veränderungen man vornehmen muss.


    Vielen Dank im voraus.

  • Guck mal im Editor Handbuch Cheats, ich glaube da steht auch drin, wie man die konsole aktiviert.


    Zitat

    1. Add to autoexec.cfg string setvar dev_console_password = schwinge-des-todes
    (unter HommV\Profiles\autoexec.cfg, mit einem Texteditor öffnen)
    2. Add to input.cfg string bind show_console '`' to console activation
    (unter Eigene Dateien\My Games\Heroes 5\profilname\input.cfg, muss glaube ich oben eingefügt werden)


    Dann kannst du die Konsole mit der Taste ^ (über tab) öffnen

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

    2 Mal editiert, zuletzt von makrise ()

  • So, die Konsole hat nun einen Fehler angezeigt:


    (Script) ERROR: or`...' expected;
    last token read: ´"Ossir"' at line 1 in string "DoString Script"



    Diese Meldung erscheint aber sofort und nicht erst, wenn ich die Region betrete.


    Beim Betreten der Regionen kommen keine Meldungen.

  • in dem Augenblick, wo im script ein Fehler auftritt, wird jegliche weitere script-Verarbeitung eingestellt (hatte ich bei meinen ersten Versuchen auch)
    wenn der Fehler auf die erste Zeile des scripts verweist, hast du wohl schon am Anfang deines scripts irgendeinen Fehler drin; vielleicht irgendeine Funktion verwendet, die es in Wirklichkeit nicht gibt;
    poste doch mal dein gesamtes script (oder leg es irgendwo zum Runterladen ab); vielleicht fällt uns was auf!

    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)

  • Folgende Ãnderung habe ich vorgenommen.


    In Zeile 1
    function willkommen("Ossir")


    habe ich die Anführungszeichen gelöscht.



    Auswirkung:
    Das erste Script funktioniert leider immer noch nicht, das zweite allerdings hat erstmalig "gezündet".


    Vielen Dank schon jetzt für die Hilfe.



    Obwohl die Karte noch weit entfernt von einer spielbaren Version ist, habe ich die Daten mal hier hinterlegt:

  • Folgender Code klappt bei mir problemlos:

    Code
    function GiveAngel( heroname )
    	if heroname == "Sarge" then
    		MessageBox( "/Maps/SingleMissions/skilltry/textbox_Angel.txt" );
    		AddHeroCreatures( heroname, 14 , 5 );
    		Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "GiveAngel", nil );
    	end;
    end;
    Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "reg_GiveAngel", "GiveAngel" );


    Sollte makrises Tipp noch keine Lösung erzielt haben, muss man evtl. den Heroname übergeben lassen und mit 'if' abfragen. Versuch doch mal

    Code
    function wilkommen( heroname )
    	if heroname == "Ossir" then
    		MessageBox( "/Maps/SingleMissions/Eine weite Reise3/willkommen.txt" );
    		Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER,"nachricht1",nil );
    	end;
    end;
    Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER,"nachricht1","willkommen" );


    Das sollte klappen, denke ich.

  • Bei mir klapt folgendes script nicht:


    Wenn der Held Die Region Adv_info betritt, wird die Region Adv_Block Blockiert, zusätzlich bekommt die Treppe, die in der geblockten Region liegt die Resource "rot" (Pointlight). Wenn er dagegen die Träne Ashas (53) hat, soll die Blockierung aufgehoben werden, licht wird grün.



    Was nimmt man bei der Funktion "SetRegionBlocked(regionName, status, playerID = -1);" für das flag status, für einen Parameter?

    "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."

  • Forum

    Hat das Thema geschlossen.