Scarlet Butterfly

Members
  • Content count

    62
  • Avg. Content Per Day

    0
  • Joined

  • Last visited

Community Reputation

0 Neutral

1 Follower

About Scarlet Butterfly

  • Rank
    Santa Poring

Profile Information

  • Gender
    Female
  • Location
    Canada

Recent Profile Visitors

966 profile views
  1. Quest Shop

    1. I believe it is the latest Quest Shop from Euphy's collection. 2. I'm using rAthena SVN r12761 Client: 2013-08-07 Pre-Renewal 3. As far as I'm aware, no there's no error on the map server either.
  2. Quest Shop

    Whenever I try to take on one item from the Quest Shop, it doesn't show me what the requirements are (see screenshot below): Requirements Window: Step 1: Step 2: Script: Credits to: Euphy - Quest Shop //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6c //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //= 1.6c Replaced function 'A_An' with "F_InsertArticle". //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; //============================================================ payoo,75,122,6 script Rewards 71,{ callfunc "qshop"; } // Script Core //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0],"#CASHPOINTS","Cash Points"; // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1],"Headgears","Weapons","Other"; // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // ----------------------------------------------------------- freeloop(0); set .menu$,""; for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) { set .menu$, .menu$+.Shops$[[email protected]]+":"; npcshopdelitem "qshop"[email protected],909; } end; OnMenu: set [email protected], getarraysize(@i); if ([email protected]) set @shop_index, select(.menu$); else if ([email protected] == 1) set @shop_index, @i[0]; else { for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) set [email protected]$, [email protected]$+.Shops$[@i[[email protected]]]+":"; set @shop_index, @i[select([email protected]$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[@shop_index] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"[email protected]_index,1; npcshopattach "qshop"[email protected]_index; end; OnBuyItem: // [email protected][] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray [email protected][0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray [email protected][3],getd(".q_"[email protected]_index+"_"[email protected][0]+"[0]"),getarraysize(getd(".q_"[email protected]_index+"_"[email protected][0])); set [email protected][2],[email protected][1]*[email protected][3]; if ([email protected][2] || [email protected][2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname([email protected][0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+(([email protected][2] > 1)[email protected][2]+"x ":"")+Slot([email protected][0])+"^000000"; mes "Requirements:"; disable_items; if ([email protected][4]) mes " > "+Chk(Zeny,[email protected][4]*[email protected][1])+([email protected][4]*[email protected][1])+" Zeny^000000"; if ([email protected][5]) mes " > "+Chk(getd(.Points$[0]),[email protected][5]*[email protected][1])+([email protected][5]*[email protected][1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+([email protected][5]*[email protected][1])+")^000000"; if ([email protected][6]) for(set [email protected],6; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) mes " > "+Chk(countitem([email protected][[email protected]]),[email protected][[email protected]+1]*[email protected][1])+((.ShowID)?"{"[email protected][[email protected]]+"} ":"")+Slot([email protected][[email protected]])+" ("+countitem([email protected][[email protected]])+"/"+([email protected][[email protected]+1]*[email protected][1])+")^000000"; next; setarray @qe[1], getiteminfo([email protected][0],5), getiteminfo([email protected][0],11); if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192))) set [email protected],1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname([email protected][0])+"^000000:"+(([email protected] && [email protected][7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight([email protected][0],[email protected][2])) { mes "[Quest Shop]"; mes "^FF0000You need "+((([email protected][2]*getiteminfo([email protected][0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if ([email protected][4]) set Zeny, Zeny-([email protected][4]*[email protected][1]); if ([email protected][5]) setd .Points$[0], getd(.Points$[0])-([email protected][5]*[email protected][1]); if ([email protected][6]) for(set [email protected],6; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) delitem [email protected][[email protected]],[email protected][[email protected]+1]*[email protected][1]; getitem [email protected][0],[email protected][2]; if (.Announce) announce strcharinfo(0)+" has created "+(([email protected][2] > 1)[email protected][2]+"x "+getitemname([email protected][0]):callfunc("F_InsertArticle",getitemname([email protected][0])))+"!",0; specialeffect2 EF_FLOWERLEAF; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray [email protected][0],getarg(2),getarg(3),getarg(4); for(set [email protected],5; [email protected]<getargcount(); set [email protected],[email protected]+2) { if (getitemname(getarg([email protected])) == "null") { debugmes "Quest requirement #"+getarg([email protected])+" invalid (skipped)."; return; } else setarray [email protected][[email protected]],getarg([email protected]),getarg([email protected]+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),[email protected][0],getarraysize([email protected]); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return [email protected]$; case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return [email protected]$+" ["+getitemslots(getarg(0))+"]"; default: return [email protected]$; } } } function script qshop { deletearray @i[0],getarraysize(@i); for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1) set @i[[email protected]],getarg([email protected]); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1 - shop qshop4 -1,909:-1 - shop qshop5 -1,909:-1 Any help would be appreciated! Thank you.
  3. Simple Question.

    Just thought that this is a simple question for scripters: How do I take out the chat bubble on top of this NPC? (see image below) PVP Warper Script Credits to: Zealock! //===== rAthena Script ======================================= //= Untitle Script //===== By: ================================================== //= Zealock! //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena , eAthena //===== Description: ========================================= //= PVP Warper //============================================================ payoo,100,118,6 script PvP Warper 120,{ mes "[ PVP Warper ]"; mes "Do you have what it takes?!"; next; menu "Yes, I have a Hunger for Blood",PatayanNa,"No, Too Lazy to Kill",No; PatayanNa: mes "[ PvP Warper ]"; mes "You Made the Right Choice! GOODLUCK!"; next; mes "Let's Go!"; warp "guild_vs2",0,0; L_All: announce "[ PvP Warper ] Announcer: "+strcharinfo(0)+" has entered the Room ",0; close; No: mes "[ PvP Warper ]"; mes "Are you Scared?"; next; mes "Come Back Again, if you already have the Guts!"; close; //WAITING ROOM updates every 2.5 second OnInit: while(1) { delwaitingroom; waitingroom "PvP Warper ["+getmapusers("guild_vs2")+"]",0; sleep 2500; //2.5 seconds } end; } // Mapflags guild_vs2 mapflag nowarp guild_vs2 mapflag nowarpto guild_vs2 mapflag pvp on guild_vs2 mapflag noteleport guild_vs2 mapflag nosave SavePoint Also, is there a script that I can add to it, that gives the ability for characters to choose what PVP Map they want to join in? Thank you!
  4. R> Script request IF it's possible!

    I have a different script now that works with my fluxcp. So whoever gets the most kills achieves the Best Player title. But I'm wondering now if it's possible to have a script that would reward an item for this one? Full Credits to: ~AnnieRuru~ //===== eAthena Script ======================================================= //= PVP ladder script with dota announcement ( SQL only ) //===== By: ================================================================== //= ~AnnieRuru~ //===== Current Version: ===================================================== //= 2.9 //===== Compatible With: ===================================================== //= eAthena SQL 14279, with MySQL 5.1 //===== Description: ========================================================= //= PVP ladder store in SQL table //= plus anti-sit-killer feature //===== Topic ================================================================ //= http://www.eathena.ws/board/index.php?showtopic=177918 //===== Additional Comments: ================================================= //= still don't have modify value option, will be done ... in next year ... //============================================================================ // add all the maps that you want this script to trigger ... all pvp and event maps perhaps ? // but if you already enable "all" maps, then can comment all these guild_vs1 mapflag loadevent guild_vs2 mapflag loadevent guild_vs3 mapflag loadevent guild_vs4 mapflag loadevent guild_vs5 mapflag loadevent - script DOTAPVP -1,{ OnInit: // Config set .sound, 1; // soundeffect : 0 - disable, 1 - play soundeffect to all players on map, 2 - play soundeffect to an area around the killer, 3 - play soundeffect to killer only set .announce, 0; // announce to : 0 - global, 1 - map set .announcemap, 1; // announce the map name in the announcement ? : 0 - off, 1 - on set .announcekill, 0; // announce who pawn who's head : 0 - off, 1 - on set .msg_die, 0; // show message who kill you when die : 0 - off, 1 - on set .msg_kill, 0; // show message you kill who when killed someone : 0 - off, 1 - on set .gmnokill, 0; // GMs are not suppose to kill players. A GM with <this number> level or higher will do nothing. IF set to 60, GM60 and above kill any player will not get anything : 0 - off set .killingspree, 3; set .dominating, 4; set .megakill, 5; set .unstoppable, 6; set .wickedsick, 7; set .monsterkill, 8; set .godlike, 9; set .holyshit, 10; set .continue, 1; // after beyond-godlike, every <this number> kills will make announcement again set .owned, 5; // how many times the party/guild has to kill to announce ownage set .owncontinue, 1; // after ownage, every <this number> party/guild cumulative kills will make ownage announce again set .min_gm_menu, 90; // minimum level of GM can use the GM menu on ladder npc set .showtotal, 20; // show the length of ladder. Note : Maximum value = 128 set .showpage, 10; // set the views per page. Note : Maximum value = 128 set .loweststreak, 3; // mininum streak count allow to show in highest streak ladder. Default 3 means must at least have killing spree streak to display in ladder set .lowestownage, 5; // mininum ownage count allow to show in longest ownage ladder. Default 5 means must at least have 5 ownage counts to display in ladder setarray .maptrigger$, // only these maps will trigger this script "all"; // uncomment this to allow load all maps // anti-sit-killer system // a player must kill another player with this minimum <this number> base level to get the announcement and in the ladder. // Otherwise only have streak ended announcement and killed player's streak reset. // Its possible for a level 1 novice to kill a level 99 player and he/she will still get in the ladder // but a level 99 kill a level 1 player will get nothing // 0 - off this system ( default is 55, pk setting ) set .lvltokill, 0; // when a player kill another same player <this number> times in a row, the player is warp back to save point. // and the player's streak, kills, and ownage count will deduct accordingly // 0 - off this system set .counttopunish, 0; // minimum level range to kill another player // eg. when set to 20, player level 99 needs to kill another player with minimum level of 79 to get announcement and increase the kill rank. // but a player with base level 50 kills a level 99 will also get the announcement // higher base level cannot kill lower level, but lower level can kill higher level // 0 - off this system set .minlvlrange, 0; // Config ends ------------------------------------------------------------------------------------------ // to prevent bug happen if ( .announce < 0 || .announce > 1 ) set .announce, 0; if ( .continue < 1 ) set .continue, 1; if ( .owncontinue < 1 ) set .owncontinue, 1; if ( .gmnokill <= 0 ) set .gmnokill, 100; if ( .lvltokill <= 1 ) set .lvltokill, 0; if ( .counttopunish <= 1 ) set .counttopunish, 0; set .maptriggersize, getarraysize(.maptrigger$); end; // script start. OnPCKillEvent: if ( getgmlevel() >= .gmnokill ) end; getmapxy [email protected]$, [email protected], [email protected], 0; if ( .maptrigger$ != "all" ) { for ( set [email protected], 0; [email protected] < .maptriggersize; set [email protected], [email protected] +1 ) { if ( [email protected]$ == .maptrigger$[[email protected]] ) break; } if ( [email protected] == .maptriggersize ) end; } attachrid killedrid; if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) { if ( .msg_die ) message strcharinfo(0),"You have been killed by "+ rid2name(killerrid); if ( .msg_kill ) message rid2name(killerrid),"You just killed "+ strcharinfo(0); } if ( @PlayersKilledStreak >= .holyshit ) set [email protected]$,"Beyond Godlike"; else if ( @PlayersKilledStreak >= .godlike ) set [email protected]$,"Godlike"; else if ( @PlayersKilledStreak >= .monsterkill ) set [email protected]$,"Monster Kill"; else if ( @PlayersKilledStreak >= .wickedsick ) set [email protected]$,"Wicked Sick"; else if ( @PlayersKilledStreak >= .unstoppable ) set [email protected]$,"Unstoppable"; else if ( @PlayersKilledStreak >= .megakill ) set [email protected]$,"Mega-kill"; else if ( @PlayersKilledStreak >= .dominating ) set [email protected]$,"Dominating"; else if ( @PlayersKilledStreak >= .killingspree ) set [email protected]$,"Killing Spree"; if ( @PlayersKilledStreak >= .killingspree && killerrid == getcharid(3) ) announce strcharinfo(0) +" has ended "+( (sex)?"him":"her" )+" own "+ [email protected]$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ [email protected]$):""),16|.announce; else if ( @PlayersKilledStreak >= .killingspree ) announce rid2name(killerrid) +" has ended "+ strcharinfo(0) +"'s "+ [email protected]$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ [email protected]$):""),16|.announce; else if ( .announcekill && killerrid != getcharid(3) ) announce rid2name(killerrid) +" has pawned "+ strcharinfo(0) +"'s head "+( (.announcemap)?("at "+ [email protected]$):""),16|.announce; set @PlayersKilledStreak,0; set @dota_sql_deaths, @dota_sql_deaths +1; set @dota_multikills,0; query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )"; set [email protected]_gid, getcharid(2); if ( [email protected]_gid ) { setd ".dota_sql_"+ [email protected]_gid +"_c", 0; if ( getd(".dota_sql_"+ [email protected]_gid +"_h") ) query_sql "replace into ownladder values ( "+ [email protected]_gid +", '"+ escape_sql(getguildname([email protected]_gid)) +"', "+ getd(".dota_sql_"+ [email protected]_gid +"_c") +", "+ getd(".dota_sql_"+ [email protected]_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ [email protected]_gid +"_t") +") )"; } if ( killerrid == getcharid(3) || baselevel < .lvltokill ) end; if ( .minlvlrange ) set [email protected], baselevel; attachrid killerrid; if ( .minlvlrange && [email protected] + .minlvlrange < baselevel ) end; if ( .counttopunish ) { if ( @sitkillminute != gettime(2) ) { deletearray @sitkillid, 128; deletearray @sitkilltimes, 128; set @sitkillminute, gettime(2); } set [email protected], getarraysize(@sitkillid); for ( set [email protected],0; [email protected] < [email protected]; set [email protected], [email protected] +1 ) { if ( @sitkillid[[email protected]] != killedrid ) continue; else { set @sitkilltimes[[email protected]], @sitkilltimes[[email protected]] +1 ; if ( @sitkilltimes[[email protected]] >= .counttopunish ) { warp "SavePoint",0,0; announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0; debugmes strcharinfo(0) +" is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[[email protected]] + " times"; logmes "is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[[email protected]] +" times"; if ( @PlayersKilledStreak == @dota_sql_streaks ) { set @dota_sql_streaks, @dota_sql_streaks +1 - .counttopunish; set @dota_sql_streaktime, gettimetick(2); } set @PlayersKilledStreak, @PlayersKilledStreak +1 - .counttopunish; set @dota_sql_kills, @dota_sql_kills +1 - .counttopunish; query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )"; set [email protected]_gid, getcharid(2); if ( [email protected]_gid ) { if ( getd(".dota_sql_"+ [email protected]_gid +"_c") == getd(".dota_sql_"+ [email protected]_gid +"_h") ) { setd ".dota_sql_"+ [email protected]_gid +"_h", getd(".dota_sql_"+ [email protected]_gid +"_h") +1 - .counttopunish; setd ".dota_sql_"+ [email protected]_gid +"_t", gettimetick(2); } setd (".dota_sql_"+ [email protected]_gid +"_c"), getd(".dota_sql_"+ [email protected]_gid +"_c") +1 - .counttopunish; query_sql "replace into ownladder values ( "+ [email protected]_gid +", '"+ escape_sql(getguildname([email protected]_gid)) +"', "+ getd(".dota_sql_"+ [email protected]_gid +"_c") +", "+ getd(".dota_sql_"+ [email protected]_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ [email protected]_gid +"_t") +") )"; } end; } break; } } if ( [email protected] == [email protected] ) { set @sitkillid[[email protected]], killedrid; set @sitkilltimes[[email protected]], 1; } } set @PlayersKilledStreak, @PlayersKilledStreak +1 ; set @dota_sql_kills, @dota_sql_kills +1 ; if ( @PlayersKilledStreak > @dota_sql_streaks ) { set @dota_sql_streaks, @PlayersKilledStreak; set @dota_sql_streaktime, gettimetick(2); } query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )"; if ( @PlayersKilledStreak == .killingspree ) setarray [email protected]$,"killingspree.wav","is on a KILLING SPREE","!"; else if ( @PlayersKilledStreak == .dominating ) setarray [email protected]$,"dominating.wav","is DOMINATING","!"; else if ( @PlayersKilledStreak == .megakill ) setarray [email protected]$,"megakill.wav","has a MEGA KILL","!"; else if ( @PlayersKilledStreak == .unstoppable ) setarray [email protected]$,"unstoppable.wav","is UNSTOPPABLE","!!"; else if ( @PlayersKilledStreak == .wickedsick ) setarray [email protected]$,"wickedsick.wav","is WICKED SICK","!!"; else if ( @PlayersKilledStreak == .monsterkill ) setarray [email protected]$,"monsterkill.wav","has a MONSTER KILL","!!"; else if ( @PlayersKilledStreak == .godlike ) setarray [email protected]$,"godlike.wav","is GODLIKE","!!!"; else if ( @PlayersKilledStreak >= .holyshit && ( (@PlayersKilledStreak - .holyshit) % .continue == 0 ) ) setarray [email protected]$,"holyshit.wav","is BEYOND GODLIKE",". Someone KILL "+( (sex)?"HIM":"HER" ) +"!!!!!!"; if ( [email protected]$[1] != "" ) { announce strcharinfo(0) +" "+ [email protected]$[1] +"["+ @PlayersKilledStreak +"] "+( (.announcemap)?("at "+ [email protected]$):"") + [email protected]$[2],16|.announce; if ( .sound == 1 ) soundeffectall [email protected]$[0],0,[email protected]$; else if ( .sound == 2 ) soundeffectall [email protected]$[0],0; else if ( .sound == 3 ) soundeffect [email protected]$[0],0; } set @dota_multikills, @dota_multikills + 1; deltimer "DOTAPVP::OnStreakReset"; addtimer 18000,"DOTAPVP::OnStreakReset"; set [email protected]_gid, getcharid(2); if ( [email protected]_gid && [email protected]_gid != [email protected]_gid ) { setd ".dota_sql_"+ [email protected]_gid +"_c", getd(".dota_sql_"+ [email protected]_gid +"_c") +1 ; if ( getd(".dota_sql_"+ [email protected]_gid +"_c") > getd(".dota_sql_"+ [email protected]_gid +"_h") ) { setd ".dota_sql_"+ [email protected]_gid +"_h", getd(".dota_sql_"+ [email protected]_gid +"_c"); setd ".dota_sql_"+ [email protected]_gid +"_t", gettimetick(2); } query_sql "replace into ownladder values ( "+ [email protected]_gid +", '"+ escape_sql(getguildname([email protected]_gid)) +"', "+ getd(".dota_sql_"+ [email protected]_gid +"_c") +", "+ getd(".dota_sql_"+ [email protected]_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ [email protected]_gid +"_t") +") )"; } set [email protected]_multikills, @dota_multikills; set [email protected], getcharid(3); sleep 1500; if ( [email protected]_gid && [email protected]_gid != [email protected]_gid && getd(".dota_sql_"+ [email protected]_gid +"_c") >= .owned && ( ( getd(".dota_sql_"+ [email protected]_gid +"_c") - .owned ) % .owncontinue == 0 ) ) { if ( .announce ) mapannounce [email protected]$, "The guild ["+ getguildname([email protected]_gid) +"] is OWNING["+ getd(".dota_sql_"+ [email protected]_gid +"_c") +"] !!!",16; else announce "The guild ["+ getguildname([email protected]_gid) +"] is OWNING["+ getd(".dota_sql_"+ [email protected]_gid +"_c") +"] !!!",16; if ( .sound == 1 ) soundeffectall "ownage.wav",0,[email protected]$; else if ( .sound == 2 ) soundeffectall "ownage.wav",0; else if ( .sound == 3 && attachrid([email protected]) ) soundeffect "ownage.wav",0; } sleep 1250; if ( !attachrid([email protected]) ) end; if ( [email protected]_multikills == 2 ) { if ( .announce ) mapannounce [email protected]$, strcharinfo(0) +" just got a Double Kill !",16; else announce strcharinfo(0) +" just got a Double Kill !",16; if ( .sound == 1 ) soundeffectall "doublekill.wav",0,[email protected]$; else if ( .sound == 2 ) soundeffectall "doublekill.wav",0; else if ( .sound == 3 ) soundeffect "doublekill.wav",0; } else if ( [email protected]_multikills == 3 ) { if ( .announce ) mapannounce [email protected]$, strcharinfo(0) +" just got a Triple Kill !!!",16; else announce strcharinfo(0) +" just got a Triple Kill !!!",16; if ( .sound == 1 ) soundeffectall "triplekill.wav",0,[email protected]$; else if ( .sound == 2 ) soundeffectall "triplekill.wav",0; else if ( .sound == 3 ) soundeffect "triplekill.wav",0; } else if ( [email protected]_multikills == 4 ) { if ( .announce ) mapannounce [email protected]$, strcharinfo(0) +" just got a Ultra Kill !!!",16; else announce strcharinfo(0) +" just got a Ultra Kill !!!",16; if ( .sound == 1 ) soundeffectall "ultrakill.wav",0,[email protected]$; else if ( .sound == 2 ) soundeffectall "ultrakill.wav",0; else if ( .sound == 3 ) soundeffect "ultrakill.wav",0; } else if ( [email protected]_multikills >= 5 ) { if ( .announce ) mapannounce [email protected]$, strcharinfo(0) +" is on a Rampage !!!",16; else announce strcharinfo(0) +" is on a Rampage !!!",16; if ( .sound == 1 ) soundeffectall "rampage.wav",0,[email protected]$; else if ( .sound == 2 ) soundeffectall "rampage.wav",0; else if ( .sound == 3 ) soundeffect "rampage.wav",0; } end; OnStreakReset: set @dota_multikills, 0; end; OnWhisperGlobal: if ( @spam_dotapvp + 3 >= gettimetick(2) ) // 3 seconds interval so player don spam this command end; set @spam_dotapvp, gettimetick(2); if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime; if ( @dota_sql_kills || @dota_sql_deaths ) { dispbottom "Your current Streak : "+ @PlayersKilledStreak; dispbottom "Your total Kills : "+ @dota_sql_kills; dispbottom "Your total Deaths : "+ @dota_sql_deaths; dispbottom "Your highest Streak : "+ @dota_sql_streaks; query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", [email protected]$; dispbottom "Your highest Streak on : "+ [email protected]$; } else dispbottom "You are not in the pvp ladder yet."; if ( getcharid(2) ) { if ( getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) { query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), [email protected], [email protected], [email protected]; setd ".dota_sql_"+ getcharid(2) +"_c", [email protected]; setd ".dota_sql_"+ getcharid(2) +"_h", [email protected]; setd ".dota_sql_"+ getcharid(2) +"_t", [email protected]; } if ( getd(".dota_sql_"+ getcharid(2) +"_h") ) { dispbottom "Your guild current Own : "+ getd(".dota_sql_"+ getcharid(2) +"_c"); dispbottom "Your guild highest Own : "+ getd(".dota_sql_"+ getcharid(2) +"_h"); query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", [email protected]$; dispbottom "Your guild highest Own on : "+ [email protected]$; } else dispbottom "Your guild is not in the ladder yet."; } end; OnPCLoginEvent: if ( .maptrigger$ != "all" ) end; OnPCLoadMapEvent: if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) { if ( .maptrigger$ != "all" ) { getmapxy [email protected]$, [email protected], [email protected], 0; for ( set [email protected], 0; [email protected] < .maptriggersize; set [email protected], [email protected] +1 ) { if ( [email protected]$ == .maptrigger$[[email protected]] ) break; } if ( [email protected] == .maptriggersize ) end; } query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime; } if ( getcharid(2) && getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) { query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), [email protected], [email protected], [email protected]; setd ".dota_sql_"+ getcharid(2) +"_c", [email protected]; setd ".dota_sql_"+ getcharid(2) +"_h", [email protected]; setd ".dota_sql_"+ getcharid(2) +"_t", [email protected]; } end; } support,62,49,5 script PvP-StatsViewer 57,{ set [email protected]$, strnpcinfo(0); while (1) { mes "["+ [email protected]$ +"]"; mes "Hello "+ strcharinfo(0) +"..."; mes "If you want to I can show you your PVP stats."; next; switch ( select ( "Most Kills","Highest Streak","Longest Ownage","Own Information","Explanation" ) ) { case 1: set [email protected], query_sql("select name, kills, deaths from pvpladder order by kills desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), [email protected]$, [email protected], [email protected]); if ( [email protected] == 0 ) { mes "["+ [email protected]$ +"]"; mes "The ladder currently is empty."; next; } for ( set [email protected],0; [email protected] < [email protected]; set [email protected], [email protected] + getvariableofnpc(.showpage,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; for ( set [email protected], [email protected]; [email protected] < (getvariableofnpc(.showpage,"DOTAPVP") + [email protected]) && [email protected] < [email protected]; set [email protected], [email protected] + 1 ) { mes "^996600"+ ([email protected]+1) +": ^006699"+ [email protected]$[[email protected]] +" ^00AA00["+ [email protected][[email protected]] +"] ^FF0000<"+ [email protected][[email protected]] +">^000000"; } next; } break; case 2: set [email protected], query_sql("select name, streaks, date_format(streaktime,'%a %e/%c/%y %r') from pvpladder where streaks >= "+ getvariableofnpc(.loweststreak,"DOTAPVP") +" order by streaks desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), [email protected]$, [email protected], [email protected]$); if ( [email protected] == 0 ) { mes "["+ [email protected]$ +"]"; mes "The ladder currently is empty."; next; } for ( set [email protected],0; [email protected] < [email protected]; set [email protected], [email protected] + getvariableofnpc(.showpage,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; for ( set [email protected], [email protected]; [email protected] < (getvariableofnpc(.showpage,"DOTAPVP") + [email protected]) && [email protected] < [email protected]; set [email protected], [email protected] + 1 ) { mes "^996600"+ ([email protected]+1) +": ^006699"+ [email protected]$[[email protected]] +" ^70AC11{"+ [email protected][[email protected]] +"} ^000000on :"; mes " ^EE8800"+ [email protected]$[[email protected]] +"^000000"; } next; } break; case 3: set [email protected], query_sql("select name, highestown, date_format(owntime,'%a %e/%c/%y %r') from ownladder where highestown >= "+ getvariableofnpc(.lowestownage,"DOTAPVP") +" order by highestown desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), [email protected]$, [email protected], [email protected]$); if ( [email protected] == 0 ) { mes "["+ [email protected]$ +"]"; mes "The ladder currently is empty."; next; } for ( set [email protected],0; [email protected] < [email protected]; set [email protected], [email protected] + getvariableofnpc(.showpage,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; for ( set [email protected], [email protected]; [email protected] < (getvariableofnpc(.showpage,"DOTAPVP") + [email protected]) && [email protected] < [email protected]; set [email protected], [email protected] + 1 ) { mes "^996600"+ ([email protected]+1) +": ^006699"+ [email protected]$[[email protected]] +" ^00AAAA("+ [email protected][[email protected]] +") ^000000on :"; mes " ^EE8800"+ [email protected]$[[email protected]] +"^000000"; } next; } break; case 4: if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) query_sql "select kills, deaths, streaks, unix_timestamp(streaktime), date_format(streaktime,'%a %e/%c/%y %r') from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime, [email protected]$; mes "["+ [email protected]$ +"]"; if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) mes "You not yet kill any player."; else { mes "Your Current Streak : ^70AC11{"+ @PlayersKilledStreak +"}^000000"; mes "Your Total Kills : ^00AA00["+ @dota_sql_kills +"]^000000"; mes "Your Death Counts : ^FF0000<"+ @dota_sql_deaths +">^000000"; if ( @dota_sql_kills || @dota_sql_streaks ) { mes "Highest Streak was ^70AC11{"+ @dota_sql_streaks +"}^000000 on :"; query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", [email protected]$; mes " ^EE8800"+ [email protected]$ +"^000000"; } } next; if ( getcharid(2) ) { if ( getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) == 0 ) { query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), [email protected], [email protected], [email protected]; set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_c"), "DOTAPVP" ), [email protected]; set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ), [email protected]; set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ), [email protected]; } mes "["+ [email protected]$ +"]"; if ( getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) == 0 ) { mes "Your guild not yet kill any player."; } else { mes "Your guild name : ^006699"+ strcharinfo(2) +"^000000"; mes "Current Owning : ^00AAAA("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_c"), "DOTAPVP" ) +")^000000"; mes "Longest Ownage was ^00AAAA("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) + ")^000000 on :"; query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", [email protected]$; mes " ^EE8800"+ [email protected]$ +"^000000"; } next; } break; case 5: mes "["+ [email protected]$ +"]"; mes "Explanation for Most Kills:"; mes " "; mes "^996600Rank. ^006699NAME ^00AA00[Total Kills] ^FF0000<Deaths>^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^00AA00Kills^000000 added when a player kills another player."; mes " "; mes "^FF0000Deaths^000000 count increase when a player killed by another player, or suicide (eg: Grand Cross)."; mes " "; mes "A player killed by monsters, homunculus or pets will not add the kills or deaths count."; next; mes "["+ [email protected]$ +"]"; mes "Explanation for Highest Streak:"; mes " "; mes "^996600Rank. ^006699NAME ^70AC11{Highest Streak} ^000000on :"; mes " ^EE8800TIME^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^70AC11Streak^000000 are added every time a player kills another player. It will reset upon log out, killed by another player, or suicide (eg: Sacrifice)."; mes " "; mes "Then it record in the server the ^EE8800TIME^000000 when that player got that highest streak."; mes " "; mes "A player killed by monsters, homunculus or pets will not reset the streak."; mes " "; mes "--------------------------------"; mes " "; mes "The numbers of straight kills to get these announcements are :"; mes "^70AC11"+ getvariableofnpc(.killingspree,"DOTAPVP") +"^000000 : Killing Spree"; mes "^70AC11"+ getvariableofnpc(.dominating,"DOTAPVP") +"^000000 : Dominating"; mes "^70AC11"+ getvariableofnpc(.megakill,"DOTAPVP") +"^000000 : Mega Kill"; mes "^70AC11"+ getvariableofnpc(.unstoppable,"DOTAPVP") +"^000000 : Unstoppable"; mes "^70AC11"+ getvariableofnpc(.wickedsick,"DOTAPVP") +"^000000 : Wicked Sick"; mes "^70AC11"+ getvariableofnpc(.monsterkill,"DOTAPVP") +"^000000 : Monster Kill"; mes "^70AC11"+ getvariableofnpc(.godlike,"DOTAPVP") +"^000000 : Godlike"; mes "^70AC11"+ getvariableofnpc(.holyshit,"DOTAPVP") +"^000000 : Beyond Godlike"; next; mes "["+ [email protected]$ +"]"; mes "Explanation for Longest Ownage:"; mes " "; mes "^996600Rank. ^006699NAME ^00AAAA(Longest Ownage) ^000000on :"; mes " ^EE8800TIME^000000"; mes " "; mes "--------------------------------"; mes " "; mes "The ^00AAAAOwnage^000000 added every time any guild members killed another player that doesn't belong to his/her guild. It will reset when any of the guild member was killed by ANY player, including his/her guild member."; mes " "; mes "Then it record in the server the ^EE8800TIME^000000 when the guild got that longest ownage."; mes " "; mes "If the server went under maintainance, the current ownage will survive after the server restart."; mes " "; mes "Any guild member killed by monster, homunculus or pets will not reset the ownage count."; next; if ( getvariableofnpc(.lvltokill,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; mes "You must kill another player with minimum base level of "+ getvariableofnpc(.lvltokill,"DOTAPVP") +", in order to get an announcement or get in the ladder."; mes " "; mes "It's possible for a base level 1 novice kills a base level 99 player and still can get in the ladder."; mes "However when a player level 99 kills a level 1 novice will get nothing."; next; } if ( getvariableofnpc(.counttopunish,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; mes "Some noob players try to kill the same person over and over again in hope of getting his/her name appear in the ladder."; mes "However if you trying to do the same thing on this ladder, your name will announce to the public, and your action will be recorded into the server to notify the GMs."; next; } if ( getvariableofnpc(.minlvlrange,"DOTAPVP") ) { mes "["+ [email protected]$ +"]"; mes "When you kill another player thats lower base level than you, the base level gap between you and that player must not more than "+ getvariableofnpc(.minlvlrange,"DOTAPVP") +"."; mes " "; if ( getvariableofnpc(.minlvlrange,"DOTAPVP") >= 200) mes "In other words, if your base level is 500, the player you killed must be at least level "+( 500 - getvariableofnpc(.minlvlrange,"DOTAPVP") )+" then only you will get the announcement and in the ladder."; else if ( getvariableofnpc(.minlvlrange,"DOTAPVP") >= 70) mes "In other words, if your base level is 255, the player you killed must be at least level "+( 255 - getvariableofnpc(.minlvlrange,"DOTAPVP") )+" then only you will get the announcement and in the ladder."; else mes "In other words, if your base level is 99, the player you killed must be at least level "+( 99 - getvariableofnpc(.minlvlrange,"DOTAPVP") )+" then only you will get the announcement and in the ladder."; mes "Higher base level kills lower level gets nothing, however lower level player kills higher level will get the announcement."; next; } break; } } } Thank you.
  5. R> Script request IF it's possible!

    No I'm not, this is my inventory below:
  6. R> Script request IF it's possible!

    It worked! It now recognizes PvP all around. But one problem is, when I got the top rank - I didn't receive the reward item (Example: item # 512). Tried completely re-logging in as well and still no luck. PVP Ladder: //===== Stolao Scripts ================================== //= PvP Ladder //===== Author ================================================== //= Stolao (Original Author) //= Happy (2.0) //===== Current Version: ===================================== //= 2.0(unofficial) //===== Compatible With: ===================================== //= rAthena SVN, Hercules, 3ceam, eAthena //===== Description: ========================================= // Configurable Pvp Ladder //===== Comments: ============================================ //= [Stolao] // Needs bug testing, please report any bugs // Unable to test thurally on my comp atm //= [Happy] // Update* I tested it and found tons of bugs, I'm in rush so // I fixed them myself. It is now working 100%. // The version is unofficial version. Sorry Stolao I fixed it // Without your permission XD //===== Additional Comments: ================================= //= 1.00 Initial Release //= 1.01 Added Location with veiwing of ladder //= 1.02 Added GM Menu //= 1.03 Added atcommand //= 1.04 Shortend menu script //= 1.05 Added PvpPoints into confug and script //= 1.06 Added Abuse Protection //= 1.07 Made Pvp Points Configurable //= 1.08 Fixed typo in Reset Option //= 1.09 Made Amount of pvp points earned configurable //= 1.0A Ajusted Spacing for easier reading //= 1.0B Added Warp to savepoint on abuse into config //= 2.0 (unofficial)Fixed bugs on ranking modification and // bitwise permissions //= 2.0b minor fix on resetting the ladder //= 2.1 tested fix to ladder reset part //===== Contact Ifo: ========================================= //= [Stolao] // Email: [email protected] //= [Happy] // Email: http://hercules.ws/board/user/164-happy/ //============================================================ payoo,96,123,0 script PVP Ladder 857,{ mes "[PVP Ladder]"; OnPvpLadder: mes "Ranking"; if(getgmlevel() >= .GM){ // Menu Generator for GM and Normal Player set [email protected],select("View Ranking:Leave:Reset PVP Stats"); } else { set [email protected],select("View Ranking:Leave"); } switch([email protected]) { // Where generated menu goes to case 3: // DReset PvP Stats mes "Are you sure you want to delete"; mes "ALL pvp records?"; if(select("No:Yes")==1) close; next; mes "Wait one Moment..."; mes "....."; cleararray $TOPPK$[0],0,127; // Clears array where top rank char names are stored. cleararray $TOPPK[0],0,127; // Clears array where top rank kill count are stored. query_sql("DELETE FROM `char_reg_num_db` WHERE `key` = 'pl_pkcount'"); // Clears kills saved on character variables set [email protected], getcharid(3); // Remembers RID of current char talking to npc set [email protected], query_sql("select account_id from `char` where online = 1", [email protected]); for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) { // Deletes kills of online players if(attachrid([email protected][[email protected]])){ //attach rid of online player 1 by 1 and remove kills set pl_pkcount,0; } } attachrid([email protected]); // attach remembered rid back mes "Cleared pvp data."; close; case 1: // View PvP Records for(set [email protected],1; [email protected] <= .MaxPlayers; set [email protected],[email protected]+1){ mes ([email protected])+": "+ $TOPPK$[[email protected]] +" with "+ $TOPPK[[email protected]] +" kills"; if(([email protected]) % 10 == 0){ // A nice way to create multiple pages by 10 ranks if(select("Read More:Leave") == 1){ next; } else { close; } } } case 2: // Leave close; } close; OnPCKillEvent: if(.Options&2 && (agitcheck() || agitcheck2())){ // Check to disable during woe end; } if(getgmlevel() <= .GmLvl){ if(.Options&1 || strcharinfo(3) == .Map$){ if(.Options&32){ // Repeatkill abuse counter for(set [email protected],.RepeatCount; [email protected] > 0; set [email protected], [email protected]){ set @PKedID[[email protected]+1], @PKedID[[email protected]]; // Old killedrids moved to upper array elements } set @PKedID,killedrid; // set killedrid to [0] position. for(set [email protected],1; [email protected] < .RepeatCount; set [email protected],[email protected] + 1){ if(@PKedID[0] == @PKedID[[email protected]]){ // check if killerid same as the previously killedrids set [email protected], [email protected] + 1; // if all 5 past killedrid are the same then this would become 5 and trigger protection } else { break; // else stop checking } } } if([email protected] < .RepeatCount){ // if not abusing kills according to repeatcount set pl_pkcount,pl_pkcount + 1; if(.Options&16) { set getd(.PointType$),getd(.PointType$) + .PvpEarned; // add points } if(pl_pkcount > $TOPPK[.MaxPlayers]) { // If higher than last ranker for(set [email protected],1; [email protected] <= .MaxPlayers ; set [email protected], [email protected] + 1) { // Reorganize the ranking if (pl_pkcount > $TOPPK[[email protected]] && [email protected]) { set [email protected],[email protected]; } if (strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; set [email protected],0; break; } if ( strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] != [email protected]) { set [email protected],[email protected]; break; } } if ([email protected]) { for (set [email protected],.MaxPlayers; [email protected] >= 0 ; set [email protected], [email protected] - 1) { if ([email protected] < [email protected]) { setarray $TOPPK$[[email protected] + 1], $TOPPK$[[email protected]]; // move this ranker backward setarray $TOPPK[[email protected] + 1], $TOPPK[[email protected]]; } if ([email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; if(.Options&4) { announce strcharinfo(0)+"'s rank is now "+([email protected])+"",bc_all; } break; } } } } } else { if(.Options&64) { warp "Save",0,0; } } } } end; OnInit: set .GM,99; set .MaxPlayers,10; // Number of Players held in Records set .GmLvl,99; // Highest GM level Able to Hold a Record, if Option 8 is Disabled set .Map$,"prontera"; // Map Pvp Must Take Place on in order to Count, if Option 1 is Disabled set .RepeatCount,5; // Number of kills on same person before it detects abuse, max of 128 set .PointType$,"#PvpPoints"; // Name of points earned, E.G. #Cash Points set .PvpEarned,1; // Number of Pvp Points Earned set .Options,1|4|32|64; // Bitwise Variable // 1: Only Counts Kills on .Map$ if Disabled // 2: Disables Record Holding during WOE // 4: Announce When Someone Takes a Rank // 8: Allow Gms Above level .GmLvl To Be on Ladder // 16: Gain PvP Points on Kills (#PvpPoints) // 32: Repeat Kill Protection // 64: Warp to Save on abuse // Example: "1+2+4 = 7" No Forced Map, Disables Record Holding during WOE and Announces New Record Holders bindatcmd("PvpLadder" ,"Pvp_Ladder::OnPvpLadder",0,99); end; OnPCLoginEvent: if( $TOPPK$ == strcharinfo(0) && countitem(512) < 1) { getitembound 512,1,4; } else if(countitem(512) >= 1){ delitem 512,1; } }
  7. R> Script request IF it's possible!

    How many kills does it need to take til a ranking is recognized? Because I've tested it by killing a player multiple times with that add-on in the script, and it shows no progress on the rankings (please see image below). Ranking (0 with 0 kills from 1-10): Script with add-on: //===== Stolao Scripts ================================== //= PvP Ladder //===== Author ================================================== //= Stolao (Original Author) //= Happy (2.0) //===== Current Version: ===================================== //= 2.0(unofficial) //===== Compatible With: ===================================== //= rAthena SVN, Hercules, 3ceam, eAthena //===== Description: ========================================= // Configurable Pvp Ladder //===== Comments: ============================================ //= [Stolao] // Needs bug testing, please report any bugs // Unable to test thurally on my comp atm //= [Happy] // Update* I tested it and found tons of bugs, I'm in rush so // I fixed them myself. It is now working 100%. // The version is unofficial version. Sorry Stolao I fixed it // Without your permission XD //===== Additional Comments: ================================= //= 1.00 Initial Release //= 1.01 Added Location with veiwing of ladder //= 1.02 Added GM Menu //= 1.03 Added atcommand //= 1.04 Shortend menu script //= 1.05 Added PvpPoints into confug and script //= 1.06 Added Abuse Protection //= 1.07 Made Pvp Points Configurable //= 1.08 Fixed typo in Reset Option //= 1.09 Made Amount of pvp points earned configurable //= 1.0A Ajusted Spacing for easier reading //= 1.0B Added Warp to savepoint on abuse into config //= 2.0 (unofficial)Fixed bugs on ranking modification and // bitwise permissions //= 2.0b minor fix on resetting the ladder //= 2.1 tested fix to ladder reset part //===== Contact Ifo: ========================================= //= [Stolao] // Email: [email protected] //= [Happy] // Email: http://hercules.ws/board/user/164-happy/ //============================================================ payoo,96,123,0 script PVP Ladder 857,{ mes "[PVP Ladder]"; OnPvpLadder: mes "Ranking"; if(getgmlevel() >= .GM){ // Menu Generator for GM and Normal Player set [email protected],select("View Ranking:Leave:Reset PVP Stats"); } else { set [email protected],select("View Ranking:Leave"); } switch([email protected]) { // Where generated menu goes to case 3: // DReset PvP Stats mes "Are you sure you want to delete"; mes "ALL pvp records?"; if(select("No:Yes")==1) close; next; mes "Wait one Moment..."; mes "....."; cleararray $TOPPK$[0],0,127; // Clears array where top rank char names are stored. cleararray $TOPPK[0],0,127; // Clears array where top rank kill count are stored. query_sql("DELETE FROM `char_reg_num_db` WHERE `key` = 'pl_pkcount'"); // Clears kills saved on character variables set [email protected], getcharid(3); // Remembers RID of current char talking to npc set [email protected], query_sql("select account_id from `char` where online = 1", [email protected]); for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) { // Deletes kills of online players if(attachrid([email protected][[email protected]])){ //attach rid of online player 1 by 1 and remove kills set pl_pkcount,0; } } attachrid([email protected]); // attach remembered rid back mes "Cleared pvp data."; close; case 1: // View PvP Records for(set [email protected],1; [email protected] <= .MaxPlayers; set [email protected],[email protected]+1){ mes ([email protected])+": "+ $TOPPK$[[email protected]] +" with "+ $TOPPK[[email protected]] +" kills"; if(([email protected]) % 10 == 0){ // A nice way to create multiple pages by 10 ranks if(select("Read More:Leave") == 1){ next; } else { close; } } } case 2: // Leave close; } close; OnPCKillEvent: if(.Options&2 && (agitcheck() || agitcheck2())){ // Check to disable during woe end; } if(getgmlevel() <= .GmLvl){ if(.Options&1 || strcharinfo(3) == .Map$){ if(.Options&32){ // Repeatkill abuse counter for(set [email protected],.RepeatCount; [email protected] > 0; set [email protected], [email protected]){ set @PKedID[[email protected]+1], @PKedID[[email protected]]; // Old killedrids moved to upper array elements } set @PKedID,killedrid; // set killedrid to [0] position. for(set [email protected],1; [email protected] < .RepeatCount; set [email protected],[email protected] + 1){ if(@PKedID[0] == @PKedID[[email protected]]){ // check if killerid same as the previously killedrids set [email protected], [email protected] + 1; // if all 5 past killedrid are the same then this would become 5 and trigger protection } else { break; // else stop checking } } } if([email protected] < .RepeatCount){ // if not abusing kills according to repeatcount set pl_pkcount,pl_pkcount + 1; if(.Options&16) { set getd(.PointType$),getd(.PointType$) + .PvpEarned; // add points } if(pl_pkcount > $TOPPK[.MaxPlayers]) { // If higher than last ranker for(set [email protected],1; [email protected] <= .MaxPlayers ; set [email protected], [email protected] + 1) { // Reorganize the ranking if (pl_pkcount > $TOPPK[[email protected]] && [email protected]) { set [email protected],[email protected]; } if (strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; set [email protected],0; break; } if ( strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] != [email protected]) { set [email protected],[email protected]; break; } } if ([email protected]) { for (set [email protected],.MaxPlayers; [email protected] >= 0 ; set [email protected], [email protected] - 1) { if ([email protected] < [email protected]) { setarray $TOPPK$[[email protected] + 1], $TOPPK$[[email protected]]; // move this ranker backward setarray $TOPPK[[email protected] + 1], $TOPPK[[email protected]]; } if ([email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; if(.Options&4) { announce strcharinfo(0)+"'s rank is now "+([email protected])+"",bc_all; } break; } } } } } else { if(.Options&64) { warp "Save",0,0; } } } } end; OnInit: set .GM,99; set .MaxPlayers,10; // Number of Players held in Records set .GmLvl,99; // Highest GM level Able to Hold a Record, if Option 8 is Disabled set .Map$,"prontera"; // Map Pvp Must Take Place on in order to Count, if Option 1 is Disabled set .RepeatCount,5; // Number of kills on same person before it detects abuse, max of 128 set .PointType$,"#PvpPoints"; // Name of points earned, E.G. #Cash Points set .PvpEarned,1; // Number of Pvp Points Earned set .Options,4|32|64; // Bitwise Variable // 1: Only Counts Kills on .Map$ if Disabled // 2: Disables Record Holding during WOE // 4: Announce When Someone Takes a Rank // 8: Allow Gms Above level .GmLvl To Be on Ladder // 16: Gain PvP Points on Kills (#PvpPoints) // 32: Repeat Kill Protection // 64: Warp to Save on abuse // Example: "1+2+4 = 7" No Forced Map, Disables Record Holding during WOE and Announces New Record Holders bindatcmd("PvpLadder" ,"Pvp_Ladder::OnPvpLadder",0,99); end; } OnPCLoginEvent: if( $TOPPK$ == strcharinfo(0) && countitem(<512>) < 1) { getitembound <512>,1,4; } else if(countitem(<512>) >= 1){ delitem <512>,1; } Thank you.
  8. R> Script request IF it's possible!

    This is the PVP Ladder that I'm currently using. Credits to: Stolao //===== Stolao Scripts ================================== //= PvP Ladder //===== Author ================================================== //= Stolao (Original Author) //= Happy (2.0) //===== Current Version: ===================================== //= 2.0(unofficial) //===== Compatible With: ===================================== //= rAthena SVN, Hercules, 3ceam, eAthena //===== Description: ========================================= // Configurable Pvp Ladder //===== Comments: ============================================ //= [Stolao] // Needs bug testing, please report any bugs // Unable to test thurally on my comp atm //= [Happy] // Update* I tested it and found tons of bugs, I'm in rush so // I fixed them myself. It is now working 100%. // The version is unofficial version. Sorry Stolao I fixed it // Without your permission XD //===== Additional Comments: ================================= //= 1.00 Initial Release //= 1.01 Added Location with veiwing of ladder //= 1.02 Added GM Menu //= 1.03 Added atcommand //= 1.04 Shortend menu script //= 1.05 Added PvpPoints into confug and script //= 1.06 Added Abuse Protection //= 1.07 Made Pvp Points Configurable //= 1.08 Fixed typo in Reset Option //= 1.09 Made Amount of pvp points earned configurable //= 1.0A Ajusted Spacing for easier reading //= 1.0B Added Warp to savepoint on abuse into config //= 2.0 (unofficial)Fixed bugs on ranking modification and // bitwise permissions //= 2.0b minor fix on resetting the ladder //= 2.1 tested fix to ladder reset part //===== Contact Ifo: ========================================= //= [Stolao] // Email: [email protected] //= [Happy] // Email: http://hercules.ws/board/user/164-happy/ //============================================================ payoo,96,123,0 script PVP Ladder 857,{ mes "[PVP Ladder]"; OnPvpLadder: mes "Ranking"; if(getgmlevel() >= .GM){ // Menu Generator for GM and Normal Player set [email protected],select("View Ranking:Leave:Reset PVP Stats"); } else { set [email protected],select("View Ranking:Leave"); } switch([email protected]) { // Where generated menu goes to case 3: // DReset PvP Stats mes "Are you sure you want to delete"; mes "ALL pvp records?"; if(select("No:Yes")==1) close; next; mes "Wait one Moment..."; mes "....."; cleararray $TOPPK$[0],0,127; // Clears array where top rank char names are stored. cleararray $TOPPK[0],0,127; // Clears array where top rank kill count are stored. query_sql("DELETE FROM `char_reg_num_db` WHERE `key` = 'pl_pkcount'"); // Clears kills saved on character variables set [email protected], getcharid(3); // Remembers RID of current char talking to npc set [email protected], query_sql("select account_id from `char` where online = 1", [email protected]); for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) { // Deletes kills of online players if(attachrid([email protected][[email protected]])){ //attach rid of online player 1 by 1 and remove kills set pl_pkcount,0; } } attachrid([email protected]); // attach remembered rid back mes "Cleared pvp data."; close; case 1: // View PvP Records for(set [email protected],1; [email protected] <= .MaxPlayers; set [email protected],[email protected]+1){ mes ([email protected])+": "+ $TOPPK$[[email protected]] +" with "+ $TOPPK[[email protected]] +" kills"; if(([email protected]) % 10 == 0){ // A nice way to create multiple pages by 10 ranks if(select("Read More:Leave") == 1){ next; } else { close; } } } case 2: // Leave close; } close; OnPCKillEvent: if(.Options&2 && (agitcheck() || agitcheck2())){ // Check to disable during woe end; } if(getgmlevel() <= .GmLvl){ if(.Options&1 || strcharinfo(3) == .Map$){ if(.Options&32){ // Repeatkill abuse counter for(set [email protected],.RepeatCount; [email protected] > 0; set [email protected], [email protected]){ set @PKedID[[email protected]+1], @PKedID[[email protected]]; // Old killedrids moved to upper array elements } set @PKedID,killedrid; // set killedrid to [0] position. for(set [email protected],1; [email protected] < .RepeatCount; set [email protected],[email protected] + 1){ if(@PKedID[0] == @PKedID[[email protected]]){ // check if killerid same as the previously killedrids set [email protected], [email protected] + 1; // if all 5 past killedrid are the same then this would become 5 and trigger protection } else { break; // else stop checking } } } if([email protected] < .RepeatCount){ // if not abusing kills according to repeatcount set pl_pkcount,pl_pkcount + 1; if(.Options&16) { set getd(.PointType$),getd(.PointType$) + .PvpEarned; // add points } if(pl_pkcount > $TOPPK[.MaxPlayers]) { // If higher than last ranker for(set [email protected],1; [email protected] <= .MaxPlayers ; set [email protected], [email protected] + 1) { // Reorganize the ranking if (pl_pkcount > $TOPPK[[email protected]] && [email protected]) { set [email protected],[email protected]; } if (strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; set [email protected],0; break; } if ( strcharinfo(0) == $TOPPK$[[email protected]] && [email protected] != [email protected]) { set [email protected],[email protected]; break; } } if ([email protected]) { for (set [email protected],.MaxPlayers; [email protected] >= 0 ; set [email protected], [email protected] - 1) { if ([email protected] < [email protected]) { setarray $TOPPK$[[email protected] + 1], $TOPPK$[[email protected]]; // move this ranker backward setarray $TOPPK[[email protected] + 1], $TOPPK[[email protected]]; } if ([email protected] == [email protected]) { setarray $TOPPK$[[email protected]], strcharinfo(0); setarray $TOPPK[[email protected]], pl_pkcount; if(.Options&4) { announce strcharinfo(0)+"'s rank is now "+([email protected])+"",bc_all; } break; } } } } } else { if(.Options&64) { warp "Save",0,0; } } } } end; OnInit: set .GM,99; set .MaxPlayers,10; // Number of Players held in Records set .GmLvl,99; // Highest GM level Able to Hold a Record, if Option 8 is Disabled set .Map$,"prontera"; // Map Pvp Must Take Place on in order to Count, if Option 1 is Disabled set .RepeatCount,5; // Number of kills on same person before it detects abuse, max of 128 set .PointType$,"#PvpPoints"; // Name of points earned, E.G. #Cash Points set .PvpEarned,1; // Number of Pvp Points Earned set .Options,4|32|64; // Bitwise Variable // 1: Only Counts Kills on .Map$ if Disabled // 2: Disables Record Holding during WOE // 4: Announce When Someone Takes a Rank // 8: Allow Gms Above level .GmLvl To Be on Ladder // 16: Gain PvP Points on Kills (#PvpPoints) // 32: Repeat Kill Protection // 64: Warp to Save on abuse // Example: "1+2+4 = 7" No Forced Map, Disables Record Holding during WOE and Announces New Record Holders bindatcmd("PvpLadder" ,"Pvp_Ladder::OnPvpLadder",0,99); end; }
  9. R> Script request IF it's possible!

    Is there a script that exists that gives the ability to reward a player items when he achieves "Top PVP Player" title? Then if he looses that title, he will loose the items as well automatically? Or is that not possible at all? Any help will be appreciated. Thank you!
  10. Custom Items problem

    SORRY!!! Nevermind! I figured it out through my sprite folder! Thank you again everyone! Thank you everyone for all your help !!! Now I completely understand how to implement custom items !!! Alright, the issue doesn't come from your settings, it was the drag files. Copy the files from the attached archive in this post in your ¾ÆÀÌÅÛ folder. Update: Now that I uploaded those files you sent me, it wouldn't let me view it through equipment info (see image below). And the same thing goes for - Angel Wings, Angelic Wings, Angeling Wings. So far the only ones that worked are - Hollow Mask and Baby Angel wings. itemInfo.lub [29001] = { unidentifiedDisplayName = "Fox Tail", unidentifiedResourceName = "fox_tail", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Fox Tail", identifiedResourceName = "fox_tail", identifiedDescriptionName = { "The original fox tail.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Lower^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1083 }, [29002] = { unidentifiedDisplayName = "Angel Wings", unidentifiedResourceName = "angel_wings", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Angel Wings", identifiedResourceName = "angel_wings", identifiedDescriptionName = { "Angel Wings.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1084 }, [29003] = { unidentifiedDisplayName = "Angelic Wings", unidentifiedResourceName = "angelic_wings", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Angelic Wings", identifiedResourceName = "angelic_wings", identifiedDescriptionName = { "Angelic Wings.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1085 }, [29004] = { unidentifiedDisplayName = "Angeling Wings", unidentifiedResourceName = "angeling_wings", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Angeling Wings", identifiedResourceName = "angeling_wings", identifiedDescriptionName = { "Angeling Wings.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1086 }, [29005] = { unidentifiedDisplayName = "Baby Angel Wings", unidentifiedResourceName = "baby_angel", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Baby Angel Wings", identifiedResourceName = "baby_angel", identifiedDescriptionName = { "Wings from a baby angel.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1087 }, Item_db.txt 29000,hollow_mask,Hollow Mask,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1082,{},{},{} 29001,fox_tail,Fox Tail,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1083,{},{},{} 29002,angel_wings,Angel Wings,5,5,0,10,,5,,4,0xFFFFFFFF,7,2,1,,1,1,1084,{},{},{} 29003,angelic_wings,Angelic Wings,5,5,0,10,,5,,4,0xFFFFFFFF,7,2,1,,1,1,1085,{},{},{} 29004,angeling_wings,Angeling Wings,5,5,0,10,,5,,4,0xFFFFFFFF,7,2,1,,1,1,1086,{},{},{} 29005,baby_angel,Baby Angel Wings,5,5,0,10,,5,,4,0xFFFFFFFF,7,2,1,,1,1,1087,{},{},{} accessoryid.lub ACCESSORY_hollow_mask = 1082, ACCESSORY_fox_tail = 1083, ACCESSORY_angel_wings = 1084, ACCESSORY_angelic_wings = 1085, ACCESSORY_angeling_wings = 1086, ACCESSORY_baby_angel = 1087, } Accname.lub [ACCESSORY_IDs.ACCESSORY_hollow_mask] = "_hollow_mask", [ACCESSORY_IDs.ACCESSORY_fox_tail] = "_fox_tail", [ACCESSORY_IDs.ACCESSORY_angel_wings] = "_angel_wings", [ACCESSORY_IDs.ACCESSORY_angelic_wings] = "_angelic_wings", [ACCESSORY_IDs.ACCESSORY_angeling_wings] = "_angeling_wings", [ACCESSORY_IDs.ACCESSORY_baby_angel] = "_baby_angel", }
  11. Custom Items problem

    Oh, that's not the fox tail I used. The item I have came from this link: https://rathena.org/board/files/file/3112-custom-collection-102-items/
  12. Custom Items problem

    Thank you! The Hollow Mask works (see image 1), but when I try to wear the Fox Tail, the client crashes (see image 2). I thought I installed it the same way as the mask. So I don't see why it errors. Image 1 Image 2 Item_db.txt 29000,hollow_mask,Hollow Mask,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1082,{},{},{} 29001,brown_fox_tail,Fox Tail,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1083,{},{},{} data\luafiles514\lua files\datainfo\accessoryid.lub ACCESSORY_hollow_mask = 1082, ACCESSORY_brown_fox_tail = 1083, } data\luafiles514\lua files\datainfo\accname.lub [ACCESSORY_IDs.ACCESSORY_hollow_mask] = "_hollow_mask", [ACCESSORY_IDs.ACCESSORY_brown_fox_tail] = "_brown_fox_tail", } itemInfo.lub [29000] = { unidentifiedDisplayName = "Natzu Mask", unidentifiedResourceName = "hollow_mask", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Natzu Mask", identifiedResourceName = "hollow_mask", identifiedDescriptionName = { "A mask exclusively for the administrator Natzu.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 4, ClassNum = 1082 }, [29001] = { unidentifiedDisplayName = "Fox Tail", unidentifiedResourceName = "brown_fox_tail", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Fox Tail", identifiedResourceName = "brown_fox_tail", identifiedDescriptionName = { "The original fox tail.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Lower^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1083 }, ITEMS: Female: Male: Item: Collection: Drop:
  13. Custom Items problem

    By 'Main GRF' - I assume you mean MyServer.GRF? Here are screenshots of my files in my main grf using GRF Builder. Item: Collection: Drop: Female? Male? Now when I attempted to upload another custom item, and double clicked it to wear it - it errors and boots me off the game. Why is that? Screenshot: itemInfo.lub: [29001] = { unidentifiedDisplayName = "Fox Tail", unidentifiedResourceName = "_brownfoxtail", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Fox Tail", identifiedResourceName = "_brownfoxtail", identifiedDescriptionName = { "The original fox tail.", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Lower^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 2, ClassNum = 1083 }, item_db.txt 29001,_brownfoxtail,Fox Tail,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1083,{},{},{}
  14. Custom Items problem

    how about the sprite / act of that item is it already on the directory? I mean those drops / male / female sprites. Yes I believe I have the right folders and images in the right places. Please see screenshots below for reference. Data Folder: Item: Collection: Sprite: Female? Male?
  15. Custom Items problem

    This is what I have... itemInfo.lub [29000] = { unidentifiedDisplayName = "Hollow Mask", unidentifiedResourceName = "hollow_mask", unidentifiedDescriptionName = { "Unknown Item, can be identified by [Magnifier]." }, identifiedDisplayName = "Hollow Mask", identifiedResourceName = "hollow_mask", identifiedDescriptionName = { "<desc>", "<goes>", "<here>", "Class: ^777777Headgear^000000", "Defense: ^7777775^000000", "Location: ^777777Mid^000000", "Weight: ^77777710^000000", "Applicable Job: ^777777Every Job^000000" }, slotCount = 3, ClassNum = 1082 }, Item_db.txt 29000,hollow_mask,Hollow Mask,5,5,0,10,,5,,3,0xFFFFFFFF,7,2,512,,1,1,1082,{},{},{}