Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.97 KB | None | 0 0
  1.  
  2.  
  3. prontera,155,175,5 script Sample#rank_ladder 757,{
  4. doevent "rank_system::OnLadder";
  5. }
  6.  
  7. - script rank_system -1,{
  8. function add_exp;
  9. function integer;
  10.  
  11. OnInit:
  12. .rank_limit = 10;
  13. setarray .rank_exp,
  14. 100000, // 100,000 EXP for level 1 -> 2
  15. 200000, // 200,000 EXP for level 2 -> 3
  16. 300000, // 300,000 EXP for level 3 -> 4
  17. 400000, // 400,000 EXP for level 4 -> 5
  18. 500000, // 500,000 EXP for level 5 -> 6
  19. 5000000, // 5,000,000 EXP for level 6 -> 7
  20. 500000000; // 500,00,000 EXP for level 7 -> 8 (ex.max)
  21. // etc...
  22.  
  23. .rank_exp_size = getarraysize( .rank_exp ) - 1;
  24. bindatcmd "rankexp",strnpcinfo(3)+"::OnRankExp";
  25. end;
  26.  
  27. OnLadder:
  28. message strcharinfo(0),"Loading...";
  29. // query_sql( "SELECT `value`,`name` FROM `global_reg_value` INNER JOIN `global_reg_value` ON `char`.`account_id` = `global_reg_value`.`account_id` WHERE `global_reg_value`.`str` = '#rank_level' GROUP BY `char`.`account_id` ORDER BY `global_reg_value`.`value` DESC,`char`.`base_level` DESC,`char`.`job_level` DESC,`char`.`char_id` DESC LIMIT "+.rank_limit,.@value,.@name$ );
  30. // .@db_size = getarraysize( .@name$ );
  31.  
  32. query_sql( "SELECT `value`,`account_id` FROM `global_reg_value` WHERE `str` = '#rank_level' ORDER BY `value` DESC LIMIT 10",.@value,.@aid );
  33. .@db_size = getarraysize( .@aid );
  34.  
  35. mes "Top "+.rank_limit+" Rank Record:";
  36. if ( .@name_size ) {
  37. for ( .@i = 0; .@i < .@db_size; .@i++ ) {
  38. // mes "^FF0000[Lv. "+( ( .rank_exp[ .@level[.@i] ] )? .@level[.@i]:"Max" )+"]^777777 "+.@name$[.@i]+"^000000";
  39. query_sql( "SELECT `name` FROM `char` WHERE `account_id` = "+.@aid[.@i]+" ORDER BY `base_level` DESC,`job_level` DESC,`char_id` DESC LIMIT 1",.@temp_name$ );
  40. mes "^FF0000[Lv. "+( ( .@value[.@i] )? .@value[.@i]:"Max" )+"]^777777 "+.@temp_name$+"^000000";
  41. }
  42. }
  43. else {
  44. mes "No records.";
  45. }
  46. close;
  47.  
  48. OnRankExp:
  49. dispbottom "Rank "+( #rank_level+1 )+" "+( ( .rank_exp[ #rank_level ] )? "EXP: "+integer( #rank_exp )+" / "+integer( .rank_exp[ #rank_level ] ):"( Max Level )" );
  50. end;
  51.  
  52. OnNPCKillEvent:
  53. .@rank_exp = getmonsterinfo( killedrid,MOB_BASEEXP );
  54. .@party_id = getcharid(1);
  55.  
  56. if ( .@party_id ) {
  57. .@map$ = strcharinfo(3);
  58. getpartymember .@party_id;
  59. .@pt_size = $@partymembercount;
  60. copyarray .@pt_name$, $@partymembername$,.@pt_size;
  61.  
  62. while ( .@i < .@pt_size ) {
  63. .@aid = getcharid( 3,.@pt_name$[.@i] );
  64. if ( attachrid( .@aid ) ) {
  65. if ( #rank_level <= .rank_exp_size && .@rank_exp )
  66. add_exp( .@rank_exp );
  67. }
  68. .@i++;
  69. }
  70. detachrid;
  71. }
  72. else if ( #rank_level <= .rank_exp_size && .@rank_exp ) {
  73. add_exp( .@rank_exp );
  74. }
  75. end;
  76.  
  77. function add_exp {
  78. .@rank_exp = getarg(0);
  79.  
  80. dispbottom "Rank EXP: +"+integer( .@rank_exp );
  81. #rank_exp += .@rank_exp;
  82.  
  83. __OnGetEXP:
  84. if ( #rank_exp >= .rank_exp[#rank_level] && .rank_exp[#rank_level] ) {
  85. #rank_exp = ( #rank_exp - .rank_exp[#rank_level] );
  86. #rank_level++;
  87. dispbottom "Rank Level Up! "+( #rank_level+1 );
  88. if ( #rank_level >= .@rank_exp_size || !.rank_exp[#rank_level] )
  89. return;
  90. }
  91. jump_zero( #rank_exp < .rank_exp[#rank_level],__OnGetEXP );
  92.  
  93. return;
  94. }
  95.  
  96. function integer {
  97. .@str$ = getarg(0);
  98. for ( .@i = getstrlen(.@str$) - 3; .@i > 0; .@i -= 3 )
  99. .@str$ = insertchar( .@str$,",",.@i );
  100. return .@str$;
  101. }
  102.  
  103. OnPCStatCalcEvent:
  104. .@level = #rank_level;
  105. if ( .@level > .rank_exp_size )
  106. .@level = .rank_exp_size;
  107. if ( .@level )
  108. switch ( .@level ) {
  109. // bonus from top level to lowest level
  110. // case <level>: { bonus }
  111. case 8:
  112. bonus bAgi,100; // level 8 +100 AGI
  113. case 5:
  114. bonus bStr,20; // level 5 +20 STR
  115. case 4:
  116. bonus bDex,15; // Level 4 +15 DEX
  117. case 3:
  118. bonus bVit,10; // Level 3 +10 VIT
  119. case 2:
  120. bonus bLuk,5; // Level 2 +LUK 5
  121. case 1:
  122. bonus bInt,5; // Level 1 +INT 1
  123. dispbottom "Rank Bonus Applied!";
  124. default:
  125. break;
  126. }
  127. end;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement