Назрело)) есть кучи тем по скриптам, но новичку который реально начал писать скрипты , сложновать, нет тему бде бы можно было выложить кусочек кода и знаюшие люди помогли бы разобраться в ошибках новичкам)
1 Проблемка)
Кто нибудь может выложить этот кусочек, и как сделать так что бы после смерти чар нормально возврашался к предыдушему пункту квеста, а не шпарил код дальше) знаю вопрос нубский, но я и сам новичек в скриптописании, еще хотелось бы узнать где можно найти базу ID предметов на первые профы)
Последний раз редактировалось KoAn, 18.12.2009 в 08:13.
Решил переименовать тему в практические примеры скриптинга)
Вот имено что знаю вопрос нубский, но сам то нуб) по этому и спрашиваю)))
Есть необходимость скажем забить квест монстров на поляне и вставить проверку на смерть и на зачистку, получаем следущее??
---------------------------------------------------------------------------
// приперли на поляну
LOADCONFIG(LOL.ini) -загрузка иника
---------------------------------------------------------------------------
Lable(Oxota)
SET(FIGHTSTART) - даем команду боту на начало атаки
ITEMCOUNT(УШИ слона[ID=1205],<,20) - задаем условие что при 20 ушах, переходим дальще по скрипту
{
DELAY(1000)- задаем время ожидания продолжения действия
CALL(1) - вот тут ставим условие проверки на смерть
CALL(2) - вот тут ставим проверку на хвост
JMP(Oxota) - прыгает на начало блока пока соблюдаются условия CALL(1) и CALL(2)
}
DELAY(5000) -после того как саберем 20 ушей и выполним все условия ждем 5 сек
USEITEM(Scroll of Escape[ID=736]) - юзаем СОЕ
----------------------------------------------------------------------------
СAll(1) - Проверка на смерть
CharStatus(HP,<=,0) - хп меньше либо равно 0
{
GOHOME() - портуемся в город
DELAY(5000) - ждем
// приперли на поляну
LOADCONFIG(LOL.ini) -загрузка иника
---------------------------------------------------------------------------
SET(RANGETYPE,STARTPOS,2000)//2000-радиус от стартовой точки
SET(MON,NOATTACK,*)
SET(MON,ATTACK,name[ID=XXX])//вписываем ИД нужных мобов
ИЛИ
SET(MON,ATTACK,*)//атакуем всех мобов
SET(FIGHTSTART) - даем команду боту на начало атаки
LabEL(Oxota)//переносим сюда, чтоб после джампа не делались лишние действия и не сбивался радиус
ITEMCOUNT(УШИ слона[ID=1205],<,20) - задаем условие, что при МЕНЬШЕ 20 ушах, переходим К ДЕЙСТВИЯМ В СКОБКАХ (или если условие выполняется, то делаем то что в скобках. а условие перестанет выполняться, когда у нас будет 20 ушей, ибо 20<20-условие не верно!)
{
DELAY(1000)- задаем время ожидания продолжения действия
CALL(1) - вот тут ставим условие проверки на смерть
CALL(2) - лично мне не понятно для чего этот CALL... убираем его
JMP(Oxota) - прыгает на начало блока пока соблюдаЕтся условиЕ: уши<20
}
SET(FIGHTSTOP) - остановка бойни
DELAY(5000) -после того как саберем 20 ушей ждем 5 сек
USEITEM(Scroll of Escape[ID=736]) - юзаем СОЕ
----------------------------------------------------------------------------
LABEL(1) - Проверка на смерть
CharStatus(HP,<=,0) - хп меньше либо равно 0
{
GOHOME() - портуемся в город
DELAY(5000) - ждем
}
RETURN()//обязательно закрываем скобки и RETURN-чтоб вернуться назад к метке CALL, от которой сюда пришли
тело скрипта в городе и дароги обратно на поляну
----------------------------------------------------------------------------
исправлены ошибки
добавлено от себя
З.Ы. ужос скока ошибок если не все исправил сорри... пошел спать...
Последний раз редактировалось B0R0DA, 18.12.2009 в 09:24.
З.Ы. ужос скока ошибок если не все исправил сорри... пошел спать...
ОгоГО! действительно много ошибок , по поводу
SET(MON,NOATTACK,*)
SET(MON,ATTACK,name[ID=XXX])
думал что это проше регулировать ini файлом, ведь когда скрипт пишешь один хрен на поляне тыркнеш информ да и покикаеш всех левых мобов, хотя с другой стороны твой сет разумней, малоли ГМ какой решит проверить, а тут только 1 ID будет моба
По поводу заклемленого SET(2) была идея сделать проверку на то что когда чар выбъет все 20 итемов то если на нем висят мобы он их завалит, отсечет хвост так сказать) подождет и портнется...
А сейсам получается что он взял 20 ушей и хочет портнутся, тут вдруг на него агрится моб и сбивает ТП, и что дальше? либо скрипт продолжает жить своей жизнью, либо чара закалачивают) он же уже вышел их файта и из лейбла Охота тоже, вот как то надо это реализовать, у меня часто такое бывает особено на локациях с аграми, что мобы сбивают телепортацию,я попытался в меру своей корявости изобразить свои мысли в SET(2) =)
За Return() спасибо, как то не обратил внимание
Последний раз редактировалось KoAn, 18.12.2009 в 10:11.
А сейсам получается что он взял 20 ушей и хочет портнутся, тут вдруг на него агрится моб и сбивает ТП, и что дальше?
Ну тогда перед использованием СОЕ делаем следующее:
SET(RANGETYPE,STARTPOS,100)//маленький радиус, чтоб отбить мобов рядом с собой
SET(MON,ATTACK,*)
SET(FIGHTSTART)
DELAY(30000)//тут задаем время на свое усмотрение(это сколько времени он будет отбиваться)
SET(FIGHTSTOP)//стоп
USEITEM(Scroll of Escape[ID=736])//и в город
это проверка так сказать наугад... тоесть он стоит заданное время в малеьком радиусе и отбивается.
или:
SET(RANGETYPE,STARTPOS,100)//маленький радиус, чтоб отбить мобов рядом с собой
SET(MON,ATTACK,*)//бить всех мобов в заданном радиусе
SET(FIGHTSTART)
LABEL(отбиваемся)
CharStatus(HP,<,100)//если НР меньше 100%-делаем то что в скобках
{
DELAY(10000) - ждем
JMP(отбиваемся)//прыгаем опять на метку LABEL(отбиваемся) и так до тех пор пока не будет 100% НР
}
SET(FIGHTSTOP)//у нас 100% НР - следовательно нас никто не атакует и хвоста нет
USEITEM(Scroll of Escape[ID=736])//и в город
если в локе есть мобы арчеры или маги делаем такую проверку:
SET(RANGETYPE,STARTPOS,1000)//большой радиус
SET(MON,NOATTACK,*)//не бить никаких мобов
SET(FIGHTSTART)//по идее должен бить наагренных мобов
LABEL(отбиваемся)
CharStatus(HP,<,100)//если НР меньше 100%-делаем то что в скобках
{
DELAY(10000) - ждем
JMP(отбиваемся)//прыгаем опять на метку LABEL(отбиваемся) и так до тех пор пока не будет 100% НР
}
SET(FIGHTSTOP)//у нас 100% НР - следовательно нас никто не атакует и хвоста нет
USEITEM(Scroll of Escape[ID=736])//и в город
короче говоря масса проверок на отбивание хвоста, выбирай или скрещивай их на свой вкус... ну и после ТП можно сделать проверку не умер ли чар во время тп:
USEITEM(Scroll of Escape[ID=736])//и в город
DELAY(30000)
CALL(1)//проверка на смерть, если выжили во время тп, значит мы в городе, если нет - после CALL(1) нас отправят в город
вообщем масса проверок, стоит только включить фантазию и придумать оптимальный для себя вариант
Последний раз редактировалось B0R0DA, 18.12.2009 в 16:57.
Не плохая идея, наверно стоит еще добавить чтобы во время проверки садился, ато хп может долго регениться. А еще моб может напасть во время сое, так что на время ег окаста можно своять еще одну проверочку.
SET(RANGETYPE,STARTPOS,100)//маленький радиус, чтоб отбить мобов рядом с собой
SET(MON,ATTACK,*)//бить всех мобов в заданном радиусе
SET(FIGHTSTART)
LABEL(отбиваемся)
CharStatus(HP,<,100)//если НР меньше 100%-делаем то что в скобках
{
DELAY(10000) - ждем
JMP(отбиваемся)//прыгаем опять на метку LABEL(отбиваемся) и так до тех пор пока не будет 100% НР
}
SET(FIGHTSTOP)//у нас 100% НР - следовательно нас никто не атакует и хвоста нет
USEITEM(Scroll of Escape[ID=736])//и в город
А если нам телепорт сбивает лигет? Или произошло что-то не предвиденное.
Я делаю такую проверку:
После всех вышеописанных проверок и использования телепорта
DELAY(20000) // ожидание ТП
POSINRANGE(x,y,z,100) // Указываем в скрипте то количество точек, сколько точек респа в городе в которыйделаем ТП.( у меня здесь указано две точки)
{
MSG(мы в городе)
JMP(?) //Ставим сюда метку продолжения скрипта
}
POSINRANGE(x,y,z,100)
{
MSG(мы в городе)
JMP(?) //Ставим сюда метку продолжения скрипта
}
JMP(отбиваемся) // Если мы не оказались ни в одной из указанных точек
Добавлено через 35 минут
Цитата:
Сообщение от Retaech
Не плохая идея, наверно стоит еще добавить чтобы во время проверки садился, ато хп может долго регениться.
Если честно, то не вижу в этой проверке смысла, но раз ты так хочеш:
LABEL(Fatality)
SET(RANGETYPE,STARTPOS,100)
SET(MON,ATTACK,*)
SET(FIGHTSTART)
DELAY(20000)
CharStatus(HP,<,100)//если хп меньше100% сажаем его на попу
{
JMP(На попу)
}
SET(FIGHTSTOP)
USEITEM(Scroll of Escape[ID=736])
JMP(?)// Здесь ставим метку продолжения скрипта
LABEL(На Попу)
ChangeWaitType(0)
DELAY(30000)
ChangeWaitType(1)
JMP(Fatality)
Последний раз редактировалось nPoKa3HuK, 19.12.2009 в 00:38.
Причина: Исправлена ошибка в скрипте