Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
xranzei 1
xranzei
quickxd 1
quickxd
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Cevaplandı CTRL + G ile ata binme ve kısayollar hakkında

  • Konuyu başlatan Konuyu başlatan ByBURTLU
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 6
  • Görüntüleme Görüntüleme 607

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Merhaba, kullandığım fileste ata sadece ctrl+h tuşu ile biniliyor haliyle de inip binmek zor oluyor. Bineklere ztrl+g ile binilebiliyor. Aynı şekilde atlara da binilebilmesini istiyorum nasıl ayarlayabilirim? Ayrıca filesten simyayı kaldırdım ancak "O" tuşu ile açılabiliyor. game.py'den ilgili komutu yorum satırı haline getirdim ama sonuç alamadım.
 

Ekli dosyalar

  • Ekran Alıntısı.JPG
    Ekran Alıntısı.JPG
    143.7 KB · Görüntüleme: 68
[CODE lang="python" title="game.py"]import PYTHON_DYNAMIC_MODULE_2019 as pythonApi
app = __import__(pythonApi.GetModuleName("app"))
chr = __import__(pythonApi.GetModuleName("chr"))
chrmgr = __import__(pythonApi.GetModuleName("chrmgr"))
player = __import__(pythonApi.GetModuleName("player"))
net = __import__(pythonApi.GetModuleName("net"))
pack = __import__(pythonApi.GetModuleName("pack"))
background = __import__(pythonApi.GetModuleName("background"))
chat = __import__(pythonApi.GetModuleName("chat"))
textTail = __import__(pythonApi.GetModuleName("textTail"))
event = __import__(pythonApi.GetModuleName("event"))
effect = __import__(pythonApi.GetModuleName("effect"))
systemSetting = __import__(pythonApi.GetModuleName("systemSetting"))
quest = __import__(pythonApi.GetModuleName("quest"))
guild = __import__(pythonApi.GetModuleName("guild"))
skill = __import__(pythonApi.GetModuleName("skill"))
messenger = __import__(pythonApi.GetModuleName("messenger"))
exchange = __import__(pythonApi.GetModuleName("exchange"))
ime = __import__(pythonApi.GetModuleName("ime"))
item = __import__(pythonApi.GetModuleName("item"))
import uiDungeonInfo
import os
import dbg
import uiaverage_price
import locale
import datetime
import grp
import uipetsystem
import snd
import uicooltime
import uicalendarsystem

import uimaintenanceinfo
import wndMgr
import fly
import ceviri
import hydracooltime
import mashroomcooltime
import midgardcooltime
import constInfo
import ui
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget
import uiTaskbar
import uiPrivateShopBuilder
import ui12zi
import time
import serverInfo
import mouseModule
import consoleModule
import localeInfo
import playerSettingModule
import interfaceModule
#import uibiowindow
import uiblood_dungeon
import uistone_event
import musicInfo
import debugInfo
import stringCommander
from _weakref import proxy
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = None
svsidedia = None
svsidedi_cp = ""
from svsideoi import SvsideDialog
import binascii
import uiGuild
import uiruhtasi
import uisageruhtasi
import uibkoku
import uibosstracking
import uibiyolog
if app.ENABLE_HEALTH_BOARD_SYSTEM:
import uiNewPlayerGauge

import uiWhisperAdmin

if app.ENABLE_ADMIN_BAN_MANAGER:
import uiadmintool

if localeInfo.IsEUROPE():
SCREENSHOT_CWDSAVE = TRUE

if localeInfo.IsCIBN10():
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = "YT2W"

import uiachievement
import ogs_takvim

cameraDistance = 1550.0
cameraPitch = 27.0
cameraRotation = 0.0
cameraHeight = 100.0

testAlignment = 0

import uisupportshaman
import uiautohunt

if app.ENABLE_AURA_SYSTEM:
import uiAuraSystem

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
import uikeyboardsettings

class GameWindow(ui.ScriptWindow):
MailBoxOpenT = 0
TestTimerBlanka = 0
TestSayacBlanka = 0
AutoHuntRebornT = 0
def __init__(self, stream):
ui.ScriptWindow.__init__(self, "GAME")
self.SetWindowName("game")
net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
player.SetGameWindow(self)

self.uiNewShopCreate = None
self.uiNewShop = None

global svsidedia
if svsidedia == None:
svsidedia = SvsideDialog()
svsidedia.Board.Hide()
self.wndPopupDialog = None
self.wndPopupDialog2 = None
self.quickSlotPageIndex = 0
self.lastPKModeSendedTime = 0

self.pressNumber = None
self.newquickSlotPageIndex = 0


self.guildWarQuestionDialog = None
self.interface = None
self.targetBoard = None
self.console = None
self.mapNameShower = None
self.affectShower = None
self.playerGauge = None
self.uiGuiEventPage = None
self.biyoekran = None
self.generalInfo = None
self.generalInfo2 = None
self.Problem_Report = None
self.Problem_Report_Wnd = None
self.endTime = 0
self.achievement = None
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings = None

self.stream=stream
self.interface = interfaceModule.Interface()
self.interface.SetStream(self.stream)
self.interface.MakeInterface()
self.interface.ShowDefaultWindows()
self.stream.isAutoSelect = 0

self.curtain = uiPhaseCurtain.PhaseCurtain()
self.curtain.speed = 0.03
self.curtain.Hide()

self.targetBoard = uiTarget.TargetBoard()
self.targetBoard.SetWhisperEvent(ui.__mem_func__(self.interface.OpenWhisperDialog))
self.targetBoard.Hide()

self.petmain = uipetsystem.PetSystemMain()
self.petmini = uipetsystem.PetSystemMini()

self.console = consoleModule.ConsoleWindow()
self.console.BindGameClass(self)
self.console.SetConsoleSize(wndMgr.GetScreenWidth(), 200)
self.console.Hide()

self.support_shaman = uisupportshaman.SupportShamanDialog()
self.achievement = uiachievement.AchievementDialog()
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings = uikeyboardsettings.KeyChangeWindow(self)
self.interface.dlgSystem.BindKeyboardWindow(self.dlgKeyboardSettings)
self.mapNameShower = uiMapNameShower.MapNameShower()
self.affectShower = uiAffectShower.AffectShower()


self.autohunt = uiautohunt.AutoHunt()
self.autohunt.Hide()

self.ruhtasi = uiruhtasi.RuhTasi()
self.ruhtasi.Hide()

self.sageruhtasi = uisageruhtasi.SageRuhTasi()
self.sageruhtasi.Hide()

self.average_price = uiaverage_price.AveragePrice()
self.average_price.Hide()

self.bkoku = uibkoku.BKOku()
self.bkoku.Hide()

self.bosstracking = uibosstracking.BossTrackingInfoWindow()
self.bosstracking.Hide()

self.cooltimenew = uicooltime.CoolTimeNew()
self.cooltimenew.Hide()

self.wndShipImageCoolTime = hydracooltime.ImageCoolTimeTest()
self.wndShipImageCoolTime.Close()

self.wndMashroomImageCoolTime = mashroomcooltime.ImageCoolTimeTest()
self.wndMashroomImageCoolTime.Close()

self.wndMidgardImageCoolTime = midgardcooltime.ImageCoolTimeTest()
self.wndMidgardImageCoolTime.Close()

self.maintenanceinfo = uimaintenanceinfo.InformationWindow()
self.maintenanceinfo.Hide()

self.biyoekran = uibiyolog.BiyologEkran()
self.biyoekran.Hide()

self.blood_dungeon = uiblood_dungeon.BloodDungeonSystemWindow()
self.blood_dungeon.Hide()

self.stone_event = uistone_event.StoneEventWindow()
self.stone_event.Hide()

self.ui12zi = ui12zi.BeadWindow()
self.ui12zi.Hide()

self.playerGauge = uiPlayerGauge.PlayerGauge(self)
self.playerGauge.Hide()

# self.biowindow = uibiowindow.BiologWnd()
# self.biowindow.Hide()

self.whisperAdmin = uiWhisperAdmin.AdminWhisperManager()
self.whisperAdmin.Close()

if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge = uiNewPlayerGauge.NewPlayerGauge(self)
self.newPlayerGauge.Hide()

if app.ENABLE_ADMIN_BAN_MANAGER:
self.wndAdminTool = uiadmintool.AdminTool()

#wj 2014.1.2. ESC키를 누를 시 우선적으로 DropQuestionDialog를 끄도록 만들었다. 하지만 처음에 itemDropQuestionDialog가 선언되어 있지 않아 ERROR가 발생하여 init에서 선언과 동시에 초기화 시킴.
self.itemDropQuestionDialog = None

self.SetQuickSlotMode()

self.__ServerCommand_Build()
self.__ProcessPreservedServerCommand()

self.timeLine = None
self.timeLine = ui.TextLine()
self.timeLine.SetFontName(localeInfo.UI_DEF_FONT)
self.timeLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 154+13)

self.fpsLine = None
self.fpsLine = ui.TextLine()
self.fpsLine.SetFontColor(1.0,1.0,1.0)
self.fpsLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 195)

self.pingLine = None
self.pingLine = ui.TextLine()
self.pingLine.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
self.pingLine.SetFontColor(1.0,1.0,1.0)
#self.pingLine.SetPosition((wndMgr.GetScreenWidth() - 325) / 2, 10)
self.pingLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 207)

constInfo.INTERFACE_MODULE = self.interface
event.SetGameWindow(self)

def __del__(self):
player.SetGameWindow(0)
net.ClearPhaseWindow(net.PHASE_WINDOW_GAME, self)
ui.ScriptWindow.__del__(self)
event.SetGameWindow(None)


def TestServerModeOn(self):
pass
# if constInfo.BETA_SERVER_TEXT_MODE == 1:
# self.generalInfo = ui.TextLine()
# self.generalInfo.SetFontName("Arial:17")
# self.generalInfo.SetPosition(0,87)
# self.generalInfo.SetWindowHorizontalAlignCenter()
# self.generalInfo.SetText("Serverimiz hen? test aamas?dad?")
# self.generalInfo.SetHorizontalAlignCenter()
# self.generalInfo.SetFeather()
# self.generalInfo.SetOutline()
# self.generalInfo.Show()

# self.generalInfo2 = ui.TextLine()
# self.generalInfo2.SetFontName("Arial:17")
# self.generalInfo2.SetPosition(0,102)
# self.generalInfo2.SetWindowHorizontalAlignCenter()
# self.generalInfo2.SetText("G?d??? sorun ve buglar?adminlere bildiriniz.")
# self.generalInfo2.SetHorizontalAlignCenter()
# self.generalInfo2.SetFeather()
# self.generalInfo2.SetOutline()
# self.generalInfo2.Show()

# self.comXp = Component()
# self.Problem_Report = ui.Button()
# self.Problem_Report.SetPosition(0,125)
# self.Problem_Report.SetUpVisual('d:/ymir work/ui/public/XLarge_Button_01.sub')
# self.Problem_Report.SetOverVisual('d:/ymir work/ui/public/XLarge_Button_02.sub')
# self.Problem_Report.SetDownVisual('d:/ymir work/ui/public/XLarge_Button_03.sub')
# self.Problem_Report.SetText("Sorun Bildir.")
# self.Problem_Report.SetEvent(ui.__mem_func__(self.Problem_Report_Client))
# self.Problem_Report.SetWindowHorizontalAlignCenter()
# #self.Problem_Report.SetFeather()
# #self.Problem_Report.SetOutline()
# self.Problem_Report.Show()

def Open(self):
app.SetFrameSkip(1)

#self.TestServerModeOn()

self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.newquickSlotPageIndex = 0

import uiNewShop
self.uiNewShop = uiNewShop.ShopDialog()
self.uiNewShop.Close()
self.uiNewShopCreate = uiNewShop.ShopDialogCreate()
self.uiNewShopCreate.Hide()

self.quickSlotPageIndex = 0
self.PickingCharacterIndex = -1
self.PickingItemIndex = -1
self.consoleEnable = FALSE
self.isShowDebugInfo = FALSE
self.ShowNameFlag = FALSE

self.enableXMasBoom = FALSE
self.startTimeXMasBoom = 0.0
self.indexXMasBoom = 0

global cameraDistance, cameraPitch, cameraRotation, cameraHeight

app.SetCamera(cameraDistance, cameraPitch, cameraRotation, cameraHeight)

constInfo.SET_DEFAULT_CAMERA_MAX_DISTANCE()
constInfo.SET_DEFAULT_CHRNAME_COLOR()
constInfo.SET_DEFAULT_FOG_LEVEL()
constInfo.SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE()
constInfo.SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS()
constInfo.SET_DEFAULT_USE_SKILL_EFFECT_ENABLE()

# TWO_HANDED_WEAPON_ATTACK_SPEED_UP
constInfo.SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE()
# END_OF_TWO_HANDED_WEAPON_ATTACK_SPEED_UP

event.SetLeftTimeString(localeInfo.UI_LEFT_TIME)

textTail.EnablePKTitle(constInfo.PVPMODE_ENABLE)

if constInfo.PVPMODE_TEST_ENABLE:
self.testPKMode = ui.TextLine()
self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
self.testPKMode.SetPosition(0, 15)
self.testPKMode.SetWindowHorizontalAlignCenter()
self.testPKMode.SetHorizontalAlignCenter()
self.testPKMode.SetFeather()
self.testPKMode.SetOutline()
self.testPKMode.Show()

self.testAlignment = ui.TextLine()
self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
self.testAlignment.SetPosition(0, 35)
self.testAlignment.SetWindowHorizontalAlignCenter()
self.testAlignment.SetHorizontalAlignCenter()
self.testAlignment.SetFeather()
self.testAlignment.SetOutline()
self.testAlignment.Show()

self.__BuildKeyDict()
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings.BuildKeyDict()
self.__BuildDebugInfo()

# PRIVATE_SHOP_PRICE_LIST
uiPrivateShopBuilder.Clear()
# END_OF_PRIVATE_SHOP_PRICE_LIST

# UNKNOWN_UPDATE
exchange.InitTrading()
# END_OF_UNKNOWN_UPDATE


## Sound
snd.SetMusicVolume(systemSetting.GetMusicVolume()*net.GetFieldMusicVolume())
snd.SetSoundVolume(systemSetting.GetSoundVolume())

netFieldMusicFileName = net.GetFieldMusicFileName()
if netFieldMusicFileName:
snd.FadeInMusic("BGM/" + netFieldMusicFileName)
elif musicInfo.fieldMusic != "":
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

self.SetQuickSlotMode()
self.SetNewQuickSlotMode()
self.SelectQuickPage(self.quickSlotPageIndex)

self.SetFocus()
self.Show()
app.ShowCursor()

net.SendEnterGamePacket()

# START_GAME_ERROR_EXIT
try:
self.StartGame()
except:
import exception
exception.Abort("GameWindow.Open")
# END_OF_START_GAME_ERROR_EXIT

# NPC가 큐브시스템으로 만들 수 있는 아이템들의 목록을 캐싱
# ex) cubeInformation[20383] = [ {"rewordVNUM": 72723, "rewordCount": 1, "materialInfo": "101,1&102,2", "price": 999 }, ... ]
self.cubeInformation = {}
self.currentCubeNPC = 0

if app.ENABLE_FOG_FIX:
if systemSetting.IsFogMode():
background.SetEnvironmentFog(True)
else:
background.SetEnvironmentFog(False)

if systemSetting.GetNightMode():
systemSetting.SetNightMode(True)
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)
else:
systemSetting.SetNightMode(False)
background.SetEnvironmentData(0)

if systemSetting.IsSnowTexturesMode():
if background.GetCurrentMapName():
snow_maps = [
"metin2_map_a1",
"metin2_map_b1",
"metin2_map_c1"
]
snow_maps_textures = {
"metin2_map_a1" : "textureset\metin2_a1_snow.txt",
"metin2_map_b1" : "textureset\metin2_b1_snow.txt",
"metin2_map_c1" : "textureset\metin2_c1_snow.txt", }
if str(background.GetCurrentMapName()) in snow_maps:
background.TextureChange(snow_maps_textures[str(background.GetCurrentMapName())])
if systemSetting.IsDesertTexturesMode():
if background.GetCurrentMapName():
snow_maps = [
"metin2_map_a1",
"metin2_map_b1",
"metin2_map_c1"
]
snow_maps_textures = {
"metin2_map_a1" : "textureset\metin2_a1_desert.txt",
"metin2_map_b1" : "textureset\metin2_b1_desert.txt",
"metin2_map_c1" : "textureset\metin2_c1_desert.txt", }
if str(background.GetCurrentMapName()) in snow_maps:
background.TextureChange(snow_maps_textures[str(background.GetCurrentMapName())])

# if os.path.exists(str('BGM/pettopla.cfg')) and len(constInfo.PET_TOPLANANLAR) != 0:
# ac = open(str('BGM/pettopla.cfg'), 'r')
# oku = ac.readlines()
# if len(oku)>0:
# for i in xrange(len(oku)):
# parcala = oku[:-1].split("\t")
# constInfo.PET_TOPLANANLAR.append(int(parcala[0]))

def Close(self):
self.Hide()
self.wndShipImageCoolTime.Close()

self.wndMashroomImageCoolTime.Close()
self.wndMidgardImageCoolTime.Close()


global cameraDistance, cameraPitch, cameraRotation, cameraHeight
(cameraDistance, cameraPitch, cameraRotation, cameraHeight) = app.GetCamera()

if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/"+ musicInfo.fieldMusic)

self.onPressKeyDict = None
self.onClickKeyDict = None


self.uiNewShop.Hide()
self.uiNewShopCreate.Hide()
uiPrivateShopBuilder.Clear()
uiPrivateShopBuilder.ClearBoardDict()

chat.Close()
snd.StopAllSound()
grp.InitScreenEffect()
chr.Destroy()
textTail.Clear()
quest.Clear()
background.Destroy()
guild.Destroy()
messenger.Destroy()
skill.ClearSkillData()
wndMgr.Unlock()
mouseModule.mouseController.DeattachObject()

if self.guildWarQuestionDialog:
self.guildWarQuestionDialog.Close()

self.guildNameBoard = None
self.partyRequestQuestionDialog = None
self.warPlayerCheckQuestionDialog = None
self.partyInviteQuestionDialog = None
self.guildInviteQuestionDialog = None
self.guildWarQuestionDialog = None
self.messengerAddFriendQuestion = None

# UNKNOWN_UPDATE
self.itemDropQuestionDialog = None
# END_OF_UNKNOWN_UPDATE

# QUEST_CONFIRM
self.confirmDialog = None
# END_OF_QUEST_CONFIRM

self.PrintCoord = None
self.FrameRate = None
self.Pitch = None
self.Splat = None
self.TextureNum = None
self.ObjectNum = None
self.ViewDistance = None
self.PrintMousePos = None

self.ClearDictionary()

self.support_shaman.Close()

self.petmain.Close()
self.petmini.Close()
self.generalInfo = None
self.generalInfo2 = None
self.Problem_Report = None
self.Problem_Report_Wnd = None

self.playerGauge = None
if self.whisperAdmin:
self.whisperAdmin.Close()
self.whisperAdmin = None
if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge = None
self.achievement = None
self.mapNameShower = None
self.affectShower = None

#uiPrivateShopBuilder.Clear()

if self.console:
self.console.BindGameClass(0)
self.console.Close()
self.console=None

# if self.biowindow:
# self.biowindow.Destroy()
# self.biowindow = None

if self.targetBoard:
self.targetBoard.Destroy()
self.targetBoard = None

if self.ruhtasi:
self.ruhtasi.Destroy()
self.ruhtasi = None

if self.sageruhtasi:
self.sageruhtasi.Destroy()
self.sageruhtasi = None

if self.average_price:
self.average_price.Destroy()
self.average_price = None

if self.autohunt:
self.autohunt.Destroy()
self.autohunt = None

if self.bkoku:
self.bkoku.Destroy()
self.bkoku = None

if self.bosstracking:
self.bosstracking.Destroy()
self.bosstracking = None

if self.cooltimenew:
self.cooltimenew.Destroy()
self.cooltimenew = None

if self.maintenanceinfo:
self.maintenanceinfo.Destroy()
self.maintenanceinfo = None


if self.blood_dungeon:
self.blood_dungeon.Destroy()
self.blood_dungeon = None

if self.stone_event:
self.stone_event.Destroy()
self.stone_event = None

if self.ui12zi:
self.ui12zi.Destroy()
self.ui12zi = None

# if self.biowindow:
# self.biowindow.Destroy()
# self.biowindow = None
# if self.biyoekran:
# self.biyoekran.Destroy()
# self.biyoekran = None

if self.interface:
self.interface.HideAllWindows()
self.interface.Close()
self.interface=None

if constInfo.FPSMode == 0:
self.fpsLine.Hide()
self.pingLine.Hide()

#self.pingLine = None
self.fpsLine = None
self.timeLine = None
player.ClearSkillDict()
player.ResetCameraRotation()

self.KillFocus()
app.HideCursor()

print "---------------------------------------------------------------------------- CLOSE GAME WINDOW"


def IsBloodDungeonSystemWindow(self):
if str(background.GetCurrentMapName()) == "metin2_map_t1" and not self.blood_dungeon.IsShow():
self.blood_dungeon.Hide() ## Show
net.SendChatPacket("/pkmode 4", chat.CHAT_TYPE_TALKING)

def __BuildKeyDict(self):
onPressKeyDict = {}

onPressKeyDict[app.DIK_1] = lambda : self.PressNumKey(1)
onPressKeyDict[app.DIK_2] = lambda : self.PressNumKey(2)
onPressKeyDict[app.DIK_3] = lambda : self.PressNumKey(3)
onPressKeyDict[app.DIK_4] = lambda : self.PressNumKey(4)
onPressKeyDict[app.DIK_5] = lambda : self.PressNumKey(5)
onPressKeyDict[app.DIK_6] = lambda : self.PressNumKey(6)
onPressKeyDict[app.DIK_7] = lambda : self.PressNumKey(7)
onPressKeyDict[app.DIK_8] = lambda : self.PressNumKey(8)
onPressKeyDict[app.DIK_9] = lambda : self.PressNumKey(9)
onPressKeyDict[app.DIK_F1] = lambda : self.PressQuickSlot(4)
onPressKeyDict[app.DIK_F2] = lambda : self.PressQuickSlot(5)
onPressKeyDict[app.DIK_F3] = lambda : self.PressQuickSlot(6)
onPressKeyDict[app.DIK_F4] = lambda : self.PressQuickSlot(7)
onPressKeyDict[app.DIK_5] = lambda : self.PressNumNewKey(5)
onPressKeyDict[app.DIK_6] = lambda : self.PressNumNewKey(6)
onPressKeyDict[app.DIK_7] = lambda : self.PressNumNewKey(7)
onPressKeyDict[app.DIK_8] = lambda : self.PressNumNewKey(8)
onPressKeyDict[app.DIK_F5] = lambda : self.PressNewQuickSlot(4)
onPressKeyDict[app.DIK_F6] = lambda : self.PressNewQuickSlot(5)
onPressKeyDict[app.DIK_F7] = lambda : self.PressNewQuickSlot(6)
onPressKeyDict[app.DIK_F8] = lambda : self.PressNewQuickSlot(7)

onPressKeyDict[app.DIK_F9] = lambda : self.OpenSupportShamanGui()
onPressKeyDict[app.DIK_F11] = lambda : self.whisperAdmin.OpenWindow()
#onPressKeyDict[app.DIK_F12] = lambda : self.RenderTargetGuiOpen()
#if app.ENABLE_DUNGEON_INFO_SYSTEM:
# onPressKeyDict[app.DIK_F9] = lambda : self.OpenDungeonInfoWindow()

onPressKeyDict[app.DIK_LALT] = lambda : self.ShowName()
onPressKeyDict[app.DIK_LCONTROL] = lambda : self.ShowMouseImage()
onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()

#캐릭터 이동키
onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_RIGHT] = lambda : self.MoveRight()
onPressKeyDict[app.DIK_W] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_S] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_A] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_D] = lambda : self.MoveRight()

onPressKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_TO_NEGATIVE)
#onPressKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_G] = self.PressGKey
onPressKeyDict[app.DIK_Q] = self.PressQKey

onPressKeyDict[app.DIK_NUMPAD9] = lambda: app.MovieResetCamera()
onPressKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_GRAVE] = lambda : self.PickUpItem()
onPressKeyDict[app.DIK_Z] = lambda : self.PickUpItem()
#onPressKeyDict[app.DIK_X] = lambda: self.interface.ToggleBonusWindow()
onPressKeyDict[app.DIK_C] = lambda state = "STATUS": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_V] = lambda state = "SKILL": self.interface.ToggleCharacterWindow(state)
#onPressKeyDict[app.DIK_B] = lambda state = "EMOTICON": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_N] = lambda state = "QUEST": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow()
#onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()
onPressKeyDict[app.DIK_M] = lambda : self.interface.PressMKey()
#onPressKeyDict[app.DIK_H] = lambda : self.interface.OpenHelpWindow()
onPressKeyDict[app.DIK_ADD] = lambda : self.interface.MiniMapScaleUp()
onPressKeyDict[app.DIK_SUBTRACT] = lambda : self.interface.MiniMapScaleDown()
onPressKeyDict[app.DIK_L] = lambda : self.interface.ToggleChatLogWindow()
onPressKeyDict[app.DIK_COMMA] = lambda : self.ShowConsole() # "`" key
onPressKeyDict[app.DIK_LSHIFT] = lambda : self.SetQuickPageMode()

onPressKeyDict[app.DIK_J] = lambda : self.PressJKey()
onPressKeyDict[app.DIK_H] = lambda : self.PressHKey()
onPressKeyDict[app.DIK_B] = lambda : self.PressBKey()
onPressKeyDict[app.DIK_F] = lambda : self.PressFKey()

# CUBE_TEST
#onPressKeyDict[app.DIK_K] = lambda : self.interface.OpenCubeWindow()
# CUBE_TEST_END
if app.WJ_SPLIT_INVENTORY_SYSTEM:
onPressKeyDict[app.DIK_K] = lambda : self.PressExtendedInventory()



self.onPressKeyDict = onPressKeyDict

onClickKeyDict = {}
onClickKeyDict[app.DIK_UP] = lambda : self.StopUp()
onClickKeyDict[app.DIK_DOWN] = lambda : self.StopDown()
onClickKeyDict[app.DIK_LEFT] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_RIGHT] = lambda : self.StopRight()
onClickKeyDict[app.DIK_SPACE] = lambda : self.EndAttack()

onClickKeyDict[app.DIK_W] = lambda : self.StopUp()
onClickKeyDict[app.DIK_S] = lambda : self.StopDown()
onClickKeyDict[app.DIK_A] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_D] = lambda : self.StopRight()
onClickKeyDict[app.DIK_Q] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_G] = lambda: self.__ReleaseGKey()
onClickKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_LALT] = lambda: self.HideName()
onClickKeyDict[app.DIK_LCONTROL] = lambda: self.HideMouseImage()
onClickKeyDict[app.DIK_LSHIFT] = lambda: self.SetQuickSlotMode()
onClickKeyDict[app.DIK_P] = lambda: self.OpenPetMainGui()

#if constInfo.PVPMODE_ACCELKEY_ENABLE:
# onClickKeyDict[app.DIK_B] = lambda: self.ChangePKMode()

self.onClickKeyDict=onClickKeyDict

if app.WJ_SPLIT_INVENTORY_SYSTEM:
def PressExtendedInventory(self):
if self.interface:
self.interface.ToggleExtendedInventoryWindow()

def DragonSouldQuestIndex(self, arg):
constInfo.DRAGON_SOULD_REFINE_QUEST_INDEX = int(arg)

def SupportInformationWnd(self, msg, msg1):
newmsg = str(msg.replace("-"," "))
newmsg2 = str(msg1.replace("-"," "))
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1(newmsg)
self.wndPopupDialog.SetText2(newmsg2)
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(30)

def SupportInformationWndClose(self):
self.SupportInformationOnCloseQuestionDialog()

if self.wndPopupDialog:
self.wndPopupDialog.Hide()
self.wndPopupDialog = None

def SupportInformationOnCloseQuestionDialog(self):
if not self.wndPopupDialog:
return

#self.wndPopupDialog.Close()
self.wndPopupDialog = None
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

def PressNumKey(self,num):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):

if num >= 1 and num <= 9:
if (chrmgr.IsPossibleEmoticon(-1)):
chrmgr.SetEmoticon(-1,int(num)-1)
net.SendEmoticon(int(num)-1)
else:
if num >= 1 and num <= 4:
self.pressNumber(num-1)

def ClickBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
return
else:
if constInfo.PVPMODE_ACCELKEY_ENABLE:
self.ChangePKMode()


def PressJKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsMountingHorse():
net.SendChatPacket("/unmount")
else:
if not uiPrivateShopBuilder.IsBuildingPrivateShop():
if app.ENABLE_MOUNT_SYSTEM:
for i in xrange(player.INVENTORY_PAGE_SIZE * 4):
index = player.GetItemIndex(i)
if index:
item.SelectItem(index)
subType = item.GetItemSubType()
if subType == item.USE_MOUNT:
allow = 0
net.SendItemUsePacket(i)
break
else:
for i in xrange(player.INVENTORY_PAGE_SIZE * 4):
if player.GetItemIndex(i) in (52043, 52044, 52045, 71164, 71165, 71166, 71167, 71168, 52091, 52092, 52093, 52094, 52095, 52096, 52097, 52098, 71161, 71131, 52033, 52005, 52019, 71176, 71177):
net.SendItemUsePacket(i)
break
def PressHKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_ride")
else:
self.interface.OpenHelpWindow()

def PressBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_back")
else:
state = "EMOTICON"
self.interface.ToggleCharacterWindow(state)

def PressFKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_feed")
else:
app.ZoomCamera(app.CAMERA_TO_POSITIVE)

def PressGKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_mount_ride")
net.SendChatPacket("/user_horse_ride")
else:
if self.ShowNameFlag:
self.interface.ToggleGuildWindow()
else:
app.PitchCamera(app.CAMERA_TO_POSITIVE)

def ReleaseGKey(self):
app.PitchCamera(app.CAMERA_STOP)

if app.ENABLE_ADMIN_BAN_MANAGER:
def OpenAdminTool(self):
if not chr.IsGameMaster(player.GetMainCharacterIndex()):
return
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL): # Open window with CTRL + F12
if self.wndAdminTool.IsShow():
self.wndAdminTool.Hide()
else:
self.wndAdminTool.Show()

def PressQKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0==interfaceModule.IsQBHide:
interfaceModule.IsQBHide = 1
self.interface.HideAllQuestButton()
else:
interfaceModule.IsQBHide = 0
self.interface.ShowAllQuestButton()
else:
app.RotateCamera(app.CAMERA_TO_NEGATIVE)

def PressJKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsmountingHorse():
net.SendChatPacket("/unmount")
else:
self.teleport.Open()

def SetQuickSlotMode(self):
self.pressNumber=ui.__mem_func__(self.PressQuickSlot)

def SetQuickPageMode(self):
self.pressNumber=ui.__mem_func__(self.SelectQuickPage)

def PressQuickSlot(self, localSlotIndex):
if localeInfo.IsARABIC():
if 0 <= localSlotIndex and localSlotIndex < 4:
player.RequestUseLocalQuickSlot(3-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(11-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(localSlotIndex)

def SelectQuickPage(self, pageIndex):
self.quickSlotPageIndex = pageIndex
player.SetQuickPage(pageIndex)

def PressNumNewKey(self, key):
if key > 8:
return
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):

if key >= 5 and key <= 8:
if(chrmgr.IsPossibleEmoticon(- 1)):
chrmgr.SetEmoticon(- 1, int(key) - 1)
net.SendEmoticon(int(key) - 1)
else:
self.pressNewNumber((key - 1) - 4)

def SetNewQuickSlotMode(self):
self.pressNewNumber = ui.__mem_func__(self.PressNewQuickSlot)

def SetNewQuickPageMode(self):
self.pressNewNumber = ui.__mem_func__(self.SelectNewQuickPage)

def PressNewQuickSlot(self, localSlotIndex):
player.RequestUseLocalNewQuickSlot(localSlotIndex)

def SelectNewQuickPage(self, pageIndex):
self.newquickSlotPageIndex = pageIndex
player.SetNewQuickPage(pageIndex)

def ToggleDebugInfo(self):
self.isShowDebugInfo = not self.isShowDebugInfo

if self.isShowDebugInfo:
self.PrintCoord.Show()
self.FrameRate.Show()
self.Pitch.Show()
self.Splat.Show()
self.TextureNum.Show()
self.ObjectNum.Show()
self.ViewDistance.Show()
self.PrintMousePos.Show()
else:
self.PrintCoord.Hide()
self.FrameRate.Hide()
self.Pitch.Hide()
self.Splat.Hide()
self.TextureNum.Hide()
self.ObjectNum.Hide()
self.ViewDistance.Hide()
self.PrintMousePos.Hide()

def __BuildDebugInfo(self):
## Character Position Coordinate
self.PrintCoord = ui.TextLine()
self.PrintCoord.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintCoord.SetPosition(wndMgr.GetScreenWidth() - 270, 0)

## Frame Rate
self.FrameRate = ui.TextLine()
self.FrameRate.SetFontName(localeInfo.UI_DEF_FONT)
self.FrameRate.SetPosition(wndMgr.GetScreenWidth() - 270, 20)

## Camera Pitch
self.Pitch = ui.TextLine()
self.Pitch.SetFontName(localeInfo.UI_DEF_FONT)
self.Pitch.SetPosition(wndMgr.GetScreenWidth() - 270, 40)

## Splat
self.Splat = ui.TextLine()
self.Splat.SetFontName(localeInfo.UI_DEF_FONT)
self.Splat.SetPosition(wndMgr.GetScreenWidth() - 270, 60)

##
self.PrintMousePos = ui.TextLine()
self.PrintMousePos.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintMousePos.SetPosition(wndMgr.GetScreenWidth() - 270, 80)

# TextureNum
self.TextureNum = ui.TextLine()
self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)

# 오브젝트 그리는 개수
self.ObjectNum = ui.TextLine()
self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)

# 시야거리
self.ViewDistance = ui.TextLine()
self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
self.ViewDistance.SetPosition(0, 0)

self.timeLine.SetWindowHorizontalAlignCenter()
self.timeLine.SetHorizontalAlignCenter()
self.timeLine.SetFeather()
self.timeLine.SetOutline()
self.timeLine.Show()


self.fpsLine.SetWindowHorizontalAlignCenter()
self.fpsLine.SetHorizontalAlignCenter()
self.fpsLine.SetFeather()
self.fpsLine.SetOutline()
if constInfo.FPSMode == 1:
self.fpsLine.Show()
else:
self.fpsLine.Hide()

self.pingLine.SetWindowHorizontalAlignCenter()
self.pingLine.SetHorizontalAlignCenter()
self.pingLine.SetFeather()
self.pingLine.SetOutline()
self.pingLine.Hide()

def __NotifyError(self, msg):
chat.AppendChat(chat.CHAT_TYPE_INFO, msg)

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
def PressNumberKey(self, key):
self.pressNumber(key)

def PressQuickSlot(self, key):
player.RequestUseLocalQuickSlot(key)

def SelectQuickPage(self, key):
if app.IsPressed(app.DIK_LSHIFT):
self.quickSlotPageIndex = key
player.SetQuickPage(key)

def SetEmoticon(self, key):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if (chrmgr.IsPossibleEmoticon(-1)):
chrmgr.SetEmoticon(-1, key)
net.SendEmoticon(key)

def ShowNameNew(self):
self.ShowNameFlag = True
self.playerGauge.EnableShowAlways()

def HideNameNew(self):
self.ShowNameFlag = False
self.playerGauge.DisableShowAlways()

def PressExtraKey(self, key):
if key == "RIDE_HORSE":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_ride")

elif key == "RIDE_PEED":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_feed")

elif key == "RIDE":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_mount_ride")
else:
if self.ShowNameFlag:
self.interface.ToggleGuildWindow()
else:
app.PitchCamera(app.CAMERA_TO_POSITIVE)

elif key == "RIDE_J":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsMountingHorse():
net.SendChatPacket("/unmount")
else:
if not uiPrivateShopBuilder.IsBuildingPrivateShop():
if app.ENABLE_MOUNT_SYSTEM:
for i in xrange(180):
index = player.GetItemIndex(i)
if index:
item.SelectItem(index)
subType = item.GetItemSubType()
if subType == item.USE_MOUNT:
net.SendItemUsePacket(i)
break
else:
return

elif key == "RIDE_BYE":
net.SendChatPacket("/user_horse_back")

elif key == "QUEST_SCROLL_ONOFF":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0 == interfaceModule.IsQBHide:
interfaceModule.IsQBHide = 1
self.interface.HideAllQuestButton()
else:
interfaceModule.IsQBHide = 0
self.interface.ShowAllQuestButton()

elif key == "GUILD_WINDOW":
if app.IsPressed(app.DIK_LALT):
self.interface.ToggleGuildWindow()

elif key == "MESSENGER_WINDOW":
if app.IsPressed(app.DIK_LCONTROL):
self.interface.ToggleMessenger()

elif key == "SHOW_MINIMAP":
if app.IsPressed(app.DIK_LSHIFT):
if False == self.interface.wndMiniMap.isShowMiniMap():
self.interface.wndMiniMap.ShowMiniMap()
self.interface.wndMiniMap.SetTop()
else:
self.interface.wndMiniMap.HideMiniMap()

# elif key == "HIDE_PM":
# if 0 == interfaceModule.IsWisperHide:
# interfaceModule.IsWisperHide = 1
# self.interface.HideAllWhisperButton()
# else:
# interfaceModule.IsWisperHide = 0
# self.interface.ShowAllWhisperButton()

elif key == "OPEN_WHISPER":
self.interface.OpenWhisperDialogWithoutTarget()


def ChangePKMode(self):

if not app.IsPressed(app.DIK_LCONTROL):
return

if player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
self.__NotifyError(localeInfo.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
return

curTime = app.GetTime()
if curTime - self.lastPKModeSendedTime < constInfo.PVPMODE_ACCELKEY_DELAY:
return

self.lastPKModeSendedTime = curTime

curPKMode = player.GetPKMode()
nextPKMode = curPKMode + 1
if nextPKMode == player.PK_MODE_PROTECT:
if 0 == player.GetGuildID():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
nextPKMode = 0
else:
nextPKMode = player.PK_MODE_GUILD

elif nextPKMode == player.PK_MODE_MAX_NUM:
nextPKMode = 0

net.SendChatPacket("/PKMode " + str(nextPKMode))
print "/PKMode " + str(nextPKMode)

def OnChangePKMode(self):

self.interface.OnChangePKMode()

try:
self.__NotifyError(localeInfo.OPTION_PVPMODE_MESSAGE_DICT[player.GetPKMode()])
except KeyError:
print "UNKNOWN PVPMode[%d]" % (player.GetPKMode())

if constInfo.PVPMODE_TEST_ENABLE:
curPKMode = player.GetPKMode()
alignment, grade = chr.testGetPKData()
self.pkModeNameDict = { 0 : "PEACE", 1 : "REVENGE", 2 : "FREE", 3 : "PROTECT", }
self.testPKMode.SetText("Current PK Mode : " + self.pkModeNameDict.get(curPKMode, "UNKNOWN"))
self.testAlignment.SetText("Current Alignment : " + str(alignment) + " (" + localeInfo.TITLE_NAME_LIST[grade] + ")")

###############################################################################################
###############################################################################################
## Game Callback Functions

# Start
def StartGame(self):
self.RefreshInventory()
self.RefreshEquipment()
self.RefreshCharacter()
self.RefreshSkill()

# Refresh
def CheckGameButton(self):
if self.interface:
self.interface.CheckGameButton()

def RefreshAlignment(self):
self.interface.RefreshAlignment()

def RefreshStatus(self):
self.CheckGameButton()

if self.interface:
self.interface.RefreshStatus()

if self.playerGauge:
self.playerGauge.RefreshGauge()

def RefreshStamina(self):
self.interface.RefreshStamina()

def RefreshSkill(self):
self.CheckGameButton()
if self.interface:
self.interface.RefreshSkill()

def RefreshQuest(self):
self.interface.RefreshQuest()

def RefreshMessenger(self):
self.interface.RefreshMessenger()

def RefreshGuildInfoPage(self):
self.interface.RefreshGuildInfoPage()

def RefreshGuildBoardPage(self):
self.interface.RefreshGuildBoardPage()

def RefreshGuildMemberPage(self):
self.interface.RefreshGuildMemberPage()

def RefreshGuildMemberPageGradeComboBox(self):
self.interface.RefreshGuildMemberPageGradeComboBox()

def RefreshGuildSkillPage(self):
self.interface.RefreshGuildSkillPage()

def RefreshGuildGradePage(self):
self.interface.RefreshGuildGradePage()

def RefreshMobile(self):
if self.interface:
self.interface.RefreshMobile()

def OnMobileAuthority(self):
self.interface.OnMobileAuthority()

def OnBlockMode(self, mode):
self.interface.OnBlockMode(mode)

def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1:
return

self.interface.OpenQuestWindow(skin, idx)

def HideAllQuestWindow(self):
self.interface.HideAllQuestWindow()

def GetInputOn(self):
constInfo.INPUT_IGNORE = 1

def GetInputOff(self):
constInfo.INPUT_IGNORE = 0

def AskGuildName(self):

guildNameBoard = uiCommon.InputDialog()
guildNameBoard.SetTitle(localeInfo.GUILD_NAME)
guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.ConfirmGuildName))
guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
guildNameBoard.Open()

self.guildNameBoard = guildNameBoard

def ConfirmGuildName(self):
guildName = self.guildNameBoard.GetText()
if not guildName:
return

if net.IsInsultIn(guildName):
self.PopupMessage(localeInfo.GUILD_CREATE_ERROR_INSULT_NAME)
return

net.SendAnswerMakeGuildPacket(guildName)
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUE

def CancelGuildName(self):
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUE

## Refine
def PopupMessage(self, msg):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(msg, 0, localeInfo.UI_OK)

def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, prob_ex, type=0):
self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, prob_ex, type)

def AppendMaterialToRefineDialog(self, vnum, count):
self.interface.AppendMaterialToRefineDialog(vnum, count)

def RunUseSkillEvent(self, slotIndex, coolTime):
self.interface.OnUseSkill(slotIndex, coolTime)

def ClearAffects(self):
self.affectShower.ClearAffects()

def SetAffect(self, affect):
self.affectShower.SetAffect(affect)

def ResetAffect(self, affect):
self.affectShower.ResetAffect(affect)

def RecvQuest(self, index, name):
self.interface.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())

def BINARY_RecvQuest(self, index, name, iconType, iconName):
self.interface.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())

if app.ENABLE_SHOW_CHEST_DROP:
def BINARY_AddChestDropInfo(self, chestVnum, pageIndex, slotIndex, itemVnum, itemCount):
if self.interface:
self.interface.AddChestDropInfo(chestVnum, pageIndex, slotIndex, itemVnum, itemCount)

def BINARY_RefreshChestDropInfo(self, chestVnum):
if self.interface:
self.interface.RefreshChestDropInfo(chestVnum)

def BINARY_BLOOD_DUNGEON(self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15):
self.blood_dungeon.GetBloodDungeon(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15)

def BINARY_STONE_EVENT(self, arg1):
self.stone_event.SetPoint(arg1)

# UNKNOWN_UPDATE
def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
self.BINARY_DragonSoulGiveQuilification()
elif app.ENABLE_DS_SET and chr.NEW_AFFECT_DS_SET == type:
self.interface.DragonSoulSetGrade(value)

def BINARY_NEW_RemoveAffect(self, type, pointIdx):
self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulDeactivate()
elif app.ENABLE_DS_SET and chr.NEW_AFFECT_DS_SET == type:
self.interface.DragonSoulSetGrade(0)



# END_OF_UNKNOWN_UPDATE

def ActivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnActivateSkill(slotIndex)

def DeactivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnDeactivateSkill(slotIndex)

def RefreshEquipment(self):
if self.interface:
self.interface.RefreshInventory()

def RefreshInventory(self):
if self.interface:
self.interface.RefreshInventory()

def RefreshCharacter(self):
if self.interface:
self.interface.RefreshCharacter()

def OnGameOver(self):
self.CloseTargetBoard()
self.OpenRestartDialog()

def OpenRestartDialog(self):
self.interface.OpenRestartDialog()

def ChangeCurrentSkill(self, skillSlotNumber):
self.interface.OnChangeCurrentSkill(skillSlotNumber)

if app.ENABLE_12ZI:
def OpenUI12zi(self, yellowmark, greenmark, yellowreward, greenreward, goldreward):
self.interface.OpenUI12zi(yellowmark, greenmark, yellowreward, greenreward, goldreward)

def Refresh12ziTimer(self, currentFloor, jumpCount, limitTime, elapseTime):
self.interface.Refresh12ziTimer(currentFloor, jumpCount, limitTime, elapseTime)

def Show12ziJumpButton(self):
self.interface.Show12ziJumpButton()

def Hide12ziTimer(self):
self.interface.Hide12ziTimer()

def OpenReviveDialog(self, vid, itemcount):
self.targetBoard.OpenReviveDialog(vid, itemcount);

def NotEnoughPrism(self, itemcount):
self.PopupMessage(localeInfo.NOT_ENOUGH_PRISM % (itemcount))

def RefreshShopItemToolTip(self):
self.interface.RefreshShopItemToolTip()

def __Refresh12ziTimer1(self):
net.SendChatPacket("/open_cz")

def __Refresh12ziTimer2(self, a, b, c, d, e):
self.OpenUI12zi(int(a), int(b), int(c), int(d), int(e))

def __MashRoomCoolTime(self):
if self.wndMashroomImageCoolTime:
self.wndMashroomImageCoolTime.Open()

def __MashRoomCoolTimeSetFloor(self, arg):
self.wndMashroomImageCoolTime.SetFloor(arg)


def __MidgardCoolTime(self):
if self.wndMidgardImageCoolTime:
self.wndMidgardImageCoolTime.Open()

def __MidgardCoolTimeSetFloor(self, arg):
self.wndMidgardImageCoolTime.SetFloor(arg)

## TargetBoard
def SetPCTargetBoard(self, vid, name):
self.targetBoard.Open(vid, name)

if app.IsPressed(app.DIK_LCONTROL):

if not player.IsSameEmpire(vid):
return

if player.IsMainCharacterIndex(vid):
return
elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(vid):
return

self.interface.OpenWhisperDialog(name)

def RefreshTargetBoardByVID(self, vid):
self.targetBoard.RefreshByVID(vid)

def RefreshTargetBoardByName(self, name):
self.targetBoard.RefreshByName(name)

def __RefreshTargetBoard(self):
self.targetBoard.Refresh()

if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
def SetHPTargetBoard(self, vid, hpPercentage, iMinHP, iMaxHP, bElement):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)

self.targetBoard.SetHP(hpPercentage, iMinHP, iMaxHP)
self.targetBoard.SetElementImage(bElement)
self.targetBoard.Show()
else:
def SetHPTargetBoard(self, vid, hpPercentage, bElement):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)

self.targetBoard.SetHP(hpPercentage)
self.targetBoard.SetElementImage(bElement)
self.targetBoard.Show()

def CloseTargetBoardIfDifferent(self, vid):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.Close()

def CloseTargetBoard(self):
self.targetBoard.Close()

## View Equipment
def OpenEquipmentDialog(self, vid):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.OpenEquipmentDialog(vid)

def SetEquipmentDialogItem(self, vid, slotIndex, vnum, count, sealbind, transmutation):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogItem(vid, slotIndex, vnum, count, sealbind, transmutation)

def SetEquipmentDialogSocket(self, vid, slotIndex, socketIndex, value):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogSocket(vid, slotIndex, socketIndex, value)

def SetEquipmentDialogAttr(self, vid, slotIndex, attrIndex, type, value):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogAttr(vid, slotIndex, attrIndex, type, value)

def BINARY_SET_LANG_AND_EMPIRE_FLAG(self, name, language, empire):
pass

def ViewEquipRequest(self, vid):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
vid = int(vid)
eqRequestQuestionDialog = uiCommon.QuestionDialog()
eqRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + ' giydiklerini g\xf6rmek istiyor?')
eqRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
eqRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
eqRequestQuestionDialog.SetAcceptEvent(lambda arg = True: self.AnswerViewEquipRequest(arg))
eqRequestQuestionDialog.SetCancelEvent(lambda arg = False: self.AnswerViewEquipRequest(arg))
eqRequestQuestionDialog.Open()
eqRequestQuestionDialog.vid = vid
self.eqRequestQuestionDialog = eqRequestQuestionDialog

def AnswerViewEquipRequest(self, answer):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
if not self.eqRequestQuestionDialog:
return
else:
vid = self.eqRequestQuestionDialog.vid
if answer:
net.SendChatPacket('/view_equip_accept ' + str(vid))
else:
net.SendChatPacket('/view_equip_deny ' + str(vid))
self.eqRequestQuestionDialog.Close()
self.eqRequestQuestionDialog = None
return

def ViewEquipRequestDenied(self):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.PopupMessage('Z\xfdrh g\xf6r\xfcnt\xfcleme iste\xf0i reddedildi.')

# SHOW_LOCAL_MAP_NAME
def ShowMapName(self, mapName, x, y):

if self.mapNameShower:
self.mapNameShower.ShowMapName(mapName, x, y)

if self.interface:
self.interface.SetMapName(mapName)
# END_OF_SHOW_LOCAL_MAP_NAME

def BINARY_OpenAtlasWindow(self):
self.interface.BINARY_OpenAtlasWindow()

## Chat
# if app.ENABLE_LANG_AND_EMPIRE_FLAG:
# def OnRecvWhisper(self, mode, name, line, language, empire):
# if name.find("<svside>") != -1:
# global svsidedia
# if line[line.find(",")-4:line.find(",")].isdigit():
# svsidedia.nm_updateimgoffline(line[line.find(", ")-4:line.find(", ")])
# else:
# svsidedia.Board.Hide()
# return
# if mode == chat.WHISPER_TYPE_GM:
# self.interface.RegisterGameMasterName(name)
# chat.AppendWhisper(mode, name, line)
# self.interface.RecvWhisper(name, language, empire)
# else:
def OnRecvWhisper(self, mode, name, line):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)

def BINARY_OnRecvBulkWhisper(self, content):
content = content.replace("$", " ")

self.interface.RegisterGameMasterName("<Sistem>")
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, "<Sistem>", content)

self.interface.RecvWhisper("<Sistem>")

def OnRecvWhisperSystemMessage(self, mode, name, line):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
self.interface.RecvWhisper(name)

def OnRecvWhisperError(self, mode, name, line):
if localeInfo.WHISPER_ERROR.has_key(mode):
if app.ENABLE_OFFLINE_MESSAGE:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, name + localeInfo.WHISPER_OFFLINE_MESSAGE_WARNING)
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, localeInfo.WHISPER_ERROR[mode](name))
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
self.interface.RecvWhisper(name)

def RecvWhisper(self, name):
self.interface.RecvWhisper(name)

def OnPickMoney(self, money):
chat.AppendChat(chat.CHAT_TYPE_INFO, str(localeInfo.GAME_PICK_MONEY) % (str(localeInfo.NumberToString(money))))

if app.ENABLE_CHEQUE_SYSTEM:
def OnPickCheque(self, cheque):
chat.AppendChat(chat.CHAT_TYPE_INFO, str(localeInfo.CHEQUE_SYSTEM_PICK_WON) % (str(localeInfo.NumberToString(cheque))))

def SetBeadCount(self, value):
self.interface.SetBeadCount(value)

def NextBeadUpdateTime(self, value):
self.interface.NextBeadUpdateTime(value)

def OnPickGem(self, gem):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_GEM % (localeInfo.NumberToString(gem)))

def OnPickYearRoundPoint(self, year_round_point):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_YEAR_ROUND_POINT % (localeInfo.NumberToString(year_round_point)))

def OnShopError(self, type):
try:
self.PopupMessage(localeInfo.SHOP_ERROR_DICT[type])
except KeyError:
self.PopupMessage(localeInfo.SHOP_ERROR_UNKNOWN % (type))

def OnSafeBoxError(self):
self.PopupMessage(localeInfo.SAFEBOX_ERROR)
self.interface.InitSafeboxPassword()

def OnFishingSuccess(self, isFish, fishName):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_SUCCESS(isFish, fishName), 2000)

# ADD_FISHING_MESSAGE
def OnFishingNotifyUnknown(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_UNKNOWN)

def OnFishingWrongPlace(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_WRONG_PLACE)
# END_OF_ADD_FISHING_MESSAGE

def OnFishingNotify(self, isFish, fishName):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_NOTIFY(isFish, fishName))

def OnFishingFailure(self):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_FAILURE, 2000)

def OnCannotPickItem(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_PICK_ITEM)

# MINING
def OnCannotMining(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_MINING)
# END_OF_MINING

def OnCannotUseSkill(self, vid, type):
if localeInfo.USE_SKILL_ERROR_TAIL_DICT.has_key(type):
textTail.RegisterInfoTail(vid, localeInfo.USE_SKILL_ERROR_TAIL_DICT[type])

if localeInfo.USE_SKILL_ERROR_CHAT_DICT.has_key(type):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_SKILL_ERROR_CHAT_DICT[type])

def OnCannotShotError(self, vid, type):
textTail.RegisterInfoTail(vid, localeInfo.SHOT_ERROR_TAIL_DICT.get(type, localeInfo.SHOT_ERROR_UNKNOWN % (type)))

## PointReset
def StartPointReset(self):
self.interface.OpenPointResetDialog()

## Shop
def StartShop(self, vid, count):
if(vid == constInfo.MARKED_SHOP_VID):
background.DeletePrivateShopPos()
constInfo.MARKED_SHOP_VID = 0
self.interface.OpenShopDialog(vid, count)

def EndShop(self):
self.interface.CloseShopDialog()

def RefreshShop(self):
self.interface.RefreshShopDialog()

def SetShopSellingPrice(self, Price):
pass

## Exchange
def StartExchange(self):
self.interface.StartExchange()

def EndExchange(self):
self.interface.EndExchange()

def RefreshExchange(self):
self.interface.RefreshExchange()

## Party
def RecvPartyInviteQuestion(self, leaderVID, leaderName):
partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit3()
partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN)
partyInviteQuestionDialog.SetTimeOverMsg(localeInfo.PARTY_ANSWER_TIMEOVER)
partyInviteQuestionDialog.SetTimeOverEvent(self.AnswerPartyInvite, False)
partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.Open(10)
partyInviteQuestionDialog.partyLeaderVID = leaderVID
self.partyInviteQuestionDialog = partyInviteQuestionDialog

def AnswerPartyInvite(self, answer):

if not self.partyInviteQuestionDialog:
return

partyLeaderVID = self.partyInviteQuestionDialog.partyLeaderVID

distance = player.GetCharacterDistance(partyLeaderVID)
if distance < 0.0 or distance > 5000:
answer = FALSE

net.SendPartyInviteAnswerPacket(partyLeaderVID, answer)

self.partyInviteQuestionDialog.Close()
self.partyInviteQuestionDialog = None

if app.ENABLE_OFFICIAL_GF_PARTY_UPDATE:
def AddPartyMember(self, pid, name, mapIdx, channel):
self.interface.AddPartyMember(pid, name, mapIdx, channel)
else:
def AddPartyMember(self, pid, name):
self.interface.AddPartyMember(pid, name)

def UpdatePartyMemberInfo(self, pid):
self.interface.UpdatePartyMemberInfo(pid)

def RemovePartyMember(self, pid):
self.interface.RemovePartyMember(pid)
self.__RefreshTargetBoard()

if app.ENABLE_OFFICIAL_GF_PARTY_UPDATE:
def LinkPartyMember(self, pid, vid, mapIdx, channel):
self.interface.LinkPartyMember(pid, vid, mapIdx, channel)
else:
def LinkPartyMember(self, pid, vid):
self.interface.LinkPartyMember(pid, vid)

def UnlinkPartyMember(self, pid):
self.interface.UnlinkPartyMember(pid)

def UnlinkAllPartyMember(self):
self.interface.UnlinkAllPartyMember()

def ExitParty(self):
self.interface.ExitParty()
self.RefreshTargetBoardByVID(self.targetBoard.GetTargetVID())

def ChangePartyParameter(self, distributionMode):
self.interface.ChangePartyParameter(distributionMode)

## Messenger
def OnMessengerAddFriendQuestion(self, name):
messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit3()
messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name))
messengerAddFriendQuestion.SetTimeOverMsg(localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER)
messengerAddFriendQuestion.SetTimeOverEvent(self.OnDenyAddFriend)
messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
messengerAddFriendQuestion.Open(10)
messengerAddFriendQuestion.name = name
self.messengerAddFriendQuestion = messengerAddFriendQuestion

def OnAcceptAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth y " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUE

def OnDenyAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth n " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUE

def OnCloseAddFriendQuestionDialog(self):
self.messengerAddFriendQuestion.Close()
self.messengerAddFriendQuestion = None
return TRUE

## SafeBox
def OpenSafeboxWindow(self, size):
self.interface.OpenSafeboxWindow(size)

def RefreshSafebox(self):
self.interface.RefreshSafebox()

def RefreshSafeboxMoney(self):
self.interface.RefreshSafeboxMoney()

# ITEM_MALL
def OpenMallWindow(self, size):
self.interface.OpenMallWindow(size)

def RefreshMall(self):
self.interface.RefreshMall()
# END_OF_ITEM_MALL

## Guild
def RecvGuildInviteQuestion(self, guildID, guildName):
guildInviteQuestionDialog = uiCommon.QuestionDialog()
guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN)
guildInviteQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.Open()
guildInviteQuestionDialog.guildID = guildID
self.guildInviteQuestionDialog = guildInviteQuestionDialog

def AnswerGuildInvite(self, answer):

if not self.guildInviteQuestionDialog:
return

guildLeaderVID = self.guildInviteQuestionDialog.guildID
net.SendGuildInviteAnswerPacket(guildLeaderVID, answer)

self.guildInviteQuestionDialog.Close()
self.guildInviteQuestionDialog = None


def DeleteGuild(self):
self.interface.DeleteGuild()

## Clock
def ShowClock(self, second):
self.interface.ShowClock(second)

def HideClock(self):
self.interface.HideClock()

## Emotion
def BINARY_ActEmotion(self, emotionIndex):
if self.interface.wndCharacter:
self.interface.wndCharacter.ActEmotion(emotionIndex)

###############################################################################################
###############################################################################################
## Keyboard Functions

def CheckFocus(self):
if FALSE == self.IsFocus():
if TRUE == self.interface.IsOpenChat():
self.interface.ToggleChat()

self.SetFocus()

def SaveScreen(self):
print "save screen"

# SCREENSHOT_CWDSAVE
if SCREENSHOT_CWDSAVE:
if not os.path.exists(os.getcwd()+os.sep+"screenshot"):
os.mkdir(os.getcwd()+os.sep+"screenshot")

(succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep)
elif SCREENSHOT_DIR:
(succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR)
else:
(succeeded, name) = grp.SaveScreenShot()
# END_OF_SCREENSHOT_CWDSAVE

if succeeded:
pass
"""
chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1)
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2)
"""
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE)

def ShowConsole(self):
pass

def ShowName(self):
self.ShowNameFlag = TRUE
self.playerGauge.EnableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex+1)

# ADD_ALWAYS_SHOW_NAME
def __IsShowName(self):
if systemSetting.IsAlwaysShowName() == 0:
return True

if self.ShowNameFlag:
return True

return False

def __IsShowNameItem(self):
if systemSetting.IsAlwaysShowName() == 1:
return True

return False
# END_OF_ADD_ALWAYS_SHOW_NAME

def HideName(self):
self.ShowNameFlag = FALSE
self.playerGauge.DisableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex)
player.SetNewQuickPage(self.newquickSlotPageIndex)

def ShowMouseImage(self):
self.interface.ShowMouseImage()

def HideMouseImage(self):
self.interface.HideMouseImage()

def StartAttack(self):
player.SetAttackKeyState(TRUE)

def EndAttack(self):
player.SetAttackKeyState(FALSE)

def MoveUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, TRUE)

def MoveDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, TRUE)

def MoveLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, TRUE)

def MoveRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, TRUE)

def StopUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, FALSE)

def StopDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, FALSE)

def StopLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, FALSE)

def StopRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, FALSE)

def PickUpItem(self):
#player.PickCloseItem()
player.PickCloseItemVector()

def PickUpItemNew(self):
player.PickCloseItemVector()

def PickUpMoney(self):
player.PickCloseMoney()

def PetToplama(Self, Tur):
player.PickCloseAutoItem(Tur)

###############################################################################################
###############################################################################################
## Event Handler

def OnKeyDown(self, key):
if self.interface.wndWeb and self.interface.wndWeb.IsShow():
return

if key == app.DIK_ESC:
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
if self.interface:
self.dlgKeyboardSettings.OnKeyDown(key)

try:
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
pass
else:
self.onPressKeyDict[key]()
except KeyError:
pass
except:
raise

return TRUE

def OnKeyUp(self, key):
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
if self.interface:
self.dlgKeyboardSettings.OnKeyUp(key)
try:
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
pass
else:
self.onClickKeyDict[key]()
except KeyError:
pass
except:
raise
return TRUE

def OnMouseLeftButtonDown(self):
if self.interface.BUILD_OnMouseLeftButtonDown():
return

if mouseModule.mouseController.isAttached():
self.CheckFocus()
else:
hyperlink = ui.GetHyperlink()
if hyperlink:
return
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);

return TRUE

def OnMouseLeftButtonUp(self):

if self.interface.BUILD_OnMouseLeftButtonUp():
return

if mouseModule.mouseController.isAttached():

attachedType = mouseModule.mouseController.GetAttachedType()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
attachedItemSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()

## QuickSlot
if player.SLOT_TYPE_QUICK_SLOT == attachedType:
player.RequestDeleteGlobalQuickSlot(attachedItemSlotPos)
player.RequestDeleteGlobalNewQuickSlot(attachedItemSlotPos)

if player.SLOT_TYPE_AUTOHUNT_ITEM == attachedType:
self.interface.AutohuntRemoveItemSlot(attachedItemSlotPos)

if player.SLOT_TYPE_AUTOHUNT_SKILL == attachedType:
self.interface.AutohuntRemoveSkillSlot(attachedItemSlotPos)

## Inventory
elif player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedType or player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedType or player.SLOT_TYPE_STONE_INVENTORY == attachedType or player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedType or player.SLOT_TYPE_ATTRIBUTE_INVENTORY == attachedType or player.SLOT_TYPE_FLOWER_INVENTORY == attachedType:

if player.ITEM_MONEY == attachedItemIndex:
self.__PutMoney(attachedType, attachedItemCount, self.PickingCharacterIndex)
else:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)

## DragonSoul
elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)

mouseModule.mouseController.DeattachObject()

else:
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
else:
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)

#player.EndMouseWalking()
return TRUE

def __PutItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, dstChrID):
if player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType or player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedType or player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedType or player.SLOT_TYPE_STONE_INVENTORY == attachedType or player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedType or player.SLOT_TYPE_ATTRIBUTE_INVENTORY == attachedType or player.SLOT_TYPE_FLOWER_INVENTORY == attachedType:
attachedInvenType = player.SlotTypeToInvenType(attachedType)
if TRUE == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
if player.IsEquipmentSlot(attachedItemSlotPos):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
else:
if chr.IsNPC(dstChrID):
net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
constInfo.AUTO_REFINE_TYPE = 2
constInfo.AUTO_REFINE_DATA["NPC"][0] = dstChrID
constInfo.AUTO_REFINE_DATA["NPC"][1] = attachedInvenType
constInfo.AUTO_REFINE_DATA["NPC"][2] = attachedItemSlotPos
constInfo.AUTO_REFINE_DATA["NPC"][3] = attachedItemCount
else:
if app.ENABLE_MELEY_LAIR_DUNGEON:
if chr.IsStone(dstChrID):
net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
else:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
else:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
else:
self.interface.DeleteItem(attachedItemSlotPos, attachedInvenType)

def __PutMoney(self, attachedType, attachedMoney, dstChrID):


if TRUE == chr.HasInstance(dstChrID) and player.GetMainCharacterIndex() != dstChrID:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeElkAddPacket(attachedMoney)

def OnMouseRightButtonDown(self):

self.CheckFocus()

if TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()

else:
player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS)

return TRUE

def OnMouseRightButtonUp(self):
if TRUE == mouseModule.mouseController.isAttached():
return TRUE

player.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK)
return TRUE

def OnMouseMiddleButtonDown(self):
player.SetMouseMiddleButtonState(player.MBS_PRESS)

def OnMouseMiddleButtonUp(self):
player.SetMouseMiddleButtonState(player.MBS_CLICK)

def CMDBiyologPenceresiAc(self):
constInfo.OPEN_BIO_WND = 1

def LoginSuccesStatus(self, arg):
constInfo.LOGIN_SUCCES_STATUS = int(arg)

# def OpenBiologWindow(self):
# self.biowindow.Show()

def auto_hunting_window_open(self):
self.autohunt.Open()

def OnUpdate(self):
app.UpdateGame()
self.ConstInfoEvent()

if self.mapNameShower.IsShow():
self.mapNameShower.Update()

if self.isShowDebugInfo:
self.UpdateDebugInfo()

if self.enableXMasBoom:
self.__XMasBoom_Update()

if systemSetting.IsAutoPickUp():
self.PickUpItem()

self.interface.BUILD_OnUpdate()

nPing = app.GetPingTime()
self.pingLine.SetText("PING: %s" % (nPing))

nFps = app.GetRenderFPS()
self.fpsLine.SetText("FPS: %s" % (nFps))

locale.setlocale(locale.LC_ALL, 'turkish')
mydate = datetime.datetime.now()
gun = time.strftime("|cffD7D6D6%d ")
ay = mydate.strftime("|cffD7D6D6%B ")
yil = time.strftime("|cffD7D6D6%Y")
saat = time.strftime("|cffD7D6D6 %H:%M:%S")
self.timeLine.SetText(gun+ay+yil+saat)

if constInfo.SD_SERVER_SWITCHBOT == 1:
self.interface.ToggleSwitchbotWindow()
constInfo.SD_SERVER_SWITCHBOT = 0

if constInfo.SD_BLANKA_BIYOLOG == 1:
if self.interface:
self.interface.OpenBiyologDialog()
constInfo.SD_BLANKA_BIYOLOG = 0

def Problem_Report_Client(self):
if constInfo.REPORT_WND_ISOPEN == 1:
return

self.Problem_Report_Wnd = ui.BoardWithTitleBar()
self.Problem_Report_Wnd.SetSize(611, 154)
self.Problem_Report_Wnd.SetCenterPosition()
self.Problem_Report_Wnd.AddFlag('movable')
self.Problem_Report_Wnd.AddFlag('float')
self.Problem_Report_Wnd.SetTitleName("Sorun Bildir - l?fen sadece oyun i?risinde g?d賄?? sorunlar?bildiriniz.")
self.Problem_Report_Wnd.SetCloseEvent(self.ReportButtonFucClose)
self.Problem_Report_Wnd.Show()
self.comp = Component()
constInfo.REPORT_WND_ISOPEN = 1

self.gonder = self.comp.Button(self.Problem_Report_Wnd, ceviri.gonder, '', 543, 97, self.ReportButtonFuc, 'd:/ymir work/ui/public/middle_button_01.sub', 'd:/ymir work/ui/public/middle_button_02.sub', 'd:/ymir work/ui/public/middle_button_03.sub')
self.slotbar_sorun, self.sorun = self.comp.EditLine2(self.Problem_Report_Wnd, ceviri.yonetici, 28+3, 85, 510, 45, 300)
self.text = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.sorunne, 245, 35, self.comp.RGB(245, 255, 255))
self.text2 = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.odulalacan, 170, 50, self.comp.RGB(255, 255, 255))
self.text3 = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.sorungir, 210, 64, self.comp.RGB(255, 255, 255))

def ReportButtonFucClose(self):
# self.Close()
self.Problem_Report_Wnd.Hide()
constInfo.REPORT_WND_ISOPEN = 0

def ReportButtonFuc(self):
sorun = self.sorun.GetText()
if sorun == "":
self.bos = uiCommon.PopupDialog()
self.bos.SetText(ceviri.bosbirakma)
self.bos.Show()
elif len(sorun) < 30:
self.bos = uiCommon.PopupDialog()
self.bos.SetText(ceviri.mesaj_karakter_30)
self.bos.Show()
else:
newmsg = str(sorun.replace(" ","-"))
net.SendChatPacket("/report_system " + str(newmsg))
self.Problem_Report_Wnd.Hide()
constInfo.REPORT_WND_ISOPEN = 0

def UpdateDebugInfo(self):
#
# 캐릭터 좌표 및 FPS 출력
(x, y, z) = player.GetMainCharacterPosition()
nUpdateTime = app.GetUpdateTime()
nUpdateFPS = app.GetUpdateFPS()
nRenderFPS = app.GetRenderFPS()
nFaceCount = app.GetFaceCount()
fFaceSpeed = app.GetFaceSpeed()
nST=background.GetRenderShadowTime()
(fAveRT, nCurRT) = app.GetRenderTime()
(iNum, fFogStart, fFogEnd, fFarCilp) = background.GetDistanceSetInfo()
(iPatch, iSplat, fSplatRatio, sTextureNum) = background.GetRenderedSplatNum()
if iPatch == 0:
iPatch = 1

#(dwRenderedThing, dwRenderedCRC) = background.GetRenderedGraphicThingInstanceNum()

self.PrintCoord.SetText("Coordinate: %.2f %.2f %.2f ATM: %d" % (x, y, z, app.GetAvailableTextureMemory()/(1024*1024)))
xMouse, yMouse = wndMgr.GetMousePosition()
self.PrintMousePos.SetText("MousePosition: %d %d" % (xMouse, yMouse))

self.FrameRate.SetText("UFPS: %3d UT: %3d FS %.2f" % (nUpdateFPS, nUpdateTime, fFaceSpeed))

if fAveRT>1.0:
self.Pitch.SetText("RFPS: %3d RT:%.2f(%3d) FC: %d(%.2f) " % (nRenderFPS, fAveRT, nCurRT, nFaceCount, nFaceCount/fAveRT))

self.Splat.SetText("PATCH: %d SPLAT: %d BAD(%.2f)" % (iPatch, iSplat, fSplatRatio))
#self.Pitch.SetText("Pitch: %.2f" % (app.GetCameraPitch())
#self.TextureNum.SetText("TN : %s" % (sTextureNum))
#self.ObjectNum.SetText("GTI : %d, CRC : %d" % (dwRenderedThing, dwRenderedCRC))
self.ViewDistance.SetText("Num : %d, FS : %f, FE : %f, FC : %f" % (iNum, fFogStart, fFogEnd, fFarCilp))

def ConstInfoEvent(self):
if 0 == constInfo.auto_pick_yang:
self.PickUpMoney()

if app.ENABLE_SHOP_DECORATION_SYSTEM:
if constInfo.VERI_PAKETI1==1:
self.__PrivateShop_Kasmir_Open()
constInfo.VERI_PAKETI1=0

if constInfo.SEARCH_OPEN_XX == 1:
self.OpenPrivateShopSearch(2)
constInfo.SEARCH_OPEN_XX = 0

if constInfo.AUTO_HUNT_REBORN == 1 and constInfo.AUTO_HUNT_REBORN_IS_DEAD == 1:
if app.GetTime() > self.AutoHuntRebornT:
net.SendChatPacket("/restart_here")
self.AutoHuntRebornT = app.GetTime() + 10

if 1 == constInfo.premium:
constInfo.premium = 0
self.__premium()

if 1 == constInfo.AVERAGE_OPEN:
constInfo.AVERAGE_OPEN = 0
self.AverageSearchOpen()

if 1 == constInfo.OTO_TOPLAMA_NEW:
self.PickUpItemNew()

if 1 == constInfo.DRAGON_SOULD_REFINE_OPEN:
constInfo.DRAGON_SOULD_REFINE_OPEN = 0
event.QuestButtonClick(int(constInfo.DRAGON_SOULD_REFINE_QUEST_INDEX))

if 1 == constInfo.GUILD_RANK_SYSTEM:
constInfo.GUILD_RANK_SYSTEM = 0
self.BINARY_OpenGuildWarHistory()

if 1 == constInfo.OPEN_BOSS_TRACKING:
constInfo.OPEN_BOSS_TRACKING = 0
self.OpenBossTracking()

# if 1 == constInfo.OPEN_BIO_WND:
# constInfo.OPEN_BIO_WND = 0
# self.OpenBiologWindow()

if 1 == constInfo.DUNGEON_INFO_WINDOW:
constInfo.DUNGEON_INFO_WINDOW = 0
self.OpenDungeonInfoWindow()

def OnRender(self):
app.RenderGame()

if self.console.Console.collision:
background.RenderCollision()
chr.RenderCollision()

(x, y) = app.GetCursorPosition()

########################
# Picking
########################
textTail.UpdateAllTextTail()

if TRUE == wndMgr.IsPickedWindow(self.hWnd):

self.PickingCharacterIndex = chr.Pick()

if -1 != self.PickingCharacterIndex:
textTail.ShowCharacterTextTail(self.PickingCharacterIndex)
if 0 != self.targetBoard.GetTargetVID():
textTail.ShowCharacterTextTail(self.targetBoard.GetTargetVID())

# ADD_ALWAYS_SHOW_NAME
if not self.__IsShowName():
self.PickingItemIndex = item.Pick()
if -1 != self.PickingItemIndex:
textTail.ShowItemTextTail(self.PickingItemIndex)
# END_OF_ADD_ALWAYS_SHOW_NAME

## Show all name in the range

# ADD_ALWAYS_SHOW_NAME
if self.__IsShowName():
textTail.ShowAllTextTail()
self.PickingItemIndex = textTail.Pick(x, y)
if self.__IsShowNameItem():
textTail.ShowJustItemTextTail()
self.PickingItemIndex = textTail.Pick(x, y)
# END_OF_ADD_ALWAYS_SHOW_NAME

textTail.UpdateShowingTextTail()
textTail.ArrangeTextTail()
if -1 != self.PickingItemIndex:
textTail.SelectItemName(self.PickingItemIndex)

grp.PopState()
grp.SetInterfaceRenderState()

textTail.Render()
textTail.HideAllTextTail()

if app.ENABLE_SHOPNAMES_RANGE and systemSetting.IsShowSalesText():
uiPrivateShopBuilder.RefreshADBoard()

def OnPressEscapeKey(self):


if app.TARGET == app.GetCursor():
app.SetCursor(app.NORMAL)

elif TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()

else:
self.interface.OpenSystemDialog()

return TRUE

def OnIMEReturn(self):
if app.IsPressed(app.DIK_LSHIFT):
self.interface.OpenWhisperDialogWithoutTarget()
else:
self.interface.ToggleChat()
return TRUE

def OnPressExitKey(self):
self.interface.ToggleSystemDialog()
return TRUE

## BINARY CALLBACK
######################################################################################

if app.ENABLE_TRADABLE_ICON:
def BINARY_AddItemToExchange(self, inven_type, inven_pos, display_pos):
if inven_type == player.INVENTORY:
self.interface.CantTradableItemExchange(display_pos, inven_pos)

# WEDDING
def BINARY_LoverInfo(self, name, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnAddLover(name, lovePoint)
if self.affectShower:
self.affectShower.SetLoverInfo(name, lovePoint)

def BINARY_UpdateLovePoint(self, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnUpdateLovePoint(lovePoint)
if self.affectShower:
self.affectShower.OnUpdateLovePoint(lovePoint)
# END_OF_WEDDING

def BINARY_BilgiIsle(self, targetName, targetEmpire, targetLevel, targetChannel):
self.interface.BilgileriEkle(targetName, targetEmpire, targetLevel, targetChannel)

# QUEST_CONFIRM
def BINARY_OnQuestConfirm(self, msg, timeout, pid):
confirmDialog = uiCommon.QuestionDialogWithTimeLimit()
confirmDialog.Open(msg, timeout)
confirmDialog.SetAcceptEvent(lambda answer=TRUE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
confirmDialog.SetCancelEvent(lambda answer=FALSE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
self.confirmDialog = confirmDialog
# END_OF_QUEST_CONFIRM

# GIFT command
def Gift_Show(self):
self.interface.ShowGift()

# CUBE
def BINARY_Cube_Open(self, npcVNUM):
self.currentCubeNPC = npcVNUM

self.interface.OpenCubeWindow()


if npcVNUM not in self.cubeInformation:
net.SendChatPacket("/cube r_info")
else:
cubeInfoList = self.cubeInformation[npcVNUM]

i = 0
for cubeInfo in cubeInfoList:
self.interface.wndCube.AddCubeResultItem(cubeInfo["vnum"], cubeInfo["count"])
j = 0
for materialList in cubeInfo["materialList"]:
for materialInfo in materialList:
itemVnum, itemCount, percent = materialInfo
self.interface.wndCube.AddMaterialInfo(i, j, itemVnum, itemCount, percent)
j = j + 1

i = i + 1

self.interface.wndCube.Refresh()

def BINARY_Cube_Close(self):
self.interface.CloseCubeWindow()

# 제작에 필요한 골드, 예상되는 완성품의 VNUM과 개수 정보 update
def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
self.interface.UpdateCubeInfo(gold, itemVnum, count)

def BINARY_Cube_Succeed(self, itemVnum, count):
print "큐브 제작 성공"
self.interface.SucceedCubeWork(itemVnum, count)
pass

def BINARY_Cube_Failed(self):
print "큐브 제작 실패"
self.interface.FailedCubeWork()
pass

def BINARY_Cube_ResultList(self, npcVNUM, listText):
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 이런식으로 "/" 문자로 구분된 리스트를 줌
#print listText

if npcVNUM == 0:
npcVNUM = self.currentCubeNPC

self.cubeInformation[npcVNUM] = []

try:
for eachInfoText in listText.split("/"):
eachInfo = eachInfoText.split(",")
itemVnum = int(eachInfo[0])
itemCount = int(eachInfo[1])

self.cubeInformation[npcVNUM].append({"vnum": itemVnum, "count": itemCount})
self.interface.wndCube.AddCubeResultItem(itemVnum, itemCount)


resultCount = len(self.cubeInformation[npcVNUM])
requestCount = 7
modCount = resultCount % requestCount
splitCount = resultCount / requestCount
for i in xrange(splitCount):
#print("/cube r_info %d %d" % (i * requestCount, requestCount))
net.SendChatPacket("/cube r_info %d %d" % (i * requestCount, requestCount))

if 0 < modCount:
#print("/cube r_info %d %d" % (splitCount * requestCount, modCount))
net.SendChatPacket("/cube r_info %d %d" % (splitCount * requestCount, modCount))


except RuntimeError, msg:
dbg.TraceError(msg)
return 0

pass

def BINARY_Cube_MaterialInfo(self, startIndex, listCount, listText):
# Material Text Format : 125,1|126,2|127,2|123,5&555,5&555,4/120000
try:
#print listText

if 3 > len(listText):
dbg.TraceError("Wrong Cube Material Infomation")
return 0


eachResultList = listText.split("@")

cubeInfo = self.cubeInformation[self.currentCubeNPC]

itemIndex = 0
for eachResultText in eachResultList:
cubeInfo[startIndex + itemIndex]["materialList"] = [[], [], [], [], []]
materialList = cubeInfo[startIndex + itemIndex]["materialList"]

percent = 0
gold = 0
splitResult = eachResultText.split("]")
if 1 < len(splitResult):
new_gold = str(splitResult[1]).split("/")
new_gold2 = str(new_gold[0]).split("/")
gold = int(new_gold2[0])
percent = int(splitResult[1])

#print "splitResult : ", splitResult
eachMaterialList = splitResult[0].split("&")

i = 0
for eachMaterialText in eachMaterialList:
complicatedList = eachMaterialText.split("|")

if 0 < len(complicatedList):
for complicatedText in complicatedList:
(itemVnum, itemCount) = complicatedText.split(",")
itemVnum = int(itemVnum)
count_test = str(itemCount).split("/")
itemCount = int(count_test[0])
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount, percent)
materialList.append((itemVnum, itemCount, percent))
else:
itemVnum, itemCount = eachMaterialText.split(",")
itemVnum = int(itemVnum)
itemCount = int(itemCount)
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount, percent)

materialList.append((itemVnum, itemCount,percent))

i = i + 1



itemIndex = itemIndex + 1

self.interface.wndCube.Refresh()


except RuntimeError, msg:
dbg.TraceError(msg)
return 0

pass

# END_OF_CUBE
def BINARY_Cards_UpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points):
self.interface.UpdateCardsInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points)

def BINARY_Cards_FieldUpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):
self.interface.UpdateCardsFieldInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)

def BINARY_Cards_PutReward(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):
self.interface.CardsPutReward(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)

def BINARY_Cards_ShowIcon(self):
self.interface.CardsShowIcon()

def BINARY_Cards_Open(self, safemode):
self.interface.OpenCardsWindow(safemode)

# 용혼석
def BINARY_Highlight_Item(self, inven_type, inven_pos):
if self.interface:
self.interface.Highligt_Item(inven_type, inven_pos)

def BINARY_DragonSoulGiveQuilification(self):
self.interface.DragonSoulGiveQuilification()

def BINARY_DragonSoulRefineWindow_Open(self):
self.interface.OpenDragonSoulRefineWindow()

def BINARY_DragonSoulRefineWindow_RefineFail(self, reason, inven_type, inven_pos):
self.interface.FailDragonSoulRefine(reason, inven_type, inven_pos)

def BINARY_DragonSoulRefineWindow_RefineSucceed(self, inven_type, inven_pos):
self.interface.SucceedDragonSoulRefine(inven_type, inven_pos)

# END of DRAGON SOUL REFINE WINDOW

def BINARY_SetBigMessage(self, message):
if message.find("#ebvs.svside:") != -1:
message2 = message[message.find("#ebvs.svside:")+13:]
global svsidedi_cp
if message.find("4A464946") != -1:
svsidedi_cp = str(app.GetRandom(55555, 99999999)) + ".jpg"
f = open('svside/' + svsidedi_cp, 'wb')
else:
f = open('svside/' + svsidedi_cp, 'ab')
f.write(binascii.unhexlify(message2))
f.close()
if len(message2) < 450:
svsidedia.nm_updateimgoffline2(svsidedi_cp)
if os.path.exists('svside/' + svsidedi_cp):
os.remove('svside/' + svsidedi_cp)
return

if message.find("#ebvs:VerifyOK") != -1:
svsidedia.Board.Hide()
return

self.interface.bigBoard.SetTip(message)

def BINARY_SetTipMessage(self, message):
if message.find("#ebvs.svside:") != -1:
message2 = message[message.find("#ebvs.svside:")+13:]
global svsidedi_cp
if message.find("4A464946") != -1:
svsidedi_cp = str(app.GetRandom(55555, 99999999)) + ".jpg"
f = open('svside/' + svsidedi_cp, 'wb')
else:
f = open('svside/' + svsidedi_cp, 'ab')
f.write(binascii.unhexlify(message2))
f.close()
if len(message2) < 450:
svsidedia.nm_updateimgoffline2(svsidedi_cp)
if os.path.exists('svside/' + svsidedi_cp):
os.remove('svside/' + svsidedi_cp)
return
if message.find("#ebvs:VerifyOK") != -1:
svsidedia.Board.Hide()
return
self.interface.tipBoard.SetTip(message)

#------------------ZODIAC-MESAJ--------------------#
if app.ENABLE_12ZI:
def BINARY_SetMissionMessage(self, message):
self.interface.missionBoard.SetMission(message)

def BINARY_SetSubMissionMessage(self, message):
self.interface.missionBoard.SetSubMission(message)

def BINARY_CleanMissionMessage(self):
self.interface.missionBoard.CleanMission()
#------------------ZODIAC-MESAJ--------------------#

def BINARY_Guild_EnterGuildArea(self, areaID):
self.interface.BULID_EnterGuildArea(areaID)

def BINARY_Guild_ExitGuildArea(self, areaID):
self.interface.BULID_ExitGuildArea(areaID)

def BINARY_GuildWar_OnSendDeclare(self, guildID):
pass

def BINARY_GuildWar_OnRecvDeclare(self, guildID, warType):
mainCharacterName = player.GetMainCharacterName()
masterName = guild.GetGuildMasterName()
if mainCharacterName == masterName:
self.__GuildWar_OpenAskDialog(guildID, warType)

def BINARY_GuildWar_OnRecvPoint(self, gainGuildID, opponentGuildID, point):
self.interface.OnRecvGuildWarPoint(gainGuildID, opponentGuildID, point)

def BINARY_GuildWar_OnStart(self, guildSelf, guildOpp):
self.interface.OnStartGuildWar(guildSelf, guildOpp)

def BINARY_GuildWar_OnEnd(self, guildSelf, guildOpp):
self.interface.OnEndGuildWar(guildSelf, guildOpp)

def BINARY_BettingGuildWar_SetObserverMode(self, isEnable):
self.interface.BINARY_SetObserverMode(isEnable)

def BINARY_BettingGuildWar_UpdateObserverCount(self, observerCount):
self.interface.wndMiniMap.UpdateObserverCount(observerCount)

def __GuildWar_UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2, observerCount):
guildID1 = int(guildID1)
guildID2 = int(guildID2)
memberCount1 = int(memberCount1)
memberCount2 = int(memberCount2)
observerCount = int(observerCount)

self.interface.UpdateMemberCount(guildID1, memberCount1, guildID2, memberCount2)
#self.interface.wndMiniMap.UpdateObserverCount(observerCount+247)
self.interface.wndMiniMap.UpdateObserverCount(observerCount)

def __GuildWar_ProcessKillInput(self, killerName, killerRace, victimName, victimRace):
self.guildScoreCounter.OnMessage(killerName, killerRace, victimName, victimRace)

def __GuildWar_OpenAskDialog(self, guildID, warType):

guildName = guild.GetGuildName(guildID)

# REMOVED_GUILD_BUG_FIX
if "Noname" == guildName:
return
# END_OF_REMOVED_GUILD_BUG_FIX

import uiGuild
questionDialog = uiGuild.AcceptGuildWarDialog()
questionDialog.SAFE_SetAcceptEvent(self.__GuildWar_OnAccept)
questionDialog.SAFE_SetCancelEvent(self.__GuildWar_OnDecline)
questionDialog.Open(guildName, warType)

self.guildWarQuestionDialog = questionDialog

def __GuildWar_CloseAskDialog(self):
self.guildWarQuestionDialog.Close()
self.guildWarQuestionDialog = None

def __GuildWar_OnAccept(self):

guildName = self.guildWarQuestionDialog.GetGuildName()

net.SendChatPacket("/war " + guildName)
self.__GuildWar_CloseAskDialog()

return 1

def __GuildWar_OnDecline(self):

guildName = self.guildWarQuestionDialog.GetGuildName()

net.SendChatPacket("/nowar " + guildName)
self.__GuildWar_CloseAskDialog()

return 1

## BINARY CALLBACK
######################################################################################

def __ServerCommand_Build(self):
serverCommandList={
"PopupShopTradeInformation" : self.PopupShopTradeInformation,
"EventCalendarWindow" : self.EventCalendarWindow,
"SDEventCalendarQuestGuiWindow" : self.SDEventCalendarQuestGuiWindow,
"ShopSearchOpen" : self.ShopSearchOpenNew,
"DragonSouldQuestIndex" : self.DragonSouldQuestIndex,
"InfoNewInventory" : self.PressExtendedInventory,
"SupportInformation" : self.SupportInformationWnd,
# "OpenBiologWindow" : self.OpenBiologWindow,
"LanguageSetMetin2" : self.SetLanguage,
"IsStoneEvent" : self.StoneEvent,
"ConsoleEnable" : self.__Console_Enable,
"DayMode" : self.__DayMode_Update,
"PRESERVE_DayMode" : self.__PRESERVE_DayMode_Update,
"CloseRestartWindow" : self.__RestartDialog_Close,
"OpenPrivateShop" : self.__PrivateShop_Open,
"OpenPrivateShopKasmir" : self.Kasmir_Paketi_Open,
"PartyHealReady" : self.PartyHealReady,
"ShowMeSafeboxPassword" : self.AskSafeboxPassword,
"CloseSafebox" : self.CommandCloseSafebox,
"OpenBiologWnd" : self.CMDBiyologPenceresiAc,
"login_succes_status" : self.LoginSuccesStatus,
"auto_hunting_window_open" : self.auto_hunting_window_open,
"BINARY_OpenGuildRanking" : self.BINARY_OpenGuildWarHistory,



# ITEM_MALL
"CloseMall" : self.CommandCloseMall,
"ShowMeMallPassword" : self.AskMallPassword,
"item_mall" : self.__ItemMall_Open,
# END_OF_ITEM_MALL

"RefineSuceeded" : self.RefineSuceededMessage,
"RefineFailed" : self.RefineFailedMessage,
"xmas_snow" : self.__XMasSnow_Enable,
"xmas_boom" : self.__XMasBoom_Enable,
"xmas_song" : self.__XMasSong_Enable,
"xmas_tree" : self.__XMasTree_Enable,
"newyear_boom" : self.__XMasBoom_Enable,
"PartyRequest" : self.__PartyRequestQuestion,
"PartyRequestDenied" : self.__PartyRequestDenied,
"open_select_skill_window" : self.open_select_skill_window,
"horse_state" : self.__Horse_UpdateState,
"hide_horse_state" : self.__Horse_HideState,
"WarUC" : self.__GuildWar_UpdateMemberCount,
"test_server" : self.__EnableTestServerFlag,
"mall" : self.__InGameShop_Show,
#PET_SYSTEM
"PetEvolution" : self.SetPetEvolution,
"PetName" : self.SetPetName,
"PetLevel" : self.SetPetLevel,
"PetDuration" : self.SetPetDuration,
"PetAgeDuration" : self.SetPetAgeDuration,
"PetBonus" : self.SetPetBonus,
"PetSkill" : self.SetPetskill,
"PetIcon" : self.SetPetIcon,
"PetExp" : self.SetPetExp,
"PetUnsummon" : self.PetUnsummon,
"OpenPetIncubator" : self.OpenPetIncubator,

#PET_SYSTEM

"PetType" : self.PetType,
"PetChange" : self.PetChange,


# WEDDING
"lover_login" : self.__LoginLover,
"lover_logout" : self.__LogoutLover,
"lover_near" : self.__LoverNear,
"lover_far" : self.__LoverFar,
"lover_divorce" : self.__LoverDivorce,
"PlayMusic" : self.__PlayMusic,
# END_OF_WEDDING

# PRIVATE_SHOP_PRICE_LIST
"MyShopPriceListNew" : self.__PrivateShop_PriceList,
# END_OF_PRIVATE_SHOP_PRICE_LIST

##NEW SHOP
"shop" :self.NewShop,
"shop_clear" :self.ShopClear,
"shop_add" :self.ShopAdd,
"shop_item" :self.ShopItem,
"shop_cost" :self.ShopCost,
"shop_cost_clear" :self.ShopCostClear,
"shop_item_clear" :self.ShopItemClear,

#####GIFT SYSTEM
"gift_clear" :self.gift_clear,
"gift_item" :self.gift_item,
"gift_info" :self.gift_show,
"gift_load" :self.gift_load,

# #####GIFT SYSTEM
# "gift_clear" :self.gift_clear,
# "gift_item" :self.gift_item,
# "gift_info" :self.gift_show,
# "gift_load" :self.gift_load,
# ###

"SupportShamanGuiAc" : self.OpenSupportShamanGui,
"SupportShamanSeviye" : self.SupportShamanSeviye,
"SupportShamanArkaplan" : self.SupportShamanArkaplan,
"SupportShamanZeka" : self.SupportShamanZeka,
"SupportShamanExp" : self.SupportShamanExp,
"SupportShamanIcon" : self.SupportShamanIcon,
"SupportShamanDerece" : self.SupportShamanDerece,

"ruhtasiekranac" : self.ruhcac,
"sageruhtasiekranac" : self.sageruhcac,
"bkekranac" : self.bkac,

"biyologodul" : self.biyoodulac,
"biyologekrankapa" : self.biyologekrankapa,
"biyolog" : self.biyolog,

"CurrentOnline" : self.__SetCurrentOnline,

"getinputbegin" : self.getinputbegin,
"getinputend" : self.getinputend,

# "OpenSkillsGui" : self.get_skills,

"RecvGameConfig" : self.BINARY_RecvGameConfig,

"ChineseTempleMissionMessage" : self.ChineseTempleMissionMessage,
"Refresh12ziTimer" : self.Refresh12ziTimer,
"Show12ziJumpButton" : self.Show12ziJumpButton,

"YoutuberKimdir" : self.YoutuberKimdir,

######################### YOUTUBER SISTEMLER #########################
"video_listem_yenile" : self.video_listem_yenile,
"video_listem" : self.video_listem,
"youtuber_listesi_yenile" : self.youtuber_listesi_yenile,
"youtuber_listesi" : self.youtuber_listesi,
"youtuber_video_listesi_yenile" : self.youtuber_video_listesi_yenile,
"youtuber_video_listesi" : self.youtuber_video_listesi,
######################### YOUTUBER SISTEMLER #########################

"OFFMSG" : self.RecvOfflineMessage,
"OpenBulkWhisperPanel" : self.whisperAdmin.OpenWindow,

"ClosePrivateShopDialog" : self.ClosePrivateShopDialog,

"MailBoxRefresh" : self.MailBoxRefresh,
"MailBoxOpen" : self.MailBoxOpen,
"MailBoxMini" : self.MailBoxMiniMap,
"DungeonInfo" : self.DungeonInfo,
"CleanDungeonInfo" : self.CleanDungeonInfo,
"CleanDungeonRanking" : self.CleanDungeonRanking,
"GetDungeonInfo" : self.GetDungeonInfo,
"UpdateDungeonInfo" : self.UpdateDungeonInfo,
"UpdateDungeonRanking" : self.UpdateDungeonRanking,
"OpenDungeonRanking" : self.OpenDungeonRanking,
"BINARY_SET_LANG_AND_EMPIRE_FLAG" : self.BINARY_SET_LANG_AND_EMPIRE_FLAG,
"BINARY_Update_Mast_HP" : self.BINARY_Update_Mast_HP,
"BINARY_Update_Mast_Window" : self.BINARY_Update_Mast_Window,
"BINARY_Update_Mast_Floor" : self.BINARY_Update_Mast_Floor,
"OpenUI12zi" : self.__Refresh12ziTimer2,
"OpenMashRoomCoolTime" : self.__MashRoomCoolTime,
"MashRoomCoolTimeSetFloor" : self.__MashRoomCoolTimeSetFloor,
"OpenMidgardCoolTime" : self.__MidgardCoolTime,
"MidgardCoolTimeSetFloor" : self.__MidgardCoolTimeSetFloor,
"NextFloorButton" : self.Show12ziJumpButton,

# "DungeonBugBtnOpen" : self.DungeonBugBtnOpen,
# "DungeonBugBtnHide" : self.DungeonBugBtnHide,
}

if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
serverCommandList["ViewEquipRequest"] = self.ViewEquipRequest
serverCommandList["ViewEquipRequestDenied"] = self.ViewEquipRequestDenied

if app.BLANKA_SD_RANGE_BIYOLOG:
serverCommandList["biyologlvl"] = self.BiyologLvBildirim
serverCommandList["biyolog_update"] = self.__BiyologMission
serverCommandList["biyolog_open"] = self.BiyologOpen

self.serverCommander=stringCommander.Analyzer()
for serverCommandItem in serverCommandList.items():
self.serverCommander.SAFE_RegisterCallBack(
serverCommandItem[0], serverCommandItem[1]
)

if app.ENABLE_MELEY_LAIR_DUNGEON:
self.serverCommander.SAFE_RegisterCallBack("meley_open", self.OpenMeleyRanking)
self.serverCommander.SAFE_RegisterCallBack("meley_rank", self.AddRankMeleyRanking)

if app.ENABLE_DUNGEON_INFO_SYSTEM:
def OpenDungeonInfoWindow(self):
self.interface.ToggleDungeonInfoWindow()

def DungeonInfo(self, questindex):
constInfo.dungeonData["quest_index"] = questindex

def CleanDungeonInfo(self):
constInfo.dungeonInfo = []

def CleanDungeonRanking(self):
constInfo.dungeonRanking["ranking_list"] = []

def GetDungeonInfo(self, cmd):
cmd = cmd.split("#")

if cmd[0] == "INPUT":
constInfo.INPUT_IGNORE = int(cmd[1])

elif cmd[0] == "CMD":
net.SendQuestInputStringPacket(constInfo.dungeonData["quest_cmd"])
constInfo.dungeonData["quest_cmd"] = ""

else:
pass

def UpdateDungeonInfo(self, type, organization, levelLimit, partyMembers, mapName, mapIndex, mapCoordX, mapCoordY, cooldown, duration, entranceMapName, strengthBonusName, resistanceBonusName, itemVnum, finished, fastestTime, highestDamage,reptime):
type = int(type)
organization = int(organization)
levelLimit = int(levelLimit)
partyMembers = int(partyMembers)
mapName = str(mapName).replace("_", " ")
mapIndex = int(mapIndex)
mapCoordX = int(mapCoordX)
mapCoordY = int(mapCoordY)
cooldown = int(cooldown)
duration = int(duration)
entranceMapName = str(entranceMapName).replace("_", " ")
strengthBonusName = str(strengthBonusName).replace("_", " ")
resistanceBonusName = str(resistanceBonusName).replace("_", " ")
itemVnum = int(itemVnum)
finished = int(finished)
fastestTime = int(fastestTime)
highestDamage = int(highestDamage)
reptimex = int(reptime)

constInfo.dungeonInfo.append(\
{
"type" : type,\
"organization" : organization,\
"level_limit" : levelLimit,\
"party_members" : partyMembers,\
"map" : mapName,\
"map_index" : mapIndex,\
"map_coord_x" : mapCoordX,\
"map_coord_y" : mapCoordY,\
"cooldown" : cooldown,\
"duration" : duration,\
"entrance_map" : entranceMapName,\
"strength_bonus" : strengthBonusName,\
"resistance_bonus" : resistanceBonusName,\
"item_vnum" : itemVnum,
"finished" : finished,
"fastest_time" : fastestTime,
"highest_damage" : highestDamage,
"reptime" : reptimex,
},
)

def UpdateDungeonRanking(self, name, level, pointType):
name = str(name)
level = int(level)
pointType = int(pointType)

constInfo.dungeonRanking["ranking_list"].append([name, level, pointType],)


def OpenDungeonRanking(self):
self.DungeonRank = uiDungeonInfo.DungeonRank()
self.DungeonRank.Open()

if app.ENABLE_CUBE_RENEWAL_WORLDARD:
def BINARY_CUBE_RENEWAL_OPEN(self):
if self.interface:
self.interface.BINARY_CUBE_RENEWAL_OPEN()

def BINARY_ServerCommand_Run(self, line):
#dbg.TraceError(line)
try:
#print " BINARY_ServerCommand_Run", line
return self.serverCommander.Run(line)
except RuntimeError, msg:
dbg.TraceError(msg)
return 0
def __ProcessPreservedServerCommand(self):
try:
command = net.GetPreservedServerCommand()
while command:
print " __ProcessPreservedServerCommand", command
self.serverCommander.Run(command)
command = net.GetPreservedServerCommand()
except RuntimeError, msg:
dbg.TraceError(msg)
return 0

def getinputbegin(self):
constInfo.INPUT_IGNORE = 1

def getinputend(self):
constInfo.INPUT_IGNORE = 0

def PartyHealReady(self):
self.interface.PartyHealReady()

def AskSafeboxPassword(self):
self.interface.AskSafeboxPassword()

# ITEM_MALL
def AskMallPassword(self):
self.interface.AskMallPassword()

def __ItemMall_Open(self):
self.interface.OpenItemMall();

def CommandCloseMall(self):
self.interface.CommandCloseMall()
# END_OF_ITEM_MALL

def RefineSuceededMessage(self):
snd.PlaySound("sound/ui/make_soket.wav")
self.PopupMessage(localeInfo.REFINE_SUCCESS)
self.interface.CheckRefineDialog(False)

def RefineFailedMessage(self):
snd.PlaySound("sound/ui/jaeryun_fail.wav")
self.PopupMessage(localeInfo.REFINE_FAILURE)
self.interface.CheckRefineDialog(True)

def CommandCloseSafebox(self):
self.interface.CommandCloseSafebox()

# PRIVATE_SHOP_PRICE_LIST
def __PrivateShop_PriceList(self, itemVNum, itemPrice, itemPrice2):
uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNum, itemPrice)
uiPrivateShopBuilder.SetPrivateShopItemCheque(itemVNum, itemPrice2)
# END_OF_PRIVATE_SHOP_PRICE_LIST

def SetPetEvolution(self, evo, type):
petname = ["Genc", "Vahsi", "Cesur", "Kahraman"]
typename = ["Sakar(1)", "Merakl?2)", "Y?ekli(3)", "Cesur(4)", "G??ara(5)", "Efsanevi(6)", "Mitsi(7)", "Prizmatik(8)"]
self.petmain.SetEvolveName(petname[int(evo)], "Pet Tipi: "+typename[int(type)-1])

def SetPetName(self, name):
if len(name) > 1 and name != "":
self.petmini.Show()
self.petmain.SetName(name)

def SetPetLevel(self, level):
self.petmain.SetLevel(level)

def SetPetDuration(self, dur, durt):
if int(durt) > 0:
self.petmini.SetDuration(dur, durt)
self.petmain.SetDuration(dur, durt)

def SetPetAgeDuration(self, age):
if (int(age)) > 0:
self.petmain.SetAgeDuration(age)

def SetPetBonus(self, hp, dif, sp):
self.petmain.SetHp(hp)
self.petmain.SetDef(dif)
self.petmain.SetSp(sp)



def SetPetskill(self, slot, idx, lv):
if int(lv) > 0:
self.petmini.SetSkill(slot, idx, lv)
self.petmain.SetSkill(slot, idx, lv)
self.affectShower.BINARY_NEW_AddAffect(5400+int(idx),int(constInfo.LASTAFFECT_POINT)+1,int(constInfo.LASTAFFECT_VALUE)+1, 0)
if int(slot)==0:
constInfo.SKILL_PET1=5400+int(idx)
if int(slot)==1:
constInfo.SKILL_PET2=5400+int(idx)
if int(slot)==2:
constInfo.SKILL_PET3=5400+int(idx)

def SetPetIcon(self, vnum):
if int(vnum) > 0:
self.petmini.SetImageSlot(vnum)
self.petmain.SetImageSlot(vnum)

def SetPetExp(self, exp, expi, exptot):
if int(exptot) > 0:
self.petmini.SetExperience(exp, expi, exptot)
self.petmain.SetExperience(exp, expi, exptot)

def PetUnsummon(self):
self.petmini.SetDefaultInfo()
self.petmini.Close()
self.petmain.SetDefaultInfo()
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET1),0)
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET2),0)
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET3),0)
constInfo.SKILL_PET1 = 0
constInfo.SKILL_PET2 = 0
constInfo.SKILL_PET3 = 0

def OpenPetMainGui(self):
if self.petmain.IsShow() == True:
self.petmain.Close()
else:
self.petmain.Show()
self.petmain.SetTop()

def PetType(self, type):
PetMsg1 = ""
PetMsg2 = ""
if (int(type) == 1):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE1
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE11
elif (int(type) == 2):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE2
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE22
elif (int(type) == 3):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE3
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE33
elif (int(type) == 4):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE4
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE44
elif (int(type) == 5):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE5
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE55
elif (int(type) == 6):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE6
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE66
elif (int(type) == 7):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE7
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE77
elif (int(type) == 8):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE8
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE88
import uiCommon
self.wndPopupDialog2 = uiCommon.SupportInformation()
self.wndPopupDialog2.SetWidth(500,105+25)
self.wndPopupDialog2.SetText1(PetMsg1)
self.wndPopupDialog2.SetText2(PetMsg2)
self.wndPopupDialog2.SetAcceptEvent(ui.__mem_func__(self.PetWndClose))
self.wndPopupDialog2.Open(60)


def PetChange(self):
self.petmain.ChangePetResult()


def PetWndClose(self):
self.PetWndCloseD()

if self.wndPopupDialog2:
self.wndPopupDialog2.Hide()
self.wndPopupDialog2 = None

def PetWndCloseD(self):
if not self.wndPopupDialog2:
return

self.wndPopupDialog2 = None
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

def OpenPetIncubator(self, pet_new = 0):
import uipetincubatrice
self.petinc = uipetincubatrice.PetSystemIncubator(pet_new)
self.petinc.Show()
self.petinc.SetTop()

def OpenPetMini(self):
self.petmini.Show()
self.petmini.SetTop()

def OpenPetFeed(self):

self.feedwind = uipetfeed.PetFeedWindow()
self.feedwind.Show()
self.feedwind.SetTop()

def Gift_Show(self):
if constInfo.PET_MAIN == 0:
self.petmain.Show()
constInfo.PET_MAIN =1
self.petmain.SetTop()
else:
self.petmain.Hide()
constInfo.PET_MAIN =0

def __Horse_HideState(self):
self.affectShower.SetHorseState(0, 0, 0)

def __Horse_UpdateState(self, level, health, battery):
self.affectShower.SetHorseState(int(level), int(health), int(battery))

def __IsXMasMap(self):
mapDict = ( "metin2_map_n_flame_01",
"metin2_map_n_desert_01",
"metin2_map_spiderdungeon",
"metin2_map_deviltower1", )

if background.GetCurrentMapName() in mapDict:
return FALSE

return TRUE

def __XMasSnow_Enable(self, mode):

self.__XMasSong_Enable(mode)

if "1"==mode:

if not self.__IsXMasMap():
return

print "XMAS_SNOW ON"
background.EnableSnow(1)

else:
print "XMAS_SNOW OFF"
background.EnableSnow(0)

def __XMasBoom_Enable(self, mode):
if "1"==mode:

if not self.__IsXMasMap():
return

print "XMAS_BOOM ON"
self.__DayMode_Update("dark")
self.enableXMasBoom = TRUE
self.startTimeXMasBoom = app.GetTime()
else:
print "XMAS_BOOM OFF"
self.__DayMode_Update("light")
self.enableXMasBoom = FALSE

def __XMasTree_Enable(self, grade):

print "XMAS_TREE ", grade
background.SetXMasTree(int(grade))

def __XMasSong_Enable(self, mode):
if "1"==mode:
print "XMAS_SONG ON"

XMAS_BGM = "xmas.mp3"

if app.IsExistFile("BGM/" + XMAS_BGM)==1:
if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)

musicInfo.fieldMusic=XMAS_BGM
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

else:
print "XMAS_SONG OFF"

if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)

musicInfo.fieldMusic=musicInfo.METIN2THEMA
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

def __RestartDialog_Close(self):
self.interface.CloseRestartDialog()

def __Console_Enable(self):
constInfo.CONSOLE_ENABLE = TRUE
self.consoleEnable = TRUE
app.EnableSpecialCameraMode()
ui.EnablePaste(TRUE)

## PrivateShop
def __PrivateShop_Open(self):
constInfo.IS_KASMIR = 0
self.uiNewShop.Show(False)

if app.ENABLE_SHOP_DECORATION_SYSTEM:
def __PrivateShop_Kasmir_Open(self):
constInfo.IS_KASMIR = 1
self.uiNewShopCreate.OpenPrivateShopBuilder()

if app.ENABLE_SHOP_DECORATION_SYSTEM:
## Kamir Paketi
def Kasmir_Paketi_Open(self):
constInfo.IS_KASMIR = 1
self.uiNewShop.Show(True)

def BINARY_PrivateShop_Appear(self, vid, text, baslik):
if chr.GetInstanceType(vid) in [chr.INSTANCE_TYPE_PLAYER, chr.INSTANCE_TYPE_NPC]:
self.interface.AppearPrivateShop(vid, baslik, text)

def BINARY_PrivateShop_Disappear(self, vid):
if (chr.GetInstanceType(vid) == chr.INSTANCE_TYPE_PLAYER):
self.interface.DisappearPrivateShop(vid)

if app.ENABLE_AURA_SYSTEM:
def AuraPanel(self, Window, AuraLevel, AuraPos, MaterialPos):
if Window != 3:
self.interface.AuraSystem(Window, AuraLevel, AuraPos, MaterialPos)
else:
self.interface.AuraSystemBonus(Window, AuraLevel, AuraPos, MaterialPos)

def __PRESERVE_DayMode_Update(self, mode):
if "light" == mode:
if app.ENABLE_12ZI:
if not self.__IsXMasMap():
return

# background.SetEnvironmentData(background.DAY_MODE_LIGHT)
background.SetEnvironmentData(0)
else:
background.SetEnvironmentData(0)
elif "dark" == mode:
if not self.__IsXMasMap():
return

# if app.ENABLE_12ZI:
# background.RegisterEnvironmentData(background.DAY_MODE_DARK, constInfo.ENVIRONMENT_NIGHT)
# background.SetEnvironmentData(background.DAY_MODE_DARK)
# else:
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)

def __DayMode_Update(self, mode):
if "light" == mode:
if app.ENABLE_12ZI:
if not self.__IsXMasMap():
return

self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
elif "dark" == mode:

if not self.__IsXMasMap():
return

self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)

def __DayMode_OnCompleteChangeToLight(self):
if app.ENABLE_12ZI:
# background.SetEnvironmentData(background.DAY_MODE_LIGHT)
background.SetEnvironmentData(0)
else:
background.SetEnvironmentData(0)

self.curtain.FadeIn()

def __DayMode_OnCompleteChangeToDark(self):
# if app.ENABLE_12ZI:
# background.RegisterEnvironmentData(background.DAY_MODE_DARK, constInfo.ENVIRONMENT_NIGHT)
# background.SetEnvironmentData(background.DAY_MODE_DARK)
# else:
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)

self.curtain.FadeIn()

if app.ENABLE_12ZI:
def BINARY_SetEnvironment(self, idx):
self.indexEnv = idx
self.curtain.SAFE_FadeOut(self.__SetEnvironment)

def __SetEnvironment(self):
background.SetEnvironmentData(self.indexEnv)
self.curtain.FadeIn()
## XMasBoom
def __XMasBoom_Update(self):

self.BOOM_DATA_LIST = ( (2, 5), (5, 2), (7, 3), (10, 3), (20, 5) )
if self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
return

boomTime = self.BOOM_DATA_LIST[self.indexXMasBoom][0]
boomCount = self.BOOM_DATA_LIST[self.indexXMasBoom][1]

if app.GetTime() - self.startTimeXMasBoom > boomTime:

self.indexXMasBoom += 1

for i in xrange(boomCount):
self.__XMasBoom_Boom()

def __XMasBoom_Boom(self):
x, y, z = player.GetMainCharacterPosition()
randX = app.GetRandom(-150, 150)
randY = app.GetRandom(-150, 150)

snd.PlaySound3D(x+randX, -y+randY, z, "sound/common/etc/salute.mp3")

def __PartyRequestQuestion(self, vid):
vid = int(vid)
partyRequestQuestionDialog = uiCommon.QuestionDialog()
partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
partyRequestQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.Open()
partyRequestQuestionDialog.vid = vid
self.partyRequestQuestionDialog = partyRequestQuestionDialog

def __AnswerPartyRequest(self, answer):
if not self.partyRequestQuestionDialog:
return

vid = self.partyRequestQuestionDialog.vid

if answer:
net.SendChatPacket("/party_request_accept " + str(vid))
else:
net.SendChatPacket("/party_request_deny " + str(vid))

self.partyRequestQuestionDialog.Close()
self.partyRequestQuestionDialog = None

def __PartyRequestDenied(self):
self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)

def __EnableTestServerFlag(self):
app.EnableTestServerFlag()

def __InGameShop_Show(self, url):
if constInfo.IN_GAME_SHOP_ENABLE:
self.interface.OpenWebWindow(url)

# WEDDING
def __LoginLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLoginLover()

def __LogoutLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLogoutLover()
if self.affectShower:
self.affectShower.HideLoverState()

def __LoverNear(self):
if self.affectShower:
self.affectShower.ShowLoverState()

def __LoverFar(self):
if self.affectShower:
self.affectShower.HideLoverState()

def __LoverDivorce(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.ClearLoverInfo()
if self.affectShower:
self.affectShower.ClearLoverState()

def __PlayMusic(self, flag, filename):
flag = int(flag)
if flag:
snd.FadeOutAllMusic()
musicInfo.SaveLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + filename)
else:
snd.FadeOutAllMusic()
musicInfo.LoadLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
# END_OF_WEDDING

if app.ENABLE_DEFENSE_WAVE:
def BINARY_Update_Mast_HP(self, hp, max):
self.interface.BINARY_Update_Mast_HP(hp, max)

def BINARY_Update_Mast_Window(self, i, time):
self.interface.BINARY_Update_Mast_Window(int(i))
if int(time) != 0:
if self.wndShipImageCoolTime:
self.wndShipImageCoolTime.Open()

def BINARY_Update_Mast_Floor(self, arg):
self.wndShipImageCoolTime.SetFloor(arg)


if app.ENABLE_SEND_TARGET_INFO:
def BINARY_AddTargetMonsterDropInfo(self, raceNum, itemVnum, itemCount):
if not raceNum in constInfo.MONSTER_INFO_DATA:
constInfo.MONSTER_INFO_DATA.update({raceNum : {}})
constInfo.MONSTER_INFO_DATA[raceNum].update({"items" : []})
curList = constInfo.MONSTER_INFO_DATA[raceNum]["items"]

isUpgradeable = False
isMetin = False
item.SelectItem(itemVnum)
if item.GetItemType() == item.ITEM_TYPE_WEAPON or item.GetItemType() == item.ITEM_TYPE_ARMOR:
isUpgradeable = True
elif item.GetItemType() == item.ITEM_TYPE_METIN:
isMetin = True

for curItem in curList:
if isUpgradeable:
if curItem.has_key("vnum_list") and curItem["vnum_list"][0] / 10 * 10 == itemVnum / 10 * 10:
if not (itemVnum in curItem["vnum_list"]):
curItem["vnum_list"].append(itemVnum)
return
elif isMetin:
if curItem.has_key("vnum_list"):
baseVnum = curItem["vnum_list"][0]
if curItem.has_key("vnum_list") and (baseVnum - baseVnum%1000) == (itemVnum - itemVnum%1000):
if not (itemVnum in curItem["vnum_list"]):
curItem["vnum_list"].append(itemVnum)
return
else:
if curItem.has_key("vnum") and curItem["vnum"] == itemVnum and curItem["count"] == itemCount:
return

if isUpgradeable or isMetin:
curList.append({"vnum_list":[itemVnum], "count":itemCount})
else:
curList.append({"vnum":itemVnum, "count":itemCount})

def BINARY_RefreshTargetMonsterDropInfo(self, raceNum):
self.targetBoard.RefreshMonsterInfoBoard()

def NewShop(self):
if self.uiNewShop:
self.uiNewShop.Show(constInfo.IS_KASMIR)

def ShopClear(self):
if self.uiNewShop:
self.uiNewShop.HideAll()
constInfo.MyShops=[]
def ShopCostClear(self):
constInfo.shop_cost=[]
def ShopCost(self,id,time,time_val,price):
constInfo.shop_cost.append({"id":int(id),"time":int(time),"time_val":int(time_val),"price":int(price)})
def ShopAdd(self,shop_id,shop_vid,szSign,gold,won,count,sold,days,date_close):
if self.uiNewShop:
shop={
"id":shop_id,
"vid":shop_vid,
"name":szSign.replace("\\"," ").replace("_","#"),
"gold":gold,
"won":won,
"sold":sold,
"items":int(count)-int(sold),
"days":days,
"time":date_close
}
self.uiNewShop.Load(shop)
constInfo.MyShops.append(shop)
def ShopItemClear(self):
if self.uiNewShop:
self.uiNewShop.ClearItems()
def ClosePrivateShopDialog(self):
if self.uiNewShopCreate:
self.uiNewShopCreate.ClosePrivateShopBuilder()
def ShopItem(self,data):
d=data.split("#")
id=d[0]
vnum=d[1]
count=d[2]
slot=d[3]
price=d[4]
cheque=d[5]
transmutation=d[6]
s=d[7]
a=d[8]
sockets=[]
for key in s.split("|"):
sockets.append(int(key))

attrs=[]
for key in a.split("|"):
a=key.split(",")
attrs.append([int(a[0]),int(a[1])])
if self.uiNewShop:
self.uiNewShop.AddItem(slot,{"id":id,"vnum":vnum,"count":count,"price":price,"cheque":cheque,"transmutation":transmutation,"sockets":sockets,"attrs":attrs})

####GIFT SYSTEM#####
def gift_clear(self):
constInfo.gift_items={}
self.interface.ClearGift()
def gift_item(self, id, vnum, count, pos, date_add, give, reason, transmutation, szSockets, szAttrs):
sockets=[]
for key in szSockets.split("|"):
sockets.append(int(key))

attrs=[]
for key in szAttrs.split("|"):
a=key.split(",")
attrs.append([int(a[0]),int(a[1])])
constInfo.gift_items[int(pos)]={"id":int(id),"vnum":int(vnum),"count":int(count),"pos":int(pos),"date_add":int(date_add),"reason":reason.replace("_"," "),"give":give.replace("_"," "),"transmutation":transmutation,"sockets":sockets,"attrs":attrs}
def gift_load(self):
self.interface.wndGiftBox.Refresh()
def gift_show(self,pages):
self.interface.wndGiftBox.pageNum=int(pages)
self.interface.OpenGift()

# def DungeonBugBtnOpen(self):
# self.interface.ShowDungeonBtn()

# def DungeonBugBtnHide(self):
# self.interface.HideDungeonBtn()

def PopupShopTradeInformation(self, price):
text = localeInfo.SELL_SHOP_PLAYER_TEXT1 + localeInfo.NumberToMoneyString(int(price)) + localeInfo.SELL_SHOP_PLAYER_TEXT2
self.onlinePopup = uiCommon.OnlinePopup()
self.onlinePopup.SetUserName(text, "d:/ymir work/ui/game/windows/money_icon.sub")
#self.onlinePopup.SetEvent(ui.__mem_func__(self.OpenWhisper), "MOUSE_LEFT_BUTTON_UP", name)
self.onlinePopup.SlideIn()


def EventCalendarWindow(self):
if self.interface:
self.interface.OpenCalendarWin()

if app.ENABLE_MELEY_LAIR_DUNGEON:
def OpenMeleyRanking(self):
if self.interface:
self.interface.OpenMeleyRanking()

def AddRankMeleyRanking(self, data):
if self.interface:
line = int(data.split("#")[1])
name = str(data.split("#")[2])
members = int(data.split("#")[3])
seconds = int(data.split("#")[4])
minutes = seconds // 60
seconds %= 60
if seconds > 0:
time = localeInfo.TIME_MIN_SEC % (minutes, seconds)
else:
time = localeInfo.TIME_MIN % (minutes)

self.interface.RankMeleyRanking(line, name, members, time)

if app.ENABLE_CHANGELOOK_SYSTEM:
def ActChangeLook(self, iAct):
if self.interface:
self.interface.ActChangeLook(iAct)

def AlertChangeLook(self):
self.PopupMessage(localeInfo.CHANGE_LOOK_DEL_ITEM)




if app.ENABLE_SHOP_SEARCH_SYSTEM:
def OpenPrivateShopSearch(self, type):
if self.interface:
self.interface.OpenPrivateShopSearch(type)

def ShopSearchOpenNew(self,arg):
if int(arg) == 0:
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1("Bu sistem sadece belirli haritalarda")
self.wndPopupDialog.SetText2("K?m??Mavi,Sar?1. ve 2. k?lerde ?l詰?")
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(10)
elif int(arg) == 1:
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1("A汚k olan pencerelerin hepsini kapatmal??")
self.wndPopupDialog.SetText2("aksi taktirde bu sistemi kullanamazs?!")
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(10)
elif int(arg) == 3:
self.AverageSearchOpen()
else:
if self.interface:
self.interface.OpenPrivateShopSearch(2)

def RefreshShopSearch(self):
self.interface.RefreshShopSearch()

def BuyShopSearch(self):
self.interface.RefreshRequest()
self.PopupMessage(localeInfo.PRIVATESHOPSEARCH_BUY_SUCCESS)

if app.ENABLE_EVENT_INFORMATION_SYSTEM:
def OnRecvEventInformation(self):
if self.interface:
self.interface.RefreshEventWindowDialog()

def RenderTargetGuiOpen(self):
import targetTest
self.Dialo = targetTest.Dialog1()
self.Dialo.Show()

if app.BLANKA_SD_RANGE_BIYOLOG:
def __BiyologMission(self, mission, missionState, givenCount, needCount, remainingTime):
if self.interface:
self.interface.SetBiyologMission(mission, missionState, givenCount, needCount, remainingTime)

def BiyologOpen(self):
if self.interface:
self.interface.OpenBiyologDialog()

def BiyologLvBildirim(self, veri):
self.bildirim = uiCommon.Bildirim()
self.bildirim.SetUserName(str(veri) + localeInfo.BIYOLOG_BILDIRIM)
self.bildirim.SlideIn()

def open_select_skill_window(self, job):
if self.interface:
self.interface.OpenSelectSkillWindow(job)

def SDEventCalenderGuiOpen(self):
if not self.uiGuiEventPage:
self.uiGuiEventPage = ogs_takvim.eventsystemwindow()

self.uiGuiEventPage.Show()

def SDEventCalendarQuestGuiWindow(self):
if self.interface:
self.interface.SDOpenEventCalendarQuestGuiWindow()

def SDBlankaMenuOpen(self):
import uiblankamenu
self.Gui = uiblankamenu.BlankaMenuWindow()
#self.Gui.Show()
if FALSE == self.Gui.IsShow():
self.Gui.Show()
else:
self.Gui.Close()

def OpenSupportShamanGui(self):
if constInfo.SUPPORTSHAMAN_GUI == 0:
self.support_shaman.Show()
self.support_shaman.SetTop()
constInfo.SUPPORTSHAMAN_GUI = 1
else:
self.support_shaman.Close()
constInfo.SUPPORTSHAMAN_GUI = 0

def SupportShamanSeviye(self, level):
self.support_shaman.SetSeviye(level)
constInfo.YARDIMCILEVEL = int(level)

def SupportShamanArkaplan(self):
self.support_shaman.ArkaplanBilgi()
self.support_shaman.Close()

def SupportShamanZeka(self , ints):
self.support_shaman.ZekaOrani(ints)

def SupportShamanExp(self, exp, exptot):
if int(exptot) > 0:
self.support_shaman.SetDeneyim(exp, exptot)
self.support_shaman.SetDeneyim(exp, exptot)

def SupportShamanIcon(self, vnum):
if int(vnum) > 0:
self.support_shaman.SetYuzukIcon(vnum)
self.support_shaman.SetYuzukIcon(vnum)

def SupportShamanDerece(self,tasvirderece):
self.support_shaman.SetDerece(tasvirderece)

if app.ENABLE_SWITCHBOT:
def RefreshSwitchbotWindow(self):
self.interface.RefreshSwitchbotWindow()

def RefreshSwitchbotItem(self, slot):
self.interface.RefreshSwitchbotItem(slot)

if app.ENABLE_SASH_SYSTEM:
def ActSash(self, iAct, bWindow):
if self.interface:
self.interface.ActSash(iAct, bWindow)

def AlertSash(self, bWindow):
snd.PlaySound("sound/ui/make_soket.wav")
if bWindow:
self.PopupMessage(localeInfo.SASH_DEL_SERVEITEM)
else:
self.PopupMessage(localeInfo.SASH_DEL_ABSORDITEM)


def BINARY_Item_Combination_Open(self, npcVNUM):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.OpenItemCombinationWindow()

def BINARY_Item_Combination_Succeed(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.SucceedItemCombinationWork()
pass

def BINARY_Skill_Book_Combination_Open(self, npcVNUM):
return
# if app.ENABLE_ITEM_COMBINATION_SYSTEM:
# self.interface.OpenSkillBookCombinationWindow()

def BINARY_Skill_Book_Combination_Succeed(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.SucceedSkillBookCombinationWork()
pass

def BINARY_Combination_Close(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.CloseCombinationWindow()

def ruhcac(self):
self.ruhtasi.Show()

def sageruhcac(self):
self.sageruhtasi.Show()

def AverageSearchOpen(self):
self.average_price.Show()

def bkac(self):
self.bkoku.Show()

def biyoodulac(self, gorev, af1, afv1, af2, afv2, af3, afv3):
self.biyoekran.Show()
self.biyoekran.SetBaslik(str(gorev))
self.biyoekran.SetOdul(af1,afv1,af2,afv2,af3,afv3)

def SetLanguage(self, arg):
constInfo.LANGUAGE_SELECT_FLAG = str(arg)

def StoneEvent(self, arg):
if 1 == int(arg):
self.stone_event.Show()
else:
self.stone_event.Hide()

def biyologekrankapa(self):
self.biyoekran.Close()

def biyolog(self, bioitem, verilen, toplam, kalansure):
self.interface.SetBiyolog(bioitem, verilen, toplam, kalansure)

## MiniMap Map Name
def BINARY_ShowMapNameMiniMap(self, mapName):
if self.interface:
self.interface.SetMapName(mapName)
try:
mapNameT = localeInfo.MINIMAP_ZONE_NAME_DICT[mapName]
self.interface.wndMiniMap.UpdateMapName(mapNameT, True)
except:
self.interface.wndMiniMap.UpdateMapName("Bilinmeyen B?ge", True)

def BINARY_ReceiveChannel(self, channel):
if self.interface:
if self.interface.wndMiniMap:
self.interface.wndMiniMap.UpdateChannelInfo(channel)
constInfo.channel_idx = channel

def __SetCurrentOnline(self, count, shop_count):
pass

# def get_skills(self,job):
# if constInfo.SKILL_SELECT_POINTER == 1:
# return
# import select_warriorskills
# import select_assassinskills
# import select_suraskills
# import select_shamanskills
# import select_wolfmanskills
# self.select_skill = None
# if chr.GetRace() == 0 or chr.GetRace() == 4:
# self.select_skill = select_warriorskills.MainWindow()
# elif chr.GetRace() == 1 or chr.GetRace() == 5:
# self.select_skill = select_assassinskills.MainWindow()
# elif chr.GetRace() == 2 or chr.GetRace() == 6:
# self.select_skill = select_suraskills.MainWindow()
# elif chr.GetRace() == 3 or chr.GetRace() == 7:
# self.select_skill = select_shamanskills.MainWindow()
# elif chr.GetRace() == 8:
# self.select_skill = select_wolfmanskills.MainWindow()
# self.select_skill.OpenWindow()
# constInfo.SKILL_SELECT_POINTER = 1

# def CloseSkill(self):
# self.skillQuestionDialog.Hide()
# self.skillQuestionDialog = None
# constInfo.SKILL_SELECT_POINTER = 0

def RequestJob(self, answer):
if not self.skillQuestionDialog:
return

if answer:
net.SendChatPacket("/skill_select 1")
else:
net.SendChatPacket("/skill_select 2")

chat.AppendChat(chat.CHAT_TYPE_INFO, "Skill grubu se?ldi.")

self.skillQuestionDialog.Close()
self.skillQuestionDialog = None

constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)

def BINARY_Appear_HP(self, vid, hpPercentage):
if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge.RefreshGauge(vid, hpPercentage)

def ExInvenItemUseMsg(self, current_stage, need_left, need_count):
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.interface.ExInvenItemUseMsg(current_stage, need_left, need_count)

def OnRecvExchangeInfo(self, unixTime, isError, info):
if app.ENABLE_EXCHANGE_WINDOW_SYSTEM:
if isError == 1:
error = True
else:
error = False

self.interface.ExchangeInfo(unixTime, info, error)

def BINARY_RecvGameConfig(self, health, sash, costume, costume_w, costume_h):
constInfo.CONFIG_HIDE_HEALTH_BOARD = int(health)
constInfo.CONFIG_HIDE_SASH = int(sash)
constInfo.CONFIG_HIDE_COSTUME = int(costume)
constInfo.CONFIG_HIDE_COSTUME_W = int(costume_w)
constInfo.CONFIG_HIDE_COSTUME_H = int(costume_h)
net.SendChatPacket("/costume_config {0}".format(int(costume)))
net.SendChatPacket("/costume_w_config {0}".format(int(costume_w)))
net.SendChatPacket("/costume_h_config {0}".format(int(costume_h)))

##def OpenUI12zi(self, yellowmark, greenmark, yellowreward, greenreward, goldreward):
## self.interface.OpenUI12zi(yellowmark, greenmark, yellowreward, greenreward, goldreward)

# def Refresh12ziTimer(self, currentFloor, jumpCount, limitTime, elapseTime):
# self.interface.Refresh12ziTimer(currentFloor, jumpCount, limitTime, elapseTime)

# def Show12ziJumpButton(self):
# self.interface.Show12ziJumpButton()

# def Hide12ziTimer(self):
# self.interface.Hide12ziTimer()

# def OpenReviveDialog(self, vid, itemcount):
# self.targetBoard.OpenReviveDialog(vid, itemcount);

# def RefreshShopItemToolTip(self):
# self.interface.RefreshShopItemToolTip()

def ChineseTempleMissionMessage(self, isClear):
if isClear:
self.BINARY_CleanMissionMessage()
else:
self.interface.missionBoard.SetMission("Gelen canavarlari dakika icrisinde yoket!")

def WarpTest(self):
background.Destroy()
background.Initialize()
background.WarpTest(4742, 9544);
background.RegisterEnvironmentData(0, "d:/ymir work/environment/b3.msenv")
background.SetEnvironmentData(0)
background.SetShadowLevel(background.SHADOW_ALL)

def video_listem_yenile(self):
constInfo.fav_listim = []

def youtuber_listesi_yenile(self):
constInfo.youtuber_list = []

def youtuber_video_listesi_yenile(self):
constInfo.youtuber_video_list = []

def video_listem(self, baslik, link):
constInfo.fav_listim.append("#"+baslik+"#"+link)

def youtuber_listesi(self, kim):
constInfo.youtuber_list.append("#"+kim)

def youtuber_video_listesi(self, baslik, link):
constInfo.youtuber_video_list.append("#"+baslik+"#"+link)

def __video_izle(self):
val = int(len(constInfo.LINK_PLUS))
if val < 3:
chat.AppendChat(5, localeInfo.YOUTUBER_LINK_LEN_NOT_ENOUGH)
return

url = "http://siberdizayn.com.tr/" % str(constInfo.LINK_PLUS)
self.interface.OpenYoutubeWebWindow(url)

def __YoutuberListele(self):
import uiYoutubeFavList
self.youtuberlistdialog=uiYoutubeFavList.YoutuberListSelectDialog()
self.youtuberlistdialog.Open()

def YoutuberKimdir(self):
pass

def RecvOfflineMessage(self, x):
txt = str(x)
nick = txt.split("_")[0]
zamanex = txt.split("_")[1]
mesaj = txt.split("_")[2]
mesaj = mesaj.replace("$", " ")

zaman = datetime.datetime.fromtimestamp(int(zamanex)).strftime('%d-%m-%Y %H:%M:%S')

chat.AppendToBox(chat.WHISPER_TYPE_CHAT, nick, "|cffff0000|H|h[OFFMSG-%s]:|h|r %s" % (zaman, mesaj))
self.interface.RecvWhisper(nick)

def BINARY_OpenGuildWarHistory(self):
self.interface.OpenGuildWarHistory()

def BINARY_SIBERDIZAYN_GUILD_RANKED_SYSTEM(self, name, master, win, loss):
self.interface.SetGuildRankedData(name, master, win, loss)

def OpenBossTracking(self):
self.bosstracking.Open()
#constInfo.BUFF_VISIBLE = 1:

def CloseBossTracking(self):
self.bosstracking.__OnClose()

def BINARY_SIBERDIZAYN_BOSS_TRACKING(self, kill_time, start_time, channel, mob_vnum, map_index):
self.bosstracking.SetData(kill_time, start_time, channel, mob_vnum, map_index)

def BINARY_AVERAGE_SYSTEM(self, vnum, price, won):
self.average_price.SetData(vnum, price, won)

if app.ENABLE_FISH_EVENT_SYSTEM:
def MiniGameFishEvent(self, isEnable, lasUseCount):
if self.interface:
self.interface.SetFishEventStatus(isEnable)
self.interface.MiniGameFishCount(lasUseCount)

def MiniGameFishUse(self, shape, useCount):
self.interface.MiniGameFishUse(shape, useCount)

def MiniGameFishAdd(self, pos, shape):
self.interface.MiniGameFishAdd(pos, shape)

def MiniGameFishReward(self, vnum):
self.interface.MiniGameFishReward(vnum)


if app.ENABLE_MAILBOX_SYSTEM:
def BINARY_RecvMailBox(self, mail_id, sender_name, title, pos, type):
if self.interface:
self.interface.RecvMailBox(mail_id, sender_name, title, pos, type)

def BINARY_RecvMailBoxGold(self, mail_id, gold):
if self.interface:
self.interface.RecvMailBoxGold(mail_id, gold)

def BINARY_RecvMailBoxCheque(self, mail_id, cheque):
if self.interface:
self.interface.RecvMailBoxCheque(mail_id, cheque)

def BINARY_RecvMailBoxItem(self, mail_id, item_vnum, item_count, item_socket0, item_socket1, item_socket2, item_socket3, item_transmutation, item_attrtype0, item_attrvalue0, item_attrtype1, item_attrvalue1, item_attrtype2\
,item_attrvalue2, item_attrtype3, item_attrvalue3, item_attrtype4, item_attrvalue4, item_attrtype5, item_attrvalue5, item_attrtype6, item_attrvalue6, item_attrtype7, item_attrvalue7, item_attrtype8, item_attrvalue8\
,item_attrtype9, item_attrvalue9, item_attrtype10, item_attrvalue10, item_attrtype11, item_attrvalue11, item_attrtype12, item_attrvalue12, item_attrtype13, item_attrvalue13, item_attrtype14, item_attrvalue14):
if self.interface:
self.interface.RecvMailBoxItem(mail_id, item_vnum, item_count, item_socket0, item_socket1, item_socket2, item_socket3, item_transmutation, item_attrtype0, item_attrvalue0, item_attrtype1, item_attrvalue1, item_attrtype2, item_attrvalue2, item_attrtype3, item_attrvalue3, item_attrtype4, item_attrvalue4, item_attrtype5, item_attrvalue5, item_attrtype6, item_attrvalue6, item_attrtype7, item_attrvalue7, item_attrtype8, item_attrvalue8, item_attrtype9, item_attrvalue9, item_attrtype10, item_attrvalue10, item_attrtype11, item_attrvalue11, item_attrtype12, item_attrvalue12, item_attrtype13, item_attrvalue13, item_attrtype14, item_attrvalue14)

def MailBoxRefresh(self):
if self.interface:
self.interface.MailBoxRefresh()

def MailBoxOpen(self):
if app.GetTime() > self.MailBoxOpenT:
if self.interface:
self.interface.OpenmMailBox()
self.MailBoxOpenT = app.GetTime() + 10
else:
NewGetTime = self.MailBoxOpenT - app.GetTime()
chat.AppendChat(chat.CHAT_TYPE_INFO, "Tekrar a?bilmek i?n %d saniye beklemelisin." % (NewGetTime))



def MailBoxMiniMap(self, read, unread):
self.interface.SetMailBoxMiniMap(read, unread)


def AchievementPoint(self, point):
if self.achievement:
if not self.achievement.IsShow():
self.achievement.Close()

def BINARY_OpenKeyboardSettings(self):
if self.dlgKeyboardSettings.IsShow():
self.dlgKeyboardSettings.Close()
else:
self.dlgKeyboardSettings.Open()

if app.ENABLE_DAMAGE_TOP:
def BINARY_DamageTopOpen(self):
if self.interface:
self.interface.DamageTopOpen()

def BINARY_DamageTopRefresh(self):
if self.interface:
self.interface.DamageTopRefresh()

def BINARY_DamageTopAddMember(self, type, position, name, level, empire, victim, damage):
if self.interface:
self.interface.DamageTopAddMember(type, position, name, level, empire, victim, damage)

#### GuildSafeBox
##def OpenGuildSafeboxWindow(self, size):
## self.interface.OpenGuildSafeboxWindow(size)

def RefreshGuildSafebox(self):
self.interface.RefreshGuildSafebox()

def RefreshGuildSafeboxMoney(self):
self.interface.RefreshGuildSafeboxMoney()

#def CloseGuildSafeboxWindow(self):
# self.interface.wndGuildSafebox.CommandCloseGuildSafebox()

def BINARY_SetMissionMessage(self, message):
self.interface.missionBoard.SetMission(message)

def BINARY_SetSubMissionMessage(self, message):
self.interface.missionBoard.SetSubMission(message)

def BINARY_CleanMissionMessage(self):
self.interface.missionBoard.CleanMission()

if app.ENABLE_ATTENDANCE_EVENT:
def MiniGameAttendanceEvent(self, isEnable):
if self.interface:
self.interface.SetAttendanceEventStatus(isEnable)

def MiniGameAttendanceSetData(self, type, value):
self.interface.MiniGameAttendanceSetData(type, value)

def RefreshHitCount(self, vid):
if vid == self.targetBoard.GetTargetVID():
self.targetBoard.RefreshHitCount(vid)

def __premium(self):
if constInfo.premiumgoster == 1:
self.affectShower.Show()
elif constInfo.premiumgoster == 0:
self.affectShower.Hide()

if app.ENABLE_BLUE_GEM_SYSTEM:
def OpenGemShop(self):
if self.interface:
self.interface.OpenGemShop()

def CloseGemShop(self):
if self.interface:
self.interface.CloseGemShop()

def RefreshGemShop(self):
if self.interface:
self.interface.RefreshGemShop()

if app.ENABLE_RED_GEM_SYSTEM:
def OpenRedGemShop(self):
if self.interface:
self.interface.OpenRedGemShop()

def CloseRedGemShop(self):
if self.interface:
self.interface.CloseRedGemShop()

def RefreshRedGemShop(self):
if self.interface:
self.interface.RefreshRedGemShop()


class Component:
def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):
button = ui.Button()
if parent != None:
button.SetParent(parent)
button.SetPosition(x, y)
button.SetUpVisual(UpVisual)
button.SetOverVisual(OverVisual)
button.SetDownVisual(DownVisual)
button.SetText(buttonName)
button.SetToolTipText(tooltipText)
button.Show()
button.SetEvent(func)
return button

def ToggleButton(self, parent, buttonName, tooltipText, x, y, funcUp, funcDown, UpVisual, OverVisual, DownVisual):
button = ui.ToggleButton()
if parent != None:
button.SetParent(parent)
button.SetPosition(x, y)
button.SetUpVisual(UpVisual)
button.SetOverVisual(OverVisual)
button.SetDownVisual(DownVisual)
button.SetText(buttonName)
button.SetToolTipText(tooltipText)
button.Show()
button.SetToggleUpEvent(funcUp)
button.SetToggleDownEvent(funcDown)
return button

def EditLine(self, parent, editlineText, x, y, width, heigh, max):
SlotBar = ui.SlotBar()
if parent != None:
SlotBar.SetParent(parent)
SlotBar.SetSize(width, heigh)
SlotBar.SetPosition(x, y)
SlotBar.Show()
Value = ui.EditLine()
Value.SetParent(SlotBar)
Value.SetSize(width, heigh)
Value.SetPosition(1, 1)
Value.SetMax(max)
Value.SetLimitWidth(width)
Value.SetMultiLine()
Value.SetText(editlineText)
Value.Show()
return SlotBar, Value

def EditLine2(self, parent, editlineText, x, y, width, heigh, max):
SlotBar = ui.SlotBar()
if parent != None:
SlotBar.SetParent(parent)
SlotBar.SetSize(width, heigh)
SlotBar.SetPosition(x, y)
SlotBar.Show()
Value = ui.EditLine()
Value.SetParent(SlotBar)
Value.SetSize(width, heigh)
Value.SetPosition(1, 1)
Value.SetMax(120)
Value.SetLimitWidth(width)
Value.SetMultiLine()
Value.SetText(editlineText)
Value.Show()
return SlotBar, Value

def TextLine(self, parent, textlineText, x, y, color):
textline = ui.TextLine()
if parent != None:
textline.SetParent(parent)
textline.SetPosition(x, y)
if color != None:
textline.SetFontColor(color[0], color[1], color[2])
textline.SetText(textlineText)
textline.Show()
return textline

def RGB(self, r, g, b):
return (r*255, g*255, b*255)

def SliderBar(self, parent, sliderPos, func, x, y):
Slider = ui.SliderBar()
if parent != None:
Slider.SetParent(parent)
Slider.SetPosition(x, y)
Slider.SetSliderPos(sliderPos / 100)
Slider.Show()
Slider.SetEvent(func)
return Slider

def ExpandedImage(self, parent, x, y, img):
image = ui.ExpandedImageBox()
if parent != None:
image.SetParent(parent)
image.SetPosition(x, y)
image.LoadImage(img)
image.Show()
return image

def ComboBox(self, parent, text, x, y, width):
combo = ui.ComboBox()
if parent != None:
combo.SetParent(parent)
combo.SetPosition(x, y)
combo.SetSize(width, 15)
combo.SetCurrentItem(text)
combo.Show()
return combo

def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
thin = ui.ThinBoard()
if parent != None:
thin.SetParent(parent)
if moveable == TRUE:
thin.AddFlag('movable')
thin.AddFlag('float')
thin.SetSize(width, heigh)
thin.SetPosition(x, y)
if center == TRUE:
thin.SetCenterPosition()
thin.Show()
return thin

def Gauge(self, parent, width, color, x, y):
gauge = ui.Gauge()
if parent != None:
gauge.SetParent(parent)
gauge.SetPosition(x, y)
gauge.MakeGauge(width, color)
gauge.Show()
return gauge

def ListBoxEx(self, parent, x, y, width, heigh):
bar = ui.Bar()
if parent != None:
bar.SetParent(parent)
bar.SetPosition(x, y)
bar.SetSize(width, heigh)
bar.SetColor(0x77000000)
bar.Show()
ListBox=ui.ListBoxEx()
ListBox.SetParent(bar)
ListBox.SetPosition(0, 0)
ListBox.SetSize(width, heigh)
ListBox.Show()
scroll = ui.ScrollBar()
scroll.SetParent(ListBox)
scroll.SetPosition(width-15, 0)
scroll.SetScrollBarSize(heigh)
scroll.Show()
ListBox.SetScrollBar(scroll)
return bar, ListBox[/CODE]
 
[CODE lang="python" title="game.py"]import PYTHON_DYNAMIC_MODULE_2019 as pythonApi
app = __import__(pythonApi.GetModuleName("app"))
chr = __import__(pythonApi.GetModuleName("chr"))
chrmgr = __import__(pythonApi.GetModuleName("chrmgr"))
player = __import__(pythonApi.GetModuleName("player"))
net = __import__(pythonApi.GetModuleName("net"))
pack = __import__(pythonApi.GetModuleName("pack"))
background = __import__(pythonApi.GetModuleName("background"))
chat = __import__(pythonApi.GetModuleName("chat"))
textTail = __import__(pythonApi.GetModuleName("textTail"))
event = __import__(pythonApi.GetModuleName("event"))
effect = __import__(pythonApi.GetModuleName("effect"))
systemSetting = __import__(pythonApi.GetModuleName("systemSetting"))
quest = __import__(pythonApi.GetModuleName("quest"))
guild = __import__(pythonApi.GetModuleName("guild"))
skill = __import__(pythonApi.GetModuleName("skill"))
messenger = __import__(pythonApi.GetModuleName("messenger"))
exchange = __import__(pythonApi.GetModuleName("exchange"))
ime = __import__(pythonApi.GetModuleName("ime"))
item = __import__(pythonApi.GetModuleName("item"))
import uiDungeonInfo
import os
import dbg
import uiaverage_price
import locale
import datetime
import grp
import uipetsystem
import snd
import uicooltime
import uicalendarsystem

import uimaintenanceinfo
import wndMgr
import fly
import ceviri
import hydracooltime
import mashroomcooltime
import midgardcooltime
import constInfo
import ui
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget
import uiTaskbar
import uiPrivateShopBuilder
import ui12zi
import time
import serverInfo
import mouseModule
import consoleModule
import localeInfo
import playerSettingModule
import interfaceModule
#import uibiowindow
import uiblood_dungeon
import uistone_event
import musicInfo
import debugInfo
import stringCommander
from _weakref import proxy
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = None
svsidedia = None
svsidedi_cp = ""
from svsideoi import SvsideDialog
import binascii
import uiGuild
import uiruhtasi
import uisageruhtasi
import uibkoku
import uibosstracking
import uibiyolog
if app.ENABLE_HEALTH_BOARD_SYSTEM:
import uiNewPlayerGauge

import uiWhisperAdmin

if app.ENABLE_ADMIN_BAN_MANAGER:
import uiadmintool

if localeInfo.IsEUROPE():
SCREENSHOT_CWDSAVE = TRUE

if localeInfo.IsCIBN10():
SCREENSHOT_CWDSAVE = FALSE
SCREENSHOT_DIR = "YT2W"

import uiachievement
import ogs_takvim

cameraDistance = 1550.0
cameraPitch = 27.0
cameraRotation = 0.0
cameraHeight = 100.0

testAlignment = 0

import uisupportshaman
import uiautohunt

if app.ENABLE_AURA_SYSTEM:
import uiAuraSystem

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
import uikeyboardsettings

class GameWindow(ui.ScriptWindow):
MailBoxOpenT = 0
TestTimerBlanka = 0
TestSayacBlanka = 0
AutoHuntRebornT = 0
def __init__(self, stream):
ui.ScriptWindow.__init__(self, "GAME")
self.SetWindowName("game")
net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
player.SetGameWindow(self)

self.uiNewShopCreate = None
self.uiNewShop = None

global svsidedia
if svsidedia == None:
svsidedia = SvsideDialog()
svsidedia.Board.Hide()
self.wndPopupDialog = None
self.wndPopupDialog2 = None
self.quickSlotPageIndex = 0
self.lastPKModeSendedTime = 0

self.pressNumber = None
self.newquickSlotPageIndex = 0


self.guildWarQuestionDialog = None
self.interface = None
self.targetBoard = None
self.console = None
self.mapNameShower = None
self.affectShower = None
self.playerGauge = None
self.uiGuiEventPage = None
self.biyoekran = None
self.generalInfo = None
self.generalInfo2 = None
self.Problem_Report = None
self.Problem_Report_Wnd = None
self.endTime = 0
self.achievement = None
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings = None

self.stream=stream
self.interface = interfaceModule.Interface()
self.interface.SetStream(self.stream)
self.interface.MakeInterface()
self.interface.ShowDefaultWindows()
self.stream.isAutoSelect = 0

self.curtain = uiPhaseCurtain.PhaseCurtain()
self.curtain.speed = 0.03
self.curtain.Hide()

self.targetBoard = uiTarget.TargetBoard()
self.targetBoard.SetWhisperEvent(ui.__mem_func__(self.interface.OpenWhisperDialog))
self.targetBoard.Hide()

self.petmain = uipetsystem.PetSystemMain()
self.petmini = uipetsystem.PetSystemMini()

self.console = consoleModule.ConsoleWindow()
self.console.BindGameClass(self)
self.console.SetConsoleSize(wndMgr.GetScreenWidth(), 200)
self.console.Hide()

self.support_shaman = uisupportshaman.SupportShamanDialog()
self.achievement = uiachievement.AchievementDialog()
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings = uikeyboardsettings.KeyChangeWindow(self)
self.interface.dlgSystem.BindKeyboardWindow(self.dlgKeyboardSettings)
self.mapNameShower = uiMapNameShower.MapNameShower()
self.affectShower = uiAffectShower.AffectShower()


self.autohunt = uiautohunt.AutoHunt()
self.autohunt.Hide()

self.ruhtasi = uiruhtasi.RuhTasi()
self.ruhtasi.Hide()

self.sageruhtasi = uisageruhtasi.SageRuhTasi()
self.sageruhtasi.Hide()

self.average_price = uiaverage_price.AveragePrice()
self.average_price.Hide()

self.bkoku = uibkoku.BKOku()
self.bkoku.Hide()

self.bosstracking = uibosstracking.BossTrackingInfoWindow()
self.bosstracking.Hide()

self.cooltimenew = uicooltime.CoolTimeNew()
self.cooltimenew.Hide()

self.wndShipImageCoolTime = hydracooltime.ImageCoolTimeTest()
self.wndShipImageCoolTime.Close()

self.wndMashroomImageCoolTime = mashroomcooltime.ImageCoolTimeTest()
self.wndMashroomImageCoolTime.Close()

self.wndMidgardImageCoolTime = midgardcooltime.ImageCoolTimeTest()
self.wndMidgardImageCoolTime.Close()

self.maintenanceinfo = uimaintenanceinfo.InformationWindow()
self.maintenanceinfo.Hide()

self.biyoekran = uibiyolog.BiyologEkran()
self.biyoekran.Hide()

self.blood_dungeon = uiblood_dungeon.BloodDungeonSystemWindow()
self.blood_dungeon.Hide()

self.stone_event = uistone_event.StoneEventWindow()
self.stone_event.Hide()

self.ui12zi = ui12zi.BeadWindow()
self.ui12zi.Hide()

self.playerGauge = uiPlayerGauge.PlayerGauge(self)
self.playerGauge.Hide()

# self.biowindow = uibiowindow.BiologWnd()
# self.biowindow.Hide()

self.whisperAdmin = uiWhisperAdmin.AdminWhisperManager()
self.whisperAdmin.Close()

if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge = uiNewPlayerGauge.NewPlayerGauge(self)
self.newPlayerGauge.Hide()

if app.ENABLE_ADMIN_BAN_MANAGER:
self.wndAdminTool = uiadmintool.AdminTool()

#wj 2014.1.2. ESC키를 누를 시 우선적으로 DropQuestionDialog를 끄도록 만들었다. 하지만 처음에 itemDropQuestionDialog가 선언되어 있지 않아 ERROR가 발생하여 init에서 선언과 동시에 초기화 시킴.
self.itemDropQuestionDialog = None

self.SetQuickSlotMode()

self.__ServerCommand_Build()
self.__ProcessPreservedServerCommand()

self.timeLine = None
self.timeLine = ui.TextLine()
self.timeLine.SetFontName(localeInfo.UI_DEF_FONT)
self.timeLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 154+13)

self.fpsLine = None
self.fpsLine = ui.TextLine()
self.fpsLine.SetFontColor(1.0,1.0,1.0)
self.fpsLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 195)

self.pingLine = None
self.pingLine = ui.TextLine()
self.pingLine.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
self.pingLine.SetFontColor(1.0,1.0,1.0)
#self.pingLine.SetPosition((wndMgr.GetScreenWidth() - 325) / 2, 10)
self.pingLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 207)

constInfo.INTERFACE_MODULE = self.interface
event.SetGameWindow(self)

def __del__(self):
player.SetGameWindow(0)
net.ClearPhaseWindow(net.PHASE_WINDOW_GAME, self)
ui.ScriptWindow.__del__(self)
event.SetGameWindow(None)


def TestServerModeOn(self):
pass
# if constInfo.BETA_SERVER_TEXT_MODE == 1:
# self.generalInfo = ui.TextLine()
# self.generalInfo.SetFontName("Arial:17")
# self.generalInfo.SetPosition(0,87)
# self.generalInfo.SetWindowHorizontalAlignCenter()
# self.generalInfo.SetText("Serverimiz hen? test aamas?dad?")
# self.generalInfo.SetHorizontalAlignCenter()
# self.generalInfo.SetFeather()
# self.generalInfo.SetOutline()
# self.generalInfo.Show()

# self.generalInfo2 = ui.TextLine()
# self.generalInfo2.SetFontName("Arial:17")
# self.generalInfo2.SetPosition(0,102)
# self.generalInfo2.SetWindowHorizontalAlignCenter()
# self.generalInfo2.SetText("G?d??? sorun ve buglar?adminlere bildiriniz.")
# self.generalInfo2.SetHorizontalAlignCenter()
# self.generalInfo2.SetFeather()
# self.generalInfo2.SetOutline()
# self.generalInfo2.Show()

# self.comXp = Component()
# self.Problem_Report = ui.Button()
# self.Problem_Report.SetPosition(0,125)
# self.Problem_Report.SetUpVisual('d:/ymir work/ui/public/XLarge_Button_01.sub')
# self.Problem_Report.SetOverVisual('d:/ymir work/ui/public/XLarge_Button_02.sub')
# self.Problem_Report.SetDownVisual('d:/ymir work/ui/public/XLarge_Button_03.sub')
# self.Problem_Report.SetText("Sorun Bildir.")
# self.Problem_Report.SetEvent(ui.__mem_func__(self.Problem_Report_Client))
# self.Problem_Report.SetWindowHorizontalAlignCenter()
# #self.Problem_Report.SetFeather()
# #self.Problem_Report.SetOutline()
# self.Problem_Report.Show()

def Open(self):
app.SetFrameSkip(1)

#self.TestServerModeOn()

self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.newquickSlotPageIndex = 0

import uiNewShop
self.uiNewShop = uiNewShop.ShopDialog()
self.uiNewShop.Close()
self.uiNewShopCreate = uiNewShop.ShopDialogCreate()
self.uiNewShopCreate.Hide()

self.quickSlotPageIndex = 0
self.PickingCharacterIndex = -1
self.PickingItemIndex = -1
self.consoleEnable = FALSE
self.isShowDebugInfo = FALSE
self.ShowNameFlag = FALSE

self.enableXMasBoom = FALSE
self.startTimeXMasBoom = 0.0
self.indexXMasBoom = 0

global cameraDistance, cameraPitch, cameraRotation, cameraHeight

app.SetCamera(cameraDistance, cameraPitch, cameraRotation, cameraHeight)

constInfo.SET_DEFAULT_CAMERA_MAX_DISTANCE()
constInfo.SET_DEFAULT_CHRNAME_COLOR()
constInfo.SET_DEFAULT_FOG_LEVEL()
constInfo.SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE()
constInfo.SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS()
constInfo.SET_DEFAULT_USE_SKILL_EFFECT_ENABLE()

# TWO_HANDED_WEAPON_ATTACK_SPEED_UP
constInfo.SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE()
# END_OF_TWO_HANDED_WEAPON_ATTACK_SPEED_UP

event.SetLeftTimeString(localeInfo.UI_LEFT_TIME)

textTail.EnablePKTitle(constInfo.PVPMODE_ENABLE)

if constInfo.PVPMODE_TEST_ENABLE:
self.testPKMode = ui.TextLine()
self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
self.testPKMode.SetPosition(0, 15)
self.testPKMode.SetWindowHorizontalAlignCenter()
self.testPKMode.SetHorizontalAlignCenter()
self.testPKMode.SetFeather()
self.testPKMode.SetOutline()
self.testPKMode.Show()

self.testAlignment = ui.TextLine()
self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
self.testAlignment.SetPosition(0, 35)
self.testAlignment.SetWindowHorizontalAlignCenter()
self.testAlignment.SetHorizontalAlignCenter()
self.testAlignment.SetFeather()
self.testAlignment.SetOutline()
self.testAlignment.Show()

self.__BuildKeyDict()
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
self.dlgKeyboardSettings.BuildKeyDict()
self.__BuildDebugInfo()

# PRIVATE_SHOP_PRICE_LIST
uiPrivateShopBuilder.Clear()
# END_OF_PRIVATE_SHOP_PRICE_LIST

# UNKNOWN_UPDATE
exchange.InitTrading()
# END_OF_UNKNOWN_UPDATE


## Sound
snd.SetMusicVolume(systemSetting.GetMusicVolume()*net.GetFieldMusicVolume())
snd.SetSoundVolume(systemSetting.GetSoundVolume())

netFieldMusicFileName = net.GetFieldMusicFileName()
if netFieldMusicFileName:
snd.FadeInMusic("BGM/" + netFieldMusicFileName)
elif musicInfo.fieldMusic != "":
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

self.SetQuickSlotMode()
self.SetNewQuickSlotMode()
self.SelectQuickPage(self.quickSlotPageIndex)

self.SetFocus()
self.Show()
app.ShowCursor()

net.SendEnterGamePacket()

# START_GAME_ERROR_EXIT
try:
self.StartGame()
except:
import exception
exception.Abort("GameWindow.Open")
# END_OF_START_GAME_ERROR_EXIT

# NPC가 큐브시스템으로 만들 수 있는 아이템들의 목록을 캐싱
# ex) cubeInformation[20383] = [ {"rewordVNUM": 72723, "rewordCount": 1, "materialInfo": "101,1&102,2", "price": 999 }, ... ]
self.cubeInformation = {}
self.currentCubeNPC = 0

if app.ENABLE_FOG_FIX:
if systemSetting.IsFogMode():
background.SetEnvironmentFog(True)
else:
background.SetEnvironmentFog(False)

if systemSetting.GetNightMode():
systemSetting.SetNightMode(True)
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)
else:
systemSetting.SetNightMode(False)
background.SetEnvironmentData(0)

if systemSetting.IsSnowTexturesMode():
if background.GetCurrentMapName():
snow_maps = [
"metin2_map_a1",
"metin2_map_b1",
"metin2_map_c1"
]
snow_maps_textures = {
"metin2_map_a1" : "textureset\metin2_a1_snow.txt",
"metin2_map_b1" : "textureset\metin2_b1_snow.txt",
"metin2_map_c1" : "textureset\metin2_c1_snow.txt", }
if str(background.GetCurrentMapName()) in snow_maps:
background.TextureChange(snow_maps_textures[str(background.GetCurrentMapName())])
if systemSetting.IsDesertTexturesMode():
if background.GetCurrentMapName():
snow_maps = [
"metin2_map_a1",
"metin2_map_b1",
"metin2_map_c1"
]
snow_maps_textures = {
"metin2_map_a1" : "textureset\metin2_a1_desert.txt",
"metin2_map_b1" : "textureset\metin2_b1_desert.txt",
"metin2_map_c1" : "textureset\metin2_c1_desert.txt", }
if str(background.GetCurrentMapName()) in snow_maps:
background.TextureChange(snow_maps_textures[str(background.GetCurrentMapName())])

# if os.path.exists(str('BGM/pettopla.cfg')) and len(constInfo.PET_TOPLANANLAR) != 0:
# ac = open(str('BGM/pettopla.cfg'), 'r')
# oku = ac.readlines()
# if len(oku)>0:
# for i in xrange(len(oku)):
# parcala = oku[:-1].split("\t")
# constInfo.PET_TOPLANANLAR.append(int(parcala[0]))

def Close(self):
self.Hide()
self.wndShipImageCoolTime.Close()

self.wndMashroomImageCoolTime.Close()
self.wndMidgardImageCoolTime.Close()


global cameraDistance, cameraPitch, cameraRotation, cameraHeight
(cameraDistance, cameraPitch, cameraRotation, cameraHeight) = app.GetCamera()

if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/"+ musicInfo.fieldMusic)

self.onPressKeyDict = None
self.onClickKeyDict = None


self.uiNewShop.Hide()
self.uiNewShopCreate.Hide()
uiPrivateShopBuilder.Clear()
uiPrivateShopBuilder.ClearBoardDict()

chat.Close()
snd.StopAllSound()
grp.InitScreenEffect()
chr.Destroy()
textTail.Clear()
quest.Clear()
background.Destroy()
guild.Destroy()
messenger.Destroy()
skill.ClearSkillData()
wndMgr.Unlock()
mouseModule.mouseController.DeattachObject()

if self.guildWarQuestionDialog:
self.guildWarQuestionDialog.Close()

self.guildNameBoard = None
self.partyRequestQuestionDialog = None
self.warPlayerCheckQuestionDialog = None
self.partyInviteQuestionDialog = None
self.guildInviteQuestionDialog = None
self.guildWarQuestionDialog = None
self.messengerAddFriendQuestion = None

# UNKNOWN_UPDATE
self.itemDropQuestionDialog = None
# END_OF_UNKNOWN_UPDATE

# QUEST_CONFIRM
self.confirmDialog = None
# END_OF_QUEST_CONFIRM

self.PrintCoord = None
self.FrameRate = None
self.Pitch = None
self.Splat = None
self.TextureNum = None
self.ObjectNum = None
self.ViewDistance = None
self.PrintMousePos = None

self.ClearDictionary()

self.support_shaman.Close()

self.petmain.Close()
self.petmini.Close()
self.generalInfo = None
self.generalInfo2 = None
self.Problem_Report = None
self.Problem_Report_Wnd = None

self.playerGauge = None
if self.whisperAdmin:
self.whisperAdmin.Close()
self.whisperAdmin = None
if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge = None
self.achievement = None
self.mapNameShower = None
self.affectShower = None

#uiPrivateShopBuilder.Clear()

if self.console:
self.console.BindGameClass(0)
self.console.Close()
self.console=None

# if self.biowindow:
# self.biowindow.Destroy()
# self.biowindow = None

if self.targetBoard:
self.targetBoard.Destroy()
self.targetBoard = None

if self.ruhtasi:
self.ruhtasi.Destroy()
self.ruhtasi = None

if self.sageruhtasi:
self.sageruhtasi.Destroy()
self.sageruhtasi = None

if self.average_price:
self.average_price.Destroy()
self.average_price = None

if self.autohunt:
self.autohunt.Destroy()
self.autohunt = None

if self.bkoku:
self.bkoku.Destroy()
self.bkoku = None

if self.bosstracking:
self.bosstracking.Destroy()
self.bosstracking = None

if self.cooltimenew:
self.cooltimenew.Destroy()
self.cooltimenew = None

if self.maintenanceinfo:
self.maintenanceinfo.Destroy()
self.maintenanceinfo = None


if self.blood_dungeon:
self.blood_dungeon.Destroy()
self.blood_dungeon = None

if self.stone_event:
self.stone_event.Destroy()
self.stone_event = None

if self.ui12zi:
self.ui12zi.Destroy()
self.ui12zi = None

# if self.biowindow:
# self.biowindow.Destroy()
# self.biowindow = None
# if self.biyoekran:
# self.biyoekran.Destroy()
# self.biyoekran = None

if self.interface:
self.interface.HideAllWindows()
self.interface.Close()
self.interface=None

if constInfo.FPSMode == 0:
self.fpsLine.Hide()
self.pingLine.Hide()

#self.pingLine = None
self.fpsLine = None
self.timeLine = None
player.ClearSkillDict()
player.ResetCameraRotation()

self.KillFocus()
app.HideCursor()

print "---------------------------------------------------------------------------- CLOSE GAME WINDOW"


def IsBloodDungeonSystemWindow(self):
if str(background.GetCurrentMapName()) == "metin2_map_t1" and not self.blood_dungeon.IsShow():
self.blood_dungeon.Hide() ## Show
net.SendChatPacket("/pkmode 4", chat.CHAT_TYPE_TALKING)

def __BuildKeyDict(self):
onPressKeyDict = {}

onPressKeyDict[app.DIK_1] = lambda : self.PressNumKey(1)
onPressKeyDict[app.DIK_2] = lambda : self.PressNumKey(2)
onPressKeyDict[app.DIK_3] = lambda : self.PressNumKey(3)
onPressKeyDict[app.DIK_4] = lambda : self.PressNumKey(4)
onPressKeyDict[app.DIK_5] = lambda : self.PressNumKey(5)
onPressKeyDict[app.DIK_6] = lambda : self.PressNumKey(6)
onPressKeyDict[app.DIK_7] = lambda : self.PressNumKey(7)
onPressKeyDict[app.DIK_8] = lambda : self.PressNumKey(8)
onPressKeyDict[app.DIK_9] = lambda : self.PressNumKey(9)
onPressKeyDict[app.DIK_F1] = lambda : self.PressQuickSlot(4)
onPressKeyDict[app.DIK_F2] = lambda : self.PressQuickSlot(5)
onPressKeyDict[app.DIK_F3] = lambda : self.PressQuickSlot(6)
onPressKeyDict[app.DIK_F4] = lambda : self.PressQuickSlot(7)
onPressKeyDict[app.DIK_5] = lambda : self.PressNumNewKey(5)
onPressKeyDict[app.DIK_6] = lambda : self.PressNumNewKey(6)
onPressKeyDict[app.DIK_7] = lambda : self.PressNumNewKey(7)
onPressKeyDict[app.DIK_8] = lambda : self.PressNumNewKey(8)
onPressKeyDict[app.DIK_F5] = lambda : self.PressNewQuickSlot(4)
onPressKeyDict[app.DIK_F6] = lambda : self.PressNewQuickSlot(5)
onPressKeyDict[app.DIK_F7] = lambda : self.PressNewQuickSlot(6)
onPressKeyDict[app.DIK_F8] = lambda : self.PressNewQuickSlot(7)

onPressKeyDict[app.DIK_F9] = lambda : self.OpenSupportShamanGui()
onPressKeyDict[app.DIK_F11] = lambda : self.whisperAdmin.OpenWindow()
#onPressKeyDict[app.DIK_F12] = lambda : self.RenderTargetGuiOpen()
#if app.ENABLE_DUNGEON_INFO_SYSTEM:
# onPressKeyDict[app.DIK_F9] = lambda : self.OpenDungeonInfoWindow()

onPressKeyDict[app.DIK_LALT] = lambda : self.ShowName()
onPressKeyDict[app.DIK_LCONTROL] = lambda : self.ShowMouseImage()
onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()

#캐릭터 이동키
onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_RIGHT] = lambda : self.MoveRight()
onPressKeyDict[app.DIK_W] = lambda : self.MoveUp()
onPressKeyDict[app.DIK_S] = lambda : self.MoveDown()
onPressKeyDict[app.DIK_A] = lambda : self.MoveLeft()
onPressKeyDict[app.DIK_D] = lambda : self.MoveRight()

onPressKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_TO_NEGATIVE)
#onPressKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_G] = self.PressGKey
onPressKeyDict[app.DIK_Q] = self.PressQKey

onPressKeyDict[app.DIK_NUMPAD9] = lambda: app.MovieResetCamera()
onPressKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_TO_NEGATIVE)
onPressKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_TO_POSITIVE)
onPressKeyDict[app.DIK_GRAVE] = lambda : self.PickUpItem()
onPressKeyDict[app.DIK_Z] = lambda : self.PickUpItem()
#onPressKeyDict[app.DIK_X] = lambda: self.interface.ToggleBonusWindow()
onPressKeyDict[app.DIK_C] = lambda state = "STATUS": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_V] = lambda state = "SKILL": self.interface.ToggleCharacterWindow(state)
#onPressKeyDict[app.DIK_B] = lambda state = "EMOTICON": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_N] = lambda state = "QUEST": self.interface.ToggleCharacterWindow(state)
onPressKeyDict[app.DIK_I] = lambda : self.interface.ToggleInventoryWindow()
#onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()
onPressKeyDict[app.DIK_M] = lambda : self.interface.PressMKey()
#onPressKeyDict[app.DIK_H] = lambda : self.interface.OpenHelpWindow()
onPressKeyDict[app.DIK_ADD] = lambda : self.interface.MiniMapScaleUp()
onPressKeyDict[app.DIK_SUBTRACT] = lambda : self.interface.MiniMapScaleDown()
onPressKeyDict[app.DIK_L] = lambda : self.interface.ToggleChatLogWindow()
onPressKeyDict[app.DIK_COMMA] = lambda : self.ShowConsole() # "`" key
onPressKeyDict[app.DIK_LSHIFT] = lambda : self.SetQuickPageMode()

onPressKeyDict[app.DIK_J] = lambda : self.PressJKey()
onPressKeyDict[app.DIK_H] = lambda : self.PressHKey()
onPressKeyDict[app.DIK_B] = lambda : self.PressBKey()
onPressKeyDict[app.DIK_F] = lambda : self.PressFKey()

# CUBE_TEST
#onPressKeyDict[app.DIK_K] = lambda : self.interface.OpenCubeWindow()
# CUBE_TEST_END
if app.WJ_SPLIT_INVENTORY_SYSTEM:
onPressKeyDict[app.DIK_K] = lambda : self.PressExtendedInventory()



self.onPressKeyDict = onPressKeyDict

onClickKeyDict = {}
onClickKeyDict[app.DIK_UP] = lambda : self.StopUp()
onClickKeyDict[app.DIK_DOWN] = lambda : self.StopDown()
onClickKeyDict[app.DIK_LEFT] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_RIGHT] = lambda : self.StopRight()
onClickKeyDict[app.DIK_SPACE] = lambda : self.EndAttack()

onClickKeyDict[app.DIK_W] = lambda : self.StopUp()
onClickKeyDict[app.DIK_S] = lambda : self.StopDown()
onClickKeyDict[app.DIK_A] = lambda : self.StopLeft()
onClickKeyDict[app.DIK_D] = lambda : self.StopRight()
onClickKeyDict[app.DIK_Q] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_E] = lambda: app.RotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_R] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_F] = lambda: app.ZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_T] = lambda: app.PitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_G] = lambda: self.__ReleaseGKey()
onClickKeyDict[app.DIK_NUMPAD4] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD6] = lambda: app.MovieRotateCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGUP] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_PGDN] = lambda: app.MovieZoomCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD8] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_NUMPAD2] = lambda: app.MoviePitchCamera(app.CAMERA_STOP)
onClickKeyDict[app.DIK_LALT] = lambda: self.HideName()
onClickKeyDict[app.DIK_LCONTROL] = lambda: self.HideMouseImage()
onClickKeyDict[app.DIK_LSHIFT] = lambda: self.SetQuickSlotMode()
onClickKeyDict[app.DIK_P] = lambda: self.OpenPetMainGui()

#if constInfo.PVPMODE_ACCELKEY_ENABLE:
# onClickKeyDict[app.DIK_B] = lambda: self.ChangePKMode()

self.onClickKeyDict=onClickKeyDict

if app.WJ_SPLIT_INVENTORY_SYSTEM:
def PressExtendedInventory(self):
if self.interface:
self.interface.ToggleExtendedInventoryWindow()

def DragonSouldQuestIndex(self, arg):
constInfo.DRAGON_SOULD_REFINE_QUEST_INDEX = int(arg)

def SupportInformationWnd(self, msg, msg1):
newmsg = str(msg.replace("-"," "))
newmsg2 = str(msg1.replace("-"," "))
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1(newmsg)
self.wndPopupDialog.SetText2(newmsg2)
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(30)

def SupportInformationWndClose(self):
self.SupportInformationOnCloseQuestionDialog()

if self.wndPopupDialog:
self.wndPopupDialog.Hide()
self.wndPopupDialog = None

def SupportInformationOnCloseQuestionDialog(self):
if not self.wndPopupDialog:
return

#self.wndPopupDialog.Close()
self.wndPopupDialog = None
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

def PressNumKey(self,num):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):

if num >= 1 and num <= 9:
if (chrmgr.IsPossibleEmoticon(-1)):
chrmgr.SetEmoticon(-1,int(num)-1)
net.SendEmoticon(int(num)-1)
else:
if num >= 1 and num <= 4:
self.pressNumber(num-1)

def ClickBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
return
else:
if constInfo.PVPMODE_ACCELKEY_ENABLE:
self.ChangePKMode()


def PressJKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsMountingHorse():
net.SendChatPacket("/unmount")
else:
if not uiPrivateShopBuilder.IsBuildingPrivateShop():
if app.ENABLE_MOUNT_SYSTEM:
for i in xrange(player.INVENTORY_PAGE_SIZE * 4):
index = player.GetItemIndex(i)
if index:
item.SelectItem(index)
subType = item.GetItemSubType()
if subType == item.USE_MOUNT:
allow = 0
net.SendItemUsePacket(i)
break
else:
for i in xrange(player.INVENTORY_PAGE_SIZE * 4):
if player.GetItemIndex(i) in (52043, 52044, 52045, 71164, 71165, 71166, 71167, 71168, 52091, 52092, 52093, 52094, 52095, 52096, 52097, 52098, 71161, 71131, 52033, 52005, 52019, 71176, 71177):
net.SendItemUsePacket(i)
break
def PressHKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_ride")
else:
self.interface.OpenHelpWindow()

def PressBKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_back")
else:
state = "EMOTICON"
self.interface.ToggleCharacterWindow(state)

def PressFKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_feed")
else:
app.ZoomCamera(app.CAMERA_TO_POSITIVE)

def PressGKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_mount_ride")
net.SendChatPacket("/user_horse_ride")
else:
if self.ShowNameFlag:
self.interface.ToggleGuildWindow()
else:
app.PitchCamera(app.CAMERA_TO_POSITIVE)

def ReleaseGKey(self):
app.PitchCamera(app.CAMERA_STOP)

if app.ENABLE_ADMIN_BAN_MANAGER:
def OpenAdminTool(self):
if not chr.IsGameMaster(player.GetMainCharacterIndex()):
return
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL): # Open window with CTRL + F12
if self.wndAdminTool.IsShow():
self.wndAdminTool.Hide()
else:
self.wndAdminTool.Show()

def PressQKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0==interfaceModule.IsQBHide:
interfaceModule.IsQBHide = 1
self.interface.HideAllQuestButton()
else:
interfaceModule.IsQBHide = 0
self.interface.ShowAllQuestButton()
else:
app.RotateCamera(app.CAMERA_TO_NEGATIVE)

def PressJKey(self):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsmountingHorse():
net.SendChatPacket("/unmount")
else:
self.teleport.Open()

def SetQuickSlotMode(self):
self.pressNumber=ui.__mem_func__(self.PressQuickSlot)

def SetQuickPageMode(self):
self.pressNumber=ui.__mem_func__(self.SelectQuickPage)

def PressQuickSlot(self, localSlotIndex):
if localeInfo.IsARABIC():
if 0 <= localSlotIndex and localSlotIndex < 4:
player.RequestUseLocalQuickSlot(3-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(11-localSlotIndex)
else:
player.RequestUseLocalQuickSlot(localSlotIndex)

def SelectQuickPage(self, pageIndex):
self.quickSlotPageIndex = pageIndex
player.SetQuickPage(pageIndex)

def PressNumNewKey(self, key):
if key > 8:
return
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):

if key >= 5 and key <= 8:
if(chrmgr.IsPossibleEmoticon(- 1)):
chrmgr.SetEmoticon(- 1, int(key) - 1)
net.SendEmoticon(int(key) - 1)
else:
self.pressNewNumber((key - 1) - 4)

def SetNewQuickSlotMode(self):
self.pressNewNumber = ui.__mem_func__(self.PressNewQuickSlot)

def SetNewQuickPageMode(self):
self.pressNewNumber = ui.__mem_func__(self.SelectNewQuickPage)

def PressNewQuickSlot(self, localSlotIndex):
player.RequestUseLocalNewQuickSlot(localSlotIndex)

def SelectNewQuickPage(self, pageIndex):
self.newquickSlotPageIndex = pageIndex
player.SetNewQuickPage(pageIndex)

def ToggleDebugInfo(self):
self.isShowDebugInfo = not self.isShowDebugInfo

if self.isShowDebugInfo:
self.PrintCoord.Show()
self.FrameRate.Show()
self.Pitch.Show()
self.Splat.Show()
self.TextureNum.Show()
self.ObjectNum.Show()
self.ViewDistance.Show()
self.PrintMousePos.Show()
else:
self.PrintCoord.Hide()
self.FrameRate.Hide()
self.Pitch.Hide()
self.Splat.Hide()
self.TextureNum.Hide()
self.ObjectNum.Hide()
self.ViewDistance.Hide()
self.PrintMousePos.Hide()

def __BuildDebugInfo(self):
## Character Position Coordinate
self.PrintCoord = ui.TextLine()
self.PrintCoord.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintCoord.SetPosition(wndMgr.GetScreenWidth() - 270, 0)

## Frame Rate
self.FrameRate = ui.TextLine()
self.FrameRate.SetFontName(localeInfo.UI_DEF_FONT)
self.FrameRate.SetPosition(wndMgr.GetScreenWidth() - 270, 20)

## Camera Pitch
self.Pitch = ui.TextLine()
self.Pitch.SetFontName(localeInfo.UI_DEF_FONT)
self.Pitch.SetPosition(wndMgr.GetScreenWidth() - 270, 40)

## Splat
self.Splat = ui.TextLine()
self.Splat.SetFontName(localeInfo.UI_DEF_FONT)
self.Splat.SetPosition(wndMgr.GetScreenWidth() - 270, 60)

##
self.PrintMousePos = ui.TextLine()
self.PrintMousePos.SetFontName(localeInfo.UI_DEF_FONT)
self.PrintMousePos.SetPosition(wndMgr.GetScreenWidth() - 270, 80)

# TextureNum
self.TextureNum = ui.TextLine()
self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)

# 오브젝트 그리는 개수
self.ObjectNum = ui.TextLine()
self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)

# 시야거리
self.ViewDistance = ui.TextLine()
self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
self.ViewDistance.SetPosition(0, 0)

self.timeLine.SetWindowHorizontalAlignCenter()
self.timeLine.SetHorizontalAlignCenter()
self.timeLine.SetFeather()
self.timeLine.SetOutline()
self.timeLine.Show()


self.fpsLine.SetWindowHorizontalAlignCenter()
self.fpsLine.SetHorizontalAlignCenter()
self.fpsLine.SetFeather()
self.fpsLine.SetOutline()
if constInfo.FPSMode == 1:
self.fpsLine.Show()
else:
self.fpsLine.Hide()

self.pingLine.SetWindowHorizontalAlignCenter()
self.pingLine.SetHorizontalAlignCenter()
self.pingLine.SetFeather()
self.pingLine.SetOutline()
self.pingLine.Hide()

def __NotifyError(self, msg):
chat.AppendChat(chat.CHAT_TYPE_INFO, msg)

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
def PressNumberKey(self, key):
self.pressNumber(key)

def PressQuickSlot(self, key):
player.RequestUseLocalQuickSlot(key)

def SelectQuickPage(self, key):
if app.IsPressed(app.DIK_LSHIFT):
self.quickSlotPageIndex = key
player.SetQuickPage(key)

def SetEmoticon(self, key):
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if (chrmgr.IsPossibleEmoticon(-1)):
chrmgr.SetEmoticon(-1, key)
net.SendEmoticon(key)

def ShowNameNew(self):
self.ShowNameFlag = True
self.playerGauge.EnableShowAlways()

def HideNameNew(self):
self.ShowNameFlag = False
self.playerGauge.DisableShowAlways()

def PressExtraKey(self, key):
if key == "RIDE_HORSE":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_ride")

elif key == "RIDE_PEED":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_horse_feed")

elif key == "RIDE":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
net.SendChatPacket("/user_mount_ride")
else:
if self.ShowNameFlag:
self.interface.ToggleGuildWindow()
else:
app.PitchCamera(app.CAMERA_TO_POSITIVE)

elif key == "RIDE_J":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if player.IsMountingHorse():
net.SendChatPacket("/unmount")
else:
if not uiPrivateShopBuilder.IsBuildingPrivateShop():
if app.ENABLE_MOUNT_SYSTEM:
for i in xrange(180):
index = player.GetItemIndex(i)
if index:
item.SelectItem(index)
subType = item.GetItemSubType()
if subType == item.USE_MOUNT:
net.SendItemUsePacket(i)
break
else:
return

elif key == "RIDE_BYE":
net.SendChatPacket("/user_horse_back")

elif key == "QUEST_SCROLL_ONOFF":
if app.IsPressed(app.DIK_LCONTROL) or app.IsPressed(app.DIK_RCONTROL):
if 0 == interfaceModule.IsQBHide:
interfaceModule.IsQBHide = 1
self.interface.HideAllQuestButton()
else:
interfaceModule.IsQBHide = 0
self.interface.ShowAllQuestButton()

elif key == "GUILD_WINDOW":
if app.IsPressed(app.DIK_LALT):
self.interface.ToggleGuildWindow()

elif key == "MESSENGER_WINDOW":
if app.IsPressed(app.DIK_LCONTROL):
self.interface.ToggleMessenger()

elif key == "SHOW_MINIMAP":
if app.IsPressed(app.DIK_LSHIFT):
if False == self.interface.wndMiniMap.isShowMiniMap():
self.interface.wndMiniMap.ShowMiniMap()
self.interface.wndMiniMap.SetTop()
else:
self.interface.wndMiniMap.HideMiniMap()

# elif key == "HIDE_PM":
# if 0 == interfaceModule.IsWisperHide:
# interfaceModule.IsWisperHide = 1
# self.interface.HideAllWhisperButton()
# else:
# interfaceModule.IsWisperHide = 0
# self.interface.ShowAllWhisperButton()

elif key == "OPEN_WHISPER":
self.interface.OpenWhisperDialogWithoutTarget()


def ChangePKMode(self):

if not app.IsPressed(app.DIK_LCONTROL):
return

if player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
self.__NotifyError(localeInfo.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
return

curTime = app.GetTime()
if curTime - self.lastPKModeSendedTime < constInfo.PVPMODE_ACCELKEY_DELAY:
return

self.lastPKModeSendedTime = curTime

curPKMode = player.GetPKMode()
nextPKMode = curPKMode + 1
if nextPKMode == player.PK_MODE_PROTECT:
if 0 == player.GetGuildID():
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
nextPKMode = 0
else:
nextPKMode = player.PK_MODE_GUILD

elif nextPKMode == player.PK_MODE_MAX_NUM:
nextPKMode = 0

net.SendChatPacket("/PKMode " + str(nextPKMode))
print "/PKMode " + str(nextPKMode)

def OnChangePKMode(self):

self.interface.OnChangePKMode()

try:
self.__NotifyError(localeInfo.OPTION_PVPMODE_MESSAGE_DICT[player.GetPKMode()])
except KeyError:
print "UNKNOWN PVPMode[%d]" % (player.GetPKMode())

if constInfo.PVPMODE_TEST_ENABLE:
curPKMode = player.GetPKMode()
alignment, grade = chr.testGetPKData()
self.pkModeNameDict = { 0 : "PEACE", 1 : "REVENGE", 2 : "FREE", 3 : "PROTECT", }
self.testPKMode.SetText("Current PK Mode : " + self.pkModeNameDict.get(curPKMode, "UNKNOWN"))
self.testAlignment.SetText("Current Alignment : " + str(alignment) + " (" + localeInfo.TITLE_NAME_LIST[grade] + ")")

###############################################################################################
###############################################################################################
## Game Callback Functions

# Start
def StartGame(self):
self.RefreshInventory()
self.RefreshEquipment()
self.RefreshCharacter()
self.RefreshSkill()

# Refresh
def CheckGameButton(self):
if self.interface:
self.interface.CheckGameButton()

def RefreshAlignment(self):
self.interface.RefreshAlignment()

def RefreshStatus(self):
self.CheckGameButton()

if self.interface:
self.interface.RefreshStatus()

if self.playerGauge:
self.playerGauge.RefreshGauge()

def RefreshStamina(self):
self.interface.RefreshStamina()

def RefreshSkill(self):
self.CheckGameButton()
if self.interface:
self.interface.RefreshSkill()

def RefreshQuest(self):
self.interface.RefreshQuest()

def RefreshMessenger(self):
self.interface.RefreshMessenger()

def RefreshGuildInfoPage(self):
self.interface.RefreshGuildInfoPage()

def RefreshGuildBoardPage(self):
self.interface.RefreshGuildBoardPage()

def RefreshGuildMemberPage(self):
self.interface.RefreshGuildMemberPage()

def RefreshGuildMemberPageGradeComboBox(self):
self.interface.RefreshGuildMemberPageGradeComboBox()

def RefreshGuildSkillPage(self):
self.interface.RefreshGuildSkillPage()

def RefreshGuildGradePage(self):
self.interface.RefreshGuildGradePage()

def RefreshMobile(self):
if self.interface:
self.interface.RefreshMobile()

def OnMobileAuthority(self):
self.interface.OnMobileAuthority()

def OnBlockMode(self, mode):
self.interface.OnBlockMode(mode)

def OpenQuestWindow(self, skin, idx):
if constInfo.INPUT_IGNORE == 1:
return

self.interface.OpenQuestWindow(skin, idx)

def HideAllQuestWindow(self):
self.interface.HideAllQuestWindow()

def GetInputOn(self):
constInfo.INPUT_IGNORE = 1

def GetInputOff(self):
constInfo.INPUT_IGNORE = 0

def AskGuildName(self):

guildNameBoard = uiCommon.InputDialog()
guildNameBoard.SetTitle(localeInfo.GUILD_NAME)
guildNameBoard.SetAcceptEvent(ui.__mem_func__(self.ConfirmGuildName))
guildNameBoard.SetCancelEvent(ui.__mem_func__(self.CancelGuildName))
guildNameBoard.Open()

self.guildNameBoard = guildNameBoard

def ConfirmGuildName(self):
guildName = self.guildNameBoard.GetText()
if not guildName:
return

if net.IsInsultIn(guildName):
self.PopupMessage(localeInfo.GUILD_CREATE_ERROR_INSULT_NAME)
return

net.SendAnswerMakeGuildPacket(guildName)
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUE

def CancelGuildName(self):
self.guildNameBoard.Close()
self.guildNameBoard = None
return TRUE

## Refine
def PopupMessage(self, msg):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(msg, 0, localeInfo.UI_OK)

def OpenRefineDialog(self, targetItemPos, nextGradeItemVnum, cost, prob, prob_ex, type=0):
self.interface.OpenRefineDialog(targetItemPos, nextGradeItemVnum, cost, prob, prob_ex, type)

def AppendMaterialToRefineDialog(self, vnum, count):
self.interface.AppendMaterialToRefineDialog(vnum, count)

def RunUseSkillEvent(self, slotIndex, coolTime):
self.interface.OnUseSkill(slotIndex, coolTime)

def ClearAffects(self):
self.affectShower.ClearAffects()

def SetAffect(self, affect):
self.affectShower.SetAffect(affect)

def ResetAffect(self, affect):
self.affectShower.ResetAffect(affect)

def RecvQuest(self, index, name):
self.interface.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())

def BINARY_RecvQuest(self, index, name, iconType, iconName):
self.interface.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())

if app.ENABLE_SHOW_CHEST_DROP:
def BINARY_AddChestDropInfo(self, chestVnum, pageIndex, slotIndex, itemVnum, itemCount):
if self.interface:
self.interface.AddChestDropInfo(chestVnum, pageIndex, slotIndex, itemVnum, itemCount)

def BINARY_RefreshChestDropInfo(self, chestVnum):
if self.interface:
self.interface.RefreshChestDropInfo(chestVnum)

def BINARY_BLOOD_DUNGEON(self, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15):
self.blood_dungeon.GetBloodDungeon(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15)

def BINARY_STONE_EVENT(self, arg1):
self.stone_event.SetPoint(arg1)

# UNKNOWN_UPDATE
def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
self.affectShower.BINARY_NEW_AddAffect(type, pointIdx, value, duration)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulActivate(type - chr.NEW_AFFECT_DRAGON_SOUL_DECK1)
elif chr.NEW_AFFECT_DRAGON_SOUL_QUALIFIED == type:
self.BINARY_DragonSoulGiveQuilification()
elif app.ENABLE_DS_SET and chr.NEW_AFFECT_DS_SET == type:
self.interface.DragonSoulSetGrade(value)

def BINARY_NEW_RemoveAffect(self, type, pointIdx):
self.affectShower.BINARY_NEW_RemoveAffect(type, pointIdx)
if chr.NEW_AFFECT_DRAGON_SOUL_DECK1 == type or chr.NEW_AFFECT_DRAGON_SOUL_DECK2 == type:
self.interface.DragonSoulDeactivate()
elif app.ENABLE_DS_SET and chr.NEW_AFFECT_DS_SET == type:
self.interface.DragonSoulSetGrade(0)



# END_OF_UNKNOWN_UPDATE

def ActivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnActivateSkill(slotIndex)

def DeactivateSkillSlot(self, slotIndex):
if self.interface:
self.interface.OnDeactivateSkill(slotIndex)

def RefreshEquipment(self):
if self.interface:
self.interface.RefreshInventory()

def RefreshInventory(self):
if self.interface:
self.interface.RefreshInventory()

def RefreshCharacter(self):
if self.interface:
self.interface.RefreshCharacter()

def OnGameOver(self):
self.CloseTargetBoard()
self.OpenRestartDialog()

def OpenRestartDialog(self):
self.interface.OpenRestartDialog()

def ChangeCurrentSkill(self, skillSlotNumber):
self.interface.OnChangeCurrentSkill(skillSlotNumber)

if app.ENABLE_12ZI:
def OpenUI12zi(self, yellowmark, greenmark, yellowreward, greenreward, goldreward):
self.interface.OpenUI12zi(yellowmark, greenmark, yellowreward, greenreward, goldreward)

def Refresh12ziTimer(self, currentFloor, jumpCount, limitTime, elapseTime):
self.interface.Refresh12ziTimer(currentFloor, jumpCount, limitTime, elapseTime)

def Show12ziJumpButton(self):
self.interface.Show12ziJumpButton()

def Hide12ziTimer(self):
self.interface.Hide12ziTimer()

def OpenReviveDialog(self, vid, itemcount):
self.targetBoard.OpenReviveDialog(vid, itemcount);

def NotEnoughPrism(self, itemcount):
self.PopupMessage(localeInfo.NOT_ENOUGH_PRISM % (itemcount))

def RefreshShopItemToolTip(self):
self.interface.RefreshShopItemToolTip()

def __Refresh12ziTimer1(self):
net.SendChatPacket("/open_cz")

def __Refresh12ziTimer2(self, a, b, c, d, e):
self.OpenUI12zi(int(a), int(b), int(c), int(d), int(e))

def __MashRoomCoolTime(self):
if self.wndMashroomImageCoolTime:
self.wndMashroomImageCoolTime.Open()

def __MashRoomCoolTimeSetFloor(self, arg):
self.wndMashroomImageCoolTime.SetFloor(arg)


def __MidgardCoolTime(self):
if self.wndMidgardImageCoolTime:
self.wndMidgardImageCoolTime.Open()

def __MidgardCoolTimeSetFloor(self, arg):
self.wndMidgardImageCoolTime.SetFloor(arg)

## TargetBoard
def SetPCTargetBoard(self, vid, name):
self.targetBoard.Open(vid, name)

if app.IsPressed(app.DIK_LCONTROL):

if not player.IsSameEmpire(vid):
return

if player.IsMainCharacterIndex(vid):
return
elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(vid):
return

self.interface.OpenWhisperDialog(name)

def RefreshTargetBoardByVID(self, vid):
self.targetBoard.RefreshByVID(vid)

def RefreshTargetBoardByName(self, name):
self.targetBoard.RefreshByName(name)

def __RefreshTargetBoard(self):
self.targetBoard.Refresh()

if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
def SetHPTargetBoard(self, vid, hpPercentage, iMinHP, iMaxHP, bElement):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)

self.targetBoard.SetHP(hpPercentage, iMinHP, iMaxHP)
self.targetBoard.SetElementImage(bElement)
self.targetBoard.Show()
else:
def SetHPTargetBoard(self, vid, hpPercentage, bElement):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.ResetTargetBoard()
self.targetBoard.SetEnemyVID(vid)

self.targetBoard.SetHP(hpPercentage)
self.targetBoard.SetElementImage(bElement)
self.targetBoard.Show()

def CloseTargetBoardIfDifferent(self, vid):
if vid != self.targetBoard.GetTargetVID():
self.targetBoard.Close()

def CloseTargetBoard(self):
self.targetBoard.Close()

## View Equipment
def OpenEquipmentDialog(self, vid):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.OpenEquipmentDialog(vid)

def SetEquipmentDialogItem(self, vid, slotIndex, vnum, count, sealbind, transmutation):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogItem(vid, slotIndex, vnum, count, sealbind, transmutation)

def SetEquipmentDialogSocket(self, vid, slotIndex, socketIndex, value):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogSocket(vid, slotIndex, socketIndex, value)

def SetEquipmentDialogAttr(self, vid, slotIndex, attrIndex, type, value):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.interface.SetEquipmentDialogAttr(vid, slotIndex, attrIndex, type, value)

def BINARY_SET_LANG_AND_EMPIRE_FLAG(self, name, language, empire):
pass

def ViewEquipRequest(self, vid):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
vid = int(vid)
eqRequestQuestionDialog = uiCommon.QuestionDialog()
eqRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + ' giydiklerini g\xf6rmek istiyor?')
eqRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
eqRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
eqRequestQuestionDialog.SetAcceptEvent(lambda arg = True: self.AnswerViewEquipRequest(arg))
eqRequestQuestionDialog.SetCancelEvent(lambda arg = False: self.AnswerViewEquipRequest(arg))
eqRequestQuestionDialog.Open()
eqRequestQuestionDialog.vid = vid
self.eqRequestQuestionDialog = eqRequestQuestionDialog

def AnswerViewEquipRequest(self, answer):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
if not self.eqRequestQuestionDialog:
return
else:
vid = self.eqRequestQuestionDialog.vid
if answer:
net.SendChatPacket('/view_equip_accept ' + str(vid))
else:
net.SendChatPacket('/view_equip_deny ' + str(vid))
self.eqRequestQuestionDialog.Close()
self.eqRequestQuestionDialog = None
return

def ViewEquipRequestDenied(self):
if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
self.PopupMessage('Z\xfdrh g\xf6r\xfcnt\xfcleme iste\xf0i reddedildi.')

# SHOW_LOCAL_MAP_NAME
def ShowMapName(self, mapName, x, y):

if self.mapNameShower:
self.mapNameShower.ShowMapName(mapName, x, y)

if self.interface:
self.interface.SetMapName(mapName)
# END_OF_SHOW_LOCAL_MAP_NAME

def BINARY_OpenAtlasWindow(self):
self.interface.BINARY_OpenAtlasWindow()

## Chat
# if app.ENABLE_LANG_AND_EMPIRE_FLAG:
# def OnRecvWhisper(self, mode, name, line, language, empire):
# if name.find("<svside>") != -1:
# global svsidedia
# if line[line.find(",")-4:line.find(",")].isdigit():
# svsidedia.nm_updateimgoffline(line[line.find(", ")-4:line.find(", ")])
# else:
# svsidedia.Board.Hide()
# return
# if mode == chat.WHISPER_TYPE_GM:
# self.interface.RegisterGameMasterName(name)
# chat.AppendWhisper(mode, name, line)
# self.interface.RecvWhisper(name, language, empire)
# else:
def OnRecvWhisper(self, mode, name, line):
if mode == chat.WHISPER_TYPE_GM:
self.interface.RegisterGameMasterName(name)
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)

def BINARY_OnRecvBulkWhisper(self, content):
content = content.replace("$", " ")

self.interface.RegisterGameMasterName("<Sistem>")
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, "<Sistem>", content)

self.interface.RecvWhisper("<Sistem>")

def OnRecvWhisperSystemMessage(self, mode, name, line):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, line)
self.interface.RecvWhisper(name)

def OnRecvWhisperError(self, mode, name, line):
if localeInfo.WHISPER_ERROR.has_key(mode):
if app.ENABLE_OFFLINE_MESSAGE:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, name + localeInfo.WHISPER_OFFLINE_MESSAGE_WARNING)
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, localeInfo.WHISPER_ERROR[mode](name))
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
self.interface.RecvWhisper(name)

def RecvWhisper(self, name):
self.interface.RecvWhisper(name)

def OnPickMoney(self, money):
chat.AppendChat(chat.CHAT_TYPE_INFO, str(localeInfo.GAME_PICK_MONEY) % (str(localeInfo.NumberToString(money))))

if app.ENABLE_CHEQUE_SYSTEM:
def OnPickCheque(self, cheque):
chat.AppendChat(chat.CHAT_TYPE_INFO, str(localeInfo.CHEQUE_SYSTEM_PICK_WON) % (str(localeInfo.NumberToString(cheque))))

def SetBeadCount(self, value):
self.interface.SetBeadCount(value)

def NextBeadUpdateTime(self, value):
self.interface.NextBeadUpdateTime(value)

def OnPickGem(self, gem):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_GEM % (localeInfo.NumberToString(gem)))

def OnPickYearRoundPoint(self, year_round_point):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_PICK_YEAR_ROUND_POINT % (localeInfo.NumberToString(year_round_point)))

def OnShopError(self, type):
try:
self.PopupMessage(localeInfo.SHOP_ERROR_DICT[type])
except KeyError:
self.PopupMessage(localeInfo.SHOP_ERROR_UNKNOWN % (type))

def OnSafeBoxError(self):
self.PopupMessage(localeInfo.SAFEBOX_ERROR)
self.interface.InitSafeboxPassword()

def OnFishingSuccess(self, isFish, fishName):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_SUCCESS(isFish, fishName), 2000)

# ADD_FISHING_MESSAGE
def OnFishingNotifyUnknown(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_UNKNOWN)

def OnFishingWrongPlace(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_WRONG_PLACE)
# END_OF_ADD_FISHING_MESSAGE

def OnFishingNotify(self, isFish, fishName):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.FISHING_NOTIFY(isFish, fishName))

def OnFishingFailure(self):
chat.AppendChatWithDelay(chat.CHAT_TYPE_INFO, localeInfo.FISHING_FAILURE, 2000)

def OnCannotPickItem(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_PICK_ITEM)

# MINING
def OnCannotMining(self):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.GAME_CANNOT_MINING)
# END_OF_MINING

def OnCannotUseSkill(self, vid, type):
if localeInfo.USE_SKILL_ERROR_TAIL_DICT.has_key(type):
textTail.RegisterInfoTail(vid, localeInfo.USE_SKILL_ERROR_TAIL_DICT[type])

if localeInfo.USE_SKILL_ERROR_CHAT_DICT.has_key(type):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.USE_SKILL_ERROR_CHAT_DICT[type])

def OnCannotShotError(self, vid, type):
textTail.RegisterInfoTail(vid, localeInfo.SHOT_ERROR_TAIL_DICT.get(type, localeInfo.SHOT_ERROR_UNKNOWN % (type)))

## PointReset
def StartPointReset(self):
self.interface.OpenPointResetDialog()

## Shop
def StartShop(self, vid, count):
if(vid == constInfo.MARKED_SHOP_VID):
background.DeletePrivateShopPos()
constInfo.MARKED_SHOP_VID = 0
self.interface.OpenShopDialog(vid, count)

def EndShop(self):
self.interface.CloseShopDialog()

def RefreshShop(self):
self.interface.RefreshShopDialog()

def SetShopSellingPrice(self, Price):
pass

## Exchange
def StartExchange(self):
self.interface.StartExchange()

def EndExchange(self):
self.interface.EndExchange()

def RefreshExchange(self):
self.interface.RefreshExchange()

## Party
def RecvPartyInviteQuestion(self, leaderVID, leaderName):
partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit3()
partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN)
partyInviteQuestionDialog.SetTimeOverMsg(localeInfo.PARTY_ANSWER_TIMEOVER)
partyInviteQuestionDialog.SetTimeOverEvent(self.AnswerPartyInvite, False)
partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg))
partyInviteQuestionDialog.Open(10)
partyInviteQuestionDialog.partyLeaderVID = leaderVID
self.partyInviteQuestionDialog = partyInviteQuestionDialog

def AnswerPartyInvite(self, answer):

if not self.partyInviteQuestionDialog:
return

partyLeaderVID = self.partyInviteQuestionDialog.partyLeaderVID

distance = player.GetCharacterDistance(partyLeaderVID)
if distance < 0.0 or distance > 5000:
answer = FALSE

net.SendPartyInviteAnswerPacket(partyLeaderVID, answer)

self.partyInviteQuestionDialog.Close()
self.partyInviteQuestionDialog = None

if app.ENABLE_OFFICIAL_GF_PARTY_UPDATE:
def AddPartyMember(self, pid, name, mapIdx, channel):
self.interface.AddPartyMember(pid, name, mapIdx, channel)
else:
def AddPartyMember(self, pid, name):
self.interface.AddPartyMember(pid, name)

def UpdatePartyMemberInfo(self, pid):
self.interface.UpdatePartyMemberInfo(pid)

def RemovePartyMember(self, pid):
self.interface.RemovePartyMember(pid)
self.__RefreshTargetBoard()

if app.ENABLE_OFFICIAL_GF_PARTY_UPDATE:
def LinkPartyMember(self, pid, vid, mapIdx, channel):
self.interface.LinkPartyMember(pid, vid, mapIdx, channel)
else:
def LinkPartyMember(self, pid, vid):
self.interface.LinkPartyMember(pid, vid)

def UnlinkPartyMember(self, pid):
self.interface.UnlinkPartyMember(pid)

def UnlinkAllPartyMember(self):
self.interface.UnlinkAllPartyMember()

def ExitParty(self):
self.interface.ExitParty()
self.RefreshTargetBoardByVID(self.targetBoard.GetTargetVID())

def ChangePartyParameter(self, distributionMode):
self.interface.ChangePartyParameter(distributionMode)

## Messenger
def OnMessengerAddFriendQuestion(self, name):
messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit3()
messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name))
messengerAddFriendQuestion.SetTimeOverMsg(localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER)
messengerAddFriendQuestion.SetTimeOverEvent(self.OnDenyAddFriend)
messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend))
messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend))
messengerAddFriendQuestion.Open(10)
messengerAddFriendQuestion.name = name
self.messengerAddFriendQuestion = messengerAddFriendQuestion

def OnAcceptAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth y " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUE

def OnDenyAddFriend(self):
name = self.messengerAddFriendQuestion.name
net.SendChatPacket("/messenger_auth n " + name)
self.OnCloseAddFriendQuestionDialog()
return TRUE

def OnCloseAddFriendQuestionDialog(self):
self.messengerAddFriendQuestion.Close()
self.messengerAddFriendQuestion = None
return TRUE

## SafeBox
def OpenSafeboxWindow(self, size):
self.interface.OpenSafeboxWindow(size)

def RefreshSafebox(self):
self.interface.RefreshSafebox()

def RefreshSafeboxMoney(self):
self.interface.RefreshSafeboxMoney()

# ITEM_MALL
def OpenMallWindow(self, size):
self.interface.OpenMallWindow(size)

def RefreshMall(self):
self.interface.RefreshMall()
# END_OF_ITEM_MALL

## Guild
def RecvGuildInviteQuestion(self, guildID, guildName):
guildInviteQuestionDialog = uiCommon.QuestionDialog()
guildInviteQuestionDialog.SetText(guildName + localeInfo.GUILD_DO_YOU_JOIN)
guildInviteQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.AnswerGuildInvite(arg))
guildInviteQuestionDialog.Open()
guildInviteQuestionDialog.guildID = guildID
self.guildInviteQuestionDialog = guildInviteQuestionDialog

def AnswerGuildInvite(self, answer):

if not self.guildInviteQuestionDialog:
return

guildLeaderVID = self.guildInviteQuestionDialog.guildID
net.SendGuildInviteAnswerPacket(guildLeaderVID, answer)

self.guildInviteQuestionDialog.Close()
self.guildInviteQuestionDialog = None


def DeleteGuild(self):
self.interface.DeleteGuild()

## Clock
def ShowClock(self, second):
self.interface.ShowClock(second)

def HideClock(self):
self.interface.HideClock()

## Emotion
def BINARY_ActEmotion(self, emotionIndex):
if self.interface.wndCharacter:
self.interface.wndCharacter.ActEmotion(emotionIndex)

###############################################################################################
###############################################################################################
## Keyboard Functions

def CheckFocus(self):
if FALSE == self.IsFocus():
if TRUE == self.interface.IsOpenChat():
self.interface.ToggleChat()

self.SetFocus()

def SaveScreen(self):
print "save screen"

# SCREENSHOT_CWDSAVE
if SCREENSHOT_CWDSAVE:
if not os.path.exists(os.getcwd()+os.sep+"screenshot"):
os.mkdir(os.getcwd()+os.sep+"screenshot")

(succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep)
elif SCREENSHOT_DIR:
(succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR)
else:
(succeeded, name) = grp.SaveScreenShot()
# END_OF_SCREENSHOT_CWDSAVE

if succeeded:
pass
"""
chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1)
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2)
"""
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE)

def ShowConsole(self):
pass

def ShowName(self):
self.ShowNameFlag = TRUE
self.playerGauge.EnableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex+1)

# ADD_ALWAYS_SHOW_NAME
def __IsShowName(self):
if systemSetting.IsAlwaysShowName() == 0:
return True

if self.ShowNameFlag:
return True

return False

def __IsShowNameItem(self):
if systemSetting.IsAlwaysShowName() == 1:
return True

return False
# END_OF_ADD_ALWAYS_SHOW_NAME

def HideName(self):
self.ShowNameFlag = FALSE
self.playerGauge.DisableShowAlways()
player.SetQuickPage(self.quickSlotPageIndex)
player.SetNewQuickPage(self.newquickSlotPageIndex)

def ShowMouseImage(self):
self.interface.ShowMouseImage()

def HideMouseImage(self):
self.interface.HideMouseImage()

def StartAttack(self):
player.SetAttackKeyState(TRUE)

def EndAttack(self):
player.SetAttackKeyState(FALSE)

def MoveUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, TRUE)

def MoveDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, TRUE)

def MoveLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, TRUE)

def MoveRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, TRUE)

def StopUp(self):
player.SetSingleDIKKeyState(app.DIK_UP, FALSE)

def StopDown(self):
player.SetSingleDIKKeyState(app.DIK_DOWN, FALSE)

def StopLeft(self):
player.SetSingleDIKKeyState(app.DIK_LEFT, FALSE)

def StopRight(self):
player.SetSingleDIKKeyState(app.DIK_RIGHT, FALSE)

def PickUpItem(self):
#player.PickCloseItem()
player.PickCloseItemVector()

def PickUpItemNew(self):
player.PickCloseItemVector()

def PickUpMoney(self):
player.PickCloseMoney()

def PetToplama(Self, Tur):
player.PickCloseAutoItem(Tur)

###############################################################################################
###############################################################################################
## Event Handler

def OnKeyDown(self, key):
if self.interface.wndWeb and self.interface.wndWeb.IsShow():
return

if key == app.DIK_ESC:
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
if self.interface:
self.dlgKeyboardSettings.OnKeyDown(key)

try:
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
pass
else:
self.onPressKeyDict[key]()
except KeyError:
pass
except:
raise

return TRUE

def OnKeyUp(self, key):
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
if self.interface:
self.dlgKeyboardSettings.OnKeyUp(key)
try:
if app.ENABLE_KEYBOARD_SETTINGS_SYSTEM:
pass
else:
self.onClickKeyDict[key]()
except KeyError:
pass
except:
raise
return TRUE

def OnMouseLeftButtonDown(self):
if self.interface.BUILD_OnMouseLeftButtonDown():
return

if mouseModule.mouseController.isAttached():
self.CheckFocus()
else:
hyperlink = ui.GetHyperlink()
if hyperlink:
return
else:
self.CheckFocus()
player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);

return TRUE

def OnMouseLeftButtonUp(self):

if self.interface.BUILD_OnMouseLeftButtonUp():
return

if mouseModule.mouseController.isAttached():

attachedType = mouseModule.mouseController.GetAttachedType()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()
attachedItemSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemCount = mouseModule.mouseController.GetAttachedItemCount()

## QuickSlot
if player.SLOT_TYPE_QUICK_SLOT == attachedType:
player.RequestDeleteGlobalQuickSlot(attachedItemSlotPos)
player.RequestDeleteGlobalNewQuickSlot(attachedItemSlotPos)

if player.SLOT_TYPE_AUTOHUNT_ITEM == attachedType:
self.interface.AutohuntRemoveItemSlot(attachedItemSlotPos)

if player.SLOT_TYPE_AUTOHUNT_SKILL == attachedType:
self.interface.AutohuntRemoveSkillSlot(attachedItemSlotPos)

## Inventory
elif player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedType or player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedType or player.SLOT_TYPE_STONE_INVENTORY == attachedType or player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedType or player.SLOT_TYPE_ATTRIBUTE_INVENTORY == attachedType or player.SLOT_TYPE_FLOWER_INVENTORY == attachedType:

if player.ITEM_MONEY == attachedItemIndex:
self.__PutMoney(attachedType, attachedItemCount, self.PickingCharacterIndex)
else:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)

## DragonSoul
elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType:
self.__PutItem(attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, self.PickingCharacterIndex)

mouseModule.mouseController.DeattachObject()

else:
hyperlink = ui.GetHyperlink()
if hyperlink:
if app.IsPressed(app.DIK_LALT):
link = chat.GetLinkFromHyperlink(hyperlink)
ime.PasteString(link)
else:
self.interface.MakeHyperlinkTooltip(hyperlink)
return
else:
player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)

#player.EndMouseWalking()
return TRUE

def __PutItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount, dstChrID):
if player.SLOT_TYPE_INVENTORY == attachedType or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedType or player.SLOT_TYPE_SKILL_BOOK_INVENTORY == attachedType or player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == attachedType or player.SLOT_TYPE_STONE_INVENTORY == attachedType or player.SLOT_TYPE_GIFT_BOX_INVENTORY == attachedType or player.SLOT_TYPE_ATTRIBUTE_INVENTORY == attachedType or player.SLOT_TYPE_FLOWER_INVENTORY == attachedType:
attachedInvenType = player.SlotTypeToInvenType(attachedType)
if TRUE == chr.HasInstance(self.PickingCharacterIndex) and player.GetMainCharacterIndex() != dstChrID:
if player.IsEquipmentSlot(attachedItemSlotPos):
self.stream.popupWindow.Close()
self.stream.popupWindow.Open(localeInfo.EXCHANGE_FAILURE_EQUIP_ITEM, 0, localeInfo.UI_OK)
else:
if chr.IsNPC(dstChrID):
net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
constInfo.AUTO_REFINE_TYPE = 2
constInfo.AUTO_REFINE_DATA["NPC"][0] = dstChrID
constInfo.AUTO_REFINE_DATA["NPC"][1] = attachedInvenType
constInfo.AUTO_REFINE_DATA["NPC"][2] = attachedItemSlotPos
constInfo.AUTO_REFINE_DATA["NPC"][3] = attachedItemCount
else:
if app.ENABLE_MELEY_LAIR_DUNGEON:
if chr.IsStone(dstChrID):
net.SendGiveItemPacket(dstChrID, attachedInvenType, attachedItemSlotPos, attachedItemCount)
else:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
else:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeItemAddPacket(attachedInvenType, attachedItemSlotPos, 0)
else:
self.interface.DeleteItem(attachedItemSlotPos, attachedInvenType)

def __PutMoney(self, attachedType, attachedMoney, dstChrID):


if TRUE == chr.HasInstance(dstChrID) and player.GetMainCharacterIndex() != dstChrID:
net.SendExchangeStartPacket(dstChrID)
net.SendExchangeElkAddPacket(attachedMoney)

def OnMouseRightButtonDown(self):

self.CheckFocus()

if TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()

else:
player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS)

return TRUE

def OnMouseRightButtonUp(self):
if TRUE == mouseModule.mouseController.isAttached():
return TRUE

player.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK)
return TRUE

def OnMouseMiddleButtonDown(self):
player.SetMouseMiddleButtonState(player.MBS_PRESS)

def OnMouseMiddleButtonUp(self):
player.SetMouseMiddleButtonState(player.MBS_CLICK)

def CMDBiyologPenceresiAc(self):
constInfo.OPEN_BIO_WND = 1

def LoginSuccesStatus(self, arg):
constInfo.LOGIN_SUCCES_STATUS = int(arg)

# def OpenBiologWindow(self):
# self.biowindow.Show()

def auto_hunting_window_open(self):
self.autohunt.Open()

def OnUpdate(self):
app.UpdateGame()
self.ConstInfoEvent()

if self.mapNameShower.IsShow():
self.mapNameShower.Update()

if self.isShowDebugInfo:
self.UpdateDebugInfo()

if self.enableXMasBoom:
self.__XMasBoom_Update()

if systemSetting.IsAutoPickUp():
self.PickUpItem()

self.interface.BUILD_OnUpdate()

nPing = app.GetPingTime()
self.pingLine.SetText("PING: %s" % (nPing))

nFps = app.GetRenderFPS()
self.fpsLine.SetText("FPS: %s" % (nFps))

locale.setlocale(locale.LC_ALL, 'turkish')
mydate = datetime.datetime.now()
gun = time.strftime("|cffD7D6D6%d ")
ay = mydate.strftime("|cffD7D6D6%B ")
yil = time.strftime("|cffD7D6D6%Y")
saat = time.strftime("|cffD7D6D6 %H:%M:%S")
self.timeLine.SetText(gun+ay+yil+saat)

if constInfo.SD_SERVER_SWITCHBOT == 1:
self.interface.ToggleSwitchbotWindow()
constInfo.SD_SERVER_SWITCHBOT = 0

if constInfo.SD_BLANKA_BIYOLOG == 1:
if self.interface:
self.interface.OpenBiyologDialog()
constInfo.SD_BLANKA_BIYOLOG = 0

def Problem_Report_Client(self):
if constInfo.REPORT_WND_ISOPEN == 1:
return

self.Problem_Report_Wnd = ui.BoardWithTitleBar()
self.Problem_Report_Wnd.SetSize(611, 154)
self.Problem_Report_Wnd.SetCenterPosition()
self.Problem_Report_Wnd.AddFlag('movable')
self.Problem_Report_Wnd.AddFlag('float')
self.Problem_Report_Wnd.SetTitleName("Sorun Bildir - l?fen sadece oyun i?risinde g?d賄?? sorunlar?bildiriniz.")
self.Problem_Report_Wnd.SetCloseEvent(self.ReportButtonFucClose)
self.Problem_Report_Wnd.Show()
self.comp = Component()
constInfo.REPORT_WND_ISOPEN = 1

self.gonder = self.comp.Button(self.Problem_Report_Wnd, ceviri.gonder, '', 543, 97, self.ReportButtonFuc, 'd:/ymir work/ui/public/middle_button_01.sub', 'd:/ymir work/ui/public/middle_button_02.sub', 'd:/ymir work/ui/public/middle_button_03.sub')
self.slotbar_sorun, self.sorun = self.comp.EditLine2(self.Problem_Report_Wnd, ceviri.yonetici, 28+3, 85, 510, 45, 300)
self.text = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.sorunne, 245, 35, self.comp.RGB(245, 255, 255))
self.text2 = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.odulalacan, 170, 50, self.comp.RGB(255, 255, 255))
self.text3 = self.comp.TextLine(self.Problem_Report_Wnd, ceviri.sorungir, 210, 64, self.comp.RGB(255, 255, 255))

def ReportButtonFucClose(self):
# self.Close()
self.Problem_Report_Wnd.Hide()
constInfo.REPORT_WND_ISOPEN = 0

def ReportButtonFuc(self):
sorun = self.sorun.GetText()
if sorun == "":
self.bos = uiCommon.PopupDialog()
self.bos.SetText(ceviri.bosbirakma)
self.bos.Show()
elif len(sorun) < 30:
self.bos = uiCommon.PopupDialog()
self.bos.SetText(ceviri.mesaj_karakter_30)
self.bos.Show()
else:
newmsg = str(sorun.replace(" ","-"))
net.SendChatPacket("/report_system " + str(newmsg))
self.Problem_Report_Wnd.Hide()
constInfo.REPORT_WND_ISOPEN = 0

def UpdateDebugInfo(self):
#
# 캐릭터 좌표 및 FPS 출력
(x, y, z) = player.GetMainCharacterPosition()
nUpdateTime = app.GetUpdateTime()
nUpdateFPS = app.GetUpdateFPS()
nRenderFPS = app.GetRenderFPS()
nFaceCount = app.GetFaceCount()
fFaceSpeed = app.GetFaceSpeed()
nST=background.GetRenderShadowTime()
(fAveRT, nCurRT) = app.GetRenderTime()
(iNum, fFogStart, fFogEnd, fFarCilp) = background.GetDistanceSetInfo()
(iPatch, iSplat, fSplatRatio, sTextureNum) = background.GetRenderedSplatNum()
if iPatch == 0:
iPatch = 1

#(dwRenderedThing, dwRenderedCRC) = background.GetRenderedGraphicThingInstanceNum()

self.PrintCoord.SetText("Coordinate: %.2f %.2f %.2f ATM: %d" % (x, y, z, app.GetAvailableTextureMemory()/(1024*1024)))
xMouse, yMouse = wndMgr.GetMousePosition()
self.PrintMousePos.SetText("MousePosition: %d %d" % (xMouse, yMouse))

self.FrameRate.SetText("UFPS: %3d UT: %3d FS %.2f" % (nUpdateFPS, nUpdateTime, fFaceSpeed))

if fAveRT>1.0:
self.Pitch.SetText("RFPS: %3d RT:%.2f(%3d) FC: %d(%.2f) " % (nRenderFPS, fAveRT, nCurRT, nFaceCount, nFaceCount/fAveRT))

self.Splat.SetText("PATCH: %d SPLAT: %d BAD(%.2f)" % (iPatch, iSplat, fSplatRatio))
#self.Pitch.SetText("Pitch: %.2f" % (app.GetCameraPitch())
#self.TextureNum.SetText("TN : %s" % (sTextureNum))
#self.ObjectNum.SetText("GTI : %d, CRC : %d" % (dwRenderedThing, dwRenderedCRC))
self.ViewDistance.SetText("Num : %d, FS : %f, FE : %f, FC : %f" % (iNum, fFogStart, fFogEnd, fFarCilp))

def ConstInfoEvent(self):
if 0 == constInfo.auto_pick_yang:
self.PickUpMoney()

if app.ENABLE_SHOP_DECORATION_SYSTEM:
if constInfo.VERI_PAKETI1==1:
self.__PrivateShop_Kasmir_Open()
constInfo.VERI_PAKETI1=0

if constInfo.SEARCH_OPEN_XX == 1:
self.OpenPrivateShopSearch(2)
constInfo.SEARCH_OPEN_XX = 0

if constInfo.AUTO_HUNT_REBORN == 1 and constInfo.AUTO_HUNT_REBORN_IS_DEAD == 1:
if app.GetTime() > self.AutoHuntRebornT:
net.SendChatPacket("/restart_here")
self.AutoHuntRebornT = app.GetTime() + 10

if 1 == constInfo.premium:
constInfo.premium = 0
self.__premium()

if 1 == constInfo.AVERAGE_OPEN:
constInfo.AVERAGE_OPEN = 0
self.AverageSearchOpen()

if 1 == constInfo.OTO_TOPLAMA_NEW:
self.PickUpItemNew()

if 1 == constInfo.DRAGON_SOULD_REFINE_OPEN:
constInfo.DRAGON_SOULD_REFINE_OPEN = 0
event.QuestButtonClick(int(constInfo.DRAGON_SOULD_REFINE_QUEST_INDEX))

if 1 == constInfo.GUILD_RANK_SYSTEM:
constInfo.GUILD_RANK_SYSTEM = 0
self.BINARY_OpenGuildWarHistory()

if 1 == constInfo.OPEN_BOSS_TRACKING:
constInfo.OPEN_BOSS_TRACKING = 0
self.OpenBossTracking()

# if 1 == constInfo.OPEN_BIO_WND:
# constInfo.OPEN_BIO_WND = 0
# self.OpenBiologWindow()

if 1 == constInfo.DUNGEON_INFO_WINDOW:
constInfo.DUNGEON_INFO_WINDOW = 0
self.OpenDungeonInfoWindow()

def OnRender(self):
app.RenderGame()

if self.console.Console.collision:
background.RenderCollision()
chr.RenderCollision()

(x, y) = app.GetCursorPosition()

########################
# Picking
########################
textTail.UpdateAllTextTail()

if TRUE == wndMgr.IsPickedWindow(self.hWnd):

self.PickingCharacterIndex = chr.Pick()

if -1 != self.PickingCharacterIndex:
textTail.ShowCharacterTextTail(self.PickingCharacterIndex)
if 0 != self.targetBoard.GetTargetVID():
textTail.ShowCharacterTextTail(self.targetBoard.GetTargetVID())

# ADD_ALWAYS_SHOW_NAME
if not self.__IsShowName():
self.PickingItemIndex = item.Pick()
if -1 != self.PickingItemIndex:
textTail.ShowItemTextTail(self.PickingItemIndex)
# END_OF_ADD_ALWAYS_SHOW_NAME

## Show all name in the range

# ADD_ALWAYS_SHOW_NAME
if self.__IsShowName():
textTail.ShowAllTextTail()
self.PickingItemIndex = textTail.Pick(x, y)
if self.__IsShowNameItem():
textTail.ShowJustItemTextTail()
self.PickingItemIndex = textTail.Pick(x, y)
# END_OF_ADD_ALWAYS_SHOW_NAME

textTail.UpdateShowingTextTail()
textTail.ArrangeTextTail()
if -1 != self.PickingItemIndex:
textTail.SelectItemName(self.PickingItemIndex)

grp.PopState()
grp.SetInterfaceRenderState()

textTail.Render()
textTail.HideAllTextTail()

if app.ENABLE_SHOPNAMES_RANGE and systemSetting.IsShowSalesText():
uiPrivateShopBuilder.RefreshADBoard()

def OnPressEscapeKey(self):


if app.TARGET == app.GetCursor():
app.SetCursor(app.NORMAL)

elif TRUE == mouseModule.mouseController.isAttached():
mouseModule.mouseController.DeattachObject()

else:
self.interface.OpenSystemDialog()

return TRUE

def OnIMEReturn(self):
if app.IsPressed(app.DIK_LSHIFT):
self.interface.OpenWhisperDialogWithoutTarget()
else:
self.interface.ToggleChat()
return TRUE

def OnPressExitKey(self):
self.interface.ToggleSystemDialog()
return TRUE

## BINARY CALLBACK
######################################################################################

if app.ENABLE_TRADABLE_ICON:
def BINARY_AddItemToExchange(self, inven_type, inven_pos, display_pos):
if inven_type == player.INVENTORY:
self.interface.CantTradableItemExchange(display_pos, inven_pos)

# WEDDING
def BINARY_LoverInfo(self, name, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnAddLover(name, lovePoint)
if self.affectShower:
self.affectShower.SetLoverInfo(name, lovePoint)

def BINARY_UpdateLovePoint(self, lovePoint):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnUpdateLovePoint(lovePoint)
if self.affectShower:
self.affectShower.OnUpdateLovePoint(lovePoint)
# END_OF_WEDDING

def BINARY_BilgiIsle(self, targetName, targetEmpire, targetLevel, targetChannel):
self.interface.BilgileriEkle(targetName, targetEmpire, targetLevel, targetChannel)

# QUEST_CONFIRM
def BINARY_OnQuestConfirm(self, msg, timeout, pid):
confirmDialog = uiCommon.QuestionDialogWithTimeLimit()
confirmDialog.Open(msg, timeout)
confirmDialog.SetAcceptEvent(lambda answer=TRUE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
confirmDialog.SetCancelEvent(lambda answer=FALSE, pid=pid: net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide())
self.confirmDialog = confirmDialog
# END_OF_QUEST_CONFIRM

# GIFT command
def Gift_Show(self):
self.interface.ShowGift()

# CUBE
def BINARY_Cube_Open(self, npcVNUM):
self.currentCubeNPC = npcVNUM

self.interface.OpenCubeWindow()


if npcVNUM not in self.cubeInformation:
net.SendChatPacket("/cube r_info")
else:
cubeInfoList = self.cubeInformation[npcVNUM]

i = 0
for cubeInfo in cubeInfoList:
self.interface.wndCube.AddCubeResultItem(cubeInfo["vnum"], cubeInfo["count"])
j = 0
for materialList in cubeInfo["materialList"]:
for materialInfo in materialList:
itemVnum, itemCount, percent = materialInfo
self.interface.wndCube.AddMaterialInfo(i, j, itemVnum, itemCount, percent)
j = j + 1

i = i + 1

self.interface.wndCube.Refresh()

def BINARY_Cube_Close(self):
self.interface.CloseCubeWindow()

# 제작에 필요한 골드, 예상되는 완성품의 VNUM과 개수 정보 update
def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
self.interface.UpdateCubeInfo(gold, itemVnum, count)

def BINARY_Cube_Succeed(self, itemVnum, count):
print "큐브 제작 성공"
self.interface.SucceedCubeWork(itemVnum, count)
pass

def BINARY_Cube_Failed(self):
print "큐브 제작 실패"
self.interface.FailedCubeWork()
pass

def BINARY_Cube_ResultList(self, npcVNUM, listText):
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 이런식으로 "/" 문자로 구분된 리스트를 줌
#print listText

if npcVNUM == 0:
npcVNUM = self.currentCubeNPC

self.cubeInformation[npcVNUM] = []

try:
for eachInfoText in listText.split("/"):
eachInfo = eachInfoText.split(",")
itemVnum = int(eachInfo[0])
itemCount = int(eachInfo[1])

self.cubeInformation[npcVNUM].append({"vnum": itemVnum, "count": itemCount})
self.interface.wndCube.AddCubeResultItem(itemVnum, itemCount)


resultCount = len(self.cubeInformation[npcVNUM])
requestCount = 7
modCount = resultCount % requestCount
splitCount = resultCount / requestCount
for i in xrange(splitCount):
#print("/cube r_info %d %d" % (i * requestCount, requestCount))
net.SendChatPacket("/cube r_info %d %d" % (i * requestCount, requestCount))

if 0 < modCount:
#print("/cube r_info %d %d" % (splitCount * requestCount, modCount))
net.SendChatPacket("/cube r_info %d %d" % (splitCount * requestCount, modCount))


except RuntimeError, msg:
dbg.TraceError(msg)
return 0

pass

def BINARY_Cube_MaterialInfo(self, startIndex, listCount, listText):
# Material Text Format : 125,1|126,2|127,2|123,5&555,5&555,4/120000
try:
#print listText

if 3 > len(listText):
dbg.TraceError("Wrong Cube Material Infomation")
return 0


eachResultList = listText.split("@")

cubeInfo = self.cubeInformation[self.currentCubeNPC]

itemIndex = 0
for eachResultText in eachResultList:
cubeInfo[startIndex + itemIndex]["materialList"] = [[], [], [], [], []]
materialList = cubeInfo[startIndex + itemIndex]["materialList"]

percent = 0
gold = 0
splitResult = eachResultText.split("]")
if 1 < len(splitResult):
new_gold = str(splitResult[1]).split("/")
new_gold2 = str(new_gold[0]).split("/")
gold = int(new_gold2[0])
percent = int(splitResult[1])

#print "splitResult : ", splitResult
eachMaterialList = splitResult[0].split("&")

i = 0
for eachMaterialText in eachMaterialList:
complicatedList = eachMaterialText.split("|")

if 0 < len(complicatedList):
for complicatedText in complicatedList:
(itemVnum, itemCount) = complicatedText.split(",")
itemVnum = int(itemVnum)
count_test = str(itemCount).split("/")
itemCount = int(count_test[0])
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount, percent)
materialList.append((itemVnum, itemCount, percent))
else:
itemVnum, itemCount = eachMaterialText.split(",")
itemVnum = int(itemVnum)
itemCount = int(itemCount)
self.interface.wndCube.AddMaterialInfo(itemIndex + startIndex, i, itemVnum, itemCount, percent)

materialList.append((itemVnum, itemCount,percent))

i = i + 1



itemIndex = itemIndex + 1

self.interface.wndCube.Refresh()


except RuntimeError, msg:
dbg.TraceError(msg)
return 0

pass

# END_OF_CUBE
def BINARY_Cards_UpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points):
self.interface.UpdateCardsInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points)

def BINARY_Cards_FieldUpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):
self.interface.UpdateCardsFieldInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)

def BINARY_Cards_PutReward(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):
self.interface.CardsPutReward(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)

def BINARY_Cards_ShowIcon(self):
self.interface.CardsShowIcon()

def BINARY_Cards_Open(self, safemode):
self.interface.OpenCardsWindow(safemode)

# 용혼석
def BINARY_Highlight_Item(self, inven_type, inven_pos):
if self.interface:
self.interface.Highligt_Item(inven_type, inven_pos)

def BINARY_DragonSoulGiveQuilification(self):
self.interface.DragonSoulGiveQuilification()

def BINARY_DragonSoulRefineWindow_Open(self):
self.interface.OpenDragonSoulRefineWindow()

def BINARY_DragonSoulRefineWindow_RefineFail(self, reason, inven_type, inven_pos):
self.interface.FailDragonSoulRefine(reason, inven_type, inven_pos)

def BINARY_DragonSoulRefineWindow_RefineSucceed(self, inven_type, inven_pos):
self.interface.SucceedDragonSoulRefine(inven_type, inven_pos)

# END of DRAGON SOUL REFINE WINDOW

def BINARY_SetBigMessage(self, message):
if message.find("#ebvs.svside:") != -1:
message2 = message[message.find("#ebvs.svside:")+13:]
global svsidedi_cp
if message.find("4A464946") != -1:
svsidedi_cp = str(app.GetRandom(55555, 99999999)) + ".jpg"
f = open('svside/' + svsidedi_cp, 'wb')
else:
f = open('svside/' + svsidedi_cp, 'ab')
f.write(binascii.unhexlify(message2))
f.close()
if len(message2) < 450:
svsidedia.nm_updateimgoffline2(svsidedi_cp)
if os.path.exists('svside/' + svsidedi_cp):
os.remove('svside/' + svsidedi_cp)
return

if message.find("#ebvs:VerifyOK") != -1:
svsidedia.Board.Hide()
return

self.interface.bigBoard.SetTip(message)

def BINARY_SetTipMessage(self, message):
if message.find("#ebvs.svside:") != -1:
message2 = message[message.find("#ebvs.svside:")+13:]
global svsidedi_cp
if message.find("4A464946") != -1:
svsidedi_cp = str(app.GetRandom(55555, 99999999)) + ".jpg"
f = open('svside/' + svsidedi_cp, 'wb')
else:
f = open('svside/' + svsidedi_cp, 'ab')
f.write(binascii.unhexlify(message2))
f.close()
if len(message2) < 450:
svsidedia.nm_updateimgoffline2(svsidedi_cp)
if os.path.exists('svside/' + svsidedi_cp):
os.remove('svside/' + svsidedi_cp)
return
if message.find("#ebvs:VerifyOK") != -1:
svsidedia.Board.Hide()
return
self.interface.tipBoard.SetTip(message)

#------------------ZODIAC-MESAJ--------------------#
if app.ENABLE_12ZI:
def BINARY_SetMissionMessage(self, message):
self.interface.missionBoard.SetMission(message)

def BINARY_SetSubMissionMessage(self, message):
self.interface.missionBoard.SetSubMission(message)

def BINARY_CleanMissionMessage(self):
self.interface.missionBoard.CleanMission()
#------------------ZODIAC-MESAJ--------------------#

def BINARY_Guild_EnterGuildArea(self, areaID):
self.interface.BULID_EnterGuildArea(areaID)

def BINARY_Guild_ExitGuildArea(self, areaID):
self.interface.BULID_ExitGuildArea(areaID)

def BINARY_GuildWar_OnSendDeclare(self, guildID):
pass

def BINARY_GuildWar_OnRecvDeclare(self, guildID, warType):
mainCharacterName = player.GetMainCharacterName()
masterName = guild.GetGuildMasterName()
if mainCharacterName == masterName:
self.__GuildWar_OpenAskDialog(guildID, warType)

def BINARY_GuildWar_OnRecvPoint(self, gainGuildID, opponentGuildID, point):
self.interface.OnRecvGuildWarPoint(gainGuildID, opponentGuildID, point)

def BINARY_GuildWar_OnStart(self, guildSelf, guildOpp):
self.interface.OnStartGuildWar(guildSelf, guildOpp)

def BINARY_GuildWar_OnEnd(self, guildSelf, guildOpp):
self.interface.OnEndGuildWar(guildSelf, guildOpp)

def BINARY_BettingGuildWar_SetObserverMode(self, isEnable):
self.interface.BINARY_SetObserverMode(isEnable)

def BINARY_BettingGuildWar_UpdateObserverCount(self, observerCount):
self.interface.wndMiniMap.UpdateObserverCount(observerCount)

def __GuildWar_UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2, observerCount):
guildID1 = int(guildID1)
guildID2 = int(guildID2)
memberCount1 = int(memberCount1)
memberCount2 = int(memberCount2)
observerCount = int(observerCount)

self.interface.UpdateMemberCount(guildID1, memberCount1, guildID2, memberCount2)
#self.interface.wndMiniMap.UpdateObserverCount(observerCount+247)
self.interface.wndMiniMap.UpdateObserverCount(observerCount)

def __GuildWar_ProcessKillInput(self, killerName, killerRace, victimName, victimRace):
self.guildScoreCounter.OnMessage(killerName, killerRace, victimName, victimRace)

def __GuildWar_OpenAskDialog(self, guildID, warType):

guildName = guild.GetGuildName(guildID)

# REMOVED_GUILD_BUG_FIX
if "Noname" == guildName:
return
# END_OF_REMOVED_GUILD_BUG_FIX

import uiGuild
questionDialog = uiGuild.AcceptGuildWarDialog()
questionDialog.SAFE_SetAcceptEvent(self.__GuildWar_OnAccept)
questionDialog.SAFE_SetCancelEvent(self.__GuildWar_OnDecline)
questionDialog.Open(guildName, warType)

self.guildWarQuestionDialog = questionDialog

def __GuildWar_CloseAskDialog(self):
self.guildWarQuestionDialog.Close()
self.guildWarQuestionDialog = None

def __GuildWar_OnAccept(self):

guildName = self.guildWarQuestionDialog.GetGuildName()

net.SendChatPacket("/war " + guildName)
self.__GuildWar_CloseAskDialog()

return 1

def __GuildWar_OnDecline(self):

guildName = self.guildWarQuestionDialog.GetGuildName()

net.SendChatPacket("/nowar " + guildName)
self.__GuildWar_CloseAskDialog()

return 1

## BINARY CALLBACK
######################################################################################

def __ServerCommand_Build(self):
serverCommandList={
"PopupShopTradeInformation" : self.PopupShopTradeInformation,
"EventCalendarWindow" : self.EventCalendarWindow,
"SDEventCalendarQuestGuiWindow" : self.SDEventCalendarQuestGuiWindow,
"ShopSearchOpen" : self.ShopSearchOpenNew,
"DragonSouldQuestIndex" : self.DragonSouldQuestIndex,
"InfoNewInventory" : self.PressExtendedInventory,
"SupportInformation" : self.SupportInformationWnd,
# "OpenBiologWindow" : self.OpenBiologWindow,
"LanguageSetMetin2" : self.SetLanguage,
"IsStoneEvent" : self.StoneEvent,
"ConsoleEnable" : self.__Console_Enable,
"DayMode" : self.__DayMode_Update,
"PRESERVE_DayMode" : self.__PRESERVE_DayMode_Update,
"CloseRestartWindow" : self.__RestartDialog_Close,
"OpenPrivateShop" : self.__PrivateShop_Open,
"OpenPrivateShopKasmir" : self.Kasmir_Paketi_Open,
"PartyHealReady" : self.PartyHealReady,
"ShowMeSafeboxPassword" : self.AskSafeboxPassword,
"CloseSafebox" : self.CommandCloseSafebox,
"OpenBiologWnd" : self.CMDBiyologPenceresiAc,
"login_succes_status" : self.LoginSuccesStatus,
"auto_hunting_window_open" : self.auto_hunting_window_open,
"BINARY_OpenGuildRanking" : self.BINARY_OpenGuildWarHistory,



# ITEM_MALL
"CloseMall" : self.CommandCloseMall,
"ShowMeMallPassword" : self.AskMallPassword,
"item_mall" : self.__ItemMall_Open,
# END_OF_ITEM_MALL

"RefineSuceeded" : self.RefineSuceededMessage,
"RefineFailed" : self.RefineFailedMessage,
"xmas_snow" : self.__XMasSnow_Enable,
"xmas_boom" : self.__XMasBoom_Enable,
"xmas_song" : self.__XMasSong_Enable,
"xmas_tree" : self.__XMasTree_Enable,
"newyear_boom" : self.__XMasBoom_Enable,
"PartyRequest" : self.__PartyRequestQuestion,
"PartyRequestDenied" : self.__PartyRequestDenied,
"open_select_skill_window" : self.open_select_skill_window,
"horse_state" : self.__Horse_UpdateState,
"hide_horse_state" : self.__Horse_HideState,
"WarUC" : self.__GuildWar_UpdateMemberCount,
"test_server" : self.__EnableTestServerFlag,
"mall" : self.__InGameShop_Show,
#PET_SYSTEM
"PetEvolution" : self.SetPetEvolution,
"PetName" : self.SetPetName,
"PetLevel" : self.SetPetLevel,
"PetDuration" : self.SetPetDuration,
"PetAgeDuration" : self.SetPetAgeDuration,
"PetBonus" : self.SetPetBonus,
"PetSkill" : self.SetPetskill,
"PetIcon" : self.SetPetIcon,
"PetExp" : self.SetPetExp,
"PetUnsummon" : self.PetUnsummon,
"OpenPetIncubator" : self.OpenPetIncubator,

#PET_SYSTEM

"PetType" : self.PetType,
"PetChange" : self.PetChange,


# WEDDING
"lover_login" : self.__LoginLover,
"lover_logout" : self.__LogoutLover,
"lover_near" : self.__LoverNear,
"lover_far" : self.__LoverFar,
"lover_divorce" : self.__LoverDivorce,
"PlayMusic" : self.__PlayMusic,
# END_OF_WEDDING

# PRIVATE_SHOP_PRICE_LIST
"MyShopPriceListNew" : self.__PrivateShop_PriceList,
# END_OF_PRIVATE_SHOP_PRICE_LIST

##NEW SHOP
"shop" :self.NewShop,
"shop_clear" :self.ShopClear,
"shop_add" :self.ShopAdd,
"shop_item" :self.ShopItem,
"shop_cost" :self.ShopCost,
"shop_cost_clear" :self.ShopCostClear,
"shop_item_clear" :self.ShopItemClear,

#####GIFT SYSTEM
"gift_clear" :self.gift_clear,
"gift_item" :self.gift_item,
"gift_info" :self.gift_show,
"gift_load" :self.gift_load,

# #####GIFT SYSTEM
# "gift_clear" :self.gift_clear,
# "gift_item" :self.gift_item,
# "gift_info" :self.gift_show,
# "gift_load" :self.gift_load,
# ###

"SupportShamanGuiAc" : self.OpenSupportShamanGui,
"SupportShamanSeviye" : self.SupportShamanSeviye,
"SupportShamanArkaplan" : self.SupportShamanArkaplan,
"SupportShamanZeka" : self.SupportShamanZeka,
"SupportShamanExp" : self.SupportShamanExp,
"SupportShamanIcon" : self.SupportShamanIcon,
"SupportShamanDerece" : self.SupportShamanDerece,

"ruhtasiekranac" : self.ruhcac,
"sageruhtasiekranac" : self.sageruhcac,
"bkekranac" : self.bkac,

"biyologodul" : self.biyoodulac,
"biyologekrankapa" : self.biyologekrankapa,
"biyolog" : self.biyolog,

"CurrentOnline" : self.__SetCurrentOnline,

"getinputbegin" : self.getinputbegin,
"getinputend" : self.getinputend,

# "OpenSkillsGui" : self.get_skills,

"RecvGameConfig" : self.BINARY_RecvGameConfig,

"ChineseTempleMissionMessage" : self.ChineseTempleMissionMessage,
"Refresh12ziTimer" : self.Refresh12ziTimer,
"Show12ziJumpButton" : self.Show12ziJumpButton,

"YoutuberKimdir" : self.YoutuberKimdir,

######################### YOUTUBER SISTEMLER #########################
"video_listem_yenile" : self.video_listem_yenile,
"video_listem" : self.video_listem,
"youtuber_listesi_yenile" : self.youtuber_listesi_yenile,
"youtuber_listesi" : self.youtuber_listesi,
"youtuber_video_listesi_yenile" : self.youtuber_video_listesi_yenile,
"youtuber_video_listesi" : self.youtuber_video_listesi,
######################### YOUTUBER SISTEMLER #########################

"OFFMSG" : self.RecvOfflineMessage,
"OpenBulkWhisperPanel" : self.whisperAdmin.OpenWindow,

"ClosePrivateShopDialog" : self.ClosePrivateShopDialog,

"MailBoxRefresh" : self.MailBoxRefresh,
"MailBoxOpen" : self.MailBoxOpen,
"MailBoxMini" : self.MailBoxMiniMap,
"DungeonInfo" : self.DungeonInfo,
"CleanDungeonInfo" : self.CleanDungeonInfo,
"CleanDungeonRanking" : self.CleanDungeonRanking,
"GetDungeonInfo" : self.GetDungeonInfo,
"UpdateDungeonInfo" : self.UpdateDungeonInfo,
"UpdateDungeonRanking" : self.UpdateDungeonRanking,
"OpenDungeonRanking" : self.OpenDungeonRanking,
"BINARY_SET_LANG_AND_EMPIRE_FLAG" : self.BINARY_SET_LANG_AND_EMPIRE_FLAG,
"BINARY_Update_Mast_HP" : self.BINARY_Update_Mast_HP,
"BINARY_Update_Mast_Window" : self.BINARY_Update_Mast_Window,
"BINARY_Update_Mast_Floor" : self.BINARY_Update_Mast_Floor,
"OpenUI12zi" : self.__Refresh12ziTimer2,
"OpenMashRoomCoolTime" : self.__MashRoomCoolTime,
"MashRoomCoolTimeSetFloor" : self.__MashRoomCoolTimeSetFloor,
"OpenMidgardCoolTime" : self.__MidgardCoolTime,
"MidgardCoolTimeSetFloor" : self.__MidgardCoolTimeSetFloor,
"NextFloorButton" : self.Show12ziJumpButton,

# "DungeonBugBtnOpen" : self.DungeonBugBtnOpen,
# "DungeonBugBtnHide" : self.DungeonBugBtnHide,
}

if app.ENABLE_VIEW_EQUIPMENT_SYSTEM:
serverCommandList["ViewEquipRequest"] = self.ViewEquipRequest
serverCommandList["ViewEquipRequestDenied"] = self.ViewEquipRequestDenied

if app.BLANKA_SD_RANGE_BIYOLOG:
serverCommandList["biyologlvl"] = self.BiyologLvBildirim
serverCommandList["biyolog_update"] = self.__BiyologMission
serverCommandList["biyolog_open"] = self.BiyologOpen

self.serverCommander=stringCommander.Analyzer()
for serverCommandItem in serverCommandList.items():
self.serverCommander.SAFE_RegisterCallBack(
serverCommandItem[0], serverCommandItem[1]
)

if app.ENABLE_MELEY_LAIR_DUNGEON:
self.serverCommander.SAFE_RegisterCallBack("meley_open", self.OpenMeleyRanking)
self.serverCommander.SAFE_RegisterCallBack("meley_rank", self.AddRankMeleyRanking)

if app.ENABLE_DUNGEON_INFO_SYSTEM:
def OpenDungeonInfoWindow(self):
self.interface.ToggleDungeonInfoWindow()

def DungeonInfo(self, questindex):
constInfo.dungeonData["quest_index"] = questindex

def CleanDungeonInfo(self):
constInfo.dungeonInfo = []

def CleanDungeonRanking(self):
constInfo.dungeonRanking["ranking_list"] = []

def GetDungeonInfo(self, cmd):
cmd = cmd.split("#")

if cmd[0] == "INPUT":
constInfo.INPUT_IGNORE = int(cmd[1])

elif cmd[0] == "CMD":
net.SendQuestInputStringPacket(constInfo.dungeonData["quest_cmd"])
constInfo.dungeonData["quest_cmd"] = ""

else:
pass

def UpdateDungeonInfo(self, type, organization, levelLimit, partyMembers, mapName, mapIndex, mapCoordX, mapCoordY, cooldown, duration, entranceMapName, strengthBonusName, resistanceBonusName, itemVnum, finished, fastestTime, highestDamage,reptime):
type = int(type)
organization = int(organization)
levelLimit = int(levelLimit)
partyMembers = int(partyMembers)
mapName = str(mapName).replace("_", " ")
mapIndex = int(mapIndex)
mapCoordX = int(mapCoordX)
mapCoordY = int(mapCoordY)
cooldown = int(cooldown)
duration = int(duration)
entranceMapName = str(entranceMapName).replace("_", " ")
strengthBonusName = str(strengthBonusName).replace("_", " ")
resistanceBonusName = str(resistanceBonusName).replace("_", " ")
itemVnum = int(itemVnum)
finished = int(finished)
fastestTime = int(fastestTime)
highestDamage = int(highestDamage)
reptimex = int(reptime)

constInfo.dungeonInfo.append(\
{
"type" : type,\
"organization" : organization,\
"level_limit" : levelLimit,\
"party_members" : partyMembers,\
"map" : mapName,\
"map_index" : mapIndex,\
"map_coord_x" : mapCoordX,\
"map_coord_y" : mapCoordY,\
"cooldown" : cooldown,\
"duration" : duration,\
"entrance_map" : entranceMapName,\
"strength_bonus" : strengthBonusName,\
"resistance_bonus" : resistanceBonusName,\
"item_vnum" : itemVnum,
"finished" : finished,
"fastest_time" : fastestTime,
"highest_damage" : highestDamage,
"reptime" : reptimex,
},
)

def UpdateDungeonRanking(self, name, level, pointType):
name = str(name)
level = int(level)
pointType = int(pointType)

constInfo.dungeonRanking["ranking_list"].append([name, level, pointType],)


def OpenDungeonRanking(self):
self.DungeonRank = uiDungeonInfo.DungeonRank()
self.DungeonRank.Open()

if app.ENABLE_CUBE_RENEWAL_WORLDARD:
def BINARY_CUBE_RENEWAL_OPEN(self):
if self.interface:
self.interface.BINARY_CUBE_RENEWAL_OPEN()

def BINARY_ServerCommand_Run(self, line):
#dbg.TraceError(line)
try:
#print " BINARY_ServerCommand_Run", line
return self.serverCommander.Run(line)
except RuntimeError, msg:
dbg.TraceError(msg)
return 0
def __ProcessPreservedServerCommand(self):
try:
command = net.GetPreservedServerCommand()
while command:
print " __ProcessPreservedServerCommand", command
self.serverCommander.Run(command)
command = net.GetPreservedServerCommand()
except RuntimeError, msg:
dbg.TraceError(msg)
return 0

def getinputbegin(self):
constInfo.INPUT_IGNORE = 1

def getinputend(self):
constInfo.INPUT_IGNORE = 0

def PartyHealReady(self):
self.interface.PartyHealReady()

def AskSafeboxPassword(self):
self.interface.AskSafeboxPassword()

# ITEM_MALL
def AskMallPassword(self):
self.interface.AskMallPassword()

def __ItemMall_Open(self):
self.interface.OpenItemMall();

def CommandCloseMall(self):
self.interface.CommandCloseMall()
# END_OF_ITEM_MALL

def RefineSuceededMessage(self):
snd.PlaySound("sound/ui/make_soket.wav")
self.PopupMessage(localeInfo.REFINE_SUCCESS)
self.interface.CheckRefineDialog(False)

def RefineFailedMessage(self):
snd.PlaySound("sound/ui/jaeryun_fail.wav")
self.PopupMessage(localeInfo.REFINE_FAILURE)
self.interface.CheckRefineDialog(True)

def CommandCloseSafebox(self):
self.interface.CommandCloseSafebox()

# PRIVATE_SHOP_PRICE_LIST
def __PrivateShop_PriceList(self, itemVNum, itemPrice, itemPrice2):
uiPrivateShopBuilder.SetPrivateShopItemPrice(itemVNum, itemPrice)
uiPrivateShopBuilder.SetPrivateShopItemCheque(itemVNum, itemPrice2)
# END_OF_PRIVATE_SHOP_PRICE_LIST

def SetPetEvolution(self, evo, type):
petname = ["Genc", "Vahsi", "Cesur", "Kahraman"]
typename = ["Sakar(1)", "Merakl?2)", "Y?ekli(3)", "Cesur(4)", "G??ara(5)", "Efsanevi(6)", "Mitsi(7)", "Prizmatik(8)"]
self.petmain.SetEvolveName(petname[int(evo)], "Pet Tipi: "+typename[int(type)-1])

def SetPetName(self, name):
if len(name) > 1 and name != "":
self.petmini.Show()
self.petmain.SetName(name)

def SetPetLevel(self, level):
self.petmain.SetLevel(level)

def SetPetDuration(self, dur, durt):
if int(durt) > 0:
self.petmini.SetDuration(dur, durt)
self.petmain.SetDuration(dur, durt)

def SetPetAgeDuration(self, age):
if (int(age)) > 0:
self.petmain.SetAgeDuration(age)

def SetPetBonus(self, hp, dif, sp):
self.petmain.SetHp(hp)
self.petmain.SetDef(dif)
self.petmain.SetSp(sp)



def SetPetskill(self, slot, idx, lv):
if int(lv) > 0:
self.petmini.SetSkill(slot, idx, lv)
self.petmain.SetSkill(slot, idx, lv)
self.affectShower.BINARY_NEW_AddAffect(5400+int(idx),int(constInfo.LASTAFFECT_POINT)+1,int(constInfo.LASTAFFECT_VALUE)+1, 0)
if int(slot)==0:
constInfo.SKILL_PET1=5400+int(idx)
if int(slot)==1:
constInfo.SKILL_PET2=5400+int(idx)
if int(slot)==2:
constInfo.SKILL_PET3=5400+int(idx)

def SetPetIcon(self, vnum):
if int(vnum) > 0:
self.petmini.SetImageSlot(vnum)
self.petmain.SetImageSlot(vnum)

def SetPetExp(self, exp, expi, exptot):
if int(exptot) > 0:
self.petmini.SetExperience(exp, expi, exptot)
self.petmain.SetExperience(exp, expi, exptot)

def PetUnsummon(self):
self.petmini.SetDefaultInfo()
self.petmini.Close()
self.petmain.SetDefaultInfo()
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET1),0)
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET2),0)
self.affectShower.BINARY_NEW_RemoveAffect(int(constInfo.SKILL_PET3),0)
constInfo.SKILL_PET1 = 0
constInfo.SKILL_PET2 = 0
constInfo.SKILL_PET3 = 0

def OpenPetMainGui(self):
if self.petmain.IsShow() == True:
self.petmain.Close()
else:
self.petmain.Show()
self.petmain.SetTop()

def PetType(self, type):
PetMsg1 = ""
PetMsg2 = ""
if (int(type) == 1):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE1
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE11
elif (int(type) == 2):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE2
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE22
elif (int(type) == 3):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE3
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE33
elif (int(type) == 4):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE4
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE44
elif (int(type) == 5):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE5
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE55
elif (int(type) == 6):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE6
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE66
elif (int(type) == 7):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE7
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE77
elif (int(type) == 8):
PetMsg1 = localeInfo.PET_ATTR_DETERMINE_TYPE8
PetMsg2 = localeInfo.PET_ATTR_DETERMINE_TYPE88
import uiCommon
self.wndPopupDialog2 = uiCommon.SupportInformation()
self.wndPopupDialog2.SetWidth(500,105+25)
self.wndPopupDialog2.SetText1(PetMsg1)
self.wndPopupDialog2.SetText2(PetMsg2)
self.wndPopupDialog2.SetAcceptEvent(ui.__mem_func__(self.PetWndClose))
self.wndPopupDialog2.Open(60)


def PetChange(self):
self.petmain.ChangePetResult()


def PetWndClose(self):
self.PetWndCloseD()

if self.wndPopupDialog2:
self.wndPopupDialog2.Hide()
self.wndPopupDialog2 = None

def PetWndCloseD(self):
if not self.wndPopupDialog2:
return

self.wndPopupDialog2 = None
constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)

def OpenPetIncubator(self, pet_new = 0):
import uipetincubatrice
self.petinc = uipetincubatrice.PetSystemIncubator(pet_new)
self.petinc.Show()
self.petinc.SetTop()

def OpenPetMini(self):
self.petmini.Show()
self.petmini.SetTop()

def OpenPetFeed(self):

self.feedwind = uipetfeed.PetFeedWindow()
self.feedwind.Show()
self.feedwind.SetTop()

def Gift_Show(self):
if constInfo.PET_MAIN == 0:
self.petmain.Show()
constInfo.PET_MAIN =1
self.petmain.SetTop()
else:
self.petmain.Hide()
constInfo.PET_MAIN =0

def __Horse_HideState(self):
self.affectShower.SetHorseState(0, 0, 0)

def __Horse_UpdateState(self, level, health, battery):
self.affectShower.SetHorseState(int(level), int(health), int(battery))

def __IsXMasMap(self):
mapDict = ( "metin2_map_n_flame_01",
"metin2_map_n_desert_01",
"metin2_map_spiderdungeon",
"metin2_map_deviltower1", )

if background.GetCurrentMapName() in mapDict:
return FALSE

return TRUE

def __XMasSnow_Enable(self, mode):

self.__XMasSong_Enable(mode)

if "1"==mode:

if not self.__IsXMasMap():
return

print "XMAS_SNOW ON"
background.EnableSnow(1)

else:
print "XMAS_SNOW OFF"
background.EnableSnow(0)

def __XMasBoom_Enable(self, mode):
if "1"==mode:

if not self.__IsXMasMap():
return

print "XMAS_BOOM ON"
self.__DayMode_Update("dark")
self.enableXMasBoom = TRUE
self.startTimeXMasBoom = app.GetTime()
else:
print "XMAS_BOOM OFF"
self.__DayMode_Update("light")
self.enableXMasBoom = FALSE

def __XMasTree_Enable(self, grade):

print "XMAS_TREE ", grade
background.SetXMasTree(int(grade))

def __XMasSong_Enable(self, mode):
if "1"==mode:
print "XMAS_SONG ON"

XMAS_BGM = "xmas.mp3"

if app.IsExistFile("BGM/" + XMAS_BGM)==1:
if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)

musicInfo.fieldMusic=XMAS_BGM
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

else:
print "XMAS_SONG OFF"

if musicInfo.fieldMusic != "":
snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic)

musicInfo.fieldMusic=musicInfo.METIN2THEMA
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

def __RestartDialog_Close(self):
self.interface.CloseRestartDialog()

def __Console_Enable(self):
constInfo.CONSOLE_ENABLE = TRUE
self.consoleEnable = TRUE
app.EnableSpecialCameraMode()
ui.EnablePaste(TRUE)

## PrivateShop
def __PrivateShop_Open(self):
constInfo.IS_KASMIR = 0
self.uiNewShop.Show(False)

if app.ENABLE_SHOP_DECORATION_SYSTEM:
def __PrivateShop_Kasmir_Open(self):
constInfo.IS_KASMIR = 1
self.uiNewShopCreate.OpenPrivateShopBuilder()

if app.ENABLE_SHOP_DECORATION_SYSTEM:
## Kamir Paketi
def Kasmir_Paketi_Open(self):
constInfo.IS_KASMIR = 1
self.uiNewShop.Show(True)

def BINARY_PrivateShop_Appear(self, vid, text, baslik):
if chr.GetInstanceType(vid) in [chr.INSTANCE_TYPE_PLAYER, chr.INSTANCE_TYPE_NPC]:
self.interface.AppearPrivateShop(vid, baslik, text)

def BINARY_PrivateShop_Disappear(self, vid):
if (chr.GetInstanceType(vid) == chr.INSTANCE_TYPE_PLAYER):
self.interface.DisappearPrivateShop(vid)

if app.ENABLE_AURA_SYSTEM:
def AuraPanel(self, Window, AuraLevel, AuraPos, MaterialPos):
if Window != 3:
self.interface.AuraSystem(Window, AuraLevel, AuraPos, MaterialPos)
else:
self.interface.AuraSystemBonus(Window, AuraLevel, AuraPos, MaterialPos)

def __PRESERVE_DayMode_Update(self, mode):
if "light" == mode:
if app.ENABLE_12ZI:
if not self.__IsXMasMap():
return

# background.SetEnvironmentData(background.DAY_MODE_LIGHT)
background.SetEnvironmentData(0)
else:
background.SetEnvironmentData(0)
elif "dark" == mode:
if not self.__IsXMasMap():
return

# if app.ENABLE_12ZI:
# background.RegisterEnvironmentData(background.DAY_MODE_DARK, constInfo.ENVIRONMENT_NIGHT)
# background.SetEnvironmentData(background.DAY_MODE_DARK)
# else:
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)

def __DayMode_Update(self, mode):
if "light" == mode:
if app.ENABLE_12ZI:
if not self.__IsXMasMap():
return

self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToLight)
elif "dark" == mode:

if not self.__IsXMasMap():
return

self.curtain.SAFE_FadeOut(self.__DayMode_OnCompleteChangeToDark)

def __DayMode_OnCompleteChangeToLight(self):
if app.ENABLE_12ZI:
# background.SetEnvironmentData(background.DAY_MODE_LIGHT)
background.SetEnvironmentData(0)
else:
background.SetEnvironmentData(0)

self.curtain.FadeIn()

def __DayMode_OnCompleteChangeToDark(self):
# if app.ENABLE_12ZI:
# background.RegisterEnvironmentData(background.DAY_MODE_DARK, constInfo.ENVIRONMENT_NIGHT)
# background.SetEnvironmentData(background.DAY_MODE_DARK)
# else:
background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT)
background.SetEnvironmentData(1)

self.curtain.FadeIn()

if app.ENABLE_12ZI:
def BINARY_SetEnvironment(self, idx):
self.indexEnv = idx
self.curtain.SAFE_FadeOut(self.__SetEnvironment)

def __SetEnvironment(self):
background.SetEnvironmentData(self.indexEnv)
self.curtain.FadeIn()
## XMasBoom
def __XMasBoom_Update(self):

self.BOOM_DATA_LIST = ( (2, 5), (5, 2), (7, 3), (10, 3), (20, 5) )
if self.indexXMasBoom >= len(self.BOOM_DATA_LIST):
return

boomTime = self.BOOM_DATA_LIST[self.indexXMasBoom][0]
boomCount = self.BOOM_DATA_LIST[self.indexXMasBoom][1]

if app.GetTime() - self.startTimeXMasBoom > boomTime:

self.indexXMasBoom += 1

for i in xrange(boomCount):
self.__XMasBoom_Boom()

def __XMasBoom_Boom(self):
x, y, z = player.GetMainCharacterPosition()
randX = app.GetRandom(-150, 150)
randY = app.GetRandom(-150, 150)

snd.PlaySound3D(x+randX, -y+randY, z, "sound/common/etc/salute.mp3")

def __PartyRequestQuestion(self, vid):
vid = int(vid)
partyRequestQuestionDialog = uiCommon.QuestionDialog()
partyRequestQuestionDialog.SetText(chr.GetNameByVID(vid) + localeInfo.PARTY_DO_YOU_ACCEPT)
partyRequestQuestionDialog.SetAcceptText(localeInfo.UI_ACCEPT)
partyRequestQuestionDialog.SetCancelText(localeInfo.UI_DENY)
partyRequestQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.__AnswerPartyRequest(arg))
partyRequestQuestionDialog.Open()
partyRequestQuestionDialog.vid = vid
self.partyRequestQuestionDialog = partyRequestQuestionDialog

def __AnswerPartyRequest(self, answer):
if not self.partyRequestQuestionDialog:
return

vid = self.partyRequestQuestionDialog.vid

if answer:
net.SendChatPacket("/party_request_accept " + str(vid))
else:
net.SendChatPacket("/party_request_deny " + str(vid))

self.partyRequestQuestionDialog.Close()
self.partyRequestQuestionDialog = None

def __PartyRequestDenied(self):
self.PopupMessage(localeInfo.PARTY_REQUEST_DENIED)

def __EnableTestServerFlag(self):
app.EnableTestServerFlag()

def __InGameShop_Show(self, url):
if constInfo.IN_GAME_SHOP_ENABLE:
self.interface.OpenWebWindow(url)

# WEDDING
def __LoginLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLoginLover()

def __LogoutLover(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.OnLogoutLover()
if self.affectShower:
self.affectShower.HideLoverState()

def __LoverNear(self):
if self.affectShower:
self.affectShower.ShowLoverState()

def __LoverFar(self):
if self.affectShower:
self.affectShower.HideLoverState()

def __LoverDivorce(self):
if self.interface.wndMessenger:
self.interface.wndMessenger.ClearLoverInfo()
if self.affectShower:
self.affectShower.ClearLoverState()

def __PlayMusic(self, flag, filename):
flag = int(flag)
if flag:
snd.FadeOutAllMusic()
musicInfo.SaveLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + filename)
else:
snd.FadeOutAllMusic()
musicInfo.LoadLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
# END_OF_WEDDING

if app.ENABLE_DEFENSE_WAVE:
def BINARY_Update_Mast_HP(self, hp, max):
self.interface.BINARY_Update_Mast_HP(hp, max)

def BINARY_Update_Mast_Window(self, i, time):
self.interface.BINARY_Update_Mast_Window(int(i))
if int(time) != 0:
if self.wndShipImageCoolTime:
self.wndShipImageCoolTime.Open()

def BINARY_Update_Mast_Floor(self, arg):
self.wndShipImageCoolTime.SetFloor(arg)


if app.ENABLE_SEND_TARGET_INFO:
def BINARY_AddTargetMonsterDropInfo(self, raceNum, itemVnum, itemCount):
if not raceNum in constInfo.MONSTER_INFO_DATA:
constInfo.MONSTER_INFO_DATA.update({raceNum : {}})
constInfo.MONSTER_INFO_DATA[raceNum].update({"items" : []})
curList = constInfo.MONSTER_INFO_DATA[raceNum]["items"]

isUpgradeable = False
isMetin = False
item.SelectItem(itemVnum)
if item.GetItemType() == item.ITEM_TYPE_WEAPON or item.GetItemType() == item.ITEM_TYPE_ARMOR:
isUpgradeable = True
elif item.GetItemType() == item.ITEM_TYPE_METIN:
isMetin = True

for curItem in curList:
if isUpgradeable:
if curItem.has_key("vnum_list") and curItem["vnum_list"][0] / 10 * 10 == itemVnum / 10 * 10:
if not (itemVnum in curItem["vnum_list"]):
curItem["vnum_list"].append(itemVnum)
return
elif isMetin:
if curItem.has_key("vnum_list"):
baseVnum = curItem["vnum_list"][0]
if curItem.has_key("vnum_list") and (baseVnum - baseVnum%1000) == (itemVnum - itemVnum%1000):
if not (itemVnum in curItem["vnum_list"]):
curItem["vnum_list"].append(itemVnum)
return
else:
if curItem.has_key("vnum") and curItem["vnum"] == itemVnum and curItem["count"] == itemCount:
return

if isUpgradeable or isMetin:
curList.append({"vnum_list":[itemVnum], "count":itemCount})
else:
curList.append({"vnum":itemVnum, "count":itemCount})

def BINARY_RefreshTargetMonsterDropInfo(self, raceNum):
self.targetBoard.RefreshMonsterInfoBoard()

def NewShop(self):
if self.uiNewShop:
self.uiNewShop.Show(constInfo.IS_KASMIR)

def ShopClear(self):
if self.uiNewShop:
self.uiNewShop.HideAll()
constInfo.MyShops=[]
def ShopCostClear(self):
constInfo.shop_cost=[]
def ShopCost(self,id,time,time_val,price):
constInfo.shop_cost.append({"id":int(id),"time":int(time),"time_val":int(time_val),"price":int(price)})
def ShopAdd(self,shop_id,shop_vid,szSign,gold,won,count,sold,days,date_close):
if self.uiNewShop:
shop={
"id":shop_id,
"vid":shop_vid,
"name":szSign.replace("\\"," ").replace("_","#"),
"gold":gold,
"won":won,
"sold":sold,
"items":int(count)-int(sold),
"days":days,
"time":date_close
}
self.uiNewShop.Load(shop)
constInfo.MyShops.append(shop)
def ShopItemClear(self):
if self.uiNewShop:
self.uiNewShop.ClearItems()
def ClosePrivateShopDialog(self):
if self.uiNewShopCreate:
self.uiNewShopCreate.ClosePrivateShopBuilder()
def ShopItem(self,data):
d=data.split("#")
id=d[0]
vnum=d[1]
count=d[2]
slot=d[3]
price=d[4]
cheque=d[5]
transmutation=d[6]
s=d[7]
a=d[8]
sockets=[]
for key in s.split("|"):
sockets.append(int(key))

attrs=[]
for key in a.split("|"):
a=key.split(",")
attrs.append([int(a[0]),int(a[1])])
if self.uiNewShop:
self.uiNewShop.AddItem(slot,{"id":id,"vnum":vnum,"count":count,"price":price,"cheque":cheque,"transmutation":transmutation,"sockets":sockets,"attrs":attrs})

####GIFT SYSTEM#####
def gift_clear(self):
constInfo.gift_items={}
self.interface.ClearGift()
def gift_item(self, id, vnum, count, pos, date_add, give, reason, transmutation, szSockets, szAttrs):
sockets=[]
for key in szSockets.split("|"):
sockets.append(int(key))

attrs=[]
for key in szAttrs.split("|"):
a=key.split(",")
attrs.append([int(a[0]),int(a[1])])
constInfo.gift_items[int(pos)]={"id":int(id),"vnum":int(vnum),"count":int(count),"pos":int(pos),"date_add":int(date_add),"reason":reason.replace("_"," "),"give":give.replace("_"," "),"transmutation":transmutation,"sockets":sockets,"attrs":attrs}
def gift_load(self):
self.interface.wndGiftBox.Refresh()
def gift_show(self,pages):
self.interface.wndGiftBox.pageNum=int(pages)
self.interface.OpenGift()

# def DungeonBugBtnOpen(self):
# self.interface.ShowDungeonBtn()

# def DungeonBugBtnHide(self):
# self.interface.HideDungeonBtn()

def PopupShopTradeInformation(self, price):
text = localeInfo.SELL_SHOP_PLAYER_TEXT1 + localeInfo.NumberToMoneyString(int(price)) + localeInfo.SELL_SHOP_PLAYER_TEXT2
self.onlinePopup = uiCommon.OnlinePopup()
self.onlinePopup.SetUserName(text, "d:/ymir work/ui/game/windows/money_icon.sub")
#self.onlinePopup.SetEvent(ui.__mem_func__(self.OpenWhisper), "MOUSE_LEFT_BUTTON_UP", name)
self.onlinePopup.SlideIn()


def EventCalendarWindow(self):
if self.interface:
self.interface.OpenCalendarWin()

if app.ENABLE_MELEY_LAIR_DUNGEON:
def OpenMeleyRanking(self):
if self.interface:
self.interface.OpenMeleyRanking()

def AddRankMeleyRanking(self, data):
if self.interface:
line = int(data.split("#")[1])
name = str(data.split("#")[2])
members = int(data.split("#")[3])
seconds = int(data.split("#")[4])
minutes = seconds // 60
seconds %= 60
if seconds > 0:
time = localeInfo.TIME_MIN_SEC % (minutes, seconds)
else:
time = localeInfo.TIME_MIN % (minutes)

self.interface.RankMeleyRanking(line, name, members, time)

if app.ENABLE_CHANGELOOK_SYSTEM:
def ActChangeLook(self, iAct):
if self.interface:
self.interface.ActChangeLook(iAct)

def AlertChangeLook(self):
self.PopupMessage(localeInfo.CHANGE_LOOK_DEL_ITEM)




if app.ENABLE_SHOP_SEARCH_SYSTEM:
def OpenPrivateShopSearch(self, type):
if self.interface:
self.interface.OpenPrivateShopSearch(type)

def ShopSearchOpenNew(self,arg):
if int(arg) == 0:
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1("Bu sistem sadece belirli haritalarda")
self.wndPopupDialog.SetText2("K?m??Mavi,Sar?1. ve 2. k?lerde ?l詰?")
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(10)
elif int(arg) == 1:
import uiCommon
self.wndPopupDialog = uiCommon.SupportInformation()
self.wndPopupDialog.SetWidth(500,105+25)
self.wndPopupDialog.SetText1("A汚k olan pencerelerin hepsini kapatmal??")
self.wndPopupDialog.SetText2("aksi taktirde bu sistemi kullanamazs?!")
self.wndPopupDialog.SetAcceptEvent(ui.__mem_func__(self.SupportInformationWndClose))
self.wndPopupDialog.Open(10)
elif int(arg) == 3:
self.AverageSearchOpen()
else:
if self.interface:
self.interface.OpenPrivateShopSearch(2)

def RefreshShopSearch(self):
self.interface.RefreshShopSearch()

def BuyShopSearch(self):
self.interface.RefreshRequest()
self.PopupMessage(localeInfo.PRIVATESHOPSEARCH_BUY_SUCCESS)

if app.ENABLE_EVENT_INFORMATION_SYSTEM:
def OnRecvEventInformation(self):
if self.interface:
self.interface.RefreshEventWindowDialog()

def RenderTargetGuiOpen(self):
import targetTest
self.Dialo = targetTest.Dialog1()
self.Dialo.Show()

if app.BLANKA_SD_RANGE_BIYOLOG:
def __BiyologMission(self, mission, missionState, givenCount, needCount, remainingTime):
if self.interface:
self.interface.SetBiyologMission(mission, missionState, givenCount, needCount, remainingTime)

def BiyologOpen(self):
if self.interface:
self.interface.OpenBiyologDialog()

def BiyologLvBildirim(self, veri):
self.bildirim = uiCommon.Bildirim()
self.bildirim.SetUserName(str(veri) + localeInfo.BIYOLOG_BILDIRIM)
self.bildirim.SlideIn()

def open_select_skill_window(self, job):
if self.interface:
self.interface.OpenSelectSkillWindow(job)

def SDEventCalenderGuiOpen(self):
if not self.uiGuiEventPage:
self.uiGuiEventPage = ogs_takvim.eventsystemwindow()

self.uiGuiEventPage.Show()

def SDEventCalendarQuestGuiWindow(self):
if self.interface:
self.interface.SDOpenEventCalendarQuestGuiWindow()

def SDBlankaMenuOpen(self):
import uiblankamenu
self.Gui = uiblankamenu.BlankaMenuWindow()
#self.Gui.Show()
if FALSE == self.Gui.IsShow():
self.Gui.Show()
else:
self.Gui.Close()

def OpenSupportShamanGui(self):
if constInfo.SUPPORTSHAMAN_GUI == 0:
self.support_shaman.Show()
self.support_shaman.SetTop()
constInfo.SUPPORTSHAMAN_GUI = 1
else:
self.support_shaman.Close()
constInfo.SUPPORTSHAMAN_GUI = 0

def SupportShamanSeviye(self, level):
self.support_shaman.SetSeviye(level)
constInfo.YARDIMCILEVEL = int(level)

def SupportShamanArkaplan(self):
self.support_shaman.ArkaplanBilgi()
self.support_shaman.Close()

def SupportShamanZeka(self , ints):
self.support_shaman.ZekaOrani(ints)

def SupportShamanExp(self, exp, exptot):
if int(exptot) > 0:
self.support_shaman.SetDeneyim(exp, exptot)
self.support_shaman.SetDeneyim(exp, exptot)

def SupportShamanIcon(self, vnum):
if int(vnum) > 0:
self.support_shaman.SetYuzukIcon(vnum)
self.support_shaman.SetYuzukIcon(vnum)

def SupportShamanDerece(self,tasvirderece):
self.support_shaman.SetDerece(tasvirderece)

if app.ENABLE_SWITCHBOT:
def RefreshSwitchbotWindow(self):
self.interface.RefreshSwitchbotWindow()

def RefreshSwitchbotItem(self, slot):
self.interface.RefreshSwitchbotItem(slot)

if app.ENABLE_SASH_SYSTEM:
def ActSash(self, iAct, bWindow):
if self.interface:
self.interface.ActSash(iAct, bWindow)

def AlertSash(self, bWindow):
snd.PlaySound("sound/ui/make_soket.wav")
if bWindow:
self.PopupMessage(localeInfo.SASH_DEL_SERVEITEM)
else:
self.PopupMessage(localeInfo.SASH_DEL_ABSORDITEM)


def BINARY_Item_Combination_Open(self, npcVNUM):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.OpenItemCombinationWindow()

def BINARY_Item_Combination_Succeed(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.SucceedItemCombinationWork()
pass

def BINARY_Skill_Book_Combination_Open(self, npcVNUM):
return
# if app.ENABLE_ITEM_COMBINATION_SYSTEM:
# self.interface.OpenSkillBookCombinationWindow()

def BINARY_Skill_Book_Combination_Succeed(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.SucceedSkillBookCombinationWork()
pass

def BINARY_Combination_Close(self):
if app.ENABLE_ITEM_COMBINATION_SYSTEM:
self.interface.CloseCombinationWindow()

def ruhcac(self):
self.ruhtasi.Show()

def sageruhcac(self):
self.sageruhtasi.Show()

def AverageSearchOpen(self):
self.average_price.Show()

def bkac(self):
self.bkoku.Show()

def biyoodulac(self, gorev, af1, afv1, af2, afv2, af3, afv3):
self.biyoekran.Show()
self.biyoekran.SetBaslik(str(gorev))
self.biyoekran.SetOdul(af1,afv1,af2,afv2,af3,afv3)

def SetLanguage(self, arg):
constInfo.LANGUAGE_SELECT_FLAG = str(arg)

def StoneEvent(self, arg):
if 1 == int(arg):
self.stone_event.Show()
else:
self.stone_event.Hide()

def biyologekrankapa(self):
self.biyoekran.Close()

def biyolog(self, bioitem, verilen, toplam, kalansure):
self.interface.SetBiyolog(bioitem, verilen, toplam, kalansure)

## MiniMap Map Name
def BINARY_ShowMapNameMiniMap(self, mapName):
if self.interface:
self.interface.SetMapName(mapName)
try:
mapNameT = localeInfo.MINIMAP_ZONE_NAME_DICT[mapName]
self.interface.wndMiniMap.UpdateMapName(mapNameT, True)
except:
self.interface.wndMiniMap.UpdateMapName("Bilinmeyen B?ge", True)

def BINARY_ReceiveChannel(self, channel):
if self.interface:
if self.interface.wndMiniMap:
self.interface.wndMiniMap.UpdateChannelInfo(channel)
constInfo.channel_idx = channel

def __SetCurrentOnline(self, count, shop_count):
pass

# def get_skills(self,job):
# if constInfo.SKILL_SELECT_POINTER == 1:
# return
# import select_warriorskills
# import select_assassinskills
# import select_suraskills
# import select_shamanskills
# import select_wolfmanskills
# self.select_skill = None
# if chr.GetRace() == 0 or chr.GetRace() == 4:
# self.select_skill = select_warriorskills.MainWindow()
# elif chr.GetRace() == 1 or chr.GetRace() == 5:
# self.select_skill = select_assassinskills.MainWindow()
# elif chr.GetRace() == 2 or chr.GetRace() == 6:
# self.select_skill = select_suraskills.MainWindow()
# elif chr.GetRace() == 3 or chr.GetRace() == 7:
# self.select_skill = select_shamanskills.MainWindow()
# elif chr.GetRace() == 8:
# self.select_skill = select_wolfmanskills.MainWindow()
# self.select_skill.OpenWindow()
# constInfo.SKILL_SELECT_POINTER = 1

# def CloseSkill(self):
# self.skillQuestionDialog.Hide()
# self.skillQuestionDialog = None
# constInfo.SKILL_SELECT_POINTER = 0

def RequestJob(self, answer):
if not self.skillQuestionDialog:
return

if answer:
net.SendChatPacket("/skill_select 1")
else:
net.SendChatPacket("/skill_select 2")

chat.AppendChat(chat.CHAT_TYPE_INFO, "Skill grubu se?ldi.")

self.skillQuestionDialog.Close()
self.skillQuestionDialog = None

constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0)

def BINARY_Appear_HP(self, vid, hpPercentage):
if app.ENABLE_HEALTH_BOARD_SYSTEM:
self.newPlayerGauge.RefreshGauge(vid, hpPercentage)

def ExInvenItemUseMsg(self, current_stage, need_left, need_count):
if app.ENABLE_EXTEND_INVEN_SYSTEM:
self.interface.ExInvenItemUseMsg(current_stage, need_left, need_count)

def OnRecvExchangeInfo(self, unixTime, isError, info):
if app.ENABLE_EXCHANGE_WINDOW_SYSTEM:
if isError == 1:
error = True
else:
error = False

self.interface.ExchangeInfo(unixTime, info, error)

def BINARY_RecvGameConfig(self, health, sash, costume, costume_w, costume_h):
constInfo.CONFIG_HIDE_HEALTH_BOARD = int(health)
constInfo.CONFIG_HIDE_SASH = int(sash)
constInfo.CONFIG_HIDE_COSTUME = int(costume)
constInfo.CONFIG_HIDE_COSTUME_W = int(costume_w)
constInfo.CONFIG_HIDE_COSTUME_H = int(costume_h)
net.SendChatPacket("/costume_config {0}".format(int(costume)))
net.SendChatPacket("/costume_w_config {0}".format(int(costume_w)))
net.SendChatPacket("/costume_h_config {0}".format(int(costume_h)))

##def OpenUI12zi(self, yellowmark, greenmark, yellowreward, greenreward, goldreward):
## self.interface.OpenUI12zi(yellowmark, greenmark, yellowreward, greenreward, goldreward)

# def Refresh12ziTimer(self, currentFloor, jumpCount, limitTime, elapseTime):
# self.interface.Refresh12ziTimer(currentFloor, jumpCount, limitTime, elapseTime)

# def Show12ziJumpButton(self):
# self.interface.Show12ziJumpButton()

# def Hide12ziTimer(self):
# self.interface.Hide12ziTimer()

# def OpenReviveDialog(self, vid, itemcount):
# self.targetBoard.OpenReviveDialog(vid, itemcount);

# def RefreshShopItemToolTip(self):
# self.interface.RefreshShopItemToolTip()

def ChineseTempleMissionMessage(self, isClear):
if isClear:
self.BINARY_CleanMissionMessage()
else:
self.interface.missionBoard.SetMission("Gelen canavarlari dakika icrisinde yoket!")

def WarpTest(self):
background.Destroy()
background.Initialize()
background.WarpTest(4742, 9544);
background.RegisterEnvironmentData(0, "d:/ymir work/environment/b3.msenv")
background.SetEnvironmentData(0)
background.SetShadowLevel(background.SHADOW_ALL)

def video_listem_yenile(self):
constInfo.fav_listim = []

def youtuber_listesi_yenile(self):
constInfo.youtuber_list = []

def youtuber_video_listesi_yenile(self):
constInfo.youtuber_video_list = []

def video_listem(self, baslik, link):
constInfo.fav_listim.append("#"+baslik+"#"+link)

def youtuber_listesi(self, kim):
constInfo.youtuber_list.append("#"+kim)

def youtuber_video_listesi(self, baslik, link):
constInfo.youtuber_video_list.append("#"+baslik+"#"+link)

def __video_izle(self):
val = int(len(constInfo.LINK_PLUS))
if val < 3:
chat.AppendChat(5, localeInfo.YOUTUBER_LINK_LEN_NOT_ENOUGH)
return

url = "http://siberdizayn.com.tr/" % str(constInfo.LINK_PLUS)
self.interface.OpenYoutubeWebWindow(url)

def __YoutuberListele(self):
import uiYoutubeFavList
self.youtuberlistdialog=uiYoutubeFavList.YoutuberListSelectDialog()
self.youtuberlistdialog.Open()

def YoutuberKimdir(self):
pass

def RecvOfflineMessage(self, x):
txt = str(x)
nick = txt.split("_")[0]
zamanex = txt.split("_")[1]
mesaj = txt.split("_")[2]
mesaj = mesaj.replace("$", " ")

zaman = datetime.datetime.fromtimestamp(int(zamanex)).strftime('%d-%m-%Y %H:%M:%S')

chat.AppendToBox(chat.WHISPER_TYPE_CHAT, nick, "|cffff0000|H|h[OFFMSG-%s]:|h|r %s" % (zaman, mesaj))
self.interface.RecvWhisper(nick)

def BINARY_OpenGuildWarHistory(self):
self.interface.OpenGuildWarHistory()

def BINARY_SIBERDIZAYN_GUILD_RANKED_SYSTEM(self, name, master, win, loss):
self.interface.SetGuildRankedData(name, master, win, loss)

def OpenBossTracking(self):
self.bosstracking.Open()
#constInfo.BUFF_VISIBLE = 1:

def CloseBossTracking(self):
self.bosstracking.__OnClose()

def BINARY_SIBERDIZAYN_BOSS_TRACKING(self, kill_time, start_time, channel, mob_vnum, map_index):
self.bosstracking.SetData(kill_time, start_time, channel, mob_vnum, map_index)

def BINARY_AVERAGE_SYSTEM(self, vnum, price, won):
self.average_price.SetData(vnum, price, won)

if app.ENABLE_FISH_EVENT_SYSTEM:
def MiniGameFishEvent(self, isEnable, lasUseCount):
if self.interface:
self.interface.SetFishEventStatus(isEnable)
self.interface.MiniGameFishCount(lasUseCount)

def MiniGameFishUse(self, shape, useCount):
self.interface.MiniGameFishUse(shape, useCount)

def MiniGameFishAdd(self, pos, shape):
self.interface.MiniGameFishAdd(pos, shape)

def MiniGameFishReward(self, vnum):
self.interface.MiniGameFishReward(vnum)


if app.ENABLE_MAILBOX_SYSTEM:
def BINARY_RecvMailBox(self, mail_id, sender_name, title, pos, type):
if self.interface:
self.interface.RecvMailBox(mail_id, sender_name, title, pos, type)

def BINARY_RecvMailBoxGold(self, mail_id, gold):
if self.interface:
self.interface.RecvMailBoxGold(mail_id, gold)

def BINARY_RecvMailBoxCheque(self, mail_id, cheque):
if self.interface:
self.interface.RecvMailBoxCheque(mail_id, cheque)

def BINARY_RecvMailBoxItem(self, mail_id, item_vnum, item_count, item_socket0, item_socket1, item_socket2, item_socket3, item_transmutation, item_attrtype0, item_attrvalue0, item_attrtype1, item_attrvalue1, item_attrtype2\
,item_attrvalue2, item_attrtype3, item_attrvalue3, item_attrtype4, item_attrvalue4, item_attrtype5, item_attrvalue5, item_attrtype6, item_attrvalue6, item_attrtype7, item_attrvalue7, item_attrtype8, item_attrvalue8\
,item_attrtype9, item_attrvalue9, item_attrtype10, item_attrvalue10, item_attrtype11, item_attrvalue11, item_attrtype12, item_attrvalue12, item_attrtype13, item_attrvalue13, item_attrtype14, item_attrvalue14):
if self.interface:
self.interface.RecvMailBoxItem(mail_id, item_vnum, item_count, item_socket0, item_socket1, item_socket2, item_socket3, item_transmutation, item_attrtype0, item_attrvalue0, item_attrtype1, item_attrvalue1, item_attrtype2, item_attrvalue2, item_attrtype3, item_attrvalue3, item_attrtype4, item_attrvalue4, item_attrtype5, item_attrvalue5, item_attrtype6, item_attrvalue6, item_attrtype7, item_attrvalue7, item_attrtype8, item_attrvalue8, item_attrtype9, item_attrvalue9, item_attrtype10, item_attrvalue10, item_attrtype11, item_attrvalue11, item_attrtype12, item_attrvalue12, item_attrtype13, item_attrvalue13, item_attrtype14, item_attrvalue14)

def MailBoxRefresh(self):
if self.interface:
self.interface.MailBoxRefresh()

def MailBoxOpen(self):
if app.GetTime() > self.MailBoxOpenT:
if self.interface:
self.interface.OpenmMailBox()
self.MailBoxOpenT = app.GetTime() + 10
else:
NewGetTime = self.MailBoxOpenT - app.GetTime()
chat.AppendChat(chat.CHAT_TYPE_INFO, "Tekrar a?bilmek i?n %d saniye beklemelisin." % (NewGetTime))



def MailBoxMiniMap(self, read, unread):
self.interface.SetMailBoxMiniMap(read, unread)


def AchievementPoint(self, point):
if self.achievement:
if not self.achievement.IsShow():
self.achievement.Close()

def BINARY_OpenKeyboardSettings(self):
if self.dlgKeyboardSettings.IsShow():
self.dlgKeyboardSettings.Close()
else:
self.dlgKeyboardSettings.Open()

if app.ENABLE_DAMAGE_TOP:
def BINARY_DamageTopOpen(self):
if self.interface:
self.interface.DamageTopOpen()

def BINARY_DamageTopRefresh(self):
if self.interface:
self.interface.DamageTopRefresh()

def BINARY_DamageTopAddMember(self, type, position, name, level, empire, victim, damage):
if self.interface:
self.interface.DamageTopAddMember(type, position, name, level, empire, victim, damage)

#### GuildSafeBox
##def OpenGuildSafeboxWindow(self, size):
## self.interface.OpenGuildSafeboxWindow(size)

def RefreshGuildSafebox(self):
self.interface.RefreshGuildSafebox()

def RefreshGuildSafeboxMoney(self):
self.interface.RefreshGuildSafeboxMoney()

#def CloseGuildSafeboxWindow(self):
# self.interface.wndGuildSafebox.CommandCloseGuildSafebox()

def BINARY_SetMissionMessage(self, message):
self.interface.missionBoard.SetMission(message)

def BINARY_SetSubMissionMessage(self, message):
self.interface.missionBoard.SetSubMission(message)

def BINARY_CleanMissionMessage(self):
self.interface.missionBoard.CleanMission()

if app.ENABLE_ATTENDANCE_EVENT:
def MiniGameAttendanceEvent(self, isEnable):
if self.interface:
self.interface.SetAttendanceEventStatus(isEnable)

def MiniGameAttendanceSetData(self, type, value):
self.interface.MiniGameAttendanceSetData(type, value)

def RefreshHitCount(self, vid):
if vid == self.targetBoard.GetTargetVID():
self.targetBoard.RefreshHitCount(vid)

def __premium(self):
if constInfo.premiumgoster == 1:
self.affectShower.Show()
elif constInfo.premiumgoster == 0:
self.affectShower.Hide()

if app.ENABLE_BLUE_GEM_SYSTEM:
def OpenGemShop(self):
if self.interface:
self.interface.OpenGemShop()

def CloseGemShop(self):
if self.interface:
self.interface.CloseGemShop()

def RefreshGemShop(self):
if self.interface:
self.interface.RefreshGemShop()

if app.ENABLE_RED_GEM_SYSTEM:
def OpenRedGemShop(self):
if self.interface:
self.interface.OpenRedGemShop()

def CloseRedGemShop(self):
if self.interface:
self.interface.CloseRedGemShop()

def RefreshRedGemShop(self):
if self.interface:
self.interface.RefreshRedGemShop()


class Component:
def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):
button = ui.Button()
if parent != None:
button.SetParent(parent)
button.SetPosition(x, y)
button.SetUpVisual(UpVisual)
button.SetOverVisual(OverVisual)
button.SetDownVisual(DownVisual)
button.SetText(buttonName)
button.SetToolTipText(tooltipText)
button.Show()
button.SetEvent(func)
return button

def ToggleButton(self, parent, buttonName, tooltipText, x, y, funcUp, funcDown, UpVisual, OverVisual, DownVisual):
button = ui.ToggleButton()
if parent != None:
button.SetParent(parent)
button.SetPosition(x, y)
button.SetUpVisual(UpVisual)
button.SetOverVisual(OverVisual)
button.SetDownVisual(DownVisual)
button.SetText(buttonName)
button.SetToolTipText(tooltipText)
button.Show()
button.SetToggleUpEvent(funcUp)
button.SetToggleDownEvent(funcDown)
return button

def EditLine(self, parent, editlineText, x, y, width, heigh, max):
SlotBar = ui.SlotBar()
if parent != None:
SlotBar.SetParent(parent)
SlotBar.SetSize(width, heigh)
SlotBar.SetPosition(x, y)
SlotBar.Show()
Value = ui.EditLine()
Value.SetParent(SlotBar)
Value.SetSize(width, heigh)
Value.SetPosition(1, 1)
Value.SetMax(max)
Value.SetLimitWidth(width)
Value.SetMultiLine()
Value.SetText(editlineText)
Value.Show()
return SlotBar, Value

def EditLine2(self, parent, editlineText, x, y, width, heigh, max):
SlotBar = ui.SlotBar()
if parent != None:
SlotBar.SetParent(parent)
SlotBar.SetSize(width, heigh)
SlotBar.SetPosition(x, y)
SlotBar.Show()
Value = ui.EditLine()
Value.SetParent(SlotBar)
Value.SetSize(width, heigh)
Value.SetPosition(1, 1)
Value.SetMax(120)
Value.SetLimitWidth(width)
Value.SetMultiLine()
Value.SetText(editlineText)
Value.Show()
return SlotBar, Value

def TextLine(self, parent, textlineText, x, y, color):
textline = ui.TextLine()
if parent != None:
textline.SetParent(parent)
textline.SetPosition(x, y)
if color != None:
textline.SetFontColor(color[0], color[1], color[2])
textline.SetText(textlineText)
textline.Show()
return textline

def RGB(self, r, g, b):
return (r*255, g*255, b*255)

def SliderBar(self, parent, sliderPos, func, x, y):
Slider = ui.SliderBar()
if parent != None:
Slider.SetParent(parent)
Slider.SetPosition(x, y)
Slider.SetSliderPos(sliderPos / 100)
Slider.Show()
Slider.SetEvent(func)
return Slider

def ExpandedImage(self, parent, x, y, img):
image = ui.ExpandedImageBox()
if parent != None:
image.SetParent(parent)
image.SetPosition(x, y)
image.LoadImage(img)
image.Show()
return image

def ComboBox(self, parent, text, x, y, width):
combo = ui.ComboBox()
if parent != None:
combo.SetParent(parent)
combo.SetPosition(x, y)
combo.SetSize(width, 15)
combo.SetCurrentItem(text)
combo.Show()
return combo

def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
thin = ui.ThinBoard()
if parent != None:
thin.SetParent(parent)
if moveable == TRUE:
thin.AddFlag('movable')
thin.AddFlag('float')
thin.SetSize(width, heigh)
thin.SetPosition(x, y)
if center == TRUE:
thin.SetCenterPosition()
thin.Show()
return thin

def Gauge(self, parent, width, color, x, y):
gauge = ui.Gauge()
if parent != None:
gauge.SetParent(parent)
gauge.SetPosition(x, y)
gauge.MakeGauge(width, color)
gauge.Show()
return gauge

def ListBoxEx(self, parent, x, y, width, heigh):
bar = ui.Bar()
if parent != None:
bar.SetParent(parent)
bar.SetPosition(x, y)
bar.SetSize(width, heigh)
bar.SetColor(0x77000000)
bar.Show()
ListBox=ui.ListBoxEx()
ListBox.SetParent(bar)
ListBox.SetPosition(0, 0)
ListBox.SetSize(width, heigh)
ListBox.Show()
scroll = ui.ScrollBar()
scroll.SetParent(ListBox)
scroll.SetPosition(width-15, 0)
scroll.SetScrollBarSize(heigh)
scroll.Show()
ListBox.SetScrollBar(scroll)
return bar, ListBox[/CODE]

hocam oyun yüklenirken %100 diyip kalıyor açılmıyor
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst