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/
UnLoaded 313 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 как стравить двух НПС, а то они не атакуют друг друга Чудес не бывает - если у них группировки(community) враждебные друг-другу, то они будут атаковать друг-друга. Ищи ошибку, или в профилях одинаковую группировку им прописал, или в логике есть запрет на атаку. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985140
macron 1 905 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 А не существует ли "универсального" скрипта для удаления пустых пачек патронов из инвентаря? Не сильно надо, но вдруг уже выкладывали... http://images.gameru.net/image/direct/feeb3c7175.jpg Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985163
UnLoaded 313 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 для удаления пустых пачек патронов из инвентаря? Это похоже в каком-то моде накрутили, что пачки имеют 0 патронов ? В оригинале такого вроде не замечал... А насчет скрипта - так есть ведь древний как ... не важно что, скрипт перепаковки не полных пачек. Он как раз должен такие пустышки прибирать. К примеру этот. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985195
macron 1 905 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 Это похоже в каком-то моде накрутили, что пачки имеют 0 патронов ? В оригинале такого вроде не замечал... Кстати, да. Dunin_ammo как раз здесь используется, чтобы на пояс полные пачки вешались. Раз в оригинале такого нет, то, стало быть, мелкий побочный эффект от него. Вопрос снимается. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985208
RayTwitty 567 Опубликовано 6 Января 2016 Поделиться Опубликовано 6 Января 2016 Раз в оригинале такого нет, то, стало быть, мелкий побочный эффект от него.Ни в оригинале, ни с этим скриптом такого бага я не видел. Смотрите спавн и какое там количество патронов прописано. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985214
vampirnik77 121 Опубликовано 8 Января 2016 Поделиться Опубликовано 8 Января 2016 (изменено) Давно мне голову забивает одна мысль. Можно ли как-то менять свойства у артефактов? А точнее значение этих самых свойств? Изменено 8 Января 2016 пользователем vampirnik77 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985770
dsh 3 824 Опубликовано 8 Января 2016 Поделиться Опубликовано 8 Января 2016 @vampirnik77, используя x-ray extensions - можно. Вот тут https://github.com/KD87/xray-extensions/blob/master/help/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%20%D0%B0%D1%80%D1%82%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%B0.script нужные смещения описаны. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985779
vampirnik77 121 Опубликовано 8 Января 2016 Поделиться Опубликовано 8 Января 2016 (изменено) @dsh, Спасибо. Я бы рад. Но все эти прелести для ТЧ. Это я забыл указать платформу, извините. Платформа ЗП. P.s Хочется рандомных свойств. А секции плодить не хочется. Изменено 8 Января 2016 пользователем vampirnik77 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985780
Dennis_Chikin 3 665 Опубликовано 9 Января 2016 Поделиться Опубликовано 9 Января 2016 (изменено) Забавный эффект: class "my_cls" function my_cls:__init() end function my_func( st, a ) st.actions = { [a] = true } end my_func( t, my_cls() ) - таблица разрушена, при том, что local a = my_cls(); my_func( t, a ) - работает. Самое забавное, что происходит только в начале игры, и проявляется вылетом 0023:100046A6 xrSound.dll, CSound_manager_interface::CSound_manager_interface() Изменено 9 Января 2016 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-985855
Dennis_Chikin 3 665 Опубликовано 11 Января 2016 Поделиться Опубликовано 11 Января 2016 Что-то я не понял... Так все-таки, в ТЧ можно удалять из апдейта объекта этот объект ? В какой-то момент фокус устойчиво срабатывает. Но именно в какой-то. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986495
abramcumner 1 229 Опубликовано 12 Января 2016 Поделиться Опубликовано 12 Января 2016 Забавный эффект: my_func( t, my_cls() ) - таблица разрушена, при том, что local a = my_cls(); my_func( t, a ) - работает. Вроде обычный эффект - выход переменной из области видимости.Вот так тоже не должно работать: do local a = my_cls(); my_func( t, a ) end Что-то я не понял... Так все-таки, в ТЧ можно удалять из апдейта объекта этот объект ? В какой-то момент фокус устойчиво срабатывает. Но именно в какой-то. Можно конечно. При удалении удаляется только серверный объект, клиентский, из апдейта которого ты удаляешь, вполне себе еще жив. Он удалится только к следующему апдейту.Не срабатывать может из-за того, например, что перед удалением сохранили ссылку на серверный и пытаются с ней работать после удаления. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986556
DXatom 0 Опубликовано 12 Января 2016 Поделиться Опубликовано 12 Января 2016 Чудес не бывает - если у них группировки(community) враждебные друг-другу, то они будут атаковать друг-друга. Ищи ошибку, или в профилях одинаковую группировку им прописал, или в логике есть запрет на атаку. Да, дело было в community. "freedom" атакует "dolg", но атаковать группировку "bandit" не хочет. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986674
dsh 3 824 Опубликовано 12 Января 2016 Поделиться Опубликовано 12 Января 2016 "freedom" атакует "dolg", но атаковать группировку "bandit" не хочет Во, как раз еще помню свое удивление, когда с этим столкнулся. В game_relations.ltx поправь отношения бандитов и свободы, а то они там нейтральны друг к другу. Если тебе именно это нужно. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986702
DXatom 0 Опубликовано 12 Января 2016 Поделиться Опубликовано 12 Января 2016 Во, как раз еще помню свое удивление, когда с этим столкнулся. В game_relations.ltx поправь отношения бандитов и свободы, а то они там нейтральны друг к другу. Если тебе именно это нужно. Спасибо! То что нужно. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986710
Dennis_Chikin 3 665 Опубликовано 14 Января 2016 Поделиться Опубликовано 14 Января 2016 (изменено) Вроде обычный эффект - выход переменной из области видимости.Где там из области видимости ? Обработка внутри выражения должна идти справа налево. А вот 2 разных выражения - здесь - по порядку. клиентский, из апдейта которого ты удаляешь, вполне себе еще жив. Однако вывода в лог после alife():release() уже нет. То есть, объект таки помре. Изменено 14 Января 2016 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986893
abramcumner 1 229 Опубликовано 14 Января 2016 Поделиться Опубликовано 14 Января 2016 Где там из области видимости ? Обработка внутри выражения должна идти справа налево. А вот 2 разных выражения - здесь - по порядку. my_func( t, my_cls() ) - таблица разрушена, при том, чтоЭто строчка равносильна такому: do local temp = my_cls() my_func(t, temp) end После вызова my_func временный объект удалится и в таблице будет ссылка на удаленный объект local a = my_cls(); my_func( t, a )Здесь а будет жить до следующего end. И какое-то время его даже можно будет получить из таблицы. Однако вывода в лог после alife():release() уже нет. То есть, объект таки помре.Если вывода нет - значит завис биндер. А биндер может зависнуть в том числе из-за неправильного вызова alife():release() И там и там хорошо бы тестовые примеры для чистого ТЧ. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986920
Desertir 202 Опубликовано 14 Января 2016 Поделиться Опубликовано 14 Января 2016 После вызова my_func временный объект удалится и в таблице будет ссылка на удаленный объектДумаю, сборщик мусора не отупел до того, чтобы удалять объект, который используется как ключ в таблице.Тов. @Dennis_Chikin чего то недоговаривает, код рабочий: class "key_obj" function key_obj:__init(name) self.name = name end local function log(text) get_console():execute("~~~" .. string.gsub(text, " ", "_")) end function set_act(t, a) t.actions = { [a] = true } end function test() local mtable = {} set_act(mtable, key_obj("key")) for obj, _ in pairs(mtable.actions) do log(obj.name) end endДобавив в start_game_callback вывел Сервер: Старт... ! Unknown command: ~~~key Так о каком начале игры идет речь, о каком объекте и таблице? Может его движок кто-то удалить успевает. А может еще какие танцы с бубном есть в коде, а мы тут на область видимости пальцами тыкаем. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-986957
_Dunay_ 0 Опубликовано 14 Января 2016 Поделиться Опубликовано 14 Января 2016 (изменено) Друзья, я новичок в скриптописании. Подскажите, кому не сложно, как скриптом сделать проверку на то, что актору был нанесен хит и тип хита woundscale? На форуме очень много информации, все пересмотреть не удается, а поиск ничего толкового не выдает, либо я не умею пользоваться им)) Изменено 14 Января 2016 пользователем _Dunay_ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-987070
Dennis_Chikin 3 665 Опубликовано 16 Января 2016 Поделиться Опубликовано 16 Января 2016 Думаю, сборщик мусора не отупел до того, чтобы удалять объект, который используется как ключ в таблице. Тов. Dennis_Chikin чего то недоговаривает, код рабочий: Похоже, что да, таки рабочий. Проблема откуда-то еще. НИ - имелось в виду именно НИ: то есть, с сэйва - работает. А вот "новая игра" - вылеты идут примерно в 3-х случаях из 10. Касательно alife():release(), то вот: function se_respawn:execute() local sim = alife() local game_time,idle_spawn,idle_time,num,prob,respawn_time,shift_time,timer -- проверим, условия автоудаления if self.tab_auto_dell then self.auto_dell = xr_logic.pick_section_from_condlist(db.actor_proxy,self,self.tab_auto_dell) ~= nil end -- если условия выполнены и есть флаг спавна - очистим таблицы и удалим респавнер if self.auto_dell and self.first_spawned then self.spawned_obj = {} respawners[self:name()] = nil sim:release(self,true) return end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-987518
Winsor 178 Опубликовано 21 Января 2016 Поделиться Опубликовано 21 Января 2016 (изменено) Уважаемые знающие, вопрос о class_registrator.script и иже с ними. Хочу добавить свой серверный класс для работы с лампами, ТЧ 1.0006 НС АЕМ. Вот код из регистратора: 1) cs_register (object_factory, "hanging_lamp", "aem_lights.se_lamp", "AEM_LAMP", "aem_lamp") 2) cs_register (object_factory, "hanging_lamp", "se_objects.se_hanging_lamp", "O_HLAMP", "lights_hanging_lamp") 2-й пункт - это то что я хочу добавить. Проблема в том что se_objects.se_hanging_lamp биндится только в случае если 1-й пункт заккоментирован. т.е. я не могу клиентский класс (hanging_lamp) связать с разными типами (AEM_LAMP и O_HLAMP) и секциями (aem_lamp и lights_hanging_lamp) и серверными классами? когда я делаю alife:create() - я ведь создаю "по секции" а не по клиентскому классу. Подскажите, пожалуйста, где ошибка в моих рассуждениях? Изменено 21 Января 2016 пользователем Winsor Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/349/#findComment-988612
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти