Разное - [решено] Язык LUA

Аватара пользователя
deviance

Re: Разное - [решено] Язык LUA

Сообщение deviance »

Очень похоже на сопряжение сигналов и слотов, как в Qt.

by_gangster, скорее всего, функция-callback передается третьим аргументом:



Код:

Код: Выделить всё

self:AddCallback("btn_mod_option",ui_events.BUTTON_CLICKED,self.mod_options,self)
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

by_gangster,
Цитата by_gangster:



кусок скрипта который я дал из игры Сталкер ЗП. Если нужно могу полный скрипт выложить...
Разное - [решено] Язык LUA




Будь добр.

Догадываться о назначении функций, файлов и прочее, не имея их на руках, не имея документации по ним, не имея ничего... Надоело-невозможно.

Т.ч. полный скрипт со всеми сопутствующими файлами и ссылками на описание в студию.

Пойми правильно.
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

by_gangster, могу смело предположить, что программисты под Сталкер ЗП - большая редкость. Возможно на этом форуме - вы единственный (поэтому подколы про "догадывался" неуместны). Язык LUA не умеет сам по себе открывать интернет странички. Он лишь средство автоматизации, которое в которое должна быть экспортирована функция, которая может открыть страничку. Искать эту функцию нужно по документации Сталкера ЗП (которой мы не владеем). Но не всё так плохо, можно угадать, тыкнув пальцем в небо.



Догадка №1: Допустим self.mod_options - это и есть та самая функция, которая отреагирует на нажатие кнопки. Проверить можно так:



Код:

Код: Выделить всё

self:AddCallback(...) -- после этой строчки добавляем:
self.mod_options() -- если выскочит то, что появляется при нажатии этой кнопки, то угадали
-- если выползет ошибка типа "это не функция" - значит нет

Догадка №2: Допустим в среду LUA экспортирован её пакет "os" (и №1 верно). Тогда делаем:



Код:

Код: Выделить всё

self.mod_options=function() os.exec("iexplorer http://www.google.com") end
self:AddCallback(...)

Допустим не угадали, но знаем функцию, которая выводит текст в лог (пусть это будет print).

Делаем следующее:



Код:

Код: Выделить всё

function __render(name, x, indent)
  if type(x)=="table" then
    print(indent, name, ":")
    for key, val in pairs(x) do
      __render(key, val, indent.."  ")
    end
  else
    print(indent, name, "=", x)
  end
end
__render("look for exec", _G, ">") -- среди этого ищем, чем бы открыть страницу, но может зациклить. Если зациклит - напиши, скажу что добавить в __render
__render("look for callback", self, ">") -- среди этого ищем, что бы могло быть реакцией на нажатие (скорее всего это функция)
Аватара пользователя
lxa85

Re: Разное - [решено] Язык LUA

Сообщение lxa85 »

Вроде понятно как назначать события на кнопки, но не понятно, как показывать интернет-странички.

добавь в function main_menu:InitCallBacks() код:



Код:

Код: Выделить всё

local report,length={},0
for k, v in pairs(_G) do 
  length=length+1
  report[length]=string.format("%q=%q\n", tostring(k), tostring(v))
end
debug_to_file("all-globals.txt", table.concat(report))

Запусти (сделай так, чтобы main_menu:InitCallBacks() выполнился), найди в недрах сталкера файл "all-globals.txt" и покажи его содержимое.
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

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
Аватара пользователя
pva

Re: Разное - [решено] Язык LUA

Сообщение pva »

Вроде понятно как назначать события на кнопки, но не понятно, как показывать интернет-странички.

добавь в function main_menu:InitCallBacks() код:



Код:

Код: Выделить всё

local report,length={},0
for k, v in pairs(_G) do 
  length=length+1
  report[length]=string.format("%q=%q\n", tostring(k), tostring(v))
end
debug_to_file("all-globals.txt", table.concat(report))

Запусти (сделай так, чтобы main_menu:InitCallBacks() выполнился), найди в недрах сталкера файл "all-globals.txt" и покажи его содержимое.
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

by_gangster,
Цитата by_gangster:



function main_menu:InitCallBacks()

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)
Разное - [решено] Язык LUA




По переходу к этим функциям:



Код:

Код: Выделить всё

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

Что это за обозначения страниц и где они определены не знаю.

Скорее всего в упомянутом выше xml.



Имеет ли смысл переделывать основной



Код:

Код: Выделить всё

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

я не знаю. Можно попробовать в него добавить строчки из тех скриптов, что выше.

Пробовать не на чем, просто догадка.

ui_mm_mp_localnet.localnet_page()

ui_mm_mp_gamespy.gamespy_page() искать.

(Рекомендую Notepad ++, как текстовый редактор. С его возможностями это будет проще.)
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

Цитата lxa85:



(Рекомендую Notepad ++, как текстовый редактор
Разное - [решено] Язык LUA




Я им постоянно пользуюсь..



Просканировал файлы (скрипты) на поиск "http" нашол только один файл.



Код:

Код: Выделить всё

local ctrl = false
local focused_eb = 0
class "gamespy_page" (CUIScriptWnd)
function gamespy_page:__init() super()
   self:InitControls()
   self:InitCallbacks()
end
function gamespy_page:InitControls()
	local xml = CScriptXmlInit()
	xml:ParseFile("ui_mm_mp_gamespy.xml")
	self:SetWndRect(Frect():set(0,0,1024,768))
	self:Enable(true)
	xml:InitStatic("background", self)
	local button = nil
	button = xml:Init3tButton("button_create_acc", self)
	self:Register(button, "btn_create_acc")
    self.btn_create_acc = button
    button = xml:Init3tButton("button_create", self)
	self:Register(button, "btn_create")
    self.btn_create = button
	button = xml:Init3tButton("button_login", self)
	self:Register(button, "btn_login")
    self.btn_login = button
	button = xml:Init3tButton("button_cancel", self)
	self:Register(button, "btn_cancel")
    self.btn_cancel = button
--------------------------------------------------------------------------------
	self.login_page = CUIWindow()
	xml:InitWindow("login_page", 0, self.login_page)
	self.login_page:SetAutoDelete(true)
	self:AttachChild(self.login_page)
	self.lp_header_login = xml:InitTextWnd("login_page:cap_header_login", self.login_page)
	xml:InitTextWnd("login_page:cap_email", self.login_page)
	self.lp_email = xml:InitEditBox("login_page:edit_email", self.login_page)
	self:Register(self.lp_email, "lp_edit_email")
	xml:InitTextWnd("login_page:cap_password", self.login_page)
	self.lp_password = xml:InitEditBox("login_page:edit_password", self.login_page)
	self:Register(self.lp_password, "lp_edit_password")
	button = xml:Init3tButton("login_page:button_forgot", self.login_page)
	self:Register(button, "lp_btn_forgot")
    self.lp_btn_forgot = button
    button = xml:InitCheck("login_page:check_remember_me", self.login_page)
	self:Register(button, "lp_check_remember_me")
	button:SetCheck(true)
	self.lp_check_remember_me = button
	self.lp_email:SetNextFocusCapturer(self.lp_password)
	self.lp_password:SetNextFocusCapturer(self.lp_email)
--------------------------------------------------------------------------------
	self.create_account_page = CUIWindow()
	xml:InitWindow("create_account_page", 0, self.create_account_page)
	self.create_account_page:SetAutoDelete(true)
	self:AttachChild(self.create_account_page)
	self.ca_header_create_acc = xml:InitTextWnd("create_account_page:cap_header_create_account", self.create_account_page)
	self.ca_error = xml:InitTextWnd("create_account_page:cap_error", self.create_account_page)
	xml:InitTextWnd("create_account_page:cap_email", self.create_account_page)
	self.ca_email = xml:InitEditBox("create_account_page:edit_email", self.create_account_page)
	self:Register(self.ca_email, "ca_edit_email")
	self.ca_st_email = xml:InitStatic("create_account_page:static_email", self.create_account_page)
	self.ca_email_valid = false
	xml:InitTextWnd("create_account_page:cap_password", self.create_account_page)
	self.ca_password = xml:InitEditBox("create_account_page:edit_password", self.create_account_page)
	self:Register(self.ca_password, "ca_edit_password")
	self.ca_st_password = xml:InitStatic("create_account_page:static_password", self.create_account_page)
	self.ca_passwords_valid = false
	xml:InitTextWnd("create_account_page:cap_confirm_password", self.create_account_page)
	self.ca_confirm_password = xml:InitEditBox("create_account_page:edit_confirm_password", self.create_account_page)
	self:Register(self.ca_confirm_password, "ca_edit_confirm_password")
	self.ca_st_confirm_password = xml:InitStatic("create_account_page:static_confirm_password", self.create_account_page)
	xml:InitTextWnd("create_account_page:cap_unique_nick", self.create_account_page)
	self.ca_unique_nick = xml:InitEditBox("create_account_page:edit_unique_nick", self.create_account_page)
	self:Register(self.ca_unique_nick, "ca_edit_unique_nick")
	self.ca_st_unique_nick = xml:InitStatic("create_account_page:static_unique_nick", self.create_account_page)
	self.ca_unique_nick_valid = false
	self.ca_combo_aval_unique_nick = xml:InitComboBox("create_account_page:combo_aval_unique_nick", self.create_account_page)
	self:Register(self.ca_combo_aval_unique_nick, "ca_combo_aval_unique_nick")
	self.ca_email:SetNextFocusCapturer(self.ca_password)
	self.ca_password:SetNextFocusCapturer(self.ca_confirm_password)
	self.ca_confirm_password:SetNextFocusCapturer(self.ca_unique_nick)
	self.ca_unique_nick:SetNextFocusCapturer(self.ca_email)
-- // message boxes
	self.gs_login_mb_cancel = CUIMessageBoxEx()
	self:Register(self.gs_login_mb_cancel,"gs_mb_login_cancel")
	self.gs_login_mb_profnotfound = CUIMessageBoxEx()
	self:Register(self.gs_login_mb_profnotfound, "gs_mb_login_profnotfound")
	self.gs_login_mb_result = CUIMessageBoxEx()
	self:Register(self.gs_login_mb_result, "gs_mb_login_result")
	self.gs_create_mb_result = CUIMessageBoxEx()
	self:Register(self.gs_create_mb_result, "gs_mb_create_result")
	self.gs_mb_create_vemail_cancel = CUIMessageBoxEx()
	self:Register(self.gs_mb_create_vemail_cancel, "gs_mb_create_vemail_cancel")
	self.gs_mb_create_vnick_cancel = CUIMessageBoxEx()
	self:Register(self.gs_mb_create_vnick_cancel, "gs_mb_create_vnick_cancel")
	self.gs_message_box = CUIMessageBoxEx()
	self:Register(self.gs_message_box,"gs_message_box")
-- ///////////////
	self.create_account_page:Show(false)
	self.active_page = "login_page"
    focused_eb = 0
    self:ChangeActiveEditBox()
    self:CheckAccCreationAbility()
	self.email = ""
	self.password = ""
	self.profile_name = ""
end
function gamespy_page:InitCallbacks()
	self:AddCallback("btn_create_acc",			ui_events.BUTTON_CLICKED, 		self.OnBtnShowCreateAccountPage, self)
	self:AddCallback("btn_create",				ui_events.BUTTON_CLICKED, 		self.OnBtnCreateAccount, self)
	self:AddCallback("btn_login",				ui_events.BUTTON_CLICKED, 		self.OnBtnLogin, self)
	self:AddCallback("btn_cancel",				ui_events.BUTTON_CLICKED, 		self.OnBtnCancel, self)
	self:AddCallback("lp_check_remember_me",	ui_events.BUTTON_CLICKED, 		self.OnBtnRememberMe, self)
	self:AddCallback("lp_edit_email",			ui_events.EDIT_TEXT_COMMIT,		self.OnEditLPEmailChanged, self)
	self:AddCallback("lp_edit_password",		ui_events.EDIT_TEXT_COMMIT,		self.OnEditLPPasswordChanged, self)
	self:AddCallback("lp_btn_forgot",			ui_events.BUTTON_CLICKED,		self.OnBtnLPForgotPassword, self)
	self:AddCallback("ca_edit_email",			ui_events.EDIT_TEXT_COMMIT,		self.OnEditCAEmailChanged, self)
	self:AddCallback("ca_edit_password",		ui_events.EDIT_TEXT_COMMIT,		self.OnEditCAPasswordChanged, self)
	self:AddCallback("ca_edit_confirm_password", ui_events.EDIT_TEXT_COMMIT,	self.OnEditCAConfirmPasswordChanged, self)
	self:AddCallback("ca_edit_unique_nick",		ui_events.EDIT_TEXT_COMMIT,		self.OnEditCAUniqueNickChanged, self)
	self:AddCallback("ca_combo_aval_unique_nick", ui_events.LIST_ITEM_SELECT,	self.OnUniqueNickSelect, self)
	self:AddCallback("ca_combo_aval_unique_nick", ui_events.WINDOW_LBUTTON_DOWN,self.OnUniqueNickSelect, self)
	self:AddCallback("gs_mb_login_profnotfound",	ui_events.MESSAGE_BOX_YES_CLICKED,	self.LoginProfileUseExist, self)
	self:AddCallback("gs_mb_login_profnotfound",	ui_events.MESSAGE_BOX_NO_CLICKED,	self.LoginProfileNotFound, self)
	self:AddCallback("gs_mb_login_result",			ui_events.MESSAGE_BOX_OK_CLICKED,	self.OnLoginResultOk, self)
	self:AddCallback("gs_mb_create_result",			ui_events.MESSAGE_BOX_OK_CLICKED,	self.CreatedAccount, self);
	self:AddCallback("gs_mb_login_cancel",			ui_events.MESSAGE_BOX_OK_CLICKED,	self.TerminateLogin, self)	
	self:AddCallback("gs_mb_create_vemail_cancel",	ui_events.MESSAGE_BOX_OK_CLICKED,	self.TerminateVerifyEmail,	self)
	self:AddCallback("gs_mb_create_vnick_cancel",	ui_events.MESSAGE_BOX_OK_CLICKED,	self.TerminateVerifyNick,	self)
end
function gamespy_page:ShowLoginPage()
	local mail = self.owner.l_mgr:get_email_from_registry()
	local pass = self.owner.l_mgr:get_password_from_registry()
	if(mail~="" and pass~="") then
	    self.lp_email:SetText		(mail)
	    self.lp_password:SetText	(pass)
	end
	self.lp_check_remember_me:SetCheck(self.owner.l_mgr:get_remember_me_from_registry())
	self.btn_create_acc:Show		(true)
	self.btn_login:Show				(true)
	self.btn_create:Show			(false)
	self.active_page				= "login_page"
	self.create_account_page:Show	(false)
	self.login_page:Show			(true)
	focused_eb						= 0
--	self:ChangeActiveEditBox()
end
function gamespy_page:OnBtnCancel()
	if (self.active_page == "create_account_page") then
		self:ShowLoginPage()
	else
		self:HideDialog			()
		self.owner:ShowDialog	(true)
		self.owner:Show			(true)
	end
end
function gamespy_page:OnBtnRememberMe()
	self.owner.l_mgr:save_remember_me_to_registry(self.lp_check_remember_me:GetCheck())
end
function gamespy_page:CheckAccCreationAbility()
	self.btn_create:Enable(false)
	if ((self.ca_email_valid == true) and 
		(self.ca_passwords_valid == true) and
		(self.ca_unique_nick_valid == true)) then
		self.btn_create:Enable(true)	
	end
end
function gamespy_page:OnBtnCreateAccount()
		self.gs_message_box:InitMessageBox	("message_box_gs_acc_creation")
		self.gs_message_box:SetText			("ui_mp_gamespy_creating_new_profile")
		self.gs_message_box:ShowDialog		(true)
		self.owner.acc_mgr:create_profile	(self.ca_email:GetText(), self.ca_unique_nick:GetText(), self.ca_email:GetText(), self.ca_password:GetText(), account_operation_cb(self, self.AccountCreationResult))
end
function gamespy_page:OnBtnShowCreateAccountPage()
		local empty_text					= ""
		self.ca_email:SetText				(empty_text)
		self.ca_password:SetText			(empty_text)
		self.ca_confirm_password:SetText	(empty_text)
		self.ca_unique_nick:SetText			(empty_text)
		self.ca_email_valid					= false
		self.ca_passwords_valid				= false
		self.ca_unique_nick_valid			= false
		self.ca_st_email:InitTexture		("ui_inGame2_lamp_OFF")
		self.ca_st_password:InitTexture		("ui_inGame2_lamp_OFF")
		self.ca_st_confirm_password:InitTexture("ui_inGame2_lamp_OFF")
		self.ca_st_unique_nick:InitTexture	("ui_inGame2_lamp_OFF")
		self.ca_error:SetText				(empty_text)
	    self.btn_create_acc:Enable			(false)
		self.active_page					= "create_account_page"
	    self.create_account_page:Show		(true)
	    self.btn_create_acc:Show			(false)
	    self.ca_combo_aval_unique_nick:Show	(false)
	    self.ca_combo_aval_unique_nick:ClearList()
	    self.btn_login:Show					(false)
	    self.btn_create:Show				(true)
	    self.login_page:Show				(false)
		focused_eb							= 0
        self:ChangeActiveEditBox()
        self:CheckAccCreationAbility()
end
function gamespy_page:OnBtnLogin()
	self.email		= self.lp_email:GetText()
	self.password	= self.lp_password:GetText()
	self.gs_login_mb_cancel:InitMessageBox	("message_box_gs_info")
	self.gs_login_mb_cancel:SetText			("ui_mp_gamespy_getting_account_profiles")
    self.gs_login_mb_cancel:ShowDialog		(true)
    self.profile_name						= ""
    self.owner.acc_mgr:search_for_email		(self.email, found_email_cb(self, self.OnLoginEmailSearchComplete))
end
function gamespy_page:OnLoginEmailSearchComplete(founded, descr)
	if (not founded) then
		self.gs_login_mb_cancel:HideDialog		()
	    self.gs_login_mb_result:InitMessageBox	("message_box_gs_result")
	    if (descr=="") then
	    	descr = game.translate_string		("mp_gp_unknown_email")
	    end
	    printf("Login error: %s", descr)
		self.gs_login_mb_result:SetText			(descr)
	    self.gs_login_mb_result:ShowDialog		(true)
	    return
	end
	self.owner.acc_mgr:get_account_profiles(self.email, self.password, account_profiles_cb(self, self.GetAccountProfilesResult))
end
function gamespy_page:GetAccountProfilesResult(profiles_num, descr)
	if(profiles_num==0) then
	    self.gs_login_mb_cancel:HideDialog()
	    self.gs_login_mb_result:InitMessageBox("message_box_gs_result")
	    if (descr=="") then
	    	descr = game.translate_string("mp_gp_bad_password")
	    end
	    printf("Login error: %s", descr)
		self.gs_login_mb_result:SetText			(descr)
	    self.gs_login_mb_result:ShowDialog		(true)
	else
		for i in (self.owner.acc_mgr:get_found_profiles()) do
			if(self.profile_name=="") then
				self.profile_name = i
			end
			if(i==self.email) then
		        self.gs_login_mb_cancel:SetText("ui_mp_gamespy_logining_to_profile")
			    self.owner.l_mgr:login(self.email, self.email, self.password, login_operation_cb(self, self.LoginOperationResult))
				return
			end
		end
	    self.gs_login_mb_cancel:HideDialog()
	    self:LoginProfileUseExist						()
	    -- self.gs_login_mb_profnotfound:InitMessageBox	("message_box_gs_question")
		-- self.gs_login_mb_profnotfound:SetText		(game.translate_string("ui_mp_gamespy_use_existing_profile").." "..self.profile_name.."?")
	    -- self.gs_login_mb_profnotfound:ShowDialog		(true)
	end
end
function gamespy_page:LoginOperationResult(profile, descr)
    self.gs_login_mb_cancel:HideDialog()
	if(profile==nil) then
		self.gs_login_mb_result:InitMessageBox("message_box_gs_result")
		if (descr == "") then
			descr = "mp_gp_login_error"
		end
	    self.gs_login_mb_result:SetText		(descr)
	    self.gs_login_mb_result:ShowDialog	(true)
	else
	    self.owner.gs_profile				= profile
	    self.owner.shniaga:SetPage			(CUIMMShniaga.epi_main, "ui_mm_main.xml", "menu_main_logout")
	    self.owner.shniaga:ShowPage			(CUIMMShniaga.epi_main)
        self.owner.profile_store:load_current_profile(store_operation_cb(self, self.LoadingProgress), store_operation_cb(self, self.LoadingComplete))
		if(self.lp_check_remember_me:GetCheck()) then
		    self.owner.l_mgr:save_email_to_registry		(self.email)
		    self.owner.l_mgr:save_password_to_registry	(self.password)
		end
	end
end
function gamespy_page:TerminateLogin()
	if (self.owner.gs_profile ~= nil) then
		self.owner.profile_store:stop_loading();
		self.owner.l_mgr:logout()
		self.owner.shniaga:ShowPage(CUIMMShniaga.epi_new_network_game)
		self.owner.shniaga:SetPage(CUIMMShniaga.epi_main, "ui_mm_main.xml", "menu_main")
	elseif (self.profile_name == "") then
		if (self.owner.acc_mgr:is_email_searching_active()) then
			self.owner.acc_mgr:stop_searching_email()
		elseif (self.owner.acc_mgr:is_get_account_profiles_active()) then
			self.owner.acc_mgr:stop_fetching_account_profiles()
		end
	else
		self.owner.l_mgr:stop_login()
	end
	self.owner.gs_profile = nil
end
function gamespy_page:LoginProfileUseExist()
	self.gs_login_mb_cancel:InitMessageBox("message_box_gs_info")
	self.gs_login_mb_cancel:SetText("ui_mp_gamespy_logining_to_profile")
    self.gs_login_mb_cancel:ShowDialog(true)
	self.owner.l_mgr:login(self.email, self.profile_name, self.password, login_operation_cb(self, self.LoginOperationResult))
end
function gamespy_page:LoginProfileNotFound()
	self:OnBtnShowCreateAccountPage()
end
function gamespy_page:OnLoginResultOk()
	if(self.owner.gs_profile) then
        self:HideDialog()
        self.owner:ShowDialog(true)
        self.owner:Show(true)
        self.owner:OnButton_multiplayer_clicked()
    end
end
function gamespy_page:CreatedAccount()
	self:ShowLoginPage()
	self.lp_email:SetText(self.ca_email:GetText())
	self.lp_password:SetText(self.ca_password:GetText())
	--self:OnBtnLogin()
end
function gamespy_page:OnMsgYes()
	self.gs_login_mb_cancel:InitMessageBox("message_box_gs_info")
    self.gs_login_mb_cancel:SetText("ui_mp_gamespy_logining_to_profile")
    self.gs_login_mb_cancel:ShowDialog(true)
    self.owner.l_mgr:login(self.email, self.profile_name, self.password, login_operation_cb(self, self.LoginOperationResult))
end
function gamespy_page:OnMsgNo()
	self.ca_email:SetText(self.email)
	self.ca_st_email:InitTexture("ui_inGame2_lamp_GREEN")
	self.ca_password:SetText(self.password)
	self.ca_st_password:InitTexture("ui_inGame2_lamp_GREEN")
	self.ca_confirm_password:SetText(self.password)
	self.ca_st_confirm_password:InitTexture("ui_inGame2_lamp_GREEN")
	self:OnBtnShowCreateAccountPage()
end
function gamespy_page:OnKeyboard(dik, keyboard_action)
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
	local bind = dik_to_bind(dik)
	local console = get_console()
	if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
		if dik == DIK_keys.DIK_LCONTROL then
			ctrl = false
		end
	elseif keyboard_action == ui_events.WINDOW_KEY_PRESSED then
		if dik == DIK_keys.DIK_LCONTROL then
			ctrl = true
		elseif dik == DIK_keys.DIK_ESCAPE then
			self:OnBtnCancel()
		elseif dik == DIK_keys.DIK_TAB then
			if(ctrl) then
	            if(self.active_page=="login_page") then
					self:OnBtnShowCreateAccountPage()
				else
					self:OnBtnLogin()
				end
			end
		end
	end
	return true
end
function gamespy_page:OnEditLPEmailChanged()
--    self:OnBtnLogin()
end
function gamespy_page:OnEditLPPasswordChanged()
--    self:OnBtnLogin()
end
function gamespy_page:OnBtnLPForgotPassword()
	self.owner.l_mgr:forgot_password("https://login.gamespy.com/lostpassword.aspx")
end
function gamespy_page:LoadingProgress(fake_bool, progress_string)
    if(self.gs_login_mb_cancel:IsShown()) then
		self.gs_login_mb_cancel:HideDialog()
	end
    self.gs_login_mb_cancel:InitMessageBox("message_box_gs_info")
    self.gs_login_mb_cancel:SetText(progress_string)
    self.gs_login_mb_cancel:ShowDialog(true)
end
function gamespy_page:LoadingComplete(load_result, descr)
    self.gs_login_mb_cancel:HideDialog()
    self.gs_login_mb_result:InitMessageBox("message_box_gs_result")
    if(load_result == true) then
    	local tmp_unick = self.owner.gs_profile:unique_nick()
    	local hello_text = game.translate_string("ui_mp_gamespy_loading_rewards_hello").." "..tmp_unick.."!";
    	if (tmp_unick == "@unregistered") then
    		hello_text = game.translate_string("mp_gp_unique_nick_not_registred")
    	end
    	if (tmp_unick == "@expired") then
    		hello_text = game.translate_string("mp_gp_unique_nick_has_expired")
    	end
    	self.gs_login_mb_result:SetText(hello_text)
    else
	    self.gs_login_mb_result:SetText(descr)
    end
    self.gs_login_mb_result:ShowDialog(true)
end
-- //////////////////////////////////////////////////////////////////////////////
function gamespy_page:ChangeActiveEditBox()
    self.lp_email:CaptureFocus(false)
    self.lp_password:CaptureFocus(false)
    self.ca_email:CaptureFocus(false)
    self.ca_password:CaptureFocus(false)
    self.ca_confirm_password:CaptureFocus(false)
    self.ca_unique_nick:CaptureFocus(false)
    if (self.active_page=="login_page") then
		self.lp_email:CaptureFocus(true)
	else
		self.ca_password:CaptureFocus(true)
	end
end
function gamespy_page:OnEditCAEmailChanged()
printf("EmailChanged")
	local email = self.ca_email:GetText()
	if(email~="") then
	    if(self.owner.acc_mgr:verify_email(email)) then
	    	self.gs_mb_create_vemail_cancel:InitMessageBox("message_box_gs_info")
			self.gs_mb_create_vemail_cancel:SetText("ui_mp_gamespy_verify_email")
			self.gs_mb_create_vemail_cancel:ShowDialog(true)
			self.owner.acc_mgr:search_for_email(self.ca_email:GetText(), found_email_cb(self, self.OnEmailSearchComplete))
	    else
	        self.ca_st_email:InitTexture("ui_inGame2_lamp_RED")
	        self.ca_error:SetText(game.translate_string(self.owner.acc_mgr:get_verify_error_descr()))
	    end
	end
	self:CheckAccCreationAbility()
end
function gamespy_page:OnEditCAPasswordChanged()
printf("PasswordChanged")
	local pass = self.ca_password:GetText()
    if(self.owner.acc_mgr:verify_password(pass)) then
        self.ca_st_password:InitTexture("ui_inGame2_lamp_GREEN")
        self.ca_error:SetText("")
    else
        self.ca_st_password:InitTexture("ui_inGame2_lamp_RED")
        self.ca_error:SetText(game.translate_string(self.owner.acc_mgr:get_verify_error_descr()))
        self.ca_passwords_valid = false
    end
	self:CheckAccCreationAbility()
end
function gamespy_page:OnEditCAConfirmPasswordChanged()
printf("ConfirmPasswordChanged")
	local pass = self.ca_password:GetText()
	local conf_pass = self.ca_confirm_password:GetText()
	if(pass==conf_pass) then
        if(self.owner.acc_mgr:verify_password(pass)) then
            self.ca_st_confirm_password:InitTexture("ui_inGame2_lamp_GREEN")
            self.ca_error:SetText("")
            self.ca_passwords_valid = true
        else
            self.ca_st_confirm_password:InitTexture("ui_inGame2_lamp_RED")
            self.ca_error:SetText(game.translate_string(self.owner.acc_mgr:get_verify_error_descr()))
            self.ca_passwords_valid = false
        end
	else
        self.ca_st_confirm_password:InitTexture("ui_inGame2_lamp_RED")
        self.ca_error:SetText(game.translate_string("ui_mp_gamespy_verify_password_error1"))
        self.ca_passwords_valid = false
	end
	self:CheckAccCreationAbility()
end
function gamespy_page:OnEditCAUniqueNickChanged()
printf("UniqueNickChanged")
	local nick = self.ca_unique_nick:GetText()
	if (self.owner.acc_mgr:verify_unique_nick(nick)) then
		self.gs_mb_create_vnick_cancel:InitMessageBox("message_box_gs_info")
        self.gs_mb_create_vnick_cancel:SetText("ui_mp_gamespy_suggesting_unique_name")
        self.gs_mb_create_vnick_cancel:ShowDialog(true)
		self.owner.acc_mgr:suggest_unique_nicks(nick, suggest_nicks_cb(self, self.OnNickSuggestionComplete))
		self.ca_combo_aval_unique_nick:Show(true);
		self.ca_combo_aval_unique_nick:ClearList()
	else
		self.ca_st_unique_nick:InitTexture("ui_inGame2_lamp_RED")
		self.ca_error:SetText(game.translate_string(self.owner.acc_mgr:get_verify_error_descr()))
	end
end
function gamespy_page:TerminateVerifyEmail()
	self.owner.acc_mgr:stop_searching_email()
	self.ca_st_email:InitTexture("ui_inGame2_lamp_RED")
	self.ca_email_valid = false
end
function gamespy_page:OnEmailSearchComplete(founded, descr)
	self.gs_mb_create_vemail_cancel:HideDialog()
	if (founded) then
		self.ca_st_email:InitTexture("ui_inGame2_lamp_RED")
	    self.ca_error:SetText(game.translate_string("ui_mp_gamespy_email_already_exist"))
	    self.ca_email_valid = false
	else
		self.ca_st_email:InitTexture("ui_inGame2_lamp_GREEN")
		self.ca_error:SetText("")
		self.ca_email_valid = true
	end
	self:CheckAccCreationAbility()
end
function gamespy_page:TerminateVerifyNick()
	self.owner.acc_mgr:stop_suggest_unique_nicks()
	self.ca_st_unique_nick:InitTexture("ui_inGame2_lamp_RED")
	self.ca_unique_nick_valid = false
end
function gamespy_page:OnNickSuggestionComplete(tmp, descr)
    self.gs_mb_create_vnick_cancel:HideDialog()
    self.btn_create_acc:Enable(false)
	if(tmp>0) then
	    local num = 1
	    for i in (self.owner.acc_mgr:get_suggested_unicks()) do
	        if(i==self.ca_unique_nick:GetText()) then
	            self.ca_st_unique_nick:InitTexture("ui_inGame2_lamp_GREEN")
	            self.ca_unique_nick_valid = true
	            self.btn_create_acc:Enable(true)
	            self.ca_combo_aval_unique_nick:Show(false)
	            self:CheckAccCreationAbility()
	            return
	        end
	        self.ca_combo_aval_unique_nick:AddItem(i, num)
	        num = num + 1
	    end
		local first_name = self.ca_combo_aval_unique_nick:GetTextOf(0)
		self.ca_combo_aval_unique_nick:SetText(first_name)
        self.ca_st_unique_nick:InitTexture("ui_inGame2_lamp_RED")
        self.gs_message_box:InitMessageBox("message_box_gs_result")
        self.gs_message_box:SetText("ui_mp_gamespy_verify_nickname_error1")
        self.gs_message_box:ShowDialog(true)
        self.ca_unique_nick_valid = false
	else
        self.ca_st_unique_nick:InitTexture("ui_inGame2_lamp_RED")
        self.gs_message_box:InitMessageBox("message_box_gs_result")
        self.gs_message_box:SetText(descr)
        self.gs_message_box:ShowDialog(true)
        self.ca_unique_nick_valid = false
	end
	self:CheckAccCreationAbility()
end
function gamespy_page:OnUniqueNickSelect()
	self.ca_unique_nick:SetText(self.ca_combo_aval_unique_nick:GetText())
	self:OnEditCAUniqueNickChanged()
	self:CheckAccCreationAbility()
end
function gamespy_page:AccountCreationResult(tmp, descr)
    self.gs_message_box:HideDialog()
	if (descr=="") then
        self.gs_create_mb_result:InitMessageBox("message_box_gs_result")
        self.gs_create_mb_result:SetText("ui_mp_gamespy_profile_created")
        self.gs_create_mb_result:ShowDialog(true)
	else
        self.gs_message_box:InitMessageBox("message_box_gs_result")
        self.gs_message_box:SetText(descr)
        self.gs_message_box:ShowDialog(true)
	end
end
Аватара пользователя
lxa85

Re: Разное - [решено] Язык LUA

Сообщение lxa85 »

by_gangster, а можешь запаковать все файлы (мода?) и прикрепить архив?
Аватара пользователя
by_gangster

Re: Разное - [решено] Язык LUA

Сообщение by_gangster »

lxa85, Все файлы ? Будет оочень много весить...


Цитата lxa85:



мода
Разное - [решено] Язык LUA




лучше оригиналы

Могу только запаковать все скрипты и xml'ки
Ответить

Вернуться в «Программирование и базы данных»