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

Храм стихии


Fizik

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

Не так давно в голову пришла затея) С помощью

botka4aet

была доработанна регистрация я решил выложить в паблик этот Мини инстансик)

Сразу скажу что за основу был взят Ивент Devil Square

Монстры кастомные) поэтому каждый сможет заменить для себя желамое кол-во

Если будут вопросы с радостью отвечу на них в коментах ниже или в ЛС!!

Я писал ниже нпц которое в обмен за итемку выдаёт награду, или если нету итемки то выдаёт утишительную награду

По желанию можете изменить что бы давал за прохождение.

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

Ничего нового нет, ты добавил варп пати и бессмысленную регистрацию какую-то. Бессмысленность заключается в том, что каждая новая пати которая зарегается будет призывать новые волны мобов. Пати зашла > 1 чел вышел > зарегался снова > появились мобы, всех варпнуло в начало > рекурсия епт.

В чем смысл переменной .round? ты ее объявил а нигде не юзаешь. Читай что ты вообще делаешь и изменяешь.

Сначала у тебя объявляют первый раунд, потом второй, потом финальный, потом опять второй и опять финальный. Чито?

И ещё много всего. Обдумывай что ли что ты делаешь для начала. Как это будет работать, зачем оно будет работать, все тонкости а только потом что-то делай. Всегда больше времени уходит на обдумывание того что ты будешь делать.

Наверн если вчитаться то ещё можно найти, но а так все. Ты просил комментариев )

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

Ничего нового нет, ты добавил варп пати и бессмысленную регистрацию какую-то. Бессмысленность заключается в том, что каждая новая пати которая зарегается будет призывать новые волны мобов. Пати зашла > 1 чел вышел > зарегался снова > появились мобы, всех варпнуло в начало > рекурсия епт.

В чем смысл переменной .round? ты ее объявил а нигде не юзаешь. Читай что ты вообще делаешь и изменяешь.

Сначала у тебя объявляют первый раунд, потом второй, потом финальный, потом опять второй и опять финальный. Чито?

И ещё много всего. Обдумывай что ли что ты делаешь для начала. Как это будет работать, зачем оно будет работать, все тонкости а только потом что-то делай. Всегда больше времени уходит на обдумывание того что ты будешь делать.

Наверн если вчитаться то ещё можно найти, но а так все. Ты просил комментариев )

Спасибо)) Я перечитаю и поправлю что накосячил) А как поставить проверку что регистрировалась только 1 Пати? И что если она уже зашла то другая вынужденна ждать пока закончит эта? Я тоже об этом подумал но поставить так не смог(((

По поводу волн да)) Просто волны мобов дописывал и затупил)) Это поправлю)

Раунд как я посмотрел используется в devil square Её значение я так понял определение какой раунд сейчас будет думал вместо ручного прописания идёт да? типо в анонсе можно поставить вместо кол -во прописанного в ручную

командой? Пример


mapannounce "Temple of Elemental : "+ .mob +" monsters remaining in the "+ .round+".", bc_map;

???

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

mapannounce "map"," Round # " + .round, bc_map;

На счет зашли пати какая-то или нет - переменные.

Пати зашла > ставим .closed = 1;

if .closed == 1 && strcharinfo(0) != не в той пати, которая зарегала > вы не можете зайти, там уже есть кто-то

чет типа такого. Потом обнулять их.

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


switch(select("Enter to "+.@md_name$+":Cancel")) {
Case 1:
disablenpc "Temple of Elemental#2";
recovery 1,getcharid(1);
if(.closed == 1){
mes "strnpcinfo(0)+ Вы должны подождать пока выйдет Другая группа людей";
}
warpparty "5@new",155,64,getcharid(1);
donpcevent strnpcinfo(0)+"::onstartEvent";
close;
Case 2:
disablenpc "Temple of Elemental#2";
mapannounce "5@new","The Temple of Elemental is now closed.", bc_map;
getmapxy .@map$, .@x, .@y, 1;
mapwarp "5@new", .@map$, .@x, .@y;
killmonsterall "5@new";
end;
onstartEvent:
.start = 2;
.round = 1;
.mob = 1;
.closed = 1;

А что насчёт обнуления?)

Нужно уж полноценно всё исправить патом уже переписать и выложить)

Обнуляция вот да как я понял?

onstopEvent:

enablenpc "Temple of Elemental#2";

.start = .round = .mob = .closed = 0;

end;

}

}

}

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

Понял) А тут ещё такой вопрос у меня Скажи можно как то одним

Disablenpc закрыть несколько нпц? что бы не писать допустим 5-6 нпц под disable

как бы это 5-6 строк) а что в одну всё вкатить можно?)

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

Циклом например.


for(.i = 0; .i < 6; .i ++ ) {
disablenpc "NpcName#"+.i;
}

Это конечно, если название нпцов нумеруются. Можно ещё в массив записать имена нпцов и так же циклом их вырубить.


setarray .NpcName$[0], "NPC_A","NPC_B";
for(.i = 0; .i < getarraysize(.NpcName$); .i++){
disablenpc .NpcName$[.i];
}

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

Все проблемы решил) Спасибо Юрий!)

Скрипт обновил, Пользуйтесь желающие) вопросы так же можете написать мне тут)

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

Циклом например.


for(.i = 0; .i < 6; .i ++ ) {
disablenpc "NpcName#"+.i;
}

Это конечно, если название нпцов нумеруются. Можно ещё в массив записать имена нпцов и так же циклом их вырубить.


setarray .NpcName$[0], "NPC_A","NPC_B";
for(.i = 0; .i < getarraysize(.NpcName$); .i++){
disablenpc .NpcName$[.i];
}

А Вот как поставить откат на скрипт?)

Хочется что бы 1 раз в 24 часа могла зайти 1 пати)

Например я собрал пати провёл и ещё сутки немогу вести)

как в инстансе ендлесс тавер?) а то как то тупо получается))) Зашёл прошёл ещё раз зашёл прошёл ) и т.д) Ограничение как поставить?)

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

Делай новый квест с кд, проверяй на наличие квеста > есть квест - нелья, нет квеста - можно.

Нифига не понял насчёт кв))) но понял что можно использовать предмет) Если есть предмет иди если нету то прощяй)

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

Не вижу где ты вешаешь переменную на кд. Ты хоть проверяешь что делаешь ?)

Да Оо Проверил Зашёл в локу, прошёл) Сразу тыкаю что бы зайти а он говорит приходи через 1440 минут Оо

http://s012.radikal....204cdda8caf.jpg

Да ошибку понял))

Теперь он даёт кд когда выходит с инстанса а не когда ты просто нажал на нпц)

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

  • 2 месяца спустя...

Я тут химичил недавно с Этим Мини инстансиком) И Вот пришла идея)) Я так понял Если пати зашла и провалилась, то из локи мобы не пропадают)) Как сделать проверку подскажите?) Типо если на карте есть 0 Человек

Очистить мапу И сбросить вот это

.start = 2;

.round = 1;

.mob = 1;

.closed = 1;

Полагаю что как то через Мап Юзерс) Но если можно покажите пожалуйста как и куда) а то чёт не соображаю(

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

Вариант А: при заходе пати запустить таймер, который будет каждые N секунд(5/10/15) проверять число игроков на карте. Если их нет, то остановка таймера, сброс переменных. Если игроки есть, то таймер перезапускается

Вариант Б: при выходе игрока из игры проверять его последнее местонахождение. Если он был в башне, то проверка числа игроков на карте. Если их нет, то остановка таймера, сброс переменных.

Вроде как комбинация А+Б используется в проверке эвента РФУЛ - можешь посмотреть как оно должно выглядеть

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

Вот Хотел попробовать вот так


if ( getmapusers("coliseum") == 0 )
{
killmonsterall "coliseum"; // Если всех убили - инстанс заканчивается.
.start = .closed = .mob = 0;
disablenpc "Temple of Elemental#2";
stopnpctimer;
end;
}

Но ненашёл Куда именно вставить что бы проверка шла например кажые 5 минут, Типо 5 мин прошло он чекнул кол-во, и если ноль то кик все мобов и всё онулируется

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


initnpctimer;
end;

OnTimer5000: //5 sec.
if ( getmapusers("coliseum") == 0 )
{
killmonsterall "coliseum"; // Если всех убили - инстанс заканчивается.
.start = .closed = .mob = 0;
disablenpc "Temple of Elemental#2";
stopnpctimer;
} else {
initnpctimer;
}
end;

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


initnpctimer;
end;

OnTimer5000: //5 sec.
if ( getmapusers("coliseum") == 0 )
{
killmonsterall "coliseum"; // Если всех убили - инстанс заканчивается.
.start = .closed = .mob = 0;
disablenpc "Temple of Elemental#2";
stopnpctimer;
} else {
initnpctimer;
}
end;

Ага ) А куда именно кусок вставить не имеет значения?) Просто у меня нету

initnpctimer;

end;

Вот так??


Case 1:
disablenpc "Temple of Elemental#2";
if(.closed == 1){
mes "You must wait until the other group of people will come";
close;
}
recovery 1,getcharid(1);
warpparty "coliseum",149,135,getcharid(1);
donpcevent strnpcinfo(0)+"::onstartEvent";
close;
Case 2:
disablenpc "Temple of Elemental#2";
mapannounce "coliseum","The Temple of Elemental is now closed.", bc_map;
getmapxy .@map$, .@x, .@y, 1;
mapwarp "coliseum", .@map$, .@x, .@y;
killmonsterall "coliseum";

initnpctimer;
end;
OnTimer5000: //5 sec.
if ( getmapusers("coliseum") == 0 )
{
killmonsterall "coliseum"; // Если всех убили - инстанс заканчивается.
.start = .closed = .mob = 0;
disablenpc "Temple of Elemental#2";
stopnpctimer;
} else {
initnpctimer;
}
end;

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

×
×
  • Создать...
Яндекс.Метрика