You last visited: Today at 11:53
Advertisement
[MOD]Easy-Chatblock + Kick - Problem !
Discussion on [MOD]Easy-Chatblock + Kick - Problem ! within the Metin2 Private Server forum part of the Metin2 category.
08/13/2013, 12:51
#1
elite*gold: 0
Join Date: May 2012
Posts: 7,283
Received Thanks: 822
[MOD]Easy-Chatblock + Kick - Problem !
Hey, und zwar ich wolle
einfuegen jedoch hab ich ein Problem mit dem Client, Ladebalken ladet fertig und dann passiert nix, steht einfach weiter...
Meine uitarget.py schaut so aus:
PHP Code:
import app
import ui
import player
import net
import wndMgr
import messenger
import guild
import chr
import nonplayer
import locale
import constInfo
import uiChatBlock
class TargetBoard ( ui . ThinBoard ):
BUTTON_NAME_LIST = (
locale . TARGET_BUTTON_WHISPER ,
locale . TARGET_BUTTON_EXCHANGE ,
locale . TARGET_BUTTON_FIGHT ,
locale . TARGET_BUTTON_ACCEPT_FIGHT ,
locale . TARGET_BUTTON_AVENGE ,
locale . TARGET_BUTTON_FRIEND ,
locale . TARGET_BUTTON_INVITE_PARTY ,
locale . TARGET_BUTTON_LEAVE_PARTY ,
locale . TARGET_BUTTON_EXCLUDE ,
locale . TARGET_BUTTON_INVITE_GUILD ,
locale . TARGET_BUTTON_DISMOUNT ,
locale . TARGET_BUTTON_EXIT_OBSERVER ,
locale . TARGET_BUTTON_VIEW_EQUIPMENT ,
locale . TARGET_BUTTON_REQUEST_ENTER_PARTY ,
locale . TARGET_BUTTON_BUILDING_DESTROY ,
locale . TARGET_BUTTON_EMOTION_ALLOW ,
"Kick" ,
"ChatBlock" ,
)
GRADE_NAME = {
nonplayer . PAWN : locale . TARGET_LEVEL_PAWN ,
nonplayer . S_PAWN : locale . TARGET_LEVEL_S_PAWN ,
nonplayer . KNIGHT : locale . TARGET_LEVEL_KNIGHT ,
nonplayer . S_KNIGHT : locale . TARGET_LEVEL_S_KNIGHT ,
nonplayer . BOSS : locale . TARGET_LEVEL_BOSS ,
nonplayer . KING : locale . TARGET_LEVEL_KING ,
}
EXCHANGE_LIMIT_RANGE = 3000
def __init__ ( self ):
ui . ThinBoard . __init__ ( self )
name = ui . TextLine ()
name . SetParent ( self )
name . SetDefaultFontName ()
name . SetOutline ()
name . Show ()
hpGauge = ui . Gauge ()
hpGauge . SetParent ( self )
hpGauge . SetPosition ( 175 , 17 )
hpGauge . MakeGauge ( 130 , "red" )
hpGauge . SetWindowHorizontalAlignRight ()
hpGauge . Hide ()
closeButton = ui . Button ()
closeButton . SetParent ( self )
closeButton . SetUpVisual ( "d:/ymir work/ui/public/close_button_01.sub" )
closeButton . SetOverVisual ( "d:/ymir work/ui/public/close_button_02.sub" )
closeButton . SetDownVisual ( "d:/ymir work/ui/public/close_button_03.sub" )
closeButton . SetPosition ( 30 , 13 )
closeButton . SetWindowHorizontalAlignRight ()
closeButton . SetEvent ( ui . __mem_func__ ( self . OnPressedCloseButton ))
closeButton . Show ()
self . buttonDict = {}
self . showingButtonList = []
for buttonName in self . BUTTON_NAME_LIST :
button = ui . Button ()
button . SetParent ( self )
button . SetUpVisual ( "d:/ymir work/ui/public/small_thin_button_01.sub" )
button . SetOverVisual ( "d:/ymir work/ui/public/small_thin_button_02.sub" )
button . SetDownVisual ( "d:/ymir work/ui/public/small_thin_button_03.sub" )
button . SetWindowHorizontalAlignCenter ()
button . SetText ( buttonName )
button . Hide ()
self . buttonDict [ buttonName ] = button
self . showingButtonList . append ( button )
self . buttonDict [ locale . TARGET_BUTTON_WHISPER ]. SetEvent ( ui . __mem_func__ ( self . OnWhisper ))
self . buttonDict [ "Kick" ]. SetEvent ( ui . __mem_func__ ( self . OnKick ))
self . buttonDict [ "ChatBlock" ]. SetEvent ( ui . __mem_func__ ( self . OnChatBlock ))
self . buttonDict [ locale . TARGET_BUTTON_EXCHANGE ]. SetEvent ( ui . __mem_func__ ( self . OnExchange ))
self . buttonDict [ locale . TARGET_BUTTON_FIGHT ]. SetEvent ( ui . __mem_func__ ( self . OnPVP ))
self . buttonDict [ locale . TARGET_BUTTON_ACCEPT_FIGHT ]. SetEvent ( ui . __mem_func__ ( self . OnPVP ))
self . buttonDict [ locale . TARGET_BUTTON_AVENGE ]. SetEvent ( ui . __mem_func__ ( self . OnPVP ))
self . buttonDict [ locale . TARGET_BUTTON_FRIEND ]. SetEvent ( ui . __mem_func__ ( self . OnAppendToMessenger ))
self . buttonDict [ locale . TARGET_BUTTON_FRIEND ]. SetEvent ( ui . __mem_func__ ( self . OnAppendToMessenger ))
self . buttonDict [ locale . TARGET_BUTTON_INVITE_PARTY ]. SetEvent ( ui . __mem_func__ ( self . OnPartyInvite ))
self . buttonDict [ locale . TARGET_BUTTON_LEAVE_PARTY ]. SetEvent ( ui . __mem_func__ ( self . OnPartyExit ))
self . buttonDict [ locale . TARGET_BUTTON_EXCLUDE ]. SetEvent ( ui . __mem_func__ ( self . OnPartyRemove ))
self . buttonDict [ locale . TARGET_BUTTON_INVITE_GUILD ]. SAFE_SetEvent ( self . __OnGuildAddMember )
self . buttonDict [ locale . TARGET_BUTTON_DISMOUNT ]. SAFE_SetEvent ( self . __OnDismount )
self . buttonDict [ locale . TARGET_BUTTON_EXIT_OBSERVER ]. SAFE_SetEvent ( self . __OnExitObserver )
self . buttonDict [ locale . TARGET_BUTTON_VIEW_EQUIPMENT ]. SAFE_SetEvent ( self . __OnViewEquipment )
self . buttonDict [ locale . TARGET_BUTTON_REQUEST_ENTER_PARTY ]. SAFE_SetEvent ( self . __OnRequestParty )
self . buttonDict [ locale . TARGET_BUTTON_BUILDING_DESTROY ]. SAFE_SetEvent ( self . __OnDestroyBuilding )
self . buttonDict [ locale . TARGET_BUTTON_EMOTION_ALLOW ]. SAFE_SetEvent ( self . __OnEmotionAllow )
self . name = name
dlgChatBlock = uiChatBlock . ChatBlockDialog ()
dlgChatBlock . LoadDialog ()
dlgChatBlock . SetTitleName ( "ChatBlock" )
dlgChatBlock . Hide ()
self . dlgChatBlock = dlgChatBlock
self . hpGauge = hpGauge
self . closeButton = closeButton
self . nameString = 0
self . nameLength = 0
self . vid = 0
self . eventWhisper = None
self . isShowButton = FALSE
self . __Initialize ()
self . ResetTargetBoard ()
def __del__ ( self ):
ui . ThinBoard . __del__ ( self )
print "===================================================== DESTROYED TARGET BOARD"
def __Initialize ( self ):
self . nameString = ""
self . nameLength = 0
self . vid = 0
self . isShowButton = FALSE
def Destroy ( self ):
self . dlgChatBlock . Destroy ()
self . dlgChatBlock = 0
self . eventWhisper = None
self . closeButton = None
self . showingButtonList = None
self . buttonDict = None
self . name = None
self . hpGauge = None
self . __Initialize ()
def OnPressedCloseButton ( self ):
player . ClearTarget ()
self . Close ()
def Close ( self ):
self . __Initialize ()
self . Hide ()
def Open ( self , vid , name ):
if not constInfo . GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD ():
if not player . IsSameEmpire ( vid ):
self . Hide ()
return
if vid != self . GetTargetVID ():
self . ResetTargetBoard ()
self . SetTargetVID ( vid )
self . SetTargetName ( name )
if player . IsMainCharacterIndex ( vid ):
self . __ShowMainCharacterMenu ()
elif chr . INSTANCE_TYPE_BUILDING == chr . GetInstanceType ( self . vid ):
self . Hide ()
else:
self . RefreshButton ()
self . Show ()
def Refresh ( self ):
if self . IsShow ():
if self . IsShowButton ():
self . RefreshButton ()
def RefreshByVID ( self , vid ):
if vid == self . GetTargetVID ():
self . Refresh ()
def RefreshByName ( self , name ):
if name == self . GetTargetName ():
self . Refresh ()
def __ShowMainCharacterMenu ( self ):
canShow = 0
self . HideAllButton ()
if player . IsMountingHorse ():
self . __ShowButton ( locale . TARGET_BUTTON_DISMOUNT )
canShow = 1
if player . IsObserverMode ():
self . __ShowButton ( locale . TARGET_BUTTON_EXIT_OBSERVER )
canShow = 1
if canShow :
self . __ArrangeButtonPosition ()
self . Show ()
else:
self . Hide ()
def SetWhisperEvent ( self , event ):
self . eventWhisper = event
def UpdatePosition ( self ):
self . SetPosition ( wndMgr . GetScreenWidth ()/ 2 - self . GetWidth ()/ 2 , 10 )
def ResetTargetBoard ( self ):
for btn in self . buttonDict . values ():
btn . Hide ()
self . __Initialize ()
self . name . SetPosition ( 0 , 13 )
self . name . SetHorizontalAlignCenter ()
self . name . SetWindowHorizontalAlignCenter ()
self . hpGauge . Hide ()
self . SetSize ( 250 , 40 )
def SetTargetVID ( self , vid ):
self . vid = vid
def SetEnemyVID ( self , vid ):
self . SetTargetVID ( vid )
name = chr . GetNameByVID ( vid )
level = nonplayer . GetLevelByVID ( vid )
grade = nonplayer . GetGradeByVID ( vid )
nameFront = ""
if - 1 != level :
nameFront += "Lv." + str ( level ) + " "
if self . GRADE_NAME . has_key ( grade ):
nameFront += "(" + self . GRADE_NAME [ grade ] + ") "
self . SetTargetName ( nameFront + name )
def GetTargetVID ( self ):
return self . vid
def GetTargetName ( self ):
return self . nameString
def SetTargetName ( self , name ):
self . nameString = name
self . nameLength = len ( name )
self . name . SetText ( name )
def SetHP ( self , hpPercentage ):
if not self . hpGauge . IsShow ():
self . name . SetPosition ( 23 , 25 )
self . name . SetWindowHorizontalAlignLeft ()
self . name . SetHorizontalAlignLeft ()
self . hpGauge . Show ()
self . SetSize ( 200 + 7 * self . nameLength , self . GetHeight ())
self . UpdatePosition ()
self . hpGauge . SetPercentage ( hpPercentage , 100 )
def ShowDefaultButton ( self ):
self . isShowButton = TRUE
self . showingButtonList . append ( self . buttonDict [ locale . TARGET_BUTTON_WHISPER ])
self . showingButtonList . append ( self . buttonDict [ locale . TARGET_BUTTON_EXCHANGE ])
self . showingButtonList . append ( self . buttonDict [ locale . TARGET_BUTTON_FIGHT ])
self . showingButtonList . append ( self . buttonDict [ locale . TARGET_BUTTON_EMOTION_ALLOW ])
for button in self . showingButtonList :
button . Show ()
def HideAllButton ( self ):
self . isShowButton = FALSE
for button in self . showingButtonList :
button . Hide ()
self . showingButtonList = []
def __ShowButton ( self , name ):
if not self . buttonDict . has_key ( name ):
return
self . buttonDict [ name ]. Show ()
self . showingButtonList . append ( self . buttonDict [ name ])
def __HideButton ( self , name ):
if not self . buttonDict . has_key ( name ):
return
button = self . buttonDict [ name ]
button . Hide ()
for btnInList in self . showingButtonList :
if btnInList == button :
self . showingButtonList . remove ( button )
break
def OnWhisper ( self ):
if None != self . eventWhisper :
self . eventWhisper ( self . nameString )
def OnExchange ( self ):
net . SendExchangeStartPacket ( self . vid )
def OnPVP ( self ):
net . SendChatPacket ( "/pvp %d" % ( self . vid ))
def OnAppendToMessenger ( self ):
net . SendMessengerAddByVIDPacket ( self . vid )
def OnPartyInvite ( self ):
net . SendPartyInvitePacket ( self . vid )
def OnPartyExit ( self ):
net . SendPartyExitPacket ()
def OnPartyRemove ( self ):
net . SendPartyRemovePacket ( self . vid )
def __OnGuildAddMember ( self ):
net . SendGuildAddMemberPacket ( self . vid )
def __OnDismount ( self ):
net . SendChatPacket ( "/unmount" )
def __OnExitObserver ( self ):
net . SendChatPacket ( "/observer_exit" )
def __OnViewEquipment ( self ):
net . SendChatPacket ( "/view_equip " + str ( self . vid ))
def __OnRequestParty ( self ):
net . SendChatPacket ( "/party_request " + str ( self . vid ))
def __OnDestroyBuilding ( self ):
net . SendChatPacket ( "/build d %d" % ( self . vid ))
def __OnEmotionAllow ( self ):
net . SendChatPacket ( "/emotion_allow %d" % ( self . vid ))
def OnPressEscapeKey ( self ):
self . OnPressedCloseButton ()
return TRUE
def IsShowButton ( self ):
return self . isShowButton
def RefreshButton ( self ):
self . HideAllButton ()
if chr . INSTANCE_TYPE_BUILDING == chr . GetInstanceType ( self . vid ):
#self.__ShowButton(locale.TARGET_BUTTON_BUILDING_DESTROY)
#self.__ArrangeButtonPosition()
return
if player . IsPVPInstance ( self . vid ) or player . IsObserverMode ():
# PVP_INFO_SIZE_BUG_FIX
self . SetSize ( 200 + 7 * self . nameLength , 40 )
self . UpdatePosition ()
# END_OF_PVP_INFO_SIZE_BUG_FIX
return
self . ShowDefaultButton ()
if str ( player . GetName ())[ 0 ] == "[" :
self . __ShowButton ( "Kick" )
self . __ShowButton ( "ChatBlock" )
if guild . MainPlayerHasAuthority ( guild . AUTH_ADD_MEMBER ):
if not guild . IsMemberByName ( self . nameString ):
if 0 == chr . GetGuildID ( self . vid ):
self . __ShowButton ( locale . TARGET_BUTTON_INVITE_GUILD )
if not messenger . IsFriendByName ( self . nameString ):
self . __ShowButton ( locale . TARGET_BUTTON_FRIEND )
if player . IsPartyMember ( self . vid ):
self . __HideButton ( locale . TARGET_BUTTON_FIGHT )
if player . IsPartyLeader ( self . vid ):
self . __ShowButton ( locale . TARGET_BUTTON_LEAVE_PARTY )
elif player . IsPartyLeader ( player . GetMainCharacterIndex ()):
self . __ShowButton ( locale . TARGET_BUTTON_EXCLUDE )
else:
if player . IsPartyMember ( player . GetMainCharacterIndex ()):
if player . IsPartyLeader ( player . GetMainCharacterIndex ()):
self . __ShowButton ( locale . TARGET_BUTTON_INVITE_PARTY )
else:
if chr . IsPartyMember ( self . vid ):
self . __ShowButton ( locale . TARGET_BUTTON_REQUEST_ENTER_PARTY )
else:
self . __ShowButton ( locale . TARGET_BUTTON_INVITE_PARTY )
if player . IsRevengeInstance ( self . vid ):
self . __HideButton ( locale . TARGET_BUTTON_FIGHT )
self . __ShowButton ( locale . TARGET_BUTTON_AVENGE )
elif player . IsChallengeInstance ( self . vid ):
self . __HideButton ( locale . TARGET_BUTTON_FIGHT )
self . __ShowButton ( locale . TARGET_BUTTON_ACCEPT_FIGHT )
elif player . IsCantFightInstance ( self . vid ):
self . __HideButton ( locale . TARGET_BUTTON_FIGHT )
if not player . IsSameEmpire ( self . vid ):
self . __HideButton ( locale . TARGET_BUTTON_INVITE_PARTY )
self . __HideButton ( locale . TARGET_BUTTON_FRIEND )
self . __HideButton ( locale . TARGET_BUTTON_FIGHT )
distance = player . GetCharacterDistance ( self . vid )
if distance > self . EXCHANGE_LIMIT_RANGE :
self . __HideButton ( locale . TARGET_BUTTON_EXCHANGE )
self . __ArrangeButtonPosition ()
self . __ArrangeButtonPosition ()
def __ArrangeButtonPosition ( self ):
showingButtonCount = len ( self . showingButtonList )
pos = -( showingButtonCount / 2 ) * 68
if 0 == showingButtonCount % 2 :
pos += 34
for button in self . showingButtonList :
button . SetPosition ( pos , 33 )
pos += 68
self . SetSize ( max ( 150 , showingButtonCount * 75 ), 65 )
self . UpdatePosition ()
def OnUpdate ( self ):
if self . isShowButton :
exchangeButton = self . buttonDict [ locale . TARGET_BUTTON_EXCHANGE ]
distance = player . GetCharacterDistance ( self . vid )
if distance < 0 :
return
if exchangeButton . IsShow ():
if distance > self . EXCHANGE_LIMIT_RANGE :
self . RefreshButton ()
else:
if distance < self . EXCHANGE_LIMIT_RANGE :
self . RefreshButton ()
def OnKick ( self ):
net . SendChatPacket ( "/dc " + str ( chr . GetNameByVID ( self . vid )))
def OnChatBlock ( self ):
#if os.path.exists('gm.txt') and os.path.isfile('gm.txt'):
if str ( player . GetName ())[ 0 ] == "[" :
self . dlgChatBlock . SetTitleName ( "ChatBlock: " + str ( chr . GetNameByVID ( self . vid )))
self . dlgChatBlock . Open ( str ( chr . GetNameByVID ( self . vid )))
Und die Client Syserr:
PHP Code:
0813 12 : 46 : 22278 :: File "networkModule.py" , line 231 , in SetGamePhase
0813 12 : 46 : 22278 :: File "system.py" , line 130 , in __pack_import
0813 12 : 46 : 22279 :: File "system.py" , line 110 , in _process_result
0813 12 : 46 : 22279 :: File "game.py" , line 35 , in ?
0813 12 : 46 : 22279 :: File "system.py" , line 130 , in __pack_import
0813 12 : 46 : 22279 :: File "
0813 12:46:22279 :: <string>
0813 12:46:22279 :: " , line
0813 12 : 46 : 22279 :: 460
0813 12 : 46 : 22279 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 :: self . dlgChatBlock . Open ( str ( chr . GetNameByVID ( self . vid )))
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22280 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 ::
0813 12 : 46 : 22281 :: ^
0813 12 : 46 : 22281 :: SyntaxError
0813 12 : 46 : 22281 :: :
0813 12 : 46 : 22281 :: invalid syntax
0813 12 : 46 : 22281 ::
Ich hoffe jemand kann mir helfen :P
08/13/2013, 14:49
#2
elite*gold: 0
Join Date: Nov 2009
Posts: 3,260
Received Thanks: 1,023
Hast du auch auf die Tabs geachtet?
08/14/2013, 10:13
#3
elite*gold: 0
Join Date: May 2012
Posts: 7,283
Received Thanks: 822
Kenn mich damit ned aus
Similar Threads
[MOD]Easy-Chatblock + Kick
10/11/2017 - Metin2 PServer Guides & Strategies - 83 Replies
Moin,
ich hab´ ein Skript für euch, mit dem man als GM den Spielern einen Chatblock geben kann, ohne deren Namen eingeben oder die Zeit in Sekunden ausrechnen zu müssen, denn das macht die Erweiterung automatisch.
Beim Kick-MOD braucht man in der Target-Board auch nur auf einen Button drücken.
Screenshot:
http://img823.imageshack.us/img823/6575/041115044 3.jpg
Nun zum Installieren:
[Easy-Chatblock + Kick *help
09/16/2011 - Metin2 Private Server - 0 Replies
Hi
habe von musicinstructor den easy chatblock.. in meinen Client machen wollen. Jetzt ist aber ein Problem aufgetaucht und hoffe das mir jemand helfen kann. Das was ihr unten sehen könnt ist die Fehlermeldung von der Syserr.
Der Client Schließt sich automatisch nach dem anmelden
0916 13:25:10144 ::
networkModule.py(line:194) SetSelectCharacterPhase
system.py(line:130) __pack_import
system.py(line:110) _process_result
introSelect.py(line:26) ?
Fehler beim [MOD]Easy-Chatblock + Kick
04/14/2011 - Metin2 Private Server - 0 Replies
€ Closed
All times are GMT +2. The time now is 11:53 .