-
Posts
83 -
Joined
-
Last visited
-
Days Won
5 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Johnny69
-
-
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.
-
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).
- 2
-
Python, a lot of Python I automatize everything with python.
-
// 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
- 4
-
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++
-
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.
-
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.
- 1
-
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; }
-
It is not easy to make, especially for texts. I don't think someone will share that.
-
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;
- 1
-
What are you talking about boy ? The items are droped on the ground based on the monster position, not the killer.
- 2
-
Well, if syserr is empty post a syslog from the channel you try to get the item.
-
-
// 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();
- 1
-
You mean like this ? https://metin2.download/picture/3FQ9Vt90Yoc5FsYF8oL7mfXOAkjs7C7n/.gif
Or just one at a time ?
- 3
-
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)
-
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.
- 1
-
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.
-
# In def Clear self.grid[start] = True # Change to: self.grid[start] = False
- 1
-
2 minutes ago, Caramelito said:
Wait. He is going to show us how to automatically download and install chrome&set it as a default browser.
@Johnny69 how? Is going to execute chrome.exe.
If chrome is your default browser Is going to open chrome.
Just change his line with that and test it, you will see.
-
ShellExecute(NULL, "open", getChormeURL, NULL, NULL, SW_SHOWNORMAL);
And it will open in your default browser.
- 2
-
When you set the output folder do it just for UserInterface project.
- 1
-
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 },
- 1
-
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; } }
- 1
Offical pet system proplem
in Community Support - Questions & Answers
Posted
Exactly as I tought, it's probably a null pointer in the DirectQuery last argument.
Replace your function with this: https://pastebin.com/dexE0C0r