Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Всем привет. Нужна помощь по функциям.

Есть код:

function blabla()

local number = self:edit_GetText()

end

function edit_GetText()

return self.edit:GetText()

end

edit_gettext это функция editbox. В editbox мы должны ввести число которое после должно записатся в переменную number, но оно не записывается. В чем же может быть проблема??

Поделиться этим сообщением


Ссылка на сообщение

@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,разобрались со спойлером или проблемой?) Ну елки,в коде не видно вашей функции,так что я могу только догадываться что вы еще добавили в него. Когда у вас вызывается функция - после нажатия кнопки или по мере ввода?

Не знаю как так телефон мог скопировать, что именно середняя часть кода не отображается.

Вообщем вот все, что касается этих функций:

 

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.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

 

 

 

 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...