Vielen dank.
Beiträge von Zelatos
-
-
Hey
meine frage ist wo genau der Button zufinden ist.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
lg
-
Hallo,
Ich suche für mein Newschool Projekt ein komplettes Interface Design, was schön ausgefallenes.
Basis sind die Fliege Files reworked + Client.
Gerne mal mit Preisvorstellungen sowie evtl. Referenzen melden.
Zahle bei Trusted gerne im Vorraus.
# Bedingung ist aber das bei evtl. Bugs bzw. anpassungen keine Kosten mehr erhoben werden.
Lg.
-
Die syserr ist komplett leer.
hatte mit das HP % System eingebaut - 100% Funktionstüchtig
und dann versucht das Decimal System dazu zu bauen.
Es kommen 0 fehler. alles funktioniert also Syserr ist leer.
Nur die Positionierung ist verbuggt af.
-
Vielleicht hat ja einer zeit und lust, ich blicke da nicht durch, die Decimal HP also in Zahlen wird mir ohnehin irgendwie nicht angezeigt, obwohl eingefügt. xd
Code- import app
- import ui
- import player
- import net
- import wndMgr
- import messenger
- import guild
- import chr
- import nonplayer
- import localeInfo
- import constInfo
- class TargetBoard(ui.ThinBoard):
- BUTTON_NAME_LIST = (
- localeInfo.TARGET_BUTTON_WHISPER,
- localeInfo.TARGET_BUTTON_EXCHANGE,
- localeInfo.TARGET_BUTTON_FIGHT,
- localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
- localeInfo.TARGET_BUTTON_AVENGE,
- localeInfo.TARGET_BUTTON_FRIEND,
- localeInfo.TARGET_BUTTON_INVITE_PARTY,
- localeInfo.TARGET_BUTTON_LEAVE_PARTY,
- localeInfo.TARGET_BUTTON_EXCLUDE,
- localeInfo.TARGET_BUTTON_INVITE_GUILD,
- localeInfo.TARGET_BUTTON_DISMOUNT,
- localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
- localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
- localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
- localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
- localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
- "VOTE_BLOCK_CHAT",
- )
- GRADE_NAME = {
- nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
- nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
- nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
- nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
- nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
- nonplayer.KING : localeInfo.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.MakeGauge(130, "red")
- hpGauge.Hide()
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- hpDecimal = ui.TextLine()
- hpDecimal.SetParent(hpGauge)
- hpDecimal.SetDefaultFontName()
- hpDecimal.SetPosition(5, 5)
- hpDecimal.SetOutline()
- hpDecimal.Hide()
- hpPercenttxt = ui.TextLine()
- hpPercenttxt.SetParent(self)
- hpPercenttxt.SetPosition(160, 13)
- hpPercenttxt.SetText("")
- hpPercenttxt.Hide()
- hpGauge = ui.Gauge()
- hpGauge.SetParent(self)
- hpGauge.MakeGauge(130, "red")
- 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)
- if localeInfo.IsARABIC():
- hpGauge.SetPosition(55, 17)
- hpGauge.SetWindowHorizontalAlignLeft()
- closeButton.SetWindowHorizontalAlignLeft()
- else:
- hpGauge.SetPosition(175, 17)
- hpGauge.SetWindowHorizontalAlignRight()
- 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)
- if localeInfo.IsARABIC():
- button.SetUpVisual("d:/ymir work/ui/public/Small_Button_01.sub")
- button.SetOverVisual("d:/ymir work/ui/public/Small_Button_02.sub")
- button.SetDownVisual("d:/ymir work/ui/public/Small_Button_03.sub")
- else:
- 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[localeInfo.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE].SetEvent(ui.__mem_func__(self.OnExchange))
- self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyInvite))
- self.buttonDict[localeInfo.TARGET_BUTTON_LEAVE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyExit))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCLUDE].SetEvent(ui.__mem_func__(self.OnPartyRemove))
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember)
- self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount)
- self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
- self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
- self.buttonDict[localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY].SAFE_SetEvent(self.__OnRequestParty)
- self.buttonDict[localeInfo.TARGET_BUTTON_BUILDING_DESTROY].SAFE_SetEvent(self.__OnDestroyBuilding)
- self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW].SAFE_SetEvent(self.__OnEmotionAllow)
- self.buttonDict["VOTE_BLOCK_CHAT"].SetEvent(ui.__mem_func__(self.__OnVoteBlockChat))
- self.name = name
- self.hpGauge = hpGauge
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal = hpDecimal
- self.hpPercenttxt = hpPercenttxt
- 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.hpPercenttxt = None
- self.eventWhisper = None
- self.closeButton = None
- self.showingButtonList = None
- self.buttonDict = None
- self.name = None
- self.hpGauge = None
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal = None
- self.__Initialize()
- def OnPressedCloseButton(self):
- player.ClearTarget()
- self.Close()
- def Close(self):
- self.__Initialize()
- self.Hide()
- def Open(self, vid, name):
- if vid:
- 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()
- else:
- self.HideAllButton()
- self.__ShowButton(localeInfo.TARGET_BUTTON_WHISPER)
- self.__ShowButton("VOTE_BLOCK_CHAT")
- self.__ArrangeButtonPosition()
- self.SetTargetName(name)
- 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(localeInfo.TARGET_BUTTON_DISMOUNT)
- canShow=1
- if player.IsObserverMode():
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXIT_OBSERVER)
- canShow=1
- if canShow:
- self.__ArrangeButtonPosition()
- self.Show()
- else:
- self.Hide()
- def __ShowNameOnlyMenu(self):
- self.HideAllButton()
- 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()
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal.Hide()
- self.hpPercenttxt.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)
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- def SetHP(self, hpPercentage, iMinHP, iMaxHP):
- self.hpPercenttxt.SetPosition(200 + 7*self.nameLength-203, 13)
- self.hpPercenttxt.Show()
- self.hpDecimal.SetPosition(200 + 7*self.nameLength-204, 12)
- self.hpDecimal.Show()
- if not self.hpGauge.IsShow():
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- if self.showingButtonList:
- showingButtonCount = len(self.showingButtonList)
- else:
- showingButtonCount = 0
- if showingButtonCount > 0:
- if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_PLAYER:
- self.SetSize(max(150 + 75 * 3, 7 * 75), self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- if localeInfo.IsARABIC():
- self.name.SetPosition( self.GetWidth()-23, 13)
- else:
- self.name.SetPosition(23, 13)
- self.name.SetWindowHorizontalAlignLeft()
- self.name.SetHorizontalAlignLeft()
- self.hpGauge.Show()
- self.UpdatePosition()
- self.hpGauge.SetPercentage(hpPercentage, 100)
- self.hpPercenttxt.SetText("%d%%" % (hpPercentage))
- self.hpGauge.SetPercentage(hpPercentage, 100)
- self.hpGauge.SetPercentage(hpPercentage, 100)
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- iMinHPText = '.'.join([i - 3 < 0 and str(iMinHP)[:i] or str(iMinHP)[i-3:i] for i in range(len(str(iMinHP)) % 3, len(str(iMinHP))+1, 3) if i])
- iMaxHPText = '.'.join([i - 3 < 0 and str(iMaxHP)[:i] or str(iMaxHP)[i-3:i] for i in range(len(str(iMaxHP)) % 3, len(str(iMaxHP))+1, 3) if i])
- self.hpDecimal.SetText(str(iMinHPText) + "/" + str(iMaxHPText))
- (textWidth, textHeight)=self.hpDecimal.GetTextSize()
- if localeInfo.IsARABIC():
- self.hpDecimal.SetPosition(120 / 2 + textWidth / 2, -13)
- else:
- self.hpDecimal.SetPosition(200 + 7*self.nameLength-204, 12)
- self.hpDecimal.Show()
- else:
- def SetHP(self, hpPercentage):
- if not self.hpGauge.IsShow():
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- if self.showingButtonList:
- showingButtonCount = len(self.showingButtonList)
- else:
- showingButtonCount = 0
- if showingButtonCount > 0:
- if chr.GetInstanceType(self.GetTargetVID) != chr.INSTANCE_TYPE_PLAYER:
- if showingButtonCount != 1:
- self.SetSize(max(150, 7 * 75), self.GetHeight())
- else:
- self.SetSize(max(150, 2 * 75), self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- if localeInfo.IsARABIC():
- self.name.SetPosition( self.GetWidth()-23, 13)
- else:
- self.name.SetPosition(23, 13)
- self.name.SetWindowHorizontalAlignLeft()
- self.name.SetHorizontalAlignLeft()
- self.hpGauge.Show()
- self.UpdatePosition()
- # def SetHP(self, hpPercentage):
- # self.UpdatePosition()
- # self.hpPercenttxt.SetPosition(200 + 7*self.nameLength-205, 13)
- # self.hpPercenttxt.Show()
- # if not self.hpGauge.IsShow():
- #
- # self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- #
- # if localeInfo.IsARABIC():
- # self.name.SetPosition( self.GetWidth()-23, 13)
- # else:
- # self.name.SetPosition(23, 13)
- #
- # self.name.SetWindowHorizontalAlignLeft()
- # self.name.SetHorizontalAlignLeft()
- # self.hpGauge.Show()
- # self.UpdatePosition()
- #
- # self.hpGauge.SetPercentage(hpPercentage, 100)
- #
- # self.hpPercenttxt.SetText("%d%%" % (hpPercentage))
- #
- # self.hpGauge.SetPercentage(hpPercentage, 100)
- def ShowDefaultButton(self):
- self.isShowButton = TRUE
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
- self.showingButtonList.append(self.buttonDict[localeInfo.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 __OnVoteBlockChat(self):
- cmd = "/vote_block_chat %s" % (self.nameString)
- net.SendChatPacket(cmd)
- 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(localeInfo.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 guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER):
- if not guild.IsMemberByName(self.nameString):
- if 0 == chr.GetGuildID(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_GUILD)
- if not messenger.IsFriendByName(self.nameString):
- self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)
- if player.IsPartyMember(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- if player.IsPartyLeader(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_LEAVE_PARTY)
- elif player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXCLUDE)
- else:
- if player.IsPartyMember(player.GetMainCharacterIndex()):
- if player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- else:
- if chr.IsPartyMember(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY)
- else:
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- if player.IsRevengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_AVENGE)
- elif player.IsChallengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_ACCEPT_FIGHT)
- elif player.IsCantFightInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- if not player.IsSameEmpire(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- self.__HideButton(localeInfo.TARGET_BUTTON_FRIEND)
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- distance = player.GetCharacterDistance(self.vid)
- if distance > self.EXCHANGE_LIMIT_RANGE:
- self.__HideButton(localeInfo.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
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- if showingButtonCount <= 2:
- self.SetSize(max(150 + 125, showingButtonCount * 75), 65)
- else:
- self.SetSize(max(150, showingButtonCount * 75), 65)
- else:
- self.SetSize(max(150, showingButtonCount * 75), 65)
- self.UpdatePosition()
- # 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.UpdatePosition()
- def OnUpdate(self):
- if self.isShowButton:
- exchangeButton = self.buttonDict[localeInfo.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()
-
Hallo,
ich suche das kleine Release wo in () die Uppitems die man hat angezeigt werden
z.b Rote Perle 3 (2) -> Weil man halt 2 von 3 hat. und dann in Rot angezeigt wird und in Grün wenn man genug hat.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Lg.
-
Hallo!
So sieht es bei Spielern aus
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Bei Monstern & Metins sieht es so aus wie es soll..
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Kann mir vllt einer sagen bzw helfen wo ich das richtig anpassen kann ?
Das die Lebensleiste in der Mitte ist bei Spielern und die % Anzeige auch richtig platziert wird?
LG.
-
-
Python 2.9 installiert.
6gb ram 6kerne
Habe die out of the box FreeBSD aus den Fliege files genommen ohne zu updaten. Müsste 9.2 sein glaube ich.
Am Anfang war es ja nicht so.
Habe auch die letzten Tage nichts Welt bewegendes eingebaut.
Aber mittlerweile rebootet er ja halt einfach.
Game.core wird nicht erstellt.
Logs Poste ich wenn ich zuhause bin
-
nein eine game.core wird nicht erstellt.
Bzw habe bis dato keine gefunden.
Aber wenn er die Auto.sh durchführt, rebootet er dann?
-
Hallo!
Kurz & Knapp:
Logge ich mich NICHT Ingame ein, rebootet er nicht.
Logge ich mich ein, rebootet er nach einer weile von alleine.
Syserr's sind alle leer, bzw. deutet nichts darauf hin.
Habe auch eig nichts eingefügt was das verursachen könnte..
wie finde ich die Fehlerquelle?
-
Habe es verbaut - klappt soweit alles.
Folgende Fragen:
Wie/wo kann ich die Gürtelsidebar verschieben?
Und wenn ich das inventar aufmache sehe ich beide Sidebars, bewege ich das Inventar aber.. bleibt der Expand-Button an ort und Stelle bis ich es auf & zu mache.
-
Hast du unter oder über das
LPCHARACTER CHARACTER::DistributeExp()
geschrieben
Sowohl als auch, hat leider keinen Unterschied gemacht.
LG.
-
Ja da hast du es falsch platziert
So muss es aussehen:Code- if app.ENABLE_DRAGON_SOUL_SYSTEM:
- if self.wndDragonSoulRefine.IsShow():
- self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
- return
- if app.IsPressed(app.DIK_LCONTROL) and app.IsPressed(app.DIK_X):
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
- return
- net.SendItemSellPacket(slotIndex)
- snd.PlaySound("sound/ui/money.wav")
- return
- self.__UseItem(slotIndex)
- mouseModule.mouseController.DeattachObject()
- self.OverOutItem()
Hab es jetzt so: (Fehler besteht weiterhin)
Code- def UseItemSlot(self, slotIndex):
- curCursorNum = app.GetCursor()
- if app.SELL == curCursorNum:
- return
- if constInfo.GET_ITEM_QUESTION_DIALOG_STATUS():
- return
- slotIndex = self.__InventoryLocalSlotPosToGlobalSlotPos(slotIndex)
- if app.ENABLE_DRAGON_SOUL_SYSTEM:
- if self.wndDragonSoulRefine.IsShow():
- self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
- return
- if app.IsPressed(app.DIK_LCONTROL) and app.IsPressed(app.DIK_X):
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
- return
- net.SendItemSellPacket(slotIndex)
- snd.PlaySound("sound/ui/money.wav")
- return
- self.__UseItem(slotIndex)
- mouseModule.mouseController.DeattachObject()
- self.OverOutItem()
-
Folgendes bleibt bestehen:
Code- uiinventory.py açılır:
- Aratılır:
- self.__UseItem(slotIndex)
- mouseModule.mouseController.DeattachObject()
- self.OverOutItem()
- Üstüne eklenir:
- if app.IsPressed(app.DIK_LCONTROL) and app.IsPressed(app.DIK_X):
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
- return
- net.SendItemSellPacket(slotIndex)
- snd.PlaySound("sound/ui/money.wav")
- return
So sieht meine aus:
Code- if app.ENABLE_DRAGON_SOUL_SYSTEM:
- if self.wndDragonSoulRefine.IsShow():
- self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
- return
- self.__UseItem(slotIndex)
- mouseModule.mouseController.DeattachObject()
- self.OverOutItem()
- if app.IsPressed(app.DIK_LCONTROL) and app.IsPressed(app.DIK_X):
- if uiPrivateShopBuilder.IsBuildingPrivateShop():
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.DROP_ITEM_FAILURE_PRIVATE_SHOP)
- return
- net.SendItemSellPacket(slotIndex)
- snd.PlaySound("sound/ui/money.wav")
- return
Fehler:
Code- 1123 13:58:43426 :: Traceback (most recent call last):
- 1123 13:58:43426 :: File "ui.py", line 1548, in OnUnselectItemSlot
- 1123 13:58:43426 :: File "ui.py", line 87, in __call__
- 1123 13:58:43426 :: File "ui.py", line 78, in __call__
- 1123 13:58:43426 :: File "uiInventory.py", line 1164, in UseItemSlot
- 1123 13:58:43426 :: AttributeError
- 1123 13:58:43426 :: :
- 1123 13:58:43426 :: 'module' object has no attribute 'SendItemSellPacket'
- 1123 13:58:43426 ::
-
Versuch es mal so:
Code- break;
- }
- }
- }
- }
- #ifdef ENABLE_EMOJI_IN_TEXT
- if (m_emojiVector.size() != 0) {
- for (std::vector<SEmoji>::iterator itor = m_emojiVector.begin(); itor != m_emojiVector.end(); ++itor) {
- SEmoji& rEmo = *itor;
- if (rEmo.pInstance) {
- rEmo.pInstance->SetPosition(fStanX + rEmo.x, (fStanY + 7.0) - (rEmo.pInstance->GetHeight() / 2));
- rEmo.pInstance->Render();
- }
- }
- }
- #endif
- }
- void CGraphicTextInstance::CreateSystem(UINT uCapacity)
- {
- ms_kPool.Create(uCapacity);
- }
Problem gelöst.
Danke
-
Hallo.
Ich bin nach diesem Tut hier vorgegangen:
Bitte melden Sie sich an, um diesen Link zu sehen.
Bekomme aber folgenden Fehler:
in Member function 'GetMostAttacked()':
battle.cpp:2656/2658/2661 error: 'It' does not name y type
battle.cpp2681 error 'iDam' was not declared in this scope
Mein Code-Schnipsel:
Code- #ifdef __ENABLE_KILL_EVENT_FIX__
- LPCHARACTER CHARACTER::GetMostAttacked() {
- int iMostDam=-1;
- LPCHARACTER pkChrMostAttacked = NULL;
- auto it = m_map_kDamage.begin();
- while (it != m_map_kDamage.end()){
- //* getting information from the iterator
- const VID & c_VID = it->first;
- const it iDam = it->second.iTotalDamage;
- //* increasing the iterator
- ++it;
- //* finding the character from his vid
- LPCHARACTER pAttacker = CHARACTER_MANAGER::instance().Find(c_VID);
- //* if the attacked is now offline
- if (!pAttacker)
- continue;
- //* if the attacker is not a player
- if( pAttacker->IsNPC())
- continue;
- //* if the player is too far
- if(DISTANCE_APPROX(GetX()-pAttacker->GetX(), GetY()-pAttacker->GetY())>5000)
- continue;
- if (iDam > iMostDam){
- pkChrMostAttacked = pAttacker;
- iMostDam = iDam;
- }
- }
- return pkChrMostAttacked;
- }
- #endif
- LPCHARACTER CHARACTER::DistributeExp()
- {
- int iExpToDistribute = GetExp();
- if (iExpToDistribute <= 0)
- return NULL;
- int iTotalDam = 0;
- LPCHARACTER pkChrMostAttacked = NULL;
- int iMostDam = 0;
- typedef std::vector<TDamageInfo> TDamageInfoTable;
- TDamageInfoTable damage_info_table;
- std::map<LPPARTY, TDamageInfo> map_party_damage;
- damage_info_table.reserve(m_map_kDamage.size());
- TDamageMap::iterator it = m_map_kDamage.begin();
- // 일단 주위에 없는 사람을 걸러 낸다. (50m)
- while (it != m_map_kDamage.end())
- {
- const VID & c_VID = it->first;
- int iDam = it->second.iTotalDamage;
- ++it;
- LPCHARACTER pAttacker = CHARACTER_MANAGER::instance().Find(c_VID);
- // NPC가 때리기도 하나? -.-;
- if (!pAttacker || pAttacker->IsNPC() || DISTANCE_APPROX(GetX()-pAttacker->GetX(), GetY()-pAttacker->GetY())>5000)
- continue;
- iTotalDam += iDam;
- if (!pkChrMostAttacked || iDam > iMostDam)
- {
- pkChrMostAttacked = pAttacker;
- iMostDam = iDam;
- }
- if (pAttacker->GetParty())
- {
- std::map<LPPARTY, TDamageInfo>::iterator it = map_party_damage.find(pAttacker->GetParty());
- if (it == map_party_damage.end())
- {
- TDamageInfo di;
- di.iDam = iDam;
- di.pAttacker = NULL;
- di.pParty = pAttacker->GetParty();
- map_party_damage.insert(std::make_pair(di.pParty, di));
- }
- else
- {
- it->second.iDam += iDam;
- }
- }
- else
- {
- TDamageInfo di;
- di.iDam = iDam;
- di.pAttacker = pAttacker;
- di.pParty = NULL;
- //sys_log(0, "__ pq_damage %s %d", pAttacker->GetName(), iDam);
- //pq_damage.push(di);
- damage_info_table.push_back(di);
- }
- }
- for (std::map<LPPARTY, TDamageInfo>::iterator it = map_party_damage.begin(); it != map_party_damage.end(); ++it)
- {
- damage_info_table.push_back(it->second);
- //sys_log(0, "__ pq_damage_party [%u] %d", it->second.pParty->GetLeaderPID(), it->second.iDam);
- }
- SetExp(0);
- //m_map_kDamage.clear();
- if (iTotalDam == 0) // 데미지 준게 0이면 리턴
- return NULL;
- if (m_pkChrStone) // 돌이 있을 경우 경험치의 반을 돌에게 넘긴다.
- {
- //sys_log(0, "__ Give half to Stone : %d", iExpToDistribute>>1);
- int iExp = iExpToDistribute >> 1;
- m_pkChrStone->SetExp(m_pkChrStone->GetExp() + iExp);
- iExpToDistribute -= iExp;
- }
- sys_log(1, "%s total exp: %d, damage_info_table.size() == %d, TotalDam %d",
- GetName(), iExpToDistribute, damage_info_table.size(), iTotalDam);
- //sys_log(1, "%s total exp: %d, pq_damage.size() == %d, TotalDam %d",
- //GetName(), iExpToDistribute, pq_damage.size(), iTotalDam);
- if (damage_info_table.empty())
- return NULL;
- // 제일 데미지를 많이 준 사람이 HP 회복을 한다.
- DistributeHP(pkChrMostAttacked); // 만두 시스템
- {
- // 제일 데미지를 많이 준 사람이나 파티가 총 경험치의 20% + 자기가 때린만큼의 경험치를 먹는다.
- TDamageInfoTable::iterator di = damage_info_table.begin();
- {
- TDamageInfoTable::iterator it;
- for (it = damage_info_table.begin(); it != damage_info_table.end();++it)
- {
- if (it->iDam > di->iDam)
- di = it;
- }
- }
- int iExp = iExpToDistribute / 5;
- iExpToDistribute -= iExp;
- float fPercent = (float) di->iDam / iTotalDam;
- if (fPercent > 1.0f)
- {
- sys_err("DistributeExp percent over 1.0 (fPercent %f name %s)", fPercent, di->pAttacker->GetName());
- fPercent = 1.0f;
- }
- iExp += (int) (iExpToDistribute * fPercent);
- //sys_log(0, "%s given exp percent %.1f + 20 dam %d", GetName(), fPercent * 100.0f, di.iDam);
- di->Distribute(this, iExp);
- // 100% 다 먹었으면 리턴한다.
- if (fPercent == 1.0f)
- return pkChrMostAttacked;
- di->Clear();
- }
- {
- // 남은 80%의 경험치를 분배한다.
- TDamageInfoTable::iterator it;
- for (it = damage_info_table.begin(); it != damage_info_table.end(); ++it)
- {
- TDamageInfo & di = *it;
- float fPercent = (float) di.iDam / iTotalDam;
- if (fPercent > 1.0f)
- {
- sys_err("DistributeExp percent over 1.0 (fPercent %f name %s)", fPercent, di.pAttacker->GetName());
- fPercent = 1.0f;
- }
- //sys_log(0, "%s given exp percent %.1f dam %d", GetName(), fPercent * 100.0f, di.iDam);
- di.Distribute(this, (int) (iExpToDistribute * fPercent));
- }
- }
- return pkChrMostAttacked;
- }
Ich hoffe mir kann da jemand helfen.
LG.
-
Bei mir zeigt er statt dem Icon den Pfad des Icons an.
Hilfe?
Erstmal die Funktion verbauen das überhaupt Emojis abgerufen werden können.
Könntest du mir vielleicht sagen wie ich das mache? Bzw ein Link zu einem Tut senden?
Lg.
Habe ich soweit gemacht.
Das ist der folgende Fehler:
Bitte melden Sie sich an, um diesen Anhang zu sehen.
Code- void CGraphicTextInstance::CreateSystem(UINT uCapacity)
- {
- #ifdef ENABLE_EMOJI_IN_TEXT
- if (m_emojiVector.size() != 0)
- {
- for (std::vector<SEmoji>::iterator itor = m_emojiVector.begin(); itor != m_emojiVector.end(); ++itor)
- {
- SEmoji & rEmo = *itor;
- if (rEmo.pInstance)
- {
- rEmo.pInstance->SetPosition(fStanX + rEmo.x, (fStanY + 7.0) - (rEmo.pInstance->GetHeight() / 2));
- rEmo.pInstance->Render();
- }
- }
- }
- #endif
- ms_kPool.Create(uCapacity);
- }
-
Bei mir zeigt er statt dem Icon den Pfad des Icons an.
Hilfe?