Jump to content

tr0n

Members
  • Posts

    562
  • Joined

  • Last visited

  • Days Won

    10

Everything posted by tr0n

  1. Wrong Section. Please post your questions on german or seek help in the international section. Thank you CLOSED
  2. Hey guys, guess who is back and even with a new release ? So what is this all about ? The atcommand_symbol allows us to set a symbol for using commands ingame. Sadly we can only use one symbol only. But not now anymore. This patch allows you to add multiple symbols for your atcommand_symbol ! Download: - atcommand_symbol.patch If someone has issues with the source compiling use this: - compile_fix.patch How to Install: - Download the patch - apply the patch on your server (tortoise, git, etc.) - Recompile source How do I enable it ? Go to: ...\conf\atcommand_athena.conf Find: atcommand_symbol : "@" Use it like this for an example: (i just used random symbols so you get what I mean) atcommand_symbol : "@!&-_%" What happens now is that all symbols in that line get registered as a atcommand symbol and can be used ingame for commands. I limited it to 16 but you can change it if you want. How to change the limit ? Go to: ...\src\map\atcommand.c Find: #define ATCOMMAND_SYMBOL_LENGTH 16 Replace for example: #define ATCOMMAND_SYMBOL_LENGTH 24 recompile source after this. This would allow you to change the limit. Have Fun with this Greets tr0n
  3. Thanks for pointing this out. I will fix it soon.
  4. Every Notepad or Text Editor works. My favorite is Editor is Notepad++ because of highlighting. I use Objective C to highlight basic commands.
  5. Sorry man still had no time to work on this. I will do it if I find time and no one does this before me.
  6. Ich bin etwas verwirrt, was ist mit dem Admin der den Server betreibt ? Stellt er euch kein funktionierenden Full-Client zur verfügung ?!
  7. Isn't there a diff which restricts dual clients ?!
  8. There is a command on doc (I thin is view point), you can mark the map with a + He made a function to make and remove the viewpoint, understood? I was thinking about that but couldn't find the command. my fault.
  9. for people who want to learn more about maze solving, a very informative link: http://en.wikipedia.org/wiki/Maze_solving_algorithm
  10. Otherwise check this thread: https://rathena.org/board/topic/99924-remove-all-npc-in-mid-camp/ It shouldn't be that hard
  11. visual studio is an IDE not an programing language. Anyways. Tokei gave a very easy solution for this. I guess if you know the "basics" you should have no problems to do this.
  12. That's the only way. You can use Notepad++ to search for keywords in folders and all documents in /npc. That will help you a lot. Trust me. Just get a list of all npcs which have that map and then comment them out in your .conf files so they dont load on mapserver. That's it.
  13. This depends on how your battleground works and what kind of Labels/Events you use. For Example you could use custom events which get triggered if you got killed or a team wins bg, which leads to teleporting one or more players to a desired destination with "bgwarp" or just "warp". That also depends on how much people you want to teleport. You can't just add a one way solution.
  14. Versuch es mal mit der Ragexe von 2013-08-07. Die stabilste .exe zur Zeit.
  15. The quest delay is also deactivated if repeatable quests is deactivated. I forgot to write a note to it. but is it possible to activate the delay while the repeat is deactivated? Suggestion : //AddCollection("<Quest Name>",<Archer_Class>,<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); //AddHunting("<Quest Name>",<Mage_Class>,<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); the delay doesn't work if quest repeatable is deactivated. the delay only works if you can repeat quests. About the job id. This could be a added in a future update. shouldnt be hard.
  16. The quest delay is also deactivated if repeatable quests is deactivated. I forgot to write a note to it.
  17. The OnDay Label could work here, put "OnDayXXXX" infront of every quest and enter your day and month into it I never tested it and I dont know if it works properly So go test it out and report if it works or not Check the settings after OnInit Label. Check Line: '310' Set it to 0 and you can do every quest only once. And if you want to make it account bound just change all character related variables to account related ones. Scripting knowledge required. If you aren't able to change it yourself open a request topic in proper section and I am sure someone will help you with that
  18. He means that he's working on a project where you can login into your account in launcher/patcher. So you don't need to login ingame anymore, you instantly go to the character selection I guess ?
  19. So as I understood. You mean a Player can create a quest and reward other players for doing it ? Sounds pretty awesome. I would call it "Job Board" or something like that. Maybe I'll take some of my free time and make it happen.
  20. it wasn't designed for this. I would need to rework most of the script to act like that. the 2 categories are hard-scripted and not dynamic categories. Maybe I find a way to make it more dynamic in future updates.
  21. UPDATE: Changelogs: - 1.6.5 Bug fixes for party support
  22. this isn't possible, because If you change them from character bound to npc bound, you have to know that if someone completes the quest, every other player can't do it anymore too and everyone has to wait. I could add a multiple npc feature in a future update.
  23. Just use these three commands to make it work. It's not very hard and you should be able to do it - Announce: http://rathena.org/wiki/Announce - Monster: http://rathena.org/wiki/Monster - Label Timers: http://rathena.org/wiki/OnHour#Label_Timers If you have any questions feel free to ask.
  24. Kapitel 1: Alles hat einen Anfang 1.0 - Einführung in die Welt der Scripter (Vorwort) 1.1 - NPCs (Non-Playable-Character) 1.2 - Script Commands 1.3 - Befehle Teil 1 - Abläufe 1.4 - Variablen 1.5 - Operatoren 1.6 - If-Abfragen 1.7 - Labels 1.8 - Kommentare 1.9 - Befehle Teil 2 - Menüs und Eingaben Kapitel 2: Der Weg des Kriegers 2.0 - Noch ein weiter Weg 2.1 - Arrays 2.2 - Befehle Teil 3 - Die erste Quest 2.3 - Befehle Teil 4 - Effiziente und bessere Menüs 2.4 - SQL 2.5 - Verschiedene Arten von NPCs 2.6 - Schleifen 2.7 - Monster 2.8 - Events Kapitel 3: Die geheime Kunst der Mönche 3.0 - Willkommen im Orden 3.1 - RID 3.2 - Funktionen 3.3 - Dynamische Menüs 3.4 - Dynamische Shops 3.5 - Dynamische Arrays 3.x - Coming soon... Kapitel 1: Alles hat einen Anfang 1.0 - Einführung in die Welt der Scripter (Vorwort) Viele neue Scripts entstehen in der Ragnarok Community. Die internationale Community tut ihr bestes daran stetig neue Dinge zu entwickeln und das Leben in Ragnarok so wie wir es kennen zu erweitern und den Spaß zu vergrößern. Es gibt viele verschiedene Arten von Scripts. Mal sind es kleine Dinge, wie ein Kafra Shop oder auch was größeres, wie ein Quest System. Die Möglichkeiten sind unendlich. Ich vertrete die Meinung das Scripts das Herzstück jedes Servers sind. Sie sind die letzte Schnittstelle zu den Spielern und die Spieler sind es die damit kommunizieren. Umso wichtiger ist es das sie auch funktionieren und den Spielern neue Möglichkeiten bieten Ragnarok neu zu erleben. Ich möchte euch in diese wunderbare Welt des Scriptens einführen und euch zeigen das in jedem von euch ein Scripter stecken kann und das auch ihr euren Teil zu dieser tollen Community beitragen könnt. Wie wird das Guide ablaufen ? - Ich werde euch Schritt für Schritt durch die Thematik führen und euch so gut es geht alles erklären was ihr wissen müsst. Mit Beispielen vereinfache ich das ganze und erläutere anschließend alles. Gegebenfalls werde ich euch danach kleine Aufgaben stellen die ihr versucht zu lösen. Hier wirkt das Trial and Error Prinzip. Versuchen und Scheitern. Das ganze wiederholt ihr bis es funktioniert. Der Prozess des Lernens erfordert Fehler zu machen und aus diesen Fehlern lernen wir und dann machen wir es besser. Es wichtig das ihr viel übt und wiederholt um euch Dinge einzuprägen. 1.1 - NPCs (Non-Playable-Character) NPC, auch genannt Non-Playable-Character sind die Personen die in der Map verteilt stehen und die man als Spieler ansprechen kann. Jeder NPC hat ein Grundgerüst, welches ich euch hier zeige. Beispiel: prontera,156,212,7<tab>script<tab>Charlie<tab>811,{ } Erläuterung: Das ist unser Beispiel namens Charlie, so sieht das Grundgerüst für jeden NPC aus. Es definiert alle wichtigen Daten über den NPC. Auf welcher Map es sich befindet, wo es genau steht, wie es heißt und wie es aussieht. Gehen wir mal genauer drauf ein. prontera = Die Map auf der sich der NPC befindet 156 = Die X Koordinate auf der Map 212 = Die Y Koordinate auf der Map 7 = Ausrichtung des NPCs (Die Richtung in die der NPC schaut) script = Typ des NPCs (Es gibt verschiedene Typen von NPCs auf die ich noch eingehen werde) Charlie = Name des NPCs (Was der Spieler im Spiel sieht unter dem NPC) 811 = Aussehen des NPCs (Es werden IDs für das Aussehen verwendet) <tab> = Das sollte wohl klar sein. Es ist wichtig das ihr <tab> drückt und keine Leerzeichen verwendet, ansonsten funktioniert der Script nicht { } = Hier beginnt der Spaß, denn hier kommen später unsere Befehle und alles andere rein Map,X,Y: Wenn ihr wissen wollt wohin ihr euren NPC hinstellen sollt dann geht im Spiel auf die gewünschte Stelle und tippt folgendes ein: "/where". Hiermit erfahrt ihr auf welcher Map und X und Y Koordinate ihr euch befindet. Somit habt ihr schon so gut wie alles was ihr braucht. Ausrichtung des NPCs: [1][8][7] [2][ ][6] [3][4][5] An diesem Raster könnt ihr sehen welche Zahl für welche Blickrichtung steht. Mehr gibt es eigentlich dazu nicht zu sagen. Typ des NPCs: Es gibt wie schon gesagt verschiedene Arten von NPC Typen. Ich zeige euch die wichtigsten. script = Standard NPC Typ (Wird am häufigsten verwendet) shop = Shop NPC (wie der Name schon sagt handelt es sich hierbei um ein Shop) monster = Monster Spawn (Dieser Typ legt ein Spawn für Monster fest) warp = Warp Point (Ein Warp Punkt der euch zur gewünschten Map, X und Y Koordinate bringt) Name des NPCs: Den denkt ihr euch natürlich selbst aus. Es ist zu beachten das NPC Namen auch Leerzeichen enthalten dürfen. Maximal können 23 Zeichen für den Namen verwendet werden und jeder Name muss einzigartig sein. Der Server erlaubt keine doppelte Namen, da sonst Daten durcheinander kommen würden. (z.B. bei Event Labels) Aussehen des NPCs: Eine Liste der NPCs und deren IDs findet ihr z.B. hier: http://nn.nachtwolke.com/dev/npclist/ Hinweis: Haltet euch immer an das Beispiel, dann kann nichts schief gehen. Falls doch mal ein Fehler auftaucht, dann schaut nach ob ihr auch <tab> statt Leerzeichen verwendet habt und ob alle Kommas richtig sitzen. 1.2 - Script Commands Im Laufe der Zeit werde ich neue Befehle aufgreifen und ich kann euch natürlich nicht jeden Befehl ins Detail erklären, deswegen müsst ihr lernen die Wiki zu lesen. Dort findet ihr alle Script-Befehle bis in jedes Detail erklärt, sogar mit Beispielen. Das ist sehr wichtig. Ihr könnt euch nicht alle Befehle am Anfang merken, erst recht nicht wie alles funktioniert. Nutzt es als Nachschlagewerk und haltet euch nicht zurück. Die Wiki werdet ihr noch sehr oft verwenden müssen. Link: http://rathena.org/wiki/Category:Script_Command 1.3 - Befehle Teil 1 - Abläufe Hier beginnt der ganze Spaß. Ihr werdet nun euren ersten sprechenden NPC erstellen. Beispiel: prontera,156,212,7 script Charlie 811,{ mes "[Charlie]"; mes "Hallo ! Mein Name ist Charlie."; next; mes "[Charlie]"; mes "Ich heiße euch willkommen!"; close; } Erläuterung: Sobald ihr den NPC anklickt wird der Script zwischen den { } ausgeführt. Das ist der sogenannte Script-Block. Dieser enthält den kompletten Script des NPCs. Ich erläutere euch nun die Befehle die ich hier verwendet habe. mes "<message>"; Öffnet ein Fenster mit dem folgenden Text "<message>". Die beiden "" beinhalten den Text der ausgegeben werden soll und mit ; beenden wir den Befehl. Ein mes steht für eine Zeile. Bedeutet, wenn ihr eine neue Zeile anfangen wollt verwendet ein weiteres mes. Wenn ihr in der Wiki schaut werdet ihr verschiedene Varianten finden. Link: http://rathena.org/wiki/Mes next; Zeigt euch ein Button am unteren Rand des Fensters an. Bedeutet das Script pausiert und wartet darauf bis ihr "Next" klickt. Tut ihr das wird das Fenster gesäubert und ihr könnt es wieder neu füllen. Somit könnt ihr eure Texte strukturieren und leserlicher machen, (auch segmentieren genannt), und dem Spieler Zeit geben Stück für Stück den Text zu lesen. Stellt euch zum Beispiel eine Unterhaltung mit dem NPC und dem Spieler vor, sieht besser aus und ist Spieler-freundlicher. Link: http://rathena.org/wiki/Next close; Dieser Befehl zeigt euch ein Close Button am unteren Rand des Fensters an. Wenn ihr es klickt wird das Fenster geschlossen und der Script beendet. Wenn ihr nach diesem Befehl noch mehr Befehle schreibt werden diese nicht ausgeführt, deswegen wird close ausschließlich nach mes und next verwendet. Link: http://rathena.org/wiki/Close Der Server arbeitet Schritt für Schritt jede Zeile ab. Stellt euch vor ihr gibt einem Kleinkind vor was es zu tun hat. Gar nicht mal so schwer oder ? Lernaufgabe: Erstelle ein NPC namens Harald, welches dem Spieler sagt das er ihn in Ruhe lassen soll. Danach wird das Script normal beendet. Wenn ihr wollt probiert es mit verschiedenen Namen und verschiedenen Texten und wenn ihr wollt auch an verschiedenen Orten. Ihr könnt Harald auch ein anderes Aussehen verpassen. Probiert alles aus und macht euch mit dem Grundgerüst und den Befehlen vertraut. Hinweis: Vergesst nicht das ; nach jedem Befehl zu verwenden. Ihr werdet es am Anfang sehr oft vergessen. Prägt es euch also schon früh ein! Das ; wird verwendet um ein Befehl zu beenden. 1.4 - Variablen Beim Scripten wird der Punkt kommen wo ihr Variablen verwenden müsst. In diesen könnt ihr Informationen speichern, sie aufrufen und verarbeiten. Ich werde euch die verschiedenen Arten von Variablen und deren Limitationen zeigen. Integer: Sind sogenannte Ganzzahlen z.B. (0, 1, 2, 3, 592, -235, -2, etc.) Zu beachten ist das wenn ihr Kommazahlen verwendet, diese einfach geschnitten werden. Bedeutet wenn ihr 5.6 eintippt. Dann wird der Server nur die 5 benutzen und nicht das was hinter dem Komma steht. Später ist das wichtig zu beachten wenn ihr rechnet und Irgendetwas zum Beispiel durch 2 teilen wollt. Behaltet dies im Hinterkopf. String: Sind sogenannte Zeichenketten z.B.: "Hallo", "Dies ist eine Botschaft" oder auch Buchstaben wie "a" und "b". Beinhaltet alle euch bekannten Zeichen von A bis Z und Wörter, Sätze, Sonderzeichen und auch Zahlen. (Mit den Zahlen kann man dann aber nicht rechnen!) Hier ist zu beachten das Strings immer in "" geschrieben werden müssen, ansonsten werden diese nicht erkannt und es gibt Fehlermeldungen. Hier nun die verschiedenen Typen die man in der Athena Scripting Sprache festlegen kann: variablenname = Eine permanente Charakter basierende Variable @variablenname = Eine temporäre Charakter basierende Variable .variablenname = Eine permanente NPC Variable .@variablenname = Eine temporäre NPC Variable $variablenname = Eine globale permanente Variable $@variablenname = eine globale temporäre Variable #variablenname = eine permanente Account basierende Variable Ein $ and das Ende einer Variable liefert eine String Variable die man z.B. für die Input funktion gebrauchen kann. z.B.: @var$ <--- Eine temporäre String Variable mit dem Namen var. Temporär bedeutet das die Variable gelöscht wird sobald der Server resetted wird. Permanent bedeutet das die Variable bleibt selbst wenn der Server resetted wird. Global bedeutet das sie für den Server gilt und nicht nur für den Charakter oder Account. Account bassierend bedeutet das sie für den Account gesetzt wird. (Nützlich wenn man Quests auf nur 1x pro Account reduziern will) Bestimmt wollt ihr nun wissen wie man Variablen benutzt. Dafür brauchen wir den Befehl "set". Wie man ihn benutzt und in ein Script einbaut zeige ich euch jetzt. Beispiel: prontera,156,212,7 script Charlie 811,{ mes "[Charlie]"; mes "Hallo ! Mein Name ist Charlie."; next; mes "[Charlie]"; mes "Ich heiße euch willkommen!"; set @geredet, 1; close; } Erläuterung: Dies ist unser Beispiel von vorhin, aber etwas ist anders. Wir haben eine temporäre Charakter Variable namens "geredet" erstellt und eine 1 eingespeichert. Nun könnten wir am Anfang abfragen ob die Variable auf 1 gesetzt ist und wenn ja dann würde statt diesem Text ein ganz anderer Text erscheinen. Dafür brauchen wir die sogenannten If-Abfragen, zu denen wir schon bald kommen werden. set; Speichert einen Wert in eine Variable. Ist die Variable nicht vorhanden wird sie erstellt. Ist sie jedoch schon vorhanden, wird der alte Wert mit dem neuen Wert überschrieben. Link: http://rathena.org/wiki/Set Wir können Variablen auch abrufen und diese in "mes" ausgeben lassen. Beispiel: prontera,156,212,7 script Charlie 811,{ mes "[Charlie]"; set @geredet, 1; mes "Die Variable ist auf " + @geredet + " gesetzt"; close; } Erläuterung: Um eine Variable aufzurufen reicht es einfach den Namen anzugeben. Das "+" ist ein Operator, aber dazu kommen wir gleich. Ihr seht, das ich die Variable mit dem Rest des Textes ganz einfach verbunden habe indem ich das "+" dazwischen geschrieben habe. Als hätte ich es zusammengerechnet. (In diesem Fall verbunden) 1.5 - Operatoren Ich behandle in diesem Thema zwei Arten von Operatoren. Die mathematischen und die logischen Operatoren. Bei den logischen Operatoren gibt es nochmal zwei verschiedene Arten, unzwar die logischen Vergleiche und die logischen Verknüpfungen. mathematische Operatoren: + Addiert Zahlen - Subtrahiert Zahlen * Multipliziert Zahlen / Dividiert Zahlen (Hinweis: Nicht vergessen, bei einem Ergebnis von z.B 5.6 wird 5 rauskommen, da der Server nur Ganzzahlen verarbeitet) % Rest einer Division, z.B.: 7%2 = 1 Diese Operatoren sind ausschließlich für Integer zu verwenden. Die einzige Ausnahme ist "+", wie im Beispiel vorhin kann man damit Variablen mit Texten oder sogar Texte mit Texten verbinden. logische Operatoren (Vergleiche): == Trifft zu wenn beide Seiten gleich sind. [ 2==2 (wahr) 2==1 (falsch) ] != Trifft zu wenn beide Seiten nicht gleich sind. [ 1==1 (falsch) 2==1 (wahr) ] >= Trifft zu wenn der erste Wert größer oder gleich ist als der zweite Wert. [ 2>=2 (wahr) 3>=2 (wahr) 1>=2 (falsch) ] <= Trifft zu wenn der erste Wert kleiner oder gleich ist als der zweite Wert. [ 1<=2 (wahr) 1<=1 (wahr) 2<=1 (falsch) ] > Trifft zu wenn der erste Wert größer ist als der zweite Wert. [ 2>1 (wahr) 1>2 (falsch) ] < Trifft zu wenn der erste Wert kleiner ist als der zweite Wert. [ 1<2 (wahr) 2<1 (falsch) ] logische Operatoren (Verknüpfungen): && UND || ODER ! NICHT Diese Operatoren werden einzig und allein für If-Abfragen verwendet. 1.6 - If-Abfragen Jetzt wird es spannender. Nachdem wir gelernt haben was Variablen und Operatoren sind kommen wir nun zu den If-Abfragen. Hier werden wir sowohl variablen als auch logische Operatoren verwenden. Zudem lassen sich auch Funktionen mit Rückgabewerten verwenden, jedoch behandeln wir diese erst später. if; Es handelt sich dabei um eine logische Abfrage. Dabei werden Werte mit Hilfe von logischen Operatoren abgeglichen und auf ihre Wahrheit oder Falschheit überprüft. Je nach Resultat wird der darauf folgende Codeblock ausgeführt oder nicht. Link: https://rathena.org/wiki/If Beispiel: prontera,156,212,7 script Charlie 811,{ if(@geredet == 1) { mes "[Charlie]"; mes "Habe ich dir meinen Namen nicht schon verraten ?"; next; mes "[Charlie]"; mes "Na los, verschwinde endlich!"; close; } else { mes "[Charlie]"; mes "Hallo ! Mein Name ist Charlie."; next; mes "[Charlie]"; mes "Ich heiße euch willkommen!"; set @geredet, 1; close; } } Erläuterung: Wie ihr sehen könnt ist am Anfang von unserem netten Kerl Charlie eine If-Abfrage. Im Grunde wird überprüft ob die Variable "@geredet" auf 1 gesetzt ist, wenn diese Aussage WAHR ist, wird der Codeblock darunter zwischen den geschweiften Klammern ausgeführt. Danach kommt ein "else" welches auf Deutsch "ansonsten" bedeutet. Im Klartext: Ansonsten wenn die Aussage NICHT WAHR, also UNWAHR ist, führe den Codeblock unter "else" aus. Ein "else" ist kein muss, jedoch kommt es darauf an wie euer Script aufgebaut sein soll. In diesem Fall wollen wir entweder das eine ODER das andere ausgeben lassen. Nochmal: Wenn ihr den NPC das erste mal anspricht wird der Codeblock unter "else" ausgefuhrt weil @geredet noch nicht auf 1 gesetzt wurde. Das wird es dann dort. Beim zweiten mal Ansprechen ist die Aussage WAHR und der Codeblock unter "if" wird ausgegeben. Stellt euch das wie eine Gabelung vor, entweder der eine oder der andere Weg. Mehrere Verzweigungen: Es ist auch möglich mehrere If Abfragen zu verketten mit dem "else if" befehl, statt eines "else" benutzt ihr "else if"" und macht so noch eine abfrage. Die letzte wird dann ein "else" falls keine der vorherigen Abfragen zu trifft. Ergänzung: Es ist möglich alle Arten von Variablen miteinander zu vergleichen solange diese den selben Datentypen haben, heißt: string mit string vergleichen. Int mit Int vergleichen und so weiter. Ansonsten erhaltet ihr nur Fehler. Liest euch zudem unbedingt die Wiki Seite von if durch, damit ihr es besser versteht. 1.7 - Labels Labels werden heutzutage so gut wie kaum noch verwendet. Man bezeichnet es als unsauber. Es kann in einigen Situationen jedoch hilfreich sein und sollte niemals ganz vergessen werden. Wir werden dafür ein neuen Befehl benötigen den ich euch zeigen werde. goto <label>; Mit "goto" kann man an ein label springen. Heißt man springt an eine bestimmte Zeile im Script wo euer Label steht. Für mehr Informationen besucht die Wiki Seite. Link: https://rathena.org/wiki/Goto Beispiel: prontera,156,212,7 script Charlie 811,{ if(@geredet == 1) { goto L_geredet; } mes "[Charlie]"; mes "Hallo ! Mein Name ist Charlie."; next; mes "[Charlie]"; mes "Ich heiße euch willkommen!"; set @geredet, 1; close; L_geredet: mes "[Charlie]"; mes "Habe ich dir meinen Namen nicht schon verraten ?"; next; mes "[Charlie]"; mes "Na los, verschwinde endlich!"; close; } Erläuterung: Kommt euch das bekannt vor ? Genau es ähnelt dem "if" und "else" Beispiel. Statt das wir ein "else" verwenden, springen wir zur Zeile wo "L_geredet:" steht. "goto" erlaubt uns quasi einfach hin und her zu springen und von dort aus läuft der Script ganz normal weiter nach unten. Man kann mit dieser Methode auch aus Schleifen springen nachdem ein gewünschter Zustand erreicht wurde. Die Möglichkeiten sind unendlich. Lernaufgabe: Probiert euch mal selbst daran und baut ein paar Labels in euer Script und versucht hin und her zu springen. 1.8 - Kommentare Eines der nützlichsten Werkzeuge in der Informatik. Auch wenn sie selbst kein Einfluss auf eueren Script haben, werden sie dazu verwendet euch das Leben leichter zu machen. Wie der Name schon sagt sind es Kommentare. Sie dienen euch dazu Notizen im Script zu machen oder euren Script zu erklären und leserlicher zu machen und haben dabei kein Einfluss auf den Script selbst. Beispiel: prontera,156,212,7 script Charlie 811,{ //Hier frage ich ab ob die Variable @geredet auf 1 gestellt ist if(@geredet == 1) { goto L_geredet; //Wenn ja springe ich zum Label L_geredet } //Diese Stelle wird nur ausgeführt wenn wir nicht zu L_geredet gesprungen sind und die If-Abfrage UNWAHR war. mes "[Charlie]"; mes "Hallo ! Mein Name ist Charlie."; next; mes "[Charlie]"; mes "Ich heiße euch willkommen!"; set @geredet, 1; close; //Hier steht das Label. Man kann es sich als eine Art Checkpoint vorstellen an den man springen kann. L_geredet: mes "[Charlie]"; mes "Habe ich dir meinen Namen nicht schon verraten ?"; next; mes "[Charlie]"; mes "Na los, verschwinde endlich!"; close; } Erläuterung: Wie ihr sehen könnt beginnt man ein Kommentar mit "//" Damit hat die Zeile kein Einfluss mehr und steht nur als Text da für euch. Sehr hilfreich also nutzt es auch ! Im Laufe der Zeit lernt ihr sparsam aber effizient damit umzugehen. Ihr wollt euren Script damit ja nicht zukleistern. 1.9 - Befehle Teil 2 - Menüs und Eingaben - coming soon... _____________________________________________________________________________________ Dieses Guide basiert auf dem veralteten Guide aus 2007 welches erstmalig auf eAthena veröffentlich wurde. Ich selbst habe durch diesen Guide scripten gelernt. Ich habe dieses Werk als Grundlage für meinen Guide genommen. Die Struktur ist ähnlich oder wurde verändert, der Inhalt jedoch ist von mir verfasst und basiert auf der aktuellen rAthena Wiki. Link: Klick mich
×
×
  • Create New...