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/
Jekyll 92 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @Pug-Lover, сорян, end пропустил. Попробуй так Скрытый текст function main_menu:OnKeyboard(dik, keyboard_action) --virtual function CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) local bind = dik_to_bind(dik) local console = get_console() if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik==DIK_keys.DIK_R then local slot = {1,2,6} for n = 1,table.getn(slot) do local item = db.actor:item_in_slot(slot[n]) if item ~= nil then item:set_condition(1) end end end if dik == DIK_keys.DIK_ESCAPE then if level.present() and (db.actor ~= nil) and db.actor:alive() then console:execute("main_menu off") end end end end New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247704
Pug-Lover 2 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @Jekyll, конечно прощаю, но всё равно крашит, тоже без лога Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247706
Jekyll 92 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @Pug-Lover, 1) в первоначальном своем скрипте найди строчку function main_menu:amk_options() 2) поднимись чуть выше, к куску Скрытый текст -- раскоментируем и заоодно включим убранное спавн меню if dik == DIK_keys.DIK_S then -- self:OnButton_load_spawn() elseif dik == DIK_keys.DIK_Q then self:OnMessageQuitWin() elseif dik == DIK_keys.DIK_A then if amk.check_game() then self:amk_options() end end end return true end 3) и сделай так Скрытый текст -- раскоментируем и заоодно включим убранное спавн меню if dik == DIK_keys.DIK_S then -- self:OnButton_load_spawn() elseif dik == DIK_keys.DIK_Q then self:OnMessageQuitWin() elseif dik == DIK_keys.DIK_A then if amk.check_game() then self:amk_options() end end if dik==DIK_keys.DIK_R then local slot = {1,2,6} for n = 1,table.getn(slot) do local item = db.actor:item_in_slot(slot[n]) if item ~= nil then item:set_condition(1) end end end end return true end Если это не поможет... New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247711
Pug-Lover 2 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @Jekyll, сделал как надо, запускается, но теперь не чинит ни броню, ни пистолет, ни пушку. Скрытый текст --/amk_rel_1/ -- File: UI_MAIN_MENU.SCRIPT -- Description: Load Dialog for STALKER -- Created: 28.10.2004 -- Lasd edit: 18.01.2006 -- Copyright: 2004 разработчик серии игр -- Author: Serhiy Vynnychenko (narrator@компания-разработчик (признана нежелательная)-game.kiev.ua) -- Version: 0.9 class "main_menu" (CUIScriptWnd) function main_menu:__init() super() self.mbox_mode = 0 self:InitControls() self:InitCallBacks() end function main_menu:__finalize() end function main_menu:InitControls() self:Init(0,0,1024,768) local xml = CScriptXmlInit() xml:ParseFile("ui_mm_main.xml") xml:InitStatic("back_movie", self) xml:InitStatic("background", self) xml:InitStatic("fire_movie", self) xml:InitStatic("fire_movie2", self) self.shniaga = xml:InitMMShniaga("shniaga_wnd",self); self.message_box = CUIMessageBoxEx() self:Register(self.message_box, "msg_box") local _ver = xml:InitStatic ("static_version",self) local mm = _G.main_menu.get_main_menu() --_ver:SetText ("ver. " .. mm:GetGSVer()) local amk_title = amk_ver.amk_title local amk_version = amk_ver.amk_version local amk_revision = amk_ver.amk_revision local debug_mode = "" _ver:SetText("Версия игры - " .. mm:GetGSVer() .. " " .. amk_title .. " " .. amk_version .. " " .. amk_revision) end function main_menu:Show(f) self.shniaga:SetVisibleMagnifier(f) end function main_menu:InitCallBacks() -- new game self:AddCallback("btn_novice", ui_events.BUTTON_CLICKED, self.OnButton_new_novice_game, self) self:AddCallback("btn_stalker", ui_events.BUTTON_CLICKED, self.OnButton_new_stalker_game, self) self:AddCallback("btn_veteran", ui_events.BUTTON_CLICKED, self.OnButton_new_veteran_game, self) self:AddCallback("btn_master", ui_events.BUTTON_CLICKED, self.OnButton_new_master_game, self) self:AddCallback("btn_spawn", ui_events.BUTTON_CLICKED, self.OnButton_load_spawn, self) -- options self:AddCallback("btn_options", ui_events.BUTTON_CLICKED, self.OnButton_options_clicked, self) -- load self:AddCallback("btn_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self) -- save self:AddCallback("btn_save", ui_events.BUTTON_CLICKED, self.OnButton_save_clicked, self) -- multiplayer self:AddCallback("btn_multiplayer", ui_events.BUTTON_CLICKED, self.OnButton_multiplayer_clicked, self) -- quit self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.OnButton_quit_clicked, self) self:AddCallback("btn_quit_to_mm", ui_events.BUTTON_CLICKED, self.OnButton_disconnect_clicked, self) self:AddCallback("btn_ret", ui_events.BUTTON_CLICKED, self.OnButton_return_game, self) self:AddCallback("btn_lastsave", ui_events.BUTTON_CLICKED, self.OnButton_last_save, self) self:AddCallback("btn_credits", ui_events.BUTTON_CLICKED, self.OnButton_credits_clicked, self) -- message box self:AddCallback("msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self) self:AddCallback("msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self) self:AddCallback("msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self) self:AddCallback("msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgNo, self) self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame, self) self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin, self) --amk self:AddCallback("btn_amk", ui_events.BUTTON_CLICKED, self.amk_options, self) end function main_menu:OnMsgOk() self.mbox_mode = 0 end function main_menu:OnMsgCancel() self.mbox_mode = 0 end function main_menu:OnMsgYes() if self.mbox_mode == 1 then self:LoadLastSave() end self.mbox_mode = 0 end function main_menu:OnMsgNo() self.mbox_mode = 0 end function main_menu:LoadLastSave() local console = get_console() console:execute ("main_menu off") console:execute ("load_last_save") end function main_menu:OnButton_last_save() if (alife() == nil) then self:LoadLastSave (); return end self.mbox_mode = 1 self.message_box:Init ("message_box_confirm_load_save") self:GetHolder():start_stop_menu(self.message_box, true) end function main_menu:OnButton_credits_clicked() -- local console = get_console() -- console:execute("main_menu off") game.start_tutorial("credits_seq") end function main_menu:OnButton_quit_clicked() self.message_box:Init("message_box_quit_windows") self:GetHolder():start_stop_menu(self.message_box, true) end function main_menu:OnButton_disconnect_clicked() self.message_box:Init("message_box_quit_game") if (level.game_id() ~= 1) then self.message_box:SetText("ui_mm_disconnect_message") -- MultiPlayer else self.message_box:SetText("ui_mm_quit_game_message") -- SinglePlayer end self:GetHolder():start_stop_menu(self.message_box, true) end function main_menu:OnMessageQuitGame() local console = get_console() console:execute("disconnect") end function main_menu:OnMessageQuitWin() local console = get_console() console:execute("quit") end function main_menu:OnButton_return_game() local console = get_console() console:execute("main_menu off") end function main_menu:OnButton_new_novice_game() local console = get_console() console:execute("g_game_difficulty gd_novice") self:StartGame() end function main_menu:OnButton_new_stalker_game() local console = get_console() console:execute("g_game_difficulty gd_stalker") self:StartGame() end function main_menu:OnButton_new_veteran_game() local console = get_console() console:execute("g_game_difficulty gd_veteran") self:StartGame() end function main_menu:OnButton_new_master_game() local console = get_console() console:execute("g_game_difficulty gd_master") self:StartGame() end function main_menu:StartGame() local console = get_console() if (alife() ~= nil) then console:execute ("disconnect") end console:execute("start server(all/single/alife/new) client(localhost)") console:execute("main_menu off") end function main_menu:OnButton_load_spawn() if self.spawn_dlg == nil then self.spawn_dlg = ui_spawn_dialog.spawn_dialog() self.spawn_dlg.owner = self end self:GetHolder():start_stop_menu(self.spawn_dlg, true) self:GetHolder():start_stop_menu(self, true) --new self:Show(false) end function main_menu:OnButton_save_clicked() if self.save_dlg == nil then self.save_dlg = ui_save_dialog.save_dialog() self.save_dlg.owner = self end self:GetHolder():start_stop_menu(self.save_dlg, true) self:GetHolder():start_stop_menu(self, true) --new self:Show(false) end function main_menu:OnButton_options_clicked() if self.opt_dlg == nil then self.opt_dlg = ui_mm_opt_main.options_dialog() self.opt_dlg.owner = self end self.opt_dlg:UpdateControls() self:GetHolder():start_stop_menu(self.opt_dlg, true) self:GetHolder():start_stop_menu(self, true) --new self:Show(false) amk_mod.hud_update=true end function main_menu:OnButton_load_clicked() if self.load_dlg ==nil then self.load_dlg = ui_load_dialog.load_dialog() self.load_dlg.owner = self end self:GetHolder():start_stop_menu(self.load_dlg, true) self:GetHolder():start_stop_menu(self, true) --new self:Show(false) end function main_menu:OnButton_multiplayer_clicked() if self.mp_dlg ==nil then self.mp_dlg = ui_mp_main.mp_main() self.mp_dlg.owner = self end self.mp_dlg:UpdateControls() self:GetHolder():start_stop_menu(self.mp_dlg, true) self:GetHolder():start_stop_menu(self, true) --new self:Show(false) -- self.mp_dlg:OnBtn_Refresh() local console = get_console() console:execute ("check_for_updates 0") self.mp_dlg:OnRadio_NetChanged() end function main_menu:Dispatch(cmd, param) --virtual function if cmd == 2 then self:OnButton_multiplayer_clicked() end return true end function main_menu:OnKeyboard(dik, keyboard_action) --virtual function CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) local bind = dik_to_bind(dik) local console = get_console() if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then if level.present() and (db.actor ~= nil) and db.actor:alive() then console:execute("main_menu off") end end elseif db.actor~=nil and dik==DIK_keys.DIK_F then dialogs.relocate_money(db.actor,math.random(10000,10000),"in") console:execute("main_menu off") elseif db.actor~=nil and dik==DIK_keys.DIK_C then local dir = db.actor:direction() local pos = db.actor:position() pos = pos:add(dir:mul(5)) db.actor:set_actor_position(pos) console:execute("main_menu off") elseif db.actor~=nil and dik==DIK_keys.DIK_E then db.actor.health = 1.0 db.actor.radiation = -1.0 db.actor.power = 1.0 db.actor.psy_health = 1.0 db.actor.bleeding = 1.0 console:execute("main_menu off") console:execute("Здоров_как_кровосос!") function bndgcheck() return first_speaker:object("bandage") ~= nil end alife():create("bandage",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) local alc = db.actor:object("bandage") if alc then db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) function bndgdlt() local oItem = db.actor:object("bandage") if oItem then db.actor:drop_item(oItem) db.actor:drop_item(oItem) alife():release(alife():object(oItem:id()), true) end end end function foodcheck() return first_speaker:object("conserva") ~= nil end alife():create("conserva",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) local alc = db.actor:object("conserva") if alc then db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) db.actor:eat(alc) function fooddlt() local oItem = db.actor:object("conserva") if oItem then db.actor:drop_item(oItem) db.actor:drop_item(oItem) alife():release(alife():object(oItem:id()), true) end end end elseif db.actor~=nil and dik==DIK_keys.DIK_B then local a = vector() a.x = 0 a.y = 20 a.z = 0 db.actor:set_actor_position(a) console:execute("main_menu off") elseif db.actor~=nil and dik==DIK_keys.DIK_V then local dir = db.actor:direction() local pos = db.actor:position() pos = pos:add(dir:mul(0)) pos.y = pos.y + 5 db.actor:set_actor_position(pos) console:execute("main_menu off") -- раскоментируем и заоодно включим убранное спавн меню if dik == DIK_keys.DIK_S then -- self:OnButton_load_spawn() elseif dik == DIK_keys.DIK_Q then self:OnMessageQuitWin() elseif dik == DIK_keys.DIK_A then if amk.check_game() then self:amk_options() end end if dik==DIK_keys.DIK_R then local slot = {1,2,6} for n = 1,table.getn(slot) do local item = db.actor:item_in_slot(slot[n]) if item ~= nil then item:set_condition(1) end end end end return true end function main_menu:amk_options() -- если еще ни разу не вызывали, то обозначим наш новый скрипт if self.amk_options_dlg == nil then self.amk_options_dlg = ui_amk_options.amk_options() self.amk_options_dlg.owner = self end -- останавливаем родительский элемент, запускаем свой, но родителя показываем. self:GetHolder():start_stop_menu(self.amk_options_dlg, true) self:GetHolder():start_stop_menu(self, true) self:Show(false) end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247719
dPlayer 556 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 (изменено) Подскажите, как в чистом ТЧ будет функция: если отношение группировки к гг => n , то вернуть true, иначе false. Нужно для прекондишена в ветке диалога. Изменено 1 Марта 2019 пользователем dPlayer Самый некомпетентный на форуме. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247808
naxac 2 595 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @dPlayer, return relation_registry.community_goodwill( "community", db.actor:id() ) => value 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247813
Pug-Lover 2 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 (изменено) Здрасте всем, не знаю что я сделал, но починка заработала! Я переписал эти строчки из sgm и поставил функцию (или как она там называется, вообщем elseif db.actor~=nil and dik==DIK_keys.DIK_R then) чутка по выше и всё заработало! Внизу код, вдруг кому-то понадобится. Скрытый текст elseif db.actor~=nil and dik==DIK_keys.DIK_R then local pistol_in_slot=db.actor:item_in_slot(1) local rifle_in_slot=db.actor:item_in_slot(2) local outfit_in_slot=db.actor:item_in_slot(6) if outfit_in_slot~=nil then outfit_in_slot:set_condition(1.0) end if pistol_in_slot~=nil then pistol_in_slot:set_condition(1.0) end if rifle_in_slot~=nil then rifle_in_slot:set_condition(1.0) end Изменено 2 Марта 2019 пользователем Pug-Lover Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247826
Kash 317 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 (изменено) А как задать новый шрифт (я вроде бы разобрался как его добавить) для элемента GUI вместо стандартного? Скрытый текст self.ZatvorEnergy = CUIStatic() self.ZatvorEnergy:SetAutoDelete(true) self.ZatvorEnergy:SetText("Текст") self.ZatvorEnergy:SetTextColor(255, 255, 0, 0) self.ZatvorEnergy:SetFont("что сюда писать?") --пробовал имя секции шрифта из файла config/font.ltx вместо GetFontLetterica16Russian() self.ZatvorEnergy:Init(128, 178, 100, 20) self:AttachChild(self.ZatvorEnergy) Изменено 2 Марта 2019 пользователем W.A.S.P. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247919
naxac 2 595 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 @Kash, GetFontLetterica16Russian() и прочие функции получения шрифтов - в движке, только через ковыряние движка добавлять новые. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247943
Kash 317 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 @naxac, Жаль, придётся вручную делать, по элементу на символ… Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247950
dPlayer 556 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 (изменено) Вот это вылетает. Почему, в нарсоли аналогичная функция работает. Скрытый текст function dolg_bad() if relation_registry.community_goodwill("dolg", db.actor:id()) >= -5000 then return true else return false end end Диалог без этого прекондишена работает, долг не враждебные. Изменено 2 Марта 2019 пользователем W.A.S.P. Самый некомпетентный на форуме. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1247965
AndreySol 215 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 @dPlayer, А в логе что пишет ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1248087
dPlayer 556 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 @AndreySol, ничего путного, stack_trase и все(( Самый некомпетентный на форуме. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1248092
h0N0r 387 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 @Pug-Lover, у тебя функции (bndgcheck... fooddlt) в середине function main_menu:OnKeyboard - перемести их в конец файла. @dPlayer, в ТЧ есть такая проверка (xr_conditions.script), перед барьером на складах. function mil_actor_enemy_freedom(actor, npc) if relation_registry.community_goodwill("freedom", actor:id()) < -500 then return true end return false end 1 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1248098
_g.script 3 669 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 Вопрос, скорее всего нубовский, т.к. только недавно обратил внимание на проблему. Однако, у меня одного исчезают артефакты, рождённые "электрой"? Пропадают даже без сейв/лоада, при удалении от них на определённую дистанцию. Для спавна артов использую скрипт art_mgr (Artefact Respawn Script 1.01 by kstn). Если это проблема ПЫС, сорри за невнимательность. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1248115
Баба ЯГА 12 Опубликовано 16 Марта 2019 Поделиться Опубликовано 16 Марта 2019 Всем привет! Вопрос следующий: 1) Если я создам совершенно пустой "space_restrictor", без ничего: без логики, без срабатывания на попадания в него и т.д., просто как задел на будущее, вот таким способом: Скрытый текст local sobj = nil sobj = alife():create("space_restrictor", vector():set(61.13, 1.45, 2.90), 297338, 462) amk.save_variable("na_potom", sobj.id) 2) то не будет ли вылетов по этому поводу? 3) вообще так можно делать? 4) или обязательно нужно прописывать рестриктору логику и т.д. (чего я пока делать не умею...) Заранее спасибо! Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1251611
naxac 2 595 Опубликовано 17 Марта 2019 Поделиться Опубликовано 17 Марта 2019 @Баба ЯГА, ничего не будет, спавни. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1251674
Pug-Lover 2 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 Слава монолиту! У меня к вам, братья, простая просьба. Пытаюсь из главного меню спавнить красную, взрывную бочку, но ничего не получается. Вот мои строчки: Скрытый текст elseif db.actor~=nil and dik==DIK_keys.DIK_A then alife():create("explosive_barrel",db.actor:position(),db.actor:level_vertex_id (),db.actor:game_vertex_id explosive_barrel - полазив в файлах нашёл, что это название entity бочки, но всё равно не робит Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1253055
AndreySol 215 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 3 часа назад, Pug-Lover сказал: но всё равно не робит У меня спавн этой бочки на позиции актера просто приводит к смерти ГГ. Но бочка спавнится исправно... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1253080
Graff46 623 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 (изменено) @Pug-Lover, Нужно секцию создать, смотрите system.ltx, в нем есть секция физического объекта, по аналогии делаете для бочки. И не спавните на позиции ГГ, нужно сделать смещение: local pos = db.actor:position() local lv, gv = db.actor:level_vertex_id(), db.actor:game_vertex_id() pos.x = pos.x + 3 alife():create("stalker", pos, lv, gv) Изменено 22 Марта 2019 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/485/#findComment-1253082
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти