Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
iDreD 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 Министр, это я понимаю, но в том-то и дело что описания из xml файлов не берётся, хоть и id названия я писал такое же как в скрипте. Добавлено через 2 мин.: В принципе - да, если работает, - и то хорошо . Добавлено через 131 мин.: Можно ли перевести монстра в оффлайн сразу после спауна, а затем сделать его онлайн, при получении инфопоршна из логики нпс'а? Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460030
DiXares 1 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 Товарищи! Каким образом можно перебрать все предметы игры разом? Повешал на калбэк взяти предмета, но не годится, надо разом и всё, если можно то и предметы в оффлайне. local ObjSection = obj:section() local ObjIdEnteS = obj:id() local tsgame = ObjSection..ObjIdEnteS Переменную tsgame я применяю себя в скрипте. Куда бы это засунуть, что бы перебрать вся и всё? Должно получиться, типа этого: [DiXarUsedItemCall] detector_simple64=SDiXarUsed device_torch65=SDiXarUsed novice_outfit66=SDiXarUsed wpn_binoc67=SDiXarUsed device_pda68=SDiXarUsed wpn_vsk9416821=SDiXarUsed wpn_vsk9416822=SDiXarUsed wpn_vsk9416823=SDiXarUsed wpn_vsk9416824=SDiXarUsed wpn_vsk9416825=SDiXarUsed wpn_ksvk16826=SDiXarUsed wpn_ksvk16827=SDiXarUsed wpn_ksvk16828=SDiXarUsed wpn_ksvk16829=SDiXarUsed wpn_ksvk16830=SDiXarUsed wpn_ksvk_black16831=SDiXarUsed wpn_ksvk_black16832=SDiXarUsed wpn_ksvk_black16833=SDiXarUsed wpn_ksvk_black16834=SDiXarUsed wpn_ksvk_black16835=SDiXarUsed wpn_addon_9x39silencer16836=SDiXarUsed wpn_addon_9x39silencer16837=SDiXarUsed wpn_addon_9x39silencer16838=SDiXarUsed wpn_addon_9x39silencer16839=SDiXarUsed wpn_addon_9x39silencer16840=SDiXarUsed wpn_bm-16_full16841=SDiXarUsed wpn_bm-16_full16842=SDiXarUsed wpn_bm-16_full16843=SDiXarUsed wpn_bm-16_full16844=SDiXarUsed wpn_bm-16_full16845=SDiXarUsed wpn_addon_acog16846=SDiXarUsed wpn_addon_acog16847=SDiXarUsed wpn_addon_acog16848=SDiXarUsed wpn_addon_acog16849=SDiXarUsed wpn_addon_acog16850=SDiXarUsed wpn_addon_acog16851=SDiXarUsed wpn_fn200016852=SDiXarUsed wpn_pm16853=SDiXarUsed wpn_pb16854=SDiXarUsed wpn_fort16855=SDiXarUsed wpn_walther16856=SDiXarUsed wpn_sig22016857=SDiXarUsed wpn_colt191116858=SDiXarUsed wpn_usp16859=SDiXarUsed wpn_desert_eagle16860=SDiXarUsed wpn_bm1616861=SDiXarUsed wpn_wincheaster130016862=SDiXarUsed wpn_spas1216863=SDiXarUsed wpn_ak74u16864=SDiXarUsed wpn_mp516865=SDiXarUsed wpn_ak7416866=SDiXarUsed wpn_abakan16867=SDiXarUsed wpn_l8516868=SDiXarUsed wpn_lr30016869=SDiXarUsed wpn_sig55016870=SDiXarUsed wpn_groza16871=SDiXarUsed wpn_val16872=SDiXarUsed wpn_vintorez16873=SDiXarUsed wpn_svu16874=SDiXarUsed wpn_svd16875=SDiXarUsed wpn_rg-616876=SDiXarUsed wpn_rpg716877=SDiXarUsed wpn_gauss16878=SDiXarUsed wpn_addon_scope16879=SDiXarUsed wpn_addon_scope_susat16880=SDiXarUsed wpn_addon_silencer16881=SDiXarUsed wpn_addon_grenade_launcher16882=SDiXarUsed wpn_addon_grenade_launcher_m20316883=SDiXarUsed bandit_outfit16884=SDiXarUsed killer_outfit16885=SDiXarUsed monolit_outfit16886=SDiXarUsed soldier_outfit16887=SDiXarUsed specops_outfit16888=SDiXarUsed military_outfit16889=SDiXarUsed stalker_outfit16890=SDiXarUsed scientific_outfit16891=SDiXarUsed exo_outfit16892=SDiXarUsed svoboda_light_outfit16893=SDiXarUsed svoboda_heavy_outfit16894=SDiXarUsed dolg_outfit16895=SDiXarUsed dolg_scientific_outfit16896=SDiXarUsed ecolog_outfit16897=SDiXarUsed protection_outfit16898=SDiXarUsed grenade_f116899=SDiXarUsed grenade_rgd516900=SDiXarUsed grenade_f116901=SDiXarUsed grenade_rgd516902=SDiXarUsed grenade_f116903=SDiXarUsed grenade_rgd516904=SDiXarUsed grenade_f116905=SDiXarUsed grenade_rgd516906=SDiXarUsed grenade_f116907=SDiXarUsed grenade_rgd516908=SDiXarUsed grenade_f116909=SDiXarUsed grenade_rgd516910=SDiXarUsed grenade_f116911=SDiXarUsed grenade_rgd516912=SDiXarUsed grenade_f116913=SDiXarUsed grenade_rgd516914=SDiXarUsed grenade_f116915=SDiXarUsed grenade_rgd516916=SDiXarUsed grenade_f116917=SDiXarUsed grenade_rgd516918=SDiXarUsed grenade_f116919=SDiXarUsed grenade_rgd516920=SDiXarUsed grenade_f116921=SDiXarUsed grenade_rgd516922=SDiXarUsed grenade_f116923=SDiXarUsed grenade_rgd516924=SDiXarUsed grenade_f116925=SDiXarUsed grenade_rgd516926=SDiXarUsed grenade_f116927=SDiXarUsed grenade_rgd516928=SDiXarUsed grenade_f116929=SDiXarUsed grenade_rgd516930=SDiXarUsed grenade_f116931=SDiXarUsed grenade_rgd516932=SDiXarUsed grenade_f116933=SDiXarUsed grenade_rgd516934=SDiXarUsed grenade_f116935=SDiXarUsed grenade_rgd516936=SDiXarUsed grenade_f116937=SDiXarUsed grenade_rgd516938=SDiXarUsed grenade_f116939=SDiXarUsed grenade_rgd516940=SDiXarUsed grenade_f116941=SDiXarUsed grenade_rgd516942=SDiXarUsed grenade_f116943=SDiXarUsed grenade_rgd516944=SDiXarUsed grenade_f116945=SDiXarUsed grenade_rgd516946=SDiXarUsed grenade_f116947=SDiXarUsed grenade_rgd516948=SDiXarUsed grenade_f116949=SDiXarUsed grenade_rgd516950=SDiXarUsed grenade_f116951=SDiXarUsed grenade_rgd516952=SDiXarUsed grenade_f116953=SDiXarUsed grenade_rgd516954=SDiXarUsed grenade_f116955=SDiXarUsed grenade_rgd516956=SDiXarUsed grenade_f116957=SDiXarUsed grenade_rgd516958=SDiXarUsed ammo_9x19_fmj23594=SDiXarUsed bolt17408=SDiXarUsed af_medusa23599=SDiXarUsed af_medusa998=SDiXarUsed Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460148
ФеНиКс 2 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 как сделать многократный(постоянный вызов) этой функции? (она стоит на сталкер апдейте) надо чтобы при каждой попытке подойти гг к нпсу его долбил хит, а так как у меня сделано его долбит, но только один раз ( а дальше спокойно подходишь...) local flobals = false function static() local pos_mes = "" local npc = level_object_by_sid(006) if npc and not flobals then if npc:position():distance_to(db.actor:position()) < 10 then local h = hit () h.power = 1 h.direction = vector():set (0, 0, 0) h.impulse = 0 h.draftsman = npc--/ или db.actor -- от кого дать хит h.type = hit.explosion db.actor:hit(h)--кому дать хит flobals = true level.add_pp_effector("fire_hit.ppe", 1974, false) news_manager.send_tip(db.actor, "%c[255,255,1,1]Т\\n%c[255,1,255,1]Дальше подойти нельзя! О%c[default]", 0, "tips_tatar", 8000) --else----} ------------- при использование этого переполняется стек лог вылета при этом выглядит так stack overflow --static() } end end end TREWKO тебе это знакомо: for i=1, 65535 do ??? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460165
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) ФеНиКс, удалить flobals = true . for i=1, 65535 do Это не рационально,если проверка не "отложена" (читать через промежуток) Изменено 30 Июня 2010 пользователем меченый(стрелок) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460172
ФеНиКс 2 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) меченый(стрелок) Ясно=) а как на счет for id,v in pairs(db.storage) do ?? или аналогично? ______ Изменено 30 Июня 2010 пользователем ФеНиКс Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460177
Министр 4 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) ФеНиКс, у тебя переменная flobals после 1-го удара принимает значение true и больше никогда не меняется. И следовательно усл-ие if npc and not flobals никогда больше не выполняется и о следующем усл-ии с проверкой расстояния и последующем ударе и думать не стоит. Тебе нужно присвоить flobals false и тогда все будет гуд. Вот как-то так это выглядет: local flobals = false function static() local pos_mes = "" local npc = level_object_by_sid(006) if npc and not flobals then if npc:position():distance_to(db.actor:position()) < 10 then local h = hit () h.power = 1 h.direction = vector():set (0, 0, 0) h.impulse = 0 h.draftsman = npc--/ или db.actor -- от кого дать хит h.type = hit.explosion db.actor:hit(h)--кому дать хит flobals = true level.add_pp_effector("fire_hit.ppe", 1974, false) news_manager.send_tip(db.actor, "%c[255,255,1,1]Т\\n%c[255,1,255,1]Дальше подойти нельзя! О%c[default]", 0, "tips_tatar", 8000) end end if npc and flobals then if npc:position():distance_to(db.actor:position()) => 10 then flobals = false end end end В этом коде flobals заново становится false когда ГГ от НПС будет на расстоянии равном или большем чем 10 (естественно если этот НПС жив). P.S. А если просто удалишь строчку flobals = true, то тебя будет беспрерывно хренячить и так же беспрерывно будут присылаться сообщения. Изменено 30 Июня 2010 пользователем Министр Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460180
DiXares 1 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 Можно ли как то отследить, где был убит нпс? Всмысле узнать через каллбек смерти уровень. Так и не смог перебрать всех и вся... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460185
ФеНиКс 2 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) Министр Оу! Спасибо=) вот очередной вопросец: почему в сообщении присылается текст как pos_mes ??? а не текст из таблицы? pos_mes = mes_sucko[math.random(table.getn(mes_sucko))] local news_text = "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(249,893,83,47), 0, 13000) Изменено 30 Июня 2010 пользователем ФеНиКс Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460190
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 TREWKO, посмотри "новостной" скрипт - там есть проверка которая даёт название уровня нпс. Дай бог памяти - из пространства alife() Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460193
iDreD 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 pos_mes = mes_sucko[math.random(table.getn(mes_sucko))] --Что это? local news_text = "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(249,893,83,47), 0, 13000) Если не вдаваться в подробности, то сделать нужно так: pos_mes = mes_sucko[math.random(4)] mes_sucko = {"Ы", "Ы1", "Ы2", "Ы3"} local news_text = "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(249,893,83,47), 0, 13000) Из таблицы будет рандомно браться одно из четырёх Ы, и выводится в меседж . Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460198
ФеНиКс 2 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) кровоSTALKER у меня сделано почти так же... таблицу просто не выложил вот с таблицей: local mes_sucko = { "Дххх!", "ххх!", "ххх?" } pos_mes = mes_sucko[math.random(table.getn(mes_sucko))] --это??? тут берется Рандомно текст из таблицы... local news_text = "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(249,893,83,47), 0, 13000) или локальную убрать и сунуть всё в тело? Изменено 30 Июня 2010 пользователем ФеНиКс Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460202
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) math.random(table.getn(mes_sucko)) = math.random(#mes_sucko) = math.random(n) (где n - кол-во элементов в таблице). ФеНиКс, "%c[255,255,1,1]Татар\\n+%c[255,1,255,1] pos_mes %c[default]" Внимательно посмотри - у тебя это всё одна строка *** кровоSTALKER, Поэтому нужно использовать Зачем? (table.getn(mes_sucko)) - даст кол-во элементов, следовательно будет выбираться(math.random(table.getn(mes_sucko))) случайное сообщение из всей таблицы. Изменено 30 Июня 2010 пользователем меченый(стрелок) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460206
iDreD 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) В твоём случае таблица подгружается ((table.getn(mes_sucko))), но, тебе ведь нужно рандомное значение? Так? Поэтому нужно использовать [math.random(кол-во групп текста в "", в таблице)] Изменено 30 Июня 2010 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460208
ФеНиКс 2 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 меченый(стрелок) Ой блин точняк я кавычки-то забыл поставить нормально!=) Благодарю!=) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460209
iDreD 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 Можно ли перевести монстра в оффлайн сразу после спауна, а затем сделать его онлайн, при получении инфопоршна из логики нпс'а?И всё таки. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460212
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 кровоSTALKER, методы switch_online\swicth_offline которые принимают булево (логическое - true\false) значение. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460218
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) TREWKO, WriteIni(ini, "DiXarUsedItemCall", GlobalSystemObjSection..GlobalSystemObjIdEnteS, "SDiXarNotUsed") ? Дак вот, этот скрипт делает так, что бы при взятии предмета, а именно артефакта Медуза, гг получал хит, но надо это делатьтолько один раз и для 1 предмета, а в зоне таких медуз до... много. По этому при юзании применяю сохранение секции и id предмета в строку и дальше сохраняю в ini файл. Может лучше табличку? tbl[1]="af_medesaНомер" tbl[2]=true table.add(tbl2,tbl) А при сохранении\загрузки сохранять таблицу в ini файл? И все таки - WriteIni это что такое? я на другой странице))) - чего такого? Пишет ini файл и чё? в ТЧ нету такой функции. А все сторонние "перехватчики" - зло для конечного пользователя и необязательно будут работать нормально. К примеру не всем захочется настраивать фаервол для этого (Outpost при полной защите 100% запретит это). Изменено 30 Июня 2010 пользователем меченый(стрелок) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460221
DiXares 1 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) меченый(стрелок), чего такого? Пишет ini файл и чё? Как это таблицей? Изменено 30 Июня 2010 пользователем TREWKO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460223
меченый(стрелок) 5 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) TREWKO, for i=1,#tbl do WriteIni(....) end Изменено 30 Июня 2010 пользователем меченый(стрелок) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460226
DiXares 1 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 (изменено) Понял, буду пробовать юзать! То есть будет конечный вид такой?: for i=1,#tbl do WriteIni(ini, sec, key, param) end То есть, он сохранит в... ммм... разберусь. Изменено 30 Июня 2010 пользователем TREWKO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/33/#findComment-460228
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти