//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par Myllena //===== eAthena Script ============================================ //= Quest Warper Script //===== By: ======================================================= //= Old Warper 2 by Darkchild - Remade with quest format by DZeroX //= Huge Rewrite by Neouni //===== Current Version: ========================================== //= 2.2 //===== Compatible With: ========================================== //= Any eAthena Version //===== Description: ============================================== //= Warper that works only after locations are unlocked //===== Additional Comments: ====================================== //= 1.0 - NPCs created //= 1.1 - Add Dungeons by sturm //= 1.2 - Add All char in account unlocked by ace_killer //= 1.3 - Add new 7 towns and 7 dungeons by escoteiro // - Correct bug jawaii town by escoteiro // - Remove some excessive warpras by escoteiro //= 1.4 - Rewrite of the Warpa system [Neouni] // - Corrected some bugs caused by autoconverting the old script //= 1.4a - Rewrite of menu to be custom for each player [Neouni] // - Dungeon listing rewrite // - Town listing rewrite // - GameMaster can Customise Main menu //= 1.4b - Pricing round [Neouni] // - GM menu added for pricing // - Town Warp pricing tags added // - Dungeon Warp pricing tags added //= 1.5 - storage functions pricing [Neouni] // - storage pricing added // - kafra points setting added // - kafra storage code security added // - Healing scripts pricing added // - Heal Part script added //= 1.6 - Dungeon warp [Neouni] (beta only) // - added option to add a extra fee for going down deeper into dungeon // partly by rebuilding the dungeon warping into variable menu's //= 1.6a - alot of fixes for beta release [Neouni] (public release) // - fixed syntax problems // - fixed missing pyramid gats in @DGat$ array // - removed the culver level 5 that didn't exist // and caused quite alot of problems (i didn't check while converting) //-1.7 - Readability of Dungeon menu building increased [Neouni] // - Thanatos Tower & Louyang Dungeon added //-1.8 - changed around unlock variables [Neouni] // - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable // (warp variables are saved in login database, so all charservers have these unlocked) // - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 ! // - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 ! // - (max login ##variables = 16, i used 3) // - old variables are cleared on next save // - Extra Variable clear added for every character, just in case (request by Terces) //-1.8a - Show ammount of users on map [Neouni] // - Default = off, enable in GM menu // - Requested by escoteiro //-1.8b - Small typo fixed in stampcard script [Neouni] // - Reported by escoteiro //-1.9 - Making it more edit friendly [Neouni] // - Made Dungeon warp arrays more readable & editable (QWS_Darray) // - Made town warp arrays more readable & editable (QWS_Tarray) //-2.0 - Special Warp menu added [Neouni] // - when all towns and dungeons are collected a new option on the main menu will show // - it will only show when you setup the mapname of the warp ! // - requested by escoteiro // - several bugs fixed //-2.0a - Dungeon Level Limit & Split dungeon fees // - Limits dungeon based on Depth, access special setup menu thru GM-Menu // - Dungeon fees split up based on Basic , Advanced & Overseas // - Old Dungeon fee system removed, all dungeon fees now set to 0 //-2.0b // - Special warpname menu option name bug fixed //-2.1 Updated names to fall within retrictions. [L0ne_W0lf] //-2.2 #kafra_code is now stored as is. [brianluau] //================================================================= //========================Function=&=Script======================== function script Q_Warpra { // Quick hack for backwards compatibility pre 1.8 if (##QWS_UP < 18) callfunc "QWS_BackComp"; // Extra clear variables because marker is saved on all char servers and variables can be on multiple servers if (QWS_ExtraVARClear < 18) callfunc "Extra_Variable_Clear"; mes "[Warpra]"; mes ( isday() ? "Bonjour" : "Bonsoir" ) + "."; mes "Nos services proposent la téléportation instantanée vers un lieu que vous avez déjà visité."; mes "En quoi puis-je vous être utile?"; if(getarg(0) == 0) callfunc "QWS_MMarray",0; if(getarg(0) == 1) callfunc "QWS_MMarray",1; set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]); switch(@Mmenuref[@MMenu-1]+1){ case 1: goto GM_Menu; case 2: warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY; close2; debugmes "Veuillez sélectionner vos préférences."; end; case 3: goto L_town; case 4: goto L_dungeon; case 5: goto L_FewWarps; case 6: goto L_NoUnlock; case 7: goto L_heal_Full; case 8: goto L_heal_Part; case 9: goto L_Storage; case 10: goto L_GStorage; case 11: goto L_end; default: goto L_end; } //=====================GM-Menu=Functions=========================== GM_Menu: next; //----------------Town-Warp if ($QW_TW_OFF == 0) mes "Téléportation vers des Villes = ^00FF00 Activée ^000000"; if ($QW_TW_OFF == 1) mes "Téléportation vers des Villes = ^FF0000 Désactivée ^000000"; //----------------Dungeon-Warp if ($QW_DW_OFF == 0) mes "Téléportation vers des Donjons = ^00FF00 Activée ^000000"; if ($QW_DW_OFF == 1) mes "Téléportation vers des Donjons = ^FF0000 Désactivée ^000000"; //----------------Dungeon-Depth-Limit if ($QW_DL == 1) mes "Limite de Profondeur dans les Donjons = ^00FF00 Activée ^000000"; if ($QW_DL == 0) mes "Limite de Profondeur dans les Donjons = ^FF0000 Désactivé ^000000"; mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; //----------------ShowMapUsers if ($QW_MapUserShow == 1) mes "Voir les Joueurs sur une Carte = ^00FF00 Activé ^000000"; if ($QW_MapUserShow == 0) mes "Voir les Joueurs sur une Carte = ^FF0000 Désactivé ^000000"; //----------------Healfull if ($QW_HF == 1) mes "Soin Complet = ^00FF00 Activé ^000000"; //----------------Healpart if ($QW_HP == 1) mes "Soin Partiel = ^00FF00 Activé ^000000"; if (($QW_HF == 0)&&($QW_HP == 0)) mes "Soin Partiel = ^FF0000 Désactivé ^000000"; //----------------Storage if ($QW_Stor == 1) mes "Stock = ^00FF00 Activé ^000000"; if ($QW_Stor == 0) mes "Stock = ^FF0000 Désactivé ^000000"; //----------------GuildStorage if ($QW_GStor == 1) mes "Stock de Guilde = ^00FF00 Activé ^000000"; if ($QW_GStor == 0) mes "Stock de Guilde = ^FF0000 Désactivé ^000000"; //----------------KafraPoints if ($QW_KPoint == 1) mes "Recevoir des points Kafra = ^00FF00 Activé ^000000"; if ($QW_KPoint == 0) mes "Recevoir des points Kafra = ^FF0000 Désactivé ^000000"; //----------------GMmenu switch(select("Téléportation vers des Villes","Téléportation vers des Donjons","Limite de Profondeur dans les Donjons","Voir les Joueurs sur une Carte","Soin Complet","Soin Partiel","Stock","Stock de Guilde","Recevoir des points Kafra","Fixer les Prix","Téléportation Spéciale","Annuler")) { // Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again case 1: if ($QW_TW_OFF == 0) { set $QW_TW_OFF,1; goto GM_Menu; } else set $QW_TW_OFF,0; goto GM_Menu; case 2: if ($QW_DW_OFF == 0) { set $QW_DW_OFF,1; goto GM_Menu; } else set $QW_DW_OFF,0; goto GM_Menu; case 3: goto DungeonLevelLimit; case 4: if ($QW_MapUserShow == 0) { set $QW_MapUserShow,1; goto GM_Menu; } else set $QW_MapUserShow,0; goto GM_Menu; case 5: if ($QW_HF == 0) { set $QW_HF,1; set $QW_HP,0; goto GM_Menu; } else set $QW_HF,0; goto GM_Menu; case 6: if ($QW_HP == 0) { set $QW_HP,1; set $QW_HF,0; goto GM_Menu; } else set $QW_HP,0; goto GM_Menu; case 7: if ($QW_Stor == 0) { set $QW_Stor,1; goto GM_Menu; } else set $QW_Stor,0; goto GM_Menu; case 8: if ($QW_GStor == 0) { set $QW_GStor,1; goto GM_Menu; } else set $QW_GStor,0; goto GM_Menu; case 9: if ($QW_KPoint == 0) { set $QW_KPoint,1; goto GM_Menu; } else set $QW_KPoint,0; goto GM_Menu; case 10: goto Setprice; case 11: goto SpecialWarpMenu; default: close; end; } //======================GM-Menu=Pricing============================ Setprice: if ($QW_DW_FEE != 0) set $QW_DW_FEE,0; next; mes "Voici les différentes options:"; //----------------Warp-Basic-Price if ($QW_BW_PRICE != 0) mes "Lieux de Base = ^00FF00 "+$QW_BW_PRICE+" ^000000"; if ($QW_BW_PRICE == 0) mes "Lieux de Base = ^FF0000 Gratuit ^000000"; //----------------Warp-Advanced-Price if ($QW_AW_PRICE != 0) mes "Lieux Avancés = ^00FF00 "+$QW_AW_PRICE+" ^000000"; if ($QW_AW_PRICE == 0) mes "Lieux Avancés = ^FF0000 Gratuit ^000000"; //----------------Warp-Oversea-Price if ($QW_OW_PRICE != 0) mes "Lieux d'Outre-Mer = ^00FF00 "+$QW_OW_PRICE+" ^000000"; if ($QW_OW_PRICE == 0) mes "Lieux d'Outre-Mer = ^FF0000 Gratuit ^000000"; //----------------Basic-Dungeon-Level-Warp-Fee if ($QW_BW_FEE != 0) mes "Donjons de Base (par niveau) = ^00FF00 "+$QW_BW_FEE+" ^000000 Zenys par Niveau"; if ($QW_BW_FEE == 0) mes "Donjons de Base (par niveau) = ^FF0000 Aucun ^000000 Zenys par Niveau"; //----------------Advanced-Dungeon-Level-Warp-Fee if ($QW_AW_FEE != 0) mes "Donjons Avancés (par niveau) = ^00FF00 "+$QW_AW_FEE+" ^000000 Zenys par Niveau"; if ($QW_AW_FEE == 0) mes "Donjons Avancés (par niveau) = ^FF0000 Aucun ^000000 Zenys par Niveau"; //----------------Overseas-Dungeon-Level-Warp-Fee if ($QW_OW_FEE != 0) mes "Donjons d'Outre-Mer (par niveau) = ^00FF00 "+$QW_OW_FEE+" ^000000 Zenys par Niveau"; if ($QW_OW_FEE == 0) mes "Donjons d'Outre-Mer (par niveau) = ^FF0000 Aucun ^000000 Zenys par Niveau"; //----------------Heal-Full if ($QW_HF_PRICE != 0) mes "Soin Complet = ^00FF00 "+$QW_HF_PRICE+" ^000000"; if ($QW_HF_PRICE == 0) mes "Soin Complet = ^FF0000 Gratuit ^000000"; //----------------Heal-Part if ($QW_HP_H_PRICE != 0) mes "Soin Partiel des ^FF0000HP ^000000 = ^00FF00 = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point"; if ($QW_HP_H_PRICE == 0) mes "Soin Partiel des ^FF0000HP ^000000 = ^00FF00 = ^FF0000 Free ^000000"; if ($QW_HP_S_PRICE != 0) mes "Soin Partiel des ^0000FFSP ^000000 = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point"; if ($QW_HP_S_PRICE == 0) mes "Soin Partiel des ^0000FFSP ^000000 = ^FF0000 Free ^000000"; //----------------Storage if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Stock = ^00FF00 "+$QW_S_PRICE+" ^000000"; if ($QW_S_PRICE == 0) mes "Stock = ^FF0000 Gratuit ^000000"; if ($QW_S_PRICE == 60) mes "Stock = ^0000FF Prix Kafra ^000000"; //----------------Guild-Storage if ($QW_GS_PRICE != 0) mes "Stock de Guilde = ^00FF00 "+$QW_GS_PRICE+" ^000000"; if ($QW_GS_PRICE == 0) mes "Stock de Guilde = ^FF0000 Gratuit ^000000"; switch(select("Lieux de Base","Lieux Avancés","Lieux d'Outre-Mer","Donjons de Base","Donjons Avancés","Donjons d'Outre-Mer","Soin Complet","Soin Partiel","Stock","Stock de Guilde","Retour","Annuler")) { case 1: next; if ($QW_BW_PRICE != 0) mes "Lieux de Base = ^00FF00 "+$QW_BW_PRICE+" ^000000"; if ($QW_BW_PRICE == 0) mes "Lieux de Base = ^FF0000 Gratuit ^000000"; mes "Les Lieux de Base sont les villes de départ et les donjons proches."; input $QW_BW_PRICE; goto Setprice; case 2: next; if ($QW_AW_PRICE != 0) mes "Lieux Avancés = ^00FF00 "+$QW_AW_PRICE+" ^000000"; if ($QW_AW_PRICE == 0) mes "Lieux Avancés = ^FF0000 Gratuit ^000000"; mes "Les Lieux Avancés sont les villes et donjons situés sur des îles, ou éloignés de villes de départ."; input $QW_AW_PRICE; goto Setprice; case 3: next; if ($QW_OW_PRICE != 0) mes "Lieux d'Outre-Mer = ^00FF00 "+$QW_OW_PRICE+" ^000000"; if ($QW_OW_PRICE == 0) mes "Lieux d'Outre-Mer = ^FF0000 Gratuit ^000000"; mes "Les Lieux d'Outre-Mer sont les villes ou donjons situés outre-mer, que l'on peut rejoindre en empruntant un bateau à Alberta."; input $QW_OW_PRICE; goto Setprice; case 4: next; if ($QW_BW_FEE != 0) mes "Donjons de Base = ^00FF00 "+$QW_BW_FEE+" ^000000 Zenys par Niveau"; if ($QW_BW_FEE == 0) mes "Donjons de Base = ^FF0000 Aucun ^000000 Zenys par Niveau"; mes "Les Donjons de Base sont les donjons situés proches de villes de départ."; mes "Le Prix augmente suivant la profondeur du Niveau choisi."; input $QW_BW_FEE; goto Setprice; case 5: next; if ($QW_AW_FEE != 0) mes "Donjons Avancés = ^00FF00 "+$QW_AW_FEE+" ^000000 Zenys par Niveau"; if ($QW_AW_FEE == 0) mes "Donjons Avancés = ^FF0000 Aucun ^000000 Zenys par Niveau"; mes "Les Donjons Avancés sont les donjons éloignés de villes de départ."; mes "Le Prix augmente suivant la profondeur du Niveau choisi."; input $QW_AW_FEE; goto Setprice; case 6: next; if ($QW_OW_FEE != 0) mes "Donjons d'Outre-Mer = ^00FF00 "+$QW_OW_FEE+" ^000000 Zenys par Niveau"; if ($QW_OW_FEE == 0) mes "Donjons d'Outre-Mer = ^FF0000 Aucun ^000000 Zenys par Niveau"; mes "Les Donjons d'Outre-Mer sont les donjons situés outre-mer, que l'on peut rejoindre en empruntant un bateau à Alberta."; mes "Le Prix augmente suivant la profondeur du Niveau choisi."; input $QW_OW_FEE; goto Setprice; case 7: next; if ($QW_HF_PRICE != 0) mes "Soin Complet = ^00FF00 "+$QW_HF_PRICE+" ^000000"; if ($QW_HF_PRICE == 0) mes "Soin Complet = ^FF0000 Gratuit ^000000"; mes "Prix du Soin Complet instantané."; input $QW_HF_PRICE; goto Setprice; case 8: next; if ($QW_HP_H_PRICE != 0) mes "Soin Partiel des ^FF0000HP ^000000 = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 par point"; if ($QW_HP_H_PRICE == 0) mes "Soin Partiel des ^FF0000HP ^000000 = ^FF0000 Gratuit ^000000"; if ($QW_HP_S_PRICE != 0) mes "Soin Partiel des ^0000FFSP ^000000 = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 par point"; if ($QW_HP_S_PRICE == 0) mes "Soin Partiel des ^0000FFSP ^000000 = ^FF0000 Gratuit ^000000"; mes "Soin de 1 HP contre le prix indiqué."; mes "Soin de 1 SP contre le prix indiqué."; mes "Deux prix à entrer, le premier pour les HP, le second pour les SP."; input $QW_HP_H_PRICE; input $QW_HP_S_PRICE; goto Setprice; case 9: next; if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Stock = ^00FF00 "+$QW_S_PRICE+" ^000000"; if ($QW_S_PRICE == 0) mes "Stock = ^FF0000 Gratuit ^000000"; if ($QW_S_PRICE == 60) mes "Stock = ^0000FF Prix Kafra ^000000"; mes "Coût du Stock (60 est le coût normal d'une Kafra)."; input $QW_S_PRICE; goto Setprice; case 10: next; if ($QW_GS_PRICE != 0) mes "Stock de Guilde = ^00FF00 "+$QW_GS_PRICE+" ^000000"; if ($QW_GS_PRICE == 0) mes "Stock de Guilde = ^FF0000 Gratuit ^000000"; mes "Coût du Stock de Guilde (gratuit auprès des Kafras de Guilde)."; input $QW_GS_PRICE; goto Setprice; case 11: goto GM_Menu; default: close; end; } //======================Special=Warp=Menu========================== SpecialWarpMenu: if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Lieu Spécial"; next; mes "L'option de Téléportation Spéciale s'activera dans le menu quand toutes les villes et les donjons auront été débloqués par le joueur, et si un Lieux Spécial a été indiqué par le GameMaster."; mes "L'option du Menu actuel apparaît comme: ^0000FF"+$QW_SP_Warpname$+"^000000"; if ($QW_SP_WarpMap$ == "") mes "Le Lieu Spécial n'a ^FF0000pas^000000 encore été défini, et le menu de Téléportation Spéciale est Désactivé."; if ($QW_SP_WarpMap$ != "") mes "Le Lieu Spécial est actuellement défini comme ^0000FF"+$QW_SP_WarpMap$+"^000000 et le menu de Téléportation Spéciale est Activé."; mes "Les coordonnées sur ce Lieu Spécial sont ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000"; switch(select("Définir le Nom du Lieu Spécial", "Définir le Lieu Spécial","Définir les Coordonées","Retour","Annuler")){ case 1: next; mes "Entrez le nom qui apparaîtra en tant qu'option dans le Menu."; input $QW_SP_Warpname$; goto SpecialWarpMenu; case 2: next; mes "Entrez le nom de la carte ainsi: ^0000FFnomedelacarte^000000."; mes "Si vous souhaitez retirer cette destination, effacez le nom de la carte!"; input $QW_SP_WarpMap$; goto SpecialWarpMenu; case 3: next; mes "Première Entrée = Coordonnée en X"; mes "Deuxième Entrée = Coordonnée en Y"; input $QW_SP_WarpX; input $QW_SP_WarpY; goto SpecialWarpMenu; case 4: goto GM_Menu; default: close; end; } //======================Dungeon=Level=Limit======================== DungeonLevelLimit: next; if ($QW_DL == 1) mes "La limite de Profondeur dans les Donjons est ^00FF00 Activée ^000000"; if ($QW_DL == 0) mes "La limite de Profondeur dans les Donjons est ^FF0000 Désactivée ^000000"; mes "Si ^00FF00 Activée ^000000, la limite est à ^0000FF"+$QW_DDL+"^000000"; switch(select("Modifier l'activation de la Limite", "Définir la Limite de Profondeur","Retour","Annuler")){ case 1: if ($QW_DL == 0) { set $QW_DL,1; goto DungeonLevelLimit; } else set $QW_DL,0; goto DungeonLevelLimit; case 2: next; mes "Entrez la limite de profondeur des donjons: 0 = entrée"; mes "Une profondeur de 1 correspond à une carte connectée à une carte au niveau 0 etc."; mes "Les trajets les plus courts sont pris en compte lors du décompte de la profondeur."; input $QW_DDL; goto DungeonLevelLimit; case 3: goto GM_Menu; default: close; end; } //===========================Towns================================= L_town: callfunc "QWS_Tarray"; // Expected maximum is set to 25 items, if you add more options add more ",@Tmenulist$[xx]" set @TWMenu,select(@Tmenulist$[0],@Tmenulist$[1],@Tmenulist$[2],@Tmenulist$[3],@Tmenulist$[4],@Tmenulist$[5],@Tmenulist$[6],@Tmenulist$[7],@Tmenulist$[8],@Tmenulist$[9],@Tmenulist$[10],@Tmenulist$[11],@Tmenulist$[12],@Tmenulist$[13],@Tmenulist$[14],@Tmenulist$[15],@Tmenulist$[16],@Tmenulist$[17],@Tmenulist$[18],@Tmenulist$[19],@Tmenulist$[20],@Tmenulist$[21],@Tmenulist$[22],@Tmenulist$[23],@Tmenulist$[24]); if (@Tmenuref[@TWMenu-1] == 57005) goto L_end; // 57005='dead' in hex if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0; set Zeny, Zeny-@pTprice[@Tmenuref[@TWMenu-1]]; if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16); warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]]; close2; // this part safegaurds against errors/typos set Zeny, Zeny+@pTprice[@Tmenuref[@TWMenu-1]]; end; //=========================Dungeons================================ L_dungeon: callfunc "QWS_Darray"; // Expected maximum is set to 35 items, if you add more options add more ",@Dmenulist$[xx]" set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27],@Dmenulist$[28],@Dmenulist$[29],@Dmenulist$[30],@Dmenulist$[31],@Dmenulist$[32],@Dmenulist$[33],@Dmenulist$[34]); if (@Dmenuref[@DWMenu-1] == 57005) goto L_end; // 57005='dead' in hex set @DwarpMenu, (@Dmenuref[@DWMenu-1]); callfunc "QWS_DLarray"; next; mes "[Warpra]"; mes "Où souhaitez-vous aller?"; // Expected maximum is set to 18 items, if you have dungeons with more levels add more ",@DWLmenulist$[xx]" set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]); if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_end; // 57005='dead' in hex set @Darrayref, @DWLmenuref[@DWLMenu-1]; set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref])); if(Zeny<@warpprice) callsub L_Short_on_zeny,1; set Zeny, Zeny-(@warpprice); if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16); warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref]; close2; // this part safegaurds against errors/typos set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]]; end; //=============================Healing============================= L_heal_Full: set @healfee, $QW_HF_PRICE; if(Zeny<@healfee) callsub L_Short_on_zeny,4; set Zeny, Zeny-@healfee; if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500); next; mes "[Warpra]"; mes "Fermez cette fenêtre afin d'être soigné."; close2; percentheal 100,100; end; L_heal_Part: set @healchoice,select("Soin Complet","Soin des Points de Vie","Soin des Points de Magie","Annuler"); if (@healchoice == 1) callsub PHeal,1,1; if (@healchoice == 2) callsub PHeal,1,0; if (@healchoice == 3) callsub PHeal,0,1; goto L_end; PHeal: next; set @Hp, MaxHp-Hp; set @Sp, MaxSp-Sp; set @HpPrice, @hp*$QW_HP_H_PRICE; set @SpPrice, @sp*$QW_HP_S_PRICE; mes "[Warpra]"; if(getarg(0) == 1) mes ""+@HpPrice+" Zenys pour "+@Hp+" Points de Vie"; if(getarg(1) == 1) mes ""+@SpPrice+" Zenys pour "+@Sp+" Points de Magie"; set @total, @HpPrice+@SpPrice; mes "pour un total de "+@total+" Zenys."; if (select("Se Soigner","Revoir les Choix")==2) goto L_heal_Part; if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE; if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE; set @healfee, @HpPrice+@SpPrice; if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both; if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP; if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP; set Zeny, Zeny-@healfee; if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100; if (getarg(0) == 1) percentheal 100,0; if (getarg(1) == 1) percentheal 0,100; close; end; Zeny_Short_Both: mes "[Warpra]"; mes "Vous n'avez pas assez d'argent pour ce soin."; mes "Je peux vous soigner du mieux que je peux, en fonction de votre argent disponible."; if (select("D'accord","Non merci") == 2) goto L_end; goto PHeal; Zeny_short_HP: mes "[Warpra]"; mes "Souhaitez-vous un soin partiel de vos Points de Vie?"; if (select("Oui","Non") == 2) goto L_end; set @Hp, Zeny/$QW_HP_H_PRICE; set @HpPrice, @Hp*$QW_HP_H_PRICE; if (@Hp == 1) mes "Est-ce vraiment nécessaire?"; if (@Hp == 1) goto L_end; set Zeny, Zeny-@HpPrice; heal @Hp,0; close; end; Zeny_short_SP: mes "[Warpra]"; mes "Souhaitez-vous un soin partiel de vos Points de Magie?"; if (select("Oui","Non") == 2) goto L_end; set @Sp, Zeny/$QW_HP_S_PRICE; set @SpPrice, @Sp*$QW_HP_S_PRICE; if (@Sp == 1) mes "Est-ce vraiment nécessaire?"; if (@Sp == 1) goto L_end; set Zeny, Zeny-@SpPrice; heal 0,@Sp; close; end; //=============================Storage============================= L_Storage: next; if(basicskillcheck() > 0 && getskilllv("NV_BASIC") < 6) goto L_StorageJBlow; set @fee, $QW_S_PRICE; if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30; if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60; if(Zeny<@fee) callsub L_Short_on_zeny,2; set Zeny, Zeny-@fee; if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5); mes "[Warpra]"; mes "Fermez cette fenêtre afin d'accéder à votre Stock."; callsub F_CheckKafCode; //check your storage password thru kafra coding, if set close2; openstorage; end; F_CheckKafCode: if(#kafra_code==0) return; mes "Entrez le mot de passe de votre Stock:"; set @code_,0; input @code_; if(@code_ != #kafra_code) { dispbottom "Mauvais mot de passe."; close; } set @kafcode_try,0; set @code_,0; return; L_StorageJBlow: mes "[Warpra]"; mes "Je suis désolée, mais vous devez avoir atteint le Niveau de Métier 6 en tant que Novice afin de pouvoir accéder au Service de Stock."; return; L_GStorage: if(@GID==0) goto L_NoGuild; if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3; set Zeny, Zeny-$QW_GS_PRICE; if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5); next; mes "[Warpra]"; mes "Fermez cette fenêtre afin d'accéder au Stock de la Guilde ^5533FF" + GetGuildName(@GID) + "^000000."; close2; guildopenstorage; end; L_NoGuild: next; mes "[Warpra]"; mes "Vous ne faites pas partie d'une Guilde."; close; end; L_end: close; end; //============================Few=Warp============================= L_FewWarps: next; mes "[Warpra]"; mes "Vous devez d'abord avoir visité certains lieux avant de pouvoir y être téléporté."; mes "Pour ce faire, adressez-vous simplement à mes collègues partout dans le monde."; mes "Chaque fois que vous leur parlerez, la destination sera débloquée."; mes "Voulez-vous savoir combien de destinations vous avez déjà visité?"; if (select("Oui","Non")==1) callsub stampcard; close; end; //============================No=Unlock============================ L_NoUnlock: next; mes "[Warpra]"; mes "Je ne peux pas débloquer ce lieu. Adressez-vous à l'une de mes assistantes, située plus loin dans le Donjon."; close; end; //=========================Short=On=Zeny=========================== L_Short_on_zeny: next; if (getarg(0) == 0) mes "Vous n'avez pas les "+@pTprice[@Tmenuref[@TWMenu-1]]+" Zenys nécessaires pour la téléportation vers "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+""; if (getarg(0) == 1) mes "Vous n'avez pas les "+@warpprice+" Zenys nécessaires pour la téléportation vers "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+""; if (getarg(0) == 2) mes "Vous n'avez pas les "+@fee+" Zenys nécessaires pour l'ouverture du Stock."; if (getarg(0) == 3) mes "Vous n'avez pas les "+$QW_GS_PRICE+" Zenys nécessaires pour l'ouverture du Stock de Guilde."; if (getarg(0) == 4) mes "Vous n'avez pas les "+@healfee+" Zenys nécessaires pour vos soins."; close; end; //===========================Stamp=Card============================ stampcard: // Counting of the ammount of places you have unlocked next; mes "Voyons voir le nombre de Villes que vous avez débloquées."; callfunc "QWS_TownStamps"; mes "Vous avez débloqué^00FF00 "+@Tstamp+" sur "+@MaxTstamp+" ^000000Villes."; if (@Tstamp == 15) mes "Il paraît qu'il existe une île sur laquelle seuls les couples mariés sont autorisés!"; if (@Tstamp == 15) emotion 18; next; mes "Voyons voir le nombre de Donjons que vous avez débloqués."; callfunc "QWS_DungeonStamps"; mes "Vous avez débloqué^00FF00 "+@Dstamp+" sur "+@MaxDstamp+" ^000000Donjons"; mes "Pour débloquer un Donjon, il vous faudra trouver l'une de mes Assistantes. Elles sont en général situées au milieu des Donjons."; return; } function script QWS_TownStamps { set @Tstamp,0; set @MaxTstamp,21; //maximum number of towns set @binvalue,1; set @Tstamploop,0; do { if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1; set @binvalue, @binvalue *2; set @Tstamploop, @Tstamploop + 1; }while (@Tstamploop < @MaxTstamp); return; } function script QWS_DungeonStamps { set @Dstamp,0; set @MaxDstamp,29; //maximum number of dungeons set @binvalue,1; set @Dstamploop,0; do { if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1; set @binvalue, @binvalue *2; set @Dstamploop, @Dstamploop + 1; }while (@Dstamploop < @MaxDstamp); return; } //======================Main=Menu=Array============================ function script QWS_MMarray { // Currently 9 items setarray @pMmenuitems$[0], "Menu du GameMaster", $QW_SP_Warpname$, "Téléportation vers des Villes", "Téléportation vers des Donjons", "Destinations Bloquées?", "Pouvez-vous débloquer ce lieu?", "Soin", "Soin", "Stock", "Stock de Guilde", "Annuler"; set @Mi,0; // That's our loop counter. set @Mj,0; // That's the menu lines counter. //----------------GameMaster-Menu if (getgmlevel()>= 80) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if (getgmlevel()>= 80) set @Mmenuref[@Mj],@Mi; if (getgmlevel()>= 80) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Special-Warp callfunc "QWS_TownStamps"; callfunc "QWS_DungeonStamps"; if (@Tstamp == @MaxTstamp)&&(@Dstamp == @MaxDstamp)&&($QW_SP_WarpMap$ != "") { set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; set @Mmenuref[@Mj],@Mi; set @Mj,@Mj+1; } set @Mi,@Mi+1; //----------------Town-Warp if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi; if ($QW_TW_OFF == 0) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Dungeon-Warp if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi; if ($QW_DW_OFF == 0) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Why-So-Few-Warps set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; set @Mmenuref[@Mj],@Mi; set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------No-Unlock if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi; if (getarg(0) == 1) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Healfull if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi; if ($QW_HF == 1) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Healpart if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi; if ($QW_HP == 1) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Storage if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi; if ($QW_Stor == 1) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------GuildStorage if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi; if ($QW_GStor == 1) set @Mj,@Mj+1; set @Mi,@Mi+1; //----------------Cancel set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; set @Mmenuref[@Mj],@Mi; return; } //======================Town=Menu=Array============================ //----------------Prontera // I do this to find back sections quickly altho almost the same name is a line below it now // setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu // setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) // // setarray @pTmap$[@Ti], "prontera"; // mapfilename of town // setarray @pTXcoords[@Ti], 156; // X warp coords // setarray @pTYcoords[@Ti], 187; // Y warp coords // // QWS_Make_Town_Menu XXX; // // the full wap commands send out by this script for these example would be //warp example_01 123 123 // // use the same XXX number as you used when making your own town warpra // Read below how // // example: // //syntax: //mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ // // Full example using fake map & coords // //example_01,213,213,4 script Warpra 112,{ // callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE"; // close; // } // use a free number for XXX, last used is 20, for Yuno function script QWS_Tarray { function QWS_Make_Town_Menu; set @Ti,0; // That's our loop counter. set @Tj,0; // That's the menu lines counter. //----------------Prontera setarray @pTmenuitems$[@Ti], "Prontera"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "prontera"; setarray @pTXcoords[@Ti], 156; setarray @pTYcoords[@Ti], 187; QWS_Make_Town_Menu 0; //----------------Alberta setarray @pTmenuitems$[@Ti], "Alberta"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "alberta"; setarray @pTXcoords[@Ti], 27; setarray @pTYcoords[@Ti], 236; QWS_Make_Town_Menu 1; //----------------Aldebaran setarray @pTmenuitems$[@Ti], "Al De Baran"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "aldebaran"; setarray @pTXcoords[@Ti], 145; setarray @pTYcoords[@Ti], 120; QWS_Make_Town_Menu 2; //----------------Amatsu: setarray @pTmenuitems$[@Ti], "Amatsu"; setarray @pTprice[@Ti], $QW_OW_PRICE; setarray @pTmap$[@Ti], "amatsu"; setarray @pTXcoords[@Ti], 197; setarray @pTYcoords[@Ti], 86; QWS_Make_Town_Menu 3; //----------------Ayothaya: setarray @pTmenuitems$[@Ti], "Ayothaya"; setarray @pTprice[@Ti], $QW_OW_PRICE; setarray @pTmap$[@Ti], "ayothaya"; setarray @pTXcoords[@Ti], 150; setarray @pTYcoords[@Ti], 57; QWS_Make_Town_Menu 4; //----------------Comodo: setarray @pTmenuitems$[@Ti], "Comodo"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "comodo"; setarray @pTXcoords[@Ti], 188; setarray @pTYcoords[@Ti], 161; QWS_Make_Town_Menu 5; //----------------Einbech: setarray @pTmenuitems$[@Ti], "Einbech"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "einbech"; setarray @pTXcoords[@Ti], 172; setarray @pTYcoords[@Ti], 126; QWS_Make_Town_Menu 6; //----------------Einbroch: setarray @pTmenuitems$[@Ti], "Einbroch"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "einbroch"; setarray @pTXcoords[@Ti], 230; setarray @pTYcoords[@Ti], 191; QWS_Make_Town_Menu 7; //----------------Geffen: setarray @pTmenuitems$[@Ti], "Geffen"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "geffen"; setarray @pTXcoords[@Ti], 119; setarray @pTYcoords[@Ti], 66; QWS_Make_Town_Menu 8; //----------------Gonryun: setarray @pTmenuitems$[@Ti], "Gonryun"; setarray @pTprice[@Ti], $QW_OW_PRICE; setarray @pTmap$[@Ti], "gonryun"; setarray @pTXcoords[@Ti], 150; setarray @pTYcoords[@Ti], 130; QWS_Make_Town_Menu 9; //----------------Hugel: setarray @pTmenuitems$[@Ti], "Hugel"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "hugel"; setarray @pTXcoords[@Ti], 95; setarray @pTYcoords[@Ti], 121; QWS_Make_Town_Menu 10; //----------------Izlude: setarray @pTmenuitems$[@Ti], "Izlude"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "izlude"; setarray @pTXcoords[@Ti], 128; setarray @pTYcoords[@Ti], 111; QWS_Make_Town_Menu 11; //----------------Jawaii: setarray @pTmenuitems$[@Ti], "Jawaii"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "jawaii"; setarray @pTXcoords[@Ti], 243; setarray @pTYcoords[@Ti], 115; QWS_Make_Town_Menu 12; //----------------Lighthalzen: setarray @pTmenuitems$[@Ti], "Lighthalzen"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "lighthalzen"; setarray @pTXcoords[@Ti], 158; setarray @pTYcoords[@Ti], 110; QWS_Make_Town_Menu 13; //----------------Louyang: setarray @pTmenuitems$[@Ti], "Louyang"; setarray @pTprice[@Ti], $QW_OW_PRICE; setarray @pTmap$[@Ti], "louyang"; setarray @pTXcoords[@Ti], 210; setarray @pTYcoords[@Ti], 108; QWS_Make_Town_Menu 14; //----------------Lutie setarray @pTmenuitems$[@Ti], "Lutie"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "xmas"; setarray @pTXcoords[@Ti], 148; setarray @pTYcoords[@Ti], 131; QWS_Make_Town_Menu 15; //----------------Morroc: setarray @pTmenuitems$[@Ti], "Morroc"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "morocc"; setarray @pTXcoords[@Ti], 159; setarray @pTYcoords[@Ti], 93; QWS_Make_Town_Menu 16; //----------------Niflheim: setarray @pTmenuitems$[@Ti], "Niflheim"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "niflheim"; setarray @pTXcoords[@Ti], 195; setarray @pTYcoords[@Ti], 186; QWS_Make_Town_Menu 17; //----------------Payon: setarray @pTmenuitems$[@Ti], "Payon"; setarray @pTprice[@Ti], $QW_BW_PRICE; setarray @pTmap$[@Ti], "payon"; setarray @pTXcoords[@Ti], 152; setarray @pTYcoords[@Ti], 75; QWS_Make_Town_Menu 18; //----------------Umbala: setarray @pTmenuitems$[@Ti], "Umbala"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "umbala"; setarray @pTXcoords[@Ti], 130; setarray @pTYcoords[@Ti], 130; QWS_Make_Town_Menu 19; //----------------Yuno: setarray @pTmenuitems$[@Ti], "Yuno"; setarray @pTprice[@Ti], $QW_AW_PRICE; setarray @pTmap$[@Ti], "yuno"; setarray @pTXcoords[@Ti], 160; setarray @pTYcoords[@Ti], 168; QWS_Make_Town_Menu 20; //----------------Cancel setarray @pTmenuitems$[@Ti], "Annuler"; setarray @pTprice[@Ti], 0; set @Tmenulist$[@Tj],@pTmenuitems$[@Ti]; set @Tmenuref[@Tj],57005; // 57005='dead' in hex return; //----------------Make Town Menu Function function QWS_Make_Town_Menu { set @temptownmenubin,1; if (getarg(0) == 0) goto menu_item; set @templooptownmenu,0; do { set @temptownmenubin, @temptownmenubin * 2; set @templooptownmenu, @templooptownmenu + 1; }while (getarg(0) > @templooptownmenu); // check marker and make menu item menu_item: if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) { set @Ti,@Ti+1; return; } if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti]; if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]; if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti]; if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"; set @Tmenuref[@Tj],@Ti; set @Tj,@Tj+1; set @Ti,@Ti+1; return; } } //====================Dungeon=Menu=Arrays========================== //----------------A FAKE DUNGEON FOR EXAMPLE // I do this to find back sections quickly altho almost the same name is a line below it now // setarray @pDmenuitems$[@Di], "Fake Dungeon"; // Name of Dungeon shown in Dungeon select Menu // setarray @pDprice[@Di], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) // setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "") // setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!) // // setarray @DGat$[@Dref], "example_01", "example_02"; // mapfilename of dungeon level // setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select // setarray @DXcoords[@Dref], 123, 234; // X warp coords // setarray @DYcoords[@Dref], 123, 234;// Y warp coords // setarray @DDepth[@Dref], 0, 1; // relative depth to entrance to calculate extra warp fee // // QWS_Make_Dungeon_Menu XXX // // the full wap commands send out by this scripts for these examples would be // for Example Level 1: //warp example_01 123 123 // // for Example Level 2: //warp example_02 234 234 // // use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon // (usually half way near a warp to next level) // Read below how // // example: // //syntax: //mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ // // Full example using fake map & coords // //example_01,213,213,4 script Warpra Helper 112,{ // callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE"; // close; // } // use a free number for XXX, last used is 28, for Kiel Dungeon function script QWS_Darray { function QWS_Make_Dungeon_Menu; set @Di,0; set @Dj,0; set @Dref,0; //----------------ABYSS LAKE setarray @pDmenuitems$[@Di], "Lac des Abysses"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 265, 275, 116; setarray @DYcoords[@Dref], 273, 270, 27; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 0; //----------------AMATSU DUNGEON setarray @pDmenuitems$[@Di], "Donjon d'Amatsu"; setarray @pDprice[@Di], $QW_OW_PRICE; setarray @pDfee$[@Di], "$QW_OW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "ama_dun01", "ama_dun02", "ama_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 227, 32, 119; setarray @DYcoords[@Dref], 10, 43, 15; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 1; //----------------ANT HELL setarray @pDmenuitems$[@Di], "L'Enfer des Fourmis"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[2], 2; setarray @DGat$[@Dref], "anthell01", "anthell02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 32, 34; setarray @DYcoords[@Dref], 262, 263; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 2; //----------------AYOTAYA setarray @pDmenuitems$[@Di], "Temple d'Ayothaya"; setarray @pDprice[@Di], $QW_OW_PRICE; setarray @pDfee$[@Di], "$QW_OW_FEE"; setarray @DLevels[3], 2; setarray @DGat$[@Dref], "ayo_dun01", "ayo_dun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 275, 150; setarray @DYcoords[@Dref], 17, 13; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 3; //----------------BYALAN setarray @pDmenuitems$[@Di], "Île de Byalan"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[4], 5; setarray @DGat$[@Dref], "iz_dun00", "iz_dun01", "iz_dun02", "iz_dun03", "iz_dun04"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Niveau 5"; setarray @DXcoords[@Dref], 168, 41, 236, 32, 26; setarray @DYcoords[@Dref], 168, 37, 204, 63, 27; setarray @DDepth[@Dref], 0, 1, 2, 3, 4; QWS_Make_Dungeon_Menu 4; //----------------CLOCK TOWER setarray @pDmenuitems$[@Di], "Tour de l'Horloge"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[5], 8; setarray @DGat$[@Dref], "c_tower1", "c_tower2", "c_tower3", "c_tower4", "alde_dun01", "alde_dun02", "alde_dun03", "alde_dun04"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Sous sol 1F", "Sous sol 2F", "Sous sol 3F", "Sous sol 4F"; setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 122; setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 125; setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4; QWS_Make_Dungeon_Menu 5; //----------------COAL MINE setarray @pDmenuitems$[@Di], "Mine de Charbon"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[6], 3; setarray @DGat$[@Dref], "mjo_dun01", "mjo_dun02", "mjo_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 52, 381, 302; setarray @DYcoords[@Dref], 17, 343, 261; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 6; //----------------CULVERT setarray @pDmenuitems$[@Di], "Égouts de Culvert"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[7], 4; setarray @DGat$[@Dref], "prt_sewb1", "prt_sewb2", "prt_sewb3", "prt_sewb4"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4"; setarray @DXcoords[@Dref], 132, 19, 180, 100; setarray @DYcoords[@Dref], 248, 19, 169, 92; setarray @DDepth[@Dref], 0, 1, 2, 3; QWS_Make_Dungeon_Menu 7; //----------------EINBECH DUNGEON setarray @pDmenuitems$[@Di], "Mines d'Einbech"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[8], 2; setarray @DGat$[@Dref], "ein_dun01", "ein_dun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 22, 292; setarray @DYcoords[@Dref], 14, 290; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 8; //----------------GEFENIA DUNGEON setarray @pDmenuitems$[@Di], "Donjon de Geffenia"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[9], 4; setarray @DGat$[@Dref], "gefenia01", "gefenia02", "gefenia03", "gefenia04"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4"; setarray @DXcoords[@Dref], 59, 201, 264, 33; setarray @DYcoords[@Dref], 167, 35, 236, 270; setarray @DDepth[@Dref], 0, 1, 2, 3; QWS_Make_Dungeon_Menu 9; //----------------GEFFEN DUNGEON setarray @pDmenuitems$[@Di], "Donjon de Geffen"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 4; setarray @DGat$[@Dref], "gef_dun00", "gef_dun01", "gef_dun02", "gef_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4"; setarray @DXcoords[@Dref], 104, 115, 106, 203; setarray @DYcoords[@Dref], 100, 236, 132, 200; setarray @DDepth[@Dref], 0, 1, 2, 3; QWS_Make_Dungeon_Menu 10; //----------------GLAST HEIM setarray @pDmenuitems$[@Di], "Glast Heim"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 17; setarray @DGat$[@Dref], "glast_01", "gl_church", "gl_chyard", "gl_in01", "gl_cas01", "gl_cas02", "gl_knt01", "gl_knt02", "gl_prison", "gl_prison1", "gl_step", "gl_sew01", "gl_sew02", "gl_sew03", "gl_sew04", "gl_dun01", "gl_dun02"; setarray @DLevelName$[@Dref], "Entrée", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2"; setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224; setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274; setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6; QWS_Make_Dungeon_Menu 11; //----------------GONRYUN DUNGEON setarray @pDmenuitems$[@Di], "Donjon de Gonryun"; setarray @pDprice[@Di], $QW_OW_PRICE; setarray @pDfee$[@Di], "$QW_OW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "gon_dun01", "gon_dun02", "gon_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 143, 17, 68; setarray @DYcoords[@Dref], 59, 114, 9; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 12; //----------------HIDDEN DUNGEON setarray @pDmenuitems$[@Di], "Temple Caché"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "prt_maze01", "prt_maze02", "prt_maze03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 176, 94, 23; setarray @DYcoords[@Dref], 6, 19, 8; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 13; //----------------JUPEROS CAVE setarray @pDmenuitems$[@Di], "Grottes de Juperos"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "juperos_01", "juperos_02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 53, 36; setarray @DYcoords[@Dref], 247, 60; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 14; //----------------KIEL DUNGEON setarray @pDmenuitems$[@Di], "Donjon de Kiehl"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "kh_dun01", "kh_dun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 63, 42; setarray @DYcoords[@Dref], 10, 197; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 28; //----------------LIGHTHALZEN BIO LAB setarray @pDmenuitems$[@Di], "Laboratoire de Lighthalzen"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "lhz_dun01", "lhz_dun02", "lhz_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 150, 150, 140; setarray @DYcoords[@Dref], 287, 18, 137; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 15; //----------------LOUYANG DUNGEON setarray @pDmenuitems$[@Di], "Tombe Royale de Louyang"; setarray @pDprice[@Di], $QW_OW_PRICE; setarray @pDfee$[@Di], "$QW_OW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "lou_dun02", "lou_dun03"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 282, 165; setarray @DYcoords[@Dref], 20, 38; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 16; //----------------MAGMA DUNGEON setarray @pDmenuitems$[@Di], "Donjon de Lave"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "mag_dun01", "mag_dun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 126, 47; setarray @DYcoords[@Dref], 69, 32; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 17; //----------------ODIN TEMPLE setarray @pDmenuitems$[@Di], "Temple d'Odin"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 1; setarray @DGat$[@Dref], "odin_tem01"; setarray @DLevelName$[@Dref], "Niveau 1"; setarray @DXcoords[@Dref], 96; setarray @DYcoords[@Dref], 145; setarray @DDepth[@Dref], 0; QWS_Make_Dungeon_Menu 18; //----------------ORC DUNGEON setarray @pDmenuitems$[@Di], "Donjon des Orcs"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "orcsdun01", "orcsdun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 32, 21; setarray @DYcoords[@Dref], 169, 185; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 19; //----------------PAYON DUNGEON setarray @pDmenuitems$[@Di], "Grottes de Payon"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 5; setarray @DGat$[@Dref], "pay_dun00", "pay_dun01", "pay_dun02", "pay_dun03", "pay_dun04"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Niveau 5"; setarray @DXcoords[@Dref], 22, 19, 19, 155, 201; setarray @DYcoords[@Dref], 180, 33, 63, 159, 204; setarray @DDepth[@Dref], 0, 1, 2, 3, 4; QWS_Make_Dungeon_Menu 20; //----------------PYRAMIDS setarray @pDmenuitems$[@Di], "Pyramides"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 6; setarray @DGat$[@Dref], "moc_pryd01", "moc_pryd02", "moc_pryd03", "moc_pryd04", "moc_pryd05", "moc_pryd06"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Sous-sol 1", "Sous-sol 2"; setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192; setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8; setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2; QWS_Make_Dungeon_Menu 21; //----------------SPHINX setarray @pDmenuitems$[@Di], "Sphinx"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 5; setarray @DGat$[@Dref], "in_sphinx1", "in_sphinx2", "in_sphinx3", "in_sphinx4", "in_sphinx5"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Niveau 5"; setarray @DXcoords[@Dref], 192, 149, 210, 10, 100; setarray @DYcoords[@Dref], 9, 81, 54, 222, 99; setarray @DDepth[@Dref], 0, 1, 2, 3, 4; QWS_Make_Dungeon_Menu 22; //----------------SUNKEN SHIP setarray @pDmenuitems$[@Di], "Bateau Echoué"; setarray @pDprice[@Di], $QW_BW_PRICE; setarray @pDfee$[@Di], "$QW_BW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "treasure01", "treasure02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 69, 102; setarray @DYcoords[@Dref], 24, 27; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 23; //----------------THANATOS TOWER setarray @pDmenuitems$[@Di], "Tour de Thanatos"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 13; setarray @DGat$[@Dref], "tha_t01", "tha_t02", "tha_t03", "tha_t04", "tha_t05", "tha_t06", "tha_t07", "tha_t08", "tha_t09", "tha_t10", "tha_t11", "tha_t12", "thana_boss"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2", "Niveau 3", "Niveau 4", "Niveau 5", "Niveau 6", "Niveau 7", "Niveau 8", "Niveau 9", "Niveau 10", "Niveau 11", "Niveau 12", "Thanatos Boss"; setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85; setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76; setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; QWS_Make_Dungeon_Menu 24; //----------------TOY FACTORY setarray @pDmenuitems$[@Di], "Fabrique de Jouets"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 2; setarray @DGat$[@Dref], "xmas", "xmas_dun02"; setarray @DLevelName$[@Dref], "Niveau 1", "Niveau 2"; setarray @DXcoords[@Dref], 205, 129; setarray @DYcoords[@Dref], 16, 133; setarray @DDepth[@Dref], 0, 1; QWS_Make_Dungeon_Menu 25; //----------------TURTLE ISTLAND setarray @pDmenuitems$[@Di], "Île des Tortues"; setarray @pDprice[@Di], $QW_AW_PRICE; setarray @pDfee$[@Di], "$QW_AW_FEE"; setarray @DLevels[@Di], 4; setarray @DGat$[@Dref], "tur_dun01", "tur_dun02", "tur_dun03", "tur_dun04"; setarray @DLevelName$[@Dref], "Entrée", "Niveau 1", "Niveau 2", "Niveau 3"; setarray @DXcoords[@Dref], 161, 148, 132, 100; setarray @DYcoords[@Dref], 34, 256, 190, 192; setarray @DDepth[@Dref], 0, 0, 1, 2; QWS_Make_Dungeon_Menu 26; //----------------UMBALA setarray @pDmenuitems$[@Di], "Donjon d'Umbala"; setarray @pDprice[@Di], $QW_OW_PRICE; setarray @pDfee$[@Di], "$QW_OW_FEE"; setarray @DLevels[@Di], 3; setarray @DGat$[@Dref], "um_dun01", "um_dun02", "yggdrasil01"; setarray @DLevelName$[@Dref], "Boutique de Carpenter", "Passage vers le Monde Etranger", "Fontaine de Hvergelmir"; setarray @DXcoords[@Dref], 205, 48, 40; setarray @DYcoords[@Dref], 26, 30, 63; setarray @DDepth[@Dref], 0, 1, 2; QWS_Make_Dungeon_Menu 27; //----------------Cancel setarray @pDmenuitems$[@Di], "Annuler"; setarray @pDprice[@Di], 0; set @Dmenulist$[@Dj],@pDmenuitems$[@Di]; set @Dmenuref[@Dj],57005; // 57005='dead' in hex return; //----------------Make Dungeon Menu Function function QWS_Make_Dungeon_Menu { set @tempdungeonmenubin,1; if (getarg(0) == 0) goto menu_item; set @temploopdungeonmenu,0; do { set @tempdungeonmenubin, @tempdungeonmenubin * 2; set @temploopdungeonmenu, @temploopdungeonmenu + 1; }while (getarg(0) > @temploopdungeonmenu); // check marker and make menu item menu_item: if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) { setarray @DLocRef[@Di], @Dref; set @Dref, @Dref+@DLevels[@Di]; set @Di,@Di+1; return; } if ($QW_MapUserShow == 1) { set @tempmapusers,0; set @mapusersloop,0; do { set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers); set @mapusersloop, (@mapusersloop + 1); }while (@DLevels[@Di] > @mapusersloop); if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di]; if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]"; set @Dmenuref[@Dj],@Di; set @Dj,@Dj+1; setarray @DLocRef[@Di], @Dref; set @Dref, @Dref+@DLevels[@Di]; set @Di,@Di+1; return; } if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di]; if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]; set @Dmenuref[@Dj],@Di; set @Dj,@Dj+1; setarray @DLocRef[@Di], @Dref; set @Dref, @Dref+@DLevels[@Di]; set @Di,@Di+1; return; } } function script QWS_DLarray { //----------------Start building Menu set @DWref,@DLocRef[@DwarpMenu]; // That's our reference to the arrays with leveldata. set @DWi,0; // That's our loop counter. set @DWj,0; // That's the menu lines counter. cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu do { if ($QW_DL == 0)||($QW_DDL >= @DDepth[@DWref]) { set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref])); if (@warpprice != 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice; if (@warpprice == 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]; if (@warpprice != 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice; if (@warpprice == 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]"; set @DWLmenuref[@DWj],@DWref; set @DWj,@DWj+1; } set @DWref, @DWref+1; set @DWi,@DWi+1; }while (@DWi < @DLevels[@DwarpMenu]); set @DWLmenulist$[@DWj], "Exit"; set @DWLmenuref[@DWj],57005; // 57005='dead' in hex return; } //=================Backwards=Compatibility=Pre=1.8================= function script QWS_BackComp { // reference where i put the towns: "Prontera"[0], "Alberta"[1], "Aldebaran"[2], "Amatsu"[3], "Ayothaya"[4], "Comodo"[5], "Einbech"[6], "Einbroch"[7], "Geffen"[8], "Gonryun"[9], "Hugel"[10], "Izlude"[11], "Jawaii"[12], "Lighthalzen"[13], "Louyang"[14], "Lutie"[15], "Morroc"[16], "Niflheim"[17], "Payon"[18], "Umbala"[19], "Yuno"[20]; // reference where i put the dungeons: "Abyss Lake"[0], "Amatsu Dungeon"[1], "Ant Hell Dungeon"[2], "Ayotaya Dungeon"[3], "Byalan Dungeon"[4], "Clock Tower Dungeon"[5], "Coal Mine Dungeon"[6], "Culvert Dungeon"[7], "Einbech Dungeon"[8], "Gefenia Dungeon"[9], "Geffen Dungeon"[10], "Glast Heim Dungeon"[11], "Gonryun Dungeon"[12], "Hidden Dungeon"[13], "Juperos Cave"[14], "Lighthalzen Bio Lab"[15], "Louyang Dungeon"[16], "Magma Dungeon"[17], "Odin Temple"[18], "Orc Dungeon"[19], "Payon Dungeon"[20], "Pyramids Dungeon"[21], "Sphinx Dungeon"[22], "Sunken Ship Dungeon"[23], "Thanatos Tower"[24], "Toy Factory Dungeon"[25], "Turtle Island Dungeon"[26], "Umbala Dungeon"[27], "Kiel Dungeon[28]; // also clears variables so that the account file variables can be used for something else variable 0 = variable delete on next save // Towns set @towntemp,0; if (#prontera != 0) set @towntemp,@towntemp + 1; if (#alberta != 0) set @towntemp,@towntemp + 2; if (#aldebaran != 0) set @towntemp,@towntemp + 4; if (#amatsu != 0) set @towntemp,@towntemp + 8; if (#ayotaya != 0) set @towntemp,@towntemp + 16; if (#comodo != 0) set @towntemp,@towntemp + 32; if (#einbech != 0) set @towntemp,@towntemp + 64; if (#einbroch != 0) set @towntemp,@towntemp + 128; if (#geffen != 0) set @towntemp,@towntemp + 256; if (#gonryun != 0) set @towntemp,@towntemp + 512; if (#hugel != 0) set @towntemp,@towntemp + 1024; if (#izlude != 0) set @towntemp,@towntemp + 2048; if (#jawaii != 0) set @towntemp,@towntemp + 4096; if (#lighthalzen != 0) set @towntemp,@towntemp + 8192; if (#louyang != 0) set @towntemp,@towntemp + 16384; if (#xmas != 0) set @towntemp,@towntemp + 32768; if (#morocc != 0) set @towntemp,@towntemp + 65536; if (#niflheim != 0) set @towntemp,@towntemp + 131072; if (#payon != 0) set @towntemp,@towntemp + 262144; if (#umbala != 0) set @towntemp,@towntemp + 524288; if (#yuno != 0) set @towntemp,@towntemp + 1048576; // Clear Town variables set #prontera,0; set #alberta,0; set #aldebaran,0; set #amatsu,0; set #ayotaya,0; set #comodo,0; set #einbech,0; set #einbroch,0; set #geffen,0; set #gonryun,0; set #hugel,0; set #izlude,0; set #jawaii,0; set #lighthalzen,0; set #louyang,0; set #xmas,0; set #morocc,0; set #niflheim,0; set #payon,0; set #umbala,0; set #yuno,0; // set Town warp unlock variable set ##QWS_T_Unlock, (##QWS_T_Unlock | @towntemp); //because multiple account servers now stack on 1 variable i used a 'or' to stack them // Dungeons set @dungeontemp,0; if (#abyss != 0) set @dungeontemp,@dungeontemp + 1; if (#ama_dun != 0) set @dungeontemp,@dungeontemp + 2; if (#anthell != 0) set @dungeontemp,@dungeontemp + 4; if (#ayotaya_dun != 0) set @dungeontemp,@dungeontemp + 8; if (#iz_dun != 0) set @dungeontemp,@dungeontemp + 16; if (#c_tower != 0) set @dungeontemp,@dungeontemp + 32; if (#mjo_dun != 0) set @dungeontemp,@dungeontemp + 64; if (#prt_sewb != 0) set @dungeontemp,@dungeontemp + 128; if (#einbech_dun != 0) set @dungeontemp,@dungeontemp + 256; if (#gefenia != 0) set @dungeontemp,@dungeontemp + 512; if (#gef_dun != 0) set @dungeontemp,@dungeontemp + 1024; if (#gl_dun != 0) set @dungeontemp,@dungeontemp + 2048; if (#gon_dun != 0) set @dungeontemp,@dungeontemp + 4096; if (#hid_dun != 0) set @dungeontemp,@dungeontemp + 8192; if (#juperos != 0) set @dungeontemp,@dungeontemp + 16384; if (#lighthalzen_dun != 0) set @dungeontemp,@dungeontemp + 32768; if (#louyang_dun != 0) set @dungeontemp,@dungeontemp + 65536; if (#mag_dun != 0) set @dungeontemp,@dungeontemp + 131072; if (#odintemple != 0) set @dungeontemp,@dungeontemp + 262144; if (#orcsdun != 0) set @dungeontemp,@dungeontemp + 524288; if (#pay_dun != 0) set @dungeontemp,@dungeontemp + 1048576; if (#moc_pryd != 0) set @dungeontemp,@dungeontemp + 2097152; if (#in_sphinx != 0) set @dungeontemp,@dungeontemp + 4194304; if (#treasure != 0) set @dungeontemp,@dungeontemp + 8388608; if (#thanatos_tower != 0) set @dungeontemp,@dungeontemp + 16777216; if (#xmas_dun != 0) set @dungeontemp,@dungeontemp + 33554432; if (#tur_dun != 0) set @dungeontemp,@dungeontemp + 67108864; if (#um_dun != 0) set @dungeontemp,@dungeontemp + 134217728; // Clear Dungeon variables set #abyss,0; set #ama_dun,0; set #anthell,0; set #ayotaya_dun,0; set #iz_dun,0; set #c_tower,0; set #mjo_dun,0; set #prt_sewb,0; set #einbech_dun,0; set #gefenia,0; set #gef_dun,0; set #gl_dun,0; set #gon_dun,0; set #hid_dun,0; set #juperos,0; set #lighthalzen_dun,0; set #louyang_dun,0; set #mag_dun,0; set #odintemple,0; set #orcsdun,0; set #pay_dun,0; set #moc_pryd,0; set #in_sphinx,0; set #treasure,0; set #thanatos_tower,0; set #xmas_dun,0; set #tur_dun,0; set #um_dun,0; // set Town warp unlock variable set ##QWS_D_Unlock, (##QWS_D_Unlock | @dungeontemp); //mark that this character has done the upgrade to 1.8 set ##QWS_UP,18; return; } //===================Extra=Variable=Clear=Pre=1.8================== function script Extra_Variable_Clear { // Clear Town variables set #prontera,0; set #alberta,0; set #aldebaran,0; set #amatsu,0; set #ayotaya,0; set #comodo,0; set #einbech,0; set #einbroch,0; set #geffen,0; set #gonryun,0; set #hugel,0; set #izlude,0; set #jawaii,0; set #lighthalzen,0; set #louyang,0; set #xmas,0; set #morocc,0; set #niflheim,0; set #payon,0; set #umbala,0; set #yuno,0; // Clear Dungeon variables set #abyss,0; set #ama_dun,0; set #anthell,0; set #ayotaya_dun,0; set #iz_dun,0; set #c_tower,0; set #mjo_dun,0; set #prt_sewb,0; set #einbech_dun,0; set #gefenia,0; set #gef_dun,0; set #gl_dun,0; set #gon_dun,0; set #hid_dun,0; set #juperos,0; set #lighthalzen_dun,0; set #louyang_dun,0; set #mag_dun,0; set #odintemple,0; set #orcsdun,0; set #pay_dun,0; set #moc_pryd,0; set #in_sphinx,0; set #treasure,0; set #thanatos_tower,0; set #xmas_dun,0; set #tur_dun,0; set #um_dun,0; // as the account based variables are limited just run this on every character to save some variables set QWS_ExtraVARClear,18; return; } //================Dungeon=Warpras=That=Only=Unlock================= function script QWS_Dungeon_Warpra { function QWS_D_getbin; function QWS_D_setbin; if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) { mes "[Warpra]"; mes getarg(1)+" débloqué!"; QWS_D_setbin(getarg(0)); return; } else if (QWS_D_getbin(getarg(0)) == 1){ mes "[Warpra]"; mes "Désolée, mais je ne propose pas de service de téléportation à cet endroit."; } else debugmes "QWS_Dungeon_Warpra error, improper syntax ?"; return; function QWS_D_setbin { set @tempsetbindata,1; if (getarg(0) == 0) goto binset; set @temploopsetbin,0; do { set @tempsetbindata, @tempsetbindata * 2; set @temploopsetbin, @temploopsetbin + 1; } while (getarg(0) > @temploopsetbin); binset: set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata); return; } function QWS_D_getbin { set @tempgetbindata,1; if (getarg(0) == 0) goto binget; set @temploopgetbin,0; do { set @tempgetbindata, @tempgetbindata * 2; set @temploopgetbin, @temploopgetbin + 1; } while (getarg(0) > @temploopgetbin); binget: if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1; return 0; } } //==========================Town=Warpras=========================== function script QWS_Town_Warpra { function QWS_T_getbin; function QWS_T_setbin; if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) { mes "[Warpra]"; mes getarg(1)+" débloqué!"; QWS_T_setbin(getarg(0)); return; } else if (QWS_T_getbin(getarg(0)) == 1){ callfunc "Q_Warpra",0; } else debugmes "QWS_Town_Warpra error, improper syntax ?"; return; function QWS_T_setbin { set @tempsetbindata,1; if (getarg(0) == 0) goto binset; set @temploopsetbin,0; do { set @tempsetbindata, @tempsetbindata * 2; set @temploopsetbin, @temploopsetbin + 1; } while (getarg(0) > @temploopsetbin); binset: set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata); return; } function QWS_T_getbin { set @tempgetbindata,1; if (getarg(0) == 0) goto binget; set @temploopgetbin,0; do { set @tempgetbindata, @tempgetbindata * 2; set @temploopgetbin, @temploopgetbin + 1; } while (getarg(0) > @temploopgetbin); binget: if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1; return 0; } } //============================Warpras============================== alb2trea,73,101,4 script Warpra#1 113,{ callfunc "Q_Warpra",1; } ama_fild01,178,325,1 script Warpra#2 113,{ callfunc "Q_Warpra",1; } gef_fild10,71,339,4 script Warpra#3 113,{ callfunc "Q_Warpra",1; } izlu2dun,104,82,4 script Warpra#4 113,{ callfunc "Q_Warpra",1; } mjolnir_02,85,363,4 script Warpra#5 113,{ callfunc "Q_Warpra",1; } moc_fild04,207,331,4 script Warpra#6 113,{ callfunc "Q_Warpra",1; } moc_fild19,106,97,4 script Warpra#7 113,{ callfunc "Q_Warpra",1; } moc_ruins,64,166,4 script Warpra#8 113,{ callfunc "Q_Warpra",1; } niflheim,197,192,3 script Warpra#9 113,{ callfunc "Q_Warpra",1; } pay_arche,39,135,4 script Warpra#10 113,{ callfunc "Q_Warpra",1; } prt_fild05,273,215,4 script Warpra#11 113,{ callfunc "Q_Warpra",1; } tur_dun01,148,239,4 script Warpra#12 113,{ callfunc "Q_Warpra",1; } valkyrie,48,35,8 script Warpra#13 113,{ callfunc "Q_Warpra",1; } yuno_fild03,37,135,4 script Warpra#14 113,{ callfunc "Q_Warpra",1; } alberta,32,240,4 script Warpra#15 113,{ callfunc "QWS_Town_Warpra",1,"Alberta"; close; } aldebaran,146,118,4 script Warpra#16 113,{ callfunc "QWS_Town_Warpra",2,"Al De Baran"; close; } ayothaya,216,171,5 script Warpra#17 113,{ callfunc "QWS_Town_Warpra",4,"Ayothaya"; close; } amatsu,193,81,1 script Warpra#18 113,{ callfunc "QWS_Town_Warpra",3,"Amatsu"; close; } comodo,195,158,4 script Warpra#19 113,{ callfunc "QWS_Town_Warpra",5,"Comodo"; close; } einbroch,229,196,5 script Warpra#20 113,{ callfunc "QWS_Town_Warpra",7,"Einbroch"; close; } einbech,173,131,5 script Warpra#21 113,{ callfunc "QWS_Town_Warpra",6,"Einbech"; close; } geffen,116,66,4 script Warpra#22 113,{ callfunc "QWS_Town_Warpra",8,"Geffen"; close; } gonryun,152,130,4 script Warpra#23 113,{ callfunc "QWS_Town_Warpra",9,"Gonryun"; close; } hugel,90,127,5 script Warpra#24 113,{ callfunc "QWS_Town_Warpra",10,"Hugel"; close; } jawaii,107,182,5 script Warpra#25 113,{ callfunc "QWS_Town_Warpra",12,"Jawaii"; close; } izlude,132,116,4 script Warpra#26 113,{ callfunc "QWS_Town_Warpra",11,"Izlude"; close; } lighthalzen,153,100,5 script Warpra#27 113,{ callfunc "QWS_Town_Warpra",13,"Lighthalzen"; close; } louyang,211,106,4 script Warpra#28 113,{ callfunc "QWS_Town_Warpra",14,"Louyang"; close; } morocc,157,95,4 script Warpra#29 113,{ callfunc "QWS_Town_Warpra",16,"Morroc"; close; } nif_fild01,319,77,1 script Warpra#30 113,{ callfunc "QWS_Town_Warpra",17,"Niflheim"; close; } payon,183,110,4 script Warpra#31 113,{ callfunc "QWS_Town_Warpra",18,"Payon"; close; } prontera,147,172,5 script Warpra#32 113,{ callfunc "QWS_Town_Warpra",0,"Prontera"; close; } umbala,133,130,4 script Warpra#33 113,{ callfunc "QWS_Town_Warpra",19,"Umbala"; close; } xmas,151,136,4 script Warpra#34 113,{ callfunc "QWS_Town_Warpra",15,"Lutie"; close; } yuno,138,162,4 script Warpra#35 113,{ callfunc "QWS_Town_Warpra",20,"Yuno"; close; } abyss_02,274,266,1 script Warpra#36 113,{ callfunc "QWS_Dungeon_Warpra",0,"Lac des Abysses"; close; } ama_dun02,192,118,5 script Aide Warpra#1 112,{ callfunc "QWS_Dungeon_Warpra",1,"Donjon d'Amatsu"; close; } anthell02,170,165,3 script Aide Warpra#2 112,{ callfunc "QWS_Dungeon_Warpra",2,"L'Enfer des Fourmis"; close; } ayo_dun02,258,193,5 script Aide Warpra#3 112,{ callfunc "QWS_Dungeon_Warpra",3,"Temple d'Ayohtaya"; close; } ein_dun02,292,282,1 script Aide Warpra#4 112,{ callfunc "QWS_Dungeon_Warpra",8,"Mines d'Einbech"; close; } iz_dun03,202,47,2 script Aide Warpra#5 112,{ callfunc "QWS_Dungeon_Warpra",4,"Île de Byalan"; close; } c_tower3,129,106,4 script Aide Warpra#6 112,{ callfunc "QWS_Dungeon_Warpra",5,"Tour de l'Horloge"; close; } mjo_dun02,39,25,4 script Aide Warpra#7 112,{ callfunc "QWS_Dungeon_Warpra",6,"Mine de Charbon"; close; } prt_sewb2,176,30,3 script Aide Warpra#8 112,{ callfunc "QWS_Dungeon_Warpra",7,"Égouts de Culvert"; close; } gefenia03,137,34,0 script Aide Warpra#9 112,{ callfunc "QWS_Dungeon_Warpra",9,"Donjon de Geffenia"; close; } gef_dun02,218,61,2 script Aide Warpra#10 112,{ callfunc "QWS_Dungeon_Warpra",10,"Donjon de Geffen"; close; } glast_01,371,308,3 script Aide Warpra#11 112,{ callfunc "QWS_Dungeon_Warpra",11,"Glast Heim"; close; } gon_dun01,167,273,4 script Aide Warpra#12 112,{ callfunc "QWS_Dungeon_Warpra",12,"Donjon de Gonryun"; close; } juperos_02,127,154,5 script Aide Warpra#13 112,{ callfunc "QWS_Dungeon_Warpra",14,"Grottes de Juperos"; close; } kh_dun01,14,224,3 script Aide Warpra#14 112,{ callfunc "QWS_Dungeon_Warpra",28,"Donjon de Kiehl"; close; } lhz_dun02,156,151,5 script Aide Warpra#15 112,{ callfunc "QWS_Dungeon_Warpra",15,"Laboratoire de Lighthalzen"; close; } lou_dun02,168,264,4 script Aide Warpra#16 112,{ callfunc "QWS_Dungeon_Warpra",16,"Tombe Royale de Louyang"; close; } mag_dun02,46,41,3 script Aide Warpra#17 112,{ callfunc "QWS_Dungeon_Warpra",17,"Donjon de Lave"; close; } odin_tem01,115,148,3 script Aide Warpra#18 112,{ callfunc "QWS_Dungeon_Warpra",18,"Temple d'Odin"; close; } orcsdun01,185,11,3 script Aide Warpra#19 112,{ callfunc "QWS_Dungeon_Warpra",19,"Donjon des Orcs"; close; } pay_dun03,162,143,3 script Aide Warpra#20 112,{ callfunc "QWS_Dungeon_Warpra",20,"Grottes de Payon"; close; } moc_pryd02,101,95,3 script Aide Warpra#21 112,{ callfunc "QWS_Dungeon_Warpra",21,"Pyramides"; close; } in_sphinx2,274,268,1 script Aide Warpra#22 112,{ callfunc "QWS_Dungeon_Warpra",22,"Sphinx"; close; } tha_t07,111,162,3 script Aide Warpra#23 112,{ callfunc "QWS_Dungeon_Warpra",24,"Tour de Thanatos"; close; } treasure02,104,40,3 script Aide Warpra#24 112,{ callfunc "QWS_Dungeon_Warpra",23,"Bateau Échoué"; close; } xmas_dun02,124,131,3 script Aide Warpra#25 112,{ callfunc "QWS_Dungeon_Warpra",25,"Fabrique de Jouets"; close; } um_dun02,44,28,3 script Aide Warpra#26 112,{ callfunc "QWS_Dungeon_Warpra",27,"Donjon d'Umbala"; close; } tur_dun02,162,23,3 script Aide Warpra#27 112,{ callfunc "QWS_Dungeon_Warpra",26,"Île des Tortues"; close; } prt_maze02,102,69,4 script Aide Warpra#28 112,{ callfunc "QWS_Dungeon_Warpra",13,"Temple Caché"; close; }