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

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

Я, мб, чего-то не понял об оконных классах?

 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"])) 
Ссылка на комментарий

@Kondr48, вопрос совершенно некорректный. Никто по этим обрывкам не сможет понять что ты делаешь, можно только гадать. Моя кофейная гуща говорит о том, что твоя таблица к моменту вызова типса уже вне зоны видимости, если вообще не уничтожена. Объяви ее в самом начале модуля вот так:

local mechanic_info = {}

Если вызов типса в этом же модуле, и вот так:

mechanic_info = {}

Если в ином, но в таком случае вызывать ее нужно module.mechanic_info, почему? Недавно я как-раз рассказывал про видимость переменных, рекомендую прочесть, там же я давал ссылки на главы по окружению из официального мануала.

  • Спасибо 1
Ссылка на комментарий

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

Есть код:

function blabla()

local number = self:edit_GetText()

end

function edit_GetText()

return self.edit:GetText()

end

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

Ссылка на комментарий
@naxac, я сначала делал так, но значение меняется жутко медленно, поэтому перешёл на trackbar и прикрутил вывод тек. значения рядом. Изменено пользователем Kirgudu
Ссылка на комментарий

Такая проблема. Использую модифицированную ph_car от lscon.

Вот в чем проблема. Перевел функцию на новое хранилище обьектов, И так, переписал функцию.

 

 

function action_car:update_friends_and_target()
self.friends = {}
local obj

for k,v in pairs(db.btr_target) do
obj=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()) ) and
self.fire_range_sqr>self.object:position():distance_to_sqr(obj:position()) then
self.friends[k] = obj:section()
end
end

if self.st.fire_target == "monsters" then
-- враги монстры, значит друзья все сталкеры и выбираем ближайшего монстра в качестве цели
local dist = 0
local nearest = 100000
local nearest_limit = 25 -- но не ближе 5 м, иначе БТР сам себе мешает стрелять
local target = nil

for id,obj in pairs(db.btr_target) do
if obj:alive() then
dist = self.object:position():distance_to_sqr(obj:position())
if dist < self.fire_range_sqr then
if 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 = dist
target = obj
end
end
end
end

if target then
self.target_obj = target
self.state_firetarget = state_firetarget_enemy
else
self.target_obj = nil
self.state_firetarget = state_none
end
end
end

 

 

Теперь данные берем из db.btr_target. Там, вроде бы, храниться то, что нужно.

Вот инициализация хранилища:

 

 


function add_obj( obj )
if IsStalker(obj) then
creature[obj:id()] = true
elseif IsMonster(obj) then
creature[obj:id()] = false
end

if IsMonster(obj) then
monster_stock[obj:id()] = obj
end

if IsStalker(obj) and IsMonster(obj) then
btr_target[obj:id()] = true
end
end

function del_obj( obj )
storage [obj:id()] = nil
if IsStalker(obj) or IsMonster(obj) then
creature[obj:id()] = nil
end
if IsMonster(obj) then
monster_stock[obj:id()] = nil
end

if IsStalker(obj) and IsMonster(obj) then
btr_target[obj:id()] = nil
end
end

 

 

Итого - ничего. Если выставить db.creature - вылет со ссылкой на obj(мол boolean value). Если db.storage - вылет со ссылкой на метод alive(), мол его к obj применить нельзя...

Вроде все должно работать, в остальных частях схемы(логика БТР) проблем нет, брал прямо из ОП-2.

 

Кто-то скажет скопировать оригинальный btrs_friends = {}, еще раз говорю - на счет друзей БТР фишка не особо нужна. Тем более проверка на группировки и прочее уже вшита в функцию.

 

Жду вашей помощи...

Изменено пользователем CRAZY_STALKER666

Не соответствует правилам.

Ссылка на комментарий

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

Есть код:

function blabla()

local number = self:edit_GetText()

end

function edit_GetText()

return self.edit:GetText()

end

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

Это ТЧ или ЗП?

Ссылка на комментарий

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

Изменено пользователем mortan
Ссылка на комментарий

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

@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,

Пункт 2.6 правил форума, устное предупреждение.
Рекомендую изучить правила цитирования

Ссылка на комментарий

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

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

 

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,

Пункт 2.6 правил форума, рецидив, сутки чтения.

Ссылка на комментарий

Добрый день. Есть у меня файл item.ltx. В нем есть секция: [New_eat]:bread. В секции есть значение item_create = перечисление, любых_секций, например, bread.

Так же есть скрипт. И в нем пустая таблица. Допустим local item_tbl = {}

 

Как мне заполнять эту таблицу значениями из item_create?

Изменено пользователем Kober(BRUC)
Ссылка на комментарий
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
Ссылка на комментарий

Наткнулся на интересную штучку в секции [spawner]

 

 

[spawner]

cond = never

(Была у БТР в Припяти, хотя я там вообще БТР в оригинале не припомню...

 

В xr_spawner.script такого условия "never" нет...

Выходит её теоретическое значение : когда спавнить - НИКОГДА!!11 ? :D

А зачем она тогда?)

Не соответствует правилам.

Ссылка на комментарий
Может потому и нет его в оригинале, что "never" ?

 

А описание скриптовое этого never где? А?

 

P.S Условие спавна - "никогда" сводит на нет весь сокральный смысл секции спавна БТР, ведь описание всех его параметров просто не нужно в итоге, ведь "never-never" не будет использовано....

Изменено пользователем CRAZY_STALKER666

Не соответствует правилам.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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