Advertisement
Guest User

Untitled

a guest
Mar 26th, 2018
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.66 KB | None | 0 0
  1. guild_vs1 mapflag loadevent
  2. guild_vs2 mapflag loadevent
  3. guild_vs3 mapflag loadevent
  4. guild_vs4 mapflag loadevent
  5. guild_vs5 mapflag loadevent
  6.  
  7. - script DOTAPVP -1,{
  8. // waitingroom "PVP Ladder",0;
  9. OnInit:
  10. // Config
  11. set .sound, 0; // 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
  12. set .announce, 1; // announce to : 0 - global, 1 - map
  13. set .announcemap, 0; // announce the map name in the announcement ? : 0 - off, 1 - on
  14.  
  15. set .announcekill, 1; // announce who pawn who's head : 0 - off, 1 - on
  16. set .msg_die, 1; // show message who kill you when die : 0 - off, 1 - on
  17. set .msg_kill, 1; // show message you kill who when killed someone : 0 - off, 1 - on
  18.  
  19. 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
  20.  
  21. set .killingspree, 3;
  22. set .dominating, 4;
  23. set .megakill, 5;
  24. set .unstoppable, 6;
  25. set .wickedsick, 7;
  26. set .monsterkill, 8;
  27. set .godlike, 9;
  28. set .holyshit, 10;
  29. set .continue, 1; // after beyond-godlike, every <this number> kills will make announcement again
  30.  
  31. set .owned, 5; // how many times the party/guild has to kill to announce ownage
  32. set .owncontinue, 1; // after ownage, every <this number> party/guild cumulative kills will make ownage announce again
  33.  
  34. set .min_gm_menu, 90; // minimum level of GM can use the GM menu on ladder npc
  35.  
  36. set .showtotal, 20; // show the length of ladder. Note : Maximum value = 128
  37. set .showpage, 10; // set the views per page. Note : Maximum value = 128
  38. 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
  39. 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
  40.  
  41. setarray .maptrigger$, // only these maps will trigger this script
  42. "all"; // uncomment this to allow load all maps
  43. // "guild_vs1",
  44. // "guild_vs2",
  45. // "guild_vs3",
  46. // "guild_vs4",
  47. // "guild_vs5";
  48.  
  49. // anti-sit-killer system
  50. // a player must kill another player with this minimum <this number> base level to get the announcement and in the ladder.
  51. // Otherwise only have streak ended announcement and killed player's streak reset.
  52. // Its possible for a level 1 novice to kill a level 99 player and he/she will still get in the ladder
  53. // but a level 99 kill a level 1 player will get nothing
  54. // 0 - off this system ( default is 55, pk setting )
  55. set .lvltokill, 70;
  56.  
  57. // when a player kill another same player <this number> times in a row, the player is warp back to save point.
  58. // and the player's streak, kills, and ownage count will deduct accordingly
  59. // 0 - off this system
  60. set .counttopunish, 6;
  61.  
  62. // minimum level range to kill another player
  63. // 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.
  64. // but a player with base level 50 kills a level 99 will also get the announcement
  65. // higher base level cannot kill lower level, but lower level can kill higher level
  66. // 0 - off this system
  67. set .minlvlrange, 0;
  68.  
  69.  
  70. // Config ends ------------------------------------------------------------------------------------------
  71.  
  72. // to prevent bug happen
  73. if ( .announce < 0 || .announce > 1 ) set .announce, 0;
  74. if ( .continue < 1 ) set .continue, 1;
  75. if ( .owncontinue < 1 ) set .owncontinue, 1;
  76. if ( .gmnokill <= 0 ) set .gmnokill, 100;
  77. if ( .lvltokill <= 1 ) set .lvltokill, 0;
  78. if ( .counttopunish <= 1 ) set .counttopunish, 0;
  79. set .maptriggersize, getarraysize(.maptrigger$);
  80. end;
  81.  
  82. // script start.
  83. OnPCKillEvent:
  84. if ( getgmlevel() >= .gmnokill ) end;
  85. getmapxy .@map$, .@x, .@y, 0;
  86. if ( .maptrigger$ != "all" ) {
  87. for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {
  88. if ( .@map$ == .maptrigger$[.@i] ) break;
  89. }
  90. if ( .@i == .maptriggersize ) end;
  91. }
  92. attachrid killedrid;
  93. if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) {
  94. if ( .msg_die ) message strcharinfo(0),"Вас убил "+ rid2name(killerrid);
  95. if ( .msg_kill ) message rid2name(killerrid),"Вы убили "+ strcharinfo(0);
  96. }
  97. if ( @PlayersKilledStreak >= .holyshit )
  98. set .@streakname$,"Beyond Godlike";
  99. else if ( @PlayersKilledStreak >= .godlike )
  100. set .@streakname$,"Godlike";
  101. else if ( @PlayersKilledStreak >= .monsterkill )
  102. set .@streakname$,"Monster Kill";
  103. else if ( @PlayersKilledStreak >= .wickedsick )
  104. set .@streakname$,"Wicked Sick";
  105. else if ( @PlayersKilledStreak >= .unstoppable )
  106. set .@streakname$,"Unstoppable";
  107. else if ( @PlayersKilledStreak >= .megakill )
  108. set .@streakname$,"Mega-kill";
  109. else if ( @PlayersKilledStreak >= .dominating )
  110. set .@streakname$,"Dominating";
  111. else if ( @PlayersKilledStreak >= .killingspree )
  112. set .@streakname$,"Killing Spree";
  113. if ( @PlayersKilledStreak >= .killingspree && killerrid == getcharid(3) )
  114. announce strcharinfo(0) +" has ended "+( (sex)?"him":"her" )+" own "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;
  115. else if ( @PlayersKilledStreak >= .killingspree )
  116. announce rid2name(killerrid) +" has ended "+ strcharinfo(0) +"'s "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;
  117. else if ( .announcekill && killerrid != getcharid(3) )
  118. announce rid2name(killerrid) +" has pawned "+ strcharinfo(0) +"'s head "+( (.announcemap)?("at "+ .@map$):""),16|.announce;
  119. set @PlayersKilledStreak,0;
  120. set @dota_sql_deaths, @dota_sql_deaths +1;
  121. set @dota_multikills,0;
  122. 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 +") )";
  123. set .@killed_gid, getcharid(2);
  124. if ( .@killed_gid ) {
  125. setd ".dota_sql_"+ .@killed_gid +"_c", 0;
  126. if ( getd(".dota_sql_"+ .@killed_gid +"_h") )
  127. query_sql "replace into ownladder values ( "+ .@killed_gid +", '"+ escape_sql(getguildname(.@killed_gid)) +"', "+ getd(".dota_sql_"+ .@killed_gid +"_c") +", "+ getd(".dota_sql_"+ .@killed_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killed_gid +"_t") +") )";
  128. }
  129. if ( killerrid == getcharid(3) || baselevel < .lvltokill ) end;
  130. if ( .minlvlrange ) set .@killedlvl, baselevel;
  131. attachrid killerrid;
  132. if ( .minlvlrange && .@killedlvl + .minlvlrange < baselevel ) end;
  133. if ( .counttopunish ) {
  134. if ( @sitkillminute != gettime(2) ) {
  135. deletearray @sitkillid, 128;
  136. deletearray @sitkilltimes, 128;
  137. set @sitkillminute, gettime(2);
  138. }
  139. set .@sitkillsize, getarraysize(@sitkillid);
  140. for ( set .@i,0; .@i < .@sitkillsize; set .@i, .@i +1 ) {
  141. if ( @sitkillid[.@i] != killedrid ) continue;
  142. else {
  143. set @sitkilltimes[.@i], @sitkilltimes[.@i] +1 ;
  144. if ( @sitkilltimes[.@i] >= .counttopunish ) {
  145. //warp "SavePoint",0,0;
  146. announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0;
  147. debugmes strcharinfo(0) +" is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] + " times";
  148. logmes "is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] +" times";
  149. if ( @PlayersKilledStreak == @dota_sql_streaks ) {
  150. set @dota_sql_streaks, @dota_sql_streaks +1 - .counttopunish;
  151. set @dota_sql_streaktime, gettimetick(2);
  152. }
  153. set @PlayersKilledStreak, @PlayersKilledStreak +1 - .counttopunish;
  154. set @dota_sql_kills, @dota_sql_kills +1 - .counttopunish;
  155. 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 +") )";
  156. set .@killer_gid, getcharid(2);
  157. if ( .@killer_gid ) {
  158. if ( getd(".dota_sql_"+ .@killer_gid +"_c") == getd(".dota_sql_"+ .@killer_gid +"_h") ) {
  159. setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_h") +1 - .counttopunish;
  160. setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);
  161. }
  162. setd (".dota_sql_"+ .@killer_gid +"_c"), getd(".dota_sql_"+ .@killer_gid +"_c") +1 - .counttopunish;
  163. query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";
  164. }
  165. end;
  166. }
  167. break;
  168. }
  169. }
  170. if ( .@i == .@sitkillsize ) {
  171. set @sitkillid[.@i], killedrid;
  172. set @sitkilltimes[.@i], 1;
  173. }
  174. }
  175. set @PlayersKilledStreak, @PlayersKilledStreak +1 ;
  176. set @dota_sql_kills, @dota_sql_kills +1 ;
  177. if ( @PlayersKilledStreak > @dota_sql_streaks ) {
  178. set @dota_sql_streaks, @PlayersKilledStreak;
  179. set @dota_sql_streaktime, gettimetick(2);
  180. }
  181. 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 +") )";
  182. if ( @PlayersKilledStreak == .killingspree )
  183. setarray .@streakname$,"killingspree.wav","is on a KILLING SPREE","!";
  184. else if ( @PlayersKilledStreak == .dominating )
  185. setarray .@streakname$,"dominating.wav","is DOMINATING","!";
  186. else if ( @PlayersKilledStreak == .megakill )
  187. setarray .@streakname$,"megakill.wav","has a MEGA KILL","!";
  188. else if ( @PlayersKilledStreak == .unstoppable )
  189. setarray .@streakname$,"unstoppable.wav","is UNSTOPPABLE","!!";
  190. else if ( @PlayersKilledStreak == .wickedsick )
  191. setarray .@streakname$,"wickedsick.wav","is WICKED SICK","!!";
  192. else if ( @PlayersKilledStreak == .monsterkill )
  193. setarray .@streakname$,"monsterkill.wav","has a MONSTER KILL","!!";
  194. else if ( @PlayersKilledStreak == .godlike )
  195. setarray .@streakname$,"godlike.wav","is GODLIKE","!!!";
  196. else if ( @PlayersKilledStreak >= .holyshit && ( (@PlayersKilledStreak - .holyshit) % .continue == 0 ) )
  197. setarray .@streakname$,"holyshit.wav","is BEYOND GODLIKE",". Someone KILL "+( (sex)?"HIM":"HER" ) +"!!!!!!";
  198. if ( .@streakname$[1] != "" ) {
  199. announce strcharinfo(0) +" "+ .@streakname$[1] +"["+ @PlayersKilledStreak +"] "+( (.announcemap)?("at "+ .@map$):"") + .@streakname$[2],16|.announce;
  200. if ( .sound == 1 ) soundeffectall .@streakname$[0],0,.@map$;
  201. else if ( .sound == 2 ) soundeffectall .@streakname$[0],0;
  202. else if ( .sound == 3 ) soundeffect .@streakname$[0],0;
  203. }
  204. set @dota_multikills, @dota_multikills + 1;
  205. deltimer "DOTAPVP::OnStreakReset";
  206. addtimer 18000,"DOTAPVP::OnStreakReset";
  207. set .@killer_gid, getcharid(2);
  208. if ( .@killer_gid && .@killer_gid != .@killed_gid ) {
  209. setd ".dota_sql_"+ .@killer_gid +"_c", getd(".dota_sql_"+ .@killer_gid +"_c") +1 ;
  210. if ( getd(".dota_sql_"+ .@killer_gid +"_c") > getd(".dota_sql_"+ .@killer_gid +"_h") ) {
  211. setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_c");
  212. setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);
  213. }
  214. query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";
  215. }
  216. set .@dota_multikills, @dota_multikills;
  217. set .@origin, getcharid(3);
  218. sleep 1500;
  219. if ( .@killer_gid && .@killer_gid != .@killed_gid && getd(".dota_sql_"+ .@killer_gid +"_c") >= .owned && ( ( getd(".dota_sql_"+ .@killer_gid +"_c") - .owned ) % .owncontinue == 0 ) ) {
  220. if ( .announce ) mapannounce .@map$, "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;
  221. else announce "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;
  222. if ( .sound == 1 ) soundeffectall "ownage.wav",0,.@map$;
  223. else if ( .sound == 2 ) soundeffectall "ownage.wav",0;
  224. else if ( .sound == 3 && attachrid(.@origin) ) soundeffect "ownage.wav",0;
  225. }
  226. sleep 1250;
  227. if ( !attachrid(.@origin) ) end;
  228. if ( .@dota_multikills == 2 ) {
  229. if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Double Kill !",16;
  230. else announce strcharinfo(0) +" just got a Double Kill !",16;
  231. if ( .sound == 1 ) soundeffectall "doublekill.wav",0,.@map$;
  232. else if ( .sound == 2 ) soundeffectall "doublekill.wav",0;
  233. else if ( .sound == 3 ) soundeffect "doublekill.wav",0;
  234. }
  235. else if ( .@dota_multikills == 3 ) {
  236. if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Triple Kill !!!",16;
  237. else announce strcharinfo(0) +" just got a Triple Kill !!!",16;
  238. if ( .sound == 1 ) soundeffectall "triplekill.wav",0,.@map$;
  239. else if ( .sound == 2 ) soundeffectall "triplekill.wav",0;
  240. else if ( .sound == 3 ) soundeffect "triplekill.wav",0;
  241. }
  242. else if ( .@dota_multikills == 4 ) {
  243. if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Ultra Kill !!!",16;
  244. else announce strcharinfo(0) +" just got a Ultra Kill !!!",16;
  245. if ( .sound == 1 ) soundeffectall "ultrakill.wav",0,.@map$;
  246. else if ( .sound == 2 ) soundeffectall "ultrakill.wav",0;
  247. else if ( .sound == 3 ) soundeffect "ultrakill.wav",0;
  248. }
  249. else if ( .@dota_multikills >= 5 ) {
  250. if ( .announce ) mapannounce .@map$, strcharinfo(0) +" is on a Rampage !!!",16;
  251. else announce strcharinfo(0) +" is on a Rampage !!!",16;
  252. if ( .sound == 1 ) soundeffectall "rampage.wav",0,.@map$;
  253. else if ( .sound == 2 ) soundeffectall "rampage.wav",0;
  254. else if ( .sound == 3 ) soundeffect "rampage.wav",0;
  255. }
  256. end;
  257. OnStreakReset:
  258. set @dota_multikills, 0;
  259. end;
  260. OnWhisperGlobal:
  261. if ( @spam_dotapvp + 3 >= gettimetick(2) ) // 3 seconds interval so player don spam this command
  262. end;
  263. set @spam_dotapvp, gettimetick(2);
  264. if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 )
  265. 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;
  266. if ( @dota_sql_kills || @dota_sql_deaths ) {
  267. dispbottom "Your current Streak : "+ @PlayersKilledStreak;
  268. dispbottom "Your total Kills : "+ @dota_sql_kills;
  269. dispbottom "Your total Deaths : "+ @dota_sql_deaths;
  270. dispbottom "Your highest Streak : "+ @dota_sql_streaks;
  271. query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", .@time1$;
  272. dispbottom "Your highest Streak on : "+ .@time1$;
  273. }
  274. else
  275. dispbottom "You are not in the pvp ladder yet.";
  276. if ( getcharid(2) ) {
  277. if ( getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {
  278. query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;
  279. setd ".dota_sql_"+ getcharid(2) +"_c", .@c;
  280. setd ".dota_sql_"+ getcharid(2) +"_h", .@h;
  281. setd ".dota_sql_"+ getcharid(2) +"_t", .@t;
  282. }
  283. if ( getd(".dota_sql_"+ getcharid(2) +"_h") ) {
  284. dispbottom "Your guild current Own : "+ getd(".dota_sql_"+ getcharid(2) +"_c");
  285. dispbottom "Your guild highest Own : "+ getd(".dota_sql_"+ getcharid(2) +"_h");
  286. query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", .@time2$;
  287. dispbottom "Your guild highest Own on : "+ .@time2$;
  288. }
  289. else
  290. dispbottom "Your guild is not in the ladder yet.";
  291. }
  292. end;
  293. OnPCLoginEvent:
  294. if ( .maptrigger$ != "all" ) end;
  295. OnPCLoadMapEvent:
  296. if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) {
  297. if ( .maptrigger$ != "all" ) {
  298. getmapxy .@map$, .@x, .@y, 0;
  299. for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {
  300. if ( .@map$ == .maptrigger$[.@i] ) break;
  301. }
  302. if ( .@i == .maptriggersize ) end;
  303. }
  304. 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;
  305. }
  306. if ( getcharid(2) && getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {
  307. query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;
  308. setd ".dota_sql_"+ getcharid(2) +"_c", .@c;
  309. setd ".dota_sql_"+ getcharid(2) +"_h", .@h;
  310. setd ".dota_sql_"+ getcharid(2) +"_t", .@t;
  311. }
  312. end;
  313. }
  314.  
  315. prontera,123,117,5 script PvP Статистика 57,{
  316. set .@npcname$, strnpcinfo(0);
  317. while (1) {
  318. mes "["+ .@npcname$ +"]";
  319. mes "Привет "+ strcharinfo(0) +"...";
  320. mes "Я могу показать Вам ПвП Статистику.";
  321. next;
  322. switch ( select ( "Топ убийств","Убийства без смертей","Гильд Доминирование","Моя информация","Информация" ) ) {
  323. case 1:
  324. set .@nb, query_sql("select name, kills, deaths from pvpladder order by kills desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), .@name$, .@kills, .@deaths);
  325. if ( .@nb == 0 ) {
  326. mes "["+ .@npcname$ +"]";
  327. mes "The ladder currently is empty.";
  328. next;
  329. }
  330. for ( set .@j,0; .@j < .@nb; set .@j, .@j + getvariableofnpc(.showpage,"DOTAPVP") ) {
  331. mes "["+ .@npcname$ +"]";
  332. for ( set .@i, .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; set .@i, .@i + 1 ) {
  333. mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^00AA00["+ .@kills[.@i] +"] ^FF0000<"+ .@deaths[.@i] +">^000000";
  334. }
  335. next;
  336. }
  337. break;
  338. case 2:
  339. set .@nb, 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"), .@name$, .@streak, .@time$);
  340. if ( .@nb == 0 ) {
  341. mes "["+ .@npcname$ +"]";
  342. mes "The ladder currently is empty.";
  343. next;
  344. }
  345. for ( set .@j,0; .@j < .@nb; set .@j, .@j + getvariableofnpc(.showpage,"DOTAPVP") ) {
  346. mes "["+ .@npcname$ +"]";
  347. for ( set .@i, .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; set .@i, .@i + 1 ) {
  348. mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^70AC11{"+ .@streak[.@i] +"} ^000000on :";
  349. mes " ^EE8800"+ .@time$[.@i] +"^000000";
  350. }
  351. next;
  352. }
  353. break;
  354. case 3:
  355. set .@nb, 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"), .@name$, .@owned, .@time$);
  356. if ( .@nb == 0 ) {
  357. mes "["+ .@npcname$ +"]";
  358. mes "The ladder currently is empty.";
  359. next;
  360. }
  361. for ( set .@j,0; .@j < .@nb; set .@j, .@j + getvariableofnpc(.showpage,"DOTAPVP") ) {
  362. mes "["+ .@npcname$ +"]";
  363. for ( set .@i, .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; set .@i, .@i + 1 ) {
  364. mes "^996600"+ (.@i+1) +": ^006699"+ .@name$[.@i] +" ^00AAAA("+ .@owned[.@i] +") ^000000on :";
  365. mes " ^EE8800"+ .@time$[.@i] +"^000000";
  366. }
  367. next;
  368. }
  369. break;
  370. case 4:
  371. if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 )
  372. 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, .@time1$;
  373. mes "["+ .@npcname$ +"]";
  374. if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 )
  375. mes "You not yet kill any player.";
  376. else {
  377. mes "Your Current Streak : ^70AC11{"+ @PlayersKilledStreak +"}^000000";
  378. mes "Your Total Kills : ^00AA00["+ @dota_sql_kills +"]^000000";
  379. mes "Your Death Counts : ^FF0000<"+ @dota_sql_deaths +">^000000";
  380. if ( @dota_sql_kills || @dota_sql_streaks ) {
  381. mes "Highest Streak was ^70AC11{"+ @dota_sql_streaks +"}^000000 on :";
  382. query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", .@time1$;
  383. mes " ^EE8800"+ .@time1$ +"^000000";
  384. }
  385. }
  386. next;
  387. if ( getcharid(2) ) {
  388. if ( getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) == 0 ) {
  389. query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;
  390. set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_c"), "DOTAPVP" ), .@c;
  391. set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ), .@h;
  392. set getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ), .@t;
  393. }
  394. mes "["+ .@npcname$ +"]";
  395. if ( getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) == 0 ) {
  396. mes "Your guild not yet kill any player.";
  397. } else {
  398. mes "Your guild name : ^006699"+ strcharinfo(2) +"^000000";
  399. mes "Current Owning : ^00AAAA("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_c"), "DOTAPVP" ) +")^000000";
  400. mes "Longest Ownage was ^00AAAA("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_h"), "DOTAPVP" ) + ")^000000 on :";
  401. query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", .@time2$;
  402. mes " ^EE8800"+ .@time2$ +"^000000";
  403. }
  404. next;
  405. }
  406. break;
  407. case 5:
  408. mes "["+ .@npcname$ +"]";
  409. mes "Информация о Топе убийств:";
  410. mes " ";
  411. mes "^996600Rank. ^006699NAME ^00AA00[Total Kills] ^FF0000<Deaths>^000000";
  412. mes " ";
  413. mes "--------------------------------";
  414. mes " ";
  415. mes "^00AA00Убийства^000000 начисляются игроку за убийства других игроков.";
  416. mes " ";
  417. mes "Количество ^FF0000смертей^000000 начисляются при убийствах другими игроками, либо суецидом.";
  418. mes " ";
  419. mes "Убийства монстрами не засчитывается в топ.";
  420. next;
  421. mes "["+ .@npcname$ +"]";
  422. mes "Explanation for Highest Streak:";
  423. mes " ";
  424. mes "^996600Rank. ^006699NAME ^70AC11{Highest Streak} ^000000on :";
  425. mes " ^EE8800TIME^000000";
  426. mes " ";
  427. mes "--------------------------------";
  428. mes " ";
  429. mes "^70AC11Streak^000000 - непрерывные убийства, сбрасывается при смерти, перезаходи и т.д.";
  430. mes " ";
  431. mes "Рекорд на сервер это ^EE8800время^000000 когда игрок получил наивысший Streak.";
  432. mes " ";
  433. mes "Убийства монстрами не засчитывается в топ.";
  434. mes " ";
  435. mes "--------------------------------";
  436. mes " ";
  437. mes "Количество непрерывных убийств, чтобы получить эти объявления являются:";
  438. mes "^70AC11"+ getvariableofnpc(.killingspree,"DOTAPVP") +"^000000 : Killing Spree";
  439. mes "^70AC11"+ getvariableofnpc(.dominating,"DOTAPVP") +"^000000 : Dominating";
  440. mes "^70AC11"+ getvariableofnpc(.megakill,"DOTAPVP") +"^000000 : Mega Kill";
  441. mes "^70AC11"+ getvariableofnpc(.unstoppable,"DOTAPVP") +"^000000 : Unstoppable";
  442. mes "^70AC11"+ getvariableofnpc(.wickedsick,"DOTAPVP") +"^000000 : Wicked Sick";
  443. mes "^70AC11"+ getvariableofnpc(.monsterkill,"DOTAPVP") +"^000000 : Monster Kill";
  444. mes "^70AC11"+ getvariableofnpc(.godlike,"DOTAPVP") +"^000000 : Godlike";
  445. mes "^70AC11"+ getvariableofnpc(.holyshit,"DOTAPVP") +"^000000 : Beyond Godlike";
  446. next;
  447. mes "["+ .@npcname$ +"]";
  448. mes "Explanation for Longest Ownage:";
  449. mes " ";
  450. mes "^996600Rank. ^006699NAME ^00AAAA(Longest Ownage) ^000000on :";
  451. mes " ^EE8800TIME^000000";
  452. mes " ";
  453. mes "--------------------------------";
  454. mes " ";
  455. mes "^00AAAAДоминирование^000000 начисляется за убийство членов другой гильдии, сбрасывается, если вашего согильдийца убили.";
  456. mes " ";
  457. mes "Рекорд на сервер это ^EE8800время^000000 когда гильдия получила самое длительное доминирование.";
  458. mes " ";
  459. mes "Если сервер закрылся на профилактику, топы не сбросятся.";
  460. mes " ";
  461. mes "Убийства монстрами не засчитывается в топ.";
  462. next;
  463. if ( getvariableofnpc(.lvltokill,"DOTAPVP") ) {
  464. mes "["+ .@npcname$ +"]";
  465. mes "Вы должны убить другого игрока с минимальным уровнем: "+ getvariableofnpc(.lvltokill,"DOTAPVP") +", для входа в топ.";
  466. mes " ";
  467. mes "Возможно игроку 1-ого уровня убить 99-ого и войти в топ.";
  468. mes "В то же время 99-ый убив 1-ого не получит ничего.";
  469. next;
  470. }
  471. if ( getvariableofnpc(.counttopunish,"DOTAPVP") ) {
  472. mes "["+ .@npcname$ +"]";
  473. mes "Некоторые игроки стараются убивать одного и того же игрока для накрутки топа.";
  474. mes "Если Вы постараетесь это сделать, Ваш ник увидит весь сервер, и Администрация будет уведомлена.";
  475. next;
  476. }
  477. if ( getvariableofnpc(.minlvlrange,"DOTAPVP") ) {
  478. mes "["+ .@npcname$ +"]";
  479. mes "Когда вы убиваете другого игрока ниже по уровню чем вы, разница по уровню между вами и этим игроком не более "+ getvariableofnpc(.minlvlrange,"DOTAPVP") +".";
  480. mes " ";
  481. if ( getvariableofnpc(.minlvlrange,"DOTAPVP") >= 200)
  482. 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.";
  483. else if ( getvariableofnpc(.minlvlrange,"DOTAPVP") >= 70)
  484. 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.";
  485. else
  486. 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.";
  487. mes "Higher base level kills lower level gets nothing, however lower level player kills higher level will get the announcement.";
  488. next;
  489. }
  490. break;
  491. }
  492. }
  493. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement