Jump to content

Heathcliff

Member
  • Posts

    72
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by Heathcliff

  1. 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.
  2. 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.
  3. 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.
  4. if (!tch) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CHAR_DOES_NOT_EXIST")); return; }
  5. I think it happens only when you're in the safezone bcs this has been implemented to your source:
  6. 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
  7. Maan... It's soo good as always. Especially love that map1 design with that moon.
  8. 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.
  9. uipickmoney.py search: self.pickValueEditLine.SetText(str(unitValue)) replace: self.pickValueEditLine.SetText("")
  10. 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; } }
  11. 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.
  12. I love this mount maaan. ? Good job, and thanks for share
  13. 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
  14. Hi! Try this way window = { "name" : "Sash_AbsorbtionWindow", "x" : SCREEN_WIDTH - 176 - 200 - 80, "y" : SCREEN_HEIGHT - 37 - 563, "style" : ("movable", "float",), "width" : 205, "height" : 270, "children" : Regards
  15. 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
  16. 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!
  17. 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
  18. Show us your: def RefreshBagSlotWindow(self): from uiinventory.py
  19. char_item.cpp in: case USE_POTION: comment or delete: item->SetCount(item->GetCount() - 1);
×
×
  • 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.