Jump to content

xNewlezz

Inactive Member
  • Posts

    18
  • Joined

  • Last visited

  • Feedback

    0%

About xNewlezz

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

xNewlezz's Achievements

Explorer

Explorer (4/16)

  • Dedicated
  • Collaborator
  • Reacting Well
  • One Month Later
  • One Year In

Recent Badges

8

Reputation

  1. Good day, I have installed the system and it works. However, I noticed only today that it is not cross-channel & not P2P--cross. That is, the characters hang together, for example, only on Channel 1. If I log another on e.g. Channel 2, then this is excluded from the system, receives drops and it counts as if only this one character was logged in. That means he only evaluates channel 2, and has no connection with the characters from channel 1. The same applies to different P2P/Cores. If I change e.g. by channelchanger in channel 1/on the same P2P, it will be recognized again with the others. If I change the channel again to another one, or if I change to another map with another P2P, it is excluded again. Otherwise the system works fine - as long as you are on the same P2P/channel... I have absolutely no error in the installation. I have installed the system 3x functional, and after I noticed this error, now finally checked every part again more than accurately. Especially the P2P parts. There are no deviations from the HowTo or whatever. Conclusion: The system is not P2P, although parts exist for it. Accordingly, I ask here now first whether someone else has installed this system here too. Whether he can tell me if it works for him, he has the same error, or this is perhaps not even noticed. Possibly even someone who has already solved it? The system: [Hidden Content] In case you don't have access there, I have included the system (HowTo) as an attachment. [Hidden Content] I would be happy if someone responds to this or possibly even looks at the HowTo, and can determine where the problem lies or if anything is missing for it.I think attaching my files would not change anything. If someone needs an insight, I will attach them here. Discord: zimzala Kind regards.
  2. I have installed a multifarmblock which works fine. However, I noticed that if you click away the UI via X in the title bar, you can no longer open it. If I close it via Escape or Taskbar button, it can be reopened normally. If I close it via X, it no longer opens. Here is a gif about it: [Hidden Content] The syserr is empty. Can someone help me with this? Here is the file of the ui. import anti_multiple_farm import chat import ui import localeInfo MAX_RESULT_IN_PAGE = 5 #the design was developed for this number of result, do not change if you keep this design MULTIPLE_FARM_STATE_IMAGES = ["d:/ymir work/ui/pattern/visible_mark_01.tga", "d:/ymir work/ui/pattern/visible_mark_03.tga"] VIEW_MODE = 0 EDIT_MODE = 1 class player_data(ui.ScriptWindow): def __init__(self, wndParent, wndMainClass): def __MakePage(): self.SetParent(wndParent) self.SetSize(210, 20) self.Show() if not wndMainClass: return ui.ScriptWindow.__init__(self) __MakePage() self.wndMainClass = wndMainClass self.__SetUpData() self.__SetUpObjects() def __del__(self): ui.ScriptWindow.__del__(self) def Destroy(self): self.__DestroyObjects() self.__SetUpData() def __SetUpData(self): self.player_name = "" self.player_pid = -1 self.player_status = 0 def __SetUpObjects(self): self.objPlayerName = None self.objPlayerStatus = None self.objCheckBox = None def __DestroyObjects(self): if self.objPlayerName: self.objPlayerName.Hide() if self.objPlayerStatus: self.objPlayerStatus.Hide() if self.objCheckBox: self.objCheckBox.Hide() self.__SetUpObjects() def NewDataBuild(self, player_name, player_pid, player_status): self.__LoadData(player_name, player_pid, player_status) self.objPlayerName = ui.MakeTextLineWithoutAlign(self, "", 10, 7) self.objPlayerName.SetText(self.player_name) try: statusImage = MULTIPLE_FARM_STATE_IMAGES[self.player_status] except: statusImage = MULTIPLE_FARM_STATE_IMAGES[0] self.objPlayerStatus = ui.MakeImageBox(self, statusImage, 182, 7) self.objCheckBox = ui.MakeOptionsCheckBox(self, "", 184, 8) self.objCheckBox.SetCheckStatus(bool(not player_status)) self.objCheckBox.SetEvent(ui.__mem_func__(self.wndMainClass.OnClickEditStatus), "ON_CHECK", True, self.GetPID()) self.objCheckBox.SetEvent(ui.__mem_func__(self.wndMainClass.OnClickEditStatus), "ON_UNCKECK", False, self.GetPID()) return (self) def __LoadData(self, player_name, player_pid, player_status): self.player_name = player_name self.player_pid = player_pid self.player_status = player_status def SetDataState(self, flag): if flag == EDIT_MODE: self.SetStatus(self.player_status) self.objPlayerStatus.Hide() self.objCheckBox.Show() else: self.objPlayerStatus.Show() self.objCheckBox.Hide() def SetStatus(self, player_status): self.player_status = player_status self.objCheckBox.SetCheckStatus(bool(not self.player_status)) try: statusImage = MULTIPLE_FARM_STATE_IMAGES[self.player_status] except: statusImage = MULTIPLE_FARM_STATE_IMAGES[0] self.objPlayerStatus.LoadImage(statusImage) def GetStatus(self): return self.player_status def SetPreStatus(self, player_status): self.objCheckBox.SetCheckStatus(bool(not player_status)) def GetPreStatus(self): return self.objCheckBox.GetCheckStatus() def GetPID(self): return self.player_pid def GetName(self): return self.player_name class AntiMultipleFarmWnd(ui.ScriptWindow): VIEW_MODE = 0 EDIT_MODE = 1 def __init__(self): ui.ScriptWindow.__init__(self) self.__SetUpData() self.__SetUpObjects() self.__LoadWindow() def __del__(self): ui.ScriptWindow.__del__(self) def __SetUpData(self): self.player_data = [] self.data_count = 0 self.page_manage_mode = VIEW_MODE def __ClearOldData(self): if len(self.player_data) != 0: for player_data in self.player_data: player_data.Destroy() self.__SetUpData() def __SetUpObjects(self): self.main_layer_parent = None self.scrollbar = None self.edit_button = None self.close_button = None self.refresh_button = None self.save_edit_button = None self.close_edit_button = None def __LoadWindow(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "UIScript/antimultiplefarmwindow.py") GetObject = self.GetChild self.main_layer_parent = GetObject("anti_farm_bg_layer") self.scrollbar = GetObject("scrollbar") self.scrollbar.SetScrollEvent(ui.__mem_func__(self.__OnScroll)) self.edit_button = GetObject("edit_button") self.edit_button.SetEvent(ui.__mem_func__(self.OnClickEditButton)) self.close_button = GetObject("close_button") self.close_button.SetEvent(ui.__mem_func__(self.OnClickCloseButton)) self.refresh_button = GetObject("refresh_button") self.refresh_button.SetEvent(ui.__mem_func__(self.OnRefreshData)) self.save_edit_button = GetObject("save_edit_button") self.save_edit_button.SetEvent(ui.__mem_func__(self.OnSaveEditStatus)) self.close_edit_button = GetObject("close_edit_button") self.close_edit_button.SetEvent(ui.__mem_func__(self.OnClickEditButton), VIEW_MODE) except: import exception exception.Abort("AntiMultipleFarmWnd.__LoadScript.LoadObject") def __RefreshData(self): for idx in xrange(anti_multiple_farm.GetAntiFarmPlayerCount()): name, pid, status = anti_multiple_farm.GetAntiFarmPlayerData(idx) self.player_data.append(player_data(self.main_layer_parent, self).NewDataBuild(name, pid, status)) self.player_data[idx].SetPosition(0, 15 + (idx*19)) self.player_data[idx].SetDataState(self.page_manage_mode) self.player_data[idx].Show() if idx < MAX_RESULT_IN_PAGE else self.player_data[idx].Hide() self.__RefreshDataResult() self.__RefreshScrollBar() def OnSaveEditStatus(self): if self.page_manage_mode != EDIT_MODE: return allowed_pids = self.__GetPreAllowedPIDS() if self.__GetAllowedPIDS() == allowed_pids: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_2) return if len(allowed_pids) < anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_3.format(anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT)) return chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ATTEND_CHANGE_STATUS) self.OnClickEditButton(VIEW_MODE) anti_multiple_farm.SendAntiFarmStatus(*tuple(allowed_pids)) def OnClickEditButton(self, mode = None): self.page_manage_mode = not self.page_manage_mode if not mode else mode self.__RefreshEditMode() def OnClickCloseButton(self): self.Close() return True def __GetPreAllowedPIDS(self): pids = [] for player_data in self.player_data: if player_data.GetPreStatus(): pids.append(player_data.GetPID()) return pids[:anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT] def __CountPreFreeDropPlayers(self): count = 0 for player_data in self.player_data: count += int(player_data.GetPreStatus()) return count def __GetAllowedPIDS(self): pids = [] for player_data in self.player_data: if bool(not player_data.GetStatus()): pids.append(player_data.GetPID()) return pids[:anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT] def OnClickEditStatus(self, checkArg, status, PID): if self.page_manage_mode != EDIT_MODE: self.OnClickEditButton(EDIT_MODE) player_data = self.__GetPlayerDataByPID(PID) if not player_data: return if self.__CountPreFreeDropPlayers() > anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT: player_data.SetPreStatus(status) chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.ANTI_MULTIPLE_FARM_ADVISE_1.format(anti_multiple_farm.MULTIPLE_FARM_MAX_ACCOUNT)) def __RefreshEditMode(self): for player_data in self.player_data: player_data.SetDataState(self.page_manage_mode) wndTable = [self.GetChild("view_window"), self.GetChild("edit_window")] wndTable[self.page_manage_mode].Show() wndTable[not self.page_manage_mode].Hide() def __GetPlayerDataByPID(self, PID): for player_data in self.player_data: if player_data.GetPID() == PID: return player_data return None def OnRefreshData(self): self.__ClearOldData() self.__RefreshEditMode() self.__RefreshData() def OnRunMouseWheel(self, nLen): self.scrollbar.OnUp() if nLen > 0 else self.scrollbar.OnDown() return True def __OnScroll(self): if self.data_count <= MAX_RESULT_IN_PAGE: return old_scroll_pos = self.scrollbar.GetPos() pos = int(old_scroll_pos * (self.data_count - MAX_RESULT_IN_PAGE)) new_idx = 0 for idx in xrange(self.data_count): player_data = self.player_data[idx] if (idx < pos or idx >= (pos + MAX_RESULT_IN_PAGE)): player_data.Hide() else: player_data.SetPosition(0, 15 + (new_idx*19)) player_data.Show() new_idx+=1 def __RefreshScrollBar(self): if not self.scrollbar: return if self.data_count: new_mid_bar_size = min(0.94, (float(MAX_RESULT_IN_PAGE) / float(self.data_count))) self.scrollbar.SetMiddleBarSize(new_mid_bar_size) self.scrollbar.SetPos(0.0) def __RefreshDataResult(self): self.data_count = len(self.player_data) def Open(self): self.OnRefreshData() self.SetCenterPosition() self.Show() self.SetTop() def Close(self): self.__ClearOldData() self.Hide() def OnPressEscapeKey(self): self.Close() if self.page_manage_mode != EDIT_MODE else self.OnClickEditButton(VIEW_MODE) return True Liebe Grüße.
  3. Good day, I have installed the autopickup system. This works so far and does what it should. However, a part of the system does not work, in which I can deactivate the Autopickup. I should be able to deactivate and reactivate it by clicking on the icon in the affect bar. Unfortunately this has absolutely no function for me. However, a Syserr is also not output. Completely empty. Heres a Gif in addition: [Hidden Content] Below I attach my uiaffectshower.py and the one of the HowTo. I would be happy if someone would have a look at it. Greetings and thanks in advance. The HowTo uiaffectshower.py: #Search AFFECT_DATA_DICT = { ... } # Add after if app.RENEWAL_PICKUP_AFFECT: AFFECT_DATA_DICT[chr.NEW_AFFECT_PICKUP_ENABLE] = (localeInfo.NEW_AFFECT_PICKUP_ENABLE, "icon/affectshower/pickup_active.tga") AFFECT_DATA_DICT[chr.NEW_AFFECT_PICKUP_DEACTIVE] = (localeInfo.NEW_AFFECT_PICKUP_DEACTIVE, "icon/affectshower/pickup_deactive.tga") # Search INFINITE_AFFECT_DURATION = 0x1FFFFFFF #Add after if app.RENEWAL_PICKUP_AFFECT: pickupQuestionDialog = None #Seach if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY: description = description(float(value)) # Add after if app.RENEWAL_PICKUP_AFFECT: if affect == chr.NEW_AFFECT_PICKUP_ENABLE or affect == chr.NEW_AFFECT_PICKUP_DEACTIVE: image.SetEvent(ui.__mem_func__(self.__OnClickPickup),"mouse_click", affect) # Search def BINARY_NEW_RemoveAffect(self, type, pointIdx): # add before if app.RENEWAL_PICKUP_AFFECT: def OnChangePickup(self, answer): if not self.pickupQuestionDialog: return if answer: net.SendChatPacket("/pickup_affect") self.pickupQuestionDialog.Close() self.pickupQuestionDialog = None def __OnClickPickup(self, emptyArg, affect): if self.pickupQuestionDialog: self.pickupQuestionDialog.Close() pickupQuestionDialog = uiCommon.QuestionDialog() pickupQuestionDialog.SetText(localeInfo.PICKUP_DEACTIVE_DIALOG if chr.NEW_AFFECT_PICKUP_ENABLE else localeInfo.PICKUP_ACTIVE_DIALOG) pickupQuestionDialog.SetAcceptEvent(lambda arg = True: self.OnChangePickup(arg)) pickupQuestionDialog.SetCancelEvent(lambda arg = False: self.OnChangePickup(arg)) pickupQuestionDialog.Open() self.pickupQuestionDialog = pickupQuestionDialog My uiaffectshower.py: import ui import localeInfo import chr import item import app import skill import player import uiToolTip import math AFFECT = { "index" : { 0 : chr.AFFECT_HOSIN, 1 : chr.AFFECT_BOHO, 2 : chr.AFFECT_GICHEON, 3 : chr.AFFECT_KWAESOK, 4 : chr.AFFECT_JEUNGRYEOK, }, "skillIndex" : { 0 : 94, 1 : 95, 2 : 96, 3 : 110, 4 : 111, }, } # WEDDING class LovePointImage(ui.ExpandedImageBox): FILE_PATH = "d:/ymir work/ui/pattern/LovePoint/" FILE_DICT = { 0 : FILE_PATH + "01.dds", 1 : FILE_PATH + "02.dds", 2 : FILE_PATH + "02.dds", 3 : FILE_PATH + "03.dds", 4 : FILE_PATH + "04.dds", 5 : FILE_PATH + "05.dds", } def __init__(self): ui.ExpandedImageBox.__init__(self) self.loverName = "" self.lovePoint = 0 self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __del__(self): ui.ExpandedImageBox.__del__(self) def SetLoverInfo(self, name, lovePoint): self.loverName = name self.lovePoint = lovePoint self.__Refresh() def OnUpdateLovePoint(self, lovePoint): self.lovePoint = lovePoint self.__Refresh() def __Refresh(self): self.lovePoint = max(0, self.lovePoint) self.lovePoint = min(100, self.lovePoint) if 0 == self.lovePoint: loveGrade = 0 else: loveGrade = self.lovePoint / 25 + 1 fileName = self.FILE_DICT.get(loveGrade, self.FILE_PATH+"00.dds") try: self.LoadImage(fileName) except: import dbg dbg.TraceError("LovePointImage.SetLoverInfo(lovePoint=%d) - LoadError %s" % (self.lovePoint, fileName)) self.SetScale(0.7, 0.7) self.toolTip.ClearToolTip() self.toolTip.SetTitle(self.loverName) self.toolTip.AppendTextLine(localeInfo.AFF_LOVE_POINT % (self.lovePoint)) self.toolTip.ResizeToolTip() def OnMouseOverIn(self): self.toolTip.ShowToolTip() def OnMouseOverOut(self): self.toolTip.HideToolTip() # END_OF_WEDDING class HorseImage(ui.ExpandedImageBox): FILE_PATH = "d:/ymir work/ui/pattern/HorseState/" FILE_DICT = { 00 : FILE_PATH+"00.dds", 01 : FILE_PATH+"00.dds", 02 : FILE_PATH+"00.dds", 03 : FILE_PATH+"00.dds", 10 : FILE_PATH+"10.dds", 11 : FILE_PATH+"11.dds", 12 : FILE_PATH+"12.dds", 13 : FILE_PATH+"13.dds", 20 : FILE_PATH+"20.dds", 21 : FILE_PATH+"21.dds", 22 : FILE_PATH+"22.dds", 23 : FILE_PATH+"23.dds", 30 : FILE_PATH+"30.dds", 31 : FILE_PATH+"31.dds", 32 : FILE_PATH+"32.dds", 33 : FILE_PATH+"33.dds", } def __init__(self): ui.ExpandedImageBox.__init__(self) #self.textLineList = [] self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __GetHorseGrade(self, level): if 0 == level: return 0 return (level-1)/10 + 1 def SetState(self, level, health, battery): #self.textLineList=[] self.toolTip.ClearToolTip() if level>0: try: grade = self.__GetHorseGrade(level) self.__AppendText(localeInfo.LEVEL_LIST[grade]) except IndexError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery) return try: healthName=localeInfo.HEALTH_LIST[health] if len(healthName)>0: self.__AppendText(healthName) except IndexError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery) return if health>0: if battery==0: self.__AppendText(localeInfo.NEEFD_REST) try: fileName=self.FILE_DICT[health*10+battery] except KeyError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery) try: self.LoadImage(fileName) except: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName) self.SetScale(0.7, 0.7) def __AppendText(self, text): self.toolTip.AppendTextLine(text) self.toolTip.ResizeToolTip() #x=self.GetWidth()/2 #textLine = ui.TextLine() #textLine.SetParent(self) #textLine.SetSize(0, 0) #textLine.SetOutline() #textLine.Hide() #textLine.SetPosition(x, 40+len(self.textLineList)*16) #textLine.SetText(text) #self.textLineList.append(textLine) def OnMouseOverIn(self): #for textLine in self.textLineList: # textLine.Show() self.toolTip.ShowToolTip() def OnMouseOverOut(self): #for textLine in self.textLineList: # textLine.Hide() self.toolTip.HideToolTip() # AUTO_POTION class AutoPotionImage(ui.ExpandedImageBox): FILE_PATH_HP = "d:/ymir work/ui/pattern/auto_hpgauge/" FILE_PATH_SP = "d:/ymir work/ui/pattern/auto_spgauge/" def __init__(self): ui.ExpandedImageBox.__init__(self) self.loverName = "" self.lovePoint = 0 self.potionType = player.AUTO_POTION_TYPE_HP self.filePath = "" self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __del__(self): ui.ExpandedImageBox.__del__(self) def SetPotionType(self, type): self.potionType = type if player.AUTO_POTION_TYPE_HP == type: self.filePath = self.FILE_PATH_HP elif player.AUTO_POTION_TYPE_SP == type: self.filePath = self.FILE_PATH_SP def OnUpdateAutoPotionImage(self): self.__Refresh() def __Refresh(self): print "__Refresh" isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(self.potionType) amountPercent = (float(currentAmount) / totalAmount) * 100.0 grade = math.ceil(amountPercent / 20) if 5.0 > amountPercent: grade = 0 if 80.0 < amountPercent: grade = 4 if 90.0 < amountPercent: grade = 5 fmt = self.filePath + "%.2d.dds" fileName = fmt % grade print self.potionType, amountPercent, fileName try: self.LoadImage(fileName) except: import dbg dbg.TraceError("AutoPotionImage.__Refresh(potionType=%d) - LoadError %s" % (self.potionType, fileName)) self.SetScale(0.7, 0.7) self.toolTip.ClearToolTip() if player.AUTO_POTION_TYPE_HP == type: self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_HP) else: self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_SP) self.toolTip.AppendTextLine(localeInfo.TOOLTIP_AUTO_POTION_REST % (amountPercent)) self.toolTip.ResizeToolTip() def OnMouseOverIn(self): self.toolTip.ShowToolTip() def OnMouseOverOut(self): self.toolTip.HideToolTip() # END_OF_AUTO_POTION class AffectImage(ui.ExpandedImageBox): def __init__(self): ui.ExpandedImageBox.__init__(self) self.toolTipText = None self.isSkillAffect = TRUE self.description = None self.endTime = 0 self.affect = None self.isClocked = TRUE self.affectQuestionDialog = None def SetAffect(self, affect): self.affect = affect def GetAffect(self): return self.affect def SetToolTipText(self, text, x = 0, y = -19): if not self.toolTipText: textLine = ui.TextLine() textLine.SetParent(self) textLine.SetSize(0, 0) textLine.SetOutline() textLine.Hide() self.toolTipText = textLine if app.PREMIUM_SYSTEM: if self.affect == chr.NEW_AFFECT_PREMIUM_RANK: self.toolTipText.SetEnterToken(True) self.toolTipText.SetText(text) w, h = self.toolTipText.GetTextSize() self.toolTipText.SetPosition(max(0, x + self.GetWidth()/2 - w/2), y) def SetDescription(self, description): self.description = description def SetDuration(self, duration): self.endTime = 0 if duration > 0: self.endTime = app.GetGlobalTimeStamp() + duration def UpdateAutoPotionDescription(self): potionType = 0 if self.affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: potionType = player.AUTO_POTION_TYPE_HP else: potionType = player.AUTO_POTION_TYPE_SP isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(potionType) #print "UpdateAutoPotionDescription ", isActivated, currentAmount, totalAmount, slotIndex amountPercent = 0.0 try: amountPercent = (float(currentAmount) / totalAmount) * 100.0 except: amountPercent = 100.0 self.SetToolTipText(self.description % amountPercent, 0, 40) def SetClock(self, isClocked): self.isClocked = isClocked def UpdateDescription(self): if not self.isClocked: self.__UpdateDescription2() return if not self.description: return toolTip = self.description if self.endTime > 0: leftTime = localeInfo.SecondToDHM(self.endTime - app.GetGlobalTimeStamp()) toolTip += " (%s : %s)" % (localeInfo.LEFT_TIME, leftTime) self.SetToolTipText(toolTip, 0, 40) #독일버전에서 시간을 제거하기 위해서 사용 def __UpdateDescription2(self): if not self.description: return toolTip = self.description self.SetToolTipText(toolTip, 0, 40) def SetSkillAffectFlag(self, flag): self.isSkillAffect = flag def IsSkillAffect(self): return self.isSkillAffect def OnRemoveAffectQuestionDialog(self, affect): import uiCommon self.RemoveAffectQuestionDialog = uiCommon.QuestionDialog() self.RemoveAffectQuestionDialog.SetText(localeInfo.REMOVE_AFFECT_QUESTION % skill.GetSkillName(affect)) self.RemoveAffectQuestionDialog.SetWidth(350) self.RemoveAffectQuestionDialog.SetAcceptEvent(lambda arg = TRUE: self.CloseAffectQuestionDialog(arg, affect)) self.RemoveAffectQuestionDialog.SetCancelEvent(lambda arg = FALSE: self.CloseAffectQuestionDialog(arg, affect)) self.RemoveAffectQuestionDialog.Open() def CloseAffectQuestionDialog(self, answer, affect): import net if not self.RemoveAffectQuestionDialog: return self.RemoveAffectQuestionDialog.Close() self.RemoveAffectQuestionDialog = None if not answer or not affect: return net.SendChatPacket("/remove_skill_affect %d" % affect) return TRUE def OnMouseOverIn(self): if self.toolTipText: self.toolTipText.Show() def OnMouseLeftButtonDown(self): for index in xrange(len(AFFECT["index"])): if self.affect == AFFECT["index"][index]: self.OnRemoveAffectQuestionDialog(AFFECT["skillIndex"][index]) def OnMouseOverOut(self): if self.toolTipText: self.toolTipText.Hide() class AffectShower(ui.Window): MALL_DESC_IDX_START = 1000 IMAGE_STEP = 25 AFFECT_MAX_NUM = 32 INFINITE_AFFECT_DURATION = 0x1FFFFFFF if app.RENEWAL_PICKUP_AFFECT: pickupQuestionDialog = None AFFECT_DATA_DICT = { chr.AFFECT_POISON : (localeInfo.SKILL_TOXICDIE, "d:/ymir work/ui/skill/common/affect/poison.sub"), chr.AFFECT_SLOW : (localeInfo.SKILL_SLOW, "d:/ymir work/ui/skill/common/affect/slow.sub"), chr.AFFECT_STUN : (localeInfo.SKILL_STUN, "d:/ymir work/ui/skill/common/affect/stun.sub"), chr.AFFECT_ATT_SPEED_POTION : (localeInfo.SKILL_INC_ATKSPD, "d:/ymir work/ui/skill/common/affect/Increase_Attack_Speed.sub"), chr.AFFECT_MOV_SPEED_POTION : (localeInfo.SKILL_INC_MOVSPD, "d:/ymir work/ui/skill/common/affect/Increase_Move_Speed.sub"), chr.AFFECT_FISH_MIND : (localeInfo.SKILL_FISHMIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub"), chr.AFFECT_JEONGWI : (localeInfo.SKILL_JEONGWI, "d:/ymir work/ui/skill/warrior/jeongwi_03.sub",), chr.AFFECT_GEOMGYEONG : (localeInfo.SKILL_GEOMGYEONG, "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub",), chr.AFFECT_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",), chr.AFFECT_GYEONGGONG : (localeInfo.SKILL_GYEONGGONG, "d:/ymir work/ui/skill/assassin/gyeonggong_03.sub",), chr.AFFECT_EUNHYEONG : (localeInfo.SKILL_EUNHYEONG, "d:/ymir work/ui/skill/assassin/eunhyeong_03.sub",), chr.AFFECT_GWIGEOM : (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/sura/gwigeom_03.sub",), chr.AFFECT_GONGPO : (localeInfo.SKILL_GONGPO, "d:/ymir work/ui/skill/sura/gongpo_03.sub",), chr.AFFECT_JUMAGAP : (localeInfo.SKILL_JUMAGAP, "d:/ymir work/ui/skill/sura/jumagap_03.sub"), chr.AFFECT_HOSIN : (localeInfo.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",), chr.AFFECT_BOHO : (localeInfo.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",), chr.AFFECT_KWAESOK : (localeInfo.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",), chr.AFFECT_HEUKSIN : (localeInfo.SKILL_HEUKSIN, "d:/ymir work/ui/skill/sura/heuksin_03.sub",), chr.AFFECT_MUYEONG : (localeInfo.SKILL_MUYEONG, "d:/ymir work/ui/skill/sura/muyeong_03.sub",), chr.AFFECT_GICHEON : (localeInfo.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",), chr.AFFECT_JEUNGRYEOK : (localeInfo.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",), chr.AFFECT_PABEOP : (localeInfo.SKILL_PABEOP, "d:/ymir work/ui/skill/sura/pabeop_03.sub",), chr.AFFECT_FALLEN_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",), 28 : (localeInfo.SKILL_FIRE, "d:/ymir work/ui/skill/sura/hwayeom_03.sub",), chr.AFFECT_CHINA_FIREWORK : (localeInfo.SKILL_POWERFUL_STRIKE, "d:/ymir work/ui/skill/common/affect/powerfulstrike.sub",), # BUFF SYSTEM START chr.AFFECT_KWAESOK_ITEM : (localeInfo.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",), chr.AFFECT_BOHO_ITEM : (localeInfo.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",), chr.AFFECT_GICHEON_ITEM : (localeInfo.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",), chr.AFFECT_HOSIN_ITEM : (localeInfo.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",), chr.AFFECT_JEUNGRYEOK_ITEM : (localeInfo.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",), # BUFF SYSTEM END #64 - END chr.NEW_AFFECT_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",), chr.NEW_AFFECT_ITEM_BONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",), chr.NEW_AFFECT_SAFEBOX : (localeInfo.TOOLTIP_MALL_SAFEBOX, "d:/ymir work/ui/skill/common/affect/safebox.sub",), chr.NEW_AFFECT_AUTOLOOT : (localeInfo.TOOLTIP_MALL_AUTOLOOT, "d:/ymir work/ui/skill/common/affect/autoloot.sub",), chr.NEW_AFFECT_FISH_MIND : (localeInfo.TOOLTIP_MALL_FISH_MIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub",), chr.NEW_AFFECT_MARRIAGE_FAST : (localeInfo.TOOLTIP_MALL_MARRIAGE_FAST, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",), chr.NEW_AFFECT_GOLD_BONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",), chr.NEW_AFFECT_NO_DEATH_PENALTY : (localeInfo.TOOLTIP_APPLY_NO_DEATH_PENALTY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), chr.NEW_AFFECT_SKILL_BOOK_BONUS : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_BONUS, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_NO_DELAY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), # 자동물약 hp, sp chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_hpgauge/05.dds"), chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_spgauge/05.dds"), #chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), #chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub"), MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_DEFBONUS : (localeInfo.TOOLTIP_MALL_DEFBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/def_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_EXPBONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_ITEMBONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_GOLDBONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",), MALL_DESC_IDX_START+player.POINT_CRITICAL_PCT : (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,"d:/ymir work/ui/skill/common/affect/critical.sub"), MALL_DESC_IDX_START+player.POINT_PENETRATE_PCT : (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_MAX_HP_PCT : (localeInfo.TOOLTIP_MAX_HP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_MAX_SP_PCT : (localeInfo.TOOLTIP_MAX_SP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_PC_BANG_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/EXP_Bonus_p_on.sub",), MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",), } if app.RENEWAL_PICKUP_AFFECT: AFFECT_DATA_DICT[chr.NEW_AFFECT_PICKUP_ENABLE] = (localeInfo.NEW_AFFECT_PICKUP_ENABLE, "icon/affectshower/pickup_active.tga") AFFECT_DATA_DICT[chr.NEW_AFFECT_PICKUP_DEACTIVE] = (localeInfo.NEW_AFFECT_PICKUP_DEACTIVE, "icon/affectshower/pickup_deactive.tga") if app.ENABLE_DRAGON_SOUL_SYSTEM: # 용혼석 천, 지 덱. AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga") AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga") if app.PREMIUM_SYSTEM: AFFECT_DATA_DICT[chr.NEW_AFFECT_PREMIUM_RANK] = (localeInfo.TOOLTIP_PREMIUM_RANK, "d:/ymir work/ui/skill/common/affect/premium.sub",) def __init__(self): ui.Window.__init__(self) self.serverPlayTime=0 self.clientPlayTime=0 self.lastUpdateTime=0 self.affectImageDict={} self.horseImage=None self.lovePointImage=None self.autoPotionImageHP = AutoPotionImage() self.autoPotionImageSP = AutoPotionImage() self.SetPosition(10, 10) self.Show() def ClearAllAffects(self): self.horseImage=None self.lovePointImage=None self.affectImageDict={} self.__ArrangeImageList() def ClearAffects(self): ## 스킬 이펙트만 없앱니다. self.living_affectImageDict={} for key, image in self.affectImageDict.items(): if not image.IsSkillAffect(): self.living_affectImageDict[key] = image self.affectImageDict = self.living_affectImageDict self.__ArrangeImageList() def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration): print "BINARY_NEW_AddAffect", type, pointIdx, value, duration if type < 500: return if type == chr.NEW_AFFECT_MALL: affect = self.MALL_DESC_IDX_START + pointIdx else: affect = type if self.affectImageDict.has_key(affect): return if not self.AFFECT_DATA_DICT.has_key(affect): return ## 용신의 가호, 선인의 교훈은 Duration 을 0 으로 설정한다. if affect == chr.NEW_AFFECT_NO_DEATH_PENALTY or\ affect == chr.NEW_AFFECT_SKILL_BOOK_BONUS or\ affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or\ affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY or\ affect == chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY: duration = 0 affectData = self.AFFECT_DATA_DICT[affect] description = affectData[0] filename = affectData[1] if pointIdx == player.POINT_MALL_ITEMBONUS or\ pointIdx == player.POINT_MALL_GOLDBONUS: value = 1 + float(value) / 100.0 trashValue = 123 #if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: if trashValue == 1: try: #image = AutoPotionImage() #image.SetParent(self) image = None if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY: image.SetPotionType(player.AUTO_POTION_TYPE_SP) image = self.autoPotionImageSP #self.autoPotionImageSP = image; else: image.SetPotionType(player.AUTO_POTION_TYPE_HP) image = self.autoPotionImageHP #self.autoPotionImageHP = image; image.SetParent(self) image.Show() image.OnUpdateAutoPotionImage() self.affectImageDict[affect] = image self.__ArrangeImageList() except Exception, e: print "except Aff auto potion affect ", e pass else: if app.PREMIUM_SYSTEM: if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY and affect != chr.NEW_AFFECT_PREMIUM_RANK: description = description(float(value)) else: if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY: description = description(float(value)) if app.RENEWAL_PICKUP_AFFECT: if affect == chr.NEW_AFFECT_PICKUP_ENABLE or affect == chr.NEW_AFFECT_PICKUP_DEACTIVE: image.SetEvent(ui.__mem_func__(self.__OnClickPickup),"mouse_click", affect) try: print "Add affect %s" % affect image = AffectImage() image.SetParent(self) image.LoadImage(filename) image.SetDescription(description) image.SetDuration(duration) image.SetAffect(affect) if affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE or\ affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 or\ self.INFINITE_AFFECT_DURATION < duration: image.SetClock(FALSE) image.UpdateDescription() elif affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: image.UpdateAutoPotionDescription() else: image.UpdateDescription() if affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK1 or affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK2: image.SetScale(1, 1) else: image.SetScale(0.7, 0.7) image.SetSkillAffectFlag(FALSE) image.Show() self.affectImageDict[affect] = image self.__ArrangeImageList() except Exception, e: print "except Aff affect ", e pass def BINARY_NEW_RemoveAffect(self, type, pointIdx): if type == chr.NEW_AFFECT_MALL: affect = self.MALL_DESC_IDX_START + pointIdx else: affect = type print "Remove Affect %s %s" % ( type , pointIdx ) self.__RemoveAffect(affect) self.__ArrangeImageList() if app.RENEWAL_PICKUP_AFFECT: def OnChangePickup(self, answer): if not self.pickupQuestionDialog: return if answer: net.SendChatPacket("/pickup_affect") self.pickupQuestionDialog.Close() self.pickupQuestionDialog = None def __OnClickPickup(self, emptyArg, affect): if self.pickupQuestionDialog: self.pickupQuestionDialog.Close() pickupQuestionDialog = uiCommon.QuestionDialog() pickupQuestionDialog.SetText(localeInfo.PICKUP_DEACTIVE_DIALOG if chr.NEW_AFFECT_PICKUP_ENABLE else localeInfo.PICKUP_ACTIVE_DIALOG) pickupQuestionDialog.SetAcceptEvent(lambda arg = True: self.OnChangePickup(arg)) pickupQuestionDialog.SetCancelEvent(lambda arg = False: self.OnChangePickup(arg)) pickupQuestionDialog.Open() self.pickupQuestionDialog = pickupQuestionDialog def SetAffect(self, affect): self.__AppendAffect(affect) self.__ArrangeImageList() def ResetAffect(self, affect): self.__RemoveAffect(affect) self.__ArrangeImageList() def SetLoverInfo(self, name, lovePoint): image = LovePointImage() image.SetParent(self) image.SetLoverInfo(name, lovePoint) self.lovePointImage = image self.__ArrangeImageList() def ShowLoverState(self): if self.lovePointImage: self.lovePointImage.Show() self.__ArrangeImageList() def HideLoverState(self): if self.lovePointImage: self.lovePointImage.Hide() self.__ArrangeImageList() def ClearLoverState(self): self.lovePointImage = None self.__ArrangeImageList() def OnUpdateLovePoint(self, lovePoint): if self.lovePointImage: self.lovePointImage.OnUpdateLovePoint(lovePoint) def SetHorseState(self, level, health, battery): if level==0: self.horseImage=None else: image = HorseImage() image.SetParent(self) image.SetState(level, health, battery) image.Show() self.horseImage=image self.__ArrangeImageList() def SetPlayTime(self, playTime): self.serverPlayTime = playTime self.clientPlayTime = app.GetTime() if localeInfo.IsVIETNAM(): image = PlayTimeImage() image.SetParent(self) image.SetPlayTime(playTime) image.Show() self.playTimeImage=image self.__ArrangeImageList() def __AppendAffect(self, affect): if self.affectImageDict.has_key(affect): return try: affectData = self.AFFECT_DATA_DICT[affect] except KeyError: return name = affectData[0] filename = affectData[1] skillIndex = player.AffectIndexToSkillIndex(affect) if 0 != skillIndex: name = skill.GetSkillName(skillIndex) image = AffectImage() image.SetParent(self) image.SetSkillAffectFlag(TRUE) image.SetAffect(affect) try: image.LoadImage(filename) except: pass image.SetToolTipText(name, 0, 40) image.SetScale(0.7, 0.7) image.Show() self.affectImageDict[affect] = image def __RemoveAffect(self, affect): """ if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY: self.autoPotionImageSP.Hide() if affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: self.autoPotionImageHP.Hide() """ if not self.affectImageDict.has_key(affect): print "__RemoveAffect %s ( No Affect )" % affect return print "__RemoveAffect %s ( Affect )" % affect del self.affectImageDict[affect] self.__ArrangeImageList() def __ArrangeImageList(self): width = len(self.affectImageDict) * self.IMAGE_STEP if self.lovePointImage: width+=self.IMAGE_STEP if self.horseImage: width+=self.IMAGE_STEP self.SetSize(width, 26) xPos = 0 if self.lovePointImage: if self.lovePointImage.IsShow(): self.lovePointImage.SetPosition(xPos, 0) xPos += self.IMAGE_STEP if self.horseImage: self.horseImage.SetPosition(xPos, 0) xPos += self.IMAGE_STEP for image in self.affectImageDict.values(): image.SetPosition(xPos, 0) xPos += self.IMAGE_STEP def OnUpdate(self): try: if app.GetGlobalTime() - self.lastUpdateTime > 500: #if 0 < app.GetGlobalTime(): self.lastUpdateTime = app.GetGlobalTime() for image in self.affectImageDict.values(): if image.GetAffect() == chr.NEW_AFFECT_AUTO_HP_RECOVERY or image.GetAffect() == chr.NEW_AFFECT_AUTO_SP_RECOVERY: image.UpdateAutoPotionDescription() continue if not image.IsSkillAffect(): image.UpdateDescription() except Exception, e: print "AffectShower::OnUpdate error : ", e
  4. Hello, I have the problem that no message is sent when calling. Triggered is the function nevertheless, because after sending from nothing, I have to wait 15 seconds. Here an explanation by Gif: https://metin2.download/video/AFQzH5q8V9hmkfAaEfowtn3u6JZRFpJR/.mp4 The normal chat, guilds and also the group chat works and sends all messages out. Only when calling nothing is sent. Syserr, logs etc are of course empty. Would someone fix this for me for money? PM on Discord: Zimzala#3619 Best regards.
  5. How can I make the armor costumes tradable without them being able to be worn by both genders?
  6. Good evening, You probably know the problem that the bell shining does not work in the Tamashi Shining System. For this there is this fix: //InstanceBase.cpp //bool CInstanceBase::AttachShiningEffect(DWORD dwWeapon) //this: m_swordShiningRight[] = EFFECT_SHINING_WEAPON + EFFECT_SMALLSWORD_REFINED7 + __GetShiningEffect(); //to m_swordShiningRight[] = EFFECT_SHINING_WEAPON + EFFECT_SHINING_WEAPON_BELL + __GetShiningEffect(); //InstanceBase.h //change like this: enum { EFFECT_SHINING_WEAPON_SWORD, EFFECT_SHINING_WEAPON_SWORD_END = EFFECT_SHINING_WEAPON_SWORD + 19, EFFECT_SHINING_WEAPON_BOW, EFFECT_SHINING_WEAPON_BOW_END = EFFECT_SHINING_WEAPON_BOW + 19, EFFECT_SHINING_WEAPON_FAN, EFFECT_SHINING_WEAPON_FAN_END = EFFECT_SHINING_WEAPON_FAN + 19, EFFECT_SHINING_WEAPON_BELL, EFFECT_SHINING_WEAPON_BELL_END = EFFECT_SHINING_WEAPON_BELL + 19, EFFECT_SHINING_WEAPON_DAGGER_R, EFFECT_SHINING_WEAPON_DAGGER_R_END = EFFECT_SHINING_WEAPON_DAGGER_R + 19, EFFECT_SHINING_WEAPON_DAGGER_L, EFFECT_SHINING_WEAPON_DAGGER_L_END = EFFECT_SHINING_WEAPON_DAGGER_L + 19, EFFECT_SHINING_WEAPON_NUM, }; This also works so that the bell shining is displayed, but then the shining of one side of the dagger no longer works. Because the side of the dagger which then no longer works is entered as the last, it seems to me that there is somewhere a specification, a limit for the entries. add Bell in between, this is now counted, but the last entry dagger no longer, Does anyone know the fix for all Shinings working properly? Thanks in advance.
  7. Good evening, The problem is that after Relog the remaining kills of the hunting quests are reset. Example: Kill 50 wild dogs. I kill 3 pieces and there are 47 remaining which still have to be killed. I perform a relog, channel change or something else like that, and the remaining 47 kills are reseted. That means there are 50 again. quest kampagneteil1 begin state start begin when login or levelup with pc.level >= 0 begin notice("New mission available - The Wild Dog Plague.") set_state(kampagne1) end end state kampagne1 begin when letter begin send_letter("The Wild Dog Plague") end when button or info begin say_title("The Wild Dog Plague") say("Wild dogs roam the gates of the village.") say("Kill 50 of these plagues and you will") say("be richly rewarded!") say("") say_reward("Task: Kill 50x Wild Dog.") say_reward("Reward:") say_reward("- Weapon+6.") say_reward("- 10.000 Yang.") set_state(kampagne2) end end state kampagne2 begin when letter begin pc.setqf("state", 0) q.set_counter("Remaining",50) end when button or info begin say_title("The Wild Dog Plague") say("I see you are busy earning your reward.") say("") say_reward( "You still have to defeat ".." "..50 - pc.getqf("state").." wild dogs ".. pc.get_name() ..".") say("") say("Continued success!") end when 101.kill begin local count = pc.getqf("state") + 1 if count <= 50 then pc.setqf("state", count) q.set_counter("Remaining", 50 - count) if count == 50 then say_title("The Wild Dog Plague") say("") say("You have killed all the wild dogs.") say("A special reward is waiting for you!") say("Get ready for your next job!") say("") say_reward("- Weapon+6.") say_reward("- 10.000 Yang.") pc.changegold(10000) syschat("You have received 10.000 Yang.") if pc.get_job() == 0 then pc.give_item2(16, 1) elseif pc.get_job() == 1 then pc.give_item2(1006, 1) elseif pc.get_job() == 2 then pc.give_item2(16, 1) elseif pc.get_job() == 3 then pc.give_item2(7006, 1) end clear_letter() set_quest_state("blah2", "run") set_state( __COMPLETE__ ) end end end end state __COMPLETE__ begin end end
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.