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

[SoC] Ковыряемся в файлах

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

Не работает.

[logic]
active = kamp@esc_bandit_camp
combat_ignore = combat_ignore@esc_bandit_camp
on_hit = hit
[kamp@esc_bandit_camp]
center_point = esc_bandit_camp
combat_ignore_cond = {-esc_bandit_hit =fighting_actor =check_fighting(5484)}
[hit]
on_info = %+esc_bandit_hit%

Если комбат_игнор поставить универсальный, и убрать =файтинг_актор, всё равно не мирится с ним!(( ИД задан верно, метка на карте по нему работает.

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

@dPlayer, это как оно должно сработать? У тебя проверяется, что враг актор И, одновременно, какой-то 5484. Одновременно эти два условия никогда не выполнятся. В каждый момент проверки враг либо тот, либо другой. Смотря кто из них проверяется.

 

Что-то никак не соображу. Вот у меня загружен какой-то сейв, идет игра и тут я из игры выхожу. В логе вижу

- Disconnect

и вижу, что после этого еще выполняются net_destroy() онлайновых объектов. И вот у меня вопрос, кто-нибудь может подсказать, как в net_destroy() понять, что сейчас идет процесс завершения игры?

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

как в net_destroy() понять, что сейчас идет процесс завершения игры?

Если в net_destroy alife():object(self.object:id()) == nil, значит в данный момент происходит отключение/перезагрузка сервера (это бывает перед выключением/завершением игры, загрузкой сэйва или переходом на другую локацию). Конкретно отключение игры, наверно, не поймаешь.

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Добрый день.

В каких character_desc_....xml стоит поискать долговцев которые стоят на охране бункера учёных на Янтаре ?

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

А есть кому эту секцию в ТАКОМ формате разбирать ?

Или все-ж что-нибудь по-проще туда вписать, типа

ignore_distance = 0 ?

 

 

"В каких character_desc_....xml" - пути мододелов неисповедимы. В оригинале там, вроде, единственным ограничением является коммунити, а дальше - кто дошел, тот и дошел.

name = yan_st_stalker3

...

type = general_lager

capacity = 5

communities = dolg

Изменено пользователем Dennis_Chikin
  • Спасибо 1
Ссылка на комментарий
@shahvkit, character_desc_simulation вернее всего, потому что туда идут все подряд дефолтные неписи-долговцы из респавнеров. Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

naxac, не, это было проверено первым делом. Серверный обьект в этот момент имеется. Единственное, что я заметил, что у тех, у кого имелся парент, он меняется на 65535. Но за это я зацепиться не могу, т.к. не хочу на апдейте итема следить за актуальностью парента, что бы потом понять, что это именно уничтожение уровня, а не предмет на землю выкинули.

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

Всем привет я создал новую группировку в ТЧ и присвоил её волку но он просто ходит по локации как сделать чтобы он был там как и в оригинале?

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

1. Добавить группировку сюда  smart_terrain_presets

 

[l01_escape]
stalker  = novice, experienced
military = novice, experienced, veteran
bandit  = novice, experienced

boar  = weak, normal
flesh  = weak, normal
dog   = weak, normal
pseudodog = weak

[l01_escape_killers]
killer  = experienced

 


Может и еще куда просто давно этим занимался и все не помню.

 

Если сменил группировку НПС  то этой группировке должно быть разрешено находиться там куда ты решил  поставить непися. 

 

Буть то локация или гулаг.


Да и вроде как, определенной работе в гулаге можно присвоить групировку.
Или только гулагу ?
Ссылка на комментарий

Всем доброго дня. Кто знает, как увеличить время исчезания различных спрайтов: дырки от пуль, кровавые пятна, следы от взрыва и т.д. А то, например, началась перестрелка, все в крови, все в дырах, приходишь, а у тебя все на глазах исчезает.

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

Создал торговца 

Expression    : fatal error
Function      : CInifile::r_section
File          : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
Line          : 342
Description   : <no expression>
Arguments     : Can't open section 'supplies_start'
 
хотя в файле trade_petrovich.ltx написано
[trader] 
buy_condition = petrovich_generic_buy 
sell_condition = petrovich_start_sell 
buy_supplies = supplies_start 
 
что делать? 
Ссылка на комментарий

@UnLoaded ну дело-то было не в бобине! @dsh, верно сказал, что одновременно два условия не выполнятся. Дак их и не надо выполнять одновременно, т.е. записать-то надо раздельно, как два условия.

combat_ignore_cond = {=check_fighting(5484)}, {-esc_bandit_hit =fighting_actor}

Всем, принимавшим участие - спасибо, сценку таки смог доделать)))

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

Когда-то на форуме когда-то нарыл функцию, добавляющую в ТЧ переход от загрузочного экрана к игре аналогично ЗП. Кинул к остальному "мусору" и забыл. Сегодня решил воткнуть в игру. Но что-то не так. ничего не изменилось. То-ли функция вообще не вызывается, то-ли еще чего. Вызов из bind_stalker

	-- Загружаем настройки дропа
	death_manager.init_drop_settings()

        -- Пауза перехода к игре, аля ЗП
	ui_main_menu.start()

Сама функция:

 

 

-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------
local press_any_key_on_start = true
local sound_volume_eff,sound_volume_music = 0,0
-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------

class "main_menu" (CUIScriptWnd)

function main_menu:__init() super()
	self.mbox_mode = 0
	self:InitControls()
	self:InitCallBacks()

-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------
	if level.present() and not press_any_key_on_start then
	level.hide_indicators()
        self.start_btn=CUIStatic()
        self.start_btn:SetWndRect(Frect():set(0,0,1024,768))
        self.start_btn:InitTexture("ui\\ui_load")
        self.start_btn:SetText("Нажмите любую клавишу для перехода к игре")
        self.start_btn:SetTextAlign(CGameFont.alCenter)
        self.start_btn:SetTextY(695)
	self.start_btn:SetFont(GetFontGraffiti19Russian())
        self.alpha = 0
        self:AttachChild(self.start_btn)
        self:Show(false)
        local con=get_console()
        sound_volume_eff=con:get_float("snd_volume_eff")
        con:execute("snd_volume_eff 0")
        sound_volume_music=con:get_float("snd_volume_music")
        con:execute("snd_volume_music 0")
		self.tmr = profile_timer() -- Создаем таймер
		self.tmr:start() -- Запускаем его
	end
-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------

end

function main_menu:__finalize()
end

function main_menu:InitControls()
	self:Init(0,0,1024,768)			  
    local xml = CScriptXmlInit()
    xml:ParseFile("ui_mm_main.xml")
     
    xml:InitStatic("back_movie", self)
    xml:InitStatic("background", self)
    xml:InitStatic("fire_movie", self)
    self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
	
	self.message_box = CUIMessageBoxEx()
	self:Register(self.message_box, "msg_box")	
	
	local mm		= _G.main_menu.get_main_menu()	
	local alex_mod_ver  	= xml:InitStatic	("alex_mod_ver",self)	
	local _ver 		= xml:InitStatic	("static_version",self)
	alex_mod_ver:SetText	("AleX MOD Reload ver.2.0.0 Alpha")
	_ver:SetText		("Game ver." .. mm:GetGSVer() .. "+")

-- Подгружаем настройки для user.ltx		
	alex_mod.loading_mod_settings()	
end

function main_menu:Show(f)
	self.shniaga:SetVisibleMagnifier(f)
end


function main_menu:InitCallBacks()
-- new game
self:AddCallback("btn_novice",  ui_events.BUTTON_CLICKED,    self.OnButton_new_novice_game,  self)
self:AddCallback("btn_stalker",  ui_events.BUTTON_CLICKED,    self.OnButton_new_stalker_game,  self)
self:AddCallback("btn_veteran",  ui_events.BUTTON_CLICKED,    self.OnButton_new_veteran_game,  self)
self:AddCallback("btn_master",  ui_events.BUTTON_CLICKED,    self.OnButton_new_master_game,  self)
self:AddCallback("btn_spawn",  ui_events.BUTTON_CLICKED,    self.OnButton_load_spawn,   self)
-- options                          
self:AddCallback("btn_options",     ui_events.BUTTON_CLICKED,    self.OnButton_options_clicked,  self)
-- load                           
self:AddCallback("btn_load",        ui_events.BUTTON_CLICKED,    self.OnButton_load_clicked,   self)
-- save                           
self:AddCallback("btn_save",  ui_events.BUTTON_CLICKED,    self.OnButton_save_clicked,   self)
-- multiplayer                         
self:AddCallback("btn_multiplayer", ui_events.BUTTON_CLICKED,    self.OnButton_multiplayer_clicked, self)
-- quit                           
self:AddCallback("btn_quit",  ui_events.BUTTON_CLICKED,    self.OnButton_quit_clicked,   self)
self:AddCallback("btn_quit_to_mm", ui_events.BUTTON_CLICKED,    self.OnButton_disconnect_clicked, self)
self:AddCallback("btn_ret",   ui_events.BUTTON_CLICKED,    self.OnButton_return_game,   self)
self:AddCallback("btn_lastsave", ui_events.BUTTON_CLICKED,    self.OnButton_last_save,   self)
self:AddCallback("btn_credits",  ui_events.BUTTON_CLICKED,    self.OnButton_credits_clicked,  self)
-- message box                         
self:AddCallback("msg_box",      ui_events.MESSAGE_BOX_OK_CLICKED,  self.OnMsgOk,      self)
self:AddCallback("msg_box",      ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel,     self)
self:AddCallback("msg_box",      ui_events.MESSAGE_BOX_YES_CLICKED,  self.OnMsgYes,      self)
self:AddCallback("msg_box",      ui_events.MESSAGE_BOX_NO_CLICKED,  self.OnMsgNo,      self)
self:AddCallback("msg_box",   ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame,    self)
self:AddCallback("msg_box",   ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin,    self)

function main_menu:OnMsgOk()
	self.mbox_mode = 0
end

function main_menu:OnMsgCancel()
	self.mbox_mode = 0
end

function main_menu:OnMsgYes()
	
	if 	self.mbox_mode == 1 then
		self:LoadLastSave()	
	end

	self.mbox_mode = 0
end

function main_menu:OnMsgNo()
	self.mbox_mode = 0
end

function main_menu:LoadLastSave()
	local				console = get_console()
	console:execute			("main_menu off")
	console:execute			("load_last_save")
end

function main_menu:OnButton_last_save()
	if (alife() == nil) then
		self:LoadLastSave	();
		return
	end
	
	self.mbox_mode			= 1
	self.message_box:Init	("message_box_confirm_load_save")
	self:GetHolder():start_stop_menu(self.message_box, true)
end

function main_menu:OnButton_credits_clicked()
	game.start_tutorial("credits_seq")
end

function main_menu:OnButton_quit_clicked()
	self.message_box:Init("message_box_quit_windows")
	self:GetHolder():start_stop_menu(self.message_box, true)
end


function main_menu:OnButton_disconnect_clicked()
	self.message_box:Init("message_box_quit_game")
	
	if (level.game_id() ~= 1) then		
		self.message_box:SetText("ui_mm_disconnect_message")	-- MultiPlayer
	else
		self.message_box:SetText("ui_mm_quit_game_message")	-- SinglePlayer
	end
	self:GetHolder():start_stop_menu(self.message_box, true)
end

function main_menu:OnMessageQuitGame()
	local console = get_console()
	console:execute("disconnect")
end

function main_menu:OnMessageQuitWin()
	local console = get_console()
	console:execute("quit")
end

function main_menu:OnButton_return_game()
	local console = get_console()
	console:execute("main_menu off")
end

function main_menu:OnButton_new_novice_game()
	local console = get_console()
	console:execute("g_game_difficulty gd_novice")
	self:StartGame()	
end

function main_menu:OnButton_new_stalker_game()
	local console = get_console()
	console:execute("g_game_difficulty gd_stalker")
	self:StartGame()
end

function main_menu:OnButton_new_veteran_game()
	local console = get_console()
	console:execute("g_game_difficulty gd_veteran")
	self:StartGame()
end

function main_menu:OnButton_new_master_game()
	local console = get_console()
	console:execute("g_game_difficulty gd_master")
	self:StartGame()
end

function main_menu:StartGame()
	local console = get_console()
	
	if (alife() ~= nil) then
		console:execute	("disconnect")	
	end
	
	console:execute("start server(all/single/alife/new) client(localhost)")
	console:execute("main_menu off")
end

function main_menu:OnButton_load_spawn()
	if self.spawn_dlg == nil then
		self.spawn_dlg = ui_spawn_dialog.spawn_dialog()
		self.spawn_dlg.owner = self
	end
	
	self:GetHolder():start_stop_menu(self.spawn_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(false)
end

function main_menu:OnButton_save_clicked()
	if self.save_dlg == nil then
		self.save_dlg = ui_save_dialog.save_dialog()
		self.save_dlg.owner = self
	end
	
	self:GetHolder():start_stop_menu(self.save_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(false)
end

function main_menu:OnButton_options_clicked()
	if self.opt_dlg == nil then
		self.opt_dlg = ui_mm_opt_main.options_dialog()
		self.opt_dlg.owner = self
	end
	
	self.opt_dlg:UpdateControls()
	self:GetHolder():start_stop_menu(self.opt_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(false)
end

function main_menu:OnButton_load_clicked()
	if self.load_dlg ==nil then
		self.load_dlg = ui_load_dialog.load_dialog()
		self.load_dlg.owner = self
	end
	
	self:GetHolder():start_stop_menu(self.load_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(false)
end

function main_menu:OnButton_multiplayer_clicked()
	if self.mp_dlg ==nil then
		self.mp_dlg = ui_mp_main.mp_main()
		self.mp_dlg.owner = self
	end
	self.mp_dlg:UpdateControls()
	self:GetHolder():start_stop_menu(self.mp_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(false)

	local console			= get_console()
	console:execute			("check_for_updates 0")
	
	self.mp_dlg:OnRadio_NetChanged()
end

function main_menu:Dispatch(cmd, param)  --virtual function
	if cmd == 2 then
		self:OnButton_multiplayer_clicked()
	end
	return true
end

-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------
function main_menu:Update()
	CUIScriptWnd.Update(self) 
	if self.tmr then
		self.tmr:stop() -- Останавливаем таймер
		if not self.last_time then self.last_time = self.tmr:time() end -- инициализируем время последнего апдейта
		if self.tmr:time() - self.last_time > 7000 then -- Если прошло больше 7 мс ( чем больше значение, тем медленнее моргание надписи )
			self.last_time = self.tmr:time() -- Запоминаем время текущего апдейта
			self.start_btn:SetTextColor(self.alpha,159,142,126)
			if self.alpha > 250 then self.step = -3 elseif self.alpha < 60 then self.step = 3 end
			self.alpha = self.alpha + self.step
		end
		self.tmr:start() -- Таймер продолжает работу
	end
end
-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------

function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
	local bind = dik_to_bind(dik)
	local console = get_console()

-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------
	if self.start_btn and dik ~= DIK_keys.DIK_GRAVE then
		self.OnButton_return_game()
		return true
	end
-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------

	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
		if dik == DIK_keys.DIK_ESCAPE then
			if level.present() and (db.actor ~= nil) and db.actor:alive() then
				console:execute("main_menu off")
			end
		end
		
		if dik == DIK_keys.DIK_Q then
			self:OnMessageQuitWin()
-- Position Informer (удалить после тестирования!)                                      
		elseif dik == DIK_keys.DIK_F4 then
	                self:show_position_informer_window()			
		end
	
	end
   
	return true
end

-- Position Informer (удалить после тестирования!)
function main_menu:show_position_informer_window()
	if self.cheat_dlg == nil then
		self.cheat_dlg = positioninformer.pi()
		self.cheat_dlg.owner = self
	end
	self:GetHolder():start_stop_menu(self.cheat_dlg, true)
	self:GetHolder():start_stop_menu(self, true)
	self:Show(true)
end			

-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ----------------------------------------------

local timer = 0
function f1() return timer<time_global() end

function f2()
	set_inactivate_input_time(5)
	get_console():execute("main_menu 1")
	timer = time_global() + 200
	level.add_call(f1,f3)
end

function f3()
	local console = get_console()
	console:hide()
	press_any_key_on_start = true
	level.show_indicators()
	console:execute("snd_volume_eff " .. sound_volume_eff) 
	console:execute("snd_volume_music " .. sound_volume_music)
	sound_volume_eff,sound_volume_music = nil,nil
end

function start()
	if has_alife_info("storyline_actor_start") then
		timer = time_global() + 500
		level.add_call(f1,f2)
	else
		press_any_key_on_start = true
	end
end
-- ---------------------------------------------------- Пауза перед стартом, аля ЗП ---------------------------------------------- 

 

 

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

Есть же рабочий вариант от Charsi...

 

Скачать: https://yadi.sk/d/G2I9CzA-1GDUM

Изменено пользователем Kondr48
  • Спасибо 1
  • Нравится 1
Ссылка на комментарий

@Kondr48, хм, чего-то падает:

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ... - trilogy\shoc\gamedata\scripts\bind_stalker.script:50: attempt to index field 'st' (a nil value) 

Можен он под 4-ый патч?

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

Silver Raven мб. У меня работает на 7  :). Там всего один вызов. Перенесите в свою сборку.

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

@Kondr48, не в вызове дело. В чем-то другом. Но на чистой игре работает  - я проверил. Значит где-то конфликт, вот только где...

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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