Advertisement
Emistry

[RO] Simple PVP Ranking with Reset

Nov 27th, 2016
1,120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. // https://rathena.org/board/topic/107986-requesting-for-a-pvp-ranking-w-reset/
  2.  
  3. /*
  4. ALTER TABLE `char` ADD `pvp_kill` INT(11) UNSIGNED NOT NULL DEFAULT '0' AFTER `fame`;
  5. */
  6.  
  7. morocc,154,113,6 script PvP Room 615,{
  8. doevent "pvp_rank_main::OnTalk";
  9. }
  10.  
  11. - script pvp_rank_main -1,{
  12.  
  13. OnTalk:
  14. mes "[PvP Room Master]";
  15. mes "Where do you wanna go?";
  16. next;
  17. switch ( select (
  18. "Izlude (Berry/Seed - ALLOWED)",
  19. "Izlude (x Berry/Seed)",
  20. "Morocc Deathmatch (x Berry/Seed)",
  21. "PVP Ranking",
  22. ( getgmlevel() >= 99 ) ? "^FF0000[GM] Reset PVP Ranking^000000":""
  23. )) {
  24. case 1: callsub( L_Enter,"Izlude (Berry/Seed - ALLOWED)","pvp_y_1-2",30 ); break;
  25. case 2: callsub( L_Enter,"Izlude (x Berry/Seed)","pvp_y_2-2",30 ); break;
  26. case 3: callsub( L_Enter,"Morocc Deathmatch (x Berry/Seed)","pvp_y_1-5",30 ); break;
  27. default:
  28. mes "[PvP Room Master]";
  29. mes "PVP Ranking";
  30. query_sql( "SELECT `name`,`pvp_kill` FROM `char` WHERE `pvp_kill` > 0 ORDER BY `pvp_kill` DESC LIMIT 10", .@name$, .@pvp_kill );
  31. .@size = getarraysize( .@name$ );
  32. for ( .@i = 0; .@i < .@size; .@i++ ) {
  33. mes "["+(.@i + 1 )+"] "+.@name$[.@i]+" - "+.@pvp_kill[.@i]+" kill(s)";
  34. }
  35. break;
  36. case 5:
  37. mes "[PvP Room Master]";
  38. mes "Reset Ranking? Action cant be undo. Confirm your action.";
  39. if ( select( "Confirm","Cancel" ) == 1 ) {
  40. query_sql( "UPDATE `char` SET `pvp_kill` = 0 WHERE `pvp_kill` > 0" );
  41. mes "Done.";
  42. }
  43. break;
  44. }
  45. close;
  46.  
  47. L_Enter:
  48. .@title$ = getarg( 0,"" );
  49. .@map$ = getarg( 1,"" );
  50. .@max_player = getarg( 2,0 );
  51. .@getmapusers = getmapusers( .@map$ );
  52.  
  53. mes "[PvP Room Master]";
  54. if ( .@getmapusers == -1 ) {
  55. mes "Invalid map.";
  56. }
  57. else if ( .@max_player > 0 && .@getmapusers >= .@max_player ) {
  58. mes "I'm sorry but the PVP Room is already full!";
  59. }
  60. else {
  61. mes .@title$ + " ["+.@getmapusers+"/"+.@max_player+"]";
  62. if ( select( "Enter","Cancel" ) == 1 ) {
  63. warp .@map$,0,0;
  64. }
  65. }
  66. return;
  67.  
  68. OnInit:
  69. waitingroom "PVP Room",0;
  70. end;
  71.  
  72. OnPCKillEvent:
  73. if ( getcharid(3) != killedrid ) {
  74. query_sql( "UPDATE `char` SET `pvp_kill` = `pvp_kill` + 1 WHERE `char_id` = "+getcharid(0)+" LIMIT 1" );
  75. }
  76. end;
  77. }
  78.  
  79.  
  80. // PvP Room ----------------------------------------------
  81. morocc,171,250,4 duplicate(PvP Room) PvP Room#d2 615
  82. louyang,225,98,3 duplicate(PvP Room) PvP Room#d3 615
  83. payon,167,234,3 duplicate(PvP Room) PvP Room#d4 615
  84. gonryun,170,142,3 duplicate(PvP Room) PvP Room#d5 615
  85. aldebaran,146,116,3 duplicate(PvP Room) PvP Room#d6 615
  86. ayothaya,161,159,3 duplicate(PvP Room) PvP Room#d7 615
  87. xmas,154,126,3 duplicate(PvP Room) PvP Room#d8 615
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement