Kubix! Опубликовано 5 декабря, 2013 Жалоба Поделиться Опубликовано 5 декабря, 2013 Звуки http://us.ua/1294751/// -------------- 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;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Oxxy Опубликовано 5 декабря, 2013 Жалоба Поделиться Опубликовано 5 декабря, 2013 В скрипте тонна ненужных глобальных переменных, смысл? если потрудиться и подумать - можно спокойно их убрать Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 5 декабря, 2013 Автор Жалоба Поделиться Опубликовано 5 декабря, 2013 В скрипте тонна ненужных глобальных переменных, смысл? если потрудиться и подумать - можно спокойно их убрать Ничего, кому нужно - уберет. На сколько я помню - работает Так то я забивал на это все дело, просто выкладываю то что осталось на компе. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 5 декабря, 2013 Жалоба Поделиться Опубликовано 5 декабря, 2013 А чего стеснятся? Выкладывай настроенный сервер с клиентом, базой и сайтом! Тут все свои©Oxxy 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
unknown Опубликовано 5 декабря, 2013 Жалоба Поделиться Опубликовано 5 декабря, 2013 А мне это когда-то продал за 50р :D 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 5 декабря, 2013 Автор Жалоба Поделиться Опубликовано 5 декабря, 2013 А мне это когда-то продал за 50р :D Я тебе настраивал его под тебя пару дней за эти 50 р! Ссылка на комментарий Поделиться на другие сайты Поделиться
unknown Опубликовано 5 декабря, 2013 Жалоба Поделиться Опубликовано 5 декабря, 2013 А мне это когда-то продал за 50р :D Я тебе настраивал его под тебя пару дней за эти 50 р! Та ладно) Еще есть к тебе вопрос: Сможешь сделать гв/пвп рейты и вывести их на сайт? Отпишись в асе Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 5 декабря, 2013 Автор Жалоба Поделиться Опубликовано 5 декабря, 2013 А мне это когда-то продал за 50р :D Я тебе настраивал его под тебя пару дней за эти 50 р! Та ладно) Еще есть к тебе вопрос: Сможешь сделать гв/пвп рейты и вывести их на сайт? Отпишись в асе Рейт сделать - могу, а вывести на сайт хз, если просто таблицу килы смерти рейт то возможно, а с наворотами лучше к Санасолу обратись) Лучше в скайп пиши ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения