-
Posts
113 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Pisti95
-
-
// UserInterface/PythonApplication.h
// Find this:#include "MovieMan.h"
// Add after this:
#include "PythonConfig.h"
// Find this:
CPythonSystem m_pySystem;
// Add after this:
#ifdef ENABLE_CONFIG_MODULE CPythonConfig m_pyConfig; #endif
//locale_inc.h
// Add#define ENABLE_CONFIG_MODULE // Enable configuration module for saving settings
Userinterface.cpp
//search for
extern "C" { extern int _fltused; volatile int _AVOID_FLOATING_POINT_LIBRARY_BUG = _fltused; };
// replace to#ifdef ENABLE_NEW_MODULE_CONFIG #include "PythonConfig.h" #include "minIni.h" #endif extern "C" { #include "minIni.c" extern int _fltused; volatile int _AVOID_FLOATING_POINT_LIBRARY_BUG = _fltused; };
RENAME minIni.c in minIni.cpp
//minIni.cpp
//search for
#if defined NDEBUG #define assert(e) #else #include <assert.h> #endif
// replace to#include "StdAfx.h" #include "minIni.h" #include "PythonApplication.h" #include "PythonConfig.h" #if defined NDEBUG #define assert(e) #else #include <assert.h> #endif
Source: just4metin
-
I know this tread is old, but if somebody needs a solution:
uiaffectshower.py
Search for:
MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",),
Change for it:
MALL_DESC_IDX_START+player.POINT_MELEE_MAGIC_ATT_BONUS_PER : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",),
PythonPlayerModule.cpp
Search for:
PyModule_AddIntConstant(poModule, "ENERGY_END_TIME", POINT_ENERGY_END_TIME);
Add these:
PyModule_AddIntConstant(poModule, "POINT_COSTUME_ATTR_BONUS", POINT_COSTUME_ATTR_BONUS); PyModule_AddIntConstant(poModule, "POINT_MAGIC_ATT_BONUS_PER", POINT_MAGIC_ATT_BONUS_PER); PyModule_AddIntConstant(poModule, "POINT_MELEE_MAGIC_ATT_BONUS_PER", POINT_MELEE_MAGIC_ATT_BONUS_PER);
Source: DragonGod attack fix theme
-
4 hours ago, Dr3Ame3r said:
Yeah but this will not work as it will keep the flags in uiaffectshower after one player will kill you, in PVM works fine.
Yes, you are right.
Solution:
InstanceBase.h
Search for:
class CInstanceBase {
Add to:
public: int BuffAffect;
InstanceBaseBattle.cpp
Search for:
void CInstanceBase::Die()
In this function search for it:
__ClearAffects();
Change for it:
//////////////////////////////////////// std::vector<int> BuffAffectList = { AFFECT_JEONGWI, AFFECT_GEOMGYEONG, AFFECT_CHEONGEUN, AFFECT_GYEONGGONG, AFFECT_EUNHYEONG, AFFECT_GWIGEOM, AFFECT_GONGPO, AFFECT_JUMAGAP, AFFECT_HOSIN, AFFECT_BOHO, AFFECT_GICHEON, AFFECT_KWAESOK, AFFECT_HEUKSIN, AFFECT_MUYEONG, AFFECT_JEUNGRYEOK, AFFECT_PABEOP #ifdef ENABLE_WOLFMAN_CHARACTER , AFFECT_RED_POSSESSION, AFFECT_BLUE_POSSESSION #endif }; if (std::find(BuffAffectList.begin(), BuffAffectList.end(), BuffAffect) != BuffAffectList.end()) __ClearAffects(); ////////////////////////////////////////
This solution for buffs. The affect left top of corner don't disappear.
-
uiaffectshower.py
Search for:def __AppendAffect(self, affect):
Change:image.SetSkillAffectFlag(TRUE)
With it:if skillIndex >= 94 and skillIndex <= 96 or skillIndex == 110 or skillIndex == 111: image.SetSkillAffectFlag(FALSE) else: image.SetSkillAffectFlag(TRUE)
-
My functions in class ToggleButton(Button):
def SetToggleUpEvent(self, event, *args): self.eventUp = event self.eventUpArgs = args def SetToggleDownEvent(self, event, *args): self.eventDown = event self.eventDownArgs = args
- 1
-
my cmd_general.cpp:
Detail:
if (ch->GetHorse() != NULL) { sys_log(1, "[DO_RIDE] start riding"); ch->StartRiding(); return; } for (UINT i=0; i<INVENTORY_AND_EQUIP_SLOT_MAX; ++i) //INVENTORY_MAX_NUM { LPITEM item = ch->GetInventoryItem(i); if (NULL == item) continue; if (item->IsRideItem()) { if ( NULL==ch->GetWear(WEAR_UNIQUE1) || NULL==ch->GetWear(WEAR_UNIQUE2) #ifdef ENABLE_MOUNT_COSTUME_SYSTEM || NULL==ch->GetWear(WEAR_COSTUME_MOUNT) #endif )
- 1
-
Your inventory is 9x7. The default inventory is 9x5.
So you should to change everywhere this numbers, where need it. (in server and in binary source) -
If someone search it.
Solution:
Add to your new_introselect.py:
def OnIMEReturn(self): self.StartGameButton() return True
if you have old char select (introselect.py):
Search for it:
def OnKeyDown(self, key):
Add for this:
if 28 == key: id = net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID) if 0 == id: self.CreateCharacter() else: self.StartGame()
That's all.
- 1
-
Solved.
Solution:
I didn’t change RenderTarget files in binary source, and I changed it, and the background has fixed.
-
hi all.
Can you help me?
That’s my problem:
https://metin2.download/picture/7ud1r5I98NdFDSr0IV7W12f83Tr4ic6N/.jpg
-
hi all.
Can you help me?
That’s my problem with background:
https://metin2.download/picture/7ud1r5I98NdFDSr0IV7W12f83Tr4ic6N/.jpg
-
does anyone know the solution? where should i look?
-
This program write in C# and many antivirus have fake report viruses. Antivirus is delete neccessery files for Patcher.
-
if use char_item.cpp from martysama :
Plus additional:
Search for:
// @fixme141 BEGIN if (TItemPos(item->GetWindow(), item->GetCell()).IsBeltInventoryPosition()) { LPITEM beltItem = GetWear(WEAR_BELT); if (NULL == beltItem) { ChatPacket(CHAT_TYPE_INFO, "<Belt> You can't use this item if you have no equipped belt."); return false; } if (false == CBeltInventoryHelper::IsAvailableCell(item->GetCell() - BELT_INVENTORY_SLOT_START, beltItem->GetValue(0))) { ChatPacket(CHAT_TYPE_INFO, "<Belt> You can't use this item if you don't upgrade your belt."); return false; } } // @fixme141 END
Make it look like this:
// @fixme141 BEGIN if (TItemPos(item->GetWindow(), item->GetCell()).IsBeltInventoryPosition()) { /*LPITEM beltItem = GetWear(WEAR_BELT); if (NULL == beltItem) { ChatPacket(CHAT_TYPE_INFO, "<Belt> You can't use this item if you have no equipped belt."); return false; } if (false == CBeltInventoryHelper::IsAvailableCell(item->GetCell() - BELT_INVENTORY_SLOT_START, beltItem->GetValue(0))) { ChatPacket(CHAT_TYPE_INFO, "<Belt> You can't use this item if you don't upgrade your belt."); return false; }*/ return true; } // @fixme141 END
Good luck!
- 1
- 1
- 1
-
On 10/29/2021 at 10:23 PM, narcisxb said:
1029 22:03:29127 :: Traceback (most recent call last): 1029 22:03:29127 :: File "ui.py", line 1535, in OnSelectEmptySlot 1029 22:03:29127 :: File "ui.py", line 87, in __call__ 1029 22:03:29127 :: File "ui.py", line 78, in __call__ 1029 22:03:29127 :: File "uiSkillBookCombination.py", line 116, in SelectEmptySlot 1029 22:03:29128 :: AttributeError 1029 22:03:29128 :: : 1029 22:03:29128 :: 'module' object has no attribute 'ITEM_SLOT_COUNT' 1029 22:03:29128 ::
Any ideea? I don t have special invetory.
in GameType.h, if you have this:
const DWORD c_ItemSlot_Count = c_Inventory_Page_Size * c_Inventory_Page_Count;
You should add it to your PythonPlayerModule.cpp:
PyModule_AddIntConstant(poModule, "ITEM_SLOT_COUNT", c_ItemSlot_Count);
-
-
Use uiskillbook.py from GF root, if you can’t do the python part.
-
My problem is this: GIF
Solution my problem:
char.h
Everywhere in the file
Search for:
BYTE bCell
Change for:
UINT bCell
AfterSearch for: (everywhere too)
BYTE bDestCell
Change for:
UINT bDestCell
You should do In char_item.cpp too.
- 3
- 1
-
my problem is this: GIF
Don't remove books from special inventory, and don't add to new book.
Does anybody have idea?
This part (original):
Spoiler#if defined(__SKILLBOOK_COMB_SYSTEM__) bool CInputMain::SkillBookCombination(LPCHARACTER ch, TItemPos(&CombItemGrid)[SKILLBOOK_COMB_SLOT_MAX], BYTE bAction) { if (!ch->GetDesc()) return false; // if (CombItemGrid.empty()) // return false; if (ch->GetExchange() || ch->GetShop() || ch->GetMyShop() || ch->IsOpenSafebox() || ch->IsCubeOpen()) return false; if (bAction != 2 /* COMBI_START */) return false; std::set <LPITEM> set_items; for (int i = 0; i < SKILLBOOK_COMB_SLOT_MAX; i++) { LPITEM pItem = ch->GetItem(CombItemGrid[i]); if (pItem) { if (pItem->GetType() != ITEM_SKILLBOOK) return false; set_items.insert(pItem); } } if (set_items.empty()) return false; if (ch->GetGold() < SKILLBOOK_COMB_COST) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You don't have enough Yang to trade books with me.")); return false; } for (std::set <LPITEM>::iterator it = set_items.begin(); it != set_items.end(); ++it) { LPITEM pItem = *it; if (pItem) { pItem->SetCount(pItem->GetCount() - 1); // pItem->RemoveFromCharacter(); // M2_DESTROY_ITEM(pItem); } } DWORD dwBooks[JOB_MAX_NUM][2 /* SKILL_GROUPS */][2] = { { // 0 - Warrior {50401, 50406}, // Skill Group 1 {50416, 50421}, // Skill Group 2 }, { // 1 - Ninja {50431, 50436}, // Skill Group 1 {50446, 50451}, // Skill Group 2 }, { // 2 - Sura {50461, 50466}, // Skill Group 1 {50476, 50481}, // Skill Group 2 }, { // 3 - Shaman {50491, 50496}, // Skill Group 1 {50506, 50511}, // Skill Group 2 }, #ifdef ENABLE_WOLFMAN_CHARACTER { // 4 - Wolfman {50530, 50535}, // Skill Group 1 {0, 0}, // Skill Group 2 }, #endif }; ch->PointChange(POINT_GOLD, -SKILLBOOK_COMB_COST); if (ch->GetSkillGroup() != 0) { DWORD dwMinRandomBook = dwBooks[ch->GetJob()][ch->GetSkillGroup() - 1][0]; DWORD dwMaxRandomBook = dwBooks[ch->GetJob()][ch->GetSkillGroup() - 1][1]; std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution<> dis(dwMinRandomBook, dwMaxRandomBook); DWORD dwRandomBook = dis(gen); ch->AutoGiveItem(dwRandomBook, 1); } else ch->AutoGiveItem(50300, 1); return true; } #endif
-
Open your ui.py, and Owsap’s ui.py.
Search for: SetToggleUpEvent
You need to find second hit in 2 class. Compare files.
- 1
-
i think uiinventory.py, RefreshBagSlotWindow().
-
Try to change skill_proto, and skill_table.txt.
-
Fix skill for damage:
skill_proto:
UPDATE `player`.`skill_proto` SET `dwVnum`='93', `szName`='Ruggito del drago', `bType`='4', `bLevelStep`='1', `bMaxLevel`='1', `bLevelLimit`='0', `szPointOn`='HP', `szPointPoly`='-(70+3*lv+(22*iq+13*mwep+100)*ar*k)', `szSPCostPoly`='50+160*k', `szDurationPoly`='', `szDurationSPCostPoly`='', `szCooldownPoly`='20', `szMasterBonusPoly`='-(70+3*lv+(22*iq+13*mwep+100)*ar*k)', `szAttackGradePoly`='', `setFlag`='ATTACK,SPLASH,ATTACK_FIRE_CONT', `setAffectFlag`='0', `szPointOn2`='NONE', `szPointPoly2`='lv+5*iq *k', `szDurationPoly2`='iq*0.2*k', `setAffectFlag2`='', `szPointOn3`='', `szPointPoly3`='', `szDurationPoly3`='', `szGrandMasterAddSPCostPoly`='50+160*k', `prerequisiteSkillVnum`='0', `prerequisiteSkillLevel`='0', `eSkillType`='MAGIC', `iMaxHit`='15', `szSplashAroundDamageAdjustPoly`='1', `dwTargetRange`='2500', `dwSplashRange`='500' WHERE (`dwVnum`='93');
Skill_table.txt:
93 ?????? 4 1 1 0 HP -(70+3*lv+(22*iq+13*mwep+100)*ar*k) 50+160*k 20 ATTACK,SPLASH,ATTACK_FIRE_CONT NONE lv+5*iq*k iq*0.2*k 0 0 MAGIC 15 1 2500 500
-
char.cpp
#ifdef ENABLE_WOLFMAN_CHARACTER
if (GetJob() == JOB_WOLFMAN)
{
if ((5 <= val) && (GetSkillGroup()!=1))
{
ClearSkill();
// set skill group
SetSkillGroup(1);
// set skill points
SetRealPoint(POINT_SKILL, GetLevel()-1);
SetPoint(POINT_SKILL, GetRealPoint(POINT_SKILL));
PointChange(POINT_SKILL, 0);
// update points (not required)
// ComputePoints();
// PointsPacket();
}
}
#endifAutomatic skill group for wolfman, if it's level 5. It should be comment out.
- 1
Block item use when shop window is opened?
in Community Support - Questions & Answers
Posted
Fast Fix:
uiinventory.py
Search for:
Add it below:
What you showed should work, but it doesn't.