Автор: Sanasol: Дата: 12.09.2010
/*
by Sanasol
*/
- script pvp_rate -1,{
OnPckillEvent:
set kills,kills+1;
dispbottom "Вы убили персонажа "+rid2name(killedrid)+", у вас "+kills+" убийств";
end;
OnPcDieEvent:
if(killerrid == getcharid(0)) end;
set dies,dies+1;
dispbottom "Вас убил персонаж "+rid2name(killerrid)+", у вас "+dies+" смертей";
end;
OnPCLoginEvent:
query_sql("update `char` set `dies`='"+dies+"' where char_id='"+getcharid(0)+"'");
query_sql("update `char` set `kills`='"+kills+"' where char_id='"+getcharid(0)+"'");
end;
OnWhisperGlobal:
if (@whispervar0$ == "стат") {
dispbottom "Информация: Убийств "+kills+", Смертей "+dies+"";
}
if (@whispervar0$ == "топ") {
dispbottom "-----ПвП Топ Игроков----";
query_sql "SELECT `name`,`kills`,`dies` FROM `char` ORDER BY `kills` DESC LIMIT "+@whispervar1$+"", @name$, @kills, @dies;
set $limit,@whispervar1$;
dispbottom "Ник || Убийств || Смертей";
for(set @i,0; @i != $limit; set @i,@i+1) { dispbottom ""+(@i+1)+" | "+@name$[@i]+" | "+@kills[@i]+" | "+@dies[@i]+""; }
}
if (@whispervar0$ == "инфо") {
dispbottom "Чтобы узнать вашу статистику напишите 'стат'";
dispbottom "Чтобы посмотреть топ игроков напишите 'топ#цифра', Цифра - сколько игроков в топе показать. например 'топ#5' выведет Топ 5 игроков";
}
end;
}
$host = "1111111111111";
$user = "casdasd";
$password = "asdasd";
$rodb = "asdasd";
$job['0']= "Novice";
$job['1']= "Swordman";
$job['2']= "Magician";
$job['3']= "Archer";
$job['4']= "Acolyte";
$job['5']= "Merchant";
$job['6']= "Thief";
$job['7']= "Knight";
$job['8']= "Priest";
$job['9']= "Wizard";
$job['10']= "Blacksmith";
$job['11']= "Hunter";
$job['12']= "Assassin";
$job['13']= "Knight (Peco)";
$job['14']= "Crusader";
$job['15']= "Monk";
$job['16']= "Sage";
$job['17']= "Rogue";
$job['18']= "Alchemist";
$job['19']= "Bard";
$job['20']= "Dancer";
$job['21']= "Crusader (Peco)";
$job['22']= "Wedding";
$job['23']= "Super Novice";
$job['24']= "Gunslinger";
$job['25']= "Ninja";
$job['4001']= "Novice High";
$job['4002']= "Swordman High";
$job['4003']= "Magician High";
$job['4004']= "Archer High";
$job['4005']= "Acolyte High";
$job['4006']= "Merchant High";
$job['4007']= "Thief High";
$job['4008']= "Lord Knight";
$job['4009']= "High Priest";
$job['4010']= "High Wizard";
$job['4011']= "Whitesmith";
$job['4012']= "Sniper";
$job['4013']= "Assassin Cross";
$job['4014']= "Lord Knight (Peco)";
$job['4015']= "Paladin";
$job['4016']= "Champion";
$job['4017']= "Professor";
$job['4018']= "Stalker";
$job['4019']= "Creator";
$job['4020']= "Clown";
$job['4021']= "Gypsy";
$job['4022']= "Paladin (Peco)";
$job['4023']= "Baby Novice";
$job['4024']= "Baby Swordman";
$job['4025']= "Baby Magician";
$job['4026']= "Baby Archer";
$job['4027']= "Baby Acolyte";
$job['4028']= "Baby Merchant";
$job['4029']= "Baby Thief";
$job['4030']= "Baby Knight";
$job['4031']= "Baby Priest";
$job['4032']= "Baby Wizard";
$job['4033']= "Baby Blacksmith";
$job['4034']= "Baby Hunter";
$job['4035']= "Baby Assassin";
$job['4036']= "Baby Knight (Peco)";
$job['4037']= "Baby Crusader";
$job['4038']= "Baby Monk";
$job['4039']= "Baby Sage";
$job['4040']= "Baby Rogue";
$job['4041']= "Baby Alchemist";
$job['4042']= "Baby Bard";
$job['4043']= "Baby Dancer";
$job['4044']= "Baby Crusader (Peco)";
$job['4045']= "Baby Super Novice";
$job['4046']= "Taekwon";
$job['4047']= "Star Knight";
$job['4048']= "Star Knight (flying)";
$job['4049']= "Soul Linker";
$num=0;
$db = mysql_connect ($host,$user,$password);
mysql_select_db($rodb,$db);
$result = mysql_query ("SELECT * FROM `char` ORDER BY `kills` DESC LIMIT 10 ",$db) or die(mysql_error());
$myrow = mysql_fetch_array($result);
mysql_query("SET SESSION CHARACTER SET utf-8");
mysql_query("SET NAMES utf-8");
echo "
№
Ник
Б.лвл/Дж.лвл
Убийств
Смертей
Профессия
";
do
{
$num=$num+1;
printf("
$num
%s
%s/%s
%s
%s
".$job[$myrow["class"]]."
" ,$myrow["name"] ,$myrow["base_level"],$myrow["job_level"] ,$myrow["kills"] ,$myrow["dies"], $myrow["class"]);
}
while ($myrow = mysql_fetch_array($result));
echo "
";
?>
npc:pvp_rate
"инфо"
Кому: npc:pvp_rate
Сообщение: инфо
Автор: [Гудвин]: Дата: 12.22.2010
Автор: gmden: Дата: 12.27.2010
Хм а где резет? Из какого файла записываются данные в kills и dies. Вырубаю серв вручную в дб изменяю все kills и dies на 0 запускаю пишу стат отвечает что смертей 20 убийств 23 пере зашел и опять в kills и dies стоят 20 и 23
Автор: [OneLife]: Дата: 12.27.2010
OnPckillEvent:
set kills,kills+1;
dispbottom "Вы убили персонажа "+rid2name(killedrid)+", у вас "+kills+" убийств";
end;
OnPcDieEvent:
if(killerrid == getcharid(0)) end;
set dies,dies+1;
dispbottom "Вас убил персонаж "+rid2name(killerrid)+", у вас "+dies+" смертей";
end;
Автор: gmden: Дата: 12.27.2010
Это понятно это в db char kills и dies а куда предварительно пишет? или как зделать чтобы был полный резет ?
Меня больше интересует
OnWhisperGlobal:
if (@whispervar0$ == "стат") {
dispbottom "Информация: Убийств "+kills+", Смертей "+dies+"";
Автор: gmden: Дата: 12.27.2010
Я так понимаю что Инфа хранится где то в eAthena, а из неё при входи выходи чара копируется в db char kills и dies.
Автор: [OneLife]: Дата: 12.27.2010
Цитата gmden;28353:
Я так понимаю что Инфа хранится где то в eAthena, а из неё при входи выходи чара копируется в db char kills и dies.
Автор: gmden: Дата: 12.27.2010
Ну так объясни если не трудно. Я просто не могу понять откуда скрипт берёт значения. Я думаю что из query_sql но немогу его найти
OnPCLoginEvent:
query_sql("update `char` set `dies`='"+dies+"' where char_id='"+getcharid(0)+"'");
query_sql("update `char` set `kills`='"+kills+"' where char_id='"+getcharid(0)+"'");
end
Автор: [OneLife]: Дата: 12.27.2010
Цитата gmden;28355:
Ну так объясни если не трудно. Я просто не могу понять откуда скрипт берёт значения. Я думаю что из query_sql но немогу его найти
OnPCLoginEvent:
query_sql("update `char` set `dies`='"+dies+"' where char_id='"+getcharid(0)+"'");
query_sql("update `char` set `kills`='"+kills+"' where char_id='"+getcharid(0)+"'");
end
Автор: Den007: Дата: 12.27.2010
в global_reg_value нашел 2 таблици killerrid и killedrid но изменения их не дало результатов(Я их даже переименовывал) но после пере захода персонажа всеравно восстанавливаются таблицы kills и dies (Их я тоже на 0 изменял)
Автор: SupR1g: Дата: 02.11.2011
Не многим игрокам нравится подобный способ узнать свой рейтинг, поэтому посидел, взял за основу 2х нпс, объединил, вот что получилось...всё работает, но есть 1 "НО", хочу чтоб ещё и в меню "Мой статус" отображалось место в топе...подскажете?
[HTML]Prontera,94,91,4 script Рейтинг PvP 857,{
mes "[PvP Инфо]";
mes "В рейтинге вы можете увидеть:";
mes "^FF0000Лидеров PvP.^000000";
mes "^42aaffСвой статус PvP.^000000";
next;
switch(select("^FF0000Лидеры PvP^000000","^42aaffМой статус^000000","Выход")) {
case 1:
set $limit, 100; //Топ#100...
query_sql "SELECT `name`,`kills`,`dies` FROM `char` ORDER BY `kills` DESC LIMIT 100", @name$, @kills, @dies;
mes "[ ^ff0000Топ "+$limit+"^000000 ]";
mes "^0000FF[Имя]^000000 - ^FF0000Убийств^000000 - ^42aaffСмертей^000000";
mes "========================";
for (set @i,0; @i != $limit; set @i,@i+1) {
mes "["+(@i+1)+"] ^0000FF["+@name$[@i]+"]^000000 - ^FF0000"+@kills[@i]+"^000000 - ^42aaff"+@dies[@i]+"^000000";
}
close2;
break;
case 2:
mes "[ PvP Статус: ^0000ff"+strcharinfo(0)+"^000000 ]";
mes "^FF0000Убийств^000000: ^0000FF"+kills+"^000000";
mes "^42aaffСмертей^000000: ^0000FF"+dies+"^000000";
close2;
break;
case 3:
close2;
break;
}
end;
}[/HTML]
Автор: Jarek: Дата: 02.11.2011
Ну я думаю можно как-то так:
query_sql "SELECT `name` FROM `char` ORDER BY `kills` DESC LIMIT 100", @name$;
for (set @i,0; @i != $limit; set @i,@i+1) {
if(@name$[@i]==strcharinfo(0)){
set @found,1;
break;
}
if(@found){
set @found,0;
mes "Ваше место в топе: "+@i+1;
}
else mes "Вы занимаете слишком низкое место в топе";
Автор: SupR1g: Дата: 02.14.2011
попробую (= спасибо (=
Автор: DeadFull: Дата: 03.01.2011
Есть такой вопросик, команду @die сразу пишется вас убил null или @nuke, а вот как сделать чтобы из-за этих команд кол-во смертей не считалось?
Автор: Jarek: Дата: 03.01.2011
Заменить проверку?
OnPcDieEvent:
if((killerrid == getcharid(0)) || !killerrid) end;
Автор: DeadFull: Дата: 03.01.2011
спс Jarek
Автор: DeadFull: Дата: 03.01.2011
А вот еще 1 прикол а от мобов как сделать чтобы смерти несчитались=)
Автор: DeadFull: Дата: 03.01.2011
гыыы добавил !killerrmobid и все заработало хД
Автор: DeadFull: Дата: 03.01.2011
Пардон все работает=) запутался проста=)
Автор: DeadFull: Дата: 03.02.2011
Цитата Jarek;35038:
Заменить проверку?
OnPcDieEvent:
if((killerrid == getcharid(0)) || !killerrid) end;
Автор: DeadFull: Дата: 03.02.2011
Вообщем как сделать так чтобы на гв на пвп считались и смерти и килы и чтобы не считались килы таки как @die или @nuke (а то евент цыпленка врубишь тык тама все подохнут раз по 100 и что же это за пвп рейтинг тогда), и соответственно несчитались килы от мобов.
Автор: dimjke: Дата: 03.02.2011
if ( getcharid(3) == killerrid ) end;
Автор: DeadFull: Дата: 03.02.2011
А зачем мне проверка аккаунта
Автор: DeadFull: Дата: 03.02.2011
getcharid(3) это же проверка аккаунта
Автор: dimjke: Дата: 03.02.2011
И что с того? У меня так всё прекрасно работает.
Даже недавно эту тему поднимал: http://rus-ea.ru/showthread.php?t=3549
Автор: DeadFull: Дата: 03.02.2011
ЩАС ПОПРОБУЮ
Автор: DeadFull: Дата: 03.02.2011
ну вот попробовал и все равно вводишь @die и смерть защитывается=)
Автор: Jarek: Дата: 03.02.2011
DeadFull, еще один дабл пост и получите нарушение.
getcharid(3) == killerrid
!killerridпроверка на @die
Автор: S2pidsMan: Дата: 03.03.2011
А помогите пожалуйста внедрить уже в мой пхп код. что-то не выходит. Мне не нуен вывод базового-джоб уровня, профессии и т.д. только ник, убийств и смертей.
Имя
Убийств
Смертей
include('config.php');
$Query = mysql_query("SELECT * FROM `pvp_arenas` order by `matou` DESC, `morreu` DESC LIMIT 5;");
for($i=0;$i
$rank = $i+1;
$Array = mysql_fetch_row($Query);
$acc = mysql_query("SELECT * FROM `pvp_arenas` WHERE nome='".$Array['nome']."';");
$mysl = mysql_fetch_array($acc);
if($mysl['level'] <= "10"){
?>
=$rank?>
=$Array['1']?>
=$Array['2']?>
=$Array['3']?>
} } ?>
include('config.php');
$Query = mysql_query("SELECT * FROM `char` order by `kills` DESC, `dies` DESC LIMIT 5;");
for($i=0;$i
$rank = $i+1;
$Array = mysql_fetch_row($Query);
$acc = mysql_query("SELECT * FROM `char` WHERE nome='".$Array['name']."';");
$mysl = mysql_fetch_array($acc);
if($mysl['level'] <= "10"){
?>
=$rank?>
=$Array['1']?>
=$Array['2']?>
=$Array['3']?>
} } ?>
Автор: gmden: Дата: 04.26.2011
Скрипт поставил норм. Но фраги не засчитываются. Я помню гдето нужно SRC подправить. Видел на eathena, но потерял немогу найти подскажите кто знает что нужно подправить.
Автор: Sanasol: Дата: 04.26.2011
При чем тут исходники.
В базу пишется не каждый фраг, а при входу в игру обновляется в базе.
Автор: gmden: Дата: 04.26.2011
Цитата Sanasol;39877:
При чем тут исходники.
В базу пишется не каждый фраг, а при входу в игру обновляется в базе.
Автор: Кеник: Дата: 04.26.2011
В базу пишется не каждый фраг, а при входу в игру обновляется в базе.
Автор: gmden: Дата: 06.07.2011
Подскажите как поставить проверку на смертность от мобов? А то В евенте с МВП мобами, люди дохнут раз по 100, и смертность ппц как растет.
Автор: Sanasol: Дата: 06.07.2011
Надо всё делать в OnPCKillEvent.
Без использования OnPCDie
Автор: gmden: Дата: 06.07.2011
Да дело не в этом + ещё люди же качаются, умирают от мобов, смертность тоже растет, как сделать так чтобы вообще от мобов смертность не росла.
Автор: Sanasol: Дата: 06.07.2011
прочитай предыдущий пост
Автор: gmden: Дата: 06.07.2011
Я нечё не догоняю причём тут (Надо всё делать в OnPCKillEvent.)
Я прошу какую проверку поставить вот например
if ( getcharid(3) == killerrid ) end; это от @nuke
if((killerrid == getcharid(0)) || !killerrid) end; это от @die
Автор: Jarek: Дата: 06.08.2011
Ну если вы такой упертый и не хотите делать по-человечески,то:
if((killerrid >1000) and (killerrid < 2500)) end;
P.S.: Почему у вас в проверках от nuke и от die берутся разные ID?
rid = account id
Автор: Sanasol: Дата: 06.08.2011
Jarek, такой вариант не работает
if((killerrid >1000) and (killerrid < 2500)) end;(киллеррид у монстра на сервере примерно такой: 200132165497745)
Автор: Jarek: Дата: 06.08.2011
А ну да, забыл. После того и не работает
Автор: S2pidsMan: Дата: 07.01.2011
Апну тему.
Так какую там проверку нужно, что-бы от мобов не засчитывалось смерть?)
Автор: Sanasol: Дата: 07.01.2011
OnPckillEvent:
if(rid2name(killedrid) == strcharinfo(0)) end;
set kills,kills+1;
dispbottom "Вы убили персонажа "+rid2name(killedrid)+", у вас "+kills+" убийств";
//killed
attachrid killedrid;
if(rid2name(killerrid) == strcharinfo(0)) end;
if(killerrid == null) end;
set dies,dies+1;
dispbottom "Вас убил персонаж "+rid2name(killerrid)+", у вас "+dies+" смертей";
end;