Kondr48 314 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Я, мб, чего-то не понял об оконных классах? level.start_stop_menu(this.gui_mechanic_wnd(),true) mechanic_info["npc_name"] = first_speaker:character_name() mechanic_info["npc_icon"] = ini:r_string(first_speaker:profile_name().."_cfg","texture") news_manager.send_tip(actor, tostring(mechanic_info["npc_name"])) Здесь сообщение выводится как надо.Но когда мне нужно воспользоваться этими данными, а именно внутри кода скриптового окна уже. Мне приходит в сообщениях "nil". news_manager.send_tip(actor, tostring(mechanic_info["npc_name"])) Ссылка на комментарий
Карлан 1 049 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 @Kondr48, вопрос совершенно некорректный. Никто по этим обрывкам не сможет понять что ты делаешь, можно только гадать. Моя кофейная гуща говорит о том, что твоя таблица к моменту вызова типса уже вне зоны видимости, если вообще не уничтожена. Объяви ее в самом начале модуля вот так: local mechanic_info = {} Если вызов типса в этом же модуле, и вот так: mechanic_info = {} Если в ином, но в таком случае вызывать ее нужно module.mechanic_info, почему? Недавно я как-раз рассказывал про видимость переменных, рекомендую прочесть, там же я давал ссылки на главы по окружению из официального мануала. 1 Ссылка на комментарий
saymon6996 0 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Всем привет. Нужна помощь по функциям. Есть код: function blabla() local number = self:edit_GetText() end function edit_GetText() return self.edit:GetText() end edit_gettext это функция editbox. В editbox мы должны ввести число которое после должно записатся в переменную number, но оно не записывается. В чем же может быть проблема?? Ссылка на комментарий
mortan 143 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 (изменено) @naxac, я сначала делал так, но значение меняется жутко медленно, поэтому перешёл на trackbar и прикрутил вывод тек. значения рядом. Изменено 21 Июля 2016 пользователем Kirgudu Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 (изменено) Такая проблема. Использую модифицированную ph_car от lscon. Вот в чем проблема. Перевел функцию на новое хранилище обьектов, И так, переписал функцию. function action_car:update_friends_and_target()self.friends = {}local objfor k,v in pairs(db.btr_target) doobj=level.object_by_id(k)if obj and ( (IAmAStalker[obj:clsid()] and obj:character_community()=="military" and obj:alive()) or(obj:section()=="vehicle_btr" and obj:id()~=self.object:id()) ) andself.fire_range_sqr>self.object:position():distance_to_sqr(obj:position()) thenself.friends[k] = obj:section()endendif self.st.fire_target == "monsters" then-- враги монстры, значит друзья все сталкеры и выбираем ближайшего монстра в качестве целиlocal dist = 0local nearest = 100000local nearest_limit = 25 -- но не ближе 5 м, иначе БТР сам себе мешает стрелятьlocal target = nilfor id,obj in pairs(db.btr_target) doif obj:alive() thendist = self.object:position():distance_to_sqr(obj:position())if dist < self.fire_range_sqr thenif IAmAStalker[obj:clsid()] then-- добираем всех сталкеров в друзейself.friends[id] = obj:section()elseif IAmAMonster[obj:clsid()] and nearest_limit < dist and dist < nearest and self.car:IsObjectVisible(obj) then-- ищем ближайшего монстра в качестве целиnearest = disttarget = objendendendendif target thenself.target_obj = targetself.state_firetarget = state_firetarget_enemyelseself.target_obj = nilself.state_firetarget = state_noneendendend Теперь данные берем из db.btr_target. Там, вроде бы, храниться то, что нужно. Вот инициализация хранилища: function add_obj( obj )if IsStalker(obj) thencreature[obj:id()] = trueelseif IsMonster(obj) thencreature[obj:id()] = falseendif IsMonster(obj) thenmonster_stock[obj:id()] = objendif IsStalker(obj) and IsMonster(obj) thenbtr_target[obj:id()] = trueendendfunction del_obj( obj )storage [obj:id()] = nilif IsStalker(obj) or IsMonster(obj) thencreature[obj:id()] = nilendif IsMonster(obj) thenmonster_stock[obj:id()] = nilendif IsStalker(obj) and IsMonster(obj) thenbtr_target[obj:id()] = nilendend Итого - ничего. Если выставить db.creature - вылет со ссылкой на obj(мол boolean value). Если db.storage - вылет со ссылкой на метод alive(), мол его к obj применить нельзя... Вроде все должно работать, в остальных частях схемы(логика БТР) проблем нет, брал прямо из ОП-2. Кто-то скажет скопировать оригинальный btrs_friends = {}, еще раз говорю - на счет друзей БТР фишка не особо нужна. Тем более проверка на группировки и прочее уже вшита в функцию. Жду вашей помощи... Изменено 21 Июля 2016 пользователем CRAZY_STALKER666 Не соответствует правилам. Ссылка на комментарий
mortan 143 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Всем привет. Нужна помощь по функциям. Есть код: function blabla() local number = self:edit_GetText() end function edit_GetText() return self.edit:GetText() end edit_gettext это функция editbox. В editbox мы должны ввести число которое после должно записатся в переменную number, но оно не записывается. В чем же может быть проблема?? Это ТЧ или ЗП? Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Итак, после over9000 вылетов, поломок update() и результатов = nil, я добился этого - БТР гасит монстров!!! Может, пригодиться кому. Для чистого ТЧ, разве что нужно объявить хранилище monster_stock, там только монстры... function action_car:update_friends_and_target() get_console():execute("CHEKING!!!") if self.st.fire_target == "monsters" then for k in pairs(db.monster_stock) do local obj = level.object_by_id(k) if obj and IsMonster(obj) and obj:alive() and self.car:IsObjectVisible(obj) then self.target_obj = obj self.state_firetarget = state_firetarget_enemy get_console():execute(" !!_"..obj:name().."_!!") end end end end 1 Не соответствует правилам. Ссылка на комментарий
saymon6996 0 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 Это ТЧ или ЗП?Это ТЧ Ссылка на комментарий
mortan 143 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 (изменено) @saymon6996, покажите полный код (только под спойлер уберите), а так могу предположить что функция не назначена на кнопку (я же не прав? )) Изменено 21 Июля 2016 пользователем mortan Ссылка на комментарий
saymon6996 0 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 @saymon6996, покажите полный код (только под спойлер уберите), а так могу предположить что функция не назначена на кнопку (я же не прав? ))А не подскажешь как под спойлер текст пустить, а то я с телефона, интернет только на нем. Я за городом)@mortan, class "NewUI" (CUIScriptWnd) function NewUI:__init() super() self:InitControls() self:InitCallBacks() end function NewUI:__finalize() end function NewUI:InitControls() local xml = CScriptXmlInit() self:SetWndRect(Frect():set(0,0,1024,768)) xml:ParseFile("NewUI.xml") self.Static = xml:InitStatic("Static", self) xml:InitFrame("Static:List_frame", self.Static) self.List = xml:InitList("List", self) self.List:ShowSelectedItem(true) self:Register(self.List, "List") xml:InitFrame("Static:frame4", self.Static) self.label = xml:InitStatic("label", self) self.edit = xml:InitEditBox("edit", self) self.section_name = xml:InitStatic("section_name", self) self:Register(xml:Init3tButton("button1", self), "btn_mob") self:Register(xml:Init3tButton("button2", self), "btn_weapons") self:Register(xml:Init3tButton("button3", self), "btn_ammo") self:Register(xml:Init3tButton("button4", self), "btn_outf") self:Register(xml:Init3tButton("button5", self), "btn_stalkers") self:Register(xml:Init3tButton("button6", self), "btn_artefacts") self:Register(xml:Init3tButton("button7", self), "btn_items") self:Register(xml:Init3tButton("button8", self), "btn_addons") self:Register(xml:Init3tButton("button9", self), "btn_quest") self:Register(xml:Init3tButton("button10", self), "btn_unique") self:Register(xml:Init3tButton("btn_exit", self), "btn_exit") self:Register(xml:Init3tButton("button12", self), "actor_spawn") self:Register(xml:Init3tButton("button13", self), "spawn") end function NewUI:InitCallBacks() self:AddCallback("List", ui_events.LIST_ITEM_CLICKED, self.On_List_item_clicked, self) self:AddCallback("btn_mob", ui_events.BUTTON_CLICKED, self.btn_mob_button_clicked, self) self:AddCallback("btn_weapons", ui_events.BUTTON_CLICKED, self.btn_weapons_button_clicked, self) self:AddCallback("btn_ammo", ui_events.BUTTON_CLICKED, self.btn_ammo_button_clicked, self) self:AddCallback("btn_outf", ui_events.BUTTON_CLICKED, self.btn_outfits_button_clicked, self) self:AddCallback("btn_stalkers", ui_events.BUTTON_CLICKED, self.btn_stalkers_button_clicked, self) self:AddCallback("btn_artefacts", ui_events.BUTTON_CLICKED, self.btn_artefacts_button_clicked, self) self:AddCallback("btn_items", ui_events.BUTTON_CLICKED, self.btn_items_button_clicked, self) self:AddCallback("btn_addons", ui_events.BUTTON_CLICKED, self.btn_addons_button_clicked, self) self:AddCallback("btn_quest", ui_events.BUTTON_CLICKED, self.btn_quest_button_clicked, self) self:AddCallback("btn_unique", ui_events.BUTTON_CLICKED, self.btn_unique_button_clicked, self) self:AddCallback("btn_exit", ui_events.BUTTON_CLICKED, self.Hide, self) self:AddCallback("actor_spawn", ui_events.BUTTON_CLICKED, self.btn_spawn, self) self:AddCallback("spawn", ui_events.BUTTON_CLICKED, self.btn_spawn_dist, self) end ------------------- >>> Класс элемента списка List > END 50 then item_name = string.sub(item_name,1,50).."..." end local _itm = ListItem() _itm.text_item:SetText(item_name) _itm.sct:SetText(sect) self.List:AddItem(_itm) end end function check_game() return alife()~=nil and db.actor and db.actor:alive() end function NewUI:read_if_exist(what, section, line, def, ini) if not ini then ini = system_ini() end if section and ini:section_exist(section) and ini:line_exist(section,line) then if what == "flt" then return ini:r_float(section,line) elseif what == "u32" then return ini:r_u32(section,line) elseif what == "str" then return ini:r_string(section,line) elseif what == "bln" then return ini:r_bool(section,line) end end return def end function NewUI:check_item(section) if system_ini():section_exist(section) then if self:read_if_exist("bln", section, "can_take", true)==true and self:read_if_exist("str", section, "class", nil)~=nil and self:read_if_exist("str", section, "description", nil)~=nil and self:read_if_exist("str", section, "inv_name", nil)~=nil and self:read_if_exist("str", section, "visual", nil)~=nil then return true else self:tolog("ERROR! Incorrect section for spawn [%s]",section) return false end else self:tolog("ERROR! Section not found: [%s]",section) return false end end function NewUI:spawn_item(section) if not section then return end if spawn_type == "alive" then return end if check_game() then alife():create(section, vector(),0,0,0) local snd = sound_object([[detectors\contact_1]]) snd:play(db.actor, 0, sound_object.s2d) end end function NewUI:spawn_item_dist(section, dist) if not section then return end if check_game() then local pos = db.actor:position() local dir = db.actor:direction() pos = pos:add(dir:mul(dist)) alife():create(section, pos, 1, db.actor:game_vertex_id()) local snd = sound_object([[detectors\contact_1]]) snd:play(db.actor, 0, sound_object.s2d) end end function NewUI:Hide() self:GetHolder():start_stop_menu(self.owner, true) self:GetHolder():start_stop_menu(self, true) self.owner:Show(true) end function NewUI:tolog(fmt,...) if alife()~=nil then local con = get_console() local msg = string.format(fmt,...) con:execute("load ~cheat~ "..msg) end end Все, разобрался) Ссылка на комментарий
mortan 143 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 @saymon6996,разобрались со спойлером или проблемой?) Ну елки,в коде не видно вашей функции,так что я могу только догадываться что вы еще добавили в него. Когда у вас вызывается функция - после нажатия кнопки или по мере ввода? Ссылка на комментарий
saymon6996 0 Опубликовано 21 Июля 2016 Поделиться Опубликовано 21 Июля 2016 @saymon6996,разобрались со спойлером или проблемой?) Ну елки,в коде не видно вашей функции,так что я могу только догадываться что вы еще добавили в него. Когда у вас вызывается функция - после нажатия кнопки или по мере ввода?Не знаю как так телефон мог скопировать, что именно середняя часть кода не отображается.Вообщем вот все, что касается этих функций: class "NewUI" (CUIScriptWnd) function NewUI:__init() super() self:InitControls() self:InitCallBacks() end function NewUI:__finalize() end function NewUI:InitControls() local xml = CScriptXmlInit() self:SetWndRect(Frect():set(0,0,1024,768)) xml:ParseFile("NewUI.xml") self.edit = xml:InitEditBox("edit", self) self:Register(xml:Init3tButton("button13", self), "spawn") end function NewUI:InitCallBacks() self:AddCallback("spawn", ui_events.BUTTON_CLICKED, self.btn_spawn_dist, self) end function NewUI:btn_spawn_dist() if self.List:GetSize()==0 then return end local index = self.List:GetSelectedItem() if index == -1 then return end local itm = self.List:GetItem(index) if itm == nil then return end local sect = itm.sct:GetText() !!!!------> тут, по идее, distance должно принимать значение из editbox'a local distance = self:edit_GetText() self:spawn_item_dist(sect, distance) ------------!!!! end function NewUI:edit_GetText() --это функция editbox'a return self.edit:GetText() end Добавлено Kirgudu, 22 Июля 2016 Пункт 2.6 правил форума, устное предупреждение.Рекомендую изучить правила цитирования Ссылка на комментарий
saymon6996 0 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 Не знаю как так телефон мог скопировать, что именно середняя часть кода не отображается. Вообщем вот все, что касается этих функций: class "NewUI" (CUIScriptWnd) function NewUI:__init() super() self:InitControls() self:InitCallBacks() end function NewUI:__finalize() end function NewUI:InitControls() local xml = CScriptXmlInit() self:SetWndRect(Frect():set(0,0,1024,768)) xml:ParseFile("NewUI.xml") self.edit = xml:InitEditBox("edit", self) self:Register(xml:Init3tButton("button13", self), "spawn") end function NewUI:InitCallBacks() self:AddCallback("spawn", ui_events.BUTTON_CLICKED, self.btn_spawn_dist, self) end function NewUI:btn_spawn_dist() if self.List:GetSize()==0 then return end local index = self.List:GetSelectedItem() if index == -1 then return end local itm = self.List:GetItem(index) if itm == nil then return end local sect = itm.sct:GetText() !!!!------> тут, по идее, distance должно принимать значение из editbox'a local distance = self:edit_GetText() self:spawn_item_dist(sect, distance) ------------!!!! end function NewUI:edit_GetText() --это функция editbox'a return self.edit:GetText() end Вот весь код: class "NewUI" (CUIScriptWnd) function NewUI:__init() super() self:InitControls() self:InitCallBacks() end function NewUI:__finalize() end function NewUI:InitControls() local xml = CScriptXmlInit() self:SetWndRect(Frect():set(0,0,1024,768)) xml:ParseFile("NewUI.xml") self.Static = xml:InitStatic("Static", self) xml:InitFrame("Static:List_frame", self.Static) self.List = xml:InitList("List", self) self.List:ShowSelectedItem(true) self:Register(self.List, "List") xml:InitFrame("Static:frame4", self.Static) self.label = xml:InitStatic("label", self) self.edit = xml:InitEditBox("edit", self) self.section_name = xml:InitStatic("section_name", self) self:Register(xml:Init3tButton("button1", self), "btn_mob") self:Register(xml:Init3tButton("button2", self), "btn_weapons") self:Register(xml:Init3tButton("button3", self), "btn_ammo") self:Register(xml:Init3tButton("button4", self), "btn_outf") self:Register(xml:Init3tButton("button5", self), "btn_stalkers") self:Register(xml:Init3tButton("button6", self), "btn_artefacts") self:Register(xml:Init3tButton("button7", self), "btn_items") self:Register(xml:Init3tButton("button8", self), "btn_addons") self:Register(xml:Init3tButton("button9", self), "btn_quest") self:Register(xml:Init3tButton("button10", self), "btn_unique") self:Register(xml:Init3tButton("btn_exit", self), "btn_exit") self:Register(xml:Init3tButton("button12", self), "actor_spawn") self:Register(xml:Init3tButton("button13", self), "spawn") end function NewUI:InitCallBacks() self:AddCallback("List", ui_events.LIST_ITEM_CLICKED, self.On_List_item_clicked, self) self:AddCallback("btn_mob", ui_events.BUTTON_CLICKED, self.btn_mob_button_clicked, self) self:AddCallback("btn_weapons", ui_events.BUTTON_CLICKED, self.btn_weapons_button_clicked, self) self:AddCallback("btn_ammo", ui_events.BUTTON_CLICKED, self.btn_ammo_button_clicked, self) self:AddCallback("btn_outf", ui_events.BUTTON_CLICKED, self.btn_outfits_button_clicked, self) self:AddCallback("btn_stalkers", ui_events.BUTTON_CLICKED, self.btn_stalkers_button_clicked, self) self:AddCallback("btn_artefacts", ui_events.BUTTON_CLICKED, self.btn_artefacts_button_clicked, self) self:AddCallback("btn_items", ui_events.BUTTON_CLICKED, self.btn_items_button_clicked, self) self:AddCallback("btn_addons", ui_events.BUTTON_CLICKED, self.btn_addons_button_clicked, self) self:AddCallback("btn_quest", ui_events.BUTTON_CLICKED, self.btn_quest_button_clicked, self) self:AddCallback("btn_unique", ui_events.BUTTON_CLICKED, self.btn_unique_button_clicked, self) self:AddCallback("btn_exit", ui_events.BUTTON_CLICKED, self.Hide, self) self:AddCallback("actor_spawn", ui_events.BUTTON_CLICKED, self.btn_spawn, self) self:AddCallback("spawn", ui_events.BUTTON_CLICKED, self.btn_spawn_dist, self) end ------------------- >>> Класс элемента списка List <<< ------------------- class "ListItem"(CUIListItemEx) function ListItem:__init() super() self.text_item = CUIStatic() self.text_item:SetAutoDelete(true) self:AttachChild (self.text_item) self.text_item:SetText ("name") self.text_item:SetFont (GetFontLetterica18Russian()) self.text_item:SetTextColor (255,216,186,140) self.sct = CUIStatic () self.sct:SetAutoDelete (true) self:AttachChild (self.sct) self.sct:SetWndRect (230,0,200,22) self.sct:SetText ("section") self.sct:SetFont (GetFontLetterica16Russian()) self.sct:SetTextColor (0,0,0,0) end ------------------- >>> END <<< ------------------- function NewUI:On_List_item_clicked() if self.List:GetSize()==0 then return end local itm_index = self.List:GetSelectedItem() if itm_index < 0 then return end local itm = self.List:GetItem(itm_index) if itm == nil then return end local sect = itm.sct:GetText() local sizes = self:give_icon_params(sect) local pw = (sizes.width/5)*4 local ph = (sizes.height/5)*4 local px = 690-(pw/2) local py = 450-(ph/2) if self.pict==nil then self.pict = CUIStatic() self.pict:SetWindowName("pict") self.pict:SetAutoDelete(true) self:AttachChild(self.pict) end if spawn_type == "alive" then self.section_name:SetText(sect) self.pict:Show(false) return end self.pict:Show(true) self.pict:InitTexture("ui\\ui_icon_equipment") self.pict:SetOriginalRect(sizes.x,sizes.y,sizes.width,sizes.height) self.pict:Init(px,py,pw,ph) self.pict:SetStretchTexture(true) self.section_name:SetText(sect) end function NewUI:give_icon_params(section) local t = {} t.width = self:read_if_exist("u32", section, "inv_grid_width", 1)*50 t.height = self:read_if_exist("u32", section, "inv_grid_height", 1)*50 t.x = self:read_if_exist("u32", section, "inv_grid_x", 8)*50 t.y = self:read_if_exist("u32", section, "inv_grid_y", 13)*50 return t end function NewUI:btn_mob_button_clicked() self.List:RemoveAll() spawn_type="alive" for i = 1, #mob_table do self:AddItemToList(mob_table) end end function NewUI:btn_weapons_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #wpn_table do self:AddItemToList(wpn_table) end end function NewUI:btn_ammo_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #ammo_table do self:AddItemToList(ammo_table) end end function NewUI:btn_outfits_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #outf_table do self:AddItemToList(outf_table) end end function NewUI:btn_stalkers_button_clicked() self.List:RemoveAll() spawn_type="alive" for i = 1, #stalkers_table do self:AddItemToList(stalkers_table) end end function NewUI:btn_artefacts_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #artefacts_table do self:AddItemToList(artefacts_table) end end function NewUI:btn_items_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #items_table do self:AddItemToList(items_table) end end function NewUI:btn_addons_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #addons_table do self:AddItemToList(addons_table) end end function NewUI:btn_quest_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #quest_table do self:AddItemToList(quest_table) end end function NewUI:btn_unique_button_clicked() self.List:RemoveAll() spawn_type="actor" for i = 1, #unique_table do self:AddItemToList(unique_table) end end function NewUI:btn_spawn() if self.List:GetSize()==0 then return end local index = self.List:GetSelectedItem() if index == -1 then return end local itm = self.List:GetItem(index) if itm == nil then return end local sect = itm.sct:GetText() self:spawn_item(sect) end function NewUI:btn_spawn_dist() if self.List:GetSize()==0 then return end local index = self.List:GetSelectedItem() if index == -1 then return end local itm = self.List:GetItem(index) if itm == nil then return end local sect = itm.sct:GetText() local distance = self:edit_GetText() self:spawn_item_dist(sect, distance) end function NewUI:edit_GetText() --/получить введенную дистанцию из edit return self.edit:GetText() end function NewUI:AddItemToList(sect) --/Добавление элемента в список List if spawn_type == "alive" then local item_name = game.translate_string(self:read_if_exist("str", sect, "id", sect)) if string.len(item_name)>50 then item_name = string.sub(item_name,1,50).."..." end local _itm = ListItem() _itm.text_item:SetText(item_name) _itm.sct:SetText(sect) self.List:AddItem(_itm) else if self:check_item(sect) == false then return end local item_name = game.translate_string(self:read_if_exist("str", sect, "inv_name", sect)) if string.len(item_name)>50 then item_name = string.sub(item_name,1,50).."..." end local _itm = ListItem() _itm.text_item:SetText(item_name) _itm.sct:SetText(sect) self.List:AddItem(_itm) end end function check_game() return alife()~=nil and db.actor and db.actor:alive() end function NewUI:read_if_exist(what, section, line, def, ini) if not ini then ini = system_ini() end if section and ini:section_exist(section) and ini:line_exist(section,line) then if what == "flt" then return ini:r_float(section,line) elseif what == "u32" then return ini:r_u32(section,line) elseif what == "str" then return ini:r_string(section,line) elseif what == "bln" then return ini:r_bool(section,line) end end return def end function NewUI:check_item(section) if system_ini():section_exist(section) then if self:read_if_exist("bln", section, "can_take", true)==true and self:read_if_exist("str", section, "class", nil)~=nil and self:read_if_exist("str", section, "description", nil)~=nil and self:read_if_exist("str", section, "inv_name", nil)~=nil and self:read_if_exist("str", section, "visual", nil)~=nil then return true else self:tolog("ERROR! Incorrect section for spawn [%s]",section) return false end else self:tolog("ERROR! Section not found: [%s]",section) return false end end function NewUI:spawn_item(section) if not section then return end if spawn_type == "alive" then return end if check_game() then alife():create(section, vector(),0,0,0) local snd = sound_object([[detectors\contact_1]]) snd:play(db.actor, 0, sound_object.s2d) end end function NewUI:spawn_item_dist(section, dist) if not section then return end if check_game() then local pos = db.actor:position() local dir = db.actor:direction() pos = pos:add(dir:mul(dist)) alife():create(section, pos, 1, db.actor:game_vertex_id()) local snd = sound_object([[detectors\contact_1]]) snd:play(db.actor, 0, sound_object.s2d) end end function NewUI:Hide() self:GetHolder():start_stop_menu(self.owner, true) self:GetHolder():start_stop_menu(self, true) self.owner:Show(true) end function NewUI:tolog(fmt,...) if alife()~=nil then local con = get_console() local msg = string.format(fmt,...) con:execute("load ~cheat~ "..msg) end end Добавлено Kirgudu, 22 Июля 2016 Пункт 2.6 правил форума, рецидив, сутки чтения. Ссылка на комментарий
mortan 143 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 @saymon6996, читай лс, не будем засорять тему. Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 (изменено) Добрый день. Есть у меня файл item.ltx. В нем есть секция: [New_eat]:bread. В секции есть значение item_create = перечисление, любых_секций, например, bread. Так же есть скрипт. И в нем пустая таблица. Допустим local item_tbl = {} Как мне заполнять эту таблицу значениями из item_create? Изменено 22 Июля 2016 пользователем Kober(BRUC) Ссылка на комментарий
Kondr48 314 Опубликовано 22 Июля 2016 Поделиться Опубликовано 22 Июля 2016 upgrades_string = ini:r_string(destr_item:section(), "upgrades") tab_u = string.split(upgrades_string, 1, ",") tab_u - нужная таблица. В _g.script добавить: --[[ Функция разделения строки. Авторы: Gun12, Garry_Galler, Artos --]] string.split = function(str, mode, div, pattern) local tbl = {} if div then pattern = '%s*([^'..div..']+)%s*' elseif not pattern then pattern = '[%w%_]+' end if mode == nil then for str_parse in str:gmatch(pattern) do table.insert(tbl, str_parse) end elseif mode == true then for str_parse in str:gmatch(pattern) do tbl[str_parse] = true end elseif type(mode) == "number" then for str_parse in str:gmatch(pattern) do tbl[#tbl+1] = tonumber(str_parse) or str_parse end end return tbl end Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 Наткнулся на интересную штучку в секции [spawner] [spawner] cond = never (Была у БТР в Припяти, хотя я там вообще БТР в оригинале не припомню... В xr_spawner.script такого условия "never" нет... Выходит её теоретическое значение : когда спавнить - НИКОГДА!!11 ? А зачем она тогда?) Не соответствует правилам. Ссылка на комментарий
UnLoaded 313 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 хотя я там вообще БТР в оригинале не припомню... Может потому и нет его в оригинале, что "never" ? Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 (изменено) Может потому и нет его в оригинале, что "never" ? А описание скриптовое этого never где? А? P.S Условие спавна - "никогда" сводит на нет весь сокральный смысл секции спавна БТР, ведь описание всех его параметров просто не нужно в итоге, ведь "never-never" не будет использовано.... Изменено 23 Июля 2016 пользователем CRAZY_STALKER666 Не соответствует правилам. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 23 Июля 2016 Поделиться Опубликовано 23 Июля 2016 И при чем здесь xr_spawner ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти