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/
phalcor 60 Опубликовано 30 Августа Поделиться Опубликовано 30 Августа Привет всем живым! Если я запускаю любой партикл (к примеру так: p = particles_object( "путь"); p:play_at_pos(npc:position()), НУЖНО ЛИ как-то удалять? Я не про p:stop(), а про то, чтобы он не сохранился у меня в сейве. Т.е. ещё проще: сохраняется ли запущенный партикл в сейве, или после load его как ни бывало? Спасибо! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1508549
RayTwitty 567 Опубликовано 31 Августа Поделиться Опубликовано 31 Августа @phalcor в сейве точно ничего не сохраняется. Чтобы партикл удалился сам, достаточно просто не оставить ссылку на него, сборщик мусора lua затрет. При выгрузке уровня, очевидно, все ссылки затираются. Хотя наверняка там грохаются и все партиклы отдельно, не дожидаясь никаких GC, ведь есть и еще всякие движковые партиклы, типа аномалий. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1508621
Pavel_2000 6 Опубликовано в четверг в 23:41 Поделиться Опубликовано в четверг в 23:41 Здравствуйте помогите пожалуйста вот в этот скрипт добавить таблицу: function actor_binder:key_hold(key) if has_alife_info("item_id_used") then if not has_alife_info("test_work_start") and key == DIK_keys.DIK_W then test_script.test_func() end end end что бы key == DIK_keys.DIK_W перебирал значения т.е DIK_S, DIK_A, DIK_D, DIK_W Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509171
Kirgudu 1 328 Опубликовано в пятницу в 06:22 Поделиться Опубликовано в пятницу в 06:22 @Pavel_2000 local keys = { [DIK_keys.DIK_W] = true, [DIK_keys.DIK_A] = true, [DIK_keys.DIK_S] = true, [DIK_keys.DIK_D] = true } function actor_binder:key_hold(key) if has_alife_info("item_id_used") then if not has_alife_info("test_work_start") and keys[key] == true then test_script.test_func() end end end 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509175
Pavel_2000 6 Опубликовано в пятницу в 11:16 Поделиться Опубликовано в пятницу в 11:16 (изменено) Спасибо большое. А как сделать что бы функция 4 часа назад, Kirgudu сказал: test_script.test_func() выполнилась только один раз т.е если например нажал одну из кнопок и неотпуская нажал другую - нужно что бы функция не вызывалась повторно пока одна из кнопок нажата скрипт который вызывается когда отпускаешь кнопку ну и тут получается что нужно что бы скрипт не вызывался при отпускании кнопки пока одна из кнопок зажата в скрипте который ловит что кнопка нажата и зажата function actor_binder:key_release(key) if has_alife_info("item_id_used") then if has_alife_info("test_work_start") and keys[key] == true then test_script.test_func_release_key() end end end в скрипте test_script.test_func() который вызывается при нажатии выдаётся test_work_start в скрипте test_script.test_func_release_key() который вызывается при отпускании стоит таймер по истечению которого забирается test_work_start инфопорции возможно и не нужны, просто без них у меня не получалось вообще то что мне нужно Изменено в пятницу в 11:21 пользователем Pavel_2000 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509182
RayTwitty 567 Опубликовано вчера в 01:29 Поделиться Опубликовано вчера в 01:29 @Pavel_2000 если тебе надо что-то делать во время движения ГГ, то лучше отслеживать не кнопки, а стейт ГГ. Все подобные вещи в движке висят на апдейте. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509214
Pavel_2000 6 Опубликовано вчера в 12:19 Поделиться Опубликовано вчера в 12:19 @RayTwitty попытался понять как у движка узнать state гг. не получилось. зато нашёл как у движка узнать скорость гг и повесил на апдейт ту функцию local vec = db.actor:get_movement_speed() local cur_speed = math.sqrt(vec.x*vec.x+vec.y*vec.y+vec.z*vec.z) if has_alife_info("item_id_used") and cur_speed>0 then if not has_alife_info("test_work_start") then test_script.test_func_on_run() --news_manager.send_tip(db.actor, "moving", nil, "information_dealer", 50) db.actor:give_info_portion("test_work_start") end end if has_alife_info("item_id_used") and cur_speed==0 then if has_alife_info("test_work_start") then test_script.test_func_on_stay() --news_manager.send_tip(db.actor, "staying", nil, "information_dealer", 50) db.actor:disable_info_portion("test_work_start") end end и всё заработало как я хотел Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509220
RayTwitty 567 Опубликовано 22 часа назад Поделиться Опубликовано 22 часа назад @Pavel_2000 эта тема скорее всего не прокатит, так как функция сработает при пинках ГГ другими объектами (аномалии, монстры и т.д.). У тебя в движке есть коллбеки на события клавиатуры, значит почти наверняка есть метод получения стейта ГГ - какой-нибудь db.actor:actor_body_state(). Смотри документацию по движку. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509221
Fllfll 14 Опубликовано 20 часов назад Поделиться Опубликовано 20 часов назад @Pavel_2000 если хочешь, чтобы нормально подсказали - нормально спрашивай. С указанием движка и его версии/своих добавленных методов. На ап-про проверял у всех навыки телепатии - теперь сюда пришел. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/639/#findComment-1509223
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти