ucell-uz Опубликовано 13 марта, 2017 Жалоба Поделиться Опубликовано 13 марта, 2017 (изменено) Скрытый текст moc_para01,48,177,3 script Миссия [91-99] 4_BOARD3,{ set $@npcnames$,"^BC7F15[Доска миссий 91-99]^000000"; if (countitem(Para_Team_Mark) < 1) { mes $@npcnames$; mes "^4D4DFFПохоже это какая-то специальная"; mes "доска с перечнем миссий, доступных"; mes "лишь членам^000000 ^BC7F15Группы Эдем.^000000"; close; } if (BaseLevel < 91 || BaseLevel > 99) { // Quest IDs: 4181-4196 // Quest cooldown IDs: 4212-4227 mes $@npcnames$; setarray .@names$[0], "Solider","Freezer","Heater", "Injustice","Rybio","Dark Priest", "Stapo","Roween","Siroma", "Shinobi","Evil Nymph", "Deviruchi","Mineral","Kaho","Neraid","Disguise"; setarray .@exp[0], 90000,94000,114000, 96000,96000,146000, 96000,102000,110000, 102000,108000, 110000,138000,118000,96000,134000; mes "^4D4DFFДанные списки квестов, доступны"; mes "только для определённых^000000"; mes "^BC7F15Базовых Уровней.^000000"; mes "^4D4DFFПоищи списки для своего ^BC7F15Уровня.^000000"; for(.@quest = 4181; .@quest<=4196; ++.@quest) { .@hunting = questprogress(.@quest,HUNTING); if (.@hunting == 1) { erasequest .@quest; } else if (.@hunting == 2) { erasequest .@quest; getexp .@exp[.@quest-4181],0; } } close; } mes $@npcnames$; mes "Здесь представлен довольно"; mes "обширный список заданий на охоту:"; next; switch(select("Черепаший Остров:Гласт Хайм:Рашель:Удалённые места:Другие регионы")) { case 1: switch(select("Solider:Freezer:Heater")) { case 1: callsub L_Quest,4181,"Solider",90000,"^000000","^000000."; case 2: callsub L_Quest,4182,"Freezer",94000,"^000000","^000000."; case 3: callsub L_Quest,4183,"Heater",114000,"^000000","^000000."; } case 2: switch(select("Injustice:Rybio:Dark Priest")) { case 1: callsub L_Quest,4184,"Injustice",96000,"^000000","^000000."; case 2: callsub L_Quest,4185,"Rybio",96000,"^000000","^000000."; case 3: callsub L_Quest,4186,"Dark Priest",146000,"^000000","^000000."; } case 3: switch(select("Stapo:Roween:Siroma")) { case 1: callsub L_Quest,4187,"Stapo",96000,"^000000","^000000."; case 2: callsub L_Quest,4188,"Roween",102000,"^000000","^000000."; case 3: callsub L_Quest,4189,"Siroma",110000,"^000000","^000000."; } case 4: switch(select("Shinobi:Evil Nymph")) { case 1: callsub L_Quest,4190,"Shinobi",102000,"^000000","^000000."; case 2: callsub L_Quest,4191,"Evil Nymph",108000,"^000000","^000000."; } case 5: switch(select("Deviruchi:Mineral:Kaho:Neraid:Disguise")) { case 1: callsub L_Quest,4192,"Deviruchi",110000,"^000000","^000000."; case 2: callsub L_Quest,4193,"Mineral",138000,"^000000","^000000."; case 3: callsub L_Quest,4194,"Kaho",118000,"^000000","^000000."; case 4: callsub L_Quest,4195,"Neraid",96000,"^000000","^000000."; case 5: callsub L_Quest,4196,"Disguise",134000,"^000000","^000000."; } } end; L_Quest: .@quest1 = getarg(0); .@quest2 = .@quest1+31; .@playtime = questprogress(.@quest2,PLAYTIME); if (.@playtime > 0 ) { mes $@npcnames$; mes "Эту миссию выбрать больше нельзя."; mes "Пожалуйста выберите другую миссию."; close; } .@hunting = questprogress(.@quest1,HUNTING); if (.@hunting == 1) { mes $@npcnames$; mes "Нужно убить ^4D4DFF30 "+getarg(1)+".^000000 Ступай заверши дело до конца!"; close; } else if (.@hunting == 2) { mes $@npcnames$; mes "Необходимо было убить 30 "+getarg(1)+"."; mes "Спасибо."; next; mes $@npcnames$; mes "Вот тебе небольшой подарочек."; mes "В качестве моральной поддержки!"; erasequest .@quest1; if (!.@playtime) setquest .@quest2; specialeffect2 EF_TEIHIT3; specialeffect2 699; specialeffect2 598; percentheal 100,100; sc_start SC_FOOD_STR, 1800000,10; //30min sc_start SC_FOOD_AGI,1200000,10; //20min sc_start SC_FOOD_VIT,1200000,10; //20min sc_start SC_FOOD_INT,1200000,10; //20min sc_start SC_FOOD_DEX,1200000,10; //20min sc_start SC_FOOD_LUK,1200000,10; //20min next; mes $@npcnames$; mes "Вууххуу! Ну, удачи!"; setquest .@quest2; if (JobLevel > 50 && JobLevel < 56) .@jexp = 67000; else if (JobLevel > 55 && JobLevel < 61) .@jexp = 94000; else if (JobLevel > 60 && JobLevel < 66) .@jexp = 141000; else if (JobLevel > 65 && JobLevel < 69) .@jexp = 212000; else if (JobLevel == 69) .@jexp = 311000; getexp getarg(2),.@jexp; close; } else if (.@hunting == 2) { setquest .@quest2; mes $@npcnames$; mes "You have re-accepted the "+getarg(1)+" Hunting mission."; close; } else { if (getarg(3) != "") getarg(3),3; mes $@npcnames$; mes "Пожалуйста, убей 30 "+getarg(1)+" и возвращайся сюда."; setquest .@quest1; if (getarg(3) != "") getarg(3),255; close; // if(select("I'll hunt them.:No thanks.") == 1) { mes $@npcnames$; mes "When you have completed the mission, post it on this board and collect your reward."; getitem Old_Card_Album,1; //Old Card Album set .@p, rand(90000,800000); set Zeny,Zeny + .@p; announce strcharinfo(0) + " и получает " + .@p + " зени",bc_all,"0xD9608B"; if (!.@playtime) setquest .@quest2; setquest .@quest1; } close; } в данном скрипте отсутствует проверка на то, что у меня уже взята миссия, но доска мне всё же даёт взять другого моба для задания, и получается что я могу взять и моба девиручи и параллельно ещё и кахо, помогите выровнять скрипт! + добавить проверку с мессагой к примеру: если я взял девиручи и нажимаю на него повторно меня скрипт направляет в if (.@hunting == 1) { mes $@npcnames$; mes "Тебе нужно убить ^4D4DFF30 "+getarg(1)+".^000000 Ступай заверши дело до конца!"; close; если ли же у меня висит не пройденный квест девиручи, то нужна проверка на запрет других квестов по мобам, что-то типо if (.@hunting == 0) { mes $@npcnames$; mes "Ты ещё не прошёл прошёл задание ^4D4DFF30 "+getarg(1)+".^000000 Ты не можешь взять следующее пока не пройдёшь!"; close; помогите подправить !! и сделать всё по человечьи)) а то бардак получается спасибо!! так же наткнулся на другую проблему, нужно чтобы за каждый пройденный этап квеста давался предмет, например: 1 квест прошёл, получил 100шт новис потов и 1 купон для открытие кафры, 2 квест прошёл получил 100шт новис потов и 50 вингов на сейв, для такого я воспользовался параметром getrag() прилагаю кусок нпц-шника geffen,103,42,5 script Спониак 4W_M_03,{ set $@npcnames$,"^BC7F15[Клиент Спониак]^000000"; if (checkweight(Knife,1) == 0 || (MaxWeight - Weight) < 3500) { mes $@npcnames$; mes "Why are you carrying so many items?"; mes "Are you in a training course or something?"; close; } mes $@npcnames$; mes "Лу~ Лу~ Лу~ лу~"; mes "Лу~ Хах?"; next; mes $@npcnames$; mes "О, ты должно быть новичёк, верно?"; mes "Какая невинная мордашка! Ха~ Хахаха."; emotion e_gg; next; mes $@npcnames$; mes "Что же ты бродишь тут бесцельно вместо того, чтобы охотиться на кого-нибудь?"; next; if(select("Как раз ухожу:У меня миссия - Охота") == 1) { mes $@npcnames$; mes "Ааа-а, ну ступай. Пока-пока~"; close; } mes $@npcnames$; mes "Ах, так ты должно быть из Группы Эдем? Так что у тебя за миссия, говоришь?"; next; switch(select("Poison Spore:Smokie:Elder Willow:Coco:Thara Frog")) { case 1: callsub L_Quest,8266,"Охота - Poison Spore",5000,100,100,15,"^000000."; case 2: callsub L_Quest,8267,"Охота - Smokie",5000,100,100,0,50,"^000000."; case 3: callsub L_Quest,8268,"Охота - Elder Willow",5000,100,110,0,0,5,"^000000."; case 4: callsub L_Quest,8269,"Охота - Coco",5000,200,150,0,0,0,1,"^000000."; case 5: callsub L_Quest,8270,"Охота - Thara Frog",4500,300,200,"^000000."; } end; L_Quest: //QuestID,Quest,BExp,JExp,PotionAmt,Desc if (questprogress(getarg(0)) == 1) { if (questprogress(getarg(0),HUNTING) == 2) { mes $@npcnames$; mes getarg(1)+"! Ух ты, не думал что ты выберешь эту миссию. Я уж было руки опустил, но ты делаешь дело. И я это ценю!"; next; mes $@npcnames$; mes "Ну что ж, а ты молодец! За мной твоя награда, как и договаривались."; next; mes $@npcnames$; mes "Вот, держи. И спасибо тебе огромное. Да благословит тебя Господь!"; getitem Novice_Potion,getarg(4); getitem Cargo_Free_Ticket,getarg(5); getitem Wing_Of_Butterfly,getarg(6,-2); getitem Warp_Free_Ticket,getarg(7,-3); getitem WOB_Rune,getarg(8,-4); getexp getarg(2),getarg(3); erasequest getarg(0); close; } а беда в том что в консоли ругается на параметр case 4: callsub L_Quest,8269,"Охота - Coco",5000,200,150,0,0,0,1,"^000000."; но выдача предметов верна, даже если я убираю "^000000."; и делаю ""; всё равно консоль ругается, подскажите где я ошибся? Изменено 13 марта, 2017 пользователем ucell-uz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
shaitobu Опубликовано 13 марта, 2017 Жалоба Поделиться Опубликовано 13 марта, 2017 По первому НПЦ можно при взятии квеста добавить переменную типа set questRunning, .@quest1; и по завершению квеста выставлять её в ноль, дабы не перебирать все возможные квесты, а при попытке взять квест проверять if(questRunning > 0) { mes "У тебя уже есть квест. Закончи его." *описание квеста* close; } По второму нпц, проблема скорее в количестве аргументов переданных функции. В первом квесте на ядовитых спор НПЦ будет пытаться выдать "^000000"- штук крыльев бабочки. Но аргумент не является количеством, а просто метка цвета текста. Зачем она вообще там? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ucell-uz Опубликовано 13 марта, 2017 Автор Жалоба Поделиться Опубликовано 13 марта, 2017 (изменено) 6 часов назад, shaitobu сказал: По первому НПЦ можно при взятии квеста добавить переменную типа set questRunning, .@quest1; и по завершению квеста выставлять её в ноль, дабы не перебирать все возможные квесты, а при попытке взять квест проверять Скрытое содержимое По второму нпц, проблема скорее в количестве аргументов переданных функции. В первом квесте на ядовитых спор НПЦ будет пытаться выдать "^000000"- штук крыльев бабочки. Но аргумент не является количеством, а просто метка цвета текста. Зачем она вообще там? я позже проверю если что-то не пойму отпишусь, а по поводу 2-го нпцшника, я в скриптах не особо и силён, поэтому воспользовался ну самым динозавровским методом, и что самое интересное, он вроде как сработал, благодаря этим самым количественным аргументам, про getarg(1,-1) я узнал в файле с командами, если убираю -1 то нпц мне даёт весь список того что указанно в getitem но мне весь этот список предметов не нужен, ибо квестов всего 5, и по поводу аргумента с цветовым текстом, если я убираю его тупо выставляю: case 4: callsub L_Quest,8269,"Охота - Coco",5000,200,150,0,0,0,1; я перепробовал разные фокусы чтобы не вылетал эрор в консоли, но что ни делай вылетает ошибка вот такая к примеру но ещё раз подчёркиваю, за каждый из квестов, нпц выдаёт правильное количество предметов, всё как надо, сам функционал работает правильно в игре, но консолька ругается.. Скрытый текст Изменено 13 марта, 2017 пользователем ucell-uz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
shaitobu Опубликовано 13 марта, 2017 Жалоба Поделиться Опубликовано 13 марта, 2017 (изменено) getexp getarg(2),getarg(3); единственное место где используется арг2? Изменено 13 марта, 2017 пользователем shaitobu Ссылка на комментарий Поделиться на другие сайты Поделиться
ucell-uz Опубликовано 13 марта, 2017 Автор Жалоба Поделиться Опубликовано 13 марта, 2017 (изменено) 20 минуты назад, shaitobu сказал: аргумент 2 у тебя в callsub - название квеста, а не кол-во базового опыта ну дак это было вроде как по умолчанию в скрипте я тут ничего не ковырял а как нужно правильно его подставить? getexp getarg(2,3); ?? попробовал getexp getarg(2,3); ругается на точку с запятой попробовал getexp getarg(2); getexp getarg(3); так же ругается на точку с запятой скрипт команды говорят об обратном Скрытый текст *getexp <base xp>,<job xp>; This command will give the invoking character a specified number of base and job experience points. Should be used as a quest reward. Negative values won't work. Is subject to EXP bonuses and to the `quest_exp_rate` config option. getexp 10000,5000; You can also assign directly to the parameters defined in 'db/constants.conf': BaseExp += 10000; JobExp += 5000; You can also reduce the amount of experience points: BaseExp -= 10000; When setting the parameters directly no bonuses or config options are applied. Изменено 13 марта, 2017 пользователем ucell-uz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
shaitobu Опубликовано 13 марта, 2017 Жалоба Поделиться Опубликовано 13 марта, 2017 callsub L_Quest,8268,"Охота - Elder Willow",5000,100,110,0,0,5,"^000000."; getitem Novice_Potion,getarg(4);getitem Cargo_Free_Ticket,getarg(5);getitem Wing_Of_Butterfly,getarg(6,-2);getitem Warp_Free_Ticket,getarg(7,-3);getitem WOB_Rune,getarg(8,-4);getexp getarg(2),getarg(3); Приведи все вызовы в этот формат, там где тебе не надо выдавать предметы или опыт поставь просто 0 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ucell-uz Опубликовано 13 марта, 2017 Автор Жалоба Поделиться Опубликовано 13 марта, 2017 (изменено) 59 минут назад, shaitobu сказал: callsub L_Quest,8268,"Охота - Elder Willow",5000,100,110,0,0,5,"^000000."; getitem Novice_Potion,getarg(4);getitem Cargo_Free_Ticket,getarg(5);getitem Wing_Of_Butterfly,getarg(6,-2);getitem Warp_Free_Ticket,getarg(7,-3);getitem WOB_Rune,getarg(8,-4);getexp getarg(2),getarg(3); Приведи все вызовы в этот формат, там где тебе не надо выдавать предметы или опыт поставь просто 0 ыы ^*_*^ вы волшебник, я бы честно сам не допёр бы до этого, спасибо этот метод помог! никаких дебагов как по маслу! вы уже 3-жды выручаете, остальные как воды в рот набрали! Изменено 13 марта, 2017 пользователем ucell-uz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения