Пользователь
Сообщения: 144
Благодарности: 3
|
Профиль
|
Отправить PM
| Цитировать
lxa85, Понял извините ещё раз, вот полный скрипт...
Код: 
class "main_menu" (CUIScriptWnd)
function main_menu:__init() super()
self.mbox_mode = 0
self:InitControls()
self:InitCallBacks()
xr_s.on_main_menu_on()
end
function main_menu:__finalize()
end
function main_menu:InitControls()
self:SetWndRect(Frect():set(0,0,1024,768))
local xml = CScriptXmlInit()
xml:ParseFile("ui_main_menu.xml")
xml:InitStatic("background", self)
self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
self.message_box = CUIMessageBoxEx()
self:Register(self.message_box, "msg_box")
local _ver=xml:InitStatic("static_version",self)
local mm=_G.main_menu.get_main_menu()
_ver:TextControl():SetText("by_g" .. mm:GetGSVer())
self.l_mgr = mm:GetLoginMngr()
self.acc_mgr = mm:GetAccountMngr()
self.profile_store = mm:GetProfileStore()
self.gs_profile = self.l_mgr:get_current_profile()
if (self.gs_profile and not(level.present())) then
self.shniaga:ShowPage(CUIMMShniaga.epi_new_network_game) --fake
self.shniaga:SetPage(CUIMMShniaga.epi_main, "ui_mm_main.xml", "menu_main_logout")
self.shniaga:ShowPage(CUIMMShniaga.epi_main)
end
sgm_version.show_version(self)
end
function main_menu:Show(f)
self.shniaga:SetVisibleMagnifier(f)
end
function main_menu:InitCallBacks()
self:AddCallback("btn_mod_option",ui_events.BUTTON_CLICKED,self.mod_options,self)
self:AddCallback("btn_coord_pos",ui_events.BUTTON_CLICKED,self.OnButton_coord_pos_clicked,self)
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)
self:AddCallback("btn_options",ui_events.BUTTON_CLICKED,self.OnButton_options_clicked,self)
self:AddCallback("btn_load",ui_events.BUTTON_CLICKED,self.OnButton_load_clicked,self)
self:AddCallback("btn_save",ui_events.BUTTON_CLICKED,self.OnButton_save_clicked,self)
self:AddCallback("btn_net_game",ui_events.BUTTON_CLICKED,self.OnButton_network_game_clicked,self)
self:AddCallback("btn_internet",ui_events.BUTTON_CLICKED,self.OnButton_internet_clicked,self)
self:AddCallback("btn_localnet",ui_events.BUTTON_CLICKED,self.OnButton_localnet_clicked,self)
self:AddCallback("btn_multiplayer",ui_events.BUTTON_CLICKED,self.OnButton_multiplayer_clicked,self)
self:AddCallback("btn_logout",ui_events.BUTTON_CLICKED,self.OnButton_logout_clicked,self)
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)
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)
self:Register(self,"self")
self:AddCallback("self",ui_events.MAIN_MENU_RELOADED,self.OnMenuReloaded,self)
end
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
if ((db.actor ~= nil) and (db.actor:alive()==false)) then
self:LoadLastSave()
return
end
self.mbox_mode = 1
self.message_box:InitMessageBox ("message_box_confirm_load_save")
self.message_box:ShowDialog(true)
end
function main_menu:OnButton_credits_clicked()
game.start_tutorial("credits_seq")
end
function main_menu:OnButton_quit_clicked()
self.message_box:InitMessageBox("message_box_quit_windows")
self.message_box:ShowDialog(true)
end
function main_menu:OnButton_disconnect_clicked()
self.message_box:InitMessageBox("message_box_quit_game")
if (level.game_id() ~= 1) then
self.message_box:SetText("ui_mm_disconnect_message")
else
self.message_box:SetText("ui_mm_quit_game_message")
end
self.message_box:ShowDialog(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")
xr_s.on_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
device():pause(false)
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.spawn_dlg:ShowDialog(true)
self:HideDialog()
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.save_dlg:FillList()
self.save_dlg:ShowDialog(true)
self:HideDialog()
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:SetCurrentValues()
self.opt_dlg:ShowDialog(true)
self:HideDialog()
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.load_dlg:FillList()
self.load_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
end
function main_menu:OnButton_network_game_clicked()
self.shniaga:ShowPage(CUIMMShniaga.epi_new_network_game)
end
function main_menu:OnButton_multiplayer_clicked()
if not(self.mp_dlg) then
self.mp_dlg = ui_mp_main.mp_main(self.gs_profile:online())
self.mp_dlg.owner = self
self.mp_dlg:OnRadio_NetChanged()
if (self.mp_dlg.online) then
self.mp_dlg.dlg_profile:InitBestScores()
self.mp_dlg.dlg_profile:FillRewardsTable()
end
end
self.mp_dlg:UpdateControls()
self.mp_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
local console = get_console()
console:execute("check_for_updates 0")
end
function main_menu:OnButton_logout_clicked()
self.shniaga:ShowPage(CUIMMShniaga.epi_new_network_game)
self.l_mgr:logout()
self.gs_profile = nil
self.mp_dlg = nil
self.shniaga:SetPage(CUIMMShniaga.epi_main, "ui_mm_main.xml", "menu_main")
self.shniaga:ShowPage(CUIMMShniaga.epi_main)
end
function main_menu:OnButton_internet_clicked()
if not(self.gs_dlg) then
self.gs_dlg = ui_mm_mp_gamespy.gamespy_page()
self.gs_dlg.owner = self
end
self.gs_dlg:ShowLoginPage()
self.gs_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
local console = get_console()
console:execute("check_for_updates 0")
end
function main_menu:OnButton_localnet_clicked()
if not(self.ln_dlg) then
self.ln_dlg = ui_mm_mp_localnet.localnet_page()
self.ln_dlg.owner = self
self.ln_dlg.lp_nickname:SetText(self.l_mgr:get_nick_from_registry())
self.ln_dlg.lp_check_remember_me:SetCheck(self.l_mgr:get_remember_me_from_registry())
end
self.ln_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
local console = get_console()
console:execute("check_for_updates 0")
end
function main_menu:Dispatch(cmd, param)
if cmd == 2 then
self:OnButton_multiplayer_clicked()
end
return true
end
function main_menu:OnMenuReloaded()
self:OnButton_options_clicked()
self.opt_dlg:OnMenuReloaded()
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 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())) or (false==IsGameTypeSingle())) then
self.OnButton_return_game()
end
end
if dik==DIK_keys.DIK_Q then
self:OnMessageQuitWin()
elseif dik==DIK_keys.DIK_SUBTRACT then
self:screenshot_mode_on()
elseif dik==DIK_keys.DIK_ADD then
self:screenshot_mode_off()
elseif db.actor~=nil and dik==DIK_keys.DIK_F5 then
self:mod_options()
elseif db.actor~=nil and dik==DIK_keys.DIK_T then
self.OnButton_return_game()
run_choose_box("yes_or_no","remove_bad_outfit","Удалить текущий бронекостюм?")
elseif db.actor~=nil and dik==DIK_keys.DIK_6 then
self.OnButton_return_game()
level.show_weapon(true)
end
if db.actor~=nil then
if dik==DIK_keys.DIK_0 then
self:set_0_factor()
elseif dik==DIK_keys.DIK_1 then
self:set_1_factor()
elseif dik==DIK_keys.DIK_2 then
self:set_2_factor()
elseif dik==DIK_keys.DIK_3 then
self:set_3_factor()
elseif dik==DIK_keys.DIK_4 then
self:set_4_factor()
elseif dik==DIK_keys.DIK_5 then
self:set_5_factor()
elseif dik==DIK_keys.DIK_F1 then
self:mod_modes()
elseif dik==DIK_keys.DIK_F2 then
self.OnButton_return_game()
run_dynamic_element(ui_mod_spawner.spawn_item_dialog(),false,true)
elseif dik==DIK_keys.DIK_F3 then
self:deliver_mp3_and_bonus()
elseif dik==DIK_keys.DIK_F4 then
self:inc_actor_rank()
elseif dik==DIK_keys.DIK_P then
self:set_rich_actor()
end
end
end
return true
end
-------------------------------------------------------------------
-- SGM Mod --
-------------------------------------------------------------------
function main_menu:screenshot_mode_on()
level.hide_indicators_safe()
game_hide_menu()
give_info("screenshot_mode")
end
function main_menu:screenshot_mode_off()
level.show_indicators()
disable_info("screenshot_mode")
end
function main_menu:set_rich_actor()
dialogs.relocate_money(db.actor,1000000,"in")
end
function main_menu:inc_actor_rank()
xr_statistic.add_50_actor_rank()
end
function main_menu:deliver_mp3_and_bonus()
give_object_to_actor("mp3_player")
for k=1,40 do give_mp3_bonus() end
end
function main_menu:set_0_factor()
if db.actor~=nil then
level.set_time_factor(DefaultTimeFactor())
end
end
function main_menu:set_1_factor()
if db.actor~=nil then
level.set_time_factor(50)
end
end
function main_menu:set_2_factor()
if db.actor~=nil then
level.set_time_factor(100)
end
end
function main_menu:set_3_factor()
if db.actor~=nil then
level.set_time_factor(500)
end
end
function main_menu:set_4_factor()
if db.actor~=nil then
level.set_time_factor(1000)
end
end
function main_menu:set_5_factor()
if db.actor~=nil then
level.set_time_factor(5000)
end
end
function main_menu:set_remote_marker()
if sgm_flags.bool_remote_marker==false then
local rm_id=create("remote_marker",db.actor:position().x,db.actor:position().y,db.actor:position().z,db.actor:level_vertex_id(),db.actor:game_vertex_id(),sgm_flags.spot_toolkit_place,"точка отсчёта")
sgm_flags.value_remote_marker=rm_id.id
sgm_flags.bool_remote_marker=true
elseif sgm_flags.bool_remote_marker==true then
local marker_obj=level.object_by_id(sgm_flags.value_remote_marker)
debug_to_file("remote_points.txt",marker_obj:position().x..","..marker_obj:position().y..","..marker_obj:position().z..","..marker_obj:level_vertex_id()..","..marker_obj:game_vertex_id())
sgm_flags.bool_remote_marker=false
remove_item_by_id(sgm_flags.value_remote_marker)
sgm_flags.value_remote_marker=0
end
end
function main_menu:OnButton_coord_pos_clicked()
text="Позиция:\\nX= "..db.actor:position().x.."\\nY= "..db.actor:position().y.."\\nZ= "..db.actor:position().z.."\\nlevel_vertex= "..db.actor:level_vertex_id().."\\ngame_vertex_id= "..db.actor:game_vertex_id().."\\ndirection= "..db.actor:direction():getH()
news_manager.send_tip(db.actor,text,0,mutant_hunter,10000,nil,"Координата")
fill_log(db.actor:position().x..","..db.actor:position().y..","..db.actor:position().z..","..db.actor:level_vertex_id()..","..db.actor:game_vertex_id())
--/debug_to_file("points.txt",db.actor:level_vertex_id()..","..db.actor:game_vertex_id())
debug_to_file("points.txt",db.actor:position().x..","..db.actor:position().y..","..db.actor:position().z..","..db.actor:level_vertex_id()..","..db.actor:game_vertex_id())
end
function main_menu:mod_modes()
if self.mod_modes_dlg == nil then
self.mod_modes_dlg = ui_mod_modes.mod_modes()
self.mod_modes_dlg.owner = self
end
self.mod_modes_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
end
function main_menu:mod_options()
if self.mod_dlg == nil then
self.mod_dlg = ui_mod_options.mod_options()
self.mod_dlg.owner = self
end
self.mod_dlg:ShowDialog(true)
self:HideDialog()
self:Show(false)
end
|