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

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


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

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

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

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

naxac.gif

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

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

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

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

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

@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

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

 

Silver Raven, оригинальная версия, кстати, может не запускаться перед стартовым роликом. Вы проверьте при загрузке сейвов или переходе на другую локацию.

 

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

Такой вопрос. Имеем интересную проблему - на определенной локации( именно на одной, на других такого нет ) при перезагрузке сева, или выхода с локации - вылет. Всё бы ничего,но:

 

1.Вылетает (при перезагрузке сейва ) еще до стадии синхронизации. Лог - пуст. Работал с выводом лога в _g.script - последнее что было - disconnect, ссылок на глючные обьекты нет.

2.Если выйти с локации - то же самое, вылет происходит до того, как игра начинает грузить новую локацию, т.е мое мнение - игровые обьекты не при чем.

3.Сейвы не бьються от таких вылетов.

 

Может кто встречался с такой проблемой. (1.0004+OGSM) 

 

Вот момент перехода с локации на другую:

 

* Log file has been saved successfully!
* Saving spawns...
* Saving objects...
* 16733 objects are successfully saved
* Game я_autosave.sav is successfully saved to file 'c:\documents and settings\all users\documents\stalker-shoc\savedgames\я_autosave.sav'
* DVB created: 1536K
* DIB created: 512K
- r__tf_aniso 1
- r1_tf_mipbias 0.
* SSample: 1024x768
* SSample: enabled
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: recognized, 32
*** RESET [179 ms]
- Disconnect
! Unknown command: [smart_terrain_agr_rush]_gulag:_object_setup_offline:_obj=val_dog_weak

 

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

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

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

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

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

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

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

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

Войти

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

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

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