Jump to content

louigui0224

Members
  • Posts

    139
  • Joined

  • Last visited

Everything posted by louigui0224

  1. so much thank you sir, but i have another question dont worry this would be the last, what if i want to remove the refine and exchange coins option how to remove it?
  2. now the problem is the map server says function not found.. what about this one i saw euphy's script but the thing is it has a 3rd job change, i want it to be just trans anyway to do it?? //===== rAthena Script ======================================= //= All-in-One NPC //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.8 //===== Description: ========================================= //= A compilation of commonly-used NPC scripts. //== Includes job changer, stylist, refiner, card remover, //== coin exchanger, rentals, resetter, platinum skills, //== sex changer, identifier, healer, buffer, and repairman. //============================================================ prontera,148,174,6 script All-in-One NPC 953,{ function Get_Platinum; function Equip_Menu; function Cm; if (getarraysize(.OnClick)) { if (.OnClick[0]) { specialeffect2 EF_HEAL2; percentheal 100,100; } if (.OnClick[1]) { specialeffect2 EF_BLESSING; sc_start SC_BLESSING,600000,10; specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,600000,10; } if (.OnClick[2]) repairall; } mes .n$; set .@time, gettime(3); mes "Good "+((.@time < 5 || .@time > 17)?"evening":((.@time < 12)?"morning":"afternoon"))+", "+strcharinfo(0)+"!"; mes "What can I do for you?"; emotion e_ho; next; disable_items; switch(select(.menu$)) { case 1: function Job_Menu; function A_An; mes .n$; if (Class > 4049) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding."; close; } if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; close; } set .@eac, eaclass(); set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class); if (.@i > 6 && .@i < 22) { if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } if (Class > 21) { mes "Switch to third class?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); close; } while(1) { mes "Select an option."; next; set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); if (.@i==3) close; mes .n$; mes "Are you sure?"; next; Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD))); mes .n$; } } set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99; if (Class == Job_Ninja || Class == Job_Gunslinger) setarray .@exp[0],.@j1,70; if (.@exp[0] && .SecondExpanded) { if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } mes "Switch to "+jobname(.@exp[0])+"?"; next; Job_Menu(.@exp[0]); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "No more jobs are available."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .JobReq[0]) mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class."; else if (Class == 4001 && .LastJob && lastJob) { mes "Switch classes now?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else switch(Class) { case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023); case 4001: Job_Menu(4002,4003,4004,4005,4006,4007); case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045); default: mes "An error has occurred."; break; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) mes "No more jobs are available."; else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1]) mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class."; else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+4001); } else Job_Menu(.@j1,.@j2); close; function Job_Menu { while(1) { if (getargcount() > 1) { mes "Select a job."; set .@menu$,""; for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":"; set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; next; set .@i, getarg(select(.@menu$)-1,0); if (!.@i) close; if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) { mes .n$; mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; close; } mes .n$; mes "Are you sure?"; next; } else set .@i, getarg(0); if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes .n$; mes "You are now "+A_An(jobname(.@i))+"!"; if (.@i==4001 && .LastJob) set lastJob, Class; jobchange .@i; if (.@i==4001 || .@i==4023) resetlvl(1); specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; if (.Platinum) Get_Platinum; close; } if (getargcount() == 1) return; mes .n$; } end; } function Get_Platinum { skill 142,1,0; switch(BaseClass) { case 0: if (Class !=23) skill 143,1,0; break; case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; case 2: skill 157,1,0; break; case 3: skill 147,1,0; skill 148,1,0; break; case 4: skill 156,1,0; break; case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; default: break; } switch(BaseJob) { case 7: skill 1001,1,0; break; case 8: skill 1014,1,0; break; case 9: skill 1006,1,0; break; case 10: skill 1012,1,0; skill 1013,1,0; break; case 11: skill 1009,1,0; break; case 12: skill 1003,1,0; skill 1004,1,0; break; case 14: skill 1002,1,0; break; case 15: skill 1015,1,0; skill 1016,1,0; break; case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; case 17: skill 1005,1,0; break; case 18: skill 238,1,0; break; case 19: skill 1010,1,0; break; case 20: skill 1011,1,0; break; default: break; } return; } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } case 2: mes .n$; mes "Select an option."; next; setarray .@Look[1],7,1,6; set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color"); set .@Revert, getlook(.@Look[.@s]); set .@Style,1; mes .n$; mes "How does this look?"; while(1) { setlook .@Look[.@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; set .@menu$, " ~ Next (^0055FF"+((.@Style!=.Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)"; switch(select(.@menu$)) { case 1: set .@Style, ((.@Style!=.Styles[.@s])?.@Style+1:1); break; case 2: set .@Style, ((.@Style!=1)?.@Style-1:.Styles[.@s]); break; case 3: next; mes .n$; mes "Choose a style between 1 - "+.Styles[.@s]+"."; input .@Style,0,.Styles[.@s]; if (!.@Style) set .@Style, rand(1,.Styles[.@s]); next; mes .n$; mes "How does this look?"; break; case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; } } close; case 3: function Refine_Item; if (.EnrichedRefine) { mes .n$; mes "Select an option."; next; if (select(" ~ Normal Refiner: ~ Enriched Refiner") == 2) { mes .n$; mes "What do you want to refine?"; next; Equip_Menu(1); setarray .@Materials[0],7619,7620,7620,7620,7620; setarray .@Safe[0],4,7,6,5,4; set .@WLv, getequipweaponlv(@i); mes .n$; mes "Item: +"+getequiprefinerycnt(@i)+" "+getequipname(@i); next; if(select(" ~ Refine item (2 * ^0055FF"+getequippercentrefinery(@i)+"^000000% success): ~ ^777777Cancel^000000") == 2) close; Refine_Item(1, .@Materials[.@WLv], .RP[.@WLv], .@Safe[.@WLv], 1); close; } } mes .n$; mes "What do you want to refine?"; next; Equip_Menu(1); setarray .@Materials[0],985,1010,1011,984,984; setarray .@Safe[0],4,7,6,5,4; set .@WLv, getequipweaponlv(@i); set .@SafeCount, .@Safe[.@WLv]-getequiprefinerycnt(@i); mes .n$; mes "Item: +"+getequiprefinerycnt(@i)+" "+getequipname(@i); next; switch(select(" ~ Refine once (^0055FF"+getequippercentrefinery(@i)+"^000000% success): ~ Refine multiple times (up to "+(10-getequiprefinerycnt(@i))+"): ~ Refine to safe limit ("+((.@SafeCount>0)?.@SafeCount+" refines":"^777777disabled^000000")+"): ~ ^777777Cancel^000000")) { case 1: Refine_Item(1, .@Materials[.@WLv], .RP[.@WLv], .@Safe[.@WLv]); close; case 2: input .@Refines; if (.@Refines+getequiprefinerycnt(@i) > 10 || .@Refines < 1) { mes .n$; mes "Invalid number ("+.@Refines+")."; } else Refine_Item(.@Refines, .@Materials[.@WLv], .RP[.@WLv], .@Safe[.@WLv]); close; case 3: if (.@SafeCount < 1) { mes .n$; mes "The item has already reached the safe limit."; } else Refine_Item(.@SafeCount, .@Materials[.@WLv], .RP[.@WLv], .@Safe[.@WLv]); close; case 4: close; } function Equip_Menu { setarray .@pos$[1],"Upper Headgear","Armor","Left hand","Right hand","Garment","Footgear","Left Accessory","Right Accessory","Mid Headgear","Lower Headgear"; set .@menu$,""; for (set .@i,1; .@i <= 10; set .@i,.@i+1) { if (getequipisequiped(.@i)) set .@menu$, .@menu$+.@pos$[.@i]+" [^0055FF"+getequipname(.@i)+"^000000]"; set .@menu$, .@menu$+":"; } set @i, select(.@menu$); if (!getequipisequiped(@i)) { mes .n$; mes "Nothing is equipped there!"; close; } if (getarg(0)) { if (!getequipisenableref(@i)) { mes .n$; mes getequipname(@i)+" cannot be refined."; close; } if (getequiprefinerycnt(@i) >= 10 ) { mes .n$; mes "+"+getequiprefinerycnt(@i)+" "+getequipname(@i)+" cannot be refined any further."; close; } } return; } function Refine_Item { mes .n$; set .@price, getarg(0)*getarg(2); mes "I'll need "+getarg(0)+"x "+getitemname(getarg(1))+" and "+Cm(.@price)+" Zeny."; if (countitem(getarg(1)) < getarg(0) || Zeny < .@price) { mes "Come back when you have the required materials."; close; } if (getequiprefinerycnt(@i)+getarg(0) > getarg(3)) mes "The item will be refined above the safe limit. It may break."; next; if(select(" ~ ^0055FFContinue^000000: ~ ^777777Cancel^000000") == 2) close; mes .n$; set .@j, getarg(0); while(.@j) { delitem getarg(1),1; set Zeny, Zeny-getarg(2); if (getarg(4,0)) { if (getequippercentrefinery(@i) <= rand(100) && getequippercentrefinery(@i) <= rand(100)) { mes getequipname(@i)+" broke while refining."; failedrefitem @i; close; } } else { if (getequippercentrefinery(@i) <= rand(100)) { mes getequipname(@i)+" broke while refining."; failedrefitem @i; close; } } successrefitem @i; set .@j, .@j-1; } mes "All done!"; close; } function Cm { set .@str$, getarg(0); for(set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3) set .@str$, insertchar(.@str$,",",.@i); return .@str$; } case 4: mes .n$; if (.Prices[0]) mes "It costs "+Cm(.Prices[0])+" Zeny to remove cards."; mes "Please select an equipment."; next; Equip_Menu(0); mes .n$; if (Zeny < .Prices[0]) { mes "You don't have enough Zeny."; close; } set .@j,getequipcardcnt(@i); if (!.@j) { mes "There are no cards compounded to "+getequipname(@i)+"."; close; } if (!checkweight(4001,(.@j+1))) { mes "You're carrying too many items!"; close; } mes "Item: "+getequipname(@i); for(set .@i,0; .@i<.@j; set .@i,.@i+1) mes "Card "+(.@i+1)+": "+getitemname(getequipcardid(@i,.@i)); next; if (select(" ~ Remove "+.@j+" card(s): ~ ^777777Cancel^000000") == 2) close; set Zeny, Zeny-.Prices[0]; successremovecards @i; mes .n$; mes "Cards successfully removed!"; close; case 5: mes .n$; mes "Coins are worth "+Cm(.Coin[1])+" Zeny each."; next; switch(select(" ~ Zeny to coins: ~ Coins to Zeny: ~ Close")) { case 1: mes .n$; mes "How many coins do you want?"; next; input .@coins,0,(1000000000/.Coin[1]); mes .n$; if (.@coins*.Coin[1] > Zeny) { mes "You don't have enough Zeny."; close; } if (!checkweight(.Coin[0],.@coins)) { mes "You don't have enough inventory space."; close; } set Zeny, Zeny-(.Coin[1]*.@coins); getitem .Coin[0], .@coins; mes "Purchased "+Cm(.@coins)+" coins."; close; case 2: mes .n$; mes "How many coins do you want to trade in?"; next; input .@coins,0,(1000000000/.Coin[1]); mes .n$; if (countitem(.Coin[0]) < .@coins) { mes "You don't have that many coins!"; close; } if ((Zeny+(.Coin[1]*.@coins)) > 1000000000) { mes "You have too much Zeny!"; close; } delitem .Coin[0], .@coins; set Zeny, Zeny+(.Coin[1]*.@coins); mes "Exchanged "+Cm(.@coins)+" coins."; close; case 3: close; } case 6: if (Zeny < .Prices[2]) { mes .n$; mes "It costs "+Cm(.Prices[2])+" Zeny to rent."; close; } if (ismounting()) { mes .n$; mes "You must first remove your mount."; close; } else if ((eaclass()&EAJ_THIRDMASK==EAJ_RANGER) && !countitem(6124)) { if (!checkfalcon() && getskilllv("HT_FALCON") && !checkoption(Option_Wug) && !checkoption(Option_Wugrider)) { mes .n$; mes "Please select an option."; next; if(select(" ~ Falcon: ~ Warg") == 1) setfalcon; else getitem 6124,1; } else getitem 6124,1; } else if ((eaclass()&EAJ_THIRDMASK==EAJ_MECHANIC) && !checkcart() && getskilllv("MC_PUSHCART")) { if (!checkmadogear() && getskilllv("NC_MADOLICENCE")) { mes .n$; mes "Please select an option."; next; if(select(" ~ Cart: ~ Mado")==1) setcart; else setmadogear; } else setcart; } else if (!checkcart() && getskilllv("MC_PUSHCART")) setcart; else if (!checkfalcon() && getskilllv("HT_FALCON") && !checkoption(Option_Wug) && !checkoption(Option_Wugrider)) setfalcon; else if (!checkriding() && getskilllv("KN_RIDING")) { if (eaclass()&EAJ_THIRDMASK == EAJ_RUNE_KNIGHT) setdragon; else setriding; } else if (!checkmadogear() && getskilllv("NC_MADOLICENCE")) setmadogear; else { mes .n$; mes "You do not meet requirements to rent."; close; } set Zeny, Zeny-.Prices[2]; specialeffect2 EF_TEIHIT3; mes .n$; mes "Here you go."; emotion e_no1; close; case 7: mes .n$; if (.Prices[1]) mes "It costs "+Cm(.Prices[1])+" Zeny to reset stats or skills."; mes "Please select an option."; next; set .@i, select(" ~ Stat reset: ~ Skill reset: ~ Cancel"); if (.@i == 3) close; mes .n$; if (Zeny < .Prices[1]) { mes "You don't have enough Zeny."; close; } set Zeny, Zeny-.Prices[1]; if (.@i == 1) { resetstatus; mes "Stats reset!"; } else { resetskill; mes "Skills reset!"; } close; case 8: Get_Platinum; specialeffect2 EF_BLUECASTING; mes .n$; mes "Platinum skills received!"; close; case 9: set .@Var$, ".SexChange"+((Sex)?"F":"M"); if (getarraysize(getd(.@Var$))) { mes .n$; mes "To turn into a "+((Sex)?"female":"male")+" you need the following items:"; for(set .@i,0; .@i<getarraysize(getd(.@Var$)); set .@i,.@i+2) { mes " ~ "+getd(.@Var$+"["+(.@i+1)+"]")+"x "+getitemname(getd(.@Var$+"["+.@i+"]")); if (countitem(getd(.@Var$+"["+.@i+"]")) < getd(.@Var$+"["+(.@i+1)+"]")) set .@nreq,1; } if (.@nreq) close; next; } mes .n$; mes "Do you really want to change sex?"; next; if(select(" ~ Change into a "+((Sex)?"female":"male")+": ~ Cancel") == 1) { if (getarraysize(getd(.@Var$))) { for(set .@i,0; .@i<getarraysize(getd(.@Var$)); set .@i,.@i+2) delitem getd(.@Var$+"["+.@i+"]"), getd(.@Var$+"["+(.@i+1)+"]"); } changesex; } close; case 10: setarray .@Total[0],0,0; getinventorylist; mes .n$; for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1) { if (@inventorylist_identify[.@i]) continue; if (Zeny < .Prices[3]) { if (!.@Total[0]) { mes "It costs "+Cm(.Prices[3])+" Zeny to identify an item."; close; } break; } set Zeny, Zeny-.Prices[3]; delitem2 @inventorylist_id[.@i],1,0,0,0,0,0,0,0; getitem @inventorylist_id[.@i],1; setarray .@Total[0], .@Total[0]+1, .@Total[1]+.Prices[3]; } if (!.@Total[0]) { mes "No items identified."; close; } specialeffect2 EF_REFINEOK; mes "Identified "+.@Total[0]+" items"+((.@Total[1])?" for "+Cm(.@Total[1])+" Zeny":"")+"."; close; } OnInit: // --------------------- Config --------------------- setarray .MainMenu$[0], // Set menu options! "Change Jobs", // [1] "Stylist", // [2] "Refiner", // [4] "Remove Cards", // [8] "Exchange Coins", // [16] "Rentals", // [32] "Reset Stats/Skills", // [64] "Platinum Skills", // [128] "Change Sex", // [256] "Identify All"; // [512] set .@MenuOption,1|2|4|8|16|32|64|128|256|512; setarray .OnClick[0],1,1,1; // When clicked: heal [0], buff [1], repair [2] (1: yes / 0: no) setarray .Styles[1], // Maximum dye, hair style, and hair color getbattleflag("max_cloth_color"),getbattleflag("max_hair_style"),getbattleflag("max_hair_color"); setarray .Coin[0],674,1000000; // Coin item ID, coin price setarray .Prices[0],50000,10000,0,100; // Zeny to remove cards [0], reset [1], rent [2], identify [3] setarray .Rebirth[0],99,50; // Minimum base level, job level to rebirth OR change to third class setarray .JobReq[0],10,40; // Minimum job level to turn into 1st class, 2nd class set .ThirdClass,1; // Enable third classes? (1: yes / 0: no) set .SecondExpanded,1; // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no) set .SNovice,45; // Minimum base level to turn into Super Novice set .LastJob,1; // Enforce linear class changes? (1: yes / 0: no) set .SkillPointCheck,0; // Force player to use up all skill points? (1: yes / 0: no) set .Platinum,1; // Get platinum skills automatically? (1: yes / 0: no) set .EnrichedRefine,1; // Allow enriched refiner option? (1: yes / 0: no) setarray .RP[0],2000,50,200,5000,20000; // Zeny for armor, lv1, lv2, lv3, lv4 refines setarray .SexChangeF[0],2213,1,1558,1,7152,50; // Items to turn into Female (ID,Count) setarray .SexChangeM[0],5016,1,2241,1,1017,50; // Items to turn into Male (ID,Count) set .n$, "[All-in-One NPC]"; // NPC Name // -------------------------------------------------- set .menu$,""; for (set .@i,0; .@i < getarraysize(.MainMenu$); set .@i,.@i+1) { if (.@MenuOption & (1<<.@i)) set .menu$, .menu$+" ~ "+.MainMenu$[.@i]; set .menu$, .menu$+":"; } end; }
  3. i have a problem with this script i dont know why.help me please. here's the script prontera,114,100,4 script All in One NPC 100,{ mes "[All in One NPC]"; mes "Please select:"; next; switch(select("Job Master:Rental:Reset:Platinum Skills")) { case 1: callfunc "jobmaster"; break; case 2: callfunc "rental"; break; case 3: callfunc "reset"; break; case 4: callfunc "platinum"; break; } } function script jobmaster { mes "^ff0000[All in One NPC]^000000"; if(Class >= Job_Rune_Knight) goto L_noReq; if(SkillPoint != 0) { mes "I'm sorry, please use up all your skill points before changing jobs"; mes "Please come again soon!"; close; } if(JobLevel < 10) goto L_LvError; switch(Class){ case Job_Novice_High: case Job_Baby: case Job_Novice: skill 142,1,0; skill 143,1,0; mes "Welcome, please select the job you wish to change into"; if(lastJob != 0 && Class == Job_Novice_High){ switch(lastJob){ case Job_Knight: case Job_Crusader: set @target_job, Job_Swordman_High; break; case Job_Monk: case Job_Priest: set @target_job, Job_Acolyte_High; break; case Job_Alchemist: case Job_Blacksmith: set @target_job, Job_Merchant_High; break; case Job_Rogue: case Job_Assassin: set @target_job, Job_Thief_High; break; case Job_Wizard: case Job_Sage: set @target_job, Job_Mage_High; break; case Job_Hunter: case Job_Bard: case Job_Dancer: set @target_job, Job_Archer_High; break; } } else { switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief", "Super Novice","Taekwon","Gunslinger","Ninja")){ case 7: if(Class == Job_Novice_High) goto L_noReq; if($@JC_SupNovM > BaseLevel) goto L_BvError; if(Upper == 2) set @target_job, Job_Super_Baby; else set @target_job, Job_SuperNovice; break; case 8: if(Class == Job_Novice_High) goto L_noReq; if(Upper == 2) goto L_noReq; set @target_job, Job_Taekwon; break; case 9: case 10: if(Class == Job_Novice_High || Upper == 2) goto L_noReq; set @target_job, @menu + 15; break; default: set @target_job, @menu; if(Class == Job_Novice_High) set @target_job, @target_job + 4001; break; } } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("Yes","No") == 1){ callfunc "Job_Change", @target_job; if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { callfunc "F_ClearJobVar"; } else { if($@JC_Plat) goto L_GivePlat; } } close; break; default: if(JobLevel < $@JC_MinimumJB) goto L_LvError; deletearray @job_opt, getarraysize(@job_opt); if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){ if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans set @target_job, lastJob + 4001; } else { switch(Class){ case Job_Swordman_High: case Job_Baby_Swordman: case Job_Swordman: set @job_opt[0], Job_Knight; set @job_opt[1], Job_Crusader; break; case Job_Mage_High: case Job_Baby_Mage: case Job_Mage: set @job_opt[0], Job_Wizard; set @job_opt[1], Job_Sage; break; case Job_Archer_High: case Job_Baby_Archer: case Job_Archer: set @job_opt[0], Job_Hunter; if(Sex == 0) set @job_opt[1], Job_Dancer; else set @job_opt[1], Job_Bard; break; case Job_Acolyte_High: case Job_Baby_Acolyte: case Job_Acolyte: set @job_opt[0], Job_Priest; set @job_opt[1], Job_Monk; break; case Job_Merchant_High: case Job_Baby_Merchant: case Job_Merchant: set @job_opt[0], Job_Blacksmith; set @job_opt[1], Job_Alchemist; break; case Job_Thief_High: case Job_Baby_Thief: case Job_Thief: set @job_opt[0], Job_Assassin; set @job_opt[1], Job_Rogue; break; default: set @job_opt[0], Job_Star_Gladiator; set @job_opt[1], Job_Soul_Linker; break; } mes "Welcome, please select the job you wish to change into"; set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1]; if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001; } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("Yes","No")==1){ callfunc "Job_Change", @target_job; if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { callfunc "F_ClearJobVar"; } else { if($@JC_Plat) goto L_GivePlat; } } close; } if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; if(checkfalcon() || checkcart() || checkriding()) goto L_remove; if((Class >= Job_Knight) && (Class <= Job_Crusader2)){ mes "Would you like to be reborn or change to 3rd class?"; switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel")) { case 1: mes "Are you sure you want to be reborn?"; if(select("Yes", "No")==1){ set lastJob, Class; if(Class == Job_Knight2){ set lastJob, Job_Knight; } else { if(Class == Job_Crusader2){ set lastJob, Job_Crusader; } } jobchange Job_Novice_High; resetlvl(1); skill 142,1,0; skill 143,1,0; } break; case 2: goto L_Third; } close; } if (Class >= Job_Lord_Knight && Class <= Job_Paladin2) { if(JobLevel < 50) goto L_cantCh; goto L_Third; } } mes "I'm sorry, there are no further classes for your job."; close; L_Third: set @target_job, roclass(eaclass() | EAJL_THIRD); mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("Yes", "No")==1){ callfunc "Job_Change", @target_job; } close; L_GivePlat: if (BaseClass==Job_SuperNovice) goto L_sSuperN; if (BaseClass==Job_Swordman) goto L_sSword; if (BaseClass==Job_Mage) goto L_sMage; if (BaseClass==Job_Archer) goto L_sArcher; if (BaseClass==Job_Acolyte) goto L_sAcolyte; if (BaseClass==Job_Merchant) goto L_sMerchant; if (BaseClass==Job_Thief) goto L_sThief; close; L_sSuperN: skill 142,1,0; close; L_sSword: skill 142,1,0; skill 144,1,0; skill 145,1,0; skill 146,1,0; close; L_sMage: skill 142,1,0; skill 157,1,0; close; L_sArcher: skill 142,1,0; skill 147,1,0; skill 148,1,0; close; L_sAcolyte: skill 142,1,0; skill 156,1,0; close; L_sMerchant: skill 142,1,0; skill 153,1,0; skill 154,1,0; skill 155,1,0; close; L_sThief: skill 142,1,0; skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; close; L_cantCh: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_LvError: mes "I'm sorry, you do not seem to have enough Job Levels"; mes "Please come again soon!"; close; L_BvError: mes "I'm sorry, you do not seem to have enough Base Levels"; mes "Please come again soon!"; close; L_noReq: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_remove: mes "Please remove your cart,falcon or peco"; mes "Please come again soon!"; close; OnInit: // Variable Setup set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (Default : 40) set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes) set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45) end; } function script rental { mes "[All in One NPC]"; mes "Hi, here you can rent Carts, Falcons or Pecopecos."; next; switch(select("Cart:Falcon:Peco")) { case 1: if((BaseClass == Job_Merchant || BaseJob == Job_SuperNovice) && checkcart() == 0 && getskilllv("MC_PUSHCART")>0) { setcart; close; } else { mes "[All in One NPC]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 2: if(BaseJob != Job_Archer && BaseClass == Job_Archer && checkfalcon() == 0 && getskilllv("HT_FALCON")>0) { setfalcon; close; } else { mes "[All in One NPC]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 3: if (BaseJob != Job_Swordman && BaseClass == Job_Swordman && checkriding() == 0 && getskilllv("KN_RIDING")>0) { setriding; close; } else { mes "[All in One NPC]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } } } function script reset { set .rskill,5000; // Set value in zeny for skill reset here set .rstat,5000; // Set value in zeny for stat reset here set .rboth,9000; // Set value for "package deal" (i.e.: reseting both) here. mes "[All in One NPC]"; mes "I am a All in One NPC."; mes "Reset Stats: "+ .rstat +"z"; mes "Reset Skills: "+ .rskill +"z"; mes "Reset Both: "+ .rboth +"z"; mes "Please select the service you want:"; next; switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Quit")) { case 1: mes "[All in One NPC]"; if (Zeny < .rskill) { mes "Sorry, you don't have enough Zeny."; close; } mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; set Zeny,Zeny-.rskill; ResetSkill; close; case 2: mes "[All in One NPC]"; if (Zeny < .rstat) { mes "Sorry, you don't have enough Zeny."; close; } mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; set Zeny,Zeny-.rstat; ResetStatus; close; case 3: mes "[All in One NPC]"; if (Zeny < .rboth) { mes "Sorry, you don't have enough Zeny."; close; } mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; set Zeny,Zeny-.rboth; ResetSkill; ResetStatus; close; case 4: mes "Come again soon!"; close; } } function script platinum { mes "[All in One NPC]"; mes "I can give you the special skills available to your job."; mes "Would you like these skills now?"; next; if (select("Yes Please:No thanks") == 2) { mes "[All in One NPC]"; mes "Have a nice day... >.>"; close; } skill 142,1,0; // First Aid if (BaseClass == Job_Novice) { skill 143,1,0; // Play Dead } else if (BaseClass == Job_Swordman) { skill 144,1,0; // Moving HP-Recovery skill 145,1,0; // Fatal Blow skill 146,1,0; // Auto Berserk } else if (BaseClass == Job_Mage) { skill 157,1,0; // Energy Coat } else if (BaseClass == Job_Archer) { skill 147,1,0; // Arrow Crafting skill 148,1,0; // Arrow Repel } else if (BaseClass == Job_Merchant) { skill 153,1,0; // Cart Revolution skill 154,1,0; // Change Cart skill 155,1,0; // Crazy Uproar } else if (BaseClass == Job_Thief) { skill 149,1,0; // Sand Attack skill 150,1,0; // Back Slide skill 151,1,0; // Find Stone skill 152,1,0; // Stone Fling } else if (BaseClass == Job_Acolyte) { skill 156,1,0; // Holy Light } if (Class == Job_Knight || Class == Job_Lord_Knight) { skill 1001,1,0; // Charge Attack } else if (Class == Job_Crusader || Class == Job_Paladin) { skill 1002,1,0; // Shrink } else if (Class == Job_Wizard || Class == Job_High_Wizard) { skill 1006,1,0; // Sight Blaster } else if (Class == Job_Sage || Class == Job_Professor) { skill 1007,1,0; // Create Elemental Converter skill 1008,1,0; // Elemental Change Water skill 1017,1,0; // Elemental Change Earth skill 1018,1,0; // Elemental Change Fire skill 1019,1,0; // Elemental Change Wind } else if (Class == Job_Hunter || Class == Job_Sniper) { skill 1009,1,0; // Phantasmic Arrow } else if (Class == Job_Bard || Class == Job_Clown) { skill 1010,1,0; // Pang Voice } else if (Class == Job_Dancer || Class == Job_Gypsy) { skill 1011,1,0; // Wink of Charm } else if (Class == Job_Blacksmith || Class == Job_Whitesmith) { skill 1012,1,0; // Unfair Trick skill 1013,1,0; // Greed } else if (Class == Job_Alchemist || Class == Job_Creator) { skill 238,1,0; // Bioethics } else if (Class == Job_Assassin || Class == Job_Assassin_Cross) { skill 1003,1,0; // Sonic Acceleration skill 1004,1,0; // Throw Venom Knife } else if (Class == Job_Rogue || Class == Job_Stalker) { skill 1005,1,0; // Close Confine } else if (Class == Job_Priest || Class == Job_High_Priest) { skill 1014,1,0; // Redemptio } else if (Class == Job_Monk || Class == Job_Champion) { skill 1015,1,0; // Ki Translation skill 1016,1,0; // Ki Explosion } mes "[All in One NPC]"; mes "There you go!"; close; }
  4. i want to combine those two script's in one npc so that they could just talk with one npc instead of two..thanks @Blazingspear
  5. @Emistry thank you so much emistry, but now i have another question i hope you can still help me... how can i combine this two script's into one npc? new_1-1,59,111,4 script Ridiculous Giver 718,{ if( Class ){ mes "Only Novice can use this..."; }else{ .@i = select( .Menu$ ) - 1; if( select( "Change to "+jobname( .JobList[.@i] )+"?:Cancel" ) == 1 ){ jobchange .JobList[.@i]; BaseLevel = .BaseLevel; JobLevel = .JobLevel; resetskill; resetstatus; SkillPoint = .SkillPoints; mes "DONE"; for( .@i = 0; .@i < .size; .@i++ ) getitem .ItemList[.@i],.Amount[.@i]; warp "sec_in01", 79,33; savepoint "prontera",114,74,1,1; } } close; OnInit: setarray .JobList[0],7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,4049,4046; setarray .ItemList[0],14545; setarray .Amount[0],3; .BaseLevel = 70; .JobLevel = 30; .SkillPoints = 87; .@size = getarraysize( .JobList ); .size = getarraysize( .ItemList ); for( .@i = 0; .@i < .@size; .@i++ ) .Menu$ = .Menu$ + jobname( .JobList[.@i] )+":"; waitingroom "Freebies Here!",0; end; } sec_in01,79,36,4 script Freebies 123,{ mes "[Hello]"; mes "[I can give you a free gift based on your future job.]"; mes "[Please choose the correct item for the future job]"; if(!#Freebie) { mes "Select one:"; next; switch(select("Swordsman:Magician:Archer:Acolyte:Merchant:Thief:Ninja:Linker:Taek")) { case 1: getitem 2328,1; getitem 2404,1; getitem 2503,1; rentitem 29280,604800; rentitem 5394,604800; getitem 1109,1; //Item for Swordsman warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 2: getitem 2334,1; getitem 2403,1; getitem 2503,1; getitem 1601,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Magician warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 3: getitem 2330,1; getitem 2405,1; getitem 2503,1; getitem 1701,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Archer warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 4: getitem 2309,1; getitem 2403,1; getitem 2503,1; getitem 1601,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Acolyte warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 5: getitem 2309,1; getitem 2405,1; getitem 2503,1; getitem 1354,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Merchant warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 6: getitem 2335,1; getitem 2405,1; getitem 2503,1; getitem 1221,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Thief warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 7: getitem 2335,1; getitem 2403,1; getitem 2503,1; getitem 1221,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Ninja warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 8: getitem 2335,1; getitem 2403,1; getitem 2503,1; getitem 1603,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Linker warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; case 9: getitem 2335,1; getitem 2403,1; getitem 2503,1; getitem 1603,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Taek warp "prontera", 114,74; savepoint "prontera",114,74,1,1; break; } set #Freebie, 1; close; } OnInit: waitingroom "Get your freebies here ! ",0; end; }
  6. @BlazingSpear still not working sir...
  7. im using the putty on linux and it seems that it's already over lapped so cant scroll up anymore.
  8. im not understanding you sir, i dont have any idea about the console can u please help me?
  9. i need help what seems to be the problem with this script, i cant even click the npc and the chat room doesnt show at all. please need help asap. sec_in01,79,36,4 script Freebies 123,{ mes "[Hello]"; mes "[I can give you a free gift based on your future job.]"; mes "[Please choose the correct item for the future job]"; if(!#Freebie) { mes "Select one:"; next; switch(select("Swordsman:Magician:Archer:Acolyte:Merchant:Thief:Ninja:Linker:Taek")) { case 1: getitem 2328,1; getitem 2404,1: getitem 2503,1; rentitem 29280,604800; rentitem 5394,604800; getitem 1109,1; //Item for Swordsman break; case 2: getitem 2334,1; getitem 2403,1; getitem 2503 ,1; getitem 1601 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Magician break; case 3: getitem 2330,1; getitem 2405,1; getitem 2503 ,1; getitem 1701 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Archer break; case 4: getitem 2309,1; getitem 2403,1; getitem 2503 ,1; getitem 1601 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Acolyte break; case 5: getitem 2309,1; getitem 2405,1; getitem 2503 ,1; getitem 1354 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Merchant break; case 6: getitem 2335,1; getitem 2405,1; getitem 2503 ,1; getitem 1221 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Thief break; case 7: getitem 2335,1; getitem 2403,1; getitem 2503 ,1; getitem 1221 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Ninja break; case 8: getitem 2335,1; getitem 2403,1; getitem 2503 ,1; getitem 1603 ,1; rentitem 29280,604800; rentitem 5394,604800; //Item for Linker break; } set #Freebie, 1; close; } OnInit: waitingroom "Get your freebies here ! ",0; end; }
  10. hi guys i just need your help on removing this message when i logged in. rAthena version svn: r14887 welcome to my server! how to remove the reathena version message?
  11. the flapping devil wing's Gpipe. and some of the item's are unknown item.i dont have custom items everything is original. im using this itemdb from re folder in db.
  12. hi guys!, im currently using the updated rAthena on github and my client is 2013-07-28 and my GRF and everything was already fully patched but im still wonderin why im still getting some error's with some items like when i type @item i will instantly get an error message for the sprite, so i dont know why, my GRF was already updated the same thing with the rdata and everything...What can i do to fix this?? thanks.
  13. try mo check subnet.conf mo ung last 2 ip change mo yun sa wan ip mo.
  14. oh im sorry and thank you so much for letting me know about that.
  15. Hi i would like to request if anyone of you guys have the script for clucker event? it's an event where you will click the npc and then the npc will kill you freeze you stun you blind or any status effect and there's a chance for you to get an item..
  16. but is there any chance that they can also choose job and set a level example they are going to have lvl 60 as a freebie.and choose their job.
  17. Hi i just have a request guys, if some of you can help me having a script like a freebie script when t hey log in an npc will automatically talked and give item and give atleast baselvl 50 and choose their job...thanks...
  18. hi im having difficulty fixing my server because every time i loged in my logserver always says close connection from 192.68.x.x what did is i put my lan ip in log_in_ip tab and my wan ip in char_ip the same with the map_ip...so i dont know what seems to be rhte problem.
  19. Close connection from 192.168.x.x sa loginserver, ano kaya problema neto??? tama nmn yung guide na finllow ko login_ip dapat lan ip diba ? tapos sa char and map_ser is yung wan ip ko...so ano kaya problema neto mga sirs?
  20. ok na mga sirs naicompile ko na lahat, ngayon ginamit ko na client is 2013-07-03 pero ang malaking problema ko naman ngayon eh pag log in ko sa new_grounds kulay itim lng tapos hndi ako makalakad, at pag punta ko ng prontera biglang nag cloclose yung client...bakit kaya?...
  21. oo pre 2015 VS....may link ka ba san pde maka kuha ng mga rathena 14-15....hndi nako kase aware sa mga ganyan...salamat.
  22. nagkaka problema ko sa tuwing i cocompile ko yung server ilang beses ko na ginawa pero ganun padin eh... eto ung message. compiling.bmp
  23. im using the beginner eathena v4...for test server and scripting practices...pero nag tataka ko bakit ganito ung client.. asdasd.bmp
×
×
  • Create New...