add: Owsap quest renewal and GetTextLength + GetTextWindow.
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1004 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,7 @@
|
|||
title subImage
|
||||
version 1.0
|
||||
image "form_lang_01.dds"
|
||||
left 0
|
||||
top 32
|
||||
right 210
|
||||
bottom 48
|
|
@ -0,0 +1,7 @@
|
|||
title subImage
|
||||
version 1.0
|
||||
image "form_lang_01.dds"
|
||||
left 0
|
||||
top 16
|
||||
right 210
|
||||
bottom 32
|
|
@ -0,0 +1,7 @@
|
|||
title subImage
|
||||
version 1.0
|
||||
image "form_lang_01.dds"
|
||||
left 0
|
||||
top 68
|
||||
right 210
|
||||
bottom 84
|
|
@ -0,0 +1,7 @@
|
|||
title subImage
|
||||
version 1.0
|
||||
image "form_lang_01.dds"
|
||||
left 0
|
||||
top 50
|
||||
right 210
|
||||
bottom 66
|
|
@ -0,0 +1,7 @@
|
|||
title subImage
|
||||
version 1.0
|
||||
image "form_lang_01.dds"
|
||||
left 0
|
||||
top 0
|
||||
right 210
|
||||
bottom 16
|
After Width: | Height: | Size: 772 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 240 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 772 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 344 B |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.0 KiB |
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Poslat
|
||||
YES Ano
|
||||
ZONE_MAP Velká mapa
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -324,3 +324,11 @@ WHISPER_REPORT report
|
|||
WHISPER_SEND Senden
|
||||
YES Ja
|
||||
ZONE_MAP Übersichtskarte
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Send
|
||||
YES Ja
|
||||
ZONE_MAP Stort kort
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -324,3 +324,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Send
|
||||
YES Yes
|
||||
ZONE_MAP Large Map
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Enviar
|
||||
YES Sí
|
||||
ZONE_MAP Mapa grande
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -810,3 +810,11 @@ UPLOAD_MARK_CHECK_NEED_RECONNECT Le t
|
|||
UPLOAD_MARK_UPLOAD_NEED_RECONNECT Le téléchargement doit être recommencer.
|
||||
USE_ITEM_FAILURE_PRIVATE_SHOP Vous ne pouvez pas utiliser d'objet tant que votre magasin privé est ouvert.
|
||||
USE_SKILL_ERROR_UNKNOWN Erreur compétence inconnue: %s
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Αποστολή
|
||||
YES Ναι
|
||||
ZONE_MAP Μεγάλος Χάρτης
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -324,3 +324,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Küld
|
||||
YES Igen
|
||||
ZONE_MAP Nagy térkép
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Invia
|
||||
YES Sì.
|
||||
ZONE_MAP Mappa grande
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT Report
|
|||
WHISPER_SEND Stuur
|
||||
YES Ja
|
||||
ZONE_MAP Grote Map
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Wyœlij
|
||||
YES Tak
|
||||
ZONE_MAP Podgl¹d Mapy
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Enviar
|
||||
YES Sim
|
||||
ZONE_MAP Mapa Grande
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Trimite
|
||||
YES Da
|
||||
ZONE_MAP Hartã mare
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Îòïðàâèòü
|
||||
YES äà
|
||||
ZONE_MAP Áîëüøàÿ êàðòà
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -343,3 +343,11 @@ WHISPER_REPORT
|
|||
WHISPER_SEND Gönder
|
||||
YES Evet
|
||||
ZONE_MAP Genel Görünüm Haritasý
|
||||
QUEST_UI_TEXT_COLLECTION Biologist Quests
|
||||
QUEST_UI_TEXT_DAILY Daily Quest
|
||||
QUEST_UI_TEXT_EVENT Event Missions
|
||||
QUEST_UI_TEXT_LEVELUP Hunting Mission
|
||||
QUEST_UI_TEXT_MAIN Main Quests
|
||||
QUEST_UI_TEXT_SCROLL Mission Book Quests
|
||||
QUEST_UI_TEXT_SUB Side Quests
|
||||
QUEST_UI_TEXT_SYSTEM Game Missions
|
||||
|
|
|
@ -117,7 +117,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
self.playerGauge = uiPlayerGauge.PlayerGauge(self)
|
||||
self.playerGauge.Hide()
|
||||
|
||||
#wj 2014.1.2. ESC키를 누를 시 우선적으로 DropQuestionDialog를 끄도록 만들었다. 하지만 처음에 itemDropQuestionDialog가 선언되어 있지 않아 ERROR가 발생하여 init에서 선언과 동시에 초기화 시킴.
|
||||
#wj 2014.1.2. ESCŰ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>켱<EFBFBD><ECBCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DropQuestionDialog<6F><67> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> itemDropQuestionDialog<6F><67> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD> ERROR<4F><52> <20><EFBFBD><DFBB>Ͽ<EFBFBD> init<69><74><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20>ʱ<EFBFBD>ȭ <20><>Ŵ.
|
||||
self.itemDropQuestionDialog = None
|
||||
|
||||
self.__SetQuickSlotMode()
|
||||
|
@ -226,7 +226,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
exception.Abort("GameWindow.Open")
|
||||
# END_OF_START_GAME_ERROR_EXIT
|
||||
|
||||
# NPC가 큐브시스템으로 만들 수 있는 아이템들의 목록을 캐싱
|
||||
# NPC<EFBFBD><EFBFBD> ť<><C5A5>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3>
|
||||
# ex) cubeInformation[20383] = [ {"rewordVNUM": 72723, "rewordCount": 1, "materialInfo": "101,1&102,2", "price": 999 }, ... ]
|
||||
self.cubeInformation = {}
|
||||
self.currentCubeNPC = 0
|
||||
|
@ -314,10 +314,10 @@ class GameWindow(ui.ScriptWindow):
|
|||
def __BuildKeyDict(self):
|
||||
onPressKeyDict = {}
|
||||
|
||||
##PressKey 는 누르고 있는 동안 계속 적용되는 키이다.
|
||||
##PressKey <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>Ǵ<EFBFBD> Ű<>̴<EFBFBD>.
|
||||
|
||||
## 숫자 단축키 퀵슬롯에 이용된다.(이후 숫자들도 퀵 슬롯용 예약)
|
||||
## F12 는 클라 디버그용 키이므로 쓰지 않는 게 좋다.
|
||||
## <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű <20><><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD> <20>̿<EFBFBD>ȴ<EFBFBD>.(<28><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ鵵 <20><> <20><><EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
## F12 <EFBFBD><EFBFBD> Ŭ<><C5AC> <20><><EFBFBD><EFBFBD><EFBFBD> Ű<>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
onPressKeyDict[app.DIK_1] = lambda : self.__PressNumKey(1)
|
||||
onPressKeyDict[app.DIK_2] = lambda : self.__PressNumKey(2)
|
||||
onPressKeyDict[app.DIK_3] = lambda : self.__PressNumKey(3)
|
||||
|
@ -337,7 +337,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
onPressKeyDict[app.DIK_SYSRQ] = lambda : self.SaveScreen()
|
||||
onPressKeyDict[app.DIK_SPACE] = lambda : self.StartAttack()
|
||||
|
||||
#캐릭터 이동키
|
||||
#ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>Ű
|
||||
onPressKeyDict[app.DIK_UP] = lambda : self.MoveUp()
|
||||
onPressKeyDict[app.DIK_DOWN] = lambda : self.MoveDown()
|
||||
onPressKeyDict[app.DIK_LEFT] = lambda : self.MoveLeft()
|
||||
|
@ -564,12 +564,12 @@ class GameWindow(ui.ScriptWindow):
|
|||
self.TextureNum.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.TextureNum.SetPosition(wndMgr.GetScreenWidth() - 270, 100)
|
||||
|
||||
# 오브젝트 그리는 개수
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><EFBFBD><D7B8><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
self.ObjectNum = ui.TextLine()
|
||||
self.ObjectNum.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.ObjectNum.SetPosition(wndMgr.GetScreenWidth() - 270, 120)
|
||||
|
||||
# 시야거리
|
||||
# <EFBFBD>þ߰Ÿ<EFBFBD>
|
||||
self.ViewDistance = ui.TextLine()
|
||||
self.ViewDistance.SetFontName(localeInfo.UI_DEF_FONT)
|
||||
self.ViewDistance.SetPosition(0, 0)
|
||||
|
@ -659,8 +659,15 @@ class GameWindow(ui.ScriptWindow):
|
|||
if self.interface:
|
||||
self.interface.RefreshSkill()
|
||||
|
||||
def RefreshQuest(self):
|
||||
self.interface.RefreshQuest()
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
def RefreshQuest(self, quest_type, quest_index):
|
||||
self.interface.RefreshQuest(quest_type, quest_index)
|
||||
|
||||
def DeleteQuest(self, quest_type, quest_index):
|
||||
self.interface.DeleteQuest(quest_type, quest_index)
|
||||
else:
|
||||
def RefreshQuest(self):
|
||||
self.interface.RefreshQuest()
|
||||
|
||||
def RefreshMessenger(self):
|
||||
self.interface.RefreshMessenger()
|
||||
|
@ -1302,7 +1309,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
self.__DropMoney(attachedType, attachedMoney)
|
||||
|
||||
def __DropMoney(self, attachedType, attachedMoney):
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if uiPrivateShopBuilder.IsBuildingPrivateShop():
|
||||
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
|
||||
return
|
||||
|
@ -1324,7 +1331,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
self.itemDropQuestionDialog = itemDropQuestionDialog
|
||||
|
||||
def __DropItem(self, attachedType, attachedItemIndex, attachedItemSlotPos, attachedItemCount):
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - 개인상점 열고 있는 동안 아이템 버림 방지
|
||||
# PRIVATESHOP_DISABLE_ITEM_DROP - <EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if uiPrivateShopBuilder.IsBuildingPrivateShop():
|
||||
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
|
||||
return
|
||||
|
@ -1456,7 +1463,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
|
||||
def UpdateDebugInfo(self):
|
||||
#
|
||||
# 캐릭터 좌표 및 FPS 출력
|
||||
# ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ <20><> FPS <20><><EFBFBD>
|
||||
(x, y, z) = player.GetMainCharacterPosition()
|
||||
nUpdateTime = app.GetUpdateTime()
|
||||
nUpdateFPS = app.GetUpdateFPS()
|
||||
|
@ -1619,22 +1626,22 @@ class GameWindow(ui.ScriptWindow):
|
|||
def BINARY_Cube_Close(self):
|
||||
self.interface.CloseCubeWindow()
|
||||
|
||||
# 제작에 필요한 골드, 예상되는 완성품의 VNUM과 개수 정보 update
|
||||
# <EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20>ϼ<EFBFBD>ǰ<EFBFBD><C7B0> VNUM<55><4D> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> update
|
||||
def BINARY_Cube_UpdateInfo(self, gold, itemVnum, count):
|
||||
self.interface.UpdateCubeInfo(gold, itemVnum, count)
|
||||
|
||||
def BINARY_Cube_Succeed(self, itemVnum, count):
|
||||
print "큐브 제작 성공"
|
||||
print "ť<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
|
||||
self.interface.SucceedCubeWork(itemVnum, count)
|
||||
pass
|
||||
|
||||
def BINARY_Cube_Failed(self):
|
||||
print "큐브 제작 실패"
|
||||
print "ť<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
|
||||
self.interface.FailedCubeWork()
|
||||
pass
|
||||
|
||||
def BINARY_Cube_ResultList(self, npcVNUM, listText):
|
||||
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 이런식으로 "/" 문자로 구분된 리스트를 줌
|
||||
# ResultList Text Format : 72723,1/72725,1/72730.1/50001,5 <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "/" <20><><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD>е<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>
|
||||
#print listText
|
||||
|
||||
if npcVNUM == 0:
|
||||
|
@ -1735,7 +1742,7 @@ class GameWindow(ui.ScriptWindow):
|
|||
|
||||
# END_OF_CUBE
|
||||
|
||||
# 용혼석
|
||||
# <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
def BINARY_Highlight_Item(self, inven_type, inven_pos):
|
||||
self.interface.Highligt_Item(inven_type, inven_pos)
|
||||
|
||||
|
|
|
@ -45,6 +45,9 @@ import uiScriptLocale
|
|||
import event
|
||||
import localeInfo
|
||||
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
import quest
|
||||
|
||||
IsQBHide = 0
|
||||
class Interface(object):
|
||||
CHARACTER_STATUS_TAB = 1
|
||||
|
@ -277,7 +280,7 @@ class Interface(object):
|
|||
self.wndItemSelect = uiselectitem.SelectItemWindow()
|
||||
self.wndItemSelect.Hide()
|
||||
# END_OF_ACCESSORY_REFINE_ADD_METIN_STONE
|
||||
|
||||
|
||||
def MakeInterface(self):
|
||||
self.__MakeMessengerWindow()
|
||||
self.__MakeGuildWindow()
|
||||
|
@ -294,13 +297,14 @@ class Interface(object):
|
|||
self.__MakeWebWindow()
|
||||
self.__MakeCubeWindow()
|
||||
self.__MakeCubeResultWindow()
|
||||
|
||||
|
||||
|
||||
# ACCESSORY_REFINE_ADD_METIN_STONE
|
||||
self.__MakeItemSelectWindow()
|
||||
# END_OF_ACCESSORY_REFINE_ADD_METIN_STONE
|
||||
|
||||
self.questButtonList = []
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
self.__MakeQuestButton()
|
||||
self.whisperButtonList = []
|
||||
self.whisperDialogDict = {}
|
||||
self.privateShopAdvertisementBoardDict = {}
|
||||
|
@ -564,12 +568,13 @@ class Interface(object):
|
|||
if app.ENABLE_DRAGON_SOUL_SYSTEM:
|
||||
self.wndDragonSoul.RefreshItemSlot()
|
||||
|
||||
def RefreshCharacter(self): ## Character 페이지의 얼굴, Inventory 페이지의 전신 그림 등의 Refresh
|
||||
def RefreshCharacter(self): ## Character <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, Inventory <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> Refresh
|
||||
self.wndCharacter.RefreshCharacter()
|
||||
self.wndTaskBar.RefreshQuickSlot()
|
||||
|
||||
def RefreshQuest(self):
|
||||
self.wndCharacter.RefreshQuest()
|
||||
if not app.ENABLE_QUEST_RENEWAL:
|
||||
def RefreshQuest(self):
|
||||
self.wndCharacter.RefreshQuest()
|
||||
|
||||
def RefreshSafebox(self):
|
||||
self.wndSafebox.RefreshSafebox()
|
||||
|
@ -690,7 +695,7 @@ class Interface(object):
|
|||
def RemovePartyMember(self, pid):
|
||||
self.wndParty.RemovePartyMember(pid)
|
||||
|
||||
##!! 20061026.levites.퀘스트_위치_보정
|
||||
##!! 20061026.levites.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ_<EFBFBD><EFBFBD>ġ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
def LinkPartyMember(self, pid, vid):
|
||||
|
@ -705,7 +710,7 @@ class Interface(object):
|
|||
def ExitParty(self):
|
||||
self.wndParty.ExitParty()
|
||||
|
||||
##!! 20061026.levites.퀘스트_위치_보정
|
||||
##!! 20061026.levites.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ_<EFBFBD><EFBFBD>ġ_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
def PartyHealReady(self):
|
||||
|
@ -868,7 +873,7 @@ class Interface(object):
|
|||
if True == self.wndChat.IsEditMode():
|
||||
self.wndChat.CloseChat()
|
||||
else:
|
||||
# 웹페이지가 열렸을때는 채팅 입력이 안됨
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ä<><C3A4> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ȵ<EFBFBD>
|
||||
if self.wndWeb and self.wndWeb.IsShow():
|
||||
pass
|
||||
else:
|
||||
|
@ -969,7 +974,7 @@ class Interface(object):
|
|||
else:
|
||||
self.wndExpandedTaskBar.Close()
|
||||
|
||||
# 용혼석
|
||||
# <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
def DragonSoulActivate(self, deck):
|
||||
if app.ENABLE_DRAGON_SOUL_SYSTEM:
|
||||
self.wndDragonSoul.ActivateDragonSoulByExtern(deck)
|
||||
|
@ -1040,7 +1045,7 @@ class Interface(object):
|
|||
if True == self.wndDragonSoulRefine.IsShow():
|
||||
self.wndDragonSoulRefine.Close()
|
||||
|
||||
# 용혼석 끝
|
||||
# <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><>
|
||||
|
||||
def ToggleGuildWindow(self):
|
||||
if not self.wndGuild.IsShow():
|
||||
|
@ -1090,7 +1095,7 @@ class Interface(object):
|
|||
def OpenWebWindow(self, url):
|
||||
self.wndWeb.Open(url)
|
||||
|
||||
# 웹페이지를 열면 채팅을 닫는다
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ä<><C3A4><EFBFBD><EFBFBD> <20>ݴ´<DDB4>
|
||||
self.wndChat.CloseChat()
|
||||
|
||||
# show GIFT
|
||||
|
@ -1118,9 +1123,9 @@ class Interface(object):
|
|||
def SucceedCubeWork(self, itemVnum, count):
|
||||
self.wndCube.Clear()
|
||||
|
||||
print "큐브 제작 성공! [%d:%d]" % (itemVnum, count)
|
||||
print "ť<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! [%d:%d]" % (itemVnum, count)
|
||||
|
||||
if 0: # 결과 메시지 출력은 생략 한다
|
||||
if 0: # <EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>
|
||||
self.wndCubeResult.SetPosition(*self.wndCube.GetGlobalPosition())
|
||||
self.wndCubeResult.SetCubeResultItem(itemVnum, count)
|
||||
self.wndCubeResult.Open()
|
||||
|
@ -1263,119 +1268,197 @@ class Interface(object):
|
|||
#####################################################################################
|
||||
|
||||
#####################################################################################
|
||||
### Quest ###
|
||||
def BINARY_ClearQuest(self, index):
|
||||
btn = self.__FindQuestButton(index)
|
||||
if 0 != btn:
|
||||
self.__DestroyQuestButton(btn)
|
||||
|
||||
def RecvQuest(self, index, name):
|
||||
# QUEST_LETTER_IMAGE
|
||||
self.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())
|
||||
# END_OF_QUEST_LETTER_IMAGE
|
||||
### Quest ###
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
def RefreshQuest(self, quest_type, quest_index):
|
||||
self.wndCharacter.RefreshQuest(quest_type, quest_index)
|
||||
|
||||
def BINARY_RecvQuest(self, index, name, iconType, iconName):
|
||||
# Refresh quest button.
|
||||
self.__RefreshQuestButton()
|
||||
|
||||
btn = self.__FindQuestButton(index)
|
||||
if 0 != btn:
|
||||
def DeleteQuest(self, quest_type, quest_index):
|
||||
self.wndCharacter.DeleteQuest(quest_type, quest_index)
|
||||
|
||||
# Unused.
|
||||
def ShowQuestButton(self):
|
||||
pass
|
||||
|
||||
def __OnClickQuestLetterButton(self, btn):
|
||||
self.OpenCharacterWindowWithState("QUEST")
|
||||
|
||||
if btn.type == quest.QUEST_TYPE_EVENT:
|
||||
self.wndCharacter.OpenQuestCategory(quest.QUEST_TYPE_EVENT, True)
|
||||
|
||||
self.HideAllQuestButton()
|
||||
global IsQBHide
|
||||
IsQBHide = 1
|
||||
|
||||
def __MakeQuestButton(self):
|
||||
btn = uiWhisper.WhisperButton()
|
||||
btn.SetUpVisual(localeInfo.GetLetterCloseImageName())
|
||||
btn.SetOverVisual(localeInfo.GetLetterOpenImageName())
|
||||
btn.SetDownVisual(localeInfo.GetLetterOpenImageName())
|
||||
btn.SetEvent(ui.__mem_func__(self.__OnClickQuestLetterButton), btn)
|
||||
btn.Hide()
|
||||
btn.type = quest.QUEST_TYPE_MAX
|
||||
btn.count = 0
|
||||
self.questButtonList.append(btn)
|
||||
|
||||
# Used for event quests in order to highlight it.
|
||||
btn = uiWhisper.WhisperButton()
|
||||
btn.SetUpVisual(localeInfo.GetBlueLetterImageName())
|
||||
btn.SetOverVisual(localeInfo.GetBlueLetterOpenImageName())
|
||||
btn.SetDownVisual(localeInfo.GetBlueLetterOpenImageName())
|
||||
btn.SetEvent(ui.__mem_func__(self.__OnClickQuestLetterButton), btn)
|
||||
btn.Hide()
|
||||
btn.type = quest.QUEST_TYPE_EVENT
|
||||
btn.count = 0
|
||||
self.questButtonList.append(btn)
|
||||
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
def __ArrangeQuestButton(self):
|
||||
screen_width = wndMgr.GetScreenWidth()
|
||||
screen_height = wndMgr.GetScreenHeight()
|
||||
|
||||
x = 100 + 30 if self.wndParty.IsShow() else 20
|
||||
if localeInfo.IsARABIC():
|
||||
x += 15
|
||||
|
||||
y = 170 * screen_height / 600
|
||||
y_count = (screen_height - 330) / 63
|
||||
|
||||
for count, btn in enumerate(self.questButtonList):
|
||||
btn.SetPosition(x + (int(count / y_count) * 100), y + (count % y_count * 63))
|
||||
btn.SetToolTipText(str(btn.count), 0, 35)
|
||||
|
||||
global IsQBHide
|
||||
if IsQBHide:
|
||||
btn.Hide()
|
||||
else:
|
||||
if btn.count > 0:
|
||||
btn.Show()
|
||||
|
||||
def __RefreshQuestButton(self):
|
||||
for btn in self.questButtonList:
|
||||
btn.count = quest.GetQuestButtonNoticeCount(btn.type)
|
||||
self.__ArrangeQuestButton()
|
||||
else:
|
||||
def BINARY_ClearQuest(self, index):
|
||||
btn = self.__FindQuestButton(index)
|
||||
if 0 != btn:
|
||||
self.__DestroyQuestButton(btn)
|
||||
|
||||
def RecvQuest(self, index, name):
|
||||
# QUEST_LETTER_IMAGE
|
||||
self.BINARY_RecvQuest(index, name, "file", localeInfo.GetLetterImageName())
|
||||
# END_OF_QUEST_LETTER_IMAGE
|
||||
|
||||
def BINARY_RecvQuest(self, index, name, iconType, iconName):
|
||||
btn = self.__FindQuestButton(index)
|
||||
if 0 != btn:
|
||||
self.__DestroyQuestButton(btn)
|
||||
|
||||
btn = uiWhisper.WhisperButton()
|
||||
|
||||
# QUEST_LETTER_IMAGE
|
||||
## !! 20061026.levites.Äù½ºÆ®_À̹ÌÁö_±³Ã¼
|
||||
import item
|
||||
if "item" == iconType:
|
||||
item.SelectItem(int(iconName))
|
||||
buttonImageFileName = item.GetIconImageFileName()
|
||||
else:
|
||||
buttonImageFileName = iconName
|
||||
|
||||
if localeInfo.IsEUROPE():
|
||||
if "highlight" == iconType:
|
||||
btn.SetUpVisual("locale/ymir_ui/highlighted_quest.tga")
|
||||
btn.SetOverVisual("locale/ymir_ui/highlighted_quest_r.tga")
|
||||
btn.SetDownVisual("locale/ymir_ui/highlighted_quest_r.tga")
|
||||
else:
|
||||
btn.SetUpVisual(localeInfo.GetLetterCloseImageName())
|
||||
btn.SetOverVisual(localeInfo.GetLetterOpenImageName())
|
||||
btn.SetDownVisual(localeInfo.GetLetterOpenImageName())
|
||||
else:
|
||||
btn.SetUpVisual(buttonImageFileName)
|
||||
btn.SetOverVisual(buttonImageFileName)
|
||||
btn.SetDownVisual(buttonImageFileName)
|
||||
btn.Flash()
|
||||
# END_OF_QUEST_LETTER_IMAGE
|
||||
|
||||
if localeInfo.IsARABIC():
|
||||
btn.SetToolTipText(name, 0, 35)
|
||||
btn.ToolTipText.SetHorizontalAlignCenter()
|
||||
else:
|
||||
btn.SetToolTipText(name, -20, 35)
|
||||
btn.ToolTipText.SetHorizontalAlignLeft()
|
||||
|
||||
btn.SetEvent(ui.__mem_func__(self.__StartQuest), btn)
|
||||
btn.Show()
|
||||
|
||||
btn.index = index
|
||||
btn.name = name
|
||||
|
||||
self.questButtonList.insert(0, btn)
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
#chat.AppendChat(chat.CHAT_TYPE_NOTICE, localeInfo.QUEST_APPEND)
|
||||
|
||||
def __ArrangeQuestButton(self):
|
||||
screenWidth = wndMgr.GetScreenWidth()
|
||||
screenHeight = wndMgr.GetScreenHeight()
|
||||
|
||||
## !! 20061026.levites.Äù½ºÆ®_À§Ä¡_º¸Á¤
|
||||
if self.wndParty.IsShow():
|
||||
xPos = 100 + 30
|
||||
else:
|
||||
xPos = 20
|
||||
|
||||
if localeInfo.IsARABIC():
|
||||
xPos = xPos + 15
|
||||
|
||||
yPos = 170 * screenHeight / 600
|
||||
yCount = (screenHeight - 330) / 63
|
||||
|
||||
count = 0
|
||||
for btn in self.questButtonList:
|
||||
btn.SetPosition(xPos + (int(count / yCount) * 100), yPos + (count % yCount * 63))
|
||||
count += 1
|
||||
|
||||
global IsQBHide
|
||||
if IsQBHide:
|
||||
btn.Hide()
|
||||
else:
|
||||
btn.Show()
|
||||
|
||||
def __StartQuest(self, btn):
|
||||
event.QuestButtonClick(btn.index)
|
||||
self.__DestroyQuestButton(btn)
|
||||
|
||||
btn = uiWhisper.WhisperButton()
|
||||
def __FindQuestButton(self, index):
|
||||
for btn in self.questButtonList:
|
||||
if btn.index == index:
|
||||
return btn
|
||||
|
||||
# QUEST_LETTER_IMAGE
|
||||
##!! 20061026.levites.퀘스트_이미지_교체
|
||||
import item
|
||||
if "item"==iconType:
|
||||
item.SelectItem(int(iconName))
|
||||
buttonImageFileName=item.GetIconImageFileName()
|
||||
else:
|
||||
buttonImageFileName=iconName
|
||||
return 0
|
||||
|
||||
if localeInfo.IsEUROPE():
|
||||
if "highlight" == iconType:
|
||||
btn.SetUpVisual("locale/ymir_ui/highlighted_quest.tga")
|
||||
btn.SetOverVisual("locale/ymir_ui/highlighted_quest_r.tga")
|
||||
btn.SetDownVisual("locale/ymir_ui/highlighted_quest_r.tga")
|
||||
else:
|
||||
btn.SetUpVisual(localeInfo.GetLetterCloseImageName())
|
||||
btn.SetOverVisual(localeInfo.GetLetterOpenImageName())
|
||||
btn.SetDownVisual(localeInfo.GetLetterOpenImageName())
|
||||
else:
|
||||
btn.SetUpVisual(buttonImageFileName)
|
||||
btn.SetOverVisual(buttonImageFileName)
|
||||
btn.SetDownVisual(buttonImageFileName)
|
||||
btn.Flash()
|
||||
# END_OF_QUEST_LETTER_IMAGE
|
||||
|
||||
if localeInfo.IsARABIC():
|
||||
btn.SetToolTipText(name, 0, 35)
|
||||
btn.ToolTipText.SetHorizontalAlignCenter()
|
||||
else:
|
||||
btn.SetToolTipText(name, -20, 35)
|
||||
btn.ToolTipText.SetHorizontalAlignLeft()
|
||||
|
||||
btn.SetEvent(ui.__mem_func__(self.__StartQuest), btn)
|
||||
btn.Show()
|
||||
|
||||
btn.index = index
|
||||
btn.name = name
|
||||
|
||||
self.questButtonList.insert(0, btn)
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
#chat.AppendChat(chat.CHAT_TYPE_NOTICE, localeInfo.QUEST_APPEND)
|
||||
|
||||
def __ArrangeQuestButton(self):
|
||||
|
||||
screenWidth = wndMgr.GetScreenWidth()
|
||||
screenHeight = wndMgr.GetScreenHeight()
|
||||
|
||||
##!! 20061026.levites.퀘스트_위치_보정
|
||||
if self.wndParty.IsShow():
|
||||
xPos = 100 + 30
|
||||
else:
|
||||
xPos = 20
|
||||
|
||||
if localeInfo.IsARABIC():
|
||||
xPos = xPos + 15
|
||||
|
||||
yPos = 170 * screenHeight / 600
|
||||
yCount = (screenHeight - 330) / 63
|
||||
|
||||
count = 0
|
||||
for btn in self.questButtonList:
|
||||
|
||||
btn.SetPosition(xPos + (int(count/yCount) * 100), yPos + (count%yCount * 63))
|
||||
count += 1
|
||||
global IsQBHide
|
||||
if IsQBHide:
|
||||
btn.Hide()
|
||||
else:
|
||||
btn.Show()
|
||||
|
||||
def __StartQuest(self, btn):
|
||||
event.QuestButtonClick(btn.index)
|
||||
self.__DestroyQuestButton(btn)
|
||||
|
||||
def __FindQuestButton(self, index):
|
||||
for btn in self.questButtonList:
|
||||
if btn.index == index:
|
||||
return btn
|
||||
|
||||
return 0
|
||||
|
||||
def __DestroyQuestButton(self, btn):
|
||||
btn.SetEvent(0)
|
||||
self.questButtonList.remove(btn)
|
||||
self.__ArrangeQuestButton()
|
||||
def __DestroyQuestButton(self, btn):
|
||||
btn.SetEvent(0)
|
||||
self.questButtonList.remove(btn)
|
||||
self.__ArrangeQuestButton()
|
||||
|
||||
def HideAllQuestButton(self):
|
||||
for btn in self.questButtonList:
|
||||
btn.Hide()
|
||||
|
||||
def ShowAllQuestButton(self):
|
||||
for btn in self.questButtonList:
|
||||
btn.Show()
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
for btn in self.questButtonList:
|
||||
if btn.count > 0:
|
||||
btn.Show()
|
||||
else:
|
||||
for btn in self.questButtonList:
|
||||
btn.Show()
|
||||
#####################################################################################
|
||||
|
||||
#####################################################################################
|
||||
|
@ -1384,8 +1467,8 @@ class Interface(object):
|
|||
def __InitWhisper(self):
|
||||
chat.InitWhisper(self)
|
||||
|
||||
## 채팅창의 "메시지 보내기"를 눌렀을때 이름 없는 대화창을 여는 함수
|
||||
## 이름이 없기 때문에 기존의 WhisperDialogDict 와 별도로 관리된다.
|
||||
## ä<EFBFBD><EFBFBD>â<EFBFBD><EFBFBD> "<22><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭâ<C8AD><C3A2> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
||||
## <EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WhisperDialogDict <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>.
|
||||
def OpenWhisperDialogWithoutTarget(self):
|
||||
if not self.dlgWhisperWithoutTarget:
|
||||
dlgWhisper = uiWhisper.WhisperDialog(self.MinimizeWhisperDialog, self.CloseWhisperDialog)
|
||||
|
@ -1402,7 +1485,7 @@ class Interface(object):
|
|||
self.dlgWhisperWithoutTarget.SetTop()
|
||||
self.dlgWhisperWithoutTarget.OpenWithoutTarget(self.RegisterTemporaryWhisperDialog)
|
||||
|
||||
## 이름 없는 대화창에서 이름을 결정했을때 WhisperDialogDict에 창을 넣어주는 함수
|
||||
## <EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭâ<C8AD><C3A2><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WhisperDialogDict<63><74> â<><C3A2> <20>־<EFBFBD><D6BE>ִ<EFBFBD> <20>Լ<EFBFBD>
|
||||
def RegisterTemporaryWhisperDialog(self, name):
|
||||
if not self.dlgWhisperWithoutTarget:
|
||||
return
|
||||
|
@ -1421,7 +1504,7 @@ class Interface(object):
|
|||
self.dlgWhisperWithoutTarget = None
|
||||
self.__CheckGameMaster(name)
|
||||
|
||||
## 캐릭터 메뉴의 1:1 대화 하기를 눌렀을때 이름을 가지고 바로 창을 여는 함수
|
||||
## ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEB4><EFBFBD> 1:1 <20><>ȭ <20>ϱ⸦ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
||||
def OpenWhisperDialog(self, name):
|
||||
if not self.whisperDialogDict.has_key(name):
|
||||
dlg = self.__MakeWhisperDialog(name)
|
||||
|
@ -1434,7 +1517,7 @@ class Interface(object):
|
|||
if 0 != btn:
|
||||
self.__DestroyWhisperButton(btn)
|
||||
|
||||
## 다른 캐릭터로부터 메세지를 받았을때 일단 버튼만 띄워 두는 함수
|
||||
## <EFBFBD>ٸ<EFBFBD> ij<><C4B3><EFBFBD>ͷκ<CDB7><CEBA><EFBFBD> <20><EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBE><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><>ư<EFBFBD><C6B0> <20><><EFBFBD> <20>δ<EFBFBD> <20>Լ<EFBFBD>
|
||||
def RecvWhisper(self, name):
|
||||
if not self.whisperDialogDict.has_key(name):
|
||||
btn = self.__FindWhisperButton(name)
|
||||
|
@ -1453,7 +1536,7 @@ class Interface(object):
|
|||
def MakeWhisperButton(self, name):
|
||||
self.__MakeWhisperButton(name)
|
||||
|
||||
## 버튼을 눌렀을때 창을 여는 함수
|
||||
## <EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
||||
def ShowWhisperDialog(self, btn):
|
||||
try:
|
||||
self.__MakeWhisperDialog(btn.name)
|
||||
|
@ -1465,11 +1548,11 @@ class Interface(object):
|
|||
import dbg
|
||||
dbg.TraceError("interface.ShowWhisperDialog - Failed to find key")
|
||||
|
||||
## 버튼 초기화
|
||||
## <EFBFBD><EFBFBD>ư <20>ʱ<EFBFBD>ȭ
|
||||
self.__DestroyWhisperButton(btn)
|
||||
|
||||
## WhisperDialog 창에서 최소화 명령을 수행했을때 호출되는 함수
|
||||
## 창을 최소화 합니다.
|
||||
## WhisperDialog â<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3>Ǵ<EFBFBD> <20>Լ<EFBFBD>
|
||||
## â<EFBFBD><EFBFBD> <20>ּ<EFBFBD>ȭ <20>մϴ<D5B4>.
|
||||
def MinimizeWhisperDialog(self, name):
|
||||
|
||||
if 0 != name:
|
||||
|
@ -1477,8 +1560,8 @@ class Interface(object):
|
|||
|
||||
self.CloseWhisperDialog(name)
|
||||
|
||||
## WhisperDialog 창에서 닫기 명령을 수행했을때 호출되는 함수
|
||||
## 창을 지웁니다.
|
||||
## WhisperDialog â<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3>Ǵ<EFBFBD> <20>Լ<EFBFBD>
|
||||
## â<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
def CloseWhisperDialog(self, name):
|
||||
|
||||
if 0 == name:
|
||||
|
@ -1497,7 +1580,7 @@ class Interface(object):
|
|||
import dbg
|
||||
dbg.TraceError("interface.CloseWhisperDialog - Failed to find key")
|
||||
|
||||
## 버튼의 개수가 바뀌었을때 버튼을 재정렬 하는 함수
|
||||
## <EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20>Լ<EFBFBD>
|
||||
def __ArrangeWhisperButton(self):
|
||||
|
||||
screenWidth = wndMgr.GetScreenWidth()
|
||||
|
@ -1514,9 +1597,9 @@ class Interface(object):
|
|||
button.SetPosition(xPos + (int(count/yCount) * -50), yPos + (count%yCount * 63))
|
||||
count += 1
|
||||
|
||||
## 이름으로 Whisper 버튼을 찾아 리턴해 주는 함수
|
||||
## 버튼은 딕셔너리로 하지 않는 것은 정렬 되어 버려 순서가 유지 되지 않으며
|
||||
## 이로 인해 ToolTip들이 다른 버튼들에 의해 가려지기 때문이다.
|
||||
## <EFBFBD≯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Whisper <20><>ư<EFBFBD><C6B0> ã<><C3A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>Լ<EFBFBD>
|
||||
## <EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD> <20><>ųʸ<C5B3><CAB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
## <EFBFBD>̷<EFBFBD> <20><><EFBFBD><EFBFBD> ToolTip<69><70><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><>ư<EFBFBD>鿡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
def __FindWhisperButton(self, name):
|
||||
for button in self.whisperButtonList:
|
||||
if button.name == name:
|
||||
|
@ -1524,7 +1607,7 @@ class Interface(object):
|
|||
|
||||
return 0
|
||||
|
||||
## 창을 만듭니다.
|
||||
## â<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
def __MakeWhisperDialog(self, name):
|
||||
dlgWhisper = uiWhisper.WhisperDialog(self.MinimizeWhisperDialog, self.CloseWhisperDialog)
|
||||
dlgWhisper.BindInterface(self)
|
||||
|
@ -1536,7 +1619,7 @@ class Interface(object):
|
|||
|
||||
return dlgWhisper
|
||||
|
||||
## 버튼을 만듭니다.
|
||||
## <EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
def __MakeWhisperButton(self, name):
|
||||
whisperButton = uiWhisper.WhisperButton()
|
||||
whisperButton.SetUpVisual("d:/ymir work/ui/game/windows/btn_mail_up.sub")
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import app
|
||||
import constInfo
|
||||
|
||||
MAP_TRENT02 = "MAP_TRENT02" # 烙矫
|
||||
MAP_WL = "MAP_WL" # 烙矫
|
||||
MAP_NUSLUCK = "MAP_NUSLUCK" # 烙矫
|
||||
MAP_TRENT02 = "MAP_TRENT02" # <EFBFBD>ӽ<EFBFBD>
|
||||
MAP_WL = "MAP_WL" # <EFBFBD>ӽ<EFBFBD>
|
||||
MAP_NUSLUCK = "MAP_NUSLUCK" # <EFBFBD>ӽ<EFBFBD>
|
||||
MAP_TREE2 = "MAP_TREE2"
|
||||
|
||||
BLEND_POTION_NO_TIME = "BLEND_POTION_NO_TIME"
|
||||
|
@ -23,7 +23,7 @@ CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
|
|||
GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
|
||||
|
||||
GUILD_MARK_MIN_LEVEL = "3"
|
||||
GUILD_MARK_NOT_ENOUGH_LEVEL = "辨靛饭骇 3捞惑 何磐 啊瓷钦聪促."
|
||||
GUILD_MARK_NOT_ENOUGH_LEVEL = "<EFBFBD><EFBFBD>巹<EFBFBD><EFBFBD> 3<>̻<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>."
|
||||
|
||||
ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
|
||||
ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
|
||||
|
@ -32,7 +32,7 @@ VIRTUAL_KEY_ALPHABET_LOWERS = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
|
|||
VIRTUAL_KEY_ALPHABET_UPPERS = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
|
||||
VIRTUAL_KEY_SYMBOLS = '!@#$%^&*()_+|{}:"<>?~'
|
||||
VIRTUAL_KEY_NUMBERS = "1234567890-=\[];',./`"
|
||||
VIRTUAL_KEY_SYMBOLS_BR = '!@#$%^&*()_+|{}:"<>?~徉汊殍觏祗螋斛<EFBFBD>'
|
||||
VIRTUAL_KEY_SYMBOLS_BR = '!@#$%^&*()_+|{}:"<>?~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||
|
||||
__IS_ENGLISH = "ENGLISH" == app.GetLocaleServiceName()
|
||||
__IS_HONGKONG = "HONGKONG" == app.GetLocaleServiceName()
|
||||
|
@ -106,7 +106,7 @@ def IsWE_KOREA():
|
|||
def LoadLocaleData():
|
||||
if IsYMIR():
|
||||
import net
|
||||
SERVER = "蔫档 辑滚"
|
||||
SERVER = "<EFBFBD>赵 <20><><EFBFBD><EFBFBD>"
|
||||
if SERVER == net.GetServerInfo()[:len(SERVER)]:
|
||||
app.SetCHEONMA(0)
|
||||
app.LoadLocaleData("locale/we_korea")
|
||||
|
@ -119,7 +119,7 @@ def LoadLocaleData():
|
|||
app.LoadLocaleData(app.GetLocalePath())
|
||||
|
||||
def IsCHEONMA():
|
||||
return IsYMIR() # 捞力 YMIR 肺纳老篮 公炼扒 玫付辑滚烙. 玫付辑滚啊 巩阑 摧扁 傈鳖瘤 函且 老 绝澜.
|
||||
return IsYMIR() # <EFBFBD><EFBFBD><EFBFBD><EFBFBD> YMIR <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> õ<><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. õ<><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ݱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
# END_OF_SUPPORT_NEW_KOREA_SERVER
|
||||
|
||||
|
@ -181,13 +181,13 @@ elif IsSINGAPORE() :
|
|||
LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
|
||||
constInfo.IN_GAME_SHOP_ENABLE = 0
|
||||
elif IsNEWCIBN() :
|
||||
##霸烙疙捞柄柳促.
|
||||
APP_TITLE = "新倚天2"
|
||||
##<EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD>̱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
APP_TITLE = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2"
|
||||
FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
|
||||
LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
|
||||
constInfo.IN_GAME_SHOP_ENABLE = 1
|
||||
elif IsTAIWAN():
|
||||
APP_TITLE = "矮III瓣"
|
||||
APP_TITLE = "<EFBFBD><EFBFBD>III<EFBFBD><EFBFBD>"
|
||||
FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
|
||||
LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
|
||||
|
||||
|
@ -202,31 +202,31 @@ else:
|
|||
LoadLocaleFile(LOCALE_FILE_NAME, locals())
|
||||
|
||||
########################################################################################################
|
||||
## NOTE : 酒捞袍阑 滚副锭 "公均阑/甫 滚府矫摆嚼聪鳖?" 巩磊凯狼 炼荤 急琶阑 困茄 内靛
|
||||
## NOTE : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><> <20><><EFBFBD><EFBFBD><EFBFBD>ðڽ<C3B0><DABD>ϱ<EFBFBD>?" <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
dictSingleWord = {
|
||||
"m":1, "n":1, "r":1, "M":1, "N":1, "R":1, "l":1, "L":1, "1":1, "3":1, "6":1, "7":1, "8":1, "0":1,
|
||||
}
|
||||
|
||||
dictDoubleWord = {
|
||||
"啊":1, "凹":1, "芭":1, "败":1, "绊":1, "背":1, "备":1, "痹":1, "弊":1, "扁":1, "俺":1, "奥":1, "霸":1, "拌":1, "苞":1, "饱":1, "迸":1, "彼":1, "鲍":1, "蓖":1, "贬":1,
|
||||
"鳖":1, "播":1, "波":1, "哺":1, "部":1, "藏":1, "操":1, "搀":1, "掺":1, "尝":1, "柄":1, "兤":1, "膊":1, "簿":1, "彩":1, "蚕":1, "层":1, "茬":1, "惨":1, "差":1, "吺":1,
|
||||
"唱":1, "衬":1, "呈":1, "赤":1, "畴":1, "储":1, "穿":1, "春":1, "蠢":1, "聪":1, "郴":1, "唙":1, "匙":1, "抽":1, "出":1, "嘡":1, "床":1, "创":1, "锄":1, "吹":1, "刺":1,
|
||||
"促":1, "呆":1, "歹":1, "诞":1, "档":1, "低":1, "滴":1, "掂":1, "靛":1, "叼":1, "措":1, "堐":1, "单":1, "党":1, "德":1, "蹬":1, "抵":1, "地":1, "登":1, "第":1, "碉":1,
|
||||
"蝶":1, "媥":1, "栋":1, "杜":1, "肚":1, "屆":1, "堆":1, "崗":1, "哆":1, "鹅":1, "锭":1, "嫐":1, "都":1, "嬻":1, "短":1, "段":1, "岕":1, "敦":1, "断":1, "顿":1, "剁":1,
|
||||
"扼":1, "藩":1, "矾":1, "妨":1, "肺":1, "丰":1, "风":1, "幅":1, "福":1, "府":1, "贰":1, "巑":1, "饭":1, "肥":1, "分":1, "廜":1, "凤":1, "否":1, "汾":1, "夫":1, "恖":1,
|
||||
"付":1, "赶":1, "赣":1, "哥":1, "葛":1, "功":1, "公":1, "孤":1, "骨":1, "固":1, "概":1, "愘":1, "皋":1, "革":1, "跟":1, "懤":1, "构":1, "咕":1, "羹":1, "箍":1, "掁":1,
|
||||
"官":1, "跪":1, "滚":1, "涵":1, "焊":1, "禾":1, "何":1, "轰":1, "宏":1, "厚":1, "硅":1, "搸":1, "海":1, "憾":1, "毫":1, "耗":1, "痕":1, "恨":1, "浩":1, "哼":1, "晳":1,
|
||||
"狐":1, "徊":1, "坏":1, "焕":1, "磺":1, "幌":1, "谎":1, "回":1, "悔":1, "贿":1, "哗":1, "曽":1, "痪":1, "枾":1, "栘":1, "桇":1, "棬":1, "椖":1, "晃":1, "椸":1, "榰":1,
|
||||
"荤":1, "箕":1, "辑":1, "寂":1, "家":1, "碱":1, "荐":1, "酱":1, "胶":1, "矫":1, "货":1, "绩":1, "技":1, "嘉":1, "驾":1, "尖":1, "饯":1, "溅":1, "艰":1, "浆":1, "毭":1,
|
||||
"轿":1, "沊":1, "结":1, "浨":1, "筋":1, "兢":1, "茎":1, "漮":1, "静":1, "揪":1, "截":1, "泍":1, "疥":1, "涖":1, "谨":1, "禁":1, "粳":1, "井":1, "烬":1, "警":1, "竞":1,
|
||||
"酒":1, "具":1, "绢":1, "咯":1, "坷":1, "夸":1, "快":1, "蜡":1, "栏":1, "捞":1, "局":1, "娟":1, "俊":1, "抗":1, "客":1, "恐":1, "况":1, "傀":1, "寇":1, "困":1, "狼":1,
|
||||
"磊":1, "鲤":1, "历":1, "廉":1, "炼":1, "烈":1, "林":1, "陵":1, "令":1, "瘤":1, "犁":1, "厉":1, "力":1, "恋":1, "谅":1, "寥":1, "拎":1, "菱":1, "了":1, "零":1, "<EFBFBD>":1,
|
||||
"楼":1, "鹿":1, "录":1, "虑":1, "律":1, "<EFBFBD>":1, "罗":1, "麻":1, "玛":1, "骂":1, "掳":1, "<EFBFBD>":1, "屡":1, "<EFBFBD>":1, "乱":1, "轮":1, "洛":1, "≧":1, "仑":1, "妈":1, "﹏":1,
|
||||
"瞒":1, "铆":1, "贸":1, "媚":1, "檬":1, "幂":1, "眠":1, "抿":1, "明":1, "摹":1, "盲":1, "獕":1, "眉":1, "们":1, "靡":1, "瑐":1, "苗":1, "瞄":1, "弥":1, "秒":1, "疢":1,
|
||||
"墨":1, "募":1, "目":1, "难":1, "内":1, "撵":1, "捻":1, "钮":1, "农":1, "虐":1, "某":1, "癿":1, "纳":1, "馁":1, "拟":1, "蔫":1, "孽":1, "涅":1, "年":1, "柠":1, "磾":1,
|
||||
"鸥":1, "潘":1, "磐":1, "胚":1, "配":1, "鹏":1, "捧":1, "譬":1, "飘":1, "萍":1, "怕":1, "禣":1, "抛":1, "赔":1, "彭":1, "棚":1, "琵":1, "啤":1, "硼":1, "脾":1, "品":1,
|
||||
"颇":1, "瀑":1, "欺":1, "旗":1, "器":1, "钎":1, "仟":1, "腔":1, "橇":1, "乔":1, "菩":1, "粭":1, "其":1, "企":1, "恰":1, "綅":1, "谴":1, "縍":1, "牵":1, "嵌":1, "纁":1,
|
||||
"窍":1, "轻":1, "倾":1, "囚":1, "龋":1, "瓤":1, "饶":1, "绒":1, "儒":1, "洒":1, "秦":1, "羺":1, "庆":1, "驱":1, "拳":1, "瘸":1, "忍":1, "妊":1, "雀":1, "戎":1, "锐":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>v":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>R":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD>x":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>m":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>O":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>l":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>u":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD>X":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>o":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>y":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>p":1,
|
||||
"¥":1, "¹":1, "¼":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>c":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "°":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>R":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>n":1,
|
||||
"<EFBFBD><EFBFBD>":1, "í":1, "ó":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ġ":1, "ä":1, "<EFBFBD><EFBFBD>":1, "ü":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>M":1,
|
||||
"ī":1, "ļ":1, "Ŀ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ť":1, "ũ":1, "Ű":1, "ij":1, "<EFBFBD>m":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
"Ÿ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "Ʃ":1, "Ʈ":1, "Ƽ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD>O":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ơ":1, "<EFBFBD><EFBFBD>":1, "Ƣ":1, "Ʒ":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ǥ":1, "Ǫ":1, "ǻ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ǡ":1, "<EFBFBD><EFBFBD>":1, "Ǵ":1, "<EFBFBD>R":1, "ǣ":1, "Ƕ":1, "<EFBFBD>c":1,
|
||||
"<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ȣ":1, "ȿ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ȭ":1, "ȳ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1, "ȸ":1, "<EFBFBD><EFBFBD>":1, "<EFBFBD><EFBFBD>":1,
|
||||
}
|
||||
|
||||
locale = mapping(
|
||||
|
@ -415,129 +415,129 @@ JOBINFO_TITLE = [
|
|||
|
||||
JOBINFO_DATA_LIST = [
|
||||
[
|
||||
["鸥绊抄 侩竿苞 绷洒瘤 臼绰 公荤狼",
|
||||
"扁俺甫 荤恩甸篮 老拿绢 [侩磊]扼绊",
|
||||
"何弗促. 绢栋茄 困扁俊辑档 弊甸篮 ",
|
||||
"第肺 拱矾辑瘤 臼栏哥, 促摹绊 框流",
|
||||
"捞扁 塞电 悼丰甫 困秦 窜脚栏肺",
|
||||
"利甸苞 付林 轿快扁档 茄促. 捞甸篮",
|
||||
"肋 窜访等 辟腊苞 塞, 碍仿茄 傍拜仿",
|
||||
"栏肺 傈厘 弥急滴俊辑 傍拜柳栏肺",
|
||||
"劝距茄促. ",],
|
||||
["啊厘 老馆利牢 傍拜屈 公荤肺, ",
|
||||
"利立傈俊 蝶弗 流立 傍拜栏肺 傈厘",
|
||||
"俊辑 劝距茄促. 焙流 漂己惑 辟仿阑",
|
||||
"皋牢栏肺 胶泡 器牢飘甫 捧磊窍登, ",
|
||||
"利立傈俊 蝶弗 积疙仿 / 规绢仿",
|
||||
"犬焊甫 困秦 眉仿阑 棵赴促. 肚茄",
|
||||
"傍拜狼 沥犬己阑 臭捞扁 困秦 刮酶",
|
||||
"俊档 器牢飘甫 捧磊且 鞘夸啊 乐促.",],
|
||||
["惑寸 荐霖狼 沥脚仿阑 捞侩窍绰",
|
||||
"吝/辟芭府 立傈屈 公荤肺, 阿 扁贱",
|
||||
"窍唱窍唱狼 臭篮 傍拜仿栏肺 傈厘俊辑",
|
||||
"劝距茄促. 焙流 漂己惑 辟仿阑 皋牢",
|
||||
"栏肺 胶湃 器牢飘甫 捧磊窍登, ",
|
||||
"吝/辟芭府 傍拜狼 沥犬己苞 疙吝伏阑",
|
||||
"困秦 刮酶阑 棵赴促. 肚茄 立傈 矫 ",
|
||||
"利 傍拜俊 蝶弗 积疙仿 / 规绢仿",
|
||||
"犬焊甫 困秦 眉仿俊档 器牢飘甫",
|
||||
"捧磊且 鞘夸啊 乐促. ",],
|
||||
["Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ⰳ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>þ<EFBFBD> [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD>",
|
||||
"<EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD>. <20><EFBFBD><EEB6B0> <20><><EFBFBD><EFBFBD><E2BFA1><EFBFBD><EFBFBD> <20><EFBFBD><D7B5><EFBFBD> ",
|
||||
"<EFBFBD>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ḧ <20><><EFBFBD><EFBFBD> <20>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20>Ѵ<EFBFBD>. <20>̵<EFBFBD><CCB5><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD> <20>ܷõ<DCB7> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD><D6BC>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"Ȱ<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. ",],
|
||||
["<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϲ<EFBFBD><CFB9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȱ<><C8B0><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>, ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD>",
|
||||
"Ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD> <20>ø<EFBFBD><C3B8><EFBFBD>. <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ø",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>.",],
|
||||
["<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD> <20>̿<EFBFBD><CCBF>ϴ<EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>/<2F>ٰŸ<D9B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD>",
|
||||
"<EFBFBD>ϳ<EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1>",
|
||||
"Ȱ<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>, ",
|
||||
"<EFBFBD><EFBFBD>/<2F>ٰŸ<D9B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ø<EFBFBD><C3B8> <20>ø<EFBFBD><C3B8><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> ",
|
||||
"<EFBFBD><EFBFBD> <20><><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD>",
|
||||
"Ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<>¿<EFBFBD><C2BF><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. ",],
|
||||
],
|
||||
[
|
||||
["磊按篮 绢栋茄 惑炔俊辑档 磊脚狼",
|
||||
"个阑 见扁绊 篮剐茄 绢狄狼 烙公甫",
|
||||
"荐青窍搁辑 傈厘狼 饶困甫 瘤盔窍绰",
|
||||
"磊甸捞促. 捞甸篮 酒林 狐福绊 脚加",
|
||||
"窍哥, 厚且 单 绝捞 苞皑窍绊 例力等",
|
||||
"青悼栏肺 利狼 鞭家俊 摹疙鸥甫 朝府",
|
||||
"登, 傈厘俊急 利柳阑 氢秦 公荐茄",
|
||||
"拳混阑 郴徽栏哥 磊脚狼 侩竿阑",
|
||||
"急焊牢促. "],
|
||||
["滴颊 窜八阑 林公扁肺 促风哥, 脚加",
|
||||
"窍霸 摹绊 狐瘤绰 磊按 漂蜡狼 框流烙",
|
||||
"栏肺 傈厘俊辑 劝距茄促. 焙流 漂己惑",
|
||||
"刮酶阑 皋牢栏肺 胶泡 器牢飘甫 捧磊",
|
||||
"窍登, 辟仿阑 棵妨 傍拜仿阑 臭牢促.",
|
||||
"肚茄 辟立傈俊 蝶弗 积疙仿/规绢仿 ",
|
||||
"惑铰阑 困秦 眉仿俊档 器牢飘甫",
|
||||
"捧磊且 鞘夸啊 乐促. ",],
|
||||
["劝阑 林公扁肺 促风哥, 变 矫具客",
|
||||
"荤沥芭府俊 蝶弗 盔芭府 傍拜栏肺",
|
||||
"傈厘俊辑 劝距茄促. 焙流 漂己惑",
|
||||
"傍拜 己傍伏狼 刘啊甫 困秦 刮酶阑",
|
||||
"皋牢栏肺 棵妨具 窍哥, 盔芭府",
|
||||
"傍拜狼 单固瘤 刘啊甫 困秦 辟仿阑",
|
||||
"棵副 鞘夸啊 乐促. 肚茄 利甸俊霸",
|
||||
"器困登菌阑 矫, 利 傍拜俊 滚萍扁",
|
||||
"困茄 积疙仿/规绢仿 惑铰阑 困秦",
|
||||
"眉仿俊档 器牢飘甫 捧磊且 鞘夸啊",
|
||||
"乐促. ", ],
|
||||
["<EFBFBD>ڰ<EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EEB6B0> <20><>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ӹ<EFBFBD><D3B9><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ鼭 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>",
|
||||
"<EFBFBD>ڵ<EFBFBD><EFBFBD>̴<EFBFBD>. <20>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ż<EFBFBD>",
|
||||
"<EFBFBD>ϸ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ൿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ҿ<DEBC> ġ<><C4A1>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>, <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>. "],
|
||||
["<EFBFBD>μ<EFBFBD> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD> <20>ٷ<EFBFBD><D9B7>, <20>ż<EFBFBD>",
|
||||
"<EFBFBD>ϰ<EFBFBD> ġ<><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڰ<EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1> Ȱ<><C8B0><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ϵ<EFBFBD>, <20>ٷ<EFBFBD><D9B7><EFBFBD> <20>÷<EFBFBD> <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<>¿<EFBFBD><C2BF><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. ",],
|
||||
["Ȱ<EFBFBD><EFBFBD> <20>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD> <20>ٷ<EFBFBD><D9B7>, <20><> <20>þ߿<C3BE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><EFBFBD> Ȱ<><C8B0><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ø<EFBFBD><C3B8>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20>ϸ<EFBFBD>, <20><><EFBFBD>Ÿ<EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD>",
|
||||
"<EFBFBD>ø<EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>鿡<EFBFBD><E9BFA1>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD> <20><>, <20><> <20><><EFBFBD>ݿ<EFBFBD> <20><>Ƽ<EFBFBD><C6BC>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"ü<EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡",
|
||||
"<EFBFBD>ִ<EFBFBD>. ", ],
|
||||
],
|
||||
[
|
||||
["荐扼绰 [刀篮 刀栏肺]狼 加己栏肺",
|
||||
"芒汲等 漂荐 加己狼 焙流捞促. ",
|
||||
"弊甸篮 傈厘俊辑 利甸狼 荤扁甫 历窍",
|
||||
"矫虐绊, 厩付狼 塞阑 角篮 付藕栏肺",
|
||||
"利狼 康去苞 腊脚阑 窿苟暗促. 锭肺",
|
||||
"捞甸篮 磊脚狼 八苞 癌渴俊 绢狄狼",
|
||||
"塞阑 角绢, 傈厘俊辑 公荤 给瘤 臼篮",
|
||||
"傍拜仿阑 惯戎窍扁档 窍绰单, 利甸阑",
|
||||
"磷咯措绰弊 葛嚼捞 况倡俊 阐嘛秦",
|
||||
"荤恩甸篮 荐扼甫 老拿绢 [付脚]捞扼",
|
||||
"何福扁甫 林历 旧绰促."],
|
||||
["券公焙狼 荐扼绰 厩付狼 揪俊辑",
|
||||
"掘绢瘤绰 付仿阑 公扁唱 规绢备俊",
|
||||
"角绢 公荤 给瘤 臼篮 傈捧仿栏肺",
|
||||
"傈厘俊辑 劝距茄促. 焙流 漂己惑",
|
||||
"瘤瓷捞 臭酒龙荐废 馒侩 厘厚俊",
|
||||
"角府绰 付仿狼 困仿捞 刘措登骨肺,",
|
||||
"瘤瓷苞 辟仿阑 皋牢栏肺 胶湃",
|
||||
"器牢飘甫 捧磊窍登, 立傈俊 蝶弗",
|
||||
"积疙仿/规绢仿 犬焊甫 困秦 眉仿阑",
|
||||
"棵赴促. 肚茄 傍拜狼 沥犬己苞",
|
||||
"雀乔甫 困秦辑 刮酶俊档 器牢飘甫",
|
||||
"捧磊且 鞘夸啊 乐促. ",],
|
||||
["孺付焙狼 荐扼甸篮 阿辆 绢狄狼",
|
||||
"林巩苞 厩付狼 付过栏肺 傈厘俊辑",
|
||||
"劝距茄促. 焙流 漂己惑 付过 傍拜捞",
|
||||
"林捞骨肺 瘤瓷阑 皋牢栏肺 胶泡",
|
||||
"器牢飘甫 捧磊窍登, 盔芭府 付过",
|
||||
"傍拜狼 沥犬己阑 困秦 刮酶阑 棵赴促.",
|
||||
"肚茄 器困 登菌阑矫, 利 傍拜俊 蝶弗",
|
||||
"积疙仿 / 规绢仿 犬焊甫 困秦 眉仿俊档",
|
||||
"器牢飘甫 捧磊且 鞘夸啊 乐促. ",],
|
||||
["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<5B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><> <20>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"â<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ư<><C6AF> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>. ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⸦ <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD>, <20>Ǹ<EFBFBD><C7B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20>˰<EFBFBD> <20><><EFBFBD>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD>, <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ <20>ϴµ<CFB4>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>þ<EFBFBD> [<5B><><EFBFBD><EFBFBD>]<5D>̶<EFBFBD>",
|
||||
"<EFBFBD>θ<EFBFBD><EFBFBD>⸦ <20><><EFBFBD><EFBFBD> <20>ɴ´<C9B4>."],
|
||||
["ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD><C7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⳪ <20><><EFBFBD><EEB1B8>",
|
||||
"<EFBFBD>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><EFBFBD> Ȱ<><C8B0><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>",
|
||||
"<EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ǹǷ<C7B9>,",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD> <20>ٷ<EFBFBD><D9B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD>",
|
||||
"ȸ<EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><>ø<EFBFBD><C3B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. ",],
|
||||
["<EFBFBD>渶<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD><C7B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1>",
|
||||
"Ȱ<EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> Ư<><C6AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>̹Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>, <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ø<EFBFBD><C3B8> <20>ø<EFBFBD><C3B8><EFBFBD>.",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<>¿<EFBFBD><C2BF><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. ",],
|
||||
],
|
||||
[
|
||||
["公寸篮 侩脚苞 磊楷, 滴 绊措狼",
|
||||
"塞阑 促逢 荐 乐绰 蜡老茄 流辆捞促.",
|
||||
"弊甸篮 饶规俊辑 酒焙阑 焊炼窍绊",
|
||||
"促模 悼丰狼 何惑阑 雀汗 矫虐哥",
|
||||
"冻绢柳 荤扁甫 惑铰矫挪促. 弊甸篮",
|
||||
"酒焙狼 荐搁苞 绒侥阑 规秦窍绰 磊甫 ",
|
||||
"例措 侩辑窍瘤 臼栏哥, 弊繁 磊甸",
|
||||
"俊霸绰 茄 痢 林历 绝捞 林巩阑",
|
||||
"磐飘妨 弊 厚疤窃阑 决洒 隆拌茄促.",],
|
||||
["玫锋焙狼 公寸甸篮 阿辆 何利贱苞",
|
||||
"焊炼林巩俊 瓷窍哥, 利狼 流 / 埃立",
|
||||
"傍拜栏肺何磐 酒焙阑 瘤挪促. 焙流",
|
||||
"漂己惑 付过 瓷仿捞 林捞骨肺 瘤瓷阑",
|
||||
"皋牢栏肺 胶泡 器牢飘甫 捧磊窍登,",
|
||||
"器困登菌阑 矫, 利 傍拜俊 蝶弗",
|
||||
"积疙仿 / 规绢仿 犬焊甫 困秦 眉仿阑",
|
||||
"棵赴促. 肚茄 盔芭府 付过 傍拜狼",
|
||||
"沥犬己阑 困俊 刮酶俊档 器牢飘甫",
|
||||
"捧磊且 鞘夸啊 乐促. ",],
|
||||
["堡汾焙狼 公寸甸篮 磊楷狼 塞阑",
|
||||
"呼妨 酒焙阑 雀汗窍绊, 锄脚狼 ",
|
||||
"塞栏肺 剐笼茄 利甸俊霸 奴 面拜阑",
|
||||
"涝鳃 荐 乐绰 捞甸捞促. 焙流狼",
|
||||
"漂己惑 付过 瓷仿捞 林捞骨肺 瘤瓷阑",
|
||||
"皋牢栏肺 胶泡 器牢飘甫 捧磊窍登,",
|
||||
"器困登菌阑矫, 利 傍拜俊 蝶弗",
|
||||
"积疙仿 / 规绢仿 犬焊甫 困秦 眉仿阑",
|
||||
"棵赴促. 肚茄 盔芭府 付过 傍拜狼",
|
||||
"沥犬己阑 困俊 刮酶俊档 器牢飘甫",
|
||||
"捧磊且 鞘夸啊 乐促. "],
|
||||
["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ű<EFBFBD> <20>ڿ<EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٷ<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ĺ濡<C4B9><E6BFA1> <20>Ʊ<EFBFBD><C6B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>ģ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>λ<EFBFBD><CEBB><EFBFBD> ȸ<><C8B8> <20><>Ű<EFBFBD><C5B0>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⸦ <20><>½<EFBFBD>Ų<EFBFBD><C5B2>. <20><EFBFBD><D7B5><EFBFBD>",
|
||||
"<EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ڸ<EFBFBD> ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뼭<EFBFBD><EBBCAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD> <20>ڵ<EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֹ<EFBFBD><D6B9><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ¡<><C2A1><EFBFBD>Ѵ<EFBFBD>.",],
|
||||
["õ<EFBFBD>決<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϸ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> / <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20>Ʊ<EFBFBD><C6B1><EFBFBD> <20><>Ų<EFBFBD><C5B2>. <20><><EFBFBD><EFBFBD>",
|
||||
"Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD> <20><><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>,",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD> <20><>, <20><> <20><><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>Ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ø<EFBFBD><C3B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. ",],
|
||||
["<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ʊ<EFBFBD><C6B1><EFBFBD> ȸ<><C8B8><EFBFBD>ϰ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>鿡<EFBFBD><E9BFA1> ū <20><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20>̵<EFBFBD><CCB5>̴<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD> <20><><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>,",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<EFBFBD><EFBFBD>Ȯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ø<EFBFBD><C3B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>",
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ䰡 <20>ִ<EFBFBD>. "],
|
||||
],
|
||||
]
|
||||
|
||||
|
@ -628,140 +628,148 @@ def GetLetterOpenImageName():
|
|||
def GetLetterCloseImageName():
|
||||
return "season1/icon/scroll_close.tga"
|
||||
|
||||
if app.ENABLE_QUEST_RENEWAL:
|
||||
def GetBlueLetterImageName():
|
||||
return "icon/item/scroll_close_blue.tga"
|
||||
def GetBlueLetterOpenImageName():
|
||||
return "icon/item/scroll_open_blue.tga"
|
||||
def GetBlueLetterCloseImageName():
|
||||
return "icon/item/scroll_close_blue.tga"
|
||||
|
||||
if 949 == app.GetDefaultCodePage():
|
||||
def EUL(name):
|
||||
if GetAuxiliaryWordType(name):
|
||||
return "甫 "
|
||||
return "<EFBFBD><EFBFBD> "
|
||||
else:
|
||||
return "阑 "
|
||||
return "<EFBFBD><EFBFBD> "
|
||||
|
||||
def I(name):
|
||||
if GetAuxiliaryWordType(name):
|
||||
return "啊 "
|
||||
return "<EFBFBD><EFBFBD> "
|
||||
else:
|
||||
return "捞 "
|
||||
return "<EFBFBD><EFBFBD> "
|
||||
|
||||
def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
|
||||
name = sellItemName
|
||||
if sellItemCount > 1:
|
||||
name += " "
|
||||
name += str(sellItemCount)
|
||||
name += "俺"
|
||||
name += "<EFBFBD><EFBFBD>"
|
||||
|
||||
return name + EUL(name) + str(sellItemPrice) + "成俊 颇矫摆嚼聪鳖?"
|
||||
return name + EUL(name) + str(sellItemPrice) + "<EFBFBD>ɿ<EFBFBD> <20>Ľðڽ<C3B0><DABD>ϱ<EFBFBD>?"
|
||||
|
||||
def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
|
||||
name = sellItemName
|
||||
if sellItemCount > 1:
|
||||
name += " "
|
||||
name += str(sellItemCount)
|
||||
name += "俺"
|
||||
name += "<EFBFBD><EFBFBD>"
|
||||
|
||||
return name + EUL(name) + str(sellItemPrice) + "俊 荤矫摆嚼聪鳖?"
|
||||
return name + EUL(name) + str(sellItemPrice) + "<EFBFBD><EFBFBD> <20><>ðڽ<C3B0><DABD>ϱ<EFBFBD>?"
|
||||
|
||||
def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
|
||||
return attachedItemName+EUL(attachedItemName)+"何馒且 荐 绝绰 酒捞袍涝聪促"
|
||||
return attachedItemName+EUL(attachedItemName)+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>"
|
||||
|
||||
def REFINE_FAILURE_NO_SOCKET(attachedItemName):
|
||||
return attachedItemName+EUL(attachedItemName)+"何馒且 荐 乐绰 家南捞 绝嚼聪促"
|
||||
return attachedItemName+EUL(attachedItemName)+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>"
|
||||
|
||||
def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
|
||||
return attachedItemName+EUL(attachedItemName)+"何馒且 荐 乐绰 炔陛 家南捞 绝嚼聪促"
|
||||
return attachedItemName+EUL(attachedItemName)+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> Ȳ<><C8B2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>"
|
||||
|
||||
def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
|
||||
name = dropItemName
|
||||
if dropItemCount > 1:
|
||||
name += " "
|
||||
name += str(dropItemCount)
|
||||
name += "俺"
|
||||
name += "<EFBFBD><EFBFBD>"
|
||||
|
||||
return name+EUL(name)+"滚府矫摆嚼聪鳖?"
|
||||
return name+EUL(name)+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ðڽ<EFBFBD><EFBFBD>ϱ<EFBFBD>?"
|
||||
|
||||
def NumberToMoneyString(number):
|
||||
if number <= 0:
|
||||
return "0成"
|
||||
return "0<EFBFBD><EFBFBD>"
|
||||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "父", result)
|
||||
result = CutMoneyString(number, 8, 12, "撅", result)
|
||||
result = result + "成"
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "<EFBFBD><EFBFBD>"
|
||||
|
||||
return result
|
||||
|
||||
def NumberToSecondaryCoinString(number):
|
||||
if number <= 0:
|
||||
return "0傈"
|
||||
return "0<EFBFBD><EFBFBD>"
|
||||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "父", result)
|
||||
result = CutMoneyString(number, 8, 12, "撅", result)
|
||||
result = result + "傈"
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "<EFBFBD><EFBFBD>"
|
||||
|
||||
return result
|
||||
|
||||
def FISHING_NOTIFY(isFish, fishName):
|
||||
if isFish:
|
||||
return fishName + I(fishName) + "巩 淀 钦聪促."
|
||||
return fishName + I(fishName) + "<EFBFBD><EFBFBD> <20><> <20>մϴ<D5B4>."
|
||||
else:
|
||||
return fishName + I(fishName) + "吧赴淀 钦聪促."
|
||||
return fishName + I(fishName) + "<EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD> <20>մϴ<D5B4>."
|
||||
|
||||
def FISHING_SUCCESS(isFish, fishName):
|
||||
if isFish:
|
||||
return fishName + EUL(fishName) + "棱疽嚼聪促!"
|
||||
return fishName + EUL(fishName) + "<EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>ϴ<EFBFBD>!"
|
||||
else:
|
||||
return fishName + EUL(fishName) + "掘菌嚼聪促!"
|
||||
return fishName + EUL(fishName) + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!"
|
||||
|
||||
elif 932 == app.GetDefaultCodePage():
|
||||
def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
|
||||
if sellItemCount > 1 :
|
||||
return "%s %s 屄傪 %s偵攧傝傑偡偐丠" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
|
||||
return "%s %s <EFBFBD><EFBFBD> %s<EFBFBD>ɔ<EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
|
||||
else:
|
||||
return "%s 傪 %s偱攧傝傑偡偐丠" % (sellItemName, NumberToMoneyString(sellItemPrice) )
|
||||
return "%s <EFBFBD><EFBFBD> %s<EFBFBD>Ŕ<EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % (sellItemName, NumberToMoneyString(sellItemPrice) )
|
||||
|
||||
def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
|
||||
if buyItemCount > 1 :
|
||||
return "%s %s屄傪 %s偱攦偄傑偡偐丠" % ( buyItemName, buyItemCount, buyItemPrice )
|
||||
return "%s %s<EFBFBD><EFBFBD> %s<EFBFBD>Ŕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % ( buyItemName, buyItemCount, buyItemPrice )
|
||||
else:
|
||||
return "%s傪 %s偱攦偄傑偡偐丠" % ( buyItemName, buyItemPrice )
|
||||
return "%s<EFBFBD><EFBFBD> %s<EFBFBD>Ŕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % ( buyItemName, buyItemPrice )
|
||||
|
||||
def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
|
||||
return "%s傪憰拝偱偒側偄傾僀僥?偱偡丅" % (attachedItemName)
|
||||
return "%s<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>A<EFBFBD>C<EFBFBD>e?<3F>ł<EFBFBD><C582>B" % (attachedItemName)
|
||||
|
||||
def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
|
||||
return "%s傪憰拝偡傞?働僢僩偑偁傝傑偣傫丅" % (attachedItemName)
|
||||
return "%s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>P<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>B" % (attachedItemName)
|
||||
|
||||
def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
|
||||
return "%s傪憰拝偱偒傞墿嬥?働僢僩偑偁傝傑偣傫丅" % (attachedItemName)
|
||||
return "%s<EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><EFBFBD>鉩<EFBFBD><EFBFBD>?<3F>P<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD>B" % (attachedItemName)
|
||||
|
||||
def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
|
||||
if dropItemCount > 1 :
|
||||
return "%s %d 屄傪幪偰傑偡偐丠" % (dropItemName, dropItemCount)
|
||||
return "%s %d <EFBFBD><EFBFBD><EFBFBD>̂Ă܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % (dropItemName, dropItemCount)
|
||||
else :
|
||||
return "%s傪幪偰傑偡偐丠" % (dropItemName)
|
||||
return "%s<EFBFBD><EFBFBD><EFBFBD>̂Ă܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H" % (dropItemName)
|
||||
|
||||
def FISHING_NOTIFY(isFish, fishName) :
|
||||
if isFish :
|
||||
return "%s 偑怘偄偮偄偨傛偆偱偡" % ( fishName )
|
||||
return "%s <EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>悤<EFBFBD>ł<EFBFBD>" % ( fishName )
|
||||
else :
|
||||
return "%s 偑偐偐偭偨傛偆偱偡" % ( fishName )
|
||||
return "%s <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>悤<EFBFBD>ł<EFBFBD>" % ( fishName )
|
||||
|
||||
def FISHING_SUCCESS(isFish, fishName) :
|
||||
if isFish :
|
||||
return "%s 傪曔傑偊傑偟偨両" % (fishName)
|
||||
return "%s <EFBFBD><EFBFBD>߂܂<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>I" % (fishName)
|
||||
else :
|
||||
return "%s 傪庤偵擖傟傑偟偨両" % (fishName)
|
||||
return "%s <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɓ<EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>I" % (fishName)
|
||||
|
||||
def NumberToMoneyString(number) :
|
||||
if number <= 0 :
|
||||
return "0椉"
|
||||
return "0<EFBFBD><EFBFBD>"
|
||||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "枩", result)
|
||||
result = CutMoneyString(number, 8, 12, "壄", result)
|
||||
result = result + "椉"
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "<EFBFBD><EFBFBD>"
|
||||
|
||||
return result
|
||||
def NumberToSecondaryCoinString(number) :
|
||||
|
@ -770,8 +778,8 @@ elif 932 == app.GetDefaultCodePage():
|
|||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "枩", result)
|
||||
result = CutMoneyString(number, 8, 12, "壄", result)
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "jun"
|
||||
|
||||
return result
|
||||
|
@ -842,53 +850,53 @@ elif IsHONGKONG():
|
|||
elif IsNEWCIBN() or IsCIBN10():
|
||||
def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
|
||||
if sellItemCount>1:
|
||||
return "确定要把%s个%s以%s金币卖掉吗?" % (str(sellItemCount), sellItemName, str(sellItemPrice))
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" % (str(sellItemCount), sellItemName, str(sellItemPrice))
|
||||
else:
|
||||
return "确定要把%s以%s金币卖掉吗?" % (sellItemName, str(sellItemPrice))
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" % (sellItemName, str(sellItemPrice))
|
||||
|
||||
def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
|
||||
if sellItemCount>1:
|
||||
return "确定要把%s个%s以%s金币买进吗?" % (str(sellItemCount), sellItemName, str(sellItemPrice))
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" % (str(sellItemCount), sellItemName, str(sellItemPrice))
|
||||
else:
|
||||
return "确定要把%s以%s金币买进吗?" % (sellItemName, str(sellItemPrice))
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" % (sellItemName, str(sellItemPrice))
|
||||
|
||||
def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
|
||||
return "无法镶嵌%s 的装备" % (attachedItemName)
|
||||
return "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ%s <20><>װ<EFBFBD><D7B0>" % (attachedItemName)
|
||||
|
||||
def REFINE_FAILURE_NO_SOCKET(attachedItemName):
|
||||
return "没有可以镶嵌%s 的孔" % (attachedItemName)
|
||||
return "û<EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ%s <20>Ŀ<EFBFBD>" % (attachedItemName)
|
||||
|
||||
def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
|
||||
return "没有可以镶嵌%s 的黄金孔" % (attachedItemName)
|
||||
return "û<EFBFBD>п<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ%s <20>Ļƽ<C4BB><C6BD>" % (attachedItemName)
|
||||
|
||||
def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
|
||||
if dropItemCount>1:
|
||||
return "确定要扔掉%d个%s吗?" % (dropItemCount, dropItemName)
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ӵ<EFBFBD>%d<EFBFBD><EFBFBD>%s<EFBFBD><EFBFBD>?" % (dropItemCount, dropItemName)
|
||||
else:
|
||||
return "确定要扔掉%s吗?" % (dropItemName)
|
||||
return "ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ӵ<EFBFBD>%s<EFBFBD><EFBFBD>?" % (dropItemName)
|
||||
|
||||
def FISHING_NOTIFY(isFish, fishName):
|
||||
if isFish:
|
||||
return fishName # 夯贰 咯扁俊 绢恫 富捞 嘿绢乐绰单, 牢内爹捞 柄廉乐绢辑 汗盔且 荐啊 绝促 ばば... cython俊辑 牢内爹 俊矾 唱辑 瘤况滚覆...
|
||||
return fishName # <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20>پ<EFBFBD><D9BE>ִµ<D6B4>, <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>־ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ф<EFBFBD>... cython<6F><6E><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||||
else:
|
||||
return "钓着" + fishName + "了。"
|
||||
return "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + fishName + "<EFBFBD>ˡ<EFBFBD>"
|
||||
|
||||
def FISHING_SUCCESS(isFish, fishName):
|
||||
if isFish:
|
||||
return "钓着" + fishName + "了。"
|
||||
return "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + fishName + "<EFBFBD>ˡ<EFBFBD>"
|
||||
else:
|
||||
return "获得" + fishName + "了。"
|
||||
return "<EFBFBD><EFBFBD><EFBFBD>" + fishName + "<EFBFBD>ˡ<EFBFBD>"
|
||||
|
||||
def NumberToMoneyString(number):
|
||||
|
||||
if number <= 0:
|
||||
return "0两"
|
||||
return "0<EFBFBD><EFBFBD>"
|
||||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "万", result)
|
||||
result = CutMoneyString(number, 8, 12, "亿", result)
|
||||
result = result + "两"
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "<EFBFBD><EFBFBD>"
|
||||
|
||||
return result
|
||||
|
||||
|
@ -899,8 +907,8 @@ elif IsNEWCIBN() or IsCIBN10():
|
|||
|
||||
number = str(number)
|
||||
result = CutMoneyString(number, 0, 4, "", "")
|
||||
result = CutMoneyString(number, 4, 8, "万", result)
|
||||
result = CutMoneyString(number, 8, 12, "亿", result)
|
||||
result = CutMoneyString(number, 4, 8, "<EFBFBD><EFBFBD>", result)
|
||||
result = CutMoneyString(number, 8, 12, "<EFBFBD><EFBFBD>", result)
|
||||
result = result + "JUN"
|
||||
|
||||
return result
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#define ENABLE_NEW_EQUIPMENT_SYSTEM
|
||||
#define __BL_CLIP_MASK__
|
||||
#define __BL_MOUSE_WHEEL_TOP_WINDOW__
|
||||
#define ENABLE_QUEST_RENEWAL // Quest Page Renewal by Owsap
|
||||
|
||||
bool LocaleService_IsYMIR();
|
||||
bool LocaleService_IsJAPAN();
|
||||
|
|
|
@ -1979,6 +1979,11 @@ typedef struct packet_quest_info
|
|||
BYTE flag;
|
||||
} TPacketGCQuestInfo;
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
BYTE type;
|
||||
bool is_confirmed;
|
||||
#endif
|
||||
|
||||
typedef struct packet_quest_confirm
|
||||
{
|
||||
BYTE header;
|
||||
|
|
|
@ -1188,6 +1188,56 @@ PyObject* appLogoClose(PyObject* poSelf, PyObject* poArgs)
|
|||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyObject* appGetTextLength(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
int iLength = 0;
|
||||
|
||||
char* szString;
|
||||
if (PyTuple_GetString(poArgs, 0, &szString))
|
||||
iLength = MultiByteToWideChar(GetDefaultCodePage(), 0, szString, -1, nullptr, 0);
|
||||
|
||||
return Py_BuildValue("i", iLength);
|
||||
}
|
||||
|
||||
PyObject* appGetTextWidth(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
char* szString;
|
||||
if (!PyTuple_GetString(poArgs, 0, &szString))
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
const DWORD dwDefaultCodePage = GetDefaultCodePage();
|
||||
int iLength = MultiByteToWideChar(dwDefaultCodePage, 0, szString, -1, nullptr, 0);
|
||||
|
||||
wchar_t* wText = (wchar_t*)_alloca(2 * iLength);
|
||||
|
||||
iLength = MultiByteToWideChar(dwDefaultCodePage, 0, szString, -1, wText, iLength);
|
||||
|
||||
CGraphicText* pkDefaultFont = static_cast<CGraphicText*>(DefaultFont_GetResource());
|
||||
if (!pkDefaultFont)
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
CGraphicFontTexture* pFont = pkDefaultFont->GetFontTexturePointer();
|
||||
if (!pFont)
|
||||
return Py_BuildValue("i", 0);
|
||||
|
||||
float fWidth = 0.0f;
|
||||
for (int i = 0; i < iLength; ++i)
|
||||
{
|
||||
if (!wText[i])
|
||||
continue;
|
||||
|
||||
CGraphicFontTexture::TCharacterInfomation* pCharacterInfomation = pFont->GetCharacterInfomation(dwDefaultCodePage, wText[i]);
|
||||
if (!pCharacterInfomation)
|
||||
continue;
|
||||
|
||||
fWidth += pCharacterInfomation->advance;
|
||||
}
|
||||
|
||||
return Py_BuildValue("i", (int)ceilf(fWidth));
|
||||
}
|
||||
#endif
|
||||
|
||||
void initapp()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
|
@ -1327,7 +1377,11 @@ void initapp()
|
|||
{ "OnLogoRender", appLogoRender, METH_VARARGS },
|
||||
{ "OnLogoOpen", appLogoOpen, METH_VARARGS },
|
||||
{ "OnLogoClose", appLogoClose, METH_VARARGS },
|
||||
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
{ "GetTextLength", appGetTextLength, METH_VARARGS },
|
||||
{ "GetTextWidth", appGetTextWidth, METH_VARARGS },
|
||||
#endif
|
||||
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
@ -1507,6 +1561,12 @@ void initapp()
|
|||
PyModule_AddIntConstant(poModule, "ENABLE_DRAGON_SOUL_SYSTEM", 0);
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyModule_AddIntConstant(poModule, "ENABLE_QUEST_RENEWAL", 1);
|
||||
#else
|
||||
PyModule_AddIntConstant(poModule, "ENABLE_QUEST_RENEWAL", 0);
|
||||
#endif
|
||||
|
||||
#if defined(__BL_CLIP_MASK__)
|
||||
PyModule_AddIntConstant(poModule, "__BL_CLIP_MASK__", true);
|
||||
#else
|
||||
|
@ -1519,6 +1579,12 @@ void initapp()
|
|||
PyModule_AddIntConstant(poModule, "__BL_MOUSE_WHEEL_TOP_WINDOW__", false);
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_CONQUEROR_LEVEL)
|
||||
PyModule_AddIntConstant(poModule, "ENABLE_CONQUEROR_LEVEL", 1);
|
||||
#else
|
||||
PyModule_AddIntConstant(poModule, "ENABLE_CONQUEROR_LEVEL", 0);
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
|
||||
PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 1);
|
||||
#else
|
||||
|
|
|
@ -145,7 +145,7 @@ int CPythonEventManager::RegisterEventSetFromString(const std::string& strScript
|
|||
if (!pEventSet)
|
||||
return -1;
|
||||
|
||||
// SCRIPT_PARSING_FAILURE_CLEAR_BUG 스크립트 파싱 실패시 __ClearEventSetp 에서 에러 발생
|
||||
// SCRIPT_PARSING_FAILURE_CLEAR_BUG <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ <20>Ľ<EFBFBD> <20><><EFBFBD>н<EFBFBD> __ClearEventSetp <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
pEventSet->pCurrentTextLine = NULL;
|
||||
// END_OF_SCRIPT_PARSING_FAILURE_CLEAR_BUG
|
||||
|
||||
|
@ -159,7 +159,7 @@ int CPythonEventManager::RegisterEventSetFromString(const std::string& strScript
|
|||
pEventSet->poEventHandler = NULL;
|
||||
__InitEventSet(*pEventSet);
|
||||
|
||||
// NOTE : 만약 단순한 스크립트 이벤트 실행 커맨드라면 다시 만든다.
|
||||
// NOTE : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܼ<EFBFBD><DCBC><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD><C7B5><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
script::TCmd ScriptCommand;
|
||||
int pEventPosition;
|
||||
int iEventType;
|
||||
|
@ -468,7 +468,7 @@ void CPythonEventManager::ProcessEventSet(TEventSet * pEventSet)
|
|||
|
||||
case EVENT_TYPE_WAIT:
|
||||
{
|
||||
//캐틱터 만들기 제국 설명등에서 설명 밑으로 쳐지는 버그 수정/EVENT_TYPE_WAIT 관련해서 테스트 필요.
|
||||
//ijƽ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBFA1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/EVENT_TYPE_WAIT <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><EFBFBD>Ʈ <20>ʿ<EFBFBD>.
|
||||
pEventSet->iyLocal = 0;
|
||||
pEventSet->isLock = true;
|
||||
break;
|
||||
|
@ -567,6 +567,7 @@ void CPythonEventManager::ProcessEventSet(TEventSet * pEventSet)
|
|||
break;
|
||||
}
|
||||
|
||||
#if !defined(ENABLE_QUEST_RENEWAL)
|
||||
// HIDE_QUEST_LETTER
|
||||
case EVENT_TYPE_QUEST_BUTTON_CLOSE:
|
||||
{
|
||||
|
@ -575,7 +576,8 @@ void CPythonEventManager::ProcessEventSet(TEventSet * pEventSet)
|
|||
break;
|
||||
}
|
||||
// END_OF_HIDE_QUEST_LETTER
|
||||
|
||||
#endif
|
||||
|
||||
case EVENT_TYPE_QUEST_BUTTON:
|
||||
{
|
||||
const std::string& c_rstType = GetArgumentString("icon_type", ScriptCommand.argList);
|
||||
|
@ -584,8 +586,8 @@ void CPythonEventManager::ProcessEventSet(TEventSet * pEventSet)
|
|||
int idx = atoi(GetArgument("idx", ScriptCommand.argList));
|
||||
const char * name = GetArgument("name", ScriptCommand.argList);
|
||||
|
||||
// 퀘스트 UI 리뉴얼이 되면 해결 되므로 일단 용혼석만 땜빵 by chrislee
|
||||
if (!strcmp(name, "조각난 용혼석?....")) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD> <20>ذ<EFBFBD> <20>ǹǷ<C7B9> <20>ϴ<EFBFBD> <20><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> by chrislee
|
||||
if (!strcmp(name, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȥ<EFBFBD><C8A5>?....")) {
|
||||
PyCallClassMemberFunc(m_poInterface, "BINARY_RecvQuest", Py_BuildValue("(isss)", idx, name, "highlight", ""));
|
||||
}
|
||||
else {
|
||||
|
@ -1146,7 +1148,7 @@ void CPythonEventManager::SetLeftTimeString(const char * c_szString)
|
|||
}
|
||||
|
||||
CPythonEventManager::CPythonEventManager()
|
||||
: m_poInterface(0), m_strLeftTimeString("남은 시간 : %d초")
|
||||
: m_poInterface(0), m_strLeftTimeString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> : %d<><64>")
|
||||
{
|
||||
EventTypeMap["LETTER"]=EVENT_TYPE_LETTER;
|
||||
EventTypeMap["COLOR"]=EVENT_TYPE_COLOR;
|
||||
|
|
|
@ -212,7 +212,7 @@ void CPythonNetworkStream::GamePhase()
|
|||
while (ret)
|
||||
{
|
||||
if(dwRecvCount++ >= MAX_RECV_COUNT-1 && GetRecvBufferSize() < SAFE_RECV_BUFSIZE
|
||||
&& m_strPhase == "Game") //phase_game 이 아니어도 여기로 들어오는 경우가 있다.
|
||||
&& m_strPhase == "Game") //phase_game <EFBFBD><EFBFBD> <20>ƴϾ <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>찡 <20>ִ<EFBFBD>.
|
||||
break;
|
||||
|
||||
if (!CheckPacket(&header))
|
||||
|
@ -239,7 +239,7 @@ void CPythonNetworkStream::GamePhase()
|
|||
|
||||
case HEADER_GC_PHASE:
|
||||
ret = RecvPhasePacket();
|
||||
return; // 도중에 Phase 가 바뀌면 일단 무조건 GamePhase 탈출 - [levites]
|
||||
return; // <EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> Phase <20><> <20>ٲ<EFBFBD><D9B2> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GamePhase Ż<><C5BB> - [levites]
|
||||
break;
|
||||
|
||||
case HEADER_GC_PVP:
|
||||
|
@ -807,9 +807,9 @@ void CPythonNetworkStream::Warp(LONG lGlobalX, LONG lGlobalY)
|
|||
//rkBgMgr.SetShadowLevel(CPythonBackground::SHADOW_ALL);
|
||||
rkBgMgr.RefreshShadowLevel();
|
||||
|
||||
// NOTE : Warp 했을때 CenterPosition의 Height가 0이기 때문에 카메라가 땅바닥에 박혀있게 됨
|
||||
// 움직일때마다 Height가 갱신 되기 때문이므로 맵을 이동하면 Position을 강제로 한번
|
||||
// 셋팅해준다 - [levites]
|
||||
// NOTE : Warp <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CenterPosition<6F><6E> Height<68><74> 0<>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ī<><EFBFBD> <20><><EFBFBD>ٴڿ<D9B4> <20><><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD> <20><>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Height<68><74> <20><><EFBFBD><EFBFBD> <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD><CCB5>ϸ<EFBFBD> Position<6F><6E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѹ<EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD> - [levites]
|
||||
LONG lLocalX = lGlobalX;
|
||||
LONG lLocalY = lGlobalY;
|
||||
__GlobalPositionToLocalPosition(lLocalX, lLocalY);
|
||||
|
@ -857,7 +857,7 @@ void CPythonNetworkStream::SetGamePhase()
|
|||
m_phaseProcessFunc.Set(this, &CPythonNetworkStream::GamePhase);
|
||||
m_phaseLeaveFunc.Set(this, &CPythonNetworkStream::__LeaveGamePhase);
|
||||
|
||||
// Main Character 등록O
|
||||
// Main Character <EFBFBD><EFBFBD><EFBFBD>O
|
||||
|
||||
IAbstractPlayer & rkPlayer = IAbstractPlayer::GetSingleton();
|
||||
rkPlayer.SetMainCharacterIndex(GetMainActorVID());
|
||||
|
@ -972,11 +972,11 @@ bool CPythonNetworkStream::RecvPVPPacket()
|
|||
case PVP_MODE_AGREE:
|
||||
rkChrMgr.RemovePVPKey(kPVPPacket.dwVIDSrc, kPVPPacket.dwVIDDst);
|
||||
|
||||
// 상대가 나(Dst)에게 동의를 구했을때
|
||||
// <EFBFBD><EFBFBD>밡 <20><>(Dst)<29><><EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (rkPlayer.IsMainCharacterIndex(kPVPPacket.dwVIDDst))
|
||||
rkPlayer.RememberChallengeInstance(kPVPPacket.dwVIDSrc);
|
||||
|
||||
// 상대에게 동의를 구한 동안에는 대결 불능
|
||||
// <EFBFBD><EFBFBD>뿡<EFBFBD><EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> <20><><EFBFBD> <20>Ҵ<EFBFBD>
|
||||
if (rkPlayer.IsMainCharacterIndex(kPVPPacket.dwVIDSrc))
|
||||
rkPlayer.RememberCantFightInstance(kPVPPacket.dwVIDDst);
|
||||
break;
|
||||
|
@ -987,11 +987,11 @@ bool CPythonNetworkStream::RecvPVPPacket()
|
|||
DWORD dwKiller = kPVPPacket.dwVIDSrc;
|
||||
DWORD dwVictim = kPVPPacket.dwVIDDst;
|
||||
|
||||
// 내(victim)가 상대에게 복수할 수 있을때
|
||||
// <EFBFBD><EFBFBD>(victim)<29><> <20><>뿡<EFBFBD><EBBFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (rkPlayer.IsMainCharacterIndex(dwVictim))
|
||||
rkPlayer.RememberRevengeInstance(dwKiller);
|
||||
|
||||
// 상대(victim)가 나에게 복수하는 동안에는 대결 불능
|
||||
// <EFBFBD><EFBFBD><EFBFBD>(victim)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> <20><><EFBFBD> <20>Ҵ<EFBFBD>
|
||||
if (rkPlayer.IsMainCharacterIndex(dwKiller))
|
||||
rkPlayer.RememberCantFightInstance(dwVictim);
|
||||
break;
|
||||
|
@ -1009,7 +1009,7 @@ bool CPythonNetworkStream::RecvPVPPacket()
|
|||
break;
|
||||
}
|
||||
|
||||
// NOTE : PVP 토글시 TargetBoard 를 업데이트 합니다.
|
||||
// NOTE : PVP <EFBFBD><EFBFBD>۽<EFBFBD> TargetBoard <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>մϴ<D5B4>.
|
||||
__RefreshTargetBoardByVID(kPVPPacket.dwVIDSrc);
|
||||
__RefreshTargetBoardByVID(kPVPPacket.dwVIDDst);
|
||||
|
||||
|
@ -1072,7 +1072,7 @@ bool CPythonNetworkStream::SendMessengerAddByNamePacket(const char * c_szName)
|
|||
return false;
|
||||
char szName[CHARACTER_NAME_MAX_LEN];
|
||||
strncpy(szName, c_szName, CHARACTER_NAME_MAX_LEN-1);
|
||||
szName[CHARACTER_NAME_MAX_LEN-1] = '\0'; // #720: 메신저 이름 관련 버퍼 오버플로우 버그 수정
|
||||
szName[CHARACTER_NAME_MAX_LEN-1] = '\0'; // #720: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷ο<C3B7> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
if (!Send(sizeof(szName), &szName))
|
||||
return false;
|
||||
|
@ -1106,7 +1106,7 @@ bool CPythonNetworkStream::SendCharacterStatePacket(const TPixelPosition& c_rkPP
|
|||
else if (fDstRot > 360.0f)
|
||||
fDstRot = fmodf(fDstRot, 360.0f);
|
||||
|
||||
// TODO: 나중에 패킷이름을 바꾸자
|
||||
// TODO: <EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><>Ŷ<EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD>
|
||||
TPacketCGMove kStatePacket;
|
||||
kStatePacket.bHeader = HEADER_CG_CHARACTER_MOVE;
|
||||
kStatePacket.bFunc = eFunc;
|
||||
|
@ -1135,7 +1135,7 @@ bool CPythonNetworkStream::SendCharacterStatePacket(const TPixelPosition& c_rkPP
|
|||
return SendSequence();
|
||||
}
|
||||
|
||||
// NOTE : SlotIndex는 임시
|
||||
// NOTE : SlotIndex<EFBFBD><EFBFBD> <20>ӽ<EFBFBD>
|
||||
bool CPythonNetworkStream::SendUseSkillPacket(DWORD dwSkillIndex, DWORD dwTargetVID)
|
||||
{
|
||||
TPacketCGUseSkill UseSkillPacket;
|
||||
|
@ -1277,9 +1277,9 @@ bool CPythonNetworkStream::RecvChatPacket()
|
|||
|
||||
buf[uChatSize]='\0';
|
||||
|
||||
// 유럽 아랍 버전 처리
|
||||
// "이름: 내용" 입력을 "내용: 이름" 순서로 출력하기 위해 탭(0x08)을 넣음
|
||||
// 탭을 아랍어 기호로 처리해 (영어1) : (영어2) 로 입력되어도 (영어2) : (영어1) 로 출력하게 만든다
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƶ<EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
|
||||
// "<EFBFBD≯<EFBFBD>: <20><><EFBFBD><EFBFBD>" <20>Է<EFBFBD><D4B7><EFBFBD> "<22><><EFBFBD><EFBFBD>: <20≯<EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(0x08)<29><> <20><><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><>ȣ<EFBFBD><C8A3> ó<><C3B3><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>1) : (<28><><EFBFBD><EFBFBD>2) <20><> <20>ԷµǾ (<28><><EFBFBD><EFBFBD>2) : (<28><><EFBFBD><EFBFBD>1) <20><> <20><><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (LocaleService_IsEUROPE() && GetDefaultCodePage() == 1256)
|
||||
{
|
||||
char * p = strchr(buf, ':');
|
||||
|
@ -1305,11 +1305,11 @@ bool CPythonNetworkStream::RecvChatPacket()
|
|||
|
||||
switch (kChat.type)
|
||||
{
|
||||
case CHAT_TYPE_TALKING: /* 그냥 채팅 */
|
||||
case CHAT_TYPE_PARTY: /* 파티말 */
|
||||
case CHAT_TYPE_GUILD: /* 길드말 */
|
||||
case CHAT_TYPE_SHOUT: /* 외치기 */
|
||||
case CHAT_TYPE_WHISPER: // 서버와는 연동되지 않는 Only Client Enum
|
||||
case CHAT_TYPE_TALKING: /* <EFBFBD>׳<EFBFBD> ä<><C3A4> */
|
||||
case CHAT_TYPE_PARTY: /* <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> */
|
||||
case CHAT_TYPE_GUILD: /* <EFBFBD><EFBFBD>帻 */
|
||||
case CHAT_TYPE_SHOUT: /* <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> */
|
||||
case CHAT_TYPE_WHISPER: // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Only Client Enum
|
||||
{
|
||||
char * p = strchr(buf, ':');
|
||||
|
||||
|
@ -1347,9 +1347,9 @@ bool CPythonNetworkStream::RecvChatPacket()
|
|||
}
|
||||
}
|
||||
break;
|
||||
case CHAT_TYPE_COMMAND: /* 명령 */
|
||||
case CHAT_TYPE_INFO: /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
|
||||
case CHAT_TYPE_NOTICE: /* 공지사항 */
|
||||
case CHAT_TYPE_COMMAND: /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
case CHAT_TYPE_INFO: /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><>) */
|
||||
case CHAT_TYPE_NOTICE: /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
case CHAT_TYPE_BIG_NOTICE:
|
||||
case CHAT_TYPE_MAX_NUM:
|
||||
default:
|
||||
|
@ -1461,7 +1461,7 @@ bool CPythonNetworkStream::RecvPointChange()
|
|||
|
||||
CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetMainInstancePtr();
|
||||
|
||||
// 자신의 Point가 변경되었을 경우..
|
||||
// <EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD> Point<6E><74> <20><><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><><EFBFBD>..
|
||||
if (pInstance)
|
||||
if (PointChange.dwVID == pInstance->GetVirtualID())
|
||||
{
|
||||
|
@ -1558,7 +1558,7 @@ bool CPythonNetworkStream::RecvDeadPacket()
|
|||
CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();
|
||||
if (pkInstMain==pkChrInstSel)
|
||||
{
|
||||
Tracenf("주인공 사망");
|
||||
Tracenf("<EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD>");
|
||||
if (false == pkInstMain->GetDuelMode())
|
||||
{
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OnGameOver", Py_BuildValue("()"));
|
||||
|
@ -1953,12 +1953,19 @@ bool CPythonNetworkStream::RecvQuestInfoPacket()
|
|||
if (QUEST_PACKET_TYPE_END == byQuestPacketType)
|
||||
{
|
||||
rkQuest.DeleteQuestInstance(QuestInfo.index);
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "DeleteQuest", Py_BuildValue("(ii)", QuestInfo.type, QuestInfo.index));
|
||||
#endif
|
||||
}
|
||||
else if (QUEST_PACKET_TYPE_UPDATE == byQuestPacketType)
|
||||
{
|
||||
if (!rkQuest.IsQuest(QuestInfo.index))
|
||||
{
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
rkQuest.MakeQuest(QuestInfo.index, QuestInfo.type, QuestInfo.is_confirmed);
|
||||
#else
|
||||
rkQuest.MakeQuest(QuestInfo.index);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (strlen(szTitle) > 0)
|
||||
|
@ -1974,6 +1981,9 @@ bool CPythonNetworkStream::RecvQuestInfoPacket()
|
|||
rkQuest.SetQuestClockValue(QuestInfo.index, iClockValue);
|
||||
if (c_rFlag & QUEST_SEND_COUNTER_VALUE)
|
||||
rkQuest.SetQuestCounterValue(QuestInfo.index, iCounterValue);
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
rkQuest.SetQuestIsConfirmed(QuestInfo.index, QuestInfo.is_confirmed);
|
||||
#endif
|
||||
}
|
||||
else if (QUEST_PACKET_TYPE_BEGIN == byQuestPacketType)
|
||||
{
|
||||
|
@ -1989,7 +1999,12 @@ bool CPythonNetworkStream::RecvQuestInfoPacket()
|
|||
}
|
||||
// Process Start End
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "RefreshQuest", Py_BuildValue("(ii)", QuestInfo.type, QuestInfo.index));
|
||||
#else
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "RefreshQuest", Py_BuildValue("()"));
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2149,7 +2164,7 @@ bool CPythonNetworkStream::SendExchangeExitPacket()
|
|||
return SendSequence();
|
||||
}
|
||||
|
||||
// PointReset 개임시
|
||||
// PointReset <EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD>
|
||||
bool CPythonNetworkStream::SendPointResetPacket()
|
||||
{
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "StartPointReset", Py_BuildValue("()"));
|
||||
|
@ -2303,7 +2318,7 @@ bool CPythonNetworkStream::RecvSkillCoolTimeEnd()
|
|||
|
||||
bool CPythonNetworkStream::RecvSkillLevel()
|
||||
{
|
||||
assert(!"CPythonNetworkStream::RecvSkillLevel - 사용하지 않는 함수");
|
||||
assert(!"CPythonNetworkStream::RecvSkillLevel - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>Լ<EFBFBD>");
|
||||
TPacketGCSkillLevel packet;
|
||||
if (!Recv(sizeof(TPacketGCSkillLevel), &packet))
|
||||
{
|
||||
|
@ -2529,7 +2544,7 @@ bool CPythonNetworkStream::RecvAddFlyTargetingPacket()
|
|||
|
||||
__GlobalPositionToLocalPosition(kPacket.lX, kPacket.lY);
|
||||
|
||||
Tracef("VID [%d]가 타겟을 추가 설정\n",kPacket.dwShooterVID);
|
||||
Tracef("VID [%d]<EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>\n",kPacket.dwShooterVID);
|
||||
|
||||
CPythonCharacterManager & rpcm = CPythonCharacterManager::Instance();
|
||||
|
||||
|
@ -2927,7 +2942,7 @@ bool CPythonNetworkStream::RecvPartyUpdate()
|
|||
|
||||
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "UpdatePartyMemberInfo", Py_BuildValue("(i)", kPartyUpdatePacket.pid));
|
||||
|
||||
// 만약 리더가 바뀌었다면, TargetBoard 의 버튼을 업데이트 한다.
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD>ٸ<EFBFBD>, TargetBoard <20><> <20><>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Ѵ<EFBFBD>.
|
||||
DWORD dwVID;
|
||||
if (CPythonPlayer::Instance().PartyMemberPIDToVID(kPartyUpdatePacket.pid, &dwVID))
|
||||
if (byOldState != kPartyUpdatePacket.state)
|
||||
|
@ -3291,7 +3306,7 @@ bool CPythonNetworkStream::RecvGuild()
|
|||
if (!Recv(sizeof(dwPID), &dwPID))
|
||||
return false;
|
||||
|
||||
// Main Player 일 경우 DeleteGuild
|
||||
// Main Player <EFBFBD><EFBFBD> <20><><EFBFBD> DeleteGuild
|
||||
if (CPythonGuild::Instance().IsMainPlayer(dwPID))
|
||||
{
|
||||
CPythonGuild::Instance().Destroy();
|
||||
|
@ -4110,7 +4125,7 @@ bool CPythonNetworkStream::SendClientVersionPacket()
|
|||
TPacketCGClientVersion2 kVersionPacket;
|
||||
kVersionPacket.header = HEADER_CG_CLIENT_VERSION2;
|
||||
strncpy(kVersionPacket.filename, filename.c_str(), sizeof(kVersionPacket.filename)-1);
|
||||
strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp)-1); // # python time.time 앞자리
|
||||
strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp)-1); // # python time.time <EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>
|
||||
//strncpy(kVersionPacket.timestamp, __TIMESTAMP__, sizeof(kVersionPacket.timestamp)-1); // old_string_ver
|
||||
//strncpy(kVersionPacket.timestamp, "1218055205", sizeof(kVersionPacket.timestamp)-1); // new_future
|
||||
//strncpy(kVersionPacket.timestamp, "1214055205", sizeof(kVersionPacket.timestamp)-1); // old_past
|
||||
|
@ -4251,7 +4266,7 @@ bool CPythonNetworkStream::RecvTargetCreatePacket()
|
|||
|
||||
//#ifdef _DEBUG
|
||||
// char szBuf[256+1];
|
||||
// _snprintf(szBuf, sizeof(szBuf), "타겟이 생성 되었습니다 [%d:%s]", kTargetCreate.lID, kTargetCreate.szTargetName);
|
||||
// _snprintf(szBuf, sizeof(szBuf), "Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD> [%d:%s]", kTargetCreate.lID, kTargetCreate.szTargetName);
|
||||
// CPythonChat::Instance().AppendChat(CHAT_TYPE_NOTICE, szBuf);
|
||||
// Tracef(" >> RecvTargetCreatePacket %d : %s\n", kTargetCreate.lID, kTargetCreate.szTargetName);
|
||||
//#endif
|
||||
|
@ -4280,7 +4295,7 @@ bool CPythonNetworkStream::RecvTargetCreatePacketNew()
|
|||
|
||||
//#ifdef _DEBUG
|
||||
// char szBuf[256+1];
|
||||
// _snprintf(szBuf, sizeof(szBuf), "캐릭터 타겟이 생성 되었습니다 [%d:%s:%d]", kTargetCreate.lID, kTargetCreate.szTargetName, kTargetCreate.dwVID);
|
||||
// _snprintf(szBuf, sizeof(szBuf), "ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD> [%d:%s:%d]", kTargetCreate.lID, kTargetCreate.szTargetName, kTargetCreate.dwVID);
|
||||
// CPythonChat::Instance().AppendChat(CHAT_TYPE_NOTICE, szBuf);
|
||||
// Tracef(" >> RecvTargetCreatePacketNew %d : %d/%d\n", kTargetCreate.lID, kTargetCreate.byType, kTargetCreate.dwVID);
|
||||
//#endif
|
||||
|
@ -4303,7 +4318,7 @@ bool CPythonNetworkStream::RecvTargetUpdatePacket()
|
|||
|
||||
//#ifdef _DEBUG
|
||||
// char szBuf[256+1];
|
||||
// _snprintf(szBuf, sizeof(szBuf), "타겟의 위치가 갱신 되었습니다 [%d:%d/%d]", kTargetUpdate.lID, kTargetUpdate.lX, kTargetUpdate.lY);
|
||||
// _snprintf(szBuf, sizeof(szBuf), "Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD> [%d:%d/%d]", kTargetUpdate.lID, kTargetUpdate.lX, kTargetUpdate.lY);
|
||||
// CPythonChat::Instance().AppendChat(CHAT_TYPE_NOTICE, szBuf);
|
||||
// Tracef(" >> RecvTargetUpdatePacket %d : %d, %d\n", kTargetUpdate.lID, kTargetUpdate.lX, kTargetUpdate.lY);
|
||||
//#endif
|
||||
|
@ -4382,7 +4397,7 @@ bool CPythonNetworkStream::RecvDigMotionPacket()
|
|||
}
|
||||
|
||||
|
||||
// 용혼석 강화
|
||||
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><>ȭ
|
||||
bool CPythonNetworkStream::SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos)
|
||||
{
|
||||
TPacketCGDragonSoulRefine pk;
|
||||
|
|
|
@ -37,7 +37,12 @@ bool CPythonQuest::IsQuest(DWORD dwIndex)
|
|||
return itor != m_QuestInstanceContainer.end();
|
||||
}
|
||||
|
||||
void CPythonQuest::MakeQuest(DWORD dwIndex)
|
||||
void CPythonQuest::MakeQuest(DWORD dwIndex
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
, BYTE bType
|
||||
, bool bIsConfirmed
|
||||
#endif
|
||||
)
|
||||
{
|
||||
DeleteQuestInstance(dwIndex);
|
||||
m_QuestInstanceContainer.push_back(SQuestInstance());
|
||||
|
@ -47,6 +52,10 @@ void CPythonQuest::MakeQuest(DWORD dwIndex)
|
|||
SQuestInstance & rQuestInstance = *m_QuestInstanceContainer.rbegin();
|
||||
rQuestInstance.dwIndex = dwIndex;
|
||||
rQuestInstance.iStartTime = int(CTimer::Instance().GetCurrentSecond());
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
rQuestInstance.bType = bType;
|
||||
rQuestInstance.bIsConfirmed = bIsConfirmed;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CPythonQuest::SetQuestTitle(DWORD dwIndex, const char * c_szTitle)
|
||||
|
@ -104,12 +113,51 @@ void CPythonQuest::SetQuestIconFileName(DWORD dwIndex, const char * c_szIconFile
|
|||
pQuestInstance->strIconFileName = c_szIconFileName;
|
||||
}
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
void CPythonQuest::SetQuestIsConfirmed(DWORD dwIndex, bool bIsConfirmed)
|
||||
{
|
||||
SQuestInstance* pQuestInstance;
|
||||
if (!__GetQuestInstancePtr(dwIndex, &pQuestInstance))
|
||||
return;
|
||||
|
||||
pQuestInstance->bIsConfirmed = bIsConfirmed;
|
||||
}
|
||||
#endif
|
||||
|
||||
int CPythonQuest::GetQuestCount()
|
||||
{
|
||||
return m_QuestInstanceContainer.size();
|
||||
}
|
||||
|
||||
bool CPythonQuest::GetQuestInstancePtr(DWORD dwArrayIndex, SQuestInstance ** ppQuestInstance)
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
int CPythonQuest::GetQuestButtonNoticeCount(BYTE bQuestType)
|
||||
{
|
||||
int count = 0;
|
||||
for (TQuestInstanceContainer::iterator::value_type& it : m_QuestInstanceContainer)
|
||||
{
|
||||
if (bQuestType == QUEST_TYPE_MAX)
|
||||
count += 1;
|
||||
else
|
||||
if (it.bType == bQuestType)
|
||||
count += 1;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
bool CPythonQuest::GetQuestInstancePtr(DWORD dwQuestIndex, SQuestInstance** ppQuestInstance)
|
||||
{
|
||||
TQuestInstanceContainer::iterator itor = std::find_if(m_QuestInstanceContainer.begin(), m_QuestInstanceContainer.end(), FQuestInstanceCompare(dwQuestIndex));
|
||||
if (itor == m_QuestInstanceContainer.end())
|
||||
return false;
|
||||
|
||||
const DWORD dwVectorIndex = std::distance(m_QuestInstanceContainer.begin(), itor);
|
||||
*ppQuestInstance = &m_QuestInstanceContainer[dwVectorIndex];
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
bool CPythonQuest::GetQuestInstancePtr(DWORD dwArrayIndex, SQuestInstance** ppQuestInstance)
|
||||
{
|
||||
if (dwArrayIndex >= m_QuestInstanceContainer.size())
|
||||
return false;
|
||||
|
@ -118,6 +166,7 @@ bool CPythonQuest::GetQuestInstancePtr(DWORD dwArrayIndex, SQuestInstance ** ppQ
|
|||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CPythonQuest::__GetQuestInstancePtr(DWORD dwQuestIndex, SQuestInstance ** ppQuestInstance)
|
||||
{
|
||||
|
@ -140,8 +189,8 @@ void CPythonQuest::__Initialize()
|
|||
test.dwIndex = i;
|
||||
test.strIconFileName = "";
|
||||
test.strTitle = _getf("test%d", i);
|
||||
test.strClockName = "남은 시간";
|
||||
test.strCounterName = "남은 마리수";
|
||||
test.strClockName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>";
|
||||
test.strCounterName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
test.iClockValue = 1000;
|
||||
test.iCounterValue = 1000;
|
||||
test.iStartTime = 0;
|
||||
|
@ -196,16 +245,27 @@ PyObject * questGetQuestData(PyObject * poSelf, PyObject * poArgs)
|
|||
else
|
||||
{
|
||||
{
|
||||
// 비어있을 경우 디폴트 이미지를 넣는다.
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>.
|
||||
std::string strIconFileName = "season1/icon/scroll_open.tga";
|
||||
pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(strIconFileName.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
return Py_BuildValue("sisi", pQuestInstance->strTitle.c_str(),
|
||||
pImage,
|
||||
pQuestInstance->strCounterName.c_str(),
|
||||
pQuestInstance->iCounterValue);
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
return Py_BuildValue("ibsisi",
|
||||
pQuestInstance->bType,
|
||||
pQuestInstance->bIsConfirmed,
|
||||
pQuestInstance->strTitle.c_str(),
|
||||
pImage,
|
||||
pQuestInstance->strCounterName.c_str(),
|
||||
pQuestInstance->iCounterValue);
|
||||
#else
|
||||
return Py_BuildValue("sisi",
|
||||
pQuestInstance->strTitle.c_str(),
|
||||
pImage,
|
||||
pQuestInstance->strCounterName.c_str(),
|
||||
pQuestInstance->iCounterValue);
|
||||
#endif
|
||||
}
|
||||
|
||||
PyObject * questGetQuestIndex(PyObject * poSelf, PyObject * poArgs)
|
||||
|
@ -238,7 +298,7 @@ PyObject * questGetQuestLastTime(PyObject * poSelf, PyObject * poArgs)
|
|||
iLastTime = (pQuestInstance->iStartTime + pQuestInstance->iClockValue) - int(CTimer::Instance().GetCurrentSecond());
|
||||
}
|
||||
|
||||
// 시간 증가 처리 코드
|
||||
// <EFBFBD>ð<EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3> <20>ڵ<EFBFBD>
|
||||
// else
|
||||
// {
|
||||
// iLastTime = int(CTimer::Instance().GetCurrentSecond()) - pQuestInstance->iStartTime;
|
||||
|
@ -253,6 +313,18 @@ PyObject * questClear(PyObject * poSelf, PyObject * poArgs)
|
|||
return Py_BuildNone();
|
||||
}
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyObject* questGetQuestCounterData(PyObject* poSelf, PyObject* poArgs) { return Py_BuildNone(); }
|
||||
PyObject* questGetQuestButtonNoticeCount(PyObject* poSelf, PyObject* poArgs)
|
||||
{
|
||||
BYTE bType;
|
||||
if (!PyTuple_GetInteger(poArgs, 0, &bType))
|
||||
return Py_BadArgument();
|
||||
|
||||
return Py_BuildValue("i", CPythonQuest::Instance().GetQuestButtonNoticeCount(bType));
|
||||
}
|
||||
#endif
|
||||
|
||||
void initquest()
|
||||
{
|
||||
static PyMethodDef s_methods[] =
|
||||
|
@ -262,9 +334,29 @@ void initquest()
|
|||
{ "GetQuestIndex", questGetQuestIndex, METH_VARARGS },
|
||||
{ "GetQuestLastTime", questGetQuestLastTime, METH_VARARGS },
|
||||
{ "Clear", questClear, METH_VARARGS },
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
{ "GetQuestCounterData", questGetQuestCounterData, METH_VARARGS },
|
||||
{ "GetQuestButtonNoticeCount", questGetQuestButtonNoticeCount, METH_VARARGS },
|
||||
#endif
|
||||
{ NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
PyObject * poModule = Py_InitModule("quest", s_methods);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_MAX_NUM", 5);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_MAX_NUM", 5);
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_MAIN", CPythonQuest::QUEST_TYPE_MAIN);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_SUB", CPythonQuest::QUEST_TYPE_SUB);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_LEVELUP", CPythonQuest::QUEST_TYPE_LEVELUP);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_EVENT", CPythonQuest::QUEST_TYPE_EVENT);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_COLLECTION", CPythonQuest::QUEST_TYPE_COLLECTION);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_SYSTEM", CPythonQuest::QUEST_TYPE_SYSTEM);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_SCROLL", CPythonQuest::QUEST_TYPE_SCROLL);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_DAILY", CPythonQuest::QUEST_TYPE_DAILY);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_UNEXPOSED", CPythonQuest::QUEST_TYPE_UNEXPOSED);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_TYPE_MAX", CPythonQuest::QUEST_TYPE_MAX);
|
||||
|
||||
PyModule_AddIntConstant(poModule, "QUEST_STRING_TYPE_NORMAL", CPythonQuest::QUEST_STRING_TYPE_NORMAL);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_STRING_TYPE_CLOCK", CPythonQuest::QUEST_STRING_TYPE_CLOCK);
|
||||
PyModule_AddIntConstant(poModule, "QUEST_STRING_TYPE_COUNT", CPythonQuest::QUEST_STRING_TYPE_COUNT);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -25,9 +25,50 @@ class CPythonQuest : public CSingleton<CPythonQuest>
|
|||
int iCounterValue;
|
||||
|
||||
int iStartTime;
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
BYTE bType;
|
||||
bool bIsConfirmed;
|
||||
#endif
|
||||
};
|
||||
typedef std::vector<SQuestInstance> TQuestInstanceContainer;
|
||||
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
enum EQuestStringType
|
||||
{
|
||||
QUEST_STRING_TYPE_NORMAL,
|
||||
QUEST_STRING_TYPE_CLOCK,
|
||||
QUEST_STRING_TYPE_COUNT,
|
||||
QUEST_STRING_TYPE_MAX
|
||||
};
|
||||
|
||||
enum EQuestType
|
||||
{
|
||||
QUEST_TYPE_MAIN,
|
||||
QUEST_TYPE_SUB,
|
||||
QUEST_TYPE_LEVELUP,
|
||||
QUEST_TYPE_EVENT,
|
||||
QUEST_TYPE_COLLECTION,
|
||||
QUEST_TYPE_SYSTEM,
|
||||
QUEST_TYPE_SCROLL,
|
||||
QUEST_TYPE_DAILY,
|
||||
QUEST_TYPE_UNEXPOSED,
|
||||
QUEST_TYPE_MAX
|
||||
};
|
||||
|
||||
enum EQuestSkin
|
||||
{
|
||||
QUEST_SKIN_NOWINDOW,
|
||||
QUEST_SKIN_NORMAL,
|
||||
QUEST_SKIN_UNKOWN1,
|
||||
QUEST_SKIN_UNKOWN2,
|
||||
QUEST_SKIN_SCROLL,
|
||||
QUEST_SKIN_CINEMATIC,
|
||||
QUEST_SKIN_COUNT,
|
||||
QUEST_SKIN_MAX
|
||||
};
|
||||
#endif
|
||||
|
||||
public:
|
||||
CPythonQuest();
|
||||
virtual ~CPythonQuest();
|
||||
|
@ -38,7 +79,12 @@ class CPythonQuest : public CSingleton<CPythonQuest>
|
|||
void DeleteQuestInstance(DWORD dwIndex);
|
||||
|
||||
bool IsQuest(DWORD dwIndex);
|
||||
void MakeQuest(DWORD dwIndex);
|
||||
void MakeQuest(DWORD dwIndex
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
, BYTE bIndex
|
||||
, bool bIsConfirmed
|
||||
#endif
|
||||
);
|
||||
|
||||
void SetQuestTitle(DWORD dwIndex, const char * c_szTitle);
|
||||
void SetQuestClockName(DWORD dwIndex, const char * c_szClockName);
|
||||
|
@ -46,9 +92,17 @@ class CPythonQuest : public CSingleton<CPythonQuest>
|
|||
void SetQuestClockValue(DWORD dwIndex, int iClockValue);
|
||||
void SetQuestCounterValue(DWORD dwIndex, int iCounterValue);
|
||||
void SetQuestIconFileName(DWORD dwIndex, const char * c_szIconFileName);
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
void SetQuestIsConfirmed(DWORD dwIndex, bool bIsConfirmed);
|
||||
#endif
|
||||
|
||||
int GetQuestCount();
|
||||
#if defined(ENABLE_QUEST_RENEWAL)
|
||||
int GetQuestButtonNoticeCount(BYTE bQuestType);
|
||||
bool GetQuestInstancePtr(DWORD dwQuestIndex, SQuestInstance ** ppQuestInstance);
|
||||
#else
|
||||
bool GetQuestInstancePtr(DWORD dwArrayIndex, SQuestInstance ** ppQuestInstance);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void __Initialize();
|
||||
|
|