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

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


Svoboда

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

Это я только здесь пропустил, в скрипт-файле END имеется, но вылет остаётся. Что такое?

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


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

Подскажите, в каком файле находится логика Семёнова\Круглова с Янтаря.

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


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

Такой вопрос. Допустим у игрока в руках в данный момент оружие из 3-го слота. Как скриптом сменить на 2-й? Или если в руках ничего нет, то 2-й.

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


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

Актёру присвоено

ar_sleep.set_scheme(db.actor, sleep_ltx, "ar_sleep", logic)

Как сделать проверку, что это действительно так?

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


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

Такая проблема. Использую метод "db.actor:activate_slot(1)". Но он действует только в случае, если у игрока в момент активации никакой слот вообще не активен. Если какой-то активен - действие не срабатывает. Как исправить?

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


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

Disord,

не помогает.

db.actor:hide_weapon() делает полностью недоступными все слоты, пока не будет отменён. если сделать так:

db.actor:hide_weapon()

db.actor:activate_slot(1)

db.actor:restore_weapon()

то в итоге активируется слот, который был изначально.

 

Добавлено через 25 мин.:

Ещё вопрос к предыдущему.

Есть таблица "{a,b,c}". Как скриптом проверить, равно ли значение X хотя бы одному значению из таблицы.

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


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

Можно сменить игроку группировку на "с тем же названием и изменёнными отношениями".

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


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

Ребята, помогите. Целый день маюсь - безуспешно. Вот:

 

-- инициализация
class "ms" (CUIScriptWnd)

function ms:__init(owner,action) super()
    self.action = action
    self.owner = owner
    self:InitControls()
    self:InitCallBacks()
end

function ms:__finalize() end

function ms:InitControls()
    -- здесь определяем координаты левого верхнего угла и ширину-высоту
    self:Init(50,50,550,450)

    -- файл-описатель наших элементов
    local xml = CScriptXmlInit()
    xml:ParseFile("ui_ms.xml")

    -- видео на заднем плане
    xml:InitStatic("back_video", self)

    -- рамка
    xml:InitStatic("background", self)

    self:Register(xml:Init3tButton("caption", self),"caption")
    self:Register(xml:Init3tButton("caption1", self),"caption1")
    self:Register(xml:Init3tButton("btn_quit", self),"btn_quit")
    
    self.btn_1 = xml:Init3tButton("btn_1", self)
    self:Register(self.btn_1, "btn_1")    
    self.btn_2 = xml:Init3tButton("btn_2", self)
    self:Register(self.btn_2, "btn_2")    
    self.btn_3 = xml:Init3tButton("btn_3", self)
    self:Register(self.btn_3, "btn_3")    
    self.btn_4 = xml:Init3tButton("btn_4", self)
    self:Register(self.btn_4, "btn_4")

end

function ms:InitCallBacks()
    -- тут интерактивные элементы, при определенном действии выполняется заданная ф-ия
    self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self)
  self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.btn_1, self)
  self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.btn_2, self)
  self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.btn_3, self)
  self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.btn_4, self)
end

function ms:OnKeyboard(dik, keyboard_action)
    CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
-- на выход повесим Esc
        if dik == DIK_keys.DIK_ESCAPE then
            self:on_quit()
        end
    end
    return true
end

function ms:on_quit()
    self:GetHolder():start_stop_menu (self,true)
end

function ms:btn_1()
  self.btn_1:Show(false)
end
function ms:btn_2()
end
function ms:btn_3()
end
function ms:btn_4()
end

 

 

Вылетает при попытке клика по BTN_1 с логом типа "нулевое значение 'btn_1'". В чём проблема?

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


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

Переделал всё так:

-- инициализация
class "ms" (CUIScriptWnd)

function ms:__init(owner,action) super()
    self.action = action
    self.owner = owner
    self:InitControls()
    self:InitCallBacks()
end

function ms:__finalize() end

function ms:InitControls()
    -- здесь определяем координаты левого верхнего угла и ширину-высоту
    self:Init(50,50,550,450)

    -- файл-описатель наших элементов
    local xml = CScriptXmlInit()
    xml:ParseFile("ui_ms.xml")

    -- видео на заднем плане
    xml:InitStatic("back_video", self)

    -- рамка
    xml:InitStatic("background", self)

    self:Register(xml:Init3tButton("caption", self),"caption")
    self:Register(xml:Init3tButton("caption1", self),"caption1")
    self:Register(xml:Init3tButton("btn_quit", self),"btn_quit")
    
    self:Register(xml:Init3tButton("btn_1", self),"btn_1")
    self:Register(xml:Init3tButton("btn_2", self),"btn_2")
    self:Register(xml:Init3tButton("btn_3", self),"btn_3")
    self:Register(xml:Init3tButton("btn_4", self),"btn_4")
    
end

function ms:InitCallBacks()
    -- тут интерактивные элементы, при определенном действии выполняется заданная ф-ия
    self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self)
  self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.btn_1, self)
  self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.btn_2, self)
self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.btn_3, self)
self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.btn_4, self)
end

function ms:OnKeyboard(dik, keyboard_action)
    CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
-- на выход повесим Esc
        if dik == DIK_keys.DIK_ESCAPE then
            self:on_quit()
        end
    end
    return true
end

function ms:on_quit()
    self:GetHolder():start_stop_menu (self,true)
end

function ms:btn_1()
  self.btn_1:Show(false)
end
function ms:btn_2()
end
function ms:btn_3()
end
function ms:btn_4()
end

 

 

Теперь вылетает с логом при попытке клика по первой кнопке:

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...\games\s.t.a.l.k.e.r.-1-1\gamedata\scripts\ms.script:72: attempt to index field 'btn_1' (a function value)

 

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


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

Как можно скриптом проверить, является ли значение переменной "num" числом?

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


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

Помогите написать скрипт:

Если NPC с сидом 1 враг игроку, то npc удаляется.

 

Добавлено через 179 мин.:

Что не так в этом скрипте?

 

function director_war()

local npc = level_object_by_sid(8800)

local npc_position = npc:position()

local npc_game_vertex = npc:game_vertex_id()

local npc_level_vertex = npc:level_vertex_id()

if amk.get_npc_relation(npc,db.actor)=="enemy" then

alife():release(alife():object(npc:id()), true)

alife():create("m_controller_old",npc_position,npc_level_vertex,npc_game_vertex,65535)

end

end

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


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

При попытке вызова:

 

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ....l.k.e.r.-1-1\gamedata\scripts\test.script:13: attempt to index local 'obj' (a nil value)

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

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


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

13 строка = local sect = obj:section()

В слоте был артефакт (у меня есть активация артефактов).

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


Ссылка на сообщение
for i = 0, 65534 do
local sobj = alife():object(i)
  if sobj then
    if my_script.IsAnoArt(sobj) then

 

Есть такой кусок кода. Помогите написать скрипт "IsAnoArt" (на который указана ссылка в коде), который возвращал бы true, если sobj - это артефакт или аномалия.

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


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

for i = 0, 65534 do

local sobj = alife():object(i)

 

Как определить название секции объекта "sobj"?

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


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

Есть таблица:

local can_upgrade_table = {"stalker_outfit", "wpn_ak74"}

 

Как скриптом, находящимся в этом же файле, проверить: равно ли значение переменной "NUM" хотя бы одному из значений таблицы?

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


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

Ещё такой вопрос. С помощью

    btn_1:SetWidth(10)

мы можем изменить ширину кнопки. А как по аналогии изменить координату X ?

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


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

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