Break

Стенка бг мод

19 сообщений в этой теме

БГ уже не актуально...

Что делать, если персонажей на карте нечетное кол-во? А то один всегда в пролёте получается =/

function	script	nashest36	{
mapusersid("pvp_n_1-5");
leaveparty([email protected][0],getarraysize([email protected]));
set [email protected]_member,(getmapusers("pvp_n_1-5")/2);
copyarray [email protected]_group1[0],[email protected][0],[email protected]_member;
copyarray [email protected]_group2[0],[email protected][[email protected]_member],[email protected]_member;

sleep 2000;

set [email protected],rand(1,100);
createparty("Blue "[email protected],[email protected]_group1);
set [email protected]_pt1,getarraysize([email protected]_group1);
createparty("Red "[email protected],[email protected]_group2);
set [email protected]_pt2,getarraysize([email protected]_group2);

sleep 2000;

if(getmapusers("pvp_n_1-5")>2 && getmapusers("pvp_n_1-5")<4) {
inviteparty([email protected]_group2[0],[email protected]_member);}

else if (getmapusers("pvp_n_1-5")>3) {
inviteparty([email protected]_group1[0],[email protected]_member);
inviteparty([email protected]_group2[0],[email protected]_member);}

for (set .i, 0; .i < [email protected]_member; set .i, .i+1) {
warpchar "pvp_n_1-5",66,100,[email protected]_group1[.i];
warpchar "pvp_n_1-5",136,100,[email protected]_group2[.i];}
pvpon "pvp_n_1-5";
}

pvp_n_1-5,99,103,5 script Stenka_test 800,{
callfunc "nashest36";
close;
}

Изменено пользователем mrboob
0

Поделиться сообщением


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

ап

0

Поделиться сообщением


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

Возникла ещё одна проблема. Подскажите как правильно проверить в данном случае персонажа при смерти и после этого вычитать его из общего кол-ва при условии, что он состоит в одной из групп(пати) Мой вариант не хочет работать :(

Нужный кусок выделил тегом

prontera,0,0,0	script	pvpLadder2	-1,{
OnPCDieEvent:
if (getmapxy([email protected]_map$,@mapx,@mapy,0,strcharinfo(0))!=0) end;
if ( ([email protected]_map$=="pvp_n_1-5") && ([email protected]==2) ){
attachrid(killedrid);
warp "prontera",180,160;
[b]if([email protected]_group1[0]){
set [email protected]_pt1,[email protected]_pt1-1;}
if([email protected]_group2[0]){
set [email protected]_pt2,[email protected]_pt2-1;}[/b]
if([email protected]_pt1 == 0 && [email protected]_pt2 == 0) {
mapannounce "pvp_n_1-5","[Стенка на Стенку] бой завершен!!!",17;
enablenpc "SNS Prize";
set [email protected], 0;
cleararray [email protected][0],0,getarraysize([email protected]);
cleararray [email protected]_group1[0],0,getarraysize([email protected]_group1);
cleararray [email protected]_group2[0],0,getarraysize([email protected]_group2);
set [email protected]_member,0;
end;
}
mapannounce "pvp_n_1-5","Выживших - Команда Синих: "[email protected]_pt1+" Команда Красных: "[email protected]_pt2,1;
end;
}
}

Изменено пользователем mrboob
0

Поделиться сообщением


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

Проверять принадлежит ли игрок списку нужно через цикл

Зачем аттачиться к убитому в событии OnPCDie? Масло с маслом

1

Поделиться сообщением


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

Проверять принадлежит ли игрок списку нужно через цикл

Зачем аттачиться к убитому в событии OnPCDie? Масло с маслом

Спасибо! Помогло)

Осталось теперь только разобраться с нечетным кол-во игроков на карте...

Изменено пользователем mrboob
0

Поделиться сообщением


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

Дак вы скажите точно, что вам нужно: кикать лишнего или засунуть его в какую-нибудь из команд?

0

Поделиться сообщением


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

Дак вы скажите точно, что вам нужно: кикать лишнего или засунуть его в какую-нибудь из команд?

Лучше засунуть в одну из команд

0

Поделиться сообщением


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

mapusersid("pvp_n_1-5");
leaveparty([email protected][0],getarraysize([email protected]));
set [email protected]_member,(getmapusers("pvp_n_1-5")/2);
copyarray [email protected]_group1[0],[email protected][0],[email protected]_member;
copyarray [email protected]_group2[0],[email protected][[email protected]_member],[email protected]_member;

на

mapusersid("pvp_n_1-5");
leaveparty([email protected][0],getarraysize([email protected]));
set [email protected], getmapusers("pvp_n_1-5")%2;
set [email protected]_member,(getmapusers("pvp_n_1-5")/2);
copyarray [email protected]_group1[0],[email protected][0], (([email protected])?([email protected]_member+rand(2)):[email protected]_member);
copyarray [email protected]_group2[0],[email protected][getarraysize([email protected]_group1)], getmapusers("pvp_n_1-5") - getarraysize([email protected]_group1);

Только у меня ощущение, что я сделал слишком сложно (=

0

Поделиться сообщением


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

mapusersid("pvp_n_1-5");
leaveparty([email protected][0],getarraysize([email protected]));
set [email protected]_member,(getmapusers("pvp_n_1-5")/2);
copyarray [email protected]_group1[0],[email protected][0],[email protected]_member;
copyarray [email protected]_group2[0],[email protected][[email protected]_member],[email protected]_member;

на

mapusersid("pvp_n_1-5");
leaveparty([email protected][0],getarraysize([email protected]));
set [email protected], getmapusers("pvp_n_1-5")%2;
set [email protected]_member,(getmapusers("pvp_n_1-5")/2);
copyarray [email protected]_group1[0],[email protected][0], (([email protected])?([email protected]_member+rand(2)):[email protected]_member);
copyarray [email protected]_group2[0],[email protected][getarraysize([email protected]_group1[0])], getmapusers("pvp_n_1-5") - getarraysize([email protected]_group1[0]);

Только у меня ощущение, что я сделал слишком сложно (=

3 человека на карте, 1 закинуло в пати и варпнуло, 2 остальных остались по центру без изменений

0

Поделиться сообщением


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

if(getmapusers("pvp_n_1-5")>2 && getmapusers("pvp_n_1-5")<4) {
inviteparty([email protected]_group2[0],[email protected]_member);}

А изначально же скрипт обрабатывал ситуацию, когда 3 человека. Тоже не работает?

0

Поделиться сообщением


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

if(getmapusers("pvp_n_1-5")>2 && getmapusers("pvp_n_1-5")<4) {
inviteparty([email protected]_group2[0],[email protected]_member);}

А изначально же скрипт обрабатывал ситуацию, когда 3 человека. Тоже не работает?

Неа

Изменено пользователем mrboob
0

Поделиться сообщением


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

Ап! Есть ещё варианты?

0

Поделиться сообщением


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

Сильно не вникал в скрипт, если проблема все еще в том что остается в центре последний игрок, попробуй так:

if(getarraysize([email protected])%2>0)

{

и тут уже делаешь с этим игроком ([email protected][getarraysize([email protected])]), что хочешь

}

0

Поделиться сообщением


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

Сильно не вникал в скрипт, если проблема все еще в том что остается в центре последний игрок, попробуй так:

if(getarraysize([email protected])%2>0)

{

и тут уже делаешь с этим игроком ([email protected][getarraysize([email protected])]), что хочешь

}

Допустим его нужно добавить в одну из пати, как правильно записать? мои варианты не катят(

Изменено пользователем mrboob
0

Поделиться сообщением


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

как вариант из первого поста замени строку

copyarray [email protected]_group2[0],[email protected][[email protected]_member],[email protected]_member;

на

copyarray [email protected]_group2[0],[email protected][[email protected]_member],(getarraysize([email protected])%2>0?([email protected]_member+1):[email protected]_member);

если я правильно понял команду inviteparty.

В этом случае будет последнего игрока всегда добавлять в [email protected]_group2

В твоем первом посте всегда последний игрок отметался, потому как при делении в афине округление идет в меньшую сторону, т.е. 5/2 будет 2.

Изменено пользователем Incubus
1

Поделиться сообщением


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

Неа, не работает :(

0

Поделиться сообщением


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

Может после срабатывания варпа включить еще одного нпц, который ontouch будет добавлять к одной из групп?

0

Поделиться сообщением


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

Предлагаю проверить будет ли сумма двух массивов: [email protected]_group2 и [email protected]_group1 равна размеру массива [email protected], когда количество игроков не четное.

В этом куске ты наверное не изменил ничего?


for (set .i, 0; .i < [email protected]_member; set .i, .i+1) {
warpchar "pvp_n_1-5",66,100,[email protected]_group1[.i];
warpchar "pvp_n_1-5",136,100,[email protected]_group2[.i];}
pvpon "pvp_n_1-5";
}

не проще ли варпать командой warpparty раз ты уже всех раскидал по пати?

А также тут внимательно посмотри


if(getmapusers("pvp_n_1-5")>2 && getmapusers("pvp_n_1-5")<4) {
inviteparty([email protected]_group2[0],[email protected]_member);}

else if (getmapusers("pvp_n_1-5")>3) {
inviteparty([email protected]_group1[0],[email protected]_member);
inviteparty([email protected]_group2[0],[email protected]_member);}

думаю лучше будет писать типа такого:

inviteparty([email protected]_group2[0],getarraysize([email protected]_group2));

Изменено пользователем Incubus
1

Поделиться сообщением


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

Спасибо, помогло. Правда теперь 1 нюанс появился, когда убиваешь этого игрока, то статистика его не учитывает и эвент криво работает, ну я думаю разберусь, если что не получится то еще отпишусь ;)

Изменено пользователем mrboob
0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас