Jump to content

PandaLovesHamster

Members
  • Posts

    452
  • Joined

  • Last visited

  • Days Won

    5

Community Answers

  1. PandaLovesHamster's post in autocommand when entering map was marked as the answer   
    You can trigger it using OnPCLoadMapEvent, take note you should set the mapflag also so it can trigger the event label.
  2. PandaLovesHamster's post in Armour doesnt change appearance was marked as the answer   
    I think you'll have to add it as a custom job or replace either santa suit or summer suit?
  3. PandaLovesHamster's post in MvP Killer Reward was marked as the answer   
    OnNPCKillEvent: if ( getmonsterinfo( killedrid, 22 ) ) { if( getmonsterinfo( killedrid, 1) <= 74 ) getitembound 7539,1,1; if( getmonsterinfo( killedrid, 1) > 74 && getmonsterinfo( killedrid, 1) <= 89) getitembound 7589,2,1; if( getmonsterinfo( killedrid, 1) > 89 ) getitembound 7539,5,1; } end; Not tested.
  4. PandaLovesHamster's post in REMOVED was marked as the answer   
    *cutin "<filename>",<position>;
    This command will display a picture, usually an NPC illustration, also called
    cutin, for the currently attached client. The position parameter determines the
    placement of the illustration and takes following values:
    0 - bottom left corner
    1 - bottom middle
    2 - bottom right corner
    3 - middle of screen in a movable window with an empty title bar
    4 - middle of screen without the window header, but still movable

  5. PandaLovesHamster's post in Need help! was marked as the answer   
    Replace 
    set #CASHPOINTS, #CASHPOINTS+(.@j*1); with
    set #CASHPOINTS, #CASHPOINTS + (.@j / 2 ); Because the value of .@j -> is 2 and you want to only give half of the number of TCG to be cash points right?
  6. PandaLovesHamster's post in Skull trader ( previous ones confuse me T_T) was marked as the answer   
    Oh crap lol
    please put this:
    set .skull_required,1; //number of skulls
    put set infront of every declaration, sorry about that
  7. PandaLovesHamster's post in Need help [ SQL ] was marked as the answer   
    Fixed by using:
    setarray .top_name$[.@i],.name$; setarray .top_death[.@i],.death_count;
  8. PandaLovesHamster's post in How to add normal id player in my offline ragnarok server ? was marked as the answer   
    // Can you use _M/_F to make new accounts on the server? new_account: yes Found in login_athena.conf, find that line and see if it is set, if it is set to no, change to yes, restart your server then log in using _m/_f method when creating an account for the first time.
    --
    If you want to be a GM, you'll have to go inside your database, then proceed to login table, then look for group id for your account and change it to 99
  9. PandaLovesHamster's post in Need help to fix this script was marked as the answer   
    set .soundef_number, .soundef_number + 1; switch (.soundef_number) { case 1: soundeffect "hollen2.wav",0; break; case 2: soundeffect "hollen3.wav",0; break; case 3: soundeffect "hollen4.wav",0; break; case 4: soundeffect "hollen5.wav",0; break; } if (.soundef_number >= 3) { set .soundef_number, 0; } Try removing those from the script itself and see if it still crashes.
  10. PandaLovesHamster's post in Auto Skillall was marked as the answer   
    You can use
    OnPcJobLvUpEvent:
  11. PandaLovesHamster's post in Rewards Script was marked as the answer   
    //Script by Normynator v1.1 //Modified by Panda prontera,146,163,4 script Event Representative 113,{ function EndEvent; if(getgmlevel() >= 99){ .@s = select("Start:Stop:Set Reward:Cancel"); if(.@s == 1){ mes "[ ^83cfe9Representative^000000 ]"; if(.config_done < 1){ mes "Please set your rewards and number of winners first."; close; } mes "Event has been started."; close2; set $giveaway, 0; set .start, 1; announce "[Event Representative]: [GM] "+strcharinfo(0)+" has started a Give Away Event!",0; sleep2 10000; announce "[Event Representative]: Number of Winners - "+.winner+" - ",0; end; } else if(.@s == 2){ if(.start < 1){ mes "No event to stop."; close; } mes "[ ^83cfe9Representative^000000 ]"; mes "You have cancelled the event."; set $giveaway, 1000; EndEvent; close; } else if(.@s == 3){ mes "[ ^83cfe9Representative^000000 ]"; mes "What reward do you want to give to the players?"; input .Rew_Item; set .item,.Rew_Item; if ( getiteminfo( .item, 0 ) == -1 ) { next; mes "[ ^83cfe9Representative^000000 ]"; mes "Invalid Item ID"; close; } next; mes "[ ^83cfe9Representative^000000 ]"; mes "Do you want to reward them "+getitemname(.Rew_Item)+"?"; menu "Yes",-; next; mes "[ ^83cfe9Representative^000000 ]"; mes "How many items will the player get?"; input .Rew_Amt; set .amount,.Rew_Amt; if(.amount < 1){ next; mes "[ ^83cfe9Representative^000000 ]"; mes "Quantity can not be lesser than 1."; close; } next; mes "[ ^83cfe9Representative^000000 ]"; mes "Are you sure with "+.Rew_Amt+" items?"; menu "Yes",-; next; mes "[ ^83cfe9Representative^000000 ]"; mes "Quantity has been set."; next; mes "[ ^83cfe9Representative^000000 ]"; mes "How many players do you want to win?"; input .Rew_Win; set .winner,.Rew_Win; if(.winner < 1){ next; mes "[ ^83cfe9Representative^000000 ]"; mes "Winners can not be lesser than 1."; close; } next; mes "[ ^83cfe9Representative^000000 ]"; mes .winner+" winners will be able to win."; set .config_done,1; close; }else{ end; } } if(.start < 1){ mes "[Representative]"; mes "No events are running."; close; } if (#AlreadyGot){ mes "[ ^83cfe9Representative^000000 ]"; mes "I have ^FF0000"+.@left + "^000000 items left."; mes "You already got your item."; close; } if($giveaway >= .winner){ mes "[ ^83cfe9Representative^000000 ]"; mes "I'm sorry, all items have been claimed."; close; } else{ mes "[ ^83cfe9Representative^000000 ]"; set .@left, .winner - $giveaway; mes "Hi"; mes "I have ^FF0000"+.@left + "^000000 items left."; next; set #AlreadyGot, 1; mes "[ ^83cfe9Representative^000000 ]"; mes "Congratulations for making it."; getitem .Rew_Item, .Rew_Amt; announce strcharinfo(0)+" redeemed one of the "+.@left+" Event Items!",0; set $giveaway, $giveaway + 1; if($giveaway == .winner){ EndEvent; } close; } OnInit: waitingroom "Event Representative",0; set .start, 0; end; EndEvent: announce "All Event Items have been redeemed.",0; query_sql "DELETE FROM `main`.`acc_reg_num` WHERE `key`='#AlreadyGot'"; //update this line set .start,0; end; } Just change the query line if you have a different database structure. Let me know if something doesn't work.
  12. PandaLovesHamster's post in @loadnpc WinSCP's Problem was marked as the answer   
    So it loads for the first time, but after you try to load it again it's not loading?

    That's how it behaves, you need to reloadscript first before you can load again.
  13. PandaLovesHamster's post in #pointshop NPC request was marked as the answer   
    - pointshop custom_seller1 #ONLINEPOINTS,509:0,5406:100,5407:100
    - pointshop custom_seller2 #ONLINEPOINTS,509:0,5766:100,5207:100
    prontera,155,155,3 script Name_Shop_Here 437,{
    mes "[NPC_NAME_HERE]";
    mes "Which one do you want to open?";
    @shop = select("Headgears:Supplies");
    mes "[NPC_NAME_HERE";
    mes "Happy shopping.";
    close2;
    callshop "custom_seller"+@shop,1;
    end;
    }
  14. PandaLovesHamster's post in Quest per account was marked as the answer   
    Your first NPC is good already.
    Now for your second one, copy what you did to your first NPC (if statement) and put it on your second NPC so they don't end up doing the quest for the second NPC twice.
    set #account, 1; Put this one on the last leg of your quest. Preferably when the player gets his reward.
  15. PandaLovesHamster's post in Block GM from entering certain map. was marked as the answer   
    - script GMBlock -1,{ OnPCLoadMapEvent: if(getgmlevel() == 60 || getgroupid() > 5){ dispbottom "You can't enter this map."; warp "prontera",0,0; } end; OnInit: setmapflag "job_sword1",mf_loadevent; setmapflag "arena_room",mf_loadevent; end; } Fixed it up for you. Try that now.
  16. PandaLovesHamster's post in Request: JobChange Reward was marked as the answer   
    Hello, you can add
    getitem 501,1; every after
    callfunc "Job_Change", @target_job; if you want the items to be bound, use the following code
    getitembound 501,1,1; You  can see more flags about getitembound here
     
    As for zeny
    Zeny += 10000 //10000 is how much zeny you give
  17. PandaLovesHamster's post in How to limit the movement of the player ? was marked as the answer   
    pcblockmove getcharid(3),1; <- holds the player
    pcblockmove getcharid(3),0; <- frees the player

    You should attachids though so no errors pop up in map server when used.
  18. PandaLovesHamster's post in Anyone can share a Full Woe Map and controller was marked as the answer   
    Use Euphy's instead.

     
    //===== rAthena Script ======================================= //= Euphy's WOE Controller //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.5 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A controller for War of Emperium designed for //= simplicity and ease of use. //= Many concepts taken from ToastOfDoom's script, //= and "rewards" function originally by Goddameit. //===== Additional Comments: ================================= //= Be sure to disable the default agit controllers! //== npc\guild\agit_controller.txt //== npc\guild2\agit_start_se.txt //============================================================ // Information NPC //============================================================ brasilis,191,185,4 script WOE Information 835,{ doevent "WOE_CONTROL::OnMenu"; end; OnAgitStart: while(agitcheck()) { sleep 425; } end; } // Script Core //============================================================ - script WOE_CONTROL -1,{ function Disp_Owner; function Add_Zero; OnInit: // ----------------------------------------------------------- // Configuration settings. // ----------------------------------------------------------- set .CastleWarp,0; // 1: Always enable all castle warps. | 0: Warp only to active castles. set .AutoKick,1; // Automatically kick players from inactive castles during WOE? (1:yes / 0:no) set .NoOwner,0; // Automatically kick players from unconquered castles outside of WOE? (1:yes / 0:no) set .ExitWarp,0; // Warp all players from castles when WOE ends? (1:yes / 0:no) set .GMAccess,99; // GM level required to access Session Manager. // ----------------------------------------------------------- // Reward options. // ----------------------------------------------------------- // [1] Enable rewards. // [2] Mail all rewards. // - If not set, players receive items in their inventory. // - Only ONE item can be sent via mail, plus Zeny. // - Note that offline players do NOT receive rewards. // [4] Only reward Guild Masters. // - If not set, all guild members are rewarded. // - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards. // [8] Duplicate IP check. // - Members in a guild with the same IP address are not rewarded. // - If Guild Masters is enabled (option 4), this feature is not used. // ----------------------------------------------------------- // Combine values as needed (e.g. 1|8 = 1+8 = 9). set .Options, 1|8; // Rewards per castle. // -- when given directly: <itemID>,<amount>{,<itemID>,<amount>,...} // -- via mail (option 2): <itemID>,<amount>,<Zeny> setarray .Reward[0],14001,1; // ----------------------------------------------------------- // Constants (leave this section alone). // ----------------------------------------------------------- setarray .Castles$[0], "prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05", "payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05", "gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05", "aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05", "arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05", "schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; setarray .EndLabel$[0],"ar01","ar02","ar03","ar04","ar05","sc01","sc02","sc03","sc04","sc05"; setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"; setarray .Regions$[0],"Prontera","Payon","Geffen","Aldebaran","Arunafeltz","Schwaltzvalt"; setarray .Map$[0],"prt_gld","pay_gld","gef_fild13","alde_gld","aru_gld","sch_gld"; setarray .MapX[0],134,240,153,111,208,121,295,317,140,204,214,308,143,193,305,48, 95,142,239,264,158,83, 68,299,292,293,288, 97,137, 71; setarray .MapY[0], 65,128,137,240,240,233,116,293,160,266, 75,240,240,278, 87,83,249, 85,242, 90,272,47,155,345,107,100,252,196, 90,315; // ----------------------------------------------------------- set .Size, getarraysize($WOE_CONTROL); if (.AutoKick || .NoOwner) for(set .@i,0; .@i<30; set .@i,.@i+1) { setmapflag .Castles$[.@i], mf_loadevent; setd "."+.Castles$[.@i], .@i; } if (!agitcheck() && !agitcheck2()) sleep 4000; set .Init,1; OnMinute00: freeloop(1); if (agitcheck() || agitcheck2()) { for(set .@i,0; .@i<.Size; set .@i,.@i+4) if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) == $WOE_CONTROL[.@i+2]) { OnWOEEnd: announce "The War Of Emperium is over!",bc_all|bc_woe; AgitEnd; AgitEnd2; sleep 1000; for(set .@j,0; .@j<30; set .@j,.@j+1) { if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1); if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3; } if (.Options&1 && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0]; deletearray .Active[0],2; if (.ForceEnd) { set .ForceEnd,0; end; } break; } } if ((!agitcheck() && !agitcheck2()) || .Init) { if (!agitcheck() && !agitcheck2()) set .Init,0; for(set .@i,0; .@i<.Size; set .@i,.@i+4) if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) { deletearray .Active[0],2; set .Active[0], $WOE_CONTROL[.@i+3]; if (.Init) { AgitEnd; AgitEnd2; } else announce "The War Of Emperium has begun!",bc_all|bc_woe; sleep 1000; AgitStart; AgitStart2; for(set .@j,0; .@j<30; set .@j,.@j+1) { if (.Active[0]&(1<<.@j)) { if (!.Init) Disp_Owner(.Castles$[.@j],0); set .Active[1], .Active[1] | (1<<((.@j/5)+1)); } else { if (.@j<20) { donpcevent "Agit#"+.Castles$[.@j]+"::OnAgitEnd"; killmonster .Castles$[.@j], "Agit#"+.Castles$[.@j]+"::OnAgitBreak"; } else { donpcevent "Manager#"+.Castles$[.@j]+"::OnAgitEnd2"; killmonster .Castles$[.@j], "Steward#"+.EndLabel$[.@j-20]+"::OnStartArena"; } } } break; } } set .Init,0; end; function Disp_Owner { set .@o, getcastledata(getarg(0),1); if (.@o) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname(.@o)+"] guild.",bc_all|bc_woe; else announce "The ["+getcastlename(getarg(0))+"] castle is currently unoccupied.",bc_all|bc_woe; return; } function Add_Zero { return ((getarg(0)<10)?"0":"")+getarg(0)+(getarg(1,0)?".":":")+"00"; } OnReward: set .@sql$, ((.Options&4)?"position = 0":"online = 1"); if (.Options&2) set .@str$,gettimestr("%B %d, %Y",21); freeloop(1); for(set .@i,0; .@i<30; set .@i,.@i+1) if (getarg(0)&(1<<.@i)) { set .@gid, getcastledata(.Castles$[.@i],1); if (!.@gid) continue; set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid); for(set .@j,0; .@j<.@size; set .@j,.@j+1) { if (.Options&8 && !(.Options&4)) { set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a"); if (getd(".@ip_"+.@i+"_"+.@ip$)) continue; setd ".@ip_"+.@i+"_"+.@ip$,1; } if (.Options&2) { query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+ "'no-reply',"+.@cid[.@j]+",'** Siege Reward: "+getcastlename(.Castles$[.@i])+" **',"+ "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "+.@str$+".% % % % % [ Your reward is attached. ]',"+ .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))"); if (!getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) { setd ".@str_"+.@cid[.@j],1; message rid2name(.@aid[.@j]),"You've got mail! Please re-login to update your mailing list."; } } else if (isloggedin(.@aid[.@j])) { for(set .@k,0; .@k<getarraysize(.Reward); set .@k,.@k+2) getitem .Reward[.@k], .Reward[.@k+1], .@aid[.@j]; message rid2name(.@aid[.@j]),"You have been rewarded for conquering "+getcastlename(.Castles$[.@i])+"."; } } } if (.Options&2) query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'"); return; OnPCLoadMapEvent: if (!compare(strcharinfo(3),"g_cas")) end; if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) { if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end; sleep2 1000; message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive."; sleep2 5000; if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0; } end; OnMenu: while(1) { mes "[WOE Information]"; if (agitcheck() || agitcheck2()) { if (.Active[0]) { for(set .@i,0; .@i<.Size; set .@i,.@i+4) if (gettime(4) == $WOE_CONTROL[.@i] && gettime(3) >= $WOE_CONTROL[.@i+1] && gettime(3) < $WOE_CONTROL[.@i+2]) { set .@i, $WOE_CONTROL[.@i+2]; break; } mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero(.@i)+"^000000 in the following regions:"; mes " "; for(set .@i,0; .@i<6; set .@i,.@i+1) if (.Active[1]&(1<<(.@i+1))) mes " > ^777777"+.Regions$[.@i]+"^000000"; } else mes "The War of Emperium is ^0055FFactive^000000."; } else { for(set .@i,0; .@i<.Size; set .@i,.@i+4) if ((gettime(4) == $WOE_CONTROL[.@i] && gettime(3) <= $WOE_CONTROL[.@i+1]) || gettime(4) < $WOE_CONTROL[.@i]) { setarray .@time[0],$WOE_CONTROL[.@i],$WOE_CONTROL[.@i+1]; break; } if (!getarraysize(.@time)) setarray .@time[0],$WOE_CONTROL[0],$WOE_CONTROL[1]; mes "The War of Emperium is ^777777inactive^000000."; if (.Size) { mes " "; mes "The next session will begin"; mes "on ^0055FF"+.Days$[.@time[0]]+"^000000 at "+Add_Zero(.@time[1])+"^000000."; } } next; switch(select(""+((.CastleWarp || .Active[1])?" ~ Warp to castles...":"")+": ~ Check schedule...: ~ View castle owners...:"+((getgmlevel()<.GMAccess || !getgmlevel())?"":" ~ Manage sessions...")+": ~ ^777777Cancel^000000")) { case 1: if (.CastleWarp) set .@clr$,"^0055FF"; set .@menu$,""; for(set .@i,0; .@i<6; set .@i,.@i+1) { if (.CastleWarp || .Active[1]&(1<<(.@i+1))) set .@menu$, .@menu$+" ~ "+((.Active[1]&(1<<(.@i+1)))?.@clr$:"^777777")+.Regions$[.@i]+" Castles^000000"; set .@menu$, .@menu$+":"; } set .@i, select(.@menu$)-1; set .@menu$,""; for(set .@j,.@i*5; .@j<(.@i*5)+5; set .@j,.@j+1) { if (.CastleWarp || .Active[0]&(1<<.@j)) set .@menu$, .@menu$+" ~ "+((.Active[0]&(1<<.@j))?.@clr$:"^777777")+getcastlename(.Castles$[.@j])+"^000000"; set .@menu$, .@menu$+":"; } set .@j, select(.@menu$)-1; warp .Map$[.@i],.MapX[(.@i*5)+.@j],.MapY[(.@i*5)+.@j]; close; case 2: mes "[Schedule]"; if (.Size) { freeloop(1); for(set .@i,0; .@i<.Size; set .@i,.@i+4) { mes "> ^FF0000"+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1])+"-"+Add_Zero($WOE_CONTROL[.@i+2])+")^000000"; for(set .@j,0; .@j<30; set .@j,.@j+1) if ($WOE_CONTROL[.@i+3]&(1<<.@j)) mes " ~ "+getcastlename(.Castles$[.@j])+" ^777777("+.Castles$[.@j]+")^000000"; if (.@i+4 < .Size) mes " "; } freeloop(0); } else mes "No times are configured."; next; break; case 3: mes "[Castle Ownership]"; for(set .@i,0; .@i<6; set .@i,.@i+1) { set .@k, .@i*5; mes "> ^FF0000"+.Regions$[.@i]+"^000000"; for(set .@j,.@k; .@j<(.@k+5); set .@j,.@j+1) { set .@t, getcastledata(.Castles$[.@j],1); mes " ~ "+getcastlename(.Castles$[.@j])+": "+((.@t)?"^0055FF"+getguildname(.@t):"^777777unoccupied")+"^000000"; } if (.@i < 5) mes " "; } next; break; case 4: while(1) { mes "[Session Manager]"; mes "There are ^0055FF"+(.Size/4)+" session(s)^000000 configured."; mes "What would you like to do?"; next; switch(select(" ~ Add a session...: ~ Delete a session...: ~ Reload settings...:"+((agitcheck() || agitcheck2())?" ~ End WOE session...":"")+": ~ ^777777Go back^000000")) { case 1: mes "[New Session]"; if (.Size > 127) { mes "You have already reached the maximum of 32 sessions."; next; break; } mes "Select a day."; next; set .@Day, select(" ~ "+implode(.Days$,": ~ "))-1; mes "[New Session]"; mes "Select a start time for ^0055FF"+.Days$[.@Day]+"^000000."; next; set .@menu$,""; for(set .@i,0; .@i<23; set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":"; set .@Start, select(.@menu$)-1; mes "[New Session]"; mes "Select an end time for ^0055FF"+.Days$[.@Day]+"^000000."; next; set .@menu$,""; for(set .@i,.@Start+1; .@i<24; set.@i,.@i+1) set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":"; set .@End, select(.@menu$)+.@Start; for(set .@i,0; .@i<.Size; set .@i,.@i+4) if (.@Day == $WOE_CONTROL[.@i] && ((.@Start >= $WOE_CONTROL[.@i+1] && .@Start < $WOE_CONTROL[.@i+2]) || (.@End > $WOE_CONTROL[.@i+1] && .@End <= $WOE_CONTROL[.@i+2]) || (.@Start <= $WOE_CONTROL[.@i+1] && .@End >= $WOE_CONTROL[.@i+2]))) { mes "[New Session]"; mes "The chosen times overlap with an existing session."; next; set .@d,1; break; } if (.@d) { set .@d,0; break; } set .@Castle,0; while(1) { mes "[New Session]"; mes "^0055FF"+.Days$[.@Day]+" ("+Add_Zero(.@Start)+"-"+Add_Zero(.@End)+")^000000"; mes " > Castles:"; if (!.@Castle) mes " ~ ^777777(none selected)^000000"; else for(set .@i,0; .@i<30; set .@i,.@i+1) if (.@Castle&(1<<.@i)) mes " ~ "+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")"; next; set .@menu$,((.@Castle)?" ~ ^FF0000Finished...^000000":"")+":"; for(set .@i,0; .@i<30; set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+((.@Castle&(1<<.@i))?"^0055FF":"")+getcastlename(.Castles$[.@i])+" ("+.Castles$[.@i]+")^000000:"; set .@i, select(.@menu$)-1; if (.@i) set .@Castle, .@Castle^(1<<(.@i-1)); else { mes "[New Session]"; mes "Are you sure?"; next; switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) { case 1: for(set .@i,0; .@i<.Size; set .@i,.@i+4) if ((.@Day == $WOE_CONTROL[.@i] && .@End <= $WOE_CONTROL[.@i+1]) || .@Day < $WOE_CONTROL[.@i]) { set .@d,1; break; } if (!.@d) { set .@d,1; set .@i,.Size; } copyarray $WOE_CONTROL[.@i+4], $WOE_CONTROL[.@i], .Size-.@i; setarray $WOE_CONTROL[.@i], .@Day, .@Start, .@End, .@Castle; set .Size, getarraysize($WOE_CONTROL); case 3: mes "[New Session]"; mes ((.@d)?"Session added.":"Cancelled."); next; set .@d,1; case 2: break; } if (.@d) { set .@d,0; break; } } } break; case 2: mes "[Remove Session]"; if (!.Size) { mes "There are no sessions configured."; next; break; } mes "Select a session to remove."; next; set .@menu$,""; for(set .@i,0; .@i<.Size; set .@i,.@i+4) set .@menu$, .@menu$+" ~ "+.Days$[$WOE_CONTROL[.@i]]+" ("+Add_Zero($WOE_CONTROL[.@i+1],1)+"-"+Add_Zero($WOE_CONTROL[.@i+2],1)+"):"; set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; set .@i, select(.@menu$)-1; if (.@i == (.Size/4)) break; mes "[Remove Session]"; mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[.@i*4]]+"'s^000000 session?"; mes "This action cannot be undone."; next; set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000"); mes "[Remove Session]"; if (.@j == 2) mes "Cancelled."; else { deletearray $WOE_CONTROL[.@i*4],4; set .Size, getarraysize($WOE_CONTROL); mes "Session deleted."; } next; break; case 3: mes "[Reload Settings]"; mes "This will trigger all events related to new session configurations, if any."; if (agitcheck() || agitcheck2()) { mes " "; mes "Be aware that this will disrupt the current WOE session."; } next; set .@i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000"); mes "[Reload Settings]"; if (.@i == 2) mes "Cancelled."; else { set .Init,1; donpcevent "WOE_CONTROL::OnMinute00"; mes "Variables have been re-initialized."; } next; break; case 4: mes "[Force Agit End]"; if (!agitcheck() && !agitcheck2()) { mes "WOE has already ended."; next; break; } mes "This command will safely execute all AgitEnd events."; mes " "; mes "Kill the current WOE session?"; next; set .@i, select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000"); mes "[Force Agit End]"; if (.@i == 3) mes "Cancelled."; else { set .ForceEnd, .@i; donpcevent "WOE_CONTROL::OnWOEEnd"; mes "WOE session terminated."; } next; break; case 5: set .@d,1; break; } if (.@d) { set .@d,0; break; } } break; case 5: close; } } } //Duplicates payon,86,225,5 duplicate(WOE Information) WOE Information#28 835 gonryun,81,275,5 duplicate(WOE Information) WOE Information#29 835 hugel,178,105,5 duplicate(WOE Information) WOE Information#30 835 veins,322,255,5 duplicate(WOE Information) WOE Information#31 835 umbala,145,226,5 duplicate(WOE Information) WOE Information#32 835
  19. PandaLovesHamster's post in Request Support For This Script ( /-__-)/ ~ _\__\_ was marked as the answer   
    Change
    if ( Zeny < $rent_cost ) close; to
    if ( Zeny < $rental_cost ) close;
  20. PandaLovesHamster's post in Scrip item effect was marked as the answer   
    I think you can use callfunc on this one on the item, make it usable and when it does, you call the function you want, for example the auto 99/70 or max level.

     
    function script jobchange { and then you can add the script as follows
    if( Class != 0 ){ mes "[ Goddess of War ]"; mes "You are not a novice."; set NPCTalk1, 1; close; } mes "[Ragnarok Online: ^FF0000 Flames of War^000000]"; mes "I was sent by ^FF0000 Admin Dusk ^000000 to assist you."; mes "Choose your class and join the war."; next; .@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 "[ Goddess of War ]"; mes "Now to talk to the ^0000FFGoddess of Fortune^000000"; set TalkNPC1, 1; close; } end; OnInit: setarray .JobList[0],4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021,4046,4047,4049,24,25,23; .BaseLevel = 99; .JobLevel = 70; .SkillPoints = 127; //( 9 + 49 + 69 ) //waitingroom "Job Changer",0; .@size = getarraysize( .JobList ); for( .@i = 0; .@i < .@size; .@i++ ) .Menu$ = .Menu$ + jobname( .JobList[.@i] )+":"; end; } Now you're set. Just set up an item to make it a consumable or usable item and just add callfunc to it and that should do it.
     
    As for the Refine Ticket, you can check out Euphy's. It's the one I'm using and is very well pleased with it. It's a really good script.
     
    Forgot to add, you might want to REFUND the ticket if ever the player clicks cancel.

     
  21. PandaLovesHamster's post in instant job master transcend and lvl was marked as the answer   
    Here's mine. You can try it as well if you like, it's not as good as the one from above, but is quite okay I guess.

     
    prontera,123,123,5 script Instant Job Changer 403,{ if( Class != 0 ){ mes "[ Instant Job Changer ]"; mes "You are not a novice."; set NPCTalk1, 1; close; } mes "[Ragnarok Online: ^FF0000 Flames of War^000000]"; mes "I was sent by ^FF0000 Admin Dusk ^000000 to assist you."; mes "Choose your class and join the war."; next; .@i = select( .Menu$ ) - 1; if( select( "Change to "+jobname( .JobList[.@i] )+"?:Cancel" ) == 1 ){ jobchange .JobList[.@i]; BaseLevel = .BaseLevel; JobLevel = .JobLevel; resetskill; resetstatus; atcommand "@allskill"; mes "[ Instant Job Changer ]"; mes "Now to talk to the ^0000FFGoddess of Fortune^000000"; set TalkNPC1, 1; close; } end; OnInit: setarray .JobList[0],4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021,4046,4047,4049,24,25,23; //Insert Classes here. .BaseLevel = 99; .JobLevel = 70; waitingroom "Job Changer",0; .@size = getarraysize( .JobList ); for( .@i = 0; .@i < .@size; .@i++ ) .Menu$ = .Menu$ + jobname( .JobList[.@i] )+":"; end; }
×
×
  • Create New...