Jump to content

xP3NG3Rx

Honorable Member
  • Posts

    839
  • Joined

  • Days Won

    393
  • Feedback

    100%

Everything posted by xP3NG3Rx

  1. Here is a little fix to disable the double potion sounds (green & purple): UI\PythonItem.cpp -> DWORD CPythonItem::__GetUseSoundType(const CItemData& c_rkItemData) Search the case of the ability_up and replace it with this: case CItemData::USE_ABILITY_UP: { if ((c_rkItemData.GetIndex() == 27053 || c_rkItemData.GetIndex() == 27054) || (c_rkItemData.GetIndex() >= 27100 && c_rkItemData.GetIndex() <= 27105) || (c_rkItemData.GetIndex() >= 27110 && c_rkItemData.GetIndex() <= 27115)) return USESOUND_NONE; else return USESOUND_POTION; } break; This is an exception to block the playusesound when you are using an item from inventory: netSendItemUsePacket -> CPythonNetworkStream::SendItemUsePacket -> __PlayInventoryItemUseSound Because of the SpecificEffectPacket plays the sound of the potions as well.
  2. cmd_general.cpp ACMD(do_restart) iTimeToDead is a counter which is counting down from 180 while the deadevent is active == 3*60 --> If it passed the character automaticaly will be restarted to the town. Here: You have to edit the 170 for yourself. This is the restart at the current position, which is 10 secs(180-170), if you want 3 secs only, just change it to 177(180-3). And here is the restart to town: 180-173 = 7 secs, I hope you'll understand.
  3. uiAffectShower.py PythonCharacterModule.cpp RULES!
  4. You did it wrong. Did you add new column to your mob_proto.txt to the right place? Maybe the columns are mixed in the txt and the dump_proto packs wrong your proto. Read the rules again and keep it in...
  5. Fix the tabs, make fit to your client and a colon is missing from IsEq line. if not player.IsEquipmentSlot(attachedSlotPos):########################################## m2net.SendSafeboxCheckinPacket(attachedInvenType, attachedSlotPos, selectedSlotPos)
  6. ## Slot Event def SelectEmptySlot(self, selectedSlotPos): selectedSlotPos = self.__LocalPosToGlobalPos(selectedSlotPos) if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() if player.SLOT_TYPE_SAFEBOX == attachedSlotType: m2net.SendSafeboxItemMovePacket(attachedSlotPos, selectedSlotPos, 0) #snd.PlaySound("sound/ui/drop.wav") else: attachedInvenType = player.SlotTypeToInvenType(attachedSlotType) if player.RESERVED_WINDOW == attachedInvenType: return if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex(): #m2net.SendSafeboxDepositMoneyPacket(mouseModule.mouseController.GetAttachedItemCount()) snd.PlaySound("sound/ui/money.wav") else: if not player.IsEquipmentSlot(attachedSlotPos)########################################## m2net.SendSafeboxCheckinPacket(attachedInvenType, attachedSlotPos, selectedSlotPos) #snd.PlaySound("sound/ui/drop.wav") mouseModule.mouseController.DeattachObject()
  7. Hello devs. I think that webzen already fixxed this, because I can't reverse the CSlotWindow::OnMouseOver it may be virtualized ? The problem is that, when you are trying to make conditions for the slot with runtime mouse overin, the slot doesn't handle the overin event until now. Here is a demonstration video to show the fixxed problem. Without this fix the MouseOverIn event was running down if your cursor came to the slotboard which is the board of the slots ? instead of the slot. It's difficult to explain. Before you start to implement it, make safety backup of your files! 1.) Define the new OverIn event into the SlotWindow class in the ui.py file: 2.) Define new functions and a helper variable into the eterPythonLib\PythonSlotWindow.h. 3.) Make fit, and add the new functions into the eterPythonLib\PythonSlotWindow.cpp. Example usage: def LoadObj(self): self.wndItem = self.GetChild("ItemSlot") self.wndItem.SetOverInEvent(ui.__mem_func__(self.OverIn)) self.wndItem.SetOverOutEvent(ui.__mem_func__(self.OverOut)) def OverIn(self, selectedSlotPos): chat.AppendChat(chat.CHAT_TYPE_INFO, "OverIn %d", selectedSlotPos) def OverOut(self): chat.AppendChat(chat.CHAT_TYPE_INFO, "OverOut")
  8. metin2_patch_user_situation (Mega) (Metin2 Download) metin2.sg eterPacks 2017.04.29. (Mega) (Metin2 Download)
  9. That is just the name of the net module. Easy to handle this problem from the error message if someone doesn't notice. And no need source to change the name of the built-in modules , but yeah need to care of it if someone doesn't renamed it.
  10. M2 Download Center Download Here ( Internal ) Hello devs. I don't want to talk a lot about nothing, but I have to say what is this. With this little modification the party and the friend requests are cancelled automatically in seconds what you can change in the Open method. ( pyObj.Open(sec) ) Preview video: Make a backup before you are implementing it! And if you found a bug, please explain it. 0.) Open your uiCommon.py file and import chat module. 1.) Replace the whole QuestionDialogWithTimeLimit class in the uiCommon.py file with this: class QuestionDialogWithTimeLimit(QuestionDialog2): def __init__(self): ui.ScriptWindow.__init__(self) self.__CreateDialog() self.endTime = 0 self.timeOverMsg = 0 self.timeOverEvent = None self.timeOverEventArgs = None def __del__(self): QuestionDialog2.__del__(self) def __CreateDialog(self): pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/questiondialog2.py") self.board = self.GetChild("board") self.textLine1 = self.GetChild("message1") self.textLine2 = self.GetChild("message2") self.acceptButton = self.GetChild("accept") self.cancelButton = self.GetChild("cancel") def Open(self, timeout): self.SetCenterPosition() self.SetTop() self.Show() self.endTime = app.GetTime() + timeout def SetTimeOverEvent(self, event, *args): self.timeOverEvent = event self.timeOverEventArgs = args def SetTimeOverMsg(self, msg): self.timeOverMsg = msg def OnTimeOver(self): if self.timeOverEvent: apply(self.timeOverEvent, self.timeOverEventArgs) if self.timeOverMsg: chat.AppendChat(chat.CHAT_TYPE_INFO, self.timeOverMsg) def OnUpdate(self): leftTime = max(0, self.endTime - app.GetTime()) self.SetText2(localeInfo.UI_LEFT_TIME % (leftTime)) if leftTime <= 0: self.OnTimeOver() 2.) Open your game.py file and replace each of these three methods to these: def OnMessengerAddFriendQuestion(self, name): messengerAddFriendQuestion = uiCommon.QuestionDialogWithTimeLimit() messengerAddFriendQuestion.SetText1(localeInfo.MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND % (name)) messengerAddFriendQuestion.SetTimeOverMsg(localeInfo.MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER) messengerAddFriendQuestion.SetTimeOverEvent(self.OnDenyAddFriend) messengerAddFriendQuestion.SetAcceptEvent(ui.__mem_func__(self.OnAcceptAddFriend)) messengerAddFriendQuestion.SetCancelEvent(ui.__mem_func__(self.OnDenyAddFriend)) messengerAddFriendQuestion.Open(10) messengerAddFriendQuestion.name = name self.messengerAddFriendQuestion = messengerAddFriendQuestion def RecvPartyInviteQuestion(self, leaderVID, leaderName): partyInviteQuestionDialog = uiCommon.QuestionDialogWithTimeLimit() partyInviteQuestionDialog.SetText1(leaderName + localeInfo.PARTY_DO_YOU_JOIN) partyInviteQuestionDialog.SetTimeOverMsg(localeInfo.PARTY_ANSWER_TIMEOVER) partyInviteQuestionDialog.SetTimeOverEvent(self.AnswerPartyInvite, False) partyInviteQuestionDialog.SetAcceptEvent(lambda arg=True: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.SetCancelEvent(lambda arg=False: self.AnswerPartyInvite(arg)) partyInviteQuestionDialog.Open(10) partyInviteQuestionDialog.partyLeaderVID = leaderVID self.partyInviteQuestionDialog = partyInviteQuestionDialog def BINARY_OnQuestConfirm(self, msg, timeout, pid): confirmDialog = uiCommon.QuestionDialogWithTimeLimit() confirmDialog.SetText1(msg) confirmDialog.Open(timeout) confirmDialog.SetAcceptEvent(lambda answer=True, pid=pid: m2net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide()) confirmDialog.SetCancelEvent(lambda answer=False, pid=pid: m2net.SendQuestConfirmPacket(answer, pid) or self.confirmDialog.Hide()) self.confirmDialog = confirmDialog 3.) Open your locale/xy/locale_game.txt and add these if these aren't exists: MESSENGER_ADD_FRIEND_ANSWER_TIMEOVER Friend request was cancelled. PARTY_ANSWER_TIMEOVER Party invite was cancelled. Remove MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_2 line and change MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND_1 with this: MESSENGER_DO_YOU_ACCEPT_ADD_FRIEND %s added you as a friend, accept? At last take a look at your files and correct the net module calls and the True-False syntax. net <--> m2net, True <--> TRUE
  11. This topic is not file request thread, please stop it. Everything* is public from the official client. 17.0.7 whole unpacked client: [Hidden Content] 17.0.12 whole unpacked client: [Hidden Content] 17.1 updates only: [Hidden Content]
  12. def __GetServerID(self): regionID = self.__GetRegionID() serverID = 0 for i in serverInfo.REGION_DICT[regionID].keys(): if serverInfo.REGION_DICT[regionID][i]["name"] == net.GetServerInfo().split(",")[0]: serverID = int(i) break return serverID
  13. Seems 1st of April fool. No, not seems, exactly it is.
  14. This isn't because of this, but If I remember as well it's a global problem, I don't know how do I fixed it already.
  15. I don't know anything about the maps. Pet icons: 53250.tga / 53251.tga
  16. OnUpdate Isn't the best solution, but seems good. def OnUpdate(self): # self.RefreshBagSlotWindow() for i in xrange(player.INVENTORY_PAGE_SIZE): if self.wndItem: GlobalSlot = self.__InventoryLocalSlotPosToGlobalSlotPos(i) if player.GetItemLook(GlobalSlot): self.wndItem.EnableSlotCoverImage(i) else: self.wndItem.DisableSlotCoverImage(i) if player.FindActivedChangeLookSlot(0) == GlobalSlot or player.FindActivedChangeLookSlot(1) == GlobalSlot: self.wndItem.ActivateChangeLookSlot(i) else: self.wndItem.DeactivateChangeLookSlot(i)
  17. The new update(v17.1) is containing the following unpacked packfiles: locale(en,us,de,cz,hu) w/ unpacked protos <!!> via new antiflags <!!> root <!> dumped python and built-in datas <!> (Not raw .python files!) uiscript icon patch_easter2k16 patch_etc_costume1 patch_pc3_m patch_public patch_ramadan patch_summer outdoormilgyo1 outdoortrent02 [Hidden Content] [Hidden Content]
  18. Metin2(CN)_eterPacks_2017_03_25 Metin2 Download 18.0 isn't on live server yet.
  19. Let's start to learn minimal c++ knowledge or use the google.
  20. Stop copy and paste.. Here is the new one: M2(cz)_EterPacks_17.0.12.7z Metin2 Download
  21. These should be your fault, because I never experienced those problems, still under developing neither. Uploading(available in next 30 mins): [Hidden Content] Btw: Shiro2/3 is using this a long time ago.
×
×
  • 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.