Jump to content

Recommended Posts

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

 

 

Spoiler

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

Edited by AnnieRuru

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by AnnieRuru

Share this post


Link to post
Share on other sites

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 ???

    OnEquipScript: <" changebase roclass(eaclass()|EAJL_THIRD); ">
    OnUnequipScript: <" changebase Class; ">

 

Share this post


Link to post
Share on other sites

Wow this is huge jump from 2.9. This comes with statues too! Is it Christmas? Thanks annie! 

 

Will this work to rathena?

Edited by gidzdlcrz
Asking if its working on rathena

Share this post


Link to post
Share on other sites

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

 

16 hours ago, gidzdlcrz said:

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

Edited by AnnieRuru

Share this post


Link to post
Share on other sites
12 hours ago, AnnieRuru said:

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. 😁

Share this post


Link to post
Share on other sites

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

Find these  lines and add this BOLD.

Quote

.@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`, ";

 

Quote

.@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);

 

Quote

        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. 😝

Edited by gidzdlcrz
typos

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
On 9/18/2020 at 7:32 AM, AnnieRuru said:

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.

Quote

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;

}

}

}

 

Edited by gidzdlcrz
typos

Share this post


Link to post
Share on other sites
On 10/20/2020 at 5:39 PM, AnnieRuru said:

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 ??

screen2020Hercules006.jpg



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!

Share this post


Link to post
Share on other sites

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.

Edited by Daraen

Share this post


Link to post
Share on other sites

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.acbb825202f1c6544ba346bfa25ea3e4.png

 

Share this post


Link to post
Share on other sites
On 20/10/2020 at 2:57, gidzdlcrz said:

¡Para las personas que quieren que aparezca su bata de disfraz!

Encuentra estas líneas y agrega este  BOLD .

 

 

 

Está bien.

 

*Editar de nuevo. Olvidé mencionar que esto es para rathena. 😝

OnTimer30000: // refresh every 30 seconds. Note the `char` table is unrealiable, player still need to perform certain task to save the character -> see 'save_settings' in conf\map-server.conf
	.@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`, "
	         +   "`pvpladder`.`kills`, `pvpladder`.`streaks`, `pvpladder`.`deaths` "
	         + "FROM `char` RIGHT JOIN `pvpladder` ON `char`.`char_id` = `pvpladder`.`char_id` ORDER BY `kills` DESC LIMIT "+ .showstatue;
	.@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);
	if (.fix_custom_sprite) {
		for (.@i = 0; .@i < .@nb; ++.@i) {
			setunitdata .statue[.@i +1], UNPC_HEADTOP, 0;
			setunitdata .statue[.@i +1], UNPC_HEADMIDDLE, 0;
			setunitdata .statue[.@i +1], UNPC_HEADBOTTOM, 0;
			setunitdata .statue[.@i +1], UNPC_ROBE, 0;
		}
	}
	for (.@i = 0; .@i < .@nb; ++.@i) {
		setunitdata .statue[.@i +1], UNPC_CLASS, .@class[.@i];
		setunitdata .statue[.@i +1], UNPC_SEX, (.@sex$[.@i] == "F")? SEX_FEMALE:SEX_MALE;
		setunitdata .statue[.@i +1], UNPC_HAIRSTYLE, .@hair[.@i];
		setunitdata .statue[.@i +1], UNPC_HAIRCOLOR, .@hair_color[.@i];
		setunitdata .statue[.@i +1], UNPC_CLOTHCOLOR, .@clothes_color[.@i];
		setunitdata .statue[.@i +1], UNPC_BODY2, .@body[.@i];
		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];
		setnpcdisplay "pvp_ladder_statue#"+(.@i +1), .@name$[.@i];
		.statue_name$[.@i +1] = .@name$[.@i];
		.statue_guild$[.@i +1] = getguildname(.@guild_id[.@i]);
		.statue_kills[.@i +1] = .@kills[.@i];
		.statue_streaks[.@i +1] = .@streaks[.@i];
		.statue_deaths[.@i +1] = .@deaths[.@i];
	}
	for (.@i = .@nb; .@i < .showstatue; ++.@i)
		setunitdata .statue[.@i +1], UNPC_CLASS, HIDDEN_WARP_NPC;
	initnpctimer;
	end;
	.fix_custom_sprite = true;

Do you know why it doesn't work? i am using rathena dota 3.6

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

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