@@ -20,11 +20,11 @@ import uiInventory
import sys
ITEM_FLAG_APPLICABLE = 1 << 14
# 용혼석 Vnum에 대한 comment
# ITEM VNUM을 10만 자리부터, FEDCBA라고 한다면
# FE : 용혼석 종류 . D : 등급
# C : 단계 B : 강화
# A : 여벌의 번호들 ...
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> Vnum<75> <6D> <20> <> <EFBFBD> <EFBFBD> comment
# ITEM VNUM<EFBFBD> <EFBFBD> 10<EFBFBD> <EFBFBD> <20> ڸ<EFBFBD> <DAB8> <EFBFBD> <EFBFBD> <EFBFBD> , FEDCBA<42> <41> <EFBFBD> <20> Ѵ ٸ<D1B4>
# FE : <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> . D : <EFBFBD> <EFBFBD> <EFBFBD>
# C : <EFBFBD> ܰ<EFBFBD> B : <EFBFBD> <EFBFBD> ȭ
# A : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȣ <EFBFBD> <C8A3> ...
class DragonSoulWindow ( ui . ScriptWindow ) :
KIND_TAP_TITLES = [ uiScriptLocale . DRAGONSOUL_TAP_TITLE_1 , uiScriptLocale . DRAGONSOUL_TAP_TITLE_2 ,
@@ -226,9 +226,9 @@ class DragonSoulWindow(ui.ScriptWindow):
for j in xrange ( item . LIMIT_MAX_NUM ) :
( limitType , limitValue ) = item . GetLimit ( j )
# 밑에서 remain_time이 0이하인지 체크 하기 때문에 임의의 양수로 초기화
# <EFBFBD> ؿ<EFBFBD> <EFBFBD> <EFBFBD> remain_time<EFBFBD> <EFBFBD> 0<> <30> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> üũ <20> ϱ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʱ<EFBFBD> ȭ
remain_time = 999
# 일단 현재 타이머는 이 세개 뿐이다 .
# <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ÿ<> ̸Ӵ<CCB8> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ̴<EFBFBD> .
if item . LIMIT_REAL_TIME == limitType :
remain_time = player . GetItemMetinSocket ( player . INVENTORY , slotNumber , 0 ) - app . GetGlobalTimeStamp ( )
elif item . LIMIT_REAL_TIME_START_FIRST_USE == limitType :
@@ -275,7 +275,7 @@ class DragonSoulWindow(ui.ScriptWindow):
for j in xrange ( item . LIMIT_MAX_NUM ) :
( limitType , limitValue ) = item . GetLimit ( j )
# 밑에서 remain_time이 음수인지 체크 하기 때문에 임의의 양수로 초기화
# <EFBFBD> ؿ<EFBFBD> <EFBFBD> <EFBFBD> remain_time<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> üũ <20> ϱ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʱ<EFBFBD> ȭ
remain_time = 999
if item . LIMIT_REAL_TIME == limitType :
remain_time = player . GetItemMetinSocket ( player . DRAGON_SOUL_INVENTORY , slotNumber , 0 )
@@ -306,7 +306,7 @@ class DragonSoulWindow(ui.ScriptWindow):
if None != self . tooltipItem :
self . tooltipItem . SetTop ( )
# item slot 관련 함수
# item slot <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> Լ<EFBFBD>
def OverOutItem ( self ) :
self . wndItem . SetUsableItem ( False )
if None != self . tooltipItem :
@@ -359,7 +359,7 @@ class DragonSoulWindow(ui.ScriptWindow):
mouseModule . mouseController . DeattachObject ( )
else :
## 상점에서 팔도록 추가
## <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȵ<EFBFBD> <C8B5> <EFBFBD> <20> ߰<EFBFBD>
## 20140220
curCursorNum = app . GetCursor ( )
@@ -377,8 +377,8 @@ class DragonSoulWindow(ui.ScriptWindow):
self . wndItem . SetUseMode ( False )
snd . PlaySound ( " sound/ui/pick.wav " )
## 상점에 팔기
## 2014.02.20 추가
## <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȱ<EFBFBD>
## 2014.02.20 <EFBFBD> ߰<EFBFBD>
def __SellItem ( self , itemSlotPos ) :
if not player . IsDSEquipmentSlot ( player . DRAGON_SOUL_INVENTORY , itemSlotPos ) :
self . sellingSlotNumber = itemSlotPos
@@ -412,21 +412,21 @@ class DragonSoulWindow(ui.ScriptWindow):
self . questionDialog . Open ( )
self . questionDialog . count = itemCount
## 상점에 팔기
## <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȱ<EFBFBD>
def SellItem ( self ) :
net . SendShopSellPacketNew ( self . sellingSlotNumber , self . questionDialog . count , player . DRAGON_SOUL_INVENTORY )
snd . PlaySound ( " sound/ui/money.wav " )
self . OnCloseQuestionDialog ( )
## 상점에 팔기
## <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȱ<EFBFBD>
def OnCloseQuestionDialog ( self ) :
if self . questionDialog :
self . questionDialog . Close ( )
self . questionDialog = None
## 상점에 팔기
## <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȱ<EFBFBD>
def __OnClosePopupDialog ( self ) :
self . pop = None
@@ -478,7 +478,7 @@ class DragonSoulWindow(ui.ScriptWindow):
return
slotIndex = self . __InventoryLocalSlotPosToGlobalSlotPos ( player . DRAGON_SOUL_INVENTORY , slotIndex )
try :
# 용혼석 강화창이 열려있으면, 아이템 우클릭 시 자동으로 강화창으로 들어감 .
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> Ŭ<EFBFBD> <C5AC> <20> <> <20> ڵ<EFBFBD> <DAB5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <EFBFBD> <EFBFBD> <20> <> .
if self . wndDragonSoulRefine . IsShow ( ) :
if uiPrivateShopBuilder . IsBuildingPrivateShop ( ) :
chat . AppendChat ( chat . CHAT_TYPE_INFO , localeInfo . MOVE_ITEM_FAILURE_PRIVATE_SHOP )
@@ -500,7 +500,7 @@ class DragonSoulWindow(ui.ScriptWindow):
net . SendItemMovePacket ( srcSlotWindow , srcSlotPos , dstSlotWindow , dstSlotPos , srcItemCount )
# equip 슬롯 관련 함수들 .
# equip <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> Լ<EFBFBD> <D4BC> <EFBFBD> .
def OverOutEquipItem ( self ) :
self . OverOutItem ( )
@@ -529,7 +529,7 @@ class DragonSoulWindow(ui.ScriptWindow):
def SelectEquipItemSlot ( self , itemSlotIndex ) :
## 마우스 버튼이 sell buy 체크 해서 return
## <EFBFBD> <EFBFBD> <EFBFBD> 콺 <20> <> ư<EFBFBD> <C6B0> sell buy üũ <20> ؼ<EFBFBD> return
curCursorNum = app . GetCursor ( )
if app . SELL == curCursorNum :
return
@@ -545,7 +545,7 @@ class DragonSoulWindow(ui.ScriptWindow):
if mouseModule . mouseController . isAttached ( ) :
attachedSlotType = mouseModule . mouseController . GetAttachedType ( )
attachedSlotPos = mouseModule . mouseController . GetAttachedSlotNumber ( )
# 자기 자신을 자기 자신에게 드래그하는 경우
# <EFBFBD> ڱ<EFBFBD> <20> ڽ<EFBFBD> <DABD> <EFBFBD> <20> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> 巡<EFBFBD> <E5B7A1> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD>
if player . SLOT_TYPE_INVENTORY == attachedSlotType and itemSlotIndex == attachedSlotPos :
return
@@ -592,9 +592,9 @@ class DragonSoulWindow(ui.ScriptWindow):
self . __OpenQuestionDialog ( True , srcItemPos , dstItemPos )
mouseModule . mouseController . DeattachObject ( )
# equip 슬롯 관련 함수들 끝 .
# equip <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> Լ<EFBFBD> <D4BC> <EFBFBD> <20> <> .
# 경고창 관련
# <EFBFBD> <EFBFBD> <EFBFBD> â <20> <> <EFBFBD> <EFBFBD>
def __OpenQuestionDialog ( self , Equip , srcItemPos , dstItemPos ) :
self . srcItemPos = srcItemPos
self . dstItemPos = dstItemPos
@@ -623,7 +623,7 @@ class DragonSoulWindow(ui.ScriptWindow):
self . dstItemPos = ( 0 , 0 )
self . dlgQuestion . Close ( )
# 경고창 관련 끝
# <EFBFBD> <EFBFBD> <EFBFBD> â <20> <> <EFBFBD> <EFBFBD> <20> <>
def SetDSKindIndex ( self , kindIndex ) :
if self . DSKindIndex != kindIndex :
@@ -656,7 +656,7 @@ class DragonSoulWindow(ui.ScriptWindow):
self . RefreshEquipSlotWindow ( )
# 용혼석 활성화 관련
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> Ȱ<> <C8B0> ȭ <20> <> <EFBFBD> <EFBFBD>
def ActivateDragonSoulByExtern ( self , deck ) :
self . isActivated = True
self . activateButton . Down ( )
@@ -669,16 +669,25 @@ class DragonSoulWindow(ui.ScriptWindow):
self . isActivated = False
self . activateButton . SetUp ( )
def ActivateButtonClick ( self ) :
self . isActivated = self . isActivated ^ True
if self . isActivated :
# MR-3: Keyboard-enabled deck toggling
def ActivateButtonClick ( self , deckIndex = None ) :
# If deckIndex is not specified, use the current deckPageIndex
if deckIndex is None :
deckIndex = self . deckPageIndex
if not self . isActivated or self . deckPageIndex != deckIndex :
if self . __CanActivateDeck ( ) :
net . SendChatPacket ( " /dragon_soul activate " + str ( self . deckPage Index ) )
net . SendChatPacket ( " /dragon_soul activate " + str ( deckIndex ) )
self . isActivated = True
self . activateButton . Down ( )
else :
self . isActivated = False
self . activateButton . SetUp ( )
else :
net . SendChatPacket ( " /dragon_soul deactivate " )
self . isActivated = False
self . activateButton . SetUp ( )
# MR-3: -- END OF -- Keyboard-enabled deck toggling
def __CanActivateDeck ( self ) :
canActiveNum = 0
@@ -692,24 +701,24 @@ class DragonSoulWindow(ui.ScriptWindow):
for i in xrange ( item . LIMIT_MAX_NUM ) :
( limitType , limitValue ) = item . GetLimit ( i )
# LIMIT_TIMER_BASED_ON_WEAR는 소켓0에 남은 시간을 박는다 .
# LIMIT_REAL_TIME은 시간 다 되면 아이템이 사라지므로 할 필요가 없다 .
# LIMIT_REAL_TIME_START_FIRST_USE는 서버에 제대로 정의되지 않아 일단 냅둔다 .
# LIMIT_TIMER_BASED_ON_WEAR<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 0<EFBFBD> <30> <20> <> <EFBFBD> <EFBFBD> <20> ð<EFBFBD> <C3B0> <EFBFBD> <20> ڴ´ <DAB4> .
# LIMIT_REAL_TIME<EFBFBD> <EFBFBD> <20> ð<EFBFBD> <20> <> <20> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <20> <> <20> ʿ䰡 <20> <> <EFBFBD> <EFBFBD> .
# LIMIT_REAL_TIME_START_FIRST_USE<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ǵ<EFBFBD> <C7B5> <EFBFBD> <20> ʾ <EFBFBD> <20> ϴ<EFBFBD> <20> <> <EFBFBD> д<EFBFBD> .
if item . LIMIT_TIMER_BASED_ON_WEAR == limitType :
isNoLimit = False
remain_time = player . GetItemMetinSocket ( player . INVENTORY , slotNumber , 0 )
if 0 != remain_time :
canActiveNum + = 1
break
# 타이머가 없다면 Activate할 수 있는 용혼석 .
# Ÿ<EFBFBD> ̸Ӱ<EFBFBD> <20> <> <EFBFBD> ٸ<EFBFBD> Activate<74> <65> <20> <> <20> ִ<EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> .
if isNoLimit :
canActiveNum + = 1
return canActiveNum > 0
# 활성화 관련 끝
# Ȱ<EFBFBD> <EFBFBD> ȭ <20> <> <EFBFBD> <EFBFBD> <20> <>
# 슬롯 highlight 관련
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> highlight <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
def __HighlightSlot_ClearCurrentPage ( self ) :
for i in xrange ( self . wndItem . GetSlotCount ( ) ) :
slotNumber = self . __InventoryLocalSlotPosToGlobalSlotPos ( player . DRAGON_SOUL_INVENTORY , i )
@@ -726,14 +735,14 @@ class DragonSoulWindow(ui.ScriptWindow):
def HighlightSlot ( self , slot ) :
if not slot in self . listHighlightedSlot :
self . listHighlightedSlot . append ( slot )
# 슬롯 highlight 관련 끝
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> highlight <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <>
def SetDragonSoulRefineWindow ( self , wndDragonSoulRefine ) :
if app . ENABLE_DRAGON_SOUL_SYSTEM :
from _weakref import proxy
self . wndDragonSoulRefine = proxy ( wndDragonSoulRefine )
## 강화할 수 없는 경우 날리는 예외
## <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
#class DragonSoulRefineException(Exception):
#pass
@@ -870,7 +879,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
def SetItemToolTip ( self , tooltipItem ) :
self . tooltipItem = tooltipItem
# 버튼 눌려 있는 상태를 제외한 모든 강화창 관련 변수들을 초기화 .
# <EFBFBD> <EFBFBD> ư <20> <> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> ¸ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> ȭâ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʱ<EFBFBD> ȭ .
def __Initialize ( self ) :
self . currentRecipe = { }
self . refineItemInfo = { }
@@ -888,7 +897,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
def __FlushRefineItemSlot ( self ) :
## Item slot settings
# 원래 인벤의 아이템 카운트 회복
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> κ<EFBFBD> <CEBA> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ī<> <C4AB> Ʈ ȸ<> <C8B8>
for invenType , invenPos , itemCount in self . refineItemInfo . values ( ) :
remainCount = player . GetItemCount ( invenType , invenPos )
player . SetItemCount ( invenType , invenPos , remainCount + itemCount )
@@ -939,33 +948,33 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
raise Exception , ( " Invalid attachedItemCount( %d ). (base pos ( %d , %d ), base itemCount( %d )) " % ( itemCount , invenType , invenPos , maxCount ) )
#return False
# strength 강화일 경우, 0번엔 강화석, 1번엔 용혼석을 놓도록 강제함 .
# strength <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> , 0<> <30> <EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> , 1<> <31> <EFBFBD> <EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
if DragonSoulRefineWindow . REFINE_TYPE_STRENGTH == self . currentRefineType :
if self . __IsDragonSoul ( itemVnum ) :
dstSlotIndex = 1
else :
dstSlotIndex = 0
# 빈 슬롯이어야함 .
# <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̾<EFBFBD> <CCBE> <EFBFBD> <EFBFBD> .
if dstSlotIndex in self . refineItemInfo :
return False
# 강화창에 올릴 수 있는 아이템인지 검사 .
# <EFBFBD> <EFBFBD> ȭâ<EFBFBD> <EFBFBD> <20> ø<EFBFBD> <20> <> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ˻<EFBFBD> .
if False == self . __CheckCanRefine ( itemVnum ) :
return False
# 끌어다 놓은 아이템 카운트만큼 원래 자리의 아이템 카운트 감소
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ī<> <C4AB> Ʈ<EFBFBD> <C6AE> ŭ <20> <> <EFBFBD> <EFBFBD> <20> ڸ<EFBFBD> <DAB8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ī<> <C4AB> Ʈ <20> <> <EFBFBD> <EFBFBD>
player . SetItemCount ( invenType , invenPos , maxCount - itemCount )
self . refineItemInfo [ dstSlotIndex ] = ( invenType , invenPos , itemCount )
self . Refresh ( )
return True
# 강화 가능한 아이템인지 체크
# 용혼석 강화는 강화 레시피를 정해놓고 시작하는 것이 아니라 ,
# 처음에 강화창에 올린 용혼석에 의해 강화 레시피가 결정된다 .
# 그래서 __CanRefineGrade, __CanRefineStep, __CanRefineStrength 함수에서
# 강화 레시피가 없다면(처음 올리는 아이템이라면), 강화 레시피를 설정해주는 역할도 한다 .
# <EFBFBD> <EFBFBD> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> üũ
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <20> <> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> س<EFBFBD> <D8B3> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> ,
# ó<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <20> ø<EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ȴ<EFBFBD> .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> __CanRefineGrade, __CanRefineStep, __CanRefineStrength <EFBFBD> Լ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
# <EFBFBD> <EFBFBD> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> <> <EFBFBD> ٸ<EFBFBD> (ó<> <C3B3> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̶<EFBFBD> <CCB6> ), <20> <> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ<EFBFBD> <20> <> <EFBFBD> ҵ<EFBFBD> <20> Ѵ <EFBFBD> .
def __CheckCanRefine ( self , vnum ) :
if self . REFINE_TYPE_GRADE == self . currentRefineType :
return self . __CanRefineGrade ( vnum )
@@ -992,10 +1001,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
if not ( cur_refine_ds_type == ds_type and cur_refine_grade == grade ) :
self . __PopUp ( localeInfo . DRAGON_SOUL_INVALID_DRAGON_SOUL )
return False
# 강화 창에 처음 아이템을 올리는 경우, 강화 재료에 관한 정보가 없다 .
# 용혼석 강화가, 레시피를 가지고 시작하는 것이 아니라, 강화창에 처음 올리는 아이템이 무엇이냐에 따라 ,
# 무엇을 강화하고, 재료가 무엇인지(이하 레시피)가 정해진다 .
# 레시피가 없다면, 처음 올린 아이템이라 생각하고, vnum을 바탕으로 레시피를 셋팅 .
# <EFBFBD> <EFBFBD> ȭ â<> <C3A2> ó<> <C3B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> <> <EFBFBD> , <20> <> ȭ <20> <> ῡ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> , <20> <> ȭâ<C8AD> <C3A2> ó<> <C3B3> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̳Ŀ<CCB3> <20> <> <EFBFBD> <EFBFBD> ,
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> ϰ<EFBFBD> , <20> <> ᰡ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )<29> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> <> <EFBFBD> ٸ<EFBFBD> , ó<> <C3B3> <20> ø<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̶<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϰ<EFBFBD> , vnum<75> <6D> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
else :
self . currentRecipe = self . __GetRefineGradeRecipe ( vnum )
@@ -1004,7 +1013,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
self . wndMoney . SetText ( localeInfo . NumberToMoneyString ( self . currentRecipe [ " fee " ] ) )
return True
else :
# 강화 정보 셋팅에 실패하면 올릴 수 없는 아이템으로 판단 .
# <EFBFBD> <EFBFBD> ȭ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ÿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϸ<EFBFBD> <20> ø<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> Ǵ<EFBFBD> .
self . __PopUp ( localeInfo . DRAGON_SOUL_CANNOT_REFINE )
return False
@@ -1021,10 +1030,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
if not ( cur_refine_ds_type == ds_type and cur_refine_grade == grade and cur_refine_step == step ) :
self . __PopUp ( localeInfo . DRAGON_SOUL_INVALID_DRAGON_SOUL )
return False
# 강화 창에 처음 아이템을 올리는 경우, 재료에 관한 정보가 없다 .
# 용혼석 강화가, 레시피를 가지고 시작하는 것이 아니라, 강화창에 처음 올리는 아이템이 무엇이냐에 따라 ,
# 무엇을 강화하고, 재료가 무엇인지(이하 레시피)가 정해진다 .
# 레시피가 없다면, 처음 올린 아이템이라 생각하고, vnum을 바탕으로 레시피를 셋팅 .
# <EFBFBD> <EFBFBD> ȭ â<> <C3A2> ó<> <C3B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> <> <EFBFBD> , <20> <> ῡ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> , <20> <> ȭâ<C8AD> <C3A2> ó<> <C3B3> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̳Ŀ<CCB3> <20> <> <EFBFBD> <EFBFBD> ,
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> ϰ<EFBFBD> , <20> <> ᰡ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )<29> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> <> <EFBFBD> ٸ<EFBFBD> , ó<> <C3B3> <20> ø<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̶<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϰ<EFBFBD> , vnum<75> <6D> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
else :
self . currentRecipe = self . __GetRefineStepRecipe ( vnum )
@@ -1034,12 +1043,12 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
return True
else :
# 강화 정보 셋팅에 실패하면 올릴 수 없는 아이템으로 판단 .
# <EFBFBD> <EFBFBD> ȭ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ÿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϸ<EFBFBD> <20> ø<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> Ǵ<EFBFBD> .
self . __PopUp ( localeInfo . DRAGON_SOUL_CANNOT_REFINE )
return False
def __CanRefineStrength ( self , vnum ) :
# 용혼석인 경우, 더 이상 strength 강화를 할 수 없는지 체크해야함 .
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> , <20> <> <20> ̻<EFBFBD> strength <20> <> ȭ<EFBFBD> <C8AD> <20> <> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> üũ<C3BC> ؾ<EFBFBD> <D8BE> <EFBFBD> .
if self . __IsDragonSoul ( vnum ) :
ds_type , grade , step , strength = self . __GetDragonSoulTypeInfo ( vnum )
@@ -1051,10 +1060,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
else :
return True
# strength 강화의 경우 , refine_recipe가 용혼석의 종류가 아닌, 강화석의 종류에 따라 달라진다 .
# 따라서 용혼석이 아니라면 ,
# 이미 레시피가 있는 경우는, 강화석이 강화창에 있다는 것이므로 , return False
# 레시피가 없는 경우는, 강화석인지 확인하고, 레시피를 셋팅한다 .
# strength <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> , refine_recipe<EFBFBD> <EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ƴ<EFBFBD> , <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <EFBFBD> <DEB6> <EFBFBD> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> ƴ϶<C6B4> <CFB6> ,
# <EFBFBD> ̹<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> , <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <20> ִٴ<D6B4> <20> <> <EFBFBD> ̹Ƿ<CCB9> , return False
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> , <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> ϰ<EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ѵ <EFBFBD> .
else :
if self . currentRecipe :
self . __PopUp ( localeInfo . DRAGON_SOUL_IS_NOT_DRAGON_SOUL )
@@ -1066,7 +1075,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
self . wndMoney . SetText ( localeInfo . NumberToMoneyString ( self . currentRecipe [ " fee " ] ) )
return True
else :
# 레시피를 셋팅할 수 없는 경우
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD>
self . __PopUp ( localeInfo . DRAGON_SOUL_NOT_DRAGON_SOUL_REFINE_STONE )
return False
@@ -1096,11 +1105,11 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
except :
return None
# strength 강화의 경우 , refineInfo는 강화석에 따라 달라진다 .
# strength <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> , refineInfo<EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <EFBFBD> <DEB6> <EFBFBD> <EFBFBD> <EFBFBD> .
def __GetRefineStrengthInfo ( self , itemVnum ) :
try :
# 이놈의 위치를 어찌하지 ....
# 강화석이 아니면 안됨 .
# <EFBFBD> ̳<EFBFBD> <EFBFBD> <EFBFBD> <20> <> ġ<EFBFBD> <C4A1> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ....
# <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ƴϸ<C6B4> <20> ȵ<EFBFBD> .
item . SelectItem ( itemVnum )
if not ( item . ITEM_TYPE_MATERIAL == item . GetItemType ( ) \
and ( item . MATERIAL_DS_REFINE_NORMAL < = item . GetItemSubType ( ) and item . GetItemSubType ( ) < = item . MATERIAL_DS_REFINE_HOLLY ) ) :
@@ -1115,11 +1124,11 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
item . SelectItem ( vnum )
return item . GetItemType ( ) == item . ITEM_TYPE_DS
# 용혼석 Vnum에 대한 comment
# ITEM VNUM을 10만 자리부터, FEDCBA라고 한다면
# FE : 용혼석 종류 . D : 등급
# C : 단계 B : 강화
# A : 여벌의 번호들 ...
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> Vnum<75> <6D> <20> <> <EFBFBD> <EFBFBD> comment
# ITEM VNUM<EFBFBD> <EFBFBD> 10<EFBFBD> <EFBFBD> <20> ڸ<EFBFBD> <DAB8> <EFBFBD> <EFBFBD> <EFBFBD> , FEDCBA<42> <41> <EFBFBD> <20> Ѵ ٸ<D1B4>
# FE : <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> . D : <EFBFBD> <EFBFBD> <EFBFBD>
# C : <EFBFBD> ܰ<EFBFBD> B : <EFBFBD> <EFBFBD> ȭ
# A : <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȣ <EFBFBD> <C8A3> ...
def __GetDragonSoulTypeInfo ( self , vnum ) :
if not self . __IsDragonSoul ( vnum ) :
return DragonSoulRefineWindow . INVALID_DRAGON_SOUL_INFO
@@ -1133,7 +1142,7 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
def __MakeDragonSoulVnum ( self , ds_type , grade , step , strength ) :
return ds_type * 10000 + grade * 1000 + step * 100 + strength * 10
## 빈 슬롯 선택 Event
## <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> Event
def __SelectRefineEmptySlot ( self , selectedSlotPos ) :
try :
if constInfo . GET_ITEM_QUESTION_DIALOG_STATUS ( ) == 1 :
@@ -1168,14 +1177,14 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
import dbg
dbg . TraceError ( " Exception : __SelectRefineEmptySlot, %s " % e )
# 클릭으로 슬롯에서 삭제 .
# Ŭ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> Կ<EFBFBD> <D4BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
def __SelectRefineItemSlot ( self , selectedSlotPos ) :
if constInfo . GET_ITEM_QUESTION_DIALOG_STATUS ( ) == 1 :
return
try :
if not selectedSlotPos in self . refineItemInfo :
# 새로운 아이템을 강화창에 올리는 작업 .
# <EFBFBD> <EFBFBD> <EFBFBD> ο <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <20> ø<EFBFBD> <C3B8> <EFBFBD> <20> ۾<EFBFBD> .
if mouseModule . mouseController . isAttached ( ) :
attachedSlotType = mouseModule . mouseController . GetAttachedType ( )
attachedSlotPos = mouseModule . mouseController . GetAttachedSlotNumber ( )
@@ -1203,25 +1212,25 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
attachedInvenType , attachedSlotPos , attachedItemCount = self . refineItemInfo [ selectedSlotPos ]
selectedItemVnum = player . GetItemIndex ( attachedInvenType , attachedSlotPos )
# 강화창에서 삭제 및 원래 인벤의 아이템 카운트 회복
# <EFBFBD> <EFBFBD> ȭâ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> κ<EFBFBD> <CEBA> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ī<> <C4AB> Ʈ ȸ<> <C8B8>
invenType , invenPos , itemCount = self . refineItemInfo [ selectedSlotPos ]
remainCount = player . GetItemCount ( invenType , invenPos )
player . SetItemCount ( invenType , invenPos , remainCount + itemCount )
del self . refineItemInfo [ selectedSlotPos ]
# 강화창이 비었다면, 초기화
# <EFBFBD> <EFBFBD> ȭâ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ٸ<EFBFBD> , <20> ʱ<EFBFBD> ȭ
if not self . refineItemInfo :
self . __Initialize ( )
else :
item . SelectItem ( selectedItemVnum )
# 없앤 아이템이 강화석이었다면 강화 레피시 초기화
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> ̾<EFBFBD> <CCBE> ٸ<EFBFBD> <20> <> ȭ <20> <> <EFBFBD> ǽ<EFBFBD> <20> ʱ<EFBFBD> ȭ
if ( item . ITEM_TYPE_MATERIAL == item . GetItemType ( ) \
and ( item . MATERIAL_DS_REFINE_NORMAL < = item . GetItemSubType ( ) and item . GetItemSubType ( ) < = item . MATERIAL_DS_REFINE_HOLLY ) ) :
self . currentRecipe = { }
self . wndMoney . SetText ( localeInfo . NumberToMoneyString ( 0 ) )
# 용혼석이었다면 ,
# strength강화가 아닌 경우, 강화창에 다른 용혼석이 남아있으므로, 레시피를 초기화하면 안됨 .
# strength강화의 경우, 강화 레시피는 강화석에 종속된 것이므로 다른 처리할 필요가 없음 .
# <EFBFBD> <EFBFBD> ȥ<EFBFBD> <EFBFBD> <EFBFBD> ̾<EFBFBD> <EFBFBD> ٸ<EFBFBD> ,
# strength<EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> ƴ<EFBFBD> <20> <> <EFBFBD> , <20> <> ȭâ<C8AD> <C3A2> <20> ٸ<EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǹ<EFBFBD> <20> ʱ<EFBFBD> ȭ<EFBFBD> ϸ<EFBFBD> <20> ȵ<EFBFBD> .
# strength<EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> , <20> <> ȭ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǵ<EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ӵ<EFBFBD> <20> <> <EFBFBD> ̹Ƿ<CCB9> <20> ٸ<EFBFBD> ó<> <C3B3> <EFBFBD> <EFBFBD> <20> ʿ䰡 <20> <> <EFBFBD> <EFBFBD> .
else :
pass
@@ -1268,10 +1277,10 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
for slotPos in xrange ( self . wndRefineSlot . GetSlotCount ( ) ) :
self . wndRefineSlot . ClearSlot ( slotPos )
if slotPos < self . refineSlotLockStartIndex :
# self.refineItemInfo[slotPos]의 정보확인
# (실제로 아이템이 존재하는지 확인 )
# 존재 -> 아이템 아이콘을 슬롯에 셋팅 .
# 비존재 -> 아이템이 없으므로 강화창에서 삭제 .
# self.refineItemInfo[slotPos]<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ȯ<EFBFBD> <C8AE>
# (<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <CFB4> <EFBFBD> Ȯ<> <C8AE> )
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <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> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <20> <> ȭâ<C8AD> <C3A2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
if slotPos in self . refineItemInfo :
invenType , invenPos , itemCount = self . refineItemInfo [ slotPos ]
itemVnum = player . GetItemIndex ( invenType , invenPos )
@@ -1282,12 +1291,12 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
else :
del self . refineItemInfo [ slotPos ]
# 빈 슬롯에 reference 아이콘을 alpha 0.5로 셋팅 .
# <EFBFBD> <EFBFBD> <20> <> <EFBFBD> Կ<EFBFBD> reference <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> alpha 0.5<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
if not slotPos in self . refineItemInfo :
try :
reference_vnum = 0
# strength 강화일 때는 ,
# 0번 슬롯에 강화석을, 1번 슬롯에 용혼석을 놓는다 .
# strength <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ,
# 0<EFBFBD> <EFBFBD> <20> <> <EFBFBD> Կ<EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> , 1<> <31> <20> <> <EFBFBD> Կ<EFBFBD> <20> <> ȥ<EFBFBD> <C8A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ´ <EFBFBD> .
if DragonSoulRefineWindow . REFINE_TYPE_STRENGTH == self . currentRefineType :
if DragonSoulRefineWindow . REFINE_STONE_SLOT == slotPos :
reference_vnum = 100300
@@ -1298,28 +1307,28 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
itemIcon = item . GetIconImage ( )
( width , height ) = item . GetItemSize ( )
self . wndRefineSlot . SetSlot ( slotPos , 0 , width , height , itemIcon , ( 1.0 , 1.0 , 1.0 , 0.5 ) )
# slot 우측 하단에 숫자 뜨면 안 예쁨 ...
# slot <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ϴܿ<CFB4> <20> <> <EFBFBD> <EFBFBD> <20> ߸<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> ...
self . wndRefineSlot . SetSlotCount ( slotPos , 0 )
except :
pass
# refineSlotLockStartIndex 보다 작은 슬롯은 닫힌 이미지를 보여주면 안됨 .
# refineSlotLockStartIndex <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ̹<EFBFBD> <CCB9> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ָ<EFBFBD> <20> ȵ<EFBFBD> .
self . wndRefineSlot . HideSlotBaseImage ( slotPos )
# slotPos >= self.refineSlotLockStartIndex:
else :
# 정상적인 경우라면 이 if문에 들어갈 일은 없겠지만 ,
# (애초에 인덱스가 refineSlotLockStartIndex 이상인 슬롯에는 아이템을 넣지 못하게 했기 때문 )
# 혹시 모를 에러에 대비함 .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> if<69> <66> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,
# (<EFBFBD> <EFBFBD> <EFBFBD> ʿ<EFBFBD> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> refineSlotLockStartIndex <EFBFBD> ̻<EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> Կ<EFBFBD> <D4BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ϰ<EFBFBD> <20> ߱<EFBFBD> <20> <> <EFBFBD> <EFBFBD> )
# Ȥ<EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> .
if slotPos in self . refineItemInfo :
invenType , invenPos , itemCount = self . refineItemInfo [ slotPos ]
remainCount = player . GetItemCount ( invenType , invenPos )
player . SetItemCount ( invenType , invenPos , remainCount + itemCount )
del self . refineItemInfo [ slotPos ]
# refineSlotLockStartIndex 이상인 슬롯은 닫힌 이미지를 보여줘야함 .
# refineSlotLockStartIndex <EFBFBD> ̻<EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ̹<EFBFBD> <CCB9> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
self . wndRefineSlot . ShowSlotBaseImage ( slotPos )
# 강화창에 아무런 아이템이 없다면, 초기화해줌 .
# 위에서 중간 중간에 "del self.refineItemInfo[slotPos]"를 했기 때문에 ,
# 여기서 한번 체크해줘야함 .
# <EFBFBD> <EFBFBD> ȭâ<EFBFBD> <EFBFBD> <20> ƹ<EFBFBD> <C6B9> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ٸ<EFBFBD> , <20> ʱ<EFBFBD> ȭ<EFBFBD> <C8AD> <EFBFBD> <EFBFBD> .
# <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ߰<EFBFBD> <20> ߰<EFBFBD> <DFB0> <EFBFBD> "del self.refineItemInfo[slotPos]"<EFBFBD> <EFBFBD> <20> ߱<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,
# <EFBFBD> <EFBFBD> <EFBFBD> ⼭ <20> ѹ<EFBFBD> üũ<C3BC> <C5A9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
if not self . refineItemInfo :
self . __Initialize ( )
@@ -1329,8 +1338,8 @@ class DragonSoulRefineWindow(ui.ScriptWindow):
dbg . TraceError ( " Exception : __RefreshRefineItemSlot, %s " % e )
def __GetEmptySlot ( self , itemVnum = 0 ) :
# STRENGTH 강화의 경우, 용혼석 슬롯과 강화석 슬롯이 구분되어있기 떄문에
# vnum을 알아야 한다 .
# STRENGTH <EFBFBD> <EFBFBD> ȭ<EFBFBD> <EFBFBD> <20> <> <EFBFBD> , <20> <> ȥ<EFBFBD> <C8A5> <20> <> <EFBFBD> <EFBFBD> <20> <> ȭ<EFBFBD> <C8AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> е Ǿ<D0B5> <C7BE> ֱ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
# vnum<EFBFBD> <EFBFBD> <20> ˾ƾ<CBBE> <20> Ѵ <EFBFBD> .
if DragonSoulRefineWindow . REFINE_TYPE_STRENGTH == self . currentRefineType :
if 0 == itemVnum :
return - 1