daily pastebin goal
60%
SHARE
TWEET

How Into Pozitsiya

TKGP Nov 25th, 2017 336 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --/amk_rel_1/
  2. -- File:        UI_MAIN_MENU.SCRIPT
  3. -- Description: Load Dialog for STALKER
  4. -- Created:     28.10.2004
  5. -- Lasd edit:   18.01.2006
  6. -- Copyright:   2004 GSC Game World
  7. -- Author:      Serhiy Vynnychenko (narrator@gsc-game.kiev.ua)
  8. -- Version:     0.9
  9.  
  10. -- v1ld: ZRP
  11. -- set this filename prefix to identify unique sets of savegames
  12. -- for named saves made via save dialog, and Esc S, Esc F5/F6 saves
  13. -- must be valid filename characters in doublequotes, should be kept short
  14. save_prefix = ""
  15.  
  16. class "main_menu" (CUIScriptWnd)
  17.  
  18. function main_menu:__init() super()
  19.     self.mbox_mode = 0
  20.    self:InitControls()
  21.    self:InitCallBacks()
  22.  
  23.     -- v1ld: ZRP
  24.     -- some protection
  25.     if type(save_prefix) == "string" then
  26.         local new_save_prefix = string.gsub(save_prefix, "%%", "_")
  27.         new_save_prefix = string.lower(new_save_prefix)
  28.         save_prefix = string.gsub(new_save_prefix, "[:<=>?%*\\/;|,]", "_")
  29.         if save_prefix ~= new_save_prefix then
  30.             dbglog("Invalid filename char(s) in save_prefix - using \""..save_prefix.."\"")
  31.         end
  32.     else
  33.         dbglog("Error in save prefix")
  34.         save_prefix = ""
  35.     end
  36. end
  37.  
  38. function main_menu:__finalize()
  39.  
  40. end
  41.  
  42. function main_menu:InitControls()
  43.     self:Init(0,0,1024,768)          
  44.     local xml = CScriptXmlInit()
  45.     xml:ParseFile("ui_mm_main.xml")
  46.      
  47.     xml:InitStatic("back_movie", self)
  48.     xml:InitStatic("background", self)
  49.    -- xml:InitStatic("fire_movie", self)
  50.     self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
  51.    
  52.     self.message_box = CUIMessageBoxEx()
  53.     self:Register(self.message_box, "msg_box") 
  54.    
  55.     local _ver = xml:InitStatic     ("static_version",self)
  56.     local mm                        = _G.main_menu.get_main_menu()
  57.     --_ver:SetText                  ("ver. " .. mm:GetGSVer())
  58.     local amk_title         = amk_ver.amk_title
  59.     local amk_version       = amk_ver.amk_version
  60.     local amk_revision  = amk_ver.amk_revision
  61.     local debug_mode = ""
  62.     _ver:SetText("Game Version - " .. mm:GetGSVer() .. "  " .. amk_title .. " " .. amk_version .. " " .. amk_revision)
  63. end
  64.  
  65. function main_menu:Show(f)
  66.     self.shniaga:SetVisibleMagnifier(f)
  67. end
  68.  
  69.  
  70. function main_menu:InitCallBacks()
  71.     -- new game
  72.     self:AddCallback("btn_novice",      ui_events.BUTTON_CLICKED,               self.OnButton_new_novice_game,      self)
  73.     self:AddCallback("btn_stalker",     ui_events.BUTTON_CLICKED,               self.OnButton_new_stalker_game,     self)
  74.     self:AddCallback("btn_veteran",     ui_events.BUTTON_CLICKED,               self.OnButton_new_veteran_game,     self)
  75.     self:AddCallback("btn_master",      ui_events.BUTTON_CLICKED,               self.OnButton_new_master_game,      self)
  76.     self:AddCallback("btn_spawn",       ui_events.BUTTON_CLICKED,               self.OnButton_load_spawn,           self)
  77.     -- options                                                                                                         
  78.     self:AddCallback("btn_options",     ui_events.BUTTON_CLICKED,               self.OnButton_options_clicked,      self)
  79.     -- load                                                                                                            
  80.     self:AddCallback("btn_load",        ui_events.BUTTON_CLICKED,               self.OnButton_load_clicked,         self)
  81.     -- save                                                                                                            
  82.     self:AddCallback("btn_save",        ui_events.BUTTON_CLICKED,               self.OnButton_save_clicked,         self)
  83.     -- multiplayer                                                                                                     
  84.     self:AddCallback("btn_multiplayer", ui_events.BUTTON_CLICKED,               self.OnButton_multiplayer_clicked,  self)
  85.     -- quit                                                                                                            
  86.     self:AddCallback("btn_quit",        ui_events.BUTTON_CLICKED,               self.OnButton_quit_clicked,         self)
  87.     self:AddCallback("btn_quit_to_mm",  ui_events.BUTTON_CLICKED,               self.OnButton_disconnect_clicked,   self)
  88.     self:AddCallback("btn_ret",         ui_events.BUTTON_CLICKED,               self.OnButton_return_game,          self)
  89.     self:AddCallback("btn_lastsave",    ui_events.BUTTON_CLICKED,               self.OnButton_last_save,            self)
  90.     self:AddCallback("btn_credits",     ui_events.BUTTON_CLICKED,               self.OnButton_credits_clicked,      self)
  91.     -- message box                                                                                                     
  92.     self:AddCallback("msg_box",     ui_events.MESSAGE_BOX_OK_CLICKED,       self.OnMsgOk,                       self)
  93.     self:AddCallback("msg_box",     ui_events.MESSAGE_BOX_CANCEL_CLICKED,   self.OnMsgCancel,                   self)
  94.     self:AddCallback("msg_box",     ui_events.MESSAGE_BOX_YES_CLICKED,      self.OnMsgYes,                      self)
  95.     self:AddCallback("msg_box",     ui_events.MESSAGE_BOX_NO_CLICKED,       self.OnMsgNo,                       self)
  96.     self:AddCallback("msg_box",         ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame,             self)
  97.     self:AddCallback("msg_box",         ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin,              self)
  98.     --amk
  99.     self:AddCallback("btn_amk",     ui_events.BUTTON_CLICKED,               self.amk_options,       self)
  100.  
  101. end
  102. function main_menu:OnMsgOk()
  103.     self.mbox_mode = 0
  104. end
  105.  
  106. function main_menu:OnMsgCancel()
  107.     self.mbox_mode = 0
  108. end
  109.  
  110. function main_menu:OnMsgYes()
  111.    
  112.     if  self.mbox_mode == 1 then
  113.         self:LoadLastSave()
  114.     end
  115.  
  116.     self.mbox_mode = 0
  117. end
  118.  
  119. function main_menu:OnMsgNo()
  120.     self.mbox_mode = 0
  121. end
  122.  
  123. function main_menu:LoadLastSave()
  124.     local                   console = get_console()
  125.     console:execute         ("main_menu off")
  126.     console:execute         ("load_last_save")
  127. end
  128.  
  129. function main_menu:OnButton_last_save()
  130.     if (alife() == nil) then
  131.         self:LoadLastSave   ();
  132.         return
  133.     end
  134.  
  135.     -- v1ld: ZRP
  136.     if db.actor ~= nil and not db.actor:alive() then
  137.         self:LoadLastSave();
  138.         return
  139.     end
  140.  
  141.     self.mbox_mode          = 1
  142.     self.message_box:Init   ("message_box_confirm_load_save")
  143.     self:GetHolder():start_stop_menu(self.message_box, true)
  144. end
  145.  
  146. function main_menu:OnButton_credits_clicked()
  147. --  local console = get_console()
  148. --  console:execute("main_menu off")
  149.     game.start_tutorial("credits_seq")
  150. end
  151.  
  152. function main_menu:OnButton_quit_clicked()
  153.     self.message_box:Init("message_box_quit_windows")
  154.     self:GetHolder():start_stop_menu(self.message_box, true)
  155. end
  156.  
  157.  
  158. function main_menu:OnButton_disconnect_clicked()
  159.     self.message_box:Init("message_box_quit_game")
  160.    
  161.     if (level.game_id() ~= 1) then     
  162.         self.message_box:SetText("ui_mm_disconnect_message")    -- MultiPlayer
  163.     else
  164.         self.message_box:SetText("ui_mm_quit_game_message")     -- SinglePlayer
  165.     end
  166.     self:GetHolder():start_stop_menu(self.message_box, true)
  167. end
  168.  
  169. function main_menu:OnMessageQuitGame()
  170.     local console = get_console()
  171.     console:execute("disconnect")
  172. end
  173.  
  174. function main_menu:OnMessageQuitWin()
  175.     local console = get_console()
  176.     console:execute("quit")
  177. end
  178.  
  179. function main_menu:OnButton_return_game()
  180.     local console = get_console()
  181.     console:execute("main_menu off")
  182. end
  183.  
  184. function main_menu:OnButton_new_novice_game()
  185.     local console = get_console()
  186.     console:execute("g_game_difficulty gd_novice")
  187.     self:StartGame()   
  188. end
  189.  
  190. function main_menu:OnButton_new_stalker_game()
  191.     local console = get_console()
  192.     console:execute("g_game_difficulty gd_stalker")
  193.     self:StartGame()
  194. end
  195.  
  196. function main_menu:OnButton_new_veteran_game()
  197.     local console = get_console()
  198.     console:execute("g_game_difficulty gd_veteran")
  199.     self:StartGame()
  200. end
  201.  
  202. function main_menu:OnButton_new_master_game()
  203.     local console = get_console()
  204.     console:execute("g_game_difficulty gd_master")
  205.     self:StartGame()
  206. end
  207.  
  208. function main_menu:StartGame()
  209.     local console = get_console()
  210.    
  211.     if (alife() ~= nil) then
  212.         console:execute ("disconnect") 
  213.     end
  214.    
  215.     console:execute("start server(all/single/alife/new) client(localhost)")
  216.     console:execute("main_menu off")
  217. end
  218.  
  219. function main_menu:OnButton_load_spawn()
  220.     if self.spawn_dlg == nil then
  221.         self.spawn_dlg = ui_spawn_dialog.spawn_dialog()
  222.         self.spawn_dlg.owner = self
  223.     end
  224.    
  225.     self:GetHolder():start_stop_menu(self.spawn_dlg, true)
  226.     self:GetHolder():start_stop_menu(self, true) --new
  227.     self:Show(false)
  228. end
  229.  
  230. function main_menu:OnButton_save_clicked()
  231.     if self.save_dlg == nil then
  232.         self.save_dlg = ui_save_dialog.save_dialog()
  233.         self.save_dlg.owner = self
  234.     end
  235.    
  236.     self:GetHolder():start_stop_menu(self.save_dlg, true)
  237.     self:GetHolder():start_stop_menu(self, true) --new
  238.     self:Show(false)
  239.     -- v1ld: ZRP
  240.     if save_prefix ~= "" then
  241.         local edit_box = self.save_dlg:GetEditBox("edit_filename")
  242.         edit_box:SetText(save_prefix)
  243.     end
  244. end
  245.  
  246. function main_menu:OnButton_options_clicked()
  247.     if self.opt_dlg == nil then
  248.         self.opt_dlg = ui_mm_opt_main.options_dialog()
  249.         self.opt_dlg.owner = self
  250.     end
  251.    
  252.     self.opt_dlg:UpdateControls()
  253.     self:GetHolder():start_stop_menu(self.opt_dlg, true)
  254.     self:GetHolder():start_stop_menu(self, true) --new
  255.     self:Show(false)
  256.   amk_mod.hud_update=true
  257. end
  258.  
  259. function main_menu:OnButton_load_clicked()
  260.     if self.load_dlg ==nil then
  261.         self.load_dlg = ui_load_dialog.load_dialog()
  262.         self.load_dlg.owner = self
  263.     end
  264.    
  265.     self:GetHolder():start_stop_menu(self.load_dlg, true)
  266.     self:GetHolder():start_stop_menu(self, true) --new
  267.     self:Show(false)
  268. end
  269.  
  270. function main_menu:OnButton_multiplayer_clicked()
  271.     if self.mp_dlg ==nil then
  272.         self.mp_dlg = ui_mp_main.mp_main()
  273.         self.mp_dlg.owner = self
  274.     end
  275.     self.mp_dlg:UpdateControls()
  276.     self:GetHolder():start_stop_menu(self.mp_dlg, true)
  277.     self:GetHolder():start_stop_menu(self, true) --new
  278.     self:Show(false)
  279.    
  280. --  self.mp_dlg:OnBtn_Refresh()
  281.    
  282.     local console           = get_console()
  283.     console:execute         ("check_for_updates 0")
  284.    
  285.     self.mp_dlg:OnRadio_NetChanged()
  286. end
  287.  
  288. -- v1ld: ZRP
  289. function AddTimeDigits(str, dig)
  290.     if (dig > 9) then
  291.         str = str .. dig
  292.     else
  293.         str = str .. "0" .. dig
  294.     end
  295.     return str
  296. end
  297.  
  298. -- v1ld: ZRP
  299. function main_menu:OnButton_save_level_clicked()
  300.     local console = get_console()
  301.     local y,m,d,h,min,sec,ms = 0,0,0,0,0,0,0
  302.  
  303.     y,m,d,h,min,sec,ms = game.get_game_time():get(y,m,d,h,min,sec,ms)
  304.  
  305.     local date_time = "_"
  306.  
  307.     date_time = date_time .. y
  308.     date_time = date_time .. "-"
  309.     date_time = AddTimeDigits(date_time, m)
  310.     date_time = date_time .. "-"
  311.     date_time = AddTimeDigits(date_time, d)
  312.     date_time = date_time .. "_"
  313.     date_time = AddTimeDigits(date_time, h)
  314.     date_time = AddTimeDigits(date_time, min)
  315.     -- date_time = AddTimeDigits(date_time, sec)
  316.  
  317.     console:execute("main_menu off")
  318.     console:execute("save " .. save_prefix .. level.name() .. date_time)
  319. end
  320.  
  321. function main_menu:Dispatch(cmd, param)  --virtual function
  322.     if cmd == 2 then
  323.         self:OnButton_multiplayer_clicked()
  324.     end
  325.     return true
  326. end
  327.  
  328. function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
  329.     CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
  330.     local bind = dik_to_bind(dik)
  331.     local console = get_console()
  332.  
  333.     -- v1ld: added ZRP level and snapshot saves
  334.     if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
  335.         local alive_on_level = level.present() and (db.actor ~= nil) and db.actor:alive()
  336.         if dik == DIK_keys.DIK_ESCAPE and alive_on_level then
  337.             console:execute("main_menu off")
  338.         elseif  dik == DIK_keys.DIK_Q then
  339.             self:OnMessageQuitWin()
  340.         -- v1ld: convenience key for loading last save
  341.         elseif  dik == DIK_keys.DIK_L then
  342.             self:OnButton_last_save()
  343.         elseif  dik == DIK_keys.DIK_A then
  344.             if amk.check_game() then
  345.                 self:amk_options()
  346.             end
  347.         elseif (dik == DIK_keys.DIK_F5 or dik == DIK_keys.DIK_F6) and alive_on_level then
  348.             console:execute("main_menu off")
  349.             console:execute("save " .. save_prefix..level.name().."_snapshot")
  350.         elseif dik == DIK_keys.DIK_S and alive_on_level then
  351.             self:OnButton_save_level_clicked()
  352.         elseif dik == DIK_keys.DIK_F1 then
  353.             local lvid = db.actor:level_vertex_id()
  354.             local gvid = db.actor:game_vertex_id()
  355.             local pos = db.actor:position()
  356.             local fmt = "load ~# LVID: %s, GVID: %s, Pos: (%.3f, %.3f, %.3f)"
  357.             console:execute(fmt:format(lvid, gvid, pos.x, pos.y, pos.z))
  358.         end    
  359.     end
  360.    
  361.     return true
  362. end
  363.  
  364. function main_menu:amk_options()
  365. -- если еще ни разу не вызывали, то обозначим наш новый скрипт
  366.     if self.amk_options_dlg == nil then
  367.         self.amk_options_dlg = ui_amk_options.amk_options()
  368.         self.amk_options_dlg.owner = self
  369.     end
  370. -- останавливаем родительский элемент, запускаем свой, но родителя показываем.
  371.     self:GetHolder():start_stop_menu(self.amk_options_dlg, true)
  372.     self:GetHolder():start_stop_menu(self, true)
  373.     self:Show(false)
  374.  
  375. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top