Werdio Posted October 22, 2012 Group: Members Topic Count: 83 Topics Per Day: 0.02 Content Count: 248 Reputation: 1 Joined: 06/27/12 Last Seen: May 9, 2016 Share Posted October 22, 2012 Hallo rAthena Team, ich würde gerne wissen, wie ich einen Script so gestalte, dass er mir bestimmt items für bestimmt items gibt. z.B.: script Valkyrie Helm Mixer 123 If item (irgend eine Item ID o. mehrere IDs) | giveitem Valkyrie Helm | | @breakitem (mixitems von oben) <-------- Dies ist nur ein gedankliches Konstrukt, da ich nicht weiß wie ich diese befehle miteinander verknüpfen soll :/ Kann mir da jemand einen Beispiel geben, damit ich es zumindest etwas verstehe und dann so übernehmen und kopieren kann? Danke im Vorraus Quote Link to comment Share on other sites More sharing options...
Rynbef Posted October 22, 2012 Group: Forum Moderator Topic Count: 47 Topics Per Day: 0.01 Content Count: 937 Reputation: 124 Joined: 05/23/12 Last Seen: Thursday at 01:31 PM Share Posted October 22, 2012 (edited) Hier ist einer der einfachsten Arten. Hoffe du wirst es verstehen. prtonter,x,y,z script Quest id,{ //Ist quest == 1 ? if (quest == 1){ //Wenn ja, habe ich alle beiden Items und auch die richtige Anzahl oder mehr ? if (countitem(512) >= 500 && countitem(ID) >= 250){ mes "Wunderbar, du hast alle Items gefunden."; //Lösche beide Items delitem 512,500; delitem ID,250; //Gebe das Item getitem ID,1; //Setzt die Variable Quest wieder auf null, damit ich den Quest nochmal machen kann. set quest,0; close; } mes "Du hast nicht alle Items."; close; } mes "Ich brauche folgende Items:"; mes""; mes "[^ff0000500^000000]x Apple"; mes "[^ff0000250^000000]x Irwas"; mes "Komm wieder, wenn du alle Items hast."; //Setzt die Variable quest auf 1, damit dieser Text nicht wiederolt wird. set quest,1; } Rynbef~ Edited October 22, 2012 by Rynbef Quote Link to comment Share on other sites More sharing options...
Rikimaru Posted October 22, 2012 Group: Members Topic Count: 16 Topics Per Day: 0.00 Content Count: 658 Reputation: 57 Joined: 11/20/11 Last Seen: July 1, 2017 Share Posted October 22, 2012 Ähnlich wie Rynbeef : prontera,xxx,yyy,z<tab>script<tab>Valkyrie<tab>SPR,{ set .@n$,"^0000FF[ Valkyrie ]^000000"; set .@ValkID,XXXXX; // Änder dies zu der ID Des Items,das der Spieler bekommt. mes .@n$; mes "Hallo,du brauchst :"; mes "100x Apple..."; mes "400x Yellow Bijou...."; mes "XXXx ItemXXXX...."; mes "Für den Valkyrie Helm."; next; mes .@n$; mes "Hast du diese Items?"; next; switch(select("Ja:Nein")) { case 1: mes "Dann lass mich mal schauen."; if(countitem(APPLEITEMID) <100) goto l_noitem; if(countitem(YELLOWITEMID) <400) goto l_noitem; if(countitem(XXXXXXID) <Anzahl) goto l_noitem; delitem APPLEITEMID,100; delitem YELLOWITEMID,400; delitem XXXXXXID,ANZAHL; next; mes .@n$; mes "Vielen Dank,viel spaß mit dem Item."; getitem ValkID,1; close; case 2: mes "Dann besorge die Items!"; close; } l_noitem: mes "Du hast nicht alle items die ich brauche bei dir im Inventar."; close; } Hat 2 Minuten gedauert,ist aber nur ein vereinfachter script. Quote Link to comment Share on other sites More sharing options...
Werdio Posted October 22, 2012 Group: Members Topic Count: 83 Topics Per Day: 0.02 Content Count: 248 Reputation: 1 Joined: 06/27/12 Last Seen: May 9, 2016 Author Share Posted October 22, 2012 (edited) dragonia,37,43,0 script Cowgirl 123,{ if (quest == 1){ if (countitem(969) >= 10 && countitem(4001) >= 1){ mes "[Cowgirl]"; mes "Wunderbar, du hast alle Items gefunden."; delitem 969,10; delitem 4001,1; getitem 20140,1; set quest,0; close; } } mes "[Cowgirl]"; mes "Hallo Reisender, ich stelle Cowboy Hats her."; next; mes "[Cowgirl]"; mes "Ich brauche folgende Items:"; mes""; mes "^ff000010^000000x Gold"; mes "^ff00001^000000x Poring Card"; mes "Komm wieder, wenn du alle Items hast."; set quest,1; close; } } Funktioniert perfekt Nun würde ich gerne eine case Funktion einbauen, damit sich der Spieler eine Farbe aussuchen kann - wer kann helfen? + kann man es so scripten, dass wen man die items nicht hat nur die Nachricht: "Komm wieder, wenn du alle Items hast" erscheint? Edited October 22, 2012 by Duck Quote Link to comment Share on other sites More sharing options...
Rynbef Posted October 23, 2012 Group: Forum Moderator Topic Count: 47 Topics Per Day: 0.01 Content Count: 937 Reputation: 124 Joined: 05/23/12 Last Seen: Thursday at 01:31 PM Share Posted October 23, 2012 (edited) Dafür gibt es unmengen an möglichkeiten. Ich vermute mal, das du für jede Farbe die gleichen Items nehmen möchtest. Deshalb wäre dies einer der möglichkeiten, habe es nicht getestet, hoffe es geht auch dragonia,37,43,0 script Cowgirl 123,{ if (quest == 1){ if (countitem(969) >= 10 && countitem(4001) >= 1){ mes "[Cowgirl]"; mes "Wunderbar, du hast alle Items gefunden."; next; mes "Bitte wähle ein Farbe aus."; switch(select("Rot","Blau","Weiss","Schwarz","Gelb","Grün")){ case 1: set @farbe,1; goto Item; break; case 2: set @farbe,1; goto Item; break; case 3: set @farbe,1; goto Item; break; case 4: set @farbe,1; goto Item; break; case 5: set @farbe,1; goto Item; break; case 6: set @farbe,1; goto Item; break; } } mes "Du hast nicht alle Items."; mes "Komm wieder, wenn du alle Items hast."; close; } mes "[Cowgirl]"; mes "Hallo Reisender, ich stelle Cowboy Hats her."; next; mes "[Cowgirl]"; mes "Ich brauche folgende Items:"; mes""; mes "^ff000010^000000x Gold"; mes "^ff00001^000000x Poring Card"; mes "Komm wieder, wenn du alle Items hast."; set quest,1; close; Item: delitem 969,10; delitem 4001,1; if (@farbe == 1)getitem 20140,1; if (@farbe == 2)getitem 20140,1; if (@farbe == 3)getitem 20140,1; if (@farbe == 4)getitem 20140,1; if (@farbe == 5)getitem 20140,1; if (@farbe == 6)getitem 20140,1; set quest,0; close; } Rynbef~ Edited October 23, 2012 by Rynbef Quote Link to comment Share on other sites More sharing options...
Rikimaru Posted October 23, 2012 Group: Members Topic Count: 16 Topics Per Day: 0.00 Content Count: 658 Reputation: 57 Joined: 11/20/11 Last Seen: July 1, 2017 Share Posted October 23, 2012 Was du ihm noch sagen könntest,ist,dass er halt bei der gewählten farbe noch die Zahlen ändern muss. dragonia,37,43,0 script Cowgirl 123,{ if (quest == 1){ if (countitem(969) >= 10 && countitem(4001) >= 1){ mes "[Cowgirl]"; mes "Wunderbar, du hast alle Items gefunden."; next; mes "Bitte wähle ein Farbe aus."; switch(select("Rot","Blau","Weiss","Schwarz","Gelb","Grün")){ case 1: set @farbe,1; // Hier 1 goto Item; break; case 2: set @farbe,2; // Hier 2 goto Item; break; case 3: set @farbe,3; // Hier 3 goto Item; break; case 4: set @farbe,4; // Hier 4 goto Item; break; case 5: set @farbe,5; // Hier 5 goto Item; break; case 6: set @farbe,6; // Hier 6 goto Item; break; } } mes "Du hast nicht alle Items."; mes "Komm wieder, wenn du alle Items hast."; close; } mes "[Cowgirl]"; mes "Hallo Reisender, ich stelle Cowboy Hats her."; next; mes "[Cowgirl]"; mes "Ich brauche folgende Items:"; mes""; mes "^ff000010^000000x Gold"; mes "^ff00001^000000x Poring Card"; mes "Komm wieder, wenn du alle Items hast."; set quest,1; close; Item: delitem 969,10; delitem 4001,1; if (@farbe == 1)getitem 20140,1; if (@farbe == 2)getitem 20140,1; if (@farbe == 3)getitem 20140,1; if (@farbe == 4)getitem 20140,1; if (@farbe == 5)getitem 20140,1; if (@farbe == 6)getitem 20140,1; set quest,0; close; } Sonst geht der Script ja immer zur gleichen Farbe Quote Link to comment Share on other sites More sharing options...
Werdio Posted October 23, 2012 Group: Members Topic Count: 83 Topics Per Day: 0.02 Content Count: 248 Reputation: 1 Joined: 06/27/12 Last Seen: May 9, 2016 Author Share Posted October 23, 2012 Könnte man es vielleicht so umschreiben, dass das Script zuerst die case funktion zeigt.. also z.B. so: Ich kann dir blabla mixen: Welches Custom möchtest du? Black White Rot // ich wähle mal rot Dafür benötige ich 1x bla 10x blah und wenn man den npc wieder anspricht, dass er von vorne frägt: Ich kann dir items mixen, welche farbe und so , geht das? Ist jetzt bisschen schlampig aber ist nur ein Beispiel :x Quote Link to comment Share on other sites More sharing options...
Lemongrass Posted October 23, 2012 Group: Developer Topic Count: 28 Topics Per Day: 0.01 Content Count: 547 Reputation: 270 Joined: 11/08/11 Last Seen: June 10, 2024 Share Posted October 23, 2012 (edited) Hier hast du ein 0815 Skript von mir. Ist ungetestet und ich hab seit Jahren nichts mehr geskriptet, also bitte bei Fehlern einfach Bescheid sagen. dragonia,37,43,0 script Cowgirl 123,{ // Beim ersten Anreden if( cowboy_quest == 0 ){ mes .name$; mes "Hallo Reisender, ich stelle Cowboy Hats her."; next; mes .name$; mes "Welche Farbe hättest du gerne?"; set cowboy_quest, select( .menu$ ); next; } switch( cowboy_quest ){ case 1: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; case 2: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; case 3: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; case 4: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; case 5: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; case 6: setarray .@needed_ids[0], id1, id2; setarray .@needed_amounts[0], anz1, anz2; break; } mes .name$; mes "Ich brauche folgende Items:"; mes""; for( set .@i, 0; .@i < getarraysize( .@needed_ids ) ; set .@i, .@i + 1 ){ mes "^ff0000" + .@needed_amounts[.@i] + "^000000x " + getitemname( .@needed_ids[.@i] ); } next; mes .name$; mes "Mal sehen ob du alle Items hast die ich benötige."; next; mes .name$; for( set .@i, 0; .@i < getarraysize( .@needed_ids ) ; set .@i, .@i + 1 ){ if( countitem( .@needed_ids[.@i] ) < .@needed_amounts[.@i] ){ mes "Du hast nicht genug " + getitemname( .@needed_ids[.@i] ) + "s."; mes "Komm wieder wenn du alle Items hast."; close; } } mes "Wunderbar, möchtest du deinen " + getitemname( .cowboy_hats[cowboy_quest] ) + " jetzt mixen?"; next; mes .name$; if( select( "Ja:Nein" ) == 1 ){ mes "Wunderbar, dann lege ich gleich los..."; next; mes .name$; mes "Hier hast du dein Item, bis bald."; for( set .@i, 0; .@i < getarraysize( .@needed_ids ) ; set .@i, .@i + 1 ){ delitem .@needed_ids[.@i], .@needed_amounts[.@i]; } getitem .cowboy_hats[cowboy_quest], 1; // Wenn man nun wieder mixxen können soll, die nächste Zeile freischalten // set cowboy_quest, 0; close; }else{ mes "Komm wieder wenn du es dir anders überlegt hast."; close; } // Initialisierung des NPCs beim Mapserverstart/NPC Reload OnInit: // Name der für den NPC angezeigt wird set .name$, "[Cowgirl]"; // Namen verschiedenen Items setarray .@cowboy_hats$[0], "Rot", "Blau", "Weiß", "Schwarz", "Gelb", "Grün"; // Item IDs der verschiedenen Items setarray .cowboy_hats[0], idrot, idblau, idweiss, idschwarz, idgelb, idgruen; // Aufbau des Menüs set .menu$, .@cowboy_hats$[0]; for( set .@i, 0; .@i < getarraysize( .@cowboy_hats$ ) ; set .@i, .@i + 1 ){ set .menu$, .menu$ + ":" + .@cowboy_hats$[.@i]; } end; } Edited October 23, 2012 by Lemongrass Quote Link to comment Share on other sites More sharing options...
Werdio Posted October 24, 2012 Group: Members Topic Count: 83 Topics Per Day: 0.02 Content Count: 248 Reputation: 1 Joined: 06/27/12 Last Seen: May 9, 2016 Author Share Posted October 24, 2012 Danke, aber ich verstehe nicht was ich in id2 eintragen soll oder in anz2 o.O Quote Link to comment Share on other sites More sharing options...
Flaid Posted October 24, 2012 Group: Members Topic Count: 20 Topics Per Day: 0.00 Content Count: 398 Reputation: 140 Joined: 01/04/12 Last Seen: February 19, 2022 Share Posted October 24, 2012 Danke, aber ich verstehe nicht was ich in id2 eintragen soll oder in anz2 o.O Halt ein zweites item was benötigt ist. Bei item id1 und id2 trägst du die normal item ids ein und bei der Anzahl halt so viel wie von dem jeweiligen Item gebraucht wird. Quote Link to comment Share on other sites More sharing options...
Lemongrass Posted October 24, 2012 Group: Developer Topic Count: 28 Topics Per Day: 0.01 Content Count: 547 Reputation: 270 Joined: 11/08/11 Last Seen: June 10, 2024 Share Posted October 24, 2012 Halt ein zweites item was benötigt ist. Bei item id1 und id2 trägst du die normal item ids ein und bei der Anzahl halt so viel wie von dem jeweiligen Item gebraucht wird. Richtig. Lässt sich auch bis zu 127 oder so mit Beistrichen fortführen. Wichtig ist, dass immer die Anzahl der IDs und die Anzahl der benötigten Menge gleich groß sein sollte. Sprich wenn du ein weiteres benötigtes Item einträgst, solltest du auch die benötigte Menge dafür eintragen. Quote Link to comment Share on other sites More sharing options...
Werdio Posted October 27, 2012 Group: Members Topic Count: 83 Topics Per Day: 0.02 Content Count: 248 Reputation: 1 Joined: 06/27/12 Last Seen: May 9, 2016 Author Share Posted October 27, 2012 Also dein 0815 script funktioniert irgendwie nicht. Es läd zwar aber da wo man ein Hat auswählen sollte steht nichts, es ist leer. Im script sehe ich nicht die IDs von den Items, könntest du mir bitte ein beispiel mit der vorgegebenen ID geben, damit ich es in zukunft einfach kopieren und ersetzen kann und nicht viel rumschreiben muss und somit das Script zerstöre? (bin nochn newbie ) Danke im vorraus Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.