saymon6996 0 Опубликовано 21 Июля 2016 Всем привет. Нужна помощь по функциям. Есть код: function blabla() local number = self:edit_GetText() end function edit_GetText() return self.edit:GetText() end edit_gettext это функция editbox. В editbox мы должны ввести число которое после должно записатся в переменную number, но оно не записывается. В чем же может быть проблема?? Поделиться этим сообщением Ссылка на сообщение
saymon6996 0 Опубликовано 21 Июля 2016 Это ТЧ или ЗП?Это ТЧ Поделиться этим сообщением Ссылка на сообщение
saymon6996 0 Опубликовано 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 Все, разобрался) Поделиться этим сообщением Ссылка на сообщение
saymon6996 0 Опубликовано 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 Поделиться этим сообщением Ссылка на сообщение
saymon6996 0 Опубликовано 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 Поделиться этим сообщением Ссылка на сообщение