С тех пор многое изменил и улучшил.
- в чат пишется не аннонсом а через .shout
- перед боем парализация не на 30 а на 60 сек (не все успевают телепортироваться)
- убитые не парализуются, это уже не нужно
- при попытке войти на арену во время боя незарегистрированным игроком телепортирует к выходу
- при попытке сбежать с арены телепортирует немного назад (в идеале просто отодвигает, но пока такой механизм не отлажен)
- теперь зарегистрированные игроки не могут телепортироваться с арены
- при убийстве незарегистрированным игроком зарегистрированного, или при убийстве члена своей команды, кидает в тюрьму на 25 предметов
- исправлена ошибка с выдачей приза не той команде
- при смерти пишет кто умер и вычеркивается из списка. Раньше просто считалось число убитых - в результате неважно было кого убивать, можно было даже 2 раза одного и того же
- если обе команды полностью заполнены - старт через минуту
- теперь вся система помещается в 1 файле
- куча мелких исправлений
В разработке:
1) телепортация всех незарегистрированных перед боем с арены к выходу
2) запрет на атаку незарегистрированными зарегистрированных во время боя
3) перед боем не парализует полностью, можно бафаться
4) при выходе из игры, игрок дисквалифицируется
5) проверка на выключение/рестарт сервера, рестарт форта, возврат денег в этом случае
6) ограничение боя до 120 секунд (можно больше или меньше), возврат денег или определение победителя если время истекло (незнаю что лучше)
7) отталкивание от "стенки" а не телепортация. При телепортации мигает и иногда чар застревает (пока esc не нажмешь)
Я бы все это реализовал хоть сейчас, но:
1. - не могу сделать, из за смешной ошибки:
code text
: pvp_arena_clear
"player@ 'X' p@ 72479 > player@ 'X' p@ 73505 < and player@ 'Y' p@ 142250 > player@ 'Y' p@ 143273 < and and player@ pvp_team1_list in-list? not player@ pvp_team2_list in-list? not and and if 73879 142632 -3773 player@ teleport-char-to then" do-players
;
Почему-то тут неважно, что стоит перед if - 0 или -1. В любом случае условие выполняется. Если такой код запустить - телепортирует весь онлайн а не только тех кто на арене находится.
То же самое происходит если в чате набрать:
//do 1 1 = if 123 show then \ перед if -1, выводит 123
//do 1 0 = if 123 show then \ перед if 0, выводит 123
2. Писал вот тут
AI
3. Думаю можно через evt реализовать, пока незнаю как.
4. Пробовал втыкать проверку в файл on-player-exit.f все работает но та же проблема что в пункте 1
code text
player@ pvp_team1_list in-list? if
player@ "Name" p@ " дисквалифицирован (вышел из игры)" s+ "PVP system" .shout
new-list to pvp_temp_list
pvp_team1_list list# 0 ?do
player@ pvp_team1_list i list@ = not if
pvp_team1_list i list@ pvp_temp_list +list
then
loop
pvp_temp_list to pvp_team1_list
pvp_team1_list list# 0 = if
pvp_team2_adena_pay
"2 команда победила" "PVP system" .shout
new-list to pvp_team1_list
new-list to pvp_team2_list
0 to pvp_status
then
then
player@ pvp_team2_list in-list? if
player@ "Name" p@ " дисквалифицирован (вышел из игры)" s+ "PVP system" .shout
new-list to pvp_temp_list
pvp_team2_list list# 0 ?do
player@ pvp_team2_list i list@ = not if
pvp_team2_list i list@ pvp_temp_list +list
then
loop
pvp_temp_list to pvp_team2_list
pvp_team2_list list# 0 = if
pvp_team1_adena_pay
"1 команда победила" "PVP system" .shout
new-list to pvp_team1_list
new-list to pvp_team2_list
0 to pvp_status
then
then
Этот код тоже выполняется всегда, независимо от значения перед if
5. Думаю будут аналогичные проблемы
7. Тоже писал тут
AI
В последней версии не обнаружил ошибок, тестил много раз. Но наверняка можно много чего улучшить, я в форте пока не силен.
Просьба помочь с доработкой этой системы, игрокам она очень нравится, используют часто. Жду предложений по ее улучшению