Перейти к содержанию

[SQL] Пвп рейт + анонсы из LoL


Kubix!

Рекомендуемые сообщения

Звуки


// -------------- PVP RATING (SQL ONLY)! ----------------- //
// ---- Сделал Kubix.

/*
Таблицы:

CREATE TABLE `pvp_rating` (
`id` INT(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(30) NOT NULL,
`kills` int(11) NOT NULL,
`dies` int(11) NOT NULL,
`rating` int(11) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `pvp_rewards` (
`id` INT(11) NOT NULL AUTO_INCREMENT ,
`reward_id` int(11) NOT NULL,
`reward_count` int(11) NOT NULL,
PRIMARY KEY (`id`)
);

*/
prontera,164,171,6 script Rating 950,{
mes .Rating$;
mes "Привет, "+strcharinfo(0);
mes "Чем я могу помочь?";
next;
switch(select("> ^FF0000PVP TOP^000000:> ^6699DDMVP TOP^000000")){
case 1:
switch(select("Топ "+.TopSize+":Мой рейтинг:Получить приз:Отмена")){
case 1:
mes .Rating$;
mes "Показан топ "+.TopSize;
mes "#. ^0000FFИмя ^8470FFУбийств/^B03060Смертей/^A020F0Рейтинг^000000";
query_sql "SELECT `name`, `kills`, `dies`, `rating` FROM `pvp_rating` ORDER BY `rating` DESC LIMIT "+.TopSize+"", .@killer$, .@kills, .@dies, .@rating;
for(set .@i, 0; .@i < .TopSize; set .@i, .@i + 1){
if(.@killer$[.@i] != ""){
mes ""+(.@i+1)+". ^0000FF"+.@killer$[.@i]+" ^006400"+.@kills[.@i]+"/^B03060"+.@dies[.@i]+"/^A020F0"+.@rating[.@i]+"^000000";
}else{
mes (.@i+1)+". Пусто";
}
}
close;

case 2:
query_sql "SELECT `kills`, `dies`, `rating` FROM `pvp_rating` WHERE `name` = '"+strcharinfo(0)+"'", .@kil, .@di, .@rat;
mes .Rating$;
mes "Ваш рейтинг :";
mes "(Убийств/Смертей) : Рейтинг";
mes "("+.@kil+"/"+.@di+") : ^0000FF"+.@rat+"^000000";
close;

case 3:
query_sql "SELECT `name`, `rating` FROM `pvp_rating` ORDER BY `rating` DESC LIMIT 1", .@bestname$, .@bestrate;
if(strcharinfo(0) != .@bestname$){
mes .Rating$;
mes "Простите. Но самый лучший убийца - ^0000FF"+.@bestname$+"^000000 у него ^FF0000("+.@bestrate+")^000000 рейтинга!";
close;
}
if(gettime(4) == 6 && !.TakeRating){
mes .Rating$;
mes "Вы лучший пвп игрок!";
mes "Я могу дать вам приз.";
mes "Его можно взять каждую субботу";
mes "Желаете взять приз и сбросить свой рейтинг?";
next;
if(select("Взять приз и сбросить рейтинг:Нет, мне рейтинг важнее") == 2) close;
query_sql "SELECT `reward_id`, `reward_count` FROM `pvp_rewards` ORDER BY `reward_id`", .RewardID, .RewardCount;
for(set .@a,0; .@a <= getarraysize(.RewardID); set .@a,.@a +1){
if(.RewardID != 0){
progressbar "0xFF0000",6;
sleep2 3000;
query_sql "SELECT `kills`, `dies`, `rating` FROM `pvp_rating` WHERE `name` = '"+strcharinfo(0)+"'", .@kill, .@die, .@rate;
query_sql "DELETE FROM `pvp_rating` WHERE `name`='"+strcharinfo(0)+"' and `kills`='"+.@kill+"' and `dies`='"+.@die+"' and `rating`='"+.@rate+"'";
if(.RewardID[.@a] == 1){
set #CASHPOINTS,#CASHPOINTS+.RewardCount;
}else{
getitem .RewardID[.@a], .RewardCount;
}
announce .PvP_Rating$+" : "+strcharinfo(0)+" взял приз и обнулил свой рейтинг!",bc_all;
set .TakeRating, 1;
close;
}else
mes .Rating$;
mes "Невозможно выдать приз";
mes "Потому что администратор не установил его.";
mes "Пожалуйста, сообщите об этом администратору.";
close;
}
}else{
mes .Rating$;
mes "Сейчас не суббота. Или лучший игрок уже брал приз.";
mes "Приходите в следующую субботу.";
close;
}

case 4:
close;
}

case 2:
switch(select("Посмотреть топ:Персональный рейтинг:Отмена")){
case 1:
query_sql "SELECT `name`,`mvps`,`last_mvp` FROM `mvp_rating` ORDER BY `mvps` DESC LIMIT "+.Size+"",.@char$,.@mvps,.@last$;
mes "[MvP TOP]";
mes "Рейтинг MvP "+.Size;
for(.@i = 0; .@i < .Size; .@i++){
if((.@char$[.@i] != "")){
mes (.@i+1)+". ^0000FF"+.@char$[.@i]+"^000000 - [ "+.@mvps[.@i]+" ] - [ "+.@last$[.@i]+" ]";
}else{
mes (.@i+1)+". Нет персонажа";
}
}
close;

case 2:
query_sql "SELECT `mvps`,`last_mvp` FROM `mvp_rating` WHERE `name`='"+strcharinfo(0)+"'",.@mvp,.@lastmvp$;
mes "[MvP TOP]";
mes "Ваш персональный рейтинг:";
mes "Убито мвп - "+.@mvp;
mes "Последний убитый: "+.@lastmvp$;
close;

case 3:
mes "[MvP TOP]";
mes "До встречи!";
close;
}
}
OnWhisperGlobal:
if(@whispervar0$ == "add"){
if(getgmlevel() < .Admin) end;
mes .Rating$;
mes "Привет админ. Желаешь добавить итем?";
next;
if(select("Добавить ID:Отмена") == 2) close;
mes .Rating$;
mes "Введи ID вещи.";
input .ID;
mes "Введи кол-во.";
input .Count;
mes "Добавить "+getitemname(.ID)+" x "+.Count+"";
next;
if(select("Добавить:Нет") == 2) close;
if(.ID <= 0 || .Count <= 0){
mes .Rating$;
mes "ID или кол-во не должно быть равным 0";
close;
}
query_sql "INSERT INTO `pvp_rewards` (`reward_id`, `reward_count`) VALUES ('"+.ID+"', '"+.Count+"')";
dispbottom "Вещь успешно добавлена.";
close;
}
OnInit:
if(gettime(4) == 6){
set .TakeRating,0;
}
set .Rating$,"^FF0000[PvP Rating]^000000";
set.PvP_Rating$,"[PvP Rating]";
set .TopSize,5;
setarray $KS_Ann$[0],"IS ON A KILLING SPREE!!!","IS ON A RAMPAGE!!!","IS UNSTOPPABLE!!!","IS DOMINATING!!!","IS G-G-G-GODLIKE!!!","IS LEGENDARY!!!";
setarray $MK_Ann$[0],"HAS SCORED A DOUBLE KILL!!!","HAS SCORED A TRIPLE KILL!!!","HAS SCORED A QUADRA KILL!!!","HAS SCORED A PENTA KILL!!!!";
setarray $Rating_Location$[0], "guild_vs3"; // Ваши локации добавить сюда.
set $FirstBlood, 0;
set .Admin, 50; // Гм лвл
set $Sound, 1; // Звуки
set $Announce, 1; // Анонсы
// MVP TOP:
.Size = 10;
setarray $@mvp_id[0],1038,1039,1046,1150,1511,1647,1785,1630,1874,1272,1719,1389,1112,
1115,1418,1871,1252,1768,1086,1990,1649,1651,1832,1492,1734,1779,1251,1688,1646,1373,
1147,1059,1150,1087,1190,1157,1159,1623,1650,1708,1583,1991,1312,1751,1685,1658,1648,1917,1885;
query_sql "SELECT `name`,`mvps` FROM `mvp_rating` ORDER BY `mvps` DESC LIMIT 1",.@char1$,.@mvps1;
query_sql "SELECT `name`, `rating` FROM `pvp_rating` ORDER BY `rating` DESC LIMIT 1", .@killer$,.@rating;
if(.@char1$ != ""){
waitingroom "[TOP] : > "+.@char1$+" ("+.@mvps1+")/"+.@killer$+" ("+.@rating+")",0;
}else{
waitingroom "[TOP] : ТОП "+.TopSize+"/"+.Size,0;
}
initnpctimer;
end;
OnTimer60000:
query_sql "SELECT `name`,`mvps` FROM `mvp_rating` ORDER BY `mvps` DESC LIMIT 1",.@char1$,.@mvps1;
query_sql "SELECT `name`, `rating` FROM `pvp_rating` ORDER BY `rating` DESC LIMIT 1", .@killer$,.@rating;
delwaitingroom;
if(.@char1$ != ""){
waitingroom "[TOP] : > "+.@char1$+" ("+.@mvps1+")/"+.@killer$+" ("+.@rating+")",0;
}else{
waitingroom "[MvP TOP] : ТОП "+.TopSize+"/"+.Size,0;
}
initnpctimer;
end;

OnClock:
if(gettime(4) == 6){
set .TakeRating,0;
}
end;

OnNPCKillEvent:
for(.@a=0; .@a <= getarraysize($@mvp_id); .@a ++){
if(killedrid == $@mvp_id[.@a]){
@lastmvps$ = getmonsterinfo(killedrid, 0);
query_sql "SELECT `name`,`mvps`,`last_mvp` FROM `mvp_rating` WHERE `name`='"+strcharinfo(0)+"'",@me$,@mvp1,@last_mvp$;
if(@me$ == ""){
mvp_kill = 1;
if(!mvp1) query_sql "INSERT INTO `mvp_rating` (`name`,`mvps`,`last_mvp`) VALUES ('"+strcharinfo(0)+"','"+mvp_kill+"','"+@lastmvps$+"')";
}else{
mvp_kill += 1;
query_sql "UPDATE `mvp_rating` SET `mvps`='"+mvp_kill+"', `last_mvp`='"+@lastmvps$+"' WHERE `name`='"+strcharinfo(0)+"'";
}
dispbottom "[MvP TOP] : Поздравляю, Вы убили мвп. +1 МВП убийство.";
getitem 7227,1;
}
}
end;
}

/*
При убийстве:
*/
- script PvP_Killers -1,{
OnPCKillEvent:
getmapxy .@charmap$,.@x,.@y,0;
if(strcharinfo(3) == "prontera") end;
for(set .@i,0; .@i <=getarraysize($Rating_Location$); set .@i,.@i+1){
if(.@charmap$ == $Rating_Location$[.@i]){
callfunc "Sound_Announce"; // Функция анонсов и звуков.
callfunc "get_rating"; // Функция выдачи рейтинга.
end;
}
}
end;

OnMKReset: set @MultiKIll, 0; end;
}
/*
При выходе из игры:
*/
- script PvP_LogouteEvent -1,{
OnPCLogoutEvent:
if(strcharinfo(3) == "prontera") end;
getmapxy .@charmap$,.@x,.@y,0;
for(set .@i,0; .@i <=getarraysize($Rating_Location$); set .@i,.@i+1){
if(.@charmap$ == $Rating_Location$[.@i]){
if(@MultiKill > 0)set @MultiKill, 0;
if(@KillingSpree > 0)set @KillingSpree, 0;
deltimer "PvP_Killers::OnMKReset";
end;
}
}
end;
}
/*
При смерти:
*/
- script PVP_RATING_DIE -1,{
OnPCDieEvent:
if(strcharinfo(3) == "prontera") end;
if((killerrid == getcharid(0)) || (killerrid < 150000)){
end;
}
// Проверка на мапу.
getmapxy .@charmap$,.@x,.@y,0;
for(set .@i,0; .@i <=getarraysize($Rating_Location$); set .@i,.@i+1){
if(.@charmap$ == $Rating_Location$[.@i]){
if((killerrid == getcharid(0)) || (killerrid < 150000)) end;
sleep2 500;
deltimer "PvP_Killers::OnMKReset";
if(@MultiKill > 0)set @MultiKill, 0;
if(@KillingSpree > 0)set @KillingSpree, 0;
callfunc "take_rating"; // Минусуем рейтинг.
end;
}
}
end;
}
/*
Минусуем рейтинг при смерти:
*/
function script take_rating {
query_sql "SELECT `name`,`dies`,`rating` FROM `pvp_rating` WHERE `name`='"+strcharinfo(0)+"'",.@name$,.@die,.@rate; // Выбираем игрока из базы.
if(.@name$ == ""){
if(!.@rate){
set Rating,Rating + 1200;
set pvp_die, pvp_die +1;
query_sql "INSERT INTO `pvp_rating` (`name`, `dies`, `rating`) VALUES ('"+strcharinfo(0)+"', '"+pvp_die+"', '"+Rating+"')"; //Если игрока нету, добавим его.
dispbottom "[PvP System] : Вы умерли, у вас теперь :["+Rating+"] рейтинга и "+pvp_die+" смертей.";
}
return;
}
set Rating,Rating - rand(40,60);
set pvp_die, pvp_die +1;
dispbottom "[PvP System] : Вы умерли, у вас теперь :["+Rating+"] рейтинга и "+pvp_die+" смертей.";
query_sql "UPDATE `pvp_rating` SET `dies`='"+pvp_die+"', `rating`='"+Rating+"' WHERE `name`='"+strcharinfo(0)+"'"; // Если игрок есть, обновим его рейтинг.
return;
}
/*
Функция выдачи рейтинга:
*/
function script get_rating {
query_sql "SELECT `name`,`kills`,`rating` FROM `pvp_rating` WHERE `name`='"+strcharinfo(0)+"'",.@name$,.@kill,.@rate; // Выбираем игрока из базы.
if(.@name$ == ""){
if(!.@rate){
set Rating,Rating + 1200;
set pvp_kill,pvp_kill +1;
query_sql "INSERT INTO `pvp_rating` (`name`, `kills`, `rating`) VALUES ('"+strcharinfo(0)+"', '"+pvp_kill+"', '"+Rating+"')"; //Если игрока нету, добавим его.
dispbottom "[PvP System] : Вы убили, у вас теперь :["+Rating+"] рейтига и "+pvp_kill+" убийств.";
}
return;
}
set Rating,Rating + rand(30,50);
set pvp_kill,pvp_kill+1;
dispbottom "[PvP System] : Вы убили, у вас теперь :["+Rating+"] рейтига и "+pvp_kill+" убийств.";
query_sql "UPDATE `pvp_rating` SET `kills`='"+pvp_kill+"', `rating`='"+Rating+"' WHERE `name`='"+strcharinfo(0)+"'";// Если игрок есть, обновим его рейтинг.
return;
}
/*
Функция анонсов и звуков.
Чтоб звук был включен задайте переменной $Sound значение 1
Чтоб анонсы были включены задайте переменной $Announce значение 1
*/
function script Sound_Announce {
if(!$FirstBlood){
set $FirstBlood,1;
if($Announce) mapannounce strcharinfo(3),strcharinfo(0) + " HAS DRAW A FIRST BLOOD!",bc_map;
if($Sound){
soundeffectall "firstblood.wav",strcharinfo(3);
}
}
set @KillingSpree, @KillingSpree +1;
set @MultiKill, @MultiKill +1;
deltimer "PvP_Killers::OnMKReset";
addtimer 10000, "PvP_Killers::OnMKReset";
if($Announce){
switch(@KillingSpree){
case 0: case 1: case 2: break;
case 3: mapannounce strcharinfo(3),strcharinfo(0)+" " +$KS_Ann$[@KillingSpree -3],bc_all; break;
case 4: mapannounce strcharinfo(3),strcharinfo(0)+" " +$KS_Ann$[@KillingSpree -3],bc_all; break;
case 5: mapannounce strcharinfo(3),strcharinfo(0)+" " +$KS_Ann$[@KillingSpree -3],bc_all; break;
case 6: mapannounce strcharinfo(3),strcharinfo(0)+" " +$KS_Ann$[@KillingSpree -3],bc_all; break;
case 7: mapannounce strcharinfo(3),strcharinfo(0)+" " +$KS_Ann$[@KillingSpree -3],bc_all; break;
}
}
if(@KillingSpree >= 3 && @KillingSpree <= 7){
if($Sound) soundeffectall "killingspree"+@KillingSpree+".wav", 0, strcharinfo(3);
}
if($Announce){
switch(@MultiKill){
case 0: case 1: break;
case 2: mapannounce strcharinfo(3),strcharinfo(0)+" " +$MK_Ann$[@MultiKill -2],bc_all; break;
case 3: mapannounce strcharinfo(3),strcharinfo(0)+" " +$MK_Ann$[@MultiKill -2],bc_all; break;
case 4: mapannounce strcharinfo(3),strcharinfo(0)+" " +$MK_Ann$[@MultiKill -2],bc_all; break;
case 5: mapannounce strcharinfo(3),strcharinfo(0)+" " +$MK_Ann$[@MultiKill -2],bc_all; break;
}
}
sleep2 1500;
if(@MultiKill >= 2 && @MultiKill <= 5) {
if($Sound) soundeffectall "multikill"+@MultiKill+".wav", 0, strcharinfo(3);
}

if(@KillingSpree < 3){
if($Announce) mapannounce strcharinfo(3),strcharinfo(0)+" HAS SLAIN A "+rid2name(killedrid),bc_all;
}
if($Sound){
soundeffectall "slain.wav",0,strcharinfo(3);
}

if(@KillingSpree >= 7){
if($Announce) mapannounce strcharinfo(3),strcharinfo(0)+" IS LEGENDARY!!!",bc_all;
if($Sound){
soundeffectall "legendary.wav",0,strcharinfo(3);
}
}

if(@MultiKill > 5) set @MultiKill, 0;
return;
}

Ссылка на комментарий
Поделиться на другие сайты

В скрипте тонна ненужных глобальных переменных, смысл? если потрудиться и подумать - можно спокойно их убрать

Ссылка на комментарий
Поделиться на другие сайты

В скрипте тонна ненужных глобальных переменных, смысл? если потрудиться и подумать - можно спокойно их убрать

Ничего, кому нужно - уберет. На сколько я помню - работает :)

Так то я забивал на это все дело, просто выкладываю то что осталось на компе.

Ссылка на комментарий
Поделиться на другие сайты

А мне это когда-то продал за 50р :D :D :D

Я тебе настраивал его под тебя пару дней за эти 50 р!

Та ладно) Еще есть к тебе вопрос:

Сможешь сделать гв/пвп рейты и вывести их на сайт? Отпишись в асе

Ссылка на комментарий
Поделиться на другие сайты

А мне это когда-то продал за 50р :D :D :D

Я тебе настраивал его под тебя пару дней за эти 50 р!

Та ладно) Еще есть к тебе вопрос:

Сможешь сделать гв/пвп рейты и вывести их на сайт? Отпишись в асе

Рейт сделать - могу, а вывести на сайт хз, если просто таблицу килы смерти рейт то возможно, а с наворотами лучше к Санасолу обратись)

Лучше в скайп пиши )

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика