Jump to content

Johnny69

Inactive Member
  • Posts

    83
  • Joined

  • Last visited

  • Days Won

    5
  • Feedback

    0%

Everything posted by Johnny69

  1. Exactly as I tought, it's probably a null pointer in the DirectQuery last argument. Replace your function with this: [Hidden Content]
  2. Well, post the code, we are not magicians to guess your code. One guess though: summon item might be null on unsummon and is no check for null pointer.
  3. There are a lot of crashes because of null pointers in metin2 source. If you open a server with 1000> players online you will get a lot of crashes (null pointers and other things).
  4. Johnny69

    Work automation

    Python, a lot of Python ? I automatize everything with python.
  5. // InstanceBaseBattle.cpp // Search for: m_GraphicThingInstance.Die(); // Add after: m_GraphicThingInstance.SetScalePosition(0.0f, 0.0f, 0.0f); The current scale position function is not writed ok for attached models. Official server realised that and changed it. Do the same ?
  6. First: I might understand why you replaced normal iterator type with auto but I don't understant why you replaced SAFE_DELETE macro with simple delete. You think who made that macro was stupid ? Second: Your crash might be cause actually by that m_strName because is never initialized with a value (in debug it is) , and we know what happen when a variable is not initiallized in c++ ?
  7. const int aiRecoveryPercents[10] = { 1, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; char.cpp, here you can change the percent you get every time you recover hp.
  8. Official server send locale string like this: [LS;6969] where 6969 is the number of text in locale_string.txt from locale pack. They send a number and parse it in binary very easy.
  9. In common/lenght.h replace this function: bool IsDragonSoulEquipPosition() const { return (DRAGON_SOUL_EQUIP_SLOT_START <= cell) && (DRAGON_SOUL_EQUIP_SLOT_END > cell) && window_type != DRAGON_SOUL_INVENTORY; }
  10. It is not easy to make, especially for texts. I don't think someone will share that.
  11. Or use WildCaseCmp from utils.cpp: ( If you doesn't have special characters in the name ) if (d->GetCharacter() && WildCaseCmp(d->GetCharacter()->GetName(), m_name)) return true;
  12. What are you talking about boy ? The items are droped on the ground based on the monster position, not the killer.
  13. Well, if syserr is empty post a syslog from the channel you try to get the item.
  14. // Add this function prototype to public in item.h void ChangeAttributeValue(); // Add this function in item_attribute.cpp or item.cpp void CItem::ChangeAttributeValue() { int attrCount = GetAttributeCount(); if(attrCount == 0) return; int iAttributeSet = GetAttributeSetIndex(); if (iAttributeSet < 0) return; for(int k = 0; k < attrCount; k++) { int attr_idx = GetAttributeType(k); const TItemAttrTable & r = g_map_itemAttr[attr_idx]; int nLevel = number(1, r.bMaxLevelBySet[iAttributeSet]); long lVal = r.lValues[MIN(4, nLevel - 1)]; if (lVal) SetAttribute(k, attr_idx, lVal); } } // In char_item.cpp just go to the item you want to be the changer and replace: item2->ChangeAttribute // With item2->ChangeAttributeValue();
  15. You mean like this ? [Hidden Content] Or just one at a time ?
  16. Your macro (#ifdef name) is not defined or is defined in a file that is not included in the curent file. Advice: do it like this: ); not in macro, or just include the define file ("service.h", I think)
  17. Are you talking about broken stones in a weapon if the real stone fail to add ? If yes try char_item.cpp => "case ITEM_METIN" . In this case 10-20 lines above you find "if (number(1, 100) <= 30)", increase that 30. If you talking about gaya/gem system I think the quest is the first choice to search for succes chance.
  18. It's not a bug, it's a feature. They made it that way with a purpose. If you enable attack in a sectree with ATTR_BLOCK / ATTR_BANPK you need to to enable damage in that area, that means people can attack in the safezone. Easy fix for you: open the map in world editor and try to remove ATTR_BLOCK / ATTR_BANPK in the area you need to spawn monsters.
  19. # In def Clear self.grid[start] = True # Change to: self.grid[start] = False
  20. If chrome is your default browser Is going to open chrome. Just change his line with that and test it, you will see.
  21. ShellExecute(NULL, "open", getChormeURL, NULL, NULL, SW_SHOWNORMAL); And it will open in your default browser.
  22. When you set the output folder do it just for UserInterface project.
  23. AddonValue does not exist, but AddonType: // item.h short int GetAddonType() { return m_pProto ? m_pProto->sAddonType : 0; } // questlua_item.cpp int item_get_addon_type(lua_State* L) { CQuestManager& q = CQuestManager::instance(); LPITEM item = q.GetCurrentItem(); if (item) lua_pushnumber(L, item->GetAddonType()); else lua_pushnumber(L, 0); return 1; } // questlua_item.cpp { "get_addon_type", item_get_addon_type },
  24. I actualy have this "bug" but the damage is 0 without arrows. Is just one horse skill that use arrows (140) and you can use client check for arrows to fix it. // PythonPlayerSkill.cpp // Search: if (!pSkillData->IsHorseSkill()) { if (__CheckShortArrow(rkSkillInst, *pSkillData)) return false; if (pSkillData->IsNeedBow()) { if (!__HasEnoughArrow()) return false; } } // Replace with: if (!pSkillData->IsHorseSkill() || pSkillData->dwSkillIndex == 140) { if (__CheckShortArrow(rkSkillInst, *pSkillData)) return false; if (pSkillData->IsNeedBow()) { if (!__HasEnoughArrow()) return false; } }
×
×
  • 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.