//Le Livre d'Ymir http://www.bookofymir.net/ //traduit par Myllena //===== eAthena Script ======================================= //= Kafra Express - Warping Town Module //===== By: ================================================== //= Skotlex //===== Current Version: ===================================== //= 2.2 //===== Compatible With: ===================================== //= eAthena SVN R3424+, RO Episode 8+ (Hugel) //===== Description: ========================================= //= Part of the Kafra Express Script Package. //= Offers warp services to towns. //===== Additional Comments: ================================= //= See config.txt for configuration. //= Flag values used for towns: //= 0x00000001 Alberta //= 0x00000002 AlDeBaran //= 0x00000004 Amatsu //= 0x00000008 Ayothaya //= 0x00000010 Comodo //= 0x00000020 Einbech //= 0x00000040 Einbroch //= 0x00000080 Geffen //= 0x00000100 Gon Ryun //= 0x00000200 Hugel //= 0x00000400 Izlude //= 0x00000800 Jawaii //= 0x00001000 LightHalzen //= 0x00002000 Lou Yang //= 0x00004000 Lutie //= 0x00008000 Morocc //= 0x00010000 Niflheim //= 0x00020000 Payon //= 0x00040000 Prontera //= 0x00080000 Umbala //= 0x00100000 Yuno //= 0x00200000 Rachel //============================================================ - script keInit_warpTown -1,{ OnInit: //Load Config donpcevent "keConfig::OnLoadWarpTown"; end; } function script F_keWarpTown { function SF_check; function SF_warp; set @cost,callfunc("F_keCost",$@kewt_cost,$@kewt_discount); set @niflcost,callfunc("F_keCost",$@kewt_niflCost,$@kewd_discount); if (@cost > Zeny && $@kewt_free) set @cost, Zeny; do { if ($@kewt_showOnline) { set @kmenu, select( "- Annuler", "- Alberta ("+@cost+"z/"+(getmapusers("alberta")+getmapusers("alberta_in"))+" "+$@ked_users$+")", "- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran")+getmapusers("aldeba_in"))+" "+$@ked_users$+")", "- Amatsu ("+@cost+"z/"+(getmapusers("amatsu")+getmapusers("ama_in01")+getmapusers("ama_in02")) +" "+$@ked_users$+")", "- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya")+getmapusers("ayo_in01")+getmapusers("ayo_in02")) +" "+$@ked_users$+")", "- Comodo ("+@cost+"z/"+(getmapusers("comodo")+getmapusers("cmd_in01")+getmapusers("cmd_in02")) +" "+$@ked_users$+")", "- Einbech ("+@cost+"z/"+(getmapusers("einbech"))+" "+$@ked_users$+")", "- Einbroch ("+@cost+"z/"+(getmapusers("einbroch")+getmapusers("ein_in01"))+" "+$@ked_users$+")", "- Geffen ("+@cost+"z/"+(getmapusers("geffen")+getmapusers("geffen_in")+getmapusers("gef_tower")) +" "+$@ked_users$+")", "- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun")+getmapusers("gon_in"))+" "+$@ked_users$+")", "- Hugel ("+@cost+"z/"+(getmapusers("hugel")+getmapusers("hu_in01"))+" "+$@ked_users$+")", "- Izlude ("+@cost+"z/"+(getmapusers("izlude")+getmapusers("izlude_in"))+" "+$@ked_users$+")", "- Jawaii ("+@cost+"z/"+(getmapusers("jawaii")+getmapusers("jawaii_in"))+" "+$@ked_users$+")", "- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen")+getmapusers("lhz_in01") +getmapusers("lhz_in02")+getmapusers("lhz_in03"))+" "+$@ked_users$+")", "- Lou Yang ("+@cost+"z/"+(getmapusers("louyang")+getmapusers("lou_in01")+getmapusers("lou_in02")) +" "+$@ked_users$+")", "- Lutie ("+@cost+"z/"+(getmapusers("xmas")+getmapusers("xmas_in"))+" "+$@ked_users$+")", "- Morocc ("+@cost+"z/"+(getmapusers("morocc")+getmapusers("morocc_in")+getmapusers("moc_castle")) +" "+$@ked_users$+")", "- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim")+getmapusers("nif_in"))+" "+$@ked_users$+")", "- Payon ("+@cost+"z/"+(getmapusers("payon")+getmapusers("payon_in01")+getmapusers("payon_in02")) +" "+$@ked_users$+")", "- Prontera ("+@cost+"z/"+(getmapusers("prontera")+getmapusers("prt_castle") +getmapusers("prt_church")+getmapusers("prt_in"))+" "+$@ked_users$+")", "- Rachel ("+@cost+"z/"+(getmapusers("rachel")+getmapusers("ra_in01") +getmapusers("ra_temple")+getmapusers("ra_temin")+getmapusers("ra_temsky") +getmapusers("que_rachel"))+" "+$@ked_users$+")", "- Umbala ("+@cost+"z/"+(getmapusers("umbala")+getmapusers("um_in"))+" "+$@ked_users$+")", "- Yuno ("+@cost+"z/"+(getmapusers("yuno")+getmapusers("yuno_in01")+getmapusers("yuno_in02") +getmapusers("yuno_in03")+getmapusers("yuno_in04")+getmapusers("yuno_in05"))+" "+$@ked_users$+")" ); } else { set @kmenu, select( "- Annuler", "- Alberta ("+@cost+"z)", "- Al De Baran ("+@cost+"z)", "- Amatsu ("+@cost+"z)", "- Ayothaya ("+@cost+"z)", "- Comodo ("+@cost+"z)", "- Einbech ("+@cost+"z)", "- Einbroch ("+@cost+"z)", "- Geffen ("+@cost+"z)", "- Gon Ryun ("+@cost+"z)", "- Hugel ("+@cost+"z)", "- Izlude ("+@cost+"z)", "- Jawaii ("+@cost+"z)", "- LightHalzen ("+@cost+"z)", "- Lou Yang ("+@cost+"z)", "- Lutie ("+@cost+"z)", "- Morocc ("+@cost+"z)", "- Niflheim ("+@niflcost+"z)", "- Payon ("+@cost+"z)", "- Prontera ("+@cost+"z)", "- Rachel ("+@cost+"z)", "- Umbala ("+@cost+"z)", "- Yuno ("+@cost+"z)" ); } switch (@kmenu) { case 2: //Alberta if (SF_check(0x1)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta",117,56; break; case 3: //AlDeBaran if (SF_check(0x2)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran",139,124; break; case 4: //Amatsu if (SF_check(0x4)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu",197,88; break; case 5: //Ayathoya if (SF_check(0x8)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya",202,174; break; case 6: //Comodo if (SF_check(0x10)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo",189,150; break; case 7: //Einbech if (SF_check(0x20)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech",137,220; break; case 8: //Einbroch if (SF_check(0x40)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch",64,199; break; case 9: //Geffen if (SF_check(0x80)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen",120,66; break; case 10: //GonRyun if (SF_check(0x100)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun",160,180; break; case 11: //Hugel if (SF_check(0x200)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel",96,105; break; case 12: //Izlude if (SF_check(0x400)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude",127,97; break; case 13: //Jawaii if (SF_check(0x800)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii",214,223; break; case 14: //LightHalzen if (SF_check(0x1000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen",158,92; break; case 15: //LouYang if (SF_check(0x2000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang",218,118; break; case 16: //Lutie if (SF_check(0x4000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas",148,133; break; case 17: //Morocc if (SF_check(0x8000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc",162,91; break; case 18: //Niflheim if (SF_check(0x10000)) { if (nif_q_done != 1) { mes "...?"; callfunc "F_keIntro", e_no, "Je ne peux pas vous téléporter ici!"; } else callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim",194,185; } break; case 19: //Payon if (SF_check(0x20000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon",159,181; break; case 20: //Prontera if (SF_check(0x40000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera",156,175; break; case 21: //Rachel if (SF_check(0x200000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"rachel",137,133; break; case 22: //Umbala if (SF_check(0x80000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala",88,153; break; case 23: //Yuno if (SF_check(0x100000)) SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno",158,77; break; } } while (@kmenu > 1); return; //SubFunction SF_check(flag) //Checks if the character can warp to that town taking into consideration //traveller's mode. function SF_check { if ($@kewt_travel && !((kewt_travel|#kewt_travel)&getarg(0))) { callfunc "F_keIntro", e_sry, "Désolée, mais je ne peux vous emmener dans une ville que vous n'avez pas déjà visitée."; return 0; } return 1; } //SubFunction SF_warp (int cost, int discount, int emotion, String map, int x, int y) //Modded from F_keWarp to allow free warping to towns when not enough zeny. function SF_warp { set @cost, getarg(0); if (@cost > Zeny && $@kewt_free) set @cost, Zeny; if (!(callfunc("F_keCharge",@cost,getarg(1),1))) { callfunc "F_keIntro", e_an, "Vous n'avez pas assez d'argent..."; return; } emotion getarg(2); warp getarg(3),getarg(4),getarg(5); end; } } //Invoked when we want to add a map to the list of travelled-to towns function script F_keAddTravelTown { set @map$, getarg(0); // Temporary code to update variables from old format to new. if(ketw_alberta) { set kewt_travel,kewt_travel|0x1; set ketw_alberta,0; } if(ketw_aldebaran) { set kewt_travel,kewt_travel|0x2; set ketw_aldebaran,0; } if(ketw_amatsu) { set kewt_travel,kewt_travel|0x4; set ketw_amatsu,0; } if(ketw_ayothaya) { set kewt_travel,kewt_travel|0x8; set ketw_ayothaya,0; } if(ketw_comodo) { set kewt_travel,kewt_travel|0x10; set ketw_comodo,0; } if(ketw_einbech) { set kewt_travel,kewt_travel|0x20; set ketw_einbech,0; } if(ketw_einbroch) { set kewt_travel,kewt_travel|0x40; set ketw_einbroch,0; } if(ketw_geffen) { set kewt_travel,kewt_travel|0x80; set ketw_geffen,0; } if(ketw_gonryun) { set kewt_travel,kewt_travel|0x100; set ketw_gonryun,0; } if(ketw_hugel) { set kewt_travel,kewt_travel|0x200; set ketw_hugel,0; } if(ketw_izlude) { set kewt_travel,kewt_travel|0x400; set ketw_izlude,0; } if(ketw_jawaii) { set kewt_travel,kewt_travel|0x800; set ketw_jawaii,0; } if(ketw_lighthalzen) { set kewt_travel,kewt_travel|0x1000; set ketw_lighthalzen,0; } if(ketw_louyang) { set kewt_travel,kewt_travel|0x2000; set ketw_louyang,0; } if(ketw_lutie) { set kewt_travel,kewt_travel|0x4000; set ketw_lutie,0; } if(ketw_morroc) { set kewt_travel,kewt_travel|0x8000; set ketw_morroc,0; } if(ketw_niflheim) { set kewt_travel,kewt_travel|0x10000; set ketw_niflheim,0; } if(ketw_payon) { set kewt_travel,kewt_travel|0x20000; set ketw_payon,0; } if(ketw_prontera) { set kewt_travel,kewt_travel|0x40000; set ketw_prontera,0; } if(ketw_umbala) { set kewt_travel,kewt_travel|0x80000; set ketw_umbala,0; } if(ketw_yuno) { set kewt_travel,kewt_travel|0x100000; set ketw_yuno,0; } if(#ketw_alberta) { set #kewt_travel,#kewt_travel|0x1; set #ketw_alberta,0; } if(#ketw_aldebaran) { set #kewt_travel,#kewt_travel|0x2; set #ketw_aldebaran,0; } if(#ketw_amatsu) { set #kewt_travel,#kewt_travel|0x4; set #ketw_amatsu,0; } if(#ketw_ayothaya) { set #kewt_travel,#kewt_travel|0x8; set #ketw_ayothaya,0; } if(#ketw_comodo) { set #kewt_travel,#kewt_travel|0x10; set #ketw_comodo,0; } if(#ketw_einbech) { set #kewt_travel,#kewt_travel|0x20; set #ketw_einbech,0; } if(#ketw_einbroch) { set #kewt_travel,#kewt_travel|0x40; set #ketw_einbroch,0; } if(#ketw_geffen) { set #kewt_travel,#kewt_travel|0x80; set #ketw_geffen,0; } if(#ketw_gonryun) { set #kewt_travel,#kewt_travel|0x100; set #ketw_gonryun,0; } if(#ketw_hugel) { set #kewt_travel,#kewt_travel|0x200; set #ketw_hugel,0; } if(#ketw_izlude) { set #kewt_travel,#kewt_travel|0x400; set #ketw_izlude,0; } if(#ketw_jawaii) { set #kewt_travel,#kewt_travel|0x800; set #ketw_jawaii,0; } if(#ketw_lighthalzen) { set #kewt_travel,#kewt_travel|0x1000; set #ketw_lighthalzen,0; } if(#ketw_louyang) { set #kewt_travel,#kewt_travel|0x2000; set #ketw_louyang,0; } if(#ketw_lutie) { set #kewt_travel,#kewt_travel|0x4000; set #ketw_lutie,0; } if(#ketw_morroc) { set #kewt_travel,#kewt_travel|0x8000; set #ketw_morroc,0; } if(#ketw_niflheim) { set #kewt_travel,#kewt_travel|0x10000; set #ketw_niflheim,0; } if(#ketw_payon) { set #kewt_travel,#kewt_travel|0x20000; set #ketw_payon,0; } if(#ketw_prontera) { set #kewt_travel,#kewt_travel|0x40000; set #ketw_prontera,0; } if(#ketw_umbala) { set #kewt_travel,#kewt_travel|0x80000; set #ketw_umbala,0; } if(#ketw_yuno) { set #kewt_travel,#kewt_travel|0x100000; set #ketw_yuno,0; } // End update code. if ($@kewt_travel > 1) { if (@map$ == "alberta" || kewt_travel&0x1) set #kewt_travel,#kewt_travel|0x1; if (@map$ == "aldebaran" || kewt_travel&0x2) set #kewt_travel,#kewt_travel|0x2; if (@map$ == "amatsu" || kewt_travel&0x4) set #kewt_travel,#kewt_travel|0x4; if (@map$ == "ayothaya" || kewt_travel&0x8) set #kewt_travel,#kewt_travel|0x8; if (@map$ == "comodo" || kewt_travel&0x10) set #kewt_travel,#kewt_travel|0x10; if (@map$ == "einbech" || kewt_travel&0x20) set #kewt_travel,#kewt_travel|0x20; if (@map$ == "einbroch" || kewt_travel&0x40) set #kewt_travel,#kewt_travel|0x40; if (@map$ == "geffen" || kewt_travel&0x80) set #kewt_travel,#kewt_travel|0x80; if (@map$ == "gonryun" || kewt_travel&0x100) set #kewt_travel,#kewt_travel|0x100; if (@map$ == "hugel" || kewt_travel&0x200) set #kewt_travel,#kewt_travel|0x200; if (@map$ == "izlude" || kewt_travel&0x400) set #kewt_travel,#kewt_travel|0x400; if (@map$ == "jawaii" || kewt_travel&0x800) set #kewt_travel,#kewt_travel|0x800; if (@map$ == "lighthalzen" || kewt_travel&1000) set #kewt_travel,#kewt_travel|0x1000; if (@map$ == "louyang" || kewt_travel&0x2000) set #kewt_travel,#kewt_travel|0x2000; if (@map$ == "xmas" || kewt_travel&0x4000) set #kewt_travel,#kewt_travel|0x4000; if (@map$ == "morocc" || kewt_travel&0x8000) set #kewt_travel,#kewt_travel|0x8000; if (@map$ == "niflheim" || kewt_travel&0x10000) set #kewt_travel,#kewt_travel|0x10000; if (@map$ == "payon" || kewt_travel&0x20000) set #kewt_travel,#kewt_travel|0x20000; if (@map$ == "prontera" || kewt_travel&0x40000) set #kewt_travel,#kewt_travel|0x40000; if (@map$ == "umbala" || kewt_travel&0x80000) set #kewt_travel,#kewt_travel|0x80000; if (@map$ == "yuno" || kewt_travel&0x100000) set #kewt_travel,#kewt_travel|0x100000; if (@map$ == "rachel" || kewt_travel&0x200000) set #kewt_travel,#kewt_travel|0x200000; } else { if (@map$ == "alberta") set kewt_travel,kewt_travel|0x1; if (@map$ == "aldebaran") set kewt_travel,kewt_travel|0x2; if (@map$ == "amatsu") set kewt_travel,kewt_travel|0x4; if (@map$ == "ayothaya") set kewt_travel,kewt_travel|0x8; if (@map$ == "comodo") set kewt_travel,kewt_travel|0x10; if (@map$ == "einbech") set kewt_travel,kewt_travel|0x20; if (@map$ == "einbroch") set kewt_travel,kewt_travel|0x40; if (@map$ == "geffen") set kewt_travel,kewt_travel|0x80; if (@map$ == "gonryun") set kewt_travel,kewt_travel|0x100; if (@map$ == "hugel") set kewt_travel,kewt_travel|0x200; if (@map$ == "izlude") set kewt_travel,kewt_travel|0x400; if (@map$ == "jawaii") set kewt_travel,kewt_travel|0x800; if (@map$ == "lighthalzen") set kewt_travel,kewt_travel|0x1000; if (@map$ == "louyang") set kewt_travel,kewt_travel|0x2000; if (@map$ == "xmas") set kewt_travel,kewt_travel|0x4000; if (@map$ == "morocc") set kewt_travel,kewt_travel|0x8000; if (@map$ == "niflheim") set kewt_travel,kewt_travel|0x10000; if (@map$ == "payon") set kewt_travel,kewt_travel|0x20000; if (@map$ == "prontera") set kewt_travel,kewt_travel|0x40000; if (@map$ == "umbala") set kewt_travel,kewt_travel|0x80000; if (@map$ == "yuno") set kewt_travel,kewt_travel|0x100000; if (@map$ == "rachel") set kewt_travel,kewt_travel|0x200000; } return; }