Dota PVP Ladder

AnnieRuru

~~Cute~Cute~Scripter~~
Messages
1,677
Points
0
Location
your next door ~
Discord
AnnieRuru#1609
Github
AnnieRuru
Emulator
Client Version
2019-05-30aRagexeRE
yeah I bet everyone still using version 2.9, that outdated version from eathena

honestly there isn't much change with previous version, version 2.9 still works fine if you know how to fix it

Download: 3.6

hercules - script

rathena - script

soundeffect

2.9 - script

widely circulate on both rathena and hercules forum

3.0 - script

- fix a bug for hercules, BaseLevel is case-sensitive

- modernize the script

--- remove all set/setd/getd

--- looping the map change from for-loop into while-loop

--- rework sit-killing variable, no longer have any loop or stupid 128 limit

3.1 - script

- optimized query_sql execution from 4 times to just twice in every single way
- fix a bug sit-killing can cause value into negative
- remove OnWhisperGlobal ... I don't really see any use case for it

3.2 - script

- index the table properly

3.3 - script

- add PVP Ladder statues

3.4 - script

- fix the missing body style not display correctly

3.5 - script

- add .fix_custom_sprite setting to fix your server having custom animation equipment

3.6 - script

- fix a missing sprite change from LOOK_ROBE


if your server has custom animation sprite, remember to set .fix_custom_sprite to true

Questions:

when people ask to make modification to this script, it always comes down to these 2

1. monthly/weekly reset

ladder will reset monthly or weekly ... self explain

2. "@dotaannounce" off

hmm ... after talked to some people, they want the announcement set to global, but then some players want to see who are dead, and some players doesn't bother

and I also saw this is a custom modification ... can be made into this script but ... nah ... I'll do it when I feel like it

 
Last edited by a moderator:
damn ... forgot to index the table properly

3.2

script

- index the table properly

for those who already have the script installed, index these keys to make the query return faster, specifically when viewing the top 10

alter table pvpladder add key (`kills`);
alter table pvpladder add key (`streaks`);
alter table ownladder add key (`highestown`);




and yeah, this is the base script for public releases

any further modification, try ask here or open a new topic in script request ... or maybe as a paid request

 
there are already 4 members asked me about pvp statue in discord ......

2 from hercules side, 2 from rathena side ....

.... I think I just release this to public

in case those who doesn't know what pvp statue is ->

https://rathena.org/board/topic/124379-pvp-ladder-show-top-5-player/

https://rathena.org/board/topic/126090-pvp-ladder-show-top-5-player-statue/

https://rathena.org/board/topic/125602-statue-npc-not-pvp-rankings/







screen2020Hercules003.jpg


3.3 - script

- add PVP ladder statues

Question ... should I also make this for rathena ?
I don't mind adding this simple stuff in version 2.9

 
Last edited by a moderator:
3.4 - script

- fix the missing body style not display correctly

thanks to this unknown member but AHHHHH HE REALLY BOTHER ME A LOT IN DISCORD for telling me that
IT'S YOUR PROBLEM that YOUR SERVER HAS CUSTOM COSTUME ITEM OK ??
this script HAS to show offline players' data, that's why can't show if the player is actually wearing 3rd job or 4th job costume

its your custom item fault OK ???

Code:
    OnEquipScript: <" changebase roclass(eaclass()|EAJL_THIRD); ">
    OnUnequipScript: <" changebase Class; ">
 
Wow this is huge jump from 2.9. This comes with statues too! Is it Christmas? Thanks annie! 

Will this work to rathena?

 
Last edited by a moderator:
another server from rathena side told me his server has animated sprite overlapping on the statue

so again its YOUR problem that having animated sprite ... but at least this one can be fix easily by resetting the UDT_HEADTOP|UDT_HEADMIDDLE|UDT_HEADBOTTOM back to 0

statue_overlap_sprite.jpg


3.5 - script

- add .fix_custom_sprite setting to fix your server having custom animation equipment

Will this work to rathena?
simple script conversion

https://github.com/AnnieRuru/Release/blob/master/scripts/PvP %26 GvG/Dota PVP ladder/dota_sql_ladder_3.5r.txt

at least I don't find anything hassle to convert this script into rathena ... unlike promotion code ... already 3 rathena members ask me to do that, and I turn down every time

 
Last edited by a moderator:
another server from rathena side told me his server has animated sprite overlapping on the statue

so again its YOUR problem that having animated sprite ... but at least this one can be fix easily by resetting the UDT_HEADTOP|UDT_HEADMIDDLE|UDT_HEADBOTTOM back to 0

statue_overlap_sprite.jpg


3.5 - script

- add .fix_custom_sprite setting to fix your server having custom animation equipment

simple script conversion

https://github.com/AnnieRuru/Release/blob/master/scripts/PvP %26 GvG/Dota PVP ladder/dota_sql_ladder_3.5r.txt

at least I don't find anything hassle to convert this script into rathena ... unlike promotion code ... already 3 rathena members ask me to do that, and I turn down every time
OMG its really Christmas! Those small fonts. 😁

 
For the people who wants their costume robe to show up!

Find these  lines and add this BOLD.

.@query$  = "SELECT `char`.`char_id`, `char`.`name`, `char`.`guild_id`, `char`.`class`, `char`.`sex`, `char`.`hair`, `char`.`hair_color`, `char`.`clothes_color`, `char`.`body`, `char`.`head_top`, `char`.`head_mid`, `char`.`head_bottom`, `char`.`robe`, ";


.@nb = query_sql(.@query$, .@cid, .@name$, .@guild_id, .@class, .@sex$, .@hair, .@hair_color, .@clothes_color, .@body, .@head_top, .@head_mid, .@head_bottom, .@robe, .@kills, .@streaks, .@deaths);


        setunitdata .statue[.@i +1], UNPC_HEADTOP, .@head_top[.@i];
        setunitdata .statue[.@i +1], UNPC_HEADMIDDLE, .@head_mid[.@i];
        setunitdata .statue[.@i +1], UNPC_HEADBOTTOM, .@head_bottom[.@i];
        setunitdata .statue[.@i +1], UNPC_ROBE, .@robe[.@i];


Alright.

*Edit again. I forgot to mention that this is for rathena. 😝

 
Last edited by a moderator:
select * from item_db where type = 5 and equip_locations & 4 and view_sprite > 0;


yeah my RO knowledge is again outdated, never thought robes can show sprite change

3.6 - script

- fix a missing sprite change from LOOK_ROBE

PS: why the wings on my character is being chop off but the statue is display correctly ? WTF ??

screen2020Hercules006.jpg


 
2. "@dotaannounce" off

hmm ... after talked to some people, they want the announcement set to global, but then some players want to see who are dead, and some players doesn't bother

and I also saw this is a custom modification ... can be made into this script but ... nah ... I'll do it when I feel like it
Waiting for this. Imagine some people would like to have some peace and quiet time. They will be opt out to PVP Announcements. Hehe!

Anyway here's the script you can add to manually truncate the PVP Ladder (Must be 99 GM Account).

Again, same principle. Just add the BOLD to the script. Find these lines.

prontera,166,188,5 script PvP-StatsViewer 1_F_MARIA,{

.@npcname$ = strnpcinfo(NPC_NAME_VISIBLE);

while (true) {

mes "["+ .@npcname$ +"]";

mes "Hello "+ strcharinfo(PC_NAME) +"...";

mes "If you want to I can show you your PVP stats.";

next;

switch (select("Most Kills","Highest Streak","Longest Ownage","Own Information","Explanation",(getgroupid() < 99 )?"":"^FF0000[GM]^000000 Reset Ladder")) {

mes "["+ .@npcname$ +"]";

case 1:.........
...
...
...

case 5:

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 "["+ .@npcname$ +"]";

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 "["+ .@npcname$ +"]";

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 "["+ .@npcname$ +"]";

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 "["+ .@npcname$ +"]";

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 "["+ .@npcname$ +"]";

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;

 case 6:
mes "Would you like to Reset the ladder?";
next;
menu "No.",PVP_NO,"Confirmation - Yes",PVP_YES;
            
PVP_NO:
mes "["+ .@npcname$ +"]";
mes "Suit yourself.";
next;
break;
            
PVP_YES:
query_sql("TRUNCATE TABLE `pvpladder`");
query_sql("TRUNCATE TABLE `ownladder`");
mes "["+ .@npcname$ +"]";
mes "PVP Ladder has been reset.";
next;
break;
close;


}

}

}

 
Last edited by a moderator:
select * from item_db where type = 5 and equip_locations & 4 and view_sprite > 0;

select * from item_db where type = 5 and equip_locations & 4 and view_sprite > 0;


yeah my RO knowledge is again outdated, never thought robes can show sprite change

3.6 - script

- fix a missing sprite change from LOOK_ROBE

PS: why the wings on my character is being chop off but the statue is display correctly ? WTF ??

Hi @AnnieRuru, can you add reward system weekly and monthly ?

player need to talk to npc to redeem the prize.
I know i already made this request in other post. thanks!

 
Weird discovery. Sometimes it doesnt have a problem. Sometime it does. Look at the animation. The slow ones is the custom statue.

hVqufe4MBv.gif I wonder why.

 
Is this really a problem @gidzdlcrz ?
I mean, the statue is meant to show just what the player looks like and his personal stats.
I don't think "slowed down" animation is a real problem for me. This is just my opinion 😛
 

@AnnieRuru I noticed a problem in the dota_pvp_ladder at the owning level. Finally I suppose that is one, he considers that the guild that has been killed the most is the owner of the PvP room. Do you have this problem? 

 

In addition, I took a character who will be killed all the time in order to test the ranking. this one has a guild.
I took a double account which also had a guild but different from the first character and I killed the latter over and over.
The result is that the character being killed in a loop is also the owner of the pvp room.

So I think there is an error there.

 
Last edited by a moderator:
my statue work properly when i use another hg it update the statue whenever i reconnect. thats okay but how to fix this debug/warning ? anyone? 

image.png

 
Back
Top