Перейти к содержанию

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

 
 

Добро. Столкнулся с проблемой: игра почему-то делает лидером отряда не лидера отряда, есть какой-то способ принудительно сделать кого-то лидером, если в секции сквада он и так на первом месте стоит? Метка ставится на другого нпс в скваде временами.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую! Делаю GUI и хочу что бы после нажатия на кнопку открывалась новая гуи и там был таймер и по его окончанию закрывалась гуишка. Вызываю так

function run_gui(gui, close_inv)
if close_inv == true then
gui:ShowDialog(true)
game_hide_menu()
level.show_weapon(false)
else gui:ShowDialog(true)
end
end

Делаю таймер так

function action_timer() КОД_ПО_ОКОНЧАНИЮ end   function start_timer() local iTimer = time_global() + 10000   -- функция ожидания истечения таймера local function check_timer() return time_global() > iTimer end   -- ставим её на апдейт level.add_call(check_timer, action_timer) end

Делал такое в тч, но в зп эти функции вырезаны

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol в зп level.add_call не вырезан


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Хм, а как выключить гуишку через таймер. использовал self:HideDialog() и ловил вылит.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paracetamol можно попробовать в том же скрипте окна при открытии задать время, и в update его проверять, а не таймер ставить

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

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

Привет всем. Проблема: после перезагрузки, во время того как нпс перебегает с вей поинта на другой, он сначала возвращается на старый и потом снова бежит на другой. Как исправить данное недоразумение? 

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 19.11.2021 в 03:33, vader_33 сказал:

Paradox27kms local comm = db.actor:character_community() , прописаны ли они в текстовых файлах, чтобы получать текст через  game.translate_string(comm) - не проверял. Можно будет самому текст добавить или составить табличку группировка = название

Приветствую. Получилось так...надпись на скрине выше...нужно сделать чтобы отображалось по человечески например так: Группировка:Вольный сталкер. Вот скрипт

Спойлер

function ui_mm_mod:show_community()
        local comm = db.actor:character_community()
    self.cap_actor_community:TextControl():SetText(game.translate_string("ui_st_community").. comm)
end

 

 

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms также делать game.translate_string, если текста нету - добавить самому в текстовые файлы 

game.translate_string("ui_st_community")..": "..game.translate_string(comm)

Спойлер

Уведомление приходит и когда обращаешься через @, не обязательно цитировать

 

  • Лайк 1

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Благодарю, буду знать.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Зов Припяти? Sigeroud mod 2.2
Как добавить в инвентарь шкалу выносливости (Чуть выше здоровья). Примерно так..

Спойлер

24_2.thumb.jpg.a644442f1f5f9d5f0e08c021db7eed20.jpg


Править видимо надо gamedata\configs\ui\actor_menu_16.xml  и видимо код должен быть подобный как для шкалы здоровья, только перекрашено в синий.

Спойлер

<health_state x="11" y="31" width="171" height="16">
            <hint_text delay="800">st_ui_health_sensor</hint_text>
            <state_progress x="0" y="0" width="171" height="16" horz="1" min="0" max="1" pos="0">
                <progress stretch="1">
                    <texture r="194" g="8" b="8" a="200">ui_inGame2_inventory_health_bar</texture>
                </progress>
            </state_progress>
        </health_state>


1. Не могли бы мне подсказать полный кусок кода и куда его ставить (в actor_menu_16.xml)? 
2. Может ещё какие файлы в этом должны быть задействованы?

По идее это должно помочь играть с чистым экраном (без худа), не считая оружия. Когда заглядываешь в рюкзак, видишь полоску здоровья, не хватает ещё выносливости.
 

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


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую, товарищи! Вопрос:

Может ли кто-нибудь объяснить мне структуру файла particles.xr? Т.е., какие папки за какие партиклы отвечают и т.п. Может быть, у кого-то документация завалялась по этому поводу?

Хочу перенести некоторые партиклы из одного мода в свой, но без знания структуры этого файла не могу сделать. На просторах сталкерского рунета искал эту информацию, но не нашел (Видимо, её либо нет, либо плохо искал.)

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


Ссылка на сообщение
Поделиться на другие сайты
 
15 минут назад, LoidRus сказал:

Видимо, её либо нет, либо плохо искал.

 


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую. Такой вопрос - есть локация Агропром из билда СВ 3. Абсолютно без заселения и т.п. Так вот, хотелось бы узнать, как создать точки респавна сталкеров и мутантов через all.spawn? Просто их самих (сквады нпс) не вариант в all.spawn на точки прописывать, нужно чтобы они после смерти в тех же местах дня через 2-3 опять появлялись. Спасибо.

Изменено пользователем Сталкер из прошлого


ASUS z87-k, I5-4670 @3.40GHz, MSI GTX 1050ti, 16gb ОЗУ, SSD 100gb, 2xHDD 500gb,
Windows 10 Pro. Аномали на ультрах летает. Вместе с компом по комнате.

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Можно ли как-нибудь вывести отчет таймера в тексте GUI? Как на скрине судя по всему можно, но нужно именно конкретный таймер, к примеру отображение отчета через GUI подобного таймера...

scale_1200.jpg

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


Ссылка на сообщение
Поделиться на другие сайты
 

Сталкер из прошлого Только SDK, можете найти на видеохостинге YouTube различные уроки по SDK, вам там даже покажут как скачивать и устанавливать его. Там много тонкостей. Их вполне достаточно, там вам объяснят как пользоваться SDK. 

Изменять спавн не через SDK - крайне запарно. Если хотите сделать все качественно, то вам придется работать с SDK

  • Мастер! 1
  • Спасибо 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

Как сделать так, чтобы монстры не нападали на определённую сталкерскую группировку и наоборот?

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


Ссылка на сообщение
Поделиться на другие сайты
 

liner game_relations у группировки monster прописать нейтралитет или дружеское отношение к нужному опг.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms какой код таймера?


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 Вот пример данного таймера в логике

[sr_timer@timer]
type = dec
start_value = 31000
string = st_save_zat_c3_sniper_bandit_base_signal
on_value = 0 | sr_idle@next

Нужно отображение парамерта start_value в тексте GUI...если не сложно

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Hoperise сказал:

liner game_relations у группировки monster прописать нейтралитет или дружеское отношение к нужному опг.

Не работает. Я всё правильно прописал, если что.

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms а, с логики. Думал, со скрипта, с логики же итак окошко выводится


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 По идее если отобразить GUI то оно перекроет таймер. Хорошо тогда другой вопрос...есть скрипт

function action_freedom_team_base:zone_enter(dik, keyboard_action)
	CUIScriptWnd.action_freedom_team_base(self,dik,keyboard_action)
	local bind = dik_to_bind(dik)
	local console = get_console()

	self.state = state_outside
	bind_stalker.restore_weapon(self.object:id())
	local hud = get_hud()
	local custom_static = hud:GetCustomStatic("can_use_weapon_now")
	if db.no_weap_zones[self.object:name()] == true then
		db.no_weap_zones[self.object:name()] = false
	elseif custom_static == nil and has_alife_info("mod_pve_actor_in_freedom_start") then
		hud:AddCustomStatic("can_use_weapon_now", true)
		hud:GetCustomStatic("can_use_weapon_now"):wnd():TextControl():SetTextST("st_mod_pve_add_buy_menu")
	end
	printf("exiting no weapon zone [%s]", tostring(self.object:name()))
	self.inited_time = game.get_game_time()

	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
		if dik == DIK_keys.DIK_ESC then
			if level.present() and
				(	((db.actor ~= nil)and(db.actor:alive())) or
					(false==IsGameTypeSingle())
				) then
	                        self.message_box:InitMessageBox("message_box_quit_windows")
	                        self.message_box:ShowDialog(true)
			end
		end
        end

	return true
end

Я создал модуль на базе sr_no_weapon и хочу реализовать чтобы при нахождении в данной зоне можно было вызвать скрипт ну или какое-либо действие при нажатии на горячую клавишу(в данном случае как пример вызов сообщения для теста). Брал скрипт из ui_main_menu.script и дополнил его в данном скрипте. Ловлю вылет

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...l of pripyat\gamedata\scripts\sr_base_freedom.script:80: attempt to call field 'action_freedom_team_base' (a nil value)

Вся схема

Спойлер

----------------------------------------------------------------------------------------------------
-- Mod Freedom Team Base
----------------------------------------------------------------------------------------------------
--function printf()
--end

local state_nowhere = 0 -- схема только что включилась
local state_inside = 1 -- актер внутри
local state_outside = 2 -- актер снаружи

class "action_freedom_team_base"

function action_freedom_team_base:__init( obj, storage )
    self.object = obj
    self.st = storage
    self.inited_time = game.CTime()
end

function action_freedom_team_base:reset_scheme()
    --printf("_bp: sr_idle: action_freedom_team_base:reset_scheme: self.object:name()='%s'", self.object:name())
    
    self.state = state_nowhere -- еще неясно, в зоне он, или нет
    
    self:switch_state(db.actor)
    
    db.no_weap_zones[self.object:name()] = false
end

function action_freedom_team_base:update( delta )
    --printf("_br: sr_idle: action_freedom_team_base:update()")

    --if not xr_logic.is_active( self.object, self.st ) then
    --    return
    --end

    local actor = db.actor

    if xr_logic.try_switch_to_another_section( self.object, self.st, actor ) then
        if self.state == state_inside then
            self:zone_leave()
        end
        return
    end    
    
    self:switch_state( actor )
    
    local hud = get_hud()
    local custom_static = hud:GetCustomStatic("can_use_weapon_now")
    if custom_static ~= nil and game.get_game_time():diffSec(self.inited_time) > 30 then
        hud:RemoveCustomStatic("can_use_weapon_now")
    end
end

function action_freedom_team_base:switch_state( actor )
    local state = self.state
    --printf("on_update state[%s]", tostring(self.state))
    
    if state == state_outside or state == state_nowhere then
        if self.object:inside( actor:center() ) then
            self:zone_enter()
            --printf("on_update1 state[%s]", tostring(self.state))
            return
        end
    end
    
    if state == state_inside or state == state_nowhere then
        if not self.object:inside( actor:center() ) then
            self:zone_leave()
            --printf("on_update2 state[%s]", tostring(self.state))
            return
        end
        local weap_obj = db.actor:active_item()
        if weap_obj ~= nil and isWeapon (weap_obj) ~= false then
            printf("no weapon zone [%s] actor is inside, but with weapon active", tostring(self.object:name()))
        end
    end
end

function action_freedom_team_base:zone_enter(dik, keyboard_action)
    CUIScriptWnd.action_freedom_team_base(self,dik,keyboard_action)
    local bind = dik_to_bind(dik)
    local console = get_console()

    self.state = state_outside
    bind_stalker.restore_weapon(self.object:id())
    local hud = get_hud()
    local custom_static = hud:GetCustomStatic("can_use_weapon_now")
    if db.no_weap_zones[self.object:name()] == true then
        db.no_weap_zones[self.object:name()] = false
    elseif custom_static == nil and has_alife_info("mod_pve_actor_in_freedom_start") then
        hud:AddCustomStatic("can_use_weapon_now", true)
        hud:GetCustomStatic("can_use_weapon_now"):wnd():TextControl():SetTextST("st_mod_pve_add_buy_menu")
    end
    printf("exiting no weapon zone [%s]", tostring(self.object:name()))
    self.inited_time = game.get_game_time()

    if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
        if dik == DIK_keys.DIK_ESC then
            if level.present() and
                (    ((db.actor ~= nil)and(db.actor:alive())) or
                    (false==IsGameTypeSingle())
                ) then
                            self.message_box:InitMessageBox("message_box_quit_windows")
                            self.message_box:ShowDialog(true)
            end
        end
        end

    return true
end

function action_freedom_team_base:zone_leave()
end

---------------------------------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, storage)
    printf("DEBUG: add_to_binder: scheme='%s', section='%s'", scheme, section)

    local new_action = action_freedom_team_base(npc, storage)

    -- Зарегистрировать все actions, в которых должен быть вызван метод reset_scheme при изменении настроек схемы:
    xr_logic.subscribe_action_for_events(npc, storage, new_action)
end

function set_scheme(npc, ini, scheme, section, gulag_name)
    local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
    st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
end
 

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Paradox27kms из ui_main_menu.script  if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESC then - это при открытом гуи окне только работает, просто со скрипта работать не будет. Если движок оригинальный без добавленного коллбека нажатия клавиш - скрипты на кнопки не повесить

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

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 а можно тогда из логики вызвать нажатие клавиши? Например если актер находится в определенной зоне, то... 

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


Ссылка на сообщение
Поделиться на другие сайты
 

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


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн