

HristDead
Members-
Posts
167 -
Joined
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by HristDead
-
Hi rAthena. I was wondering how to change this... How to make this script so when you use a ticket it will give a +1 safe refine instead of like to +15? thanks !! //===== rAthena Script ======================================= //= Ticket Refiner //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= [Official Conversion] //= Refiner that uses +5~9/+11 refine tickets to refine //= equipment with no chance of failure. //= NOTE: This NPC is currently disabled on official servers. //===== Additional Comments: ================================= //= 1.0 First version. [Euphy] //============================================================ prontera,184,177,6 script Refine Master 851,{ disable_items; if (countitem(6238) || countitem(6228) || countitem(6229) || countitem(6230) || countitem(6231) || countitem(6456)) set .@bWeaponUp,1; if (countitem(6239) || countitem(6232) || countitem(6233) || countitem(6234) || countitem(6235) || countitem(6457)) set .@bArmorUp,1; if (!.@bWeaponUp && !.@bArmorUp) { mes "[Refine Master]"; mes "Hello!"; mes "What's up?"; mes "I'm a specialist"; mes "for refining items,"; mes "but I don't work anymore."; next; switch(select("I'll go on my way.:Hmm... this makes me curious.")) { case 1: mes "[Refine Master]"; mes "Take care, adventurer."; close; case 2: mes "[Refine Master]"; mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000..."; mes "Bye bye~!"; close; } } emotion e_gasp; mes "[Refine Master]"; mes "Greetings!"; mes "I can refine an item up to the ^006400same level as your ticket^000000."; mes "You don't have to worry! There's no chance of breaking your item."; next; if(select("I'll come back later.:Refine item with ticket.") == 1) { mes "[Refine Master]"; mes "Okay."; mes "You can come again later."; close; } mes "[Refine Master]"; mes "Which equipment would you like to refine?"; next; setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower"; set .@menu$,""; for(set .@i,1; .@i<=10; set .@i,.@i+1) set .@menu$, .@menu$+((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"- [Empty]")+":"; set .@part, select(.@menu$); if (!getequipisequiped(.@part)) { mes "[Refine Master]"; mes "You have to equip the item you want to refine."; close; } if (!getequipisenableref(.@part)) { emotion e_otl; mes "[Refine Master]"; mes "Oh, I'm sorry."; mes "This item is impossible to refine."; close; } switch(getequipweaponlv(.@part)) { default: case 0: setarray .@tickets[0],6457,6235,6234,6233,6232,6239; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Armor"; set .@check,.@bArmorUp; break; case 1: case 2: case 3: case 4: setarray .@tickets[0],6456,6231,6230,6229,6228,6238; setarray .@levels[0],5,6,7,8,9,11; set .@type$,"Weapon"; set .@check,.@bWeaponUp; break; } if (!.@check) { emotion e_dots; mes "[Refine Master]"; mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000."; mes "See you later!"; close; } mes "[Refine Master]"; mes "Please choose which ^006400"+.@type$+" Refine Ticket^000000 you want to use."; next; set .@menu$,""; for(set .@i,0; .@i<getarraysize(.@tickets); set .@i,.@i+1) set .@menu$, .@menu$+getitemname(.@tickets[.@i])+":"; set .@select, select(.@menu$)-1; set .@ticket_lv, .@levels[.@select]; set .@ticket_id, .@tickets[.@select]; if (countitem(.@ticket_id) == 0) { emotion e_what; mes "[Refine Master]"; mes getitemname(.@ticket_id)+" is not in your inventory. Did you put it in your storage?"; mes "Please check again."; mes "See you later!"; close; } if (getequiprefinerycnt(.@part) >= .@ticket_lv) { emotion e_swt2; mes "[Refine Master]"; mes "^8B4513This item is already refined as much as your deed.^000000"; mes "Please come along with an item refined less than your ticket."; close; } mes "[Refine Master]"; mes "I'm going to refine ^006400"+getequipname(.@part)+"^8B4513 up to the +"+.@ticket_lv+" level^000000 with ^006400"+getitemname(.@ticket_id)+"^000000."; mes "May I proceed?"; next; if(select("No.:Yes.") == 1) { emotion e_dots; mes "[Refine Master]"; mes "Oh, you changed your mind."; mes "Ok."; mes "You can come back later."; close; } mes "[Refine Master]"; mes "Great."; mes "As you wish!"; mes "I have my own special way to refine..."; mes ".......ka boom!"; specialeffect EF_SUI_EXPLOSION; if (countitem(.@ticket_id)) delitem .@ticket_id,1; else { next; mes "Error!"; mes "Please report this."; close; } for(set .@i,getequiprefinerycnt(.@part); .@i<.@ticket_lv; set .@i,.@i+1) successrefitem .@part; next; emotion e_ho; mes "[Refine Master]"; mes "Alright, here it is~"; mes "Well, ^0000FF"+strcharinfo(0)+"^000000!"; mes "Congratulations on your shining "+.@type$+"."; mes "You look GREAT!"; mes "Farewell~!"; close; }
-
Good day rAthena, I was curious how i could find and change these images?: I was looking in textures but had no luck. Does anyone know?
-
Euphy WoE reward only gives guildmaster prize...
HristDead replied to HristDead's question in Scripting Support
It says 1|8.. 1 = enable all rewards and 8 is IP check. If it was for guildmaster only, wouldn't a 4 be involved? The problem is that I want all guild members rewarded but it doesn't. Just the guild leader. -
Euphy WoE reward only gives guildmaster prize...
HristDead replied to HristDead's question in Scripting Support
So how do I set it sir Capuche? For all members? -
I'm using Euphy's woe controller (not modified) but it only gives the guildmaster a prize after woe? How can I make it for all member? //===== rAthena Script ======================================= //= Euphy's WOE Controller //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.5 //===== Compatible With: ===================================== //= rAthena SVN r16958+ //===== 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 //============================================================ 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 .@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; } } }
-
Hi rAthena, can someone help me with this? I don't know how to do it if its even possible without source edits. Basically what I want is a Battleground-like WoE in only one castle. There are 2 teams. Team ID #1 and Team ID #2. Team #1 can only attack players of Team #2 and vice versa. The check can be made on items when they enter the castle (prt_gcas03). example: If a player has item ID 501 in inventory or equipped he will be set Team ID #1 and can only attack players from Team ID #2. Then if another player has item ID 502 equipped or in inventory, he will be set Team ID #2 and can only attack players of team ID #1. I know how to do the checks but not how to only make team 1 attack team 2 and vice versa. I don't think there is a party force command... or is there? ---------- Please, I am willing to pay!
-
It's a very nice idea but my character is unable to move when it auto-scrolls. How can i fix this?
-
Can someone help me make this changelook permanent?
HristDead posted a question in Scripting Support
Hi all. I was wondering if someone could help me make this changelook stay permanent? Character should still be able to use and change the headgear with npc though but is it possible to make them keep the same sprite even if they relogs? Its a bit like jTynne's script but with input and not a whole list. Thanks!! new_1-2,17,182,5 script Disguise Headgear 817,{ //save current look for later set @bottomview, getlook(3); set @topview, getlook(4); set @midview, getlook(5); //doesn't actually execute until just before a 'close' statement, or when the char leaves the npc's control addtimer 100000, strnpcinfo(3)+"::On_Leave"; mes "[Headgear Disguiser]"; mes "Hello, I can disguise your Dynamic Headgear that you've gained through voting/donating. I can change into any sprite you desire."; next; mes "[Headgear Disguiser]"; mes "As you can see, the Dynamic Costume Headgear is Top Headgear. This means that I can only disguise it in another Top Headgear. If you try a Lower or Middle Headgear, nothing will happen."; next; mes "Should I do this for you?"; menu "Yes",-,"No thanks.",L_Naw; if(isequipped(20006)){ INTRO: mes "Great! Now please input an item ID you would like to preview. (Please be careful with erroring item IDs, not every Headgear on the database websites works)"; input @itemid; //modifies char's look based on item set @equip, getiteminfo(@itemid, 5); set @view, getiteminfo(@itemid, 11); if(@equip != -1 && @view > 0) { //note: yes...i'm using atcommand here cause for some reason // 'setlook' has permanent effects...last time i checked at least if(@equip & 256) atcommand "@changelook 1 " + @view; } next; mes "Would to like to preview something else?"; if(select("Yes", "No") == 1) { goto INTRO; } //*preview wears off automatically here due to delayed timer*// close; L_Naw: mes "Ok"; close; On_Leave: atcommand "@changelook 1 " + @topview; close; } } Aw... no one? what about with annieruru script? changelook instead of getitem? mes "input a headgear item_id"; next; input .@upper_headgear; // try 2220 if ( !( .@nb = query_sql("select id, name_japanese from item_db where equip_locations & 256 and view = ( select view from item_db where equip_locations & 256 and id = "+ .@upper_headgear +" )", .@item_id, .@item_name$ ) ) ) { mes "no headgear was found"; close; } mes "these are the items that has same view_id when you input that item_id"; next; for ( .@i = 0; .@i < .@nb; .@i++ ) .@menu$ = .@menu$ + .@item_name$[.@i] +":"; .@pick = select( .@menu$ ) -1; mes "you chose "+ .@item_name$[ .@pick ]; getitem .@item_id[ .@pick ], 1; close; } -
Hi rAthena, I was wondering how to make this effect proc after warping. It works fine for equipping and also for unequipping but after warping the effect stops. Its probably because the sleep is set to 470000 but thats because because if i make it like every second the effect stacks and server laggs... Does anyone know? { set eff828,1; while(eff828==1){if (!checkoption(0x2) && !checkoption(0x4) && !checkoption(0x40)) specialeffect2 828; sleep2 470000;}},{ atcommand "@refresh"; }
-
Where could this number be coming from?
HristDead replied to HristDead's question in Scripting Support
Thank you!! Solved. -
I'm using the script that Skorm made for me, but I am getting this number showing up as dispbottom message and I've no clue where its coming from... I know it has to do with the map event because when I take that part out the number disappears. >< Does anyone know whats causing this? Here is the code: OnPCLoadMapEvent: set .@usr_map$, strcharinfo(3); dispbottom ""+getcharid(1); getpartymember $@TeamID1,1; getpartymember $@TeamID1,2; set .team1, $@partymembercount; copyarray .party_name_desu[0], $@partymemberaid[0],128; while(set(.@f,.@f+1)<=.team1) { if(getmapxy(.@map$,.@x,.@y,0,rid2name(.party_name_desu[.@f-1]))!=0) set .team1,.team1-1; if(.@map$==.@usr_map$) set(.@i,.@i+1); } getpartymember $@TeamID2,1; getpartymember $@TeamID2,2; set .team2, $@partymembercount; copyarray .party_name_desu2[0], $@partymemberaid[0],128; while(set(.@h,.@h+1)<=.team2) { if(getmapxy(.@map$,.@x,.@y,0,rid2name(.party_name_desu2[.@h-1]))!=0) set .team2,.team2-1; if(.@map$==.@usr_map$) { set(.@i,.@i+1); } } if(.@i >= 4 && .team1 >= 2 && .team2 >= 2) pvpon "guild_vs2"; end; OnPCDieEvent: if(strcharinfo(3)=="guild_vs2"&&getmapflag("guild_vs2",mf_pvp)) if(getcharid(1)==$@TeamID1) if(!(set(.team1,.team1-1))) { dispbottom "Party 2 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=getarraysize(.party_name_desu2)) getitem 501,1,.party_name_desu2[.@h-1]; deletearray .party_name_desu[0],128; deletearray .party_name_desu2[0],128; } else if(getcharid(1)==$@TeamID2) if(!(set(.team2,.team2-1))) { dispbottom "Party 1 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=getarraysize(.party_name_desu)) getitem 501,1,.party_name_desu[.@h-1]; deletearray .party_name_desu[0],128; deletearray .party_name_desu2[0],128; } } guild_vs2 mapflag loadevent
-
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
- script pvpon -1,{ OnPCLoadMapEvent: set .@usr_map$, strcharinfo(3); dispbottom ""+getcharid(1); getpartymember $@TeamID1,1; getpartymember $@TeamID1,2; set .team1, $@partymembercount; copyarray .party_name_desu[0], $@partymemberaid[0],128; while(set(.@f,.@f+1)<=.team1) { if(getmapxy(.@map$,.@x,.@y,0,rid2name(.party_name_desu[.@f-1]))!=0) set .team1,.team1-1; if(.@map$==.@usr_map$) set(.@i,.@i+1); } getpartymember $@TeamID2,1; getpartymember $@TeamID2,2; set .team2, $@partymembercount; copyarray .party_name_desu2[0], $@partymemberaid[0],128; while(set(.@h,.@h+1)<=.team2) { if(getmapxy(.@map$,.@x,.@y,0,rid2name(.party_name_desu2[.@h-1]))!=0) set .team2,.team2-1; if(.@map$==.@usr_map$) { set(.@i,.@i+1); } } if(.@i >= 4 && .team1 >= 2 && .team2 >= 2) pvpon "guild_vs2"; end; OnPCDieEvent: if(strcharinfo(3)=="guild_vs2"&&getmapflag("guild_vs2",mf_pvp)) if(getcharid(1)==$@TeamID1) if(!(set(.team1,.team1-1))) { dispbottom "Party 2 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=getarraysize(.party_name_desu2)) getitem 501,1,.party_name_desu2[.@h-1]; deletearray .party_name_desu[0],128; deletearray .party_name_desu2[0],128; } else if(getcharid(1)==$@TeamID2) if(!(set(.team2,.team2-1))) { dispbottom "Party 1 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=getarraysize(.party_name_desu)) getitem 501,1,.party_name_desu[.@h-1]; deletearray .party_name_desu[0],128; deletearray .party_name_desu2[0],128; } } guild_vs2 mapflag loadevent Sorry forgot about ghost party members. Thank you Skorm it works now you're amazing!! There's only one tiny thing left.... there's a random "4" popping up as message, could it have something to do with the dispbottom? it occured since i put your fixed script -
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
Everything works except this doesn't trigger. but there's no error either... OnPCDieEvent: if(strcharinfo(3)=="guild_vs2") if(getcharid(1)==$@TeamID1) if(!set(.team1,.team1-1)) { getpartymember $@TeamID2,2; dispbottom "Party 2 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=$@partymembercount) getitem 501,1,$@partymemberaid[.@h-1]; } else if(getcharid(1)==$@TeamID2) if(!set(.team2,.team2-1)) { getpartymember $@TeamID1,2; dispbottom "Party 1 Wins"; pvpoff "guild_vs2"; while(set(.@h,.@h+1)<=$@partymembercount) getitem 501,1,$@partymemberaid[.@h-1]; } } guild_vs2 mapflag loadevent -
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
Thanks guys that works great!! Can I ask one more? >< Do you as well know how to reward the winning party thats left in guild_vs2 map? I tried using a part of Skorms scirpt and made some edits. However now it procs every time a player is killed... but i want it to proc when there is only one party left Is that possible? OnPCDieEvent: set .@usr_map$, strcharinfo(3); getpartymember $@TeamID1; set .@a, $@partymembercount; copyarray .@party_name_desu$[0], $@partymembername$[0],128; while(set(.@f,.@f+1)<=.@a) { getmapxy(.@map$,.@x,.@y,0,.@party_name_desu$[.@f-1]); if ( .@tmp$ != .@map$ ) { dispbottom "Party 1 Wins"; end; } getpartymember $@TeamID2; set .@b, $@partymembercount; copyarray .@party_name_desu2$[0], $@partymembername$[0],128; while(set(.@h,.@h+1)<=.@ { getmapxy(.@map$,.@x,.@y,0,.@party_name_desu2$[.@h-1]); if(.@a < 1) dispbottom "Party 2 Wins"; end; } } guild_vs2 mapflag loadevent -
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
Thanks you! is it tested? It will difficult for me to quad client and test. -
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
Hmm... it goes on instantly after warping. How to wait to activate until all members of both parties are present? -
activate pvp when X players are in a map.
HristDead replied to HristDead's question in Scripting Support
Thanks! Hmm Sir patskie, I have another question. What if I want to make it count the party member of party ID? (its attached) I tried this, but doesn't work. >.< - script pvpon -1,{ OnPCLoadMapEvent: if(getpartymember($@TeamID1) == 2 && getpartymember($@TeamID2) == 2); pvpon "guild_vs2"; end; } guild_vs2 mapflag loadevent -
Hi rathena, can anyone help me with this script? I want to make it so that when there are > 9 players in a map (guild_vs2), pvp will automatically run. Right now, it turns on even if there is < 9 players... Here's what I got so far: OnPCLoadMapEvent: if(getmapusers("guild_vs2") > 9) sleep2 1000; pvpon "prt_are01"; end; }
-
I have a problem with the aura, it keeps showing. And it's very huge too... the third job ones. I've set the aura settings in client.conf to a level that I can't reach, but it still shows. Also I've diffed my client properly. Can anyone share how I can remove it? If not, a link with custom third job aura's would be great. same as 2nd jobs is possible or anything smaller than this big aura that seems like a aoe skill! I'll appreciate it a lot!
-
Hi pro scripters. can you help me? I'm not looking for a whole script, just one code that looks like this; I have some faction system were 3 factions(/parties) fight eachother. How to make it that when on map prt_are01 only one party is left (so the other two are killed/out of the map) to auto-reward the remaining players/party and auto-warp them back to town? thanks!!
-
Is this possible to make? Chat/waitroom with warp
HristDead replied to HristDead's question in Script Requests
Thanks for the reply! Hmm. the first script I tried but it doesn't give the message. I changed my mind too actually... is it possible to first force the players to be in a party before they can join a the chatroom? I've tried to replace the item count part with this but it doesnt work. >.< any idea? end; OnWarp: getpartymember getcharid(1); if($@partymembercount < 2) { atcommand "@refresh"; mes "Please party up first."; close; } -
I'm looking for a script like this: One NPC... It's a chat/waiting room that needs 10 players, but to enter the chatroom you need an specific item i.e poring coin or a cancel window will pop up. If that chat is full, it'll warp all players inside to example prontera. I already use search but I couldnt figure it out. I know how to make a chatroom but not with requirement and also not with warp included. many thanks for who is willing to help!
-
Bottom message if monster drops an item.
HristDead replied to HristDead's question in Scripting Support
Thanks sir Brian I will try that! -
I want a message appearing when a monster drops a item, in this case, a sticky mucus. Sticky mucus is however not a 100% drop rate... right now the problem is that the message appears every time that i kill a monster and i have sticky mucus below 16. I know why too, because it doesnt have a check for getting the item id... but i dont know the script for that... :/ Can anyone help me get what i want? This is what I have so far.. help is truly appreciated. onNPCKillEvent: if(Q88003 == 1 && countitem(938) < 16){ dispbottom "You have [ "+ ( countitem(938) ) +" / 15 ] Sticky Mucus"; end;
-
I did.. Then why does it work if i put in npc/custom/filename.txt? it doesnt seem to have a problem there. pathname is also correct, tripple checked. done as well.