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

[Autoevent] party dm


poiuty

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

Простыня кода:

prontera,147,163,6 script Party DM Event::pdm1 734,{
if($@pdm_open == 3) goto PDM_Late;
if($@pdm_open == 2) goto PDM_RegistrationOff;
if($@pdm_open == 1) goto PDM_Registration;

PDM_Registration:
mes "^ff0000[Party DM Event]^000000";
mes "В данный момент регистрация открыта. Вы желаете зарегистрироваться на эвент?";
next;
menu "Зарегистрироваться",PDM_Register,"Отказаться от участия",PDM_Unreg,"Информация об эвенте",PDM_Info,"Выход",PDM_Exit;

PDM_Register:
if($@pdm_open == 3) goto PDM_RegistrationOff;
if($@pdm_open == 2) goto PDM_TimeRemain;
if($@pdm_pl_count >= 100) {
mes "^ff0000[Party DM Event]^000000";
mes "На данный момент зарегистрировано слишком много участников. Попробуйте позже.";
close;
}
if(@pdm_registered == $@pdm_opentime) {
mes "^ff0000[Party DM Event]^000000";
mes "Вы уже зарегистрированы. Эвент скоро начнется.";
close;
}
if(BaseLevel < 254) goto PDM_BLvl;
callfunc("pdm_reg",getcharid(3));
mes "^ff0000[Party DM Event]^000000";
mes "Вы были зарегистрированы на эвенте. Через несколько минут вы будете отправлены на арену.";
close;

PDM_Unreg:
if($@pdm_open == 3) goto PDM_RegistrationOff;
if($@pdm_open == 2) goto PDM_TimeRemain;
if(@pdm_registered != $@pdm_opentime) {
mes "^ff0000[Party DM Event]^000000";
mes "Вы ещё не зарегистрированы.";
close;
}
callfunc("pdm_unreg",getcharid(3));
mes "^ff0000[Party DM Event]^000000";
mes "Вы отказались от участия в эвенте.";
close;

PDM_Info:
if(getgmlevel() > 60) goto PDM_Control;
mes "^ff0000[Party DM Event]^000000";
mes "Для начала эвента необходимо как минимум 16 участников. Участвовать может любой игрок 254 уровня.";
next;
mes "^ff0000[Party DM Event]^000000";
mes "Все зарегистрированные участники делятся на несколько команд, и отправляются на специальную арену.";
next;
mes "^ff0000[Party DM Event]^000000";
mes "Им даётся время на подготовку, после чего начинается ПвП между командами.";
next;
mes "^ff0000[Party DM Event]^000000";
mes "Эвент продолжается до 10 минут, после чего победившей объявляется команда с наибольшим числом выживших.";
next;
mes "^ff0000[Party DM Event]^000000";
mes "Победители получают по 30 монет.";
close;

PDM_Control:
mes "^ff0000[Party DM Event]^000000";
mes $@pdm_pl_count+"/16";
switch(select("Reg ON:Start event")) {
case 1:
donpcevent "pdm_ctrl_1::OnRegistrationOpen";
close;
break;
case 2:
donpcevent "pdm_ctrl_3::OnPLCount";
close;
break;
}

PDM_Late:
mes "^ff0000[Party DM Event]^000000";
mes "В данный момент эвент уже идёт. О начале следующего эвента будет объявлено на весь мир.";
menu "Информация об эвенте",PDM_Info,"Выход",PDM_Exit;

PDM_RegistrationOff:
mes "^ff0000[Party DM Event]^000000";
mes "Сожалею, но в данный момент регистрация на эвент закончена.";
next;
menu "Информация об эвенте",PDM_Info,"Выход",PDM_Exit;

PDM_BLvl:
mes "^ff0000[Party DM Event]^000000";
mes "Сожалею, но на эвент допускаются только персонажи 254 уровня.";
close;

PDM_Exit:
close;

end;
}

- script pdm_ctrl_0 -1,{
OnInit:
set $@pdm_open,2;
end;
}

- script pdm_ctrl_1 -1,{
OnRegistrationOpen:
set $@pdm_pl_count,0;
set $@pdm_players,0;
set $@pdm_open,1;
set $@pdm_timeup,0;
set $@pdm_team1, 0;
set $@pdm_team1_cnt, 0;
set $@pdm_team1_mbr, 0;
set $@pdm_team1_mbr_cnt, 0;
set $@pdm_team2, 0;
set $@pdm_team2_cnt, 0;
set $@pdm_team2_mbr, 0;
set $@pdm_team2_mbr_cnt, 0;
set $@pdm_team3, 0;
set $@pdm_team3_cnt, 0;
set $@pdm_team3_mbr, 0;
set $@pdm_team3_mbr_cnt, 0;
set $@pdm_team4, 0;
set $@pdm_team4_cnt, 0;
set $@pdm_team4_mbr, 0;
set $@pdm_team4_mbr_cnt, 0;
set $@pdm_team_loser, 0;
set $@pdm_team1_loser, 0;
set $@pdm_team2_loser, 0;
set $@pdm_team3_loser, 0;
set $@pdm_team4_loser, 0;
set $@pdm_opentime, gettimetick(2);
enablenpc "Wall#1";
enablenpc "Wall#2";
enablenpc "Wall#3";
enablenpc "Wall#4";
enablenpc "Wall#5";
enablenpc "Wall#6";
enablenpc "Wall#7";
enablenpc "Wall#8";
enablenpc "Wall#9";
enablenpc "Wall#10";
enablenpc "Wall#11";
enablenpc "Wall#12";
enablenpc "Wall#13";
enablenpc "Wall#14";
enablenpc "Wall#15";
enablenpc "Wall#16";
enablenpc "Wall#17";
enablenpc "Wall#18";
enablenpc "Wall#19";
enablenpc "Wall#20";
enablenpc "Wall#21";
enablenpc "Wall#22";
enablenpc "Wall#23";
enablenpc "Wall#24";
setcell "pvp_n_2-3",97,128,102,128,cell_walkable,0;
setcell "pvp_n_2-3",127,97,127,102,cell_walkable,0;
setcell "pvp_n_2-3",97,72,102,72,cell_walkable,0;
setcell "pvp_n_2-3",72,97,72,102,cell_walkable,0;
pvpoff "pvp_n_2-3";
announce "Открыта регистрация на эвент Party DM!",bc_all,0xFF0000;
donpcevent "pdm_ctrl_3::onstart";
end;

OnPDMEnd:
mapwarp "pvp_n_2-3","prontera",156,181;
set $@pdm_pl_count,0;
set $@pdm_players,0;
set $@pdm_open,2;
set $@pdm_timeup,0;
set $@pdm_team1, 0;
set $@pdm_team1_cnt, 0;
set $@pdm_team1_mbr, 0;
set $@pdm_team1_mbr_cnt, 0;
set $@pdm_team2, 0;
set $@pdm_team2_cnt, 0;
set $@pdm_team2_mbr, 0;
set $@pdm_team2_mbr_cnt, 0;
set $@pdm_team3, 0;
set $@pdm_team3_cnt, 0;
set $@pdm_team3_mbr, 0;
set $@pdm_team3_mbr_cnt, 0;
set $@pdm_team4, 0;
set $@pdm_team4_cnt, 0;
set $@pdm_team4_mbr, 0;
set $@pdm_team4_mbr_cnt, 0;
set $@pdm_team_loser, 0;
set $@pdm_team1_loser, 0;
set $@pdm_team2_loser, 0;
set $@pdm_team3_loser, 0;
set $@pdm_team4_loser, 0;
enablenpc "Wall#1";
enablenpc "Wall#2";
enablenpc "Wall#3";
enablenpc "Wall#4";
enablenpc "Wall#5";
enablenpc "Wall#6";
enablenpc "Wall#7";
enablenpc "Wall#8";
enablenpc "Wall#9";
enablenpc "Wall#10";
enablenpc "Wall#11";
enablenpc "Wall#12";
enablenpc "Wall#13";
enablenpc "Wall#14";
enablenpc "Wall#15";
enablenpc "Wall#16";
enablenpc "Wall#17";
enablenpc "Wall#18";
enablenpc "Wall#19";
enablenpc "Wall#20";
enablenpc "Wall#21";
enablenpc "Wall#22";
enablenpc "Wall#23";
enablenpc "Wall#24";
setcell "pvp_n_2-3",97,128,102,128,cell_walkable,0;
setcell "pvp_n_2-3",127,97,127,102,cell_walkable,0;
setcell "pvp_n_2-3",97,72,102,72,cell_walkable,0;
setcell "pvp_n_2-3",72,97,72,102,cell_walkable,0;
pvpoff "pvp_n_2-3";
end;
}

- script pdm_ctrl_2 -1,{
OnClock1800:
OnClock2100:
donpcevent "pdm_ctrl_1::OnRegistrationOpen";
end;
}

- script pdm_ctrl_3 -1,{
onstart:
if($@pdm_pl_count > 15) { OnPLCount: donpcevent "pdm_ctrl_4::OnPLCount"; }
else { sleep 10000; goto onstart; }
end;
}

- script pdm_ctrl_4 -1,{
OnPLCount:
announce "Регистрация на эвент Party DM будет доступна ещё 5 минут.",bc_all,0xFF0000;
sleep 300000;
set $@pdm_open,3;
donpcevent "pdm_ctrl_5::OnEventStart";
end;
}

- script pdm_ctrl_5 -1,{
OnEventStart:
set $@pdm_party_nxt, rand(1,4);
for(set .@tmp,0; .@tmp<$@pdm_pl_count; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_players[.@tmp])) {
sc_end SC_ALL;
switch($@pdm_party_nxt) {
case 1:
set @pdm_team, 2;
set $@pdm_team2[getarraysize($@pdm_team2)], $@pdm_players[.@tmp];
set $@pdm_team2_cnt, $@pdm_team2_cnt + 1;
warp "pvp_n_2-3",139,99;
set $@pdm_party_nxt, 2;
break;
case 2:
set @pdm_team, 3;
set $@pdm_team3[getarraysize($@pdm_team3)], $@pdm_players[.@tmp];
set $@pdm_team3_cnt, $@pdm_team3_cnt + 1;
warp "pvp_n_2-3",99,60;
set $@pdm_party_nxt, 3;
break;
case 3:
set @pdm_team, 4;
set $@pdm_team4[getarraysize($@pdm_team4)], $@pdm_players[.@tmp];
set $@pdm_team4_cnt, $@pdm_team4_cnt + 1;
warp "pvp_n_2-3",60,99;
set $@pdm_party_nxt, 4;
break;
case 4:
set @pdm_team, 1;
set $@pdm_team1[getarraysize($@pdm_team1)], $@pdm_players[.@tmp];
set $@pdm_team1_cnt, $@pdm_team1_cnt + 1;
warp "pvp_n_2-3",99,139;
set $@pdm_party_nxt, 1;
break;
}
}
}
donpcevent "pdm_ctrl_6::OnEventStart";
end;
}

- script pdm_ctrl_6 -1,{
OnEventStart:
sleep 15000;
mapannounce "pvp_n_2-3","Игроки распределены по командам.",bc_map,0xFF0000;
sleep 2000;
mapannounce "pvp_n_2-3","У вас есть 3 минуты на подготовку и создание пати.",bc_map,0xFF0000;
sleep 180000;
mapannounce "pvp_n_2-3","Готовимся.",bc_map,0xFF0000;
sleep 3000;
mapannounce "pvp_n_2-3","- 5 -",bc_map,0xFF0000;
sleep 1000;
mapannounce "pvp_n_2-3","- 4 -",bc_map,0xFF0000;
sleep 1000;
mapannounce "pvp_n_2-3","- 3 -",bc_map,0xFF0000;
sleep 1000;
mapannounce "pvp_n_2-3","- 2 -",bc_map,0xFF0000;
sleep 1000;
mapannounce "pvp_n_2-3","- 1 -",bc_map,0xFF0000;
sleep 1000;
mapannounce "pvp_n_2-3","- GO -",bc_map,0xFF0000;
donpcevent "pdm_ctrl_7::OnEventStart";
end;
}

- script pdm_ctrl_7 -1,{
OnEventStart:
copyarray $@pdm_team1_mbr[0], $@pdm_team1[0], getarraysize($@pdm_team1);
set $@pdm_team1_mbr_cnt, $@pdm_team1_cnt;
copyarray $@pdm_team2_mbr[0], $@pdm_team2[0], getarraysize($@pdm_team2);
set $@pdm_team2_mbr_cnt, $@pdm_team2_cnt;
copyarray $@pdm_team3_mbr[0], $@pdm_team3[0], getarraysize($@pdm_team3);
set $@pdm_team3_mbr_cnt, $@pdm_team3_cnt;
copyarray $@pdm_team4_mbr[0], $@pdm_team4[0], getarraysize($@pdm_team4);
set $@pdm_team4_mbr_cnt, $@pdm_team4_cnt;
disablenpc "Wall#1";
disablenpc "Wall#2";
disablenpc "Wall#3";
disablenpc "Wall#4";
disablenpc "Wall#5";
disablenpc "Wall#6";
disablenpc "Wall#7";
disablenpc "Wall#8";
disablenpc "Wall#9";
disablenpc "Wall#10";
disablenpc "Wall#11";
disablenpc "Wall#12";
disablenpc "Wall#13";
disablenpc "Wall#14";
disablenpc "Wall#15";
disablenpc "Wall#16";
disablenpc "Wall#17";
disablenpc "Wall#18";
disablenpc "Wall#19";
disablenpc "Wall#20";
disablenpc "Wall#21";
disablenpc "Wall#22";
disablenpc "Wall#23";
disablenpc "Wall#24";
setcell "pvp_n_2-3",97,128,102,128,cell_walkable,1;
setcell "pvp_n_2-3",127,97,127,102,cell_walkable,1;
setcell "pvp_n_2-3",97,72,102,72,cell_walkable,1;
setcell "pvp_n_2-3",72,97,72,102,cell_walkable,1;
pvpon "pvp_n_2-3";
donpcevent "pdm_ctrl_8::OnEventStart";
sleep 600000;
if($@pdm_open == 3) donpcevent "pdm_ctrl_11::OnTimeUp";
end;
}

- script pdm_ctrl_8 -1,{
OnEventStart:
if($@pdm_team1_cnt == 0 && $@pdm_team1_loser == 0) {
mapannounce "pvp_n_2-3","Команда №1 потерпела поражение!",bc_map,0xFF0000;
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team1_loser, 1;
}
if($@pdm_team2_cnt == 0 && $@pdm_team2_loser == 0) {
mapannounce "pvp_n_2-3","Команда №2 потерпела поражение!",bc_map,0xFF0000;
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team2_loser, 1;
}
if($@pdm_team3_cnt == 0 && $@pdm_team3_loser == 0) {
mapannounce "pvp_n_2-3","Команда №3 потерпела поражение!",bc_map,0xFF0000;
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team3_loser, 1;
}
if($@pdm_team4_cnt == 0 && $@pdm_team4_loser == 0) {
mapannounce "pvp_n_2-3","Команда №4 потерпела поражение!",bc_map,0xFF0000;
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team4_loser, 1;
}
sleep 10000;
if($@pdm_timeup == 1) end;
if($@pdm_team_loser >= 3) goto OnEventEnd;
goto OnEventStart;
OnEventEnd:
if($@pdm_team1_loser == 0) {
mapannounce "pvp_n_2-3","Команда №1 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team1_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team1_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team2_loser == 0) {
mapannounce "pvp_n_2-3","Команда №2 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team2_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team2_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team3_loser == 0) {
mapannounce "pvp_n_2-3","Команда №3 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team3_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team3_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team4_loser == 0) {
mapannounce "pvp_n_2-3","Команда №4 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team4_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team4_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
sleep 10000;
donpcevent "pdm_ctrl_1::OnPDMEnd";
end;
}

- script pdm_ctrl_9 -1,{
OnPCLogoutEvent:
if(@pdm_registered > 0) callfunc("pdm_unreg",getcharid(3));
end;
}

- script pdm_ctrl_10 -1,{
OnPCKillEvent:
if(attachrid(killedrid)) {
if(@pdm_registered == $@pdm_opentime && @pdm_team > 0) {
callfunc("pdm_unreg",getcharid(3));
warp "prontera",156,181;
}
}
end;
}

- script pdm_ctrl_11 -1,{
OnTimeUp:
set $@pdm_timeup,1;
if($@pdm_team1_loser == 0 && $@pdm_team1_cnt >= $@pdm_team2_cnt && $@pdm_team1_cnt >= $@pdm_team3_cnt && $@pdm_team1_cnt >= $@pdm_team4_cnt) {
if($@pdm_team2_loser == 0) {
mapannounce "pvp_n_2-3","Команда №2 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",2);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team2_loser, 1;
}
if($@pdm_team3_loser == 0) {
mapannounce "pvp_n_2-3","Команда №3 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",3);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team3_loser, 1;
}
if($@pdm_team4_loser == 0) {
mapannounce "pvp_n_2-3","Команда №4 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",4);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team4_loser, 1;
}
mapannounce "pvp_n_2-3","Команда №1 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team1_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team1_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team2_loser == 0 && $@pdm_team2_cnt >= $@pdm_team1_cnt && $@pdm_team2_cnt >= $@pdm_team3_cnt && $@pdm_team2_cnt >= $@pdm_team4_cnt) {
if($@pdm_team1_loser == 0) {
mapannounce "pvp_n_2-3","Команда №1 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",1);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team1_loser, 1;
}
if($@pdm_team3_loser == 0) {
mapannounce "pvp_n_2-3","Команда №3 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",3);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team3_loser, 1;
}
if($@pdm_team4_loser == 0) {
mapannounce "pvp_n_2-3","Команда №4 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",4);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team4_loser, 1;
}
mapannounce "pvp_n_2-3","Команда №2 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team2_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team2_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team3_loser == 0 && $@pdm_team3_cnt >= $@pdm_team1_cnt && $@pdm_team3_cnt >= $@pdm_team2_cnt && $@pdm_team3_cnt >= $@pdm_team4_cnt) {
if($@pdm_team1_loser == 0) {
mapannounce "pvp_n_2-3","Команда №1 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",1);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team1_loser, 1;
}
if($@pdm_team2_loser == 0) {
mapannounce "pvp_n_2-3","Команда №2 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",2);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team2_loser, 1;
}
if($@pdm_team4_loser == 0) {
mapannounce "pvp_n_2-3","Команда №4 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",4);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team4_loser, 1;
}
mapannounce "pvp_n_2-3","Команда №3 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team3_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team3_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
else if($@pdm_team4_loser == 0 && $@pdm_team4_cnt >= $@pdm_team1_cnt && $@pdm_team4_cnt >= $@pdm_team2_cnt && $@pdm_team4_cnt >= $@pdm_team3_cnt) {
if($@pdm_team1_loser == 0) {
mapannounce "pvp_n_2-3","Команда №1 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",1);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team1_loser, 1;
}
if($@pdm_team2_loser == 0) {
mapannounce "pvp_n_2-3","Команда №2 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",2);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team2_loser, 1;
}
if($@pdm_team3_loser == 0) {
mapannounce "pvp_n_2-3","Команда №3 потерпела техническое поражение!",bc_map,0xFF0000;
callfunc("pdm_teamunreg",3);
sleep 1000;
set $@pdm_team_loser, $@pdm_team_loser+1;
set $@pdm_team3_loser, 1;
}
mapannounce "pvp_n_2-3","Команда №4 одержала победу!",bc_map,0xFF0000;
pvpoff "pvp_n_2-3";
sleep 5000;
for(set .@tmp,0; .@tmp<$@pdm_team4_mbr_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team4_mbr[.@tmp])) { getitem 673,30; callfunc("pdm_unreg",getcharid(3)); dispbottom "Поздравляем! Ваш приз составляет 30 монет!"; }
}
}
sleep 10000;
donpcevent "pdm_ctrl_1::OnPDMEnd";
end;
}

pvp_n_2-3,97,128,0 script Wall#1 1906,{ }
pvp_n_2-3,98,128,0 script Wall#2 1906,{ }
pvp_n_2-3,99,128,0 script Wall#3 1906,{ }
pvp_n_2-3,100,128,0 script Wall#4 1906,{ }
pvp_n_2-3,101,128,0 script Wall#5 1906,{ }
pvp_n_2-3,102,128,0 script Wall#6 1906,{ }
pvp_n_2-3,127,97,0 script Wall#7 1906,{ }
pvp_n_2-3,127,98,0 script Wall#8 1906,{ }
pvp_n_2-3,127,99,0 script Wall#9 1906,{ }
pvp_n_2-3,127,100,0 script Wall#10 1906,{ }
pvp_n_2-3,127,101,0 script Wall#11 1906,{ }
pvp_n_2-3,127,102,0 script Wall#12 1906,{ }
pvp_n_2-3,97,72,0 script Wall#13 1906,{ }
pvp_n_2-3,98,72,0 script Wall#14 1906,{ }
pvp_n_2-3,99,72,0 script Wall#15 1906,{ }
pvp_n_2-3,100,72,0 script Wall#16 1906,{ }
pvp_n_2-3,101,72,0 script Wall#17 1906,{ }
pvp_n_2-3,102,72,0 script Wall#18 1906,{ }
pvp_n_2-3,72,97,0 script Wall#19 1906,{ }
pvp_n_2-3,72,98,0 script Wall#20 1906,{ }
pvp_n_2-3,72,99,0 script Wall#21 1906,{ }
pvp_n_2-3,72,100,0 script Wall#22 1906,{ }
pvp_n_2-3,72,101,0 script Wall#23 1906,{ }
pvp_n_2-3,72,102,0 script Wall#24 1906,{ }

pvp_n_2-3 mapflag pvp
pvp_n_2-3 mapflag pvp_noguild
pvp_n_2-3 mapflag pvp_noparty
pvp_n_2-3 mapflag nomemo
pvp_n_2-3 mapflag noteleport
pvp_n_2-3 mapflag nosave
pvp_n_2-3 mapflag noexp
pvp_n_2-3 mapflag nopenalty
pvp_n_2-3 mapflag noteleport
pvp_n_2-3 mapflag nowarp
pvp_n_2-3 mapflag noreturn
pvp_n_2-3 mapflag nobranch
pvp_n_2-3 mapflag nogo
pvp_n_2-3 mapflag restricted 5

function script pdm_reg {
set .@player, getarg(0);
if(attachrid(.@player)) set @pdm_registered,$@pdm_opentime;
for(set .@tmp,0; .@tmp<100; set .@tmp, .@tmp + 1) {
if($@pdm_players[.@tmp] == FALSE) { set $@pdm_players[.@tmp],.@player; set $@pdm_pl_count, $@pdm_pl_count + 1; return 1; end; }
}
}

function script pdm_unreg {
set .@player, getarg(0);
set .@pl_count, $@pdm_pl_count;
if(attachrid(.@player)) {
set @pdm_registered,0;
switch(@pdm_team) {
case 1:
set .@team1_cnt, $@pdm_team1_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team1_cnt; set .@tmp, .@tmp + 1) {
if($@pdm_team1[.@tmp] == .@player) { set $@pdm_team1[.@tmp],0; set $@pdm_team1_cnt, $@pdm_team1_cnt - 1; }
}
break;
case 2:
set .@team2_cnt, $@pdm_team2_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team2_cnt; set .@tmp, .@tmp + 1) {
if($@pdm_team2[.@tmp] == .@player) { set $@pdm_team2[.@tmp],0; set $@pdm_team2_cnt, $@pdm_team2_cnt - 1; }
}
break;
case 3:
set .@team3_cnt, $@pdm_team3_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team3_cnt; set .@tmp, .@tmp + 1) {
if($@pdm_team3[.@tmp] == .@player) { set $@pdm_team3[.@tmp],0; set $@pdm_team3_cnt, $@pdm_team3_cnt - 1; }
}
break;
case 4:
set .@team4_cnt, $@pdm_team4_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team4_cnt; set .@tmp, .@tmp + 1) {
if($@pdm_team4[.@tmp] == .@player) { set $@pdm_team4[.@tmp],0; set $@pdm_team4_cnt, $@pdm_team4_cnt - 1; }
}
break;
}
set @pdm_team,0;
}
for(set .@tmp2,0; .@tmp2<.@pl_count; set .@tmp2, .@tmp2 + 1) {
if($@pdm_players[.@tmp2] == .@player) { set $@pdm_players[.@tmp2],0; set $@pdm_pl_count, $@pdm_pl_count - 1; }
}
return 1;
}

function script pdm_teamunreg {
set .@team, getarg(0);
switch(.@team) {
case 1:
set .@team1_cnt, $@pdm_team1_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team1_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team1[.@tmp])) {
set .@pl_count, $@pdm_pl_count;
for(set .@tmp2,0; .@tmp2<.@pl_count; set .@tmp2, .@tmp2 + 1) {
if($@pdm_players[.@tmp2] == $@pdm_team1[.@tmp]) { set $@pdm_players[.@tmp2],0; set $@pdm_pl_count, $@pdm_pl_count - 1; }
}
set @pdm_registered,0;
set @pdm_team,0;
set $@pdm_team1[.@tmp],0;
set $@pdm_team1_cnt, $@pdm_team1_cnt - 1;
}
}
break;
case 2:
set .@team2_cnt, $@pdm_team2_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team2_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team2[.@tmp])) {
set .@pl_count, $@pdm_pl_count;
for(set .@tmp2,0; .@tmp2<.@pl_count; set .@tmp2, .@tmp2 + 1) {
if($@pdm_players[.@tmp2] == $@pdm_team2[.@tmp]) { set $@pdm_players[.@tmp2],0; set $@pdm_pl_count, $@pdm_pl_count - 1; }
}
set @pdm_registered,0;
set @pdm_team,0;
set $@pdm_team2[.@tmp],0;
set $@pdm_team2_cnt, $@pdm_team2_cnt - 1;
}
}
break;
case 3:
set .@team3_cnt, $@pdm_team3_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team3_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team3[.@tmp])) {
set .@pl_count, $@pdm_pl_count;
for(set .@tmp2,0; .@tmp2<.@pl_count; set .@tmp2, .@tmp2 + 1) {
if($@pdm_players[.@tmp2] == $@pdm_team3[.@tmp]) { set $@pdm_players[.@tmp2],0; set $@pdm_pl_count, $@pdm_pl_count - 1; }
}
set @pdm_registered,0;
set @pdm_team,0;
set $@pdm_team3[.@tmp],0;
set $@pdm_team3_cnt, $@pdm_team3_cnt - 1;
}
}
break;
case 4:
set .@team4_cnt, $@pdm_team4_mbr_cnt;
for(set .@tmp,0; .@tmp<.@team4_cnt; set .@tmp, .@tmp + 1) {
if(attachrid($@pdm_team4[.@tmp])) {
set .@pl_count, $@pdm_pl_count;
for(set .@tmp2,0; .@tmp2<.@pl_count; set .@tmp2, .@tmp2 + 1) {
if($@pdm_players[.@tmp2] == $@pdm_team4[.@tmp]) { set $@pdm_players[.@tmp2],0; set $@pdm_pl_count, $@pdm_pl_count - 1; }
}
set @pdm_registered,0;
set @pdm_team,0;
set $@pdm_team4[.@tmp],0;
set $@pdm_team4_cnt, $@pdm_team4_cnt - 1;
}
}
break;
}
return 1;
}

Изменено пользователем Кеник
Спойлеры НЕ для трусов (:
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Протестировала интересные мне эвенты - все более менее рабочее. Есть некоторые НО, об одной из них сейчас и расскажу.

В этом эвенте, после убийства игрока на арене он респается в пронте. Все вроде нормально. Только у него сколько-то то там хп и он не может: лечиться, кастоваться, умирать (но коммент), его не видят мобы, и не может бить мобов. То есть перс фактически мертв. При перезаходе хп становится равным нулю. На него при этом действует @raise.

Проверила 4 раза. (в момент написания проверила воскрешение, и нашла решение своей проблемы)

Но все таки странно мне то, что на обычной арене такого не происходит. Полагаю что тут собака зарыта в мапфлагах, но все выглядит нормально.

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


OnPCKillEvent:
if(attachrid(killedrid))
{
if(@pdm_registered == $@pdm_opentime && @pdm_team > 0)
{
callfunc("pdm_unreg",getcharid(3));
warp "prontera",156,181;
}
}
end;

Зачем так мудрить? OnPCDieEvent на что?


OnPCDieEvent:
if( @pdm_registered == $@pdm_opentime && @pdm_team > 0 )
{
callfunc "pdm_unreg";
warp "prontera",156,181;
}
end;

@alive тоже не обязательно прописывать, персонаж встаёт сам.

Если не встаёт, то дабавьте заплатку в ../src/map/pc.c

Найдите строчку :


int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y, clr_type clrtype)"

И после :


if( !mapindex || !mapindex_id2name(mapindex) ) {
ShowDebug("pc_setpos: Passed mapindex(%d) is invalid!\n", mapindex);
return 1;
}

Добавьте :


if( pc_isdead(sd) ) { //Revive dead people before warping them
pc_setstand(sd);
pc_setrestartvalue(sd,1);
}

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

  • 2 недели спустя...
×
×
  • Создать...
Яндекс.Метрика