Jump to content


  • Content Count

  • Joined

  • Last visited

About alcapone

  • Rank

Profile Information

  • Github
  1. I'm using Euphy's woe controller (not modified). I want that every Castle return a different Prize. example: kriemhild -reaward SNOW CRYSTAL, Skoegul - Prize BILLOW, someone I could help with that? Thank you for your attention. //= 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!//== npcguildagit_controller.txt//== npcguild2agit_start_se.txt//============================================================ // Information NPC//============================================================prontera,187,210,1 script WOE Information 835,{ doevent "WOE_CONTROL::OnMenu"; end;OnAgitStart: while(agitcheck()) { misceffect EF_BEGINSPELL6; 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],6419,3; // -----------------------------------------------------------// 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 [email protected],0; [email protected]<30; set [email protected],[email protected]+1) { setmapflag .Castles$[[email protected]], mf_loadevent; setd "."+.Castles$[[email protected]], [email protected]; } if (!agitcheck() && !agitcheck2()) sleep 4000; set .Init,1; OnMinute00: freeloop(1); if (agitcheck() || agitcheck2()) { for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if (gettime(4) == $WOE_CONTROL[[email protected]] && gettime(3) == $WOE_CONTROL[[email protected]+2]) { OnWOEEnd: announce "The War Of Emperium is over!",bc_all|bc_woe; AgitEnd; AgitEnd2; sleep 1000; for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) { if (.Active[0]&(1<<[email protected])) Disp_Owner(.Castles$[[email protected]],1); if (.ExitWarp) maprespawnguildid .Castles$[[email protected]],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 [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if (gettime(4) == $WOE_CONTROL[[email protected]] && gettime(3) >= $WOE_CONTROL[[email protected]+1] && gettime(3) < $WOE_CONTROL[[email protected]+2]) { deletearray .Active[0],2; set .Active[0], $WOE_CONTROL[[email protected]+3]; if (.Init) { AgitEnd; AgitEnd2; } else announce "The War Of Emperium has begun!",bc_all|bc_woe; sleep 1000; AgitStart; AgitStart2; for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) { if (.Active[0]&(1<<[email protected])) { if (!.Init) Disp_Owner(.Castles$[[email protected]],0); set .Active[1], .Active[1] | (1<<(([email protected]/5)+1)); } else { if ([email protected]<20) { donpcevent "Agit#"+.Castles$[[email protected]]+"::OnAgitEnd"; killmonster .Castles$[[email protected]], "Agit#"+.Castles$[[email protected]]+"::OnAgitBreak"; } else { donpcevent "Manager#"+.Castles$[[email protected]]+"::OnAgitEnd2"; killmonster .Castles$[[email protected]], "Steward#"+.EndLabel$[[email protected]]+"::OnStartArena"; } } } break; } } set .Init,0; end; function Disp_Owner { set [email protected], getcastledata(getarg(0),1); if ([email protected]) announce "The ["+getcastlename(getarg(0))+"] castle "+((getarg(1))?"has been conquered":"is currently held")+" by the ["+getguildname([email protected])+"] 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 [email protected]$, ((.Options&4)?"position = 0":"online = 1"); if (.Options&2) set [email protected]$,gettimestr("%B %d, %Y",21); freeloop(1); for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) if (getarg(0)&(1<<[email protected])) { set [email protected], getcastledata(.Castles$[[email protected]],1); if ([email protected]) continue; set [email protected], query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"[email protected]+"' AND "[email protected]$,[email protected],[email protected]); for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) { if (.Options&8 && !(.Options&4)) { set [email protected]$, replacestr(getcharip([email protected][[email protected]]),".","a"); if (getd("[email protected]_"[email protected]+"_"[email protected]$)) continue; setd "[email protected]_"[email protected]+"_"[email protected]$,1; } if (.Options&2) { query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) VALUES ("+ "'no-reply',"[email protected][[email protected]]+",'** Siege Reward: "+getcastlename(.Castles$[[email protected]])+" **',"+ "'Brave one,% % Congratulations!% Your guild has successfully occupied% territory in the War of Emperium on% "[email protected]$+".% % % % % [ Your reward is attached. ]',"+ .Reward[0]+","+.Reward[1]+",0,"+.Reward[2]+",UNIX_TIMESTAMP(NOW()))"); if (!getd("[email protected]_"[email protected][[email protected]]) && isloggedin([email protected][[email protected]],[email protected][[email protected]])) { setd "[email protected]_"[email protected][[email protected]],1; message rid2name([email protected][[email protected]]),"You've got mail! Please re-login to update your mailing list."; } } else if (isloggedin([email protected][[email protected]])) { for(set [email protected],0; [email protected]<getarraysize(.Reward); set [email protected],[email protected]+2) getitem .Reward[[email protected]], .Reward[[email protected]+1], [email protected][[email protected]]; message rid2name([email protected][[email protected]]),"You have been rewarded for conquering "+getcastlename(.Castles$[[email protected]])+"."; } } } 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 [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if (gettime(4) == $WOE_CONTROL[[email protected]] && gettime(3) >= $WOE_CONTROL[[email protected]+1] && gettime(3) < $WOE_CONTROL[[email protected]+2]) { set [email protected], $WOE_CONTROL[[email protected]+2]; break; } mes "The War of Emperium is ^0055FFactive^000000 until ^FF0000"+Add_Zero([email protected])+"^000000 in the following regions:"; mes " "; for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) if (.Active[1]&(1<<([email protected]+1))) mes " > ^777777"+.Regions$[[email protected]]+"^000000"; } else mes "The War of Emperium is ^0055FFactive^000000."; } else { for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if ((gettime(4) == $WOE_CONTROL[[email protected]] && gettime(3) <= $WOE_CONTROL[[email protected]+1]) || gettime(4) < $WOE_CONTROL[[email protected]]) { setarray [email protected][0],$WOE_CONTROL[[email protected]],$WOE_CONTROL[[email protected]+1]; break; } if (!getarraysize([email protected])) setarray [email protected][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$[[email protected][0]]+"^000000 at "+Add_Zero([email protected][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 [email protected]$,"^0055FF"; set [email protected]$,""; for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) { if (.CastleWarp || .Active[1]&(1<<([email protected]+1))) set [email protected]$, [email protected]$+" ~ "+((.Active[1]&(1<<([email protected]+1)))[email protected]$:"^777777")+.Regions$[[email protected]]+" Castles^000000"; set [email protected]$, [email protected]$+":"; } set [email protected], select([email protected]$)-1; set [email protected]$,""; for(set [email protected],[email protected]*5; [email protected]<([email protected]*5)+5; set [email protected],[email protected]+1) { if (.CastleWarp || .Active[0]&(1<<[email protected])) set [email protected]$, [email protected]$+" ~ "+((.Active[0]&(1<<[email protected]))[email protected]$:"^777777")+getcastlename(.Castles$[[email protected]])+"^000000"; set [email protected]$, [email protected]$+":"; } set [email protected], select([email protected]$)-1; warp .Map$[[email protected]],.MapX[([email protected]*5)[email protected]],.MapY[([email protected]*5)[email protected]]; close; case 2: mes "[Schedule]"; if (.Size) { freeloop(1); for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) { mes "> ^FF0000"+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1])+"-"+Add_Zero($WOE_CONTROL[[email protected]+2])+")^000000"; for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) if ($WOE_CONTROL[[email protected]+3]&(1<<[email protected])) mes " ~ "+getcastlename(.Castles$[[email protected]])+" ^777777("+.Castles$[[email protected]]+")^000000"; if ([email protected]+4 < .Size) mes " "; } freeloop(0); } else mes "No times are configured."; next; break; case 3: mes "[Castle Ownership]"; for(set [email protected],0; [email protected]<6; set [email protected],[email protected]+1) { set [email protected], [email protected]*5; mes "> ^FF0000"+.Regions$[[email protected]]+"^000000"; for(set [email protected],[email protected]; [email protected]<([email protected]+5); set [email protected],[email protected]+1) { set [email protected], getcastledata(.Castles$[[email protected]],1); mes " ~ "+getcastlename(.Castles$[[email protected]])+": "+(([email protected])?"^0055FF"+getguildname([email protected]):"^777777unoccupied")+"^000000"; } if ([email protected] < 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 [email protected], select(" ~ "+implode(.Days$,": ~ "))-1; mes "[New Session]"; mes "Select a start time for ^0055FF"+.Days$[[email protected]]+"^000000."; next; set [email protected]$,""; for(set [email protected],0; [email protected]<23; set [email protected],[email protected]+1) set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":"; set [email protected][member=start], select([email protected]$)-1; mes "[New Session]"; mes "Select an end time for ^0055FF"+.Days$[[email protected]]+"^000000."; next; set [email protected]$,""; for(set [email protected],[email protected][member=start]+1; [email protected]<24; [email protected],[email protected]+1) set [email protected]$, [email protected]$+" ~ "+Add_Zero([email protected],1)+":"; set [email protected], select([email protected]$)[email protected][member=start]; for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if ([email protected] == $WOE_CONTROL[[email protected]] && (([email protected][member=start] >= $WOE_CONTROL[[email protected]+1] && [email protected][member=start] < $WOE_CONTROL[[email protected]+2]) || ([email protected] > $WOE_CONTROL[[email protected]+1] && [email protected] <= $WOE_CONTROL[[email protected]+2]) || ([email protected][member=start] <= $WOE_CONTROL[[email protected]+1] && [email protected] >= $WOE_CONTROL[[email protected]+2]))) { mes "[New Session]"; mes "The chosen times overlap with an existing session."; next; set [email protected],1; break; } if ([email protected]) { set [email protected],0; break; } set [email protected],0; while(1) { mes "[New Session]"; mes "^0055FF"+.Days$[[email protected]]+" ("+Add_Zero([email protected][member=start])+"-"+Add_Zero([email protected])+")^000000"; mes " > Castles:"; if ([email protected]) mes " ~ ^777777(none selected)^000000"; else for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) if ([email protected]&(1<<[email protected])) mes " ~ "+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")"; next; set [email protected]$,(([email protected])?" ~ ^FF0000Finished...^000000":"")+":"; for(set [email protected],0; [email protected]<30; set [email protected],[email protected]+1) set [email protected]$, [email protected]$+" ~ "+(([email protected]&(1<<[email protected]))?"^0055FF":"")+getcastlename(.Castles$[[email protected]])+" ("+.Castles$[[email protected]]+")^000000:"; set [email protected], select([email protected]$)-1; if ([email protected]) set [email protected], [email protected]^(1<<([email protected])); else { mes "[New Session]"; mes "Are you sure?"; next; switch(select(" ~ ^0055FFAdd session...^000000: ~ Continue selecting castles...: ~ ^777777Cancel^000000")) { case 1: for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) if (([email protected] == $WOE_CONTROL[[email protected]] && [email protected] <= $WOE_CONTROL[[email protected]+1]) || [email protected] < $WOE_CONTROL[[email protected]]) { set [email protected],1; break; } if ([email protected]) { set [email protected],1; set [email protected],.Size; } copyarray $WOE_CONTROL[[email protected]+4], $WOE_CONTROL[[email protected]], [email protected]; setarray $WOE_CONTROL[[email protected]], [email protected], [email protected][member=start], [email protected], [email protected]; set .Size, getarraysize($WOE_CONTROL); case 3: mes "[New Session]"; mes (([email protected])?"Session added.":"Cancelled."); next; set [email protected],1; case 2: break; } if ([email protected]) { set [email protected],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 [email protected]$,""; for(set [email protected],0; [email protected]<.Size; set [email protected],[email protected]+4) set [email protected]$, [email protected]$+" ~ "+.Days$[$WOE_CONTROL[[email protected]]]+" ("+Add_Zero($WOE_CONTROL[[email protected]+1],1)+"-"+Add_Zero($WOE_CONTROL[[email protected]+2],1)+"):"; set [email protected]$, [email protected]$+" ~ ^777777Cancel^000000"; set [email protected], select([email protected]$)-1; if ([email protected] == (.Size/4)) break; mes "[Remove Session]"; mes "Delete ^0055FF"+.Days$[$WOE_CONTROL[[email protected]*4]]+"'s^000000 session?"; mes "This action cannot be undone."; next; set [email protected], select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000"); mes "[Remove Session]"; if ([email protected] == 2) mes "Cancelled."; else { deletearray $WOE_CONTROL[[email protected]*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 [email protected], select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000"); mes "[Reload Settings]"; if ([email protected] == 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 [email protected], select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000"); mes "[Force Agit End]"; if ([email protected] == 3) mes "Cancelled."; else { set .ForceEnd, [email protected]; donpcevent "WOE_CONTROL::OnWOEEnd"; mes "WOE session terminated."; } next; break; case 5: set [email protected],1; break; } if ([email protected]) { set [email protected],0; break; } } break; case 5: close; } }}
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.