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

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


Svoboда

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

(изменено)

Возник вопрос по логике: что нужно прописать в логике сталкера, чтобы при его обыске выдавался инфопоршейн?

 

Сообщение от модератора ColR_iT
Если бы заглянул в шапку темы, то мог бы увидеть ссылки на статьи по логике, в которых расписаны практически все секции логики, но ты этого не сделал, а очень жаль! ColR_iT
Изменено пользователем ColR_iT
Заглядывайте в шапку хоть иногда.

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


Ссылка на сообщение
(изменено)

Вопрос по логике (ЗП)

Что нужно прописать чтобы сталкер был главным в отряде?

 

Командир отряда НЕ назначается, им автоматически становится первый, что был 'принят' в отряд (при спавне).

Пока командир не погибнет или не будет исключен из отряда - никакой демократии!

--/ Artos

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

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


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

Пишу скрипт, чтобы воспроизводился постэффект при падении выносливости, что нужно написать вместо health, чтобы прощитывалась выносливость?

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


Ссылка на сообщение
(изменено)

Пытался написать скрипт, чтобы антирадар можно было использовать только в том случае если есть определённый предмет, только вот незнаю что написать вместо этого: --можно использовать антирадар-- Если кто знает очень прошу помощи.

function use_antirad()
    if not db.actor:object("predmet") then
        this.spayn_item("antirad")
        news_manager.send_tip(db.actor, game.translate_string("st_antirad_no_predmet"))
        if db.actor:object("predmet") then
            --можно использовать антирадар--
        end
    end
end

Изменено пользователем ColR_iT
Пользуемся тегами!

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


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

Вопрос: ЗП 1.6.00

Написал скрипт, чтобы по истечению времени из инветаря удалялись одни предметы и спавнились другие вот код:

 

 

local food = {
       bread       = true,
       kolbasa    = true,
}

local interval = 0

function porsha_food()
   if interval < time_global() then
   local time = game.time() + 300
      for i=1, 300 do
      if game.time() == time then
        db.actor:iterate_inventory(function (dummy,item)  
           if food[item:section()] then
              this.del_item(item)
              this.spawn_item(tostring(item:section().."_propal"))
           end
         end, nil)
      interval = time_global() + 1000
    end
 end
end

 

Акривировал так:

 

function actor_binder:update(delta)
dfz_porsha_food.porsha_food()
    object_binder.update(self, delta)

 

Но произошёл вылет с таким логом:

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : d:\stalker cop\gamedata\scripts\bind_stalker.script:231: attempt to index global 'dfz_porsha_food' (a nil value)

 

Помогите исправить?

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


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

Vano_Santuri,

 

Исправил но вылетать продолжает.

Вылет во время загрузки.

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : d:\stalker cop\gamedata\scripts\bind_stalker.script:231: attempt to index global 'dfz_porsha_food' (a nil value)

 

 

stack trace:

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


Ссылка на сообщение
(изменено)

Возник вопрос: (ЗП 1.6.00)

Поставил на функцию спавна цикл, но тот действует только один раз, а должен 15, можете подсказать, в чём ошибка?

function spawn_item(spawn_item, npc)
  for i=1, 15 do
    if npc==nil then
      npc=db.actor 
    end
    return alife():create( items[math.random(#items)],
      npc:position(),
      npc:level_vertex_id(),  
      npc:game_vertex_id(),
      npc:id())
  end
end

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

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


Ссылка на сообщение
Видимо выше в скрипте есть таблица items

Совершенно верно, вверху таблица items просто я не стал её писать, так как ошибки в ней нет, ошибка в цикле.

Vano_Santuri

Да мне нужна была функция рандомного спавна 15 предметов, то есть чтобы из таблицы рандомно ГГ спавнились 15 разных предметов.

Спасибо за помощь!

 

 

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

Vano_Santuri

Кстати заметил ошибку во 2 версии представленного тобой скрипта.

 

Там нужно сделать так:

function spawn_item(SpItem, npc)

А если без SpItem тогда вылет.

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


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

Такой вопрос:

 

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

 

function use_antirad()                                                                                               
if not db.actor:object("zgyt") then                                                                                
spawn_to_inventar("antirad")                                                                                      
news_manager.send_tip(db.actor, game.translate_string("У_вас_нет_жгута."))             
elseif db.actor:object("zgyt") then                                                                                
spawn_to_inventar("antirad_norm")                                                                              
del_zgyt()                                                                                                                                                                
db.actor:eat(db.actor:object("antirad_norm"))
end
end


-- Функция спавна в инвентарь.
function spawn_to_inventar(spawn_item, npc)
  if npc==nil then 
    npc=db.actor 
  end
  return alife():create(spawn_item, 
      npc:position(),
      npc:level_vertex_id(),  
      npc:game_vertex_id(),
      npc:id())
end

-- Функция удаления.
function del_zgyt()
local oItem = db.actor:object("zgyt")
if oItem then
db.actor:drop_item(oItem)
alife():release(alife():object(oItem:id()), true)
end
end

 

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


Ссылка на сообщение
(изменено)

Здравствуйте, возник такой вопрос: (ЗП)

Я с помощью такой функции:

local snd = sound_object([[interface\inv_fill_pistol]])
snd:play_no_feedback(db.actor,sound_object.s2d, 0, vector():set(0, 0, 0), 2.0)

воспроизвел звук, можно ли как-то сделать проверку, воспроизводится ли он или нет?

 

Поднимаем глаза и смотрим в пост выше.

И уточни вопрос: для себя, так сказать, чтобы знать или в последующем использовать проверку в качестве условия?

ColR_iT

 

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

ColR_iT,

Смотрел пост, он мне не помог, так как мне необходимо использовать проверку в качестве условия.

 

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

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


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

Здравствуйте! Пожалуйста, помогите разобраться с вылетом:

 

function object_eat(obj)
    local sect = obj:section()
if db.actor:has_info("wpn_porshein") then
    db.actor:disable_info_portion("wpn_porshein")
iTimer = nil
                db.actor:restore_weapon()
end
if  sect == "medkit" or sect == "medkit_army" or sect == "medkit_scientic" then
                db.actor:hide_weapon()
random_time()
end
end  
          
function random_time()
      local random_table_function = math.random(1,5)
if random_table_function == 1 then
      function_start_1()
end

if random_table_function == 2 then
      function_start_2() 
end

if random_table_function == 3 then
      function_start_3() 
end

if random_table_function == 4 then
      function_start_4() 
end

if random_table_function == 5 then
      function_start_5() 
end

function function_start_1() 
  iTimer = time_global() + 5*1000
  db.actor:give_info_portion("wpn_porshein")
end

function function_start_2() 
  iTimer = time_global() + 7*1000
  db.actor:give_info_portion("wpn_porshein")
end

function function_start_3() 
  iTimer = time_global() + 9*1000
  db.actor:give_info_portion("wpn_porshein")
end

function function_start_4() 
  iTimer = time_global() + 11*1000
  db.actor:give_info_portion("wpn_porshein")
end

function function_start_5() 
  iTimer = time_global() + 13*1000
  db.actor:give_info_portion("wpn_porshein")
end
end 

function Timer_N_minutes()
  if iTimer and iTimer < time_global() then 
    iTimer = nil 
    db.actor:disable_info_portion("wpn_porshein")
db.actor:restore_weapon()
  end
end

 

 

FATAL ERROR

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : d:\stalker cop\gamedata\scripts\builds_activ.script:34: attempt to call global 'function_start_5' (a nil value)


stack trace:

 

 

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


Ссылка на сообщение
(изменено)
оружие не берется в руки
Вообще не берётся или через несколько сек? Изменено пользователем Tris

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


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

Artos, по порядку:

Сохраняют/запоминают или значение или имя или и то и другое. О чем ты спрашиваешь?

Сохранить значение. В моем случае, например число 90.

 

"Сохранить" куда?

Я думаю лучше будет сохранить в отдельный файл(скрипт) чтобы потом можно было считать необходимую переменную.

 

Приведу свой код:

damage = 100
local table_utterances = {"У вас нет консервы.","У вас нет не одной консервы.","У вас отсутствуют консервы.","Нечего открывать."}

function use_knife()
if damage == 0 then
create_item_in_inv("knife_broken")
broken_knife() --\\ это вывод сообщения он не важен.
return
end
if db.actor:object("conserva") then
remove_item_in_inv(db.actor,("conserva"))
create_item_in_inv("conserva_o")
create_item_in_inv("knife")
if proverka_sharpening_to_zero() == false then
damage = damage - 10
end
damage_knife() --\\ Состояние Ножа.
else
create_item_in_inv("knife")
news_manager.send_tip(db.actor, game.translate_string(table_utterances[math.random(#table_utterances)]))
end
end

 

 

После использования ножа его состояние уменьшается от 100 до 90. Всё отлично, но после перезагрузки глобальная переменная сбивается, и поэтому у меня возникла необходимость сохранить ее, чтобы после очередной перезагрузке игры, нож имел состояние, которое было до перезагрузки.

 

P.S. Вопрос тесно связан с игрой, поэтому решил писать сюда.

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


Ссылка на сообщение
(изменено)

Добрый вечер! Подскажите пожалуйста как исправить данную ошибку?

FATAL ERROR

[error]Expression    : assertion failed
[error]Function      : CUIXmlInit::InitText
[error]File          : D:\prog_repository\sources\trunk\xrGame\ui\UIXmlInit.cpp
[error]Line          : 315
[error]Description   : pTmpFont


stack trace:

 

class "selection_of_groups_ui" (CUIScriptWnd)

function selection_of_groups_ui:__init() super()
    self:InitControls()
    self:InitCallBacks()
end

function selection_of_groups_ui:__finalize() 
end

function selection_of_groups_ui:InitControls()
    self:SetWndRect(Frect():set(50,50,1024,768))

    local xml = CScriptXmlInit()
    xml:ParseFile("selection_of_groups_ui.xml")

    self:Register(xml:Init3tButton("caption", self),"caption")
    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 selection_of_groups_ui:InitCallBacks()
    self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.function_ui_1, self)
    self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.function_ui_2, self)
    self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.function_ui_3, self)
    self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.function_ui_4, self)
end

function selection_of_groups_ui:function_ui_1()
     if db.actor:character_community() ~= "(stalker)" then
db.actor:set_character_community("stalker", 0, 0)
end
end

function selection_of_groups_ui:function_ui_2()
       if db.actor:character_community() ~= "(bandit)" then
db.actor:set_character_community("bandit", 0, 0)
end
end

function selection_of_groups_ui:function_ui_3()
      if db.actor:character_community() ~= "(dolg)" then
db.actor:set_character_community("dolg", 0, 0)
end
end

function selection_of_groups_ui:function_ui_4()
       if db.actor:character_community() ~= "(freedom)" then
db.actor:set_character_community("freedom", 0, 0)
end
end

 

Без указания версии игры и используемого шаблона selection_of_groups_ui.xml гадай самостоятельно или на пару с кашнировским. --/Artos

[x]

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

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


Ссылка на сообщение
(изменено)

selection_of_groups_ui.XML

<?xml version="1.0" encoding="windows-1251" ?>

<main>
    <background x="0" y="0" width="400" height="340" stretch="1">
        <texture x="0" y="0" width="350" height="460">ui\ui_actor_sleep_screen</texture>
    </background>

    <caption x="175" y="30" width="50" height="35">
        <text>Выберете группировку:</text>
    </caption>

    <btn_1 x="72" y="80" width="256" height="35">
    <texture_e>ui\ui_btn_mm_e</texture_e>
    <texture_t>ui\ui_btn_mm_t</texture_t>
    <texture_h>ui\ui_btn_mm_h</texture_h>
        <text>"Нейтралы"</text>
    </btn_1>

    <btn_2 x="72" y="130" width="256" height="35">
    <texture_e>ui\ui_btn_mm_e</texture_e>
    <texture_t>ui\ui_btn_mm_t</texture_t>
    <texture_h>ui\ui_btn_mm_h</texture_h>
        <text>"Бандиты"</text>
    </btn_2>

    <btn_3 x="72" y="180" width="256" height="35">
    <texture_e>ui\ui_btn_mm_e</texture_e>
    <texture_t>ui\ui_btn_mm_t</texture_t>
    <texture_h>ui\ui_btn_mm_h</texture_h>
        <text>"Долг"</text>
    </btn_3>

    <btn_4 x="72" y="230" width="256" height="35">
    <texture_e>ui\ui_btn_mm_e</texture_e>
    <texture_t>ui\ui_btn_mm_t</texture_t>
    <texture_h>ui\ui_btn_mm_h</texture_h>
        <text>"Свобода"</text>
    </btn_4>
    
</main>

selection_of_groups_ui_mod.sctipt

class "selection_of_groups_ui" (CUIScriptWnd)

function selection_of_groups_ui:__init() super()
    self:InitControls()
    self:InitCallBacks()
end

function selection_of_groups_ui:__finalize() 
end

function selection_of_groups_ui:InitControls()
    self:SetWndRect(Frect():set(50,50,1024,768))

    local xml = CScriptXmlInit()
    xml:ParseFile("selection_of_groups_ui.xml")

    xml:InitStatic("background", self) -- рамка сзади

    self:Register(xml:Init3tButton("caption", self),"caption")
    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 selection_of_groups_ui:InitCallBacks()
    self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.function_ui_1, self)
    self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.function_ui_2, self)
    self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.function_ui_3, self)
    self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.function_ui_4, self)
end

function selection_of_groups_ui:function_ui_1()
     if db.actor:character_community() ~= "(stalker)" then
db.actor:set_character_community("stalker", 0, 0)
end
end

function selection_of_groups_ui:function_ui_2()
       if db.actor:character_community() ~= "(bandit)" then
db.actor:set_character_community("bandit", 0, 0)
end
end

function selection_of_groups_ui:function_ui_3()
      if db.actor:character_community() ~= "(dolg)" then
db.actor:set_character_community("dolg", 0, 0)
end
end

function selection_of_groups_ui:function_ui_4()
       if db.actor:character_community() ~= "(freedom)" then
db.actor:set_character_community("freedom", 0, 0)
end
end

FATAL ERROR

[error]Expression    : assertion failed
[error]Function      : CUIXmlInit::InitText
[error]File          : D:\prog_repository\sources\trunk\xrGame\ui\UIXmlInit.cpp
[error]Line          : 315
[error]Description   : pTmpFont


stack trace:

 

Версия игры ЗП 1.6.00.

Изменено пользователем ColR_iT
Пишем покомпактнее, пожалуйста.

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


Ссылка на сообщение
(изменено)

Artos

Вызывал так:

function actor_binder:net_spawn(data)
selection_of_groups_ui_mod.get_hud_mod()

selection_of_groups_ui_mod:

function get_hud_mod()
if db.actor:alive() then 
groups_ui = this.selection_of_groups_ui()
groups_ui:ShowDialog(true)
end
end

 

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

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


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

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

AMK-Team.ru

×
×
  • Создать...