-
Posts
72 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by Heathcliff
-
How to reduce maximum bow distance?
Heathcliff replied to Cripplez's topic in Community Support - Questions & Answers
I think this will help you: In the first line you can change the usage range of your arrow. In the second line you can change the damage you do, what depends on how much is the distance between you and your enemy, if I'm correct. Btw. I haven't changed it yet. -
In root/uiMinimap.py: Then uiScript/minimap.py: PS: Btw this will show your local time that has been set in your windows and not your server time. Care with tabs.
-
[client]Player through the body,lol
Heathcliff replied to Torres's topic in Community Support - Questions & Answers
Search this: for (int i = 0; i < _countof(strMapListGlobal); i++) { if (strMapListGlobal == stringName) { for (int i = 0; i < _countof(pListGlobal); i++) { if (rVictim.GetRace() == pListGlobal || 0 <= rVictim.GetRace() && rVictim.GetRace() <= 7 ) return FALSE; } } } Replace with this: for (int i = 0; i < _countof(strMapListGlobal); i++) { if (strMapListGlobal[i] == stringName) { for (int i = 0; i < _countof(pListGlobal); i++) { if (rVictim.GetRace() == pListGlobal[i]) return FALSE; } } } It will working fine, but I think is no need to make a condition for every type of npc with vnums. I suggest you to use condition with IsNPC instead of one by one checking, because it will apply for all of your npcs includes shops, pets, and of course mounts. -
Absolute GM Restriction System
Heathcliff replied to Mind Rapist's topic in Features & Metin2 Systems
if (!tch) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CHAR_DOES_NOT_EXIST")); return; } -
[client]Player through the body,lol
Heathcliff replied to Torres's topic in Community Support - Questions & Answers
Show your GameLib/ActorInstanceCollisionDetection.cpp -
[client]Player through the body,lol
Heathcliff replied to Torres's topic in Community Support - Questions & Answers
I think it happens only when you're in the safezone bcs this has been implemented to your source: -
In GameLib/ActorInstanceCollisionDetection.cpp : Add this to includes: #include "../UserInterface/AbstractPlayer.h" Then in this function: BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim) Add this condition: if (IAbstractPlayer::GetSingleton().IsSamePartyMember(GetVirtualID(), rVictim.GetVirtualID())) return FALSE; Not a big deal but it can be useful on guild wars and in some dungeons I think. Regards
-
Maan... It's soo good as always. Especially love that map1 design with that moon.
-
Thank you!
-
[Help] Join dungeon alone
Heathcliff replied to Cripplez's topic in Community Support - Questions & Answers
You only need to put a starting coordinate into the Town.txt and then you can use d.join() function without coordinates if I'm right. -
Source Update - Clang-14 / c++2b + FreeBSD-12 + SRC
Heathcliff replied to Mali's topic in Programming & Scripts
Thank you! It works fine -
Thank you xP3NG3Rx
-
Exchange Window & Inventory Window - 1 Yang
Heathcliff replied to Aioria's topic in Community Support - Questions & Answers
uipickmoney.py search: self.pickValueEditLine.SetText(str(unitValue)) replace: self.pickValueEditLine.SetText("") -
Weapon effect binary Source
Heathcliff replied to kicsiasdvagyok's topic in Community Support - Questions & Answers
This way: else if (pItem->GetSubType() == CItemData::WEAPON_TWO_HANDED) { if (vnum == 9619) m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_RIB_MDE; else if (vnum == 9679) m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_HARAG_MDE; else if (vnum == 9739) m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SARGASARKANY_MDE; } else if (pItem->GetSubType() == CItemData::WEAPON_DAGGER) { if (vnum == 9629) { m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_FLT_MDE; m_swordRefineEffectLeft = EFFECT_REFINED + EFFECT_FLT_2_MDE; } else if (vnum == 9689) { m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_DWC_MDE; m_swordRefineEffectLeft = EFFECT_REFINED + EFFECT_DWC_2_MDE; } else if (vnum == 9749) { m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_LELEKTELEN_MDE; m_swordRefineEffectLeft = EFFECT_REFINED + EFFECT_LELEKTELEN_2_MDE; } } -
NPC bug can´t press
Heathcliff replied to Arturogarcelan's topic in Community Support - Questions & Answers
I think the solution to your problem is: Open: "YourNpc".msm file Search for the bones and try to replace with this: Group AttachingData00 { AttachingDataType 1 isAttaching 1 AttachingModelIndex 0 AttachingBoneName "Bip01" CollisionType 1 SphereDataCount 1 Group SphereData00 { Radius 23.000000 Position 0.000000 0.000000 0.000000 } } Group AttachingData01 { AttachingDataType 1 isAttaching 1 AttachingModelIndex 0 AttachingBoneName "Bip01" CollisionType 3 SphereDataCount 1 Group SphereData00 { Radius 50.000000 Position 0.000000 0.000000 0.000000 } } Try it! If I misunderstood your problem, then try to make a gif, or upload your npc's files here and we can give more precise solution. -
I love this mount maaan. ? Good job, and thanks for share
-
Allow armor change only every 5 seconds
Heathcliff replied to .Incredible™'s topic in Community Support - Questions & Answers
Sorry, my first post was buggy. I've corrected so, it works fine for me. do the char.h part again, then go to char_item.cpp and search this: if (iWearCell < 0) return false; Paste this under: int equipTime = 5; int iPulse = thecore_pulse(); if (iWearCell == WEAR_BODY) { if (iPulse - GetArmorUseTime() < PASSES_PER_SEC(equipTime)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't equip armor so fast")); return false; } else SetArmorUseTime(); } Regards -
Allow armor change only every 5 seconds
Heathcliff replied to .Incredible™'s topic in Community Support - Questions & Answers
Hi! Try this: char.h search: //PREVENT_REFINE_HACK int GetRefineTime() const { return m_iRefineTime; } void SetRefineTime() { m_iRefineTime = thecore_pulse(); } int m_iRefineTime; //END_PREVENT_REFINE_HACK Add this under: //PREVENT_ARMOR_WALLHACK int GetArmorUseTime() const { return m_iArmorUseTime; } void SetArmorUseTime() { m_iArmorUseTime = thecore_pulse(); } int m_iArmorUseTime; //END_PREVENT_ARMOR_WALLHACK Then open char_item.cpp and search this in "CHARACTER::EquipItem" function: if (iWearCell < 0) return false; Add this under: int equipTime = 5; int iPulse = thecore_pulse(); if (iWearCell == WEAR_BODY) SetArmorUseTime(); if (iWearCell == WEAR_BODY && iPulse - GetArmorUseTime() < PASSES_PER_SEC(equipTime)) { ChatPacket(CHAT_TYPE_INFO, "You can't equip armor so fast"); return false; } Not tested so I'm not sure it works! Regards -
Slotactive Effect Problem
Heathcliff replied to .SchneeFlocke''s topic in Community Support - Questions & Answers
You're welcome! -
Slotactive Effect Problem
Heathcliff replied to .SchneeFlocke''s topic in Community Support - Questions & Answers
Then try this: def RefreshBagSlotWindow(self): getItemVNum=player.GetItemIndex getItemCount=player.GetItemCount setItemVNum=self.wndItem.SetItemSlot for i in xrange(player.INVENTORY_PAGE_SIZE): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) itemCount = getItemCount(slotNumber) # itemCount == 0AI¸é 1OÄIA» onî´U. if 0 == itemCount: self.wndItem.ClearSlot(i) continue elif 1 == itemCount: itemCount = 0 itemVnum = getItemVNum(slotNumber) setItemVNum(i, itemVnum, itemCount) ## AÚµ1°3a (HP: #72723 ~ #72726, SP: #72727 ~ #72730) A—1öA3¸® - 3AAIAUAεYµµ 11·Ô! E°1oE/onE°1oE ÇY1A¸¦ A§ÇN AU3÷AÓ - [hyo] if constInfo.IS_AUTO_POTION(itemVnum): # metinSocket - [0] : E°1oE ©oÎ, [1] : »çëÇN 3ç, [2] : AÖ´ë ë·® metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex: slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex isActivated = 0 != metinSocket[0] if isActivated: self.wndItem.ActivateSlot(slotNumber) potionType = 0; if constInfo.IS_AUTO_POTION_HP(itemVnum): potionType = player.AUTO_POTION_TYPE_HP elif constInfo.IS_AUTO_POTION_SP(itemVnum): potionType = player.AUTO_POTION_TYPE_SP usedAmount = int(metinSocket[1]) totalAmount = int(metinSocket[2]) player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i)) else: self.wndItem.DeactivateSlot(slotNumber) else: self.wndItem.DeactivateSlot(i) self.wndItem.RefreshSlot() Careful with tabs! -
Slotactive Effect Problem
Heathcliff replied to .SchneeFlocke''s topic in Community Support - Questions & Answers
Try to replace this: if slotNumber >= player.INVENTORY_PAGE_SIZE: slotNumber -= player.INVENTORY_PAGE_SIZE to this: if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex: slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex -
Slotactive Effect Problem
Heathcliff replied to .SchneeFlocke''s topic in Community Support - Questions & Answers
Show us your: def RefreshBagSlotWindow(self): from uiinventory.py -
How is that system called?
Heathcliff replied to Strix.'s topic in Community Support - Questions & Answers
- 1 reply
-
- 2
-
Permanent red/blue potions
Heathcliff replied to Hust's topic in Community Support - Questions & Answers
char_item.cpp in: case USE_POTION: comment or delete: item->SetCount(item->GetCount() - 1);