Jekyll 92 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 (изменено) @Pug-Lover, не представляю, как у тебя ЭТО вообще запускается... Попробуй для начала заменить свою функцию function main_menu:OnKeyboard(dik, keyboard_action) --virtual function на эту: Скрытый текст 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 Только бэкап сделай. Что за версия? 1.0006? 1.0004? Изменено 1 Марта 2019 пользователем Jekyll New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Pug-Lover 2 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 (изменено) @Jekyll, крашит, даже без лога версия 1.0006 Изменено 1 Марта 2019 пользователем Pug-Lover Ссылка на комментарий
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 Ссылка на комментарий
Pug-Lover 2 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @Jekyll, конечно прощаю, но всё равно крашит, тоже без лога Ссылка на комментарий
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 Ссылка на комментарий
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 GSC Game World -- Author: Serhiy Vynnychenko (narrator@gsc-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 Ссылка на комментарий
dPlayer 501 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 (изменено) Подскажите, как в чистом ТЧ будет функция: если отношение группировки к гг => n , то вернуть true, иначе false. Нужно для прекондишена в ветке диалога. Изменено 1 Марта 2019 пользователем dPlayer Ссылка на комментарий
naxac 2 447 Опубликовано 1 Марта 2019 Поделиться Опубликовано 1 Марта 2019 @dPlayer, return relation_registry.community_goodwill( "community", db.actor:id() ) => value 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
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 Ссылка на комментарий
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. Ссылка на комментарий
naxac 2 447 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 @Kash, GetFontLetterica16Russian() и прочие функции получения шрифтов - в движке, только через ковыряние движка добавлять новые. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Kash 317 Опубликовано 2 Марта 2019 Поделиться Опубликовано 2 Марта 2019 @naxac, Жаль, придётся вручную делать, по элементу на символ… Ссылка на комментарий
dPlayer 501 Опубликовано 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. Ссылка на комментарий
AndreySol 215 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 @dPlayer, А в логе что пишет ? Ссылка на комментарий
dPlayer 501 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 @AndreySol, ничего путного, stack_trase и все(( Ссылка на комментарий
h0N0r 340 Опубликовано 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 Ссылка на комментарий
mole venomous 3 433 Опубликовано 3 Марта 2019 Поделиться Опубликовано 3 Марта 2019 Вопрос, скорее всего нубовский, т.к. только недавно обратил внимание на проблему. Однако, у меня одного исчезают артефакты, рождённые "электрой"? Пропадают даже без сейв/лоада, при удалении от них на определённую дистанцию. Для спавна артов использую скрипт art_mgr (Artefact Respawn Script 1.01 by kstn). Если это проблема ПЫС, сорри за невнимательность. Здесь могла быть ваша реклама. Ссылка на комментарий
Баба ЯГА 7 Опубликовано 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) или обязательно нужно прописывать рестриктору логику и т.д. (чего я пока делать не умею...) Заранее спасибо! Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
naxac 2 447 Опубликовано 17 Марта 2019 Поделиться Опубликовано 17 Марта 2019 @Баба ЯГА, ничего не будет, спавни. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
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 бочки, но всё равно не робит Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти