Jump to content

xP3NG3Rx

Honorable Member
  • Posts

    837
  • Joined

  • Days Won

    392
  • Feedback

    100%

Everything posted by xP3NG3Rx

  1. It seems you don't have the interface bound into the ExpandedMoneyTaskBar class. Search this line in the interfaceModule.py: "self.wndExpandedMoneyTaskBar.LoadWindow()" and add below this: self.wndExpandedMoneyTaskBar.BindInterface(self) Then open the uiTaskBar.py and put the following line into the ExpandedMoneyTaskBar.__init__ function: self.interface = None Last the following function anywhere inside the ExpandedMoneyTaskBar class: def BindInterface(self, interface): from _weakref import proxy self.interface = proxy(interface) But I don't get it, how did you get 'Interface' instead of 'interface'. ?
  2. Very nice picture, I think I am going to use it as my desktop wallpaper, thank you.
  3. Nice and useful, would be more nice with scaling. Rubinum gives some new ideas, doesn't it?
  4. First of all: Secondly, just open up the function named by CRaceMotionData::SetName and fix it, if you can't, you have no business in the private server development unless you start learning cpp to get some knowledge.
  5. Latest BR patch. Includes some models re-exported via 2.12.02 granny. And no, before you will ask the new shrimp pet which is defined in the npclist.txt is not available yet, neither the summer armors, they gonna release later maybe. I've forgot to pack the property, here you go. Metin2 Download
  6. if app.ENABLE_QUIVER_SYSTEM: This line is false, but why? Do you have this in the PythonApplicationModule.cpp defined as true? It supposed to look like this by the intellisense highlight:
  7. Or just unsummon it before delete the item? ?
  8. I don't want to. They had one job. And here is mine too
  9. Well, I just checked the code, and I've seen the way to it, but anyway thanks. I think this is a good implementation. I'm trying to reverse it from the official, but it's ridiculous how they have done this with the arabic codepage. They have split the render and update functions into two functions like this way void __thiscall CGraphicTextInstance::Render(void *this, int a2) { void *v2; // esi v2 = this; if ( GetDefaultCodePage(this) == 1256 ) CGraphicTextInstance::RenderAR((int)v2, a2); else CGraphicTextInstance::RenderEU((int)v2, a2); } but the normal also has references to the arabic codepage, and vice versa too
  10. If you place a text below of the textline from its height, where will it shown? For example you have this text object: self.text1.SetPosition(30, 36) self.text1.SetText("This is a\ntext just to\nbe sure it\nworks.") self.text1.SetLineHeight(20) And another one like this way: self.text2.SetPosition(30, self.text1.GetPosition()[1]+5) self.text2.SetText("This one is good")
  11. Wow, it looks awesome Is it useful? Are you kidding? It is.
  12. That is the real effort, guys. Converting every single link to an advertisement link.
  13. Yeah, lets say they implemented this feature properly, but unfortunately they forgot to use it properly .
  14. Also if you are smart enough as the webzen developers weren't, you will put an exception where the render of the textline class will skip the splitting on special places like whisper nameinput . Doesn't matter if they have added the DisableEnterToken if they didn't apply everywhere where they supposed to. And when you report this problem on their forum(gayforge obv..), they delete the topic, and giving a single piece of nothing about it.
  15. Hello everyone. Let me share these with you here. This post contains everything for the recent[v20.1.5.1 05.05.2020] item and mob proto structure. About the mob_proto it might be some false data, but it's okay , it is impossible to figure out totally from clientside only. I am going to explain my thoughts about the new AI Flags as well as about everything I know, or think. enum EMisc { CHARACTER_NAME_MAX_LEN = 24, MOB_SKILL_MAX_NUM = 5, ITEM_NAME_MAX_LEN = 24, ITEM_LIMIT_MAX_NUM = 2, ITEM_VALUES_MAX_NUM = 6, ITEM_APPLY_MAX_NUM = 4, ITEM_SOCKET_MAX_NUM = 3, CHARACTER_FOLDER_MAX_LEN = 64, }; Fist stop, this enum contains some basic informations which mostly the same, except one. ITEM_APPLY_MAX_NUM has been increased to 4 from 3. Why? Because of the new mounting system what they have done. The seal items of the mounts control everything about the mounting and its bonuses; - New APPLY_MOUNT bonus, its value is the vnum of the mount, stored into POINT_MOUNT. - The bonuses what the mount gives are in the rest of the applies. This why they had to add an extra apply because some mounts gives up to 3 bonuses. typedef struct SItemLimit { BYTE bType; long lValue; } TItemLimit; typedef struct SItemApply { WORD wType; long lValue; } TItemApply; Ho-ho-ho another stop here for a sentence. Might be you cannot see any new values, but if you check the datatypes in the TItemApply, you will see they have changed the datatype of the ApplyType from BYTE(unsigned char) to WORD(unsigned short). Why? The answer is easy; because of their number of the bonuses reached the 255 limit of the BYTE, above of 255 the data will overflow. This modification they made with the 6th 7th bonuses. They added lots of worthless bonuses to be different from the private section and to squeeze out the money of the players with the 6th 7th bonuses. enum EItemAntiFlag { ITEM_ANTIFLAG_FEMALE = (1 << 0), ITEM_ANTIFLAG_MALE = (1 << 1), ITEM_ANTIFLAG_WARRIOR = (1 << 2), ITEM_ANTIFLAG_ASSASSIN = (1 << 3), ITEM_ANTIFLAG_SURA = (1 << 4), ITEM_ANTIFLAG_SHAMAN = (1 << 5), ITEM_ANTIFLAG_GET = (1 << 6), ITEM_ANTIFLAG_DROP = (1 << 7), ITEM_ANTIFLAG_SELL = (1 << 8), ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), ITEM_ANTIFLAG_EMPIRE_B = (1 << 10) ITEM_ANTIFLAG_EMPIRE_R = (1 << 11) ITEM_ANTIFLAG_SAVE = (1 << 12) ITEM_ANTIFLAG_GIVE = (1 << 13) ITEM_ANTIFLAG_PKDROP = (1 << 14) ITEM_ANTIFLAG_STACK = (1 << 15) ITEM_ANTIFLAG_MYSHOP = (1 << 16) ITEM_ANTIFLAG_SAFEBOX = (1 << 17) ITEM_ANTIFLAG_WOLFMAN = (1 << 18) ITEM_ANTIFLAG_RT_REMOVE = (1 << 19) ITEM_ANTIFLAG_QUICKSLOT = (1 << 20) ITEM_ANTIFLAG_CHANGELOOK = (1 << 21) ITEM_ANTIFLAG_REINFORCE = (1 << 22) ITEM_ANTIFLAG_ENCHANT = (1 << 23) ITEM_ANTIFLAG_ENERGY = (1 << 24) ITEM_ANTIFLAG_PETFEED = (1 << 25) ITEM_ANTIFLAG_APPLY = (1 << 26) ITEM_ANTIFLAG_ACCE = (1 << 27) ITEM_ANTIFLAG_MAIL = (1 << 28) }; Okay, here also there are many of new antiflags and I am going the explain the new flags only: ITEM_ANTIFLAG_RT_REMOVE : This one kind of funny, because this doesn't have any reference at clientside, but it should be ANTIFLAG_REAL_TIME_REMOVE. Which blocks the destroyitem function when the real_time_expire_event is executed. It is about 98% sure. Only the new pet system seals have this flag, and their transport box. Isn't it funny that I've just figured this out now when I wrote this? haha ITEM_ANTIFLAG_QUICKSLOT : Obviously blocks to attach the item with this flag to the quickslots. ITEM_ANTIFLAG_CHANGELOOK : This one will block the changelook process. That item which has this flag cannot be used for appearance for another. ITEM_ANTIFLAG_REINFORCE : Blocks to add new bonuses to an item. ITEM_ANTIFLAG_ENCHANT : Blocks to change the attributes of an item. ITEM_ANTIFLAG_ENERGY : Blocks to use the item for making Energy Fragment from it. ITEM_ANTIFLAG_PETFEED : This flag blocks the pet, to eat the item which has it. ITEM_ANTIFLAG_APPLY : This flag will make the item unstonable, you will not be able to put any stones into it. Or It blocks every applicable item to use on it, can be both too, dunno. ITEM_ANTIFLAG_ACCE : This flag will block theowadan to absorb the bonuses from the item which has this flag. ITEM_ANTIFLAG_MAIL : The flag will make the item unsendable via mail. enum EItemFlag { ITEM_FLAG_REFINEABLE = (1 << 0), ITEM_FLAG_SAVE = (1 << 1), ITEM_FLAG_STACKABLE = (1 << 2), ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), ITEM_FLAG_SLOW_QUERY = (1 << 4), ITEM_FLAG_RARE = (1 << 5), ITEM_FLAG_UNIQUE = (1 << 6), ITEM_FLAG_MAKECOUNT = (1 << 7), ITEM_FLAG_IRREMOVABLE = (1 << 8), ITEM_FLAG_CONFIRM_WHEN_USE = (1 << 9), ITEM_FLAG_QUEST_USE = (1 << 10), ITEM_FLAG_QUEST_USE_MULTIPLE= (1 << 11), ITEM_FLAG_QUEST_GIVE = (1 << 12), ITEM_FLAG_LOG = (1 << 13), ITEM_FLAG_APPLICABLE = (1 << 14), }; Small confess about the normal Flags, I'm too lazy to explain everything so I just put here the list of them Anyway they didn't add any new, just removed some unused from 2003 devphase. enum EItemWearFlag { WEARABLE_BODY = (1 << 0), WEARABLE_HEAD = (1 << 1), WEARABLE_FOOTS = (1 << 2), WEARABLE_WRIST = (1 << 3), WEARABLE_WEAPON = (1 << 4), WEARABLE_NECK = (1 << 5), WEARABLE_EAR = (1 << 6), WEARABLE_UNIQUE = (1 << 7), WEARABLE_SHIELD = (1 << 8), WEARABLE_ARROW = (1 << 9), WEARABLE_HAIR = (1 << 10), WEARABLE_ABILITY = (1 << 11), WEARABLE_PENDANT = (1 << 12), }; Here for a comment, they have just added the pendant as new, and changed the index of the unique with the shield. Also wondering when they are going to remove the unused wear ability flag, and its I dont know how many slots from the equipments .. Those were back in time couple of hidden items, for the collection quests bonus holder of the results, or whatever, stupid thing, unused, supposed to be removed. Done. The Immune flag is untouched, pf obviously because it is used for nothing at all rofl. About the LimitTypes, they removed the PC_BANG value, and its items, codes completely. typedef struct SItemTable { DWORD dwVnum; DWORD dwVnumRange; char szName[ITEM_NAME_MAX_LEN + 1]; char szLocaleName[ITEM_NAME_MAX_LEN + 1]; BYTE bType; BYTE bSubType; BYTE bWeight; BYTE bSize; DWORD dwAntiFlags; DWORD dwFlags; DWORD dwWearFlags; DWORD dwImmuneFlag; DWORD dwBuyItemPrice; DWORD dwSellItemPrice; TItemLimit aLimits[ITEM_LIMIT_MAX_NUM]; TItemApply aApplies[ITEM_APPLY_MAX_NUM]; long alValues[ITEM_VALUES_MAX_NUM]; long alSockets[ITEM_SOCKET_MAX_NUM]; DWORD dwRefinedVnum; WORD wRefineSet; DWORD dw67Material; BYTE bAlterToMagicItemPct; BYTE bSpecular; BYTE bGainSocketPct; BYTE bMaskType; BYTE bMaskSubType; } TItemTable; Okay, lets do this one too. So, as you can see here are couple of new values, compared to the old one from 2013. Let's roll over on the new values. dw67Material : This one will be the vnum for the 6th 7th bonus adder, which material is necessary to add the bonus to the item. You can read about this on the official wiki. bMaskType : This is used for the private shop search to categorize the items. bMaskSubType : This is also used for the private shop search to categorize the items. Last word about the item_proto: I will not put the types, subtypes, and their mask version and describe them because none of you will use it . Coming up the mob_proto. enum EMobEnchants { MOB_ENCHANT_CURSE, MOB_ENCHANT_SLOW, MOB_ENCHANT_POISON, MOB_ENCHANT_STUN, MOB_ENCHANT_CRITICAL, MOB_ENCHANT_PENETRATE, MOB_ENCHANTS_MAX_NUM, }; Yes this is untoucheed. No, they didn't add bleeding as enchant to the mobs. It is an effect of some skills of the monsters in the zodiac temple. enum EMobResists { MOB_RESIST_FIST, MOB_RESIST_SWORD, MOB_RESIST_TWOHAND, MOB_RESIST_DAGGER, MOB_RESIST_BELL, MOB_RESIST_FAN, MOB_RESIST_BOW, MOB_RESIST_CLAW, MOB_RESIST_FIRE, MOB_RESIST_ELECT, MOB_RESIST_MAGIC, MOB_RESIST_WIND, MOB_RESIST_POISON, MOB_RESIST_BLEEDING, MOB_RESISTS_MAX_NUM, }; Here you can see couple of new values, all of them obvious, and readable to understand. But if it isn't... MOB_RESIST_FIST: Resist to fist, so when you hit the monster without weapon equipped and it has this defence value, the damage will be reduced. MOB_RESIST_CLAW: Resist against claw attacks, come on, I don't want to do this. MOB_RESIST_BLEEDING: Same as resist_poison just against of the bleeding. enum EMobElementaryWhatevers { MOB_ELEMENTAL_ELEC, MOB_ELEMENTAL_FIRE, MOB_ELEMENTAL_ICE, MOB_ELEMENTAL_WIND, MOB_ELEMENTAL_EARTH, MOB_ELEMENTAL_DARK, MOB_ELEMENTAL_MAX_NUM }; Without serverside these values are not understandable properly. Naturaly those monsters which has elemental resists they have this values as well on the same elemental. Forexample: Lets see the Death reaper(1093). He has UNDEAD and ATT_DARK as RaceFlag, 50% resist fist(just telling ;]), ElemDark=1 and resist dark "-20%" But some monsters are having these values 100+ which is.... no idea why. Zodiac monsters only if I'm not wrong. enum EMobAIFlags { AIFLAG_AGGRESSIVE = (1 << 0), AIFLAG_NOMOVE = (1 << 1), AIFLAG_COWARD = (1 << 2), AIFLAG_NOATTACKSHINSU = (1 << 3), AIFLAG_NOATTACKJINNO = (1 << 4), AIFLAG_NOATTACKCHUNJO = (1 << 5), AIFLAG_ATTACKMOB = (1 << 6), AIFLAG_BERSERK = (1 << 7), AIFLAG_STONESKIN = (1 << 8), AIFLAG_GODSPEED = (1 << 9), AIFLAG_DEATHBLOW = (1 << 10), AIFLAG_REVIVE = (1 << 11), AIFLAG_HEALER = (1 << 12), AIFLAG_COUNT = (1 << 13), AIFLAG_NORECOVERY = (1 << 14), AIFLAG_REFLECT = (1 << 15), AIFLAG_FALL = (1 << 16), AIFLAG_VIT = (1 << 17), AIFLAG_RATTSPEED = (1 << 18), AIFLAG_RCASTSPEED = (1 << 19), AIFLAG_RHP_REGEN = (1 << 20), AIFLAG_TIMEVIT = (1 << 21), }; Here you can see many of new AIFlag values. I am not 100% sure about them, but here is what I think about these new values: AIFLAG_HEALER : This one is the healer, who will heal all members in its group. AIFLAG_COUNT : Who has this flag, you can make just 1 damage on it. AIFLAG_NORECOVERY : This will blocks the monster to recover its health. AIFLAG_REFLECT : <vice> With this flag the monster will be able to transform you into a monster, npc, or statue. AIFLAG_FALL : Ability to force you to fall off your mount. AIFLAG_VIT : <versa> Make your attack damage half, for 10 minutes, until the zodiac floor expires. AIFLAG_RATTSPEED : Reduces the speed of your attack. AIFLAG_RCASTSPEED : Reduces the speed of your skills, it means the cooldown of your skills will be increased. AIFLAG_RHP_REGEN : Reduces the regeneration of your health. AIFLAG_TIMEVIT : <versa> Make your attack damage half, for x seconds. About the vice-versa, those values are imaginable in switched description too. If the reflect is removing your attack damage with the half of it for x seconds then the VIT flags are the transformations. Forexample: the timevit is for tranforming you into monster, or mount for couple of seconds. the vit is for transforming you into a statue until the zodiac floor runs, or until one of your mate hits you. typedef struct SMobSkillLevel { DWORD dwVnum; BYTE bLevel; } TMobSkillLevel; typedef struct SMobTable { DWORD dwVnum; char szName[CHARACTER_NAME_MAX_LEN + 1]; char szLocaleName[CHARACTER_NAME_MAX_LEN + 1]; BYTE bType; BYTE bRank; BYTE bBattleType; BYTE bLevel; BYTE bScale; BYTE bSize; DWORD dwGoldMin; DWORD dwGoldMax; DWORD dwExp; DWORD dwMaxHP; BYTE bRegenCycle; BYTE bRegenPercent; WORD wDef; DWORD dwAIFlag; DWORD dwRaceFlag; DWORD dwImmuneFlag; BYTE bStr, bDex, bCon, bInt; DWORD dwDamageRange[2]; short sAttackSpeed; short sMovingSpeed; BYTE bAggresiveHPPct; WORD wAggressiveSight; WORD wAttackRange; char cEnchants[MOB_ENCHANTS_MAX_NUM]; char cResists[MOB_RESISTS_MAX_NUM]; char cElementalFlags[MOB_ELEMENTAL_MAX_NUM]; char cResistDark, cResistIce, cResistEarth; DWORD dwResurrectionVnum; DWORD dwDropItemVnum; BYTE bMountCapacity; BYTE bOnClickType; BYTE bEmpire; char szFolder[CHARACTER_FOLDER_MAX_LEN + 1]; float fDamMultiply; DWORD dwSummonVnum; DWORD dwDrainSP; DWORD dwMonsterColor; DWORD dwPolymorphItemVnum; TMobSkillLevel Skills[MOB_SKILL_MAX_NUM]; BYTE bBerserkPoint; BYTE bStoneSkinPoint; BYTE bGodSpeedPoint; BYTE bDeathBlowPoint; BYTE bRevivePoint; BYTE bHealPoint; BYTE bRAttSpeedPoint; BYTE bRCastSpeedPoint; BYTE bRHPRegenPoint; FLOAT fHitRange; } TMobTable; bScale: : Scale value between 50 and 200. It will resize the monster. cElementalFlags : So I've told you some info about this, I don't know more. cResistDark : This is a missing elemental resist, they have added it, I just don't really know why even there, not into the resists array, stupid. cResistIce : This is a missing elemental resist, they have added it, I just don't really know why even there, not into the resists array, stupid. cResistEarth : This is a missing elemental resist, they have added it, I just don't really know why even there, not into the resists array, stupid. bHealPoint : Healing percent for the healers. bRAttSpeedPoint : These can be used for what I've named them or the REFLECT or the VIT and TIMEVIT flags too, to give them special value, so it is still a questionmark. bRCastSpeedPoint : These can be used for what I've named them or the REFLECT or the VIT and TIMEVIT flags too, to give them special value, so it is still a questionmark. bRHPRegenPoint : These can be used for what I've named them or the REFLECT or the VIT and TIMEVIT flags too, to give them special value, so it is still a questionmark. fHitRange : Because the client is using its default value to make the checks, this one for sure is on serverside, to check the distance between the character and the monster to validate the attack, skill or the movement of the monsters. But still not 100% I hope it is understandable, my english isn't the best sorry for that. If I missed something let me know in PM.
  16. What about the item_proto? Dump_proto? How do they look like?
  17. The source of the problem is probably the item_proto.txt, the bonus in the applytype of the item named differently than the reader recognise it. Also do a check on the itemdata.h
  18. xP3NG3Rx

    50 NPC's

    [Hidden Content]
×
×
  • 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.