Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 06/04/21 in all areas

  1. M2 Download Center Download Here ( Internal ) Github
    2 points
  2. M2 Download Center Download Here ( Internal ) Mega
    2 points
  3. As promised, here's to you: 1 - NullPtr + NewCase on famous Item MYTHICAL_PEACH char_item.cpp Find for: case 71107: Add below of this line: quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID()); This prevent: if (!pPC) return false; In your database there is an item like 71107, add the other case for it. case 71107: case 39032: 2 - Warp_all_to_village function was keeping also STAFF out. Replace the struct like this in questlua_global.cpp struct FWarpAllToVillage { FWarpAllToVillage() {}; void operator()(LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { const LPCHARACTER ch = (LPCHARACTER) ent; if (ch) { if (ch->IsPC() && !ch->IsGM()) { const auto bEmpire = ch->GetEmpire(); if (!bEmpire) return; ch->WarpSet( g_start_position[bEmpire][0], g_start_position[bEmpire][1] ); } } } } }; 3 - Enable Syserr also in LUA. In file questlua_global.cpp find for int _syserr(lua_State* L) or ALUA(_syserr) If you don't have it or if you have, replace or insert this function . int _syserr(lua_State* L) { if (!lua_isstring(L, 1)) return 0; sys_err("From LUA: %s", lua_tostring(L, 1)); /* PC* pc = CQuestManager::instance().GetCurrentPC(); if (!pc) return 0; LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (!ch) return 0; ch->ChatPacket(CHAT_TYPE_INFO, "QUEST_SYSERR %s", lua_tostring(L, 1)); */ return 0; } OR int _syserr(lua_State* L) { if (!lua_isstring(L, 1)) return 0; sys_err("From LUA: %s", lua_tostring(L, 1)); PC* pc = CQuestManager::instance().GetCurrentPC(); if (!pc) return 0; LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch) ch->ChatPacket(CHAT_TYPE_INFO, "QUEST_SYSERR %s", lua_tostring(L, 1)); return 0; } As you can see I commented the char part, because I suggest to use without! For server_timer and automatic things without char entity etc. Don't forget to add the function in RegisterGlobalFunctionTable and quest_functions file. 4 - Fix of bonus application like Official on special mineral slots. File item.cpp find for: if (0 != accessoryGrade) replace the if statement with this for 2 bonus only: if (0 != accessoryGrade && i < ITEM_APPLY_MAX_NUM - 1) UPDATE: From 2020-21 in official site, the bonus are shown and apply x3. So if you want to have like official, just leave c++ default and fix in python the show of the 3rd bonus. 5 - item with remain time stay into a shop, time shows: "Remain time 0 Sec.". In file uitooltip.py replace these functions: def AppendUniqueItemLastTime(self, restMin): def AppendMallItemLastTime(self, endTime): Like this: def AppendUniqueItemLastTime(self, restMin): if restMin > 0: restSecond = restMin*60 self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToHM(restSecond), self.NORMAL_COLOR) def AppendMallItemLastTime(self, endTime): if endTime > 0: leftSec = max(0, endTime - app.GetGlobalTimeStamp()) self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftSec), self.NORMAL_COLOR)
    1 point
  4. good work system
    1 point
  5. M2 Download Center Download Here ( Internal ) Hi Everyone! Mega I'll show you how to import gr2 file and i will give you all the programs and plugins you need Link contains 3ds max8 + keygen Grnreader(gr2 converter) Gr2 plugin(import & export) Smd plugin DDS plugin
    1 point
  6. he was and he is my inspiration from 2018 through these days, congrats bro.
    1 point
  7. I made an update for the files. - Added 5th Character Wolfman. - Changed from 4 to 5 Slots for Characters. - /set Command implemented changing race & sex for GM - Added MaskTypes for Item proto like official - Added 4th Apply in Item Proto like official - Added new columns for mob Proto like official (for compitability) - Added some more new points&applys - Resist fist column in .txt / .sql should work now - Fixed delimiter in dump proto for multiple race flags - Changed Loading of Mob/Item Proto In Db Source (improved code) - extended sockets to 5 (ITEM_SOCKET_MAX_NUM) - Current Protos can now be loaded without having to change something! - Fixed WEAR_SHIELD & WEAR_UNIQUE - Implemented Race Height feature - Replaced root with leaked gf root from 2018 - added all defines in pythonapplicationmodule(commented) - Added reversed event functions from pengers release - increased visible box line count from 5 to 15 - added missing function GetLoginID for character select. - Fixed "mse" syserr error due to costume aura items - Added Malis Last Play time system for official character select - Implemented official dice system & fixed monarch notice - Implemented official soul bind system. - Implemented official character details system. - Implemented official loading tips - Fixed a bug when you reset your skill group where you need to relog to see the true skill level. - Implemented official loading of Maps - Fixed switching items that are equipped. - and much more. If you want i can release it.
    1 point
  8. 1 point
  9. M2 Download Center Download Here ( Internal ) Hello! I boned this model for warrior. Feel free to use it ✩✶ 𝓋𝒶𝓃𝒹𝒶𝒶 ✶✩ dc: vandaa#8583 skype: vandaa_6
    1 point
  10. Btw, instead of adding a .SetDelay() to all objects, you could do do a simple change. for all visual ani_image from screen. root/ui.py Search for: if True == value.has_key("delay"): window.SetDelay(value["delay"]) Replace with: [Hidden Content] So, you don't have to any part of python from tutorial, just this.
    1 point
  11. The idea isn't so bad, but the code has too many useless lines, here's what you can do to improve it. def RefreshPickupFilter(self): #Weapon if systemSetting.IsPickUpFilterWeapon(): self.PickUpFilterList[0].Down() else: self.PickUpFilterList[0].SetUp() #Armor if systemSetting.IsPickUpFilterArmor(): self.PickUpFilterList[1].Down() else: self.PickUpFilterList[1].SetUp() #Ear if systemSetting.IsPickUpFilterEar(): self.PickUpFilterList[2].Down() else: self.PickUpFilterList[2].SetUp() #Neck if systemSetting.IsPickUpFilterNeck(): self.PickUpFilterList[3].Down() else: self.PickUpFilterList[3].SetUp() #Foots if systemSetting.IsPickUpFilterFoots(): self.PickUpFilterList[4].Down() else: self.PickUpFilterList[4].SetUp() #Shield if systemSetting.IsPickUpFilterShield(): self.PickUpFilterList[5].Down() else: self.PickUpFilterList[5].SetUp() #Book if systemSetting.IsPickUpFilterBook(): self.PickUpFilterList[6].Down() else: self.PickUpFilterList[6].SetUp() #Stone if systemSetting.IsPickUpFilterStone(): self.PickUpFilterList[7].Down() else: self.PickUpFilterList[7].SetUp() #Etc if systemSetting.IsPickUpFilterEtc(): self.PickUpFilterList[8].Down() else: self.PickUpFilterList[8].SetUp() To: def RefreshPickupFilter(self): checkFilterList = ( systemSetting.IsPickUpFilterWeapon(), systemSetting.IsPickUpFilterArmor(), systemSetting.IsPickUpFilterEar(), systemSetting.IsPickUpFilterNeck(), systemSetting.IsPickUpFilterFoots(), systemSetting.IsPickUpFilterShield(), systemSetting.IsPickUpFilterBook(), systemSetting.IsPickUpFilterStone(), systemSetting.IsPickUpFilterEtc() ) for child, flag in zip(self.PickUpFilterList, checkFilterList): if flag: child.Down() else: child.SetUp() self.PickUpFilterList.append(GetObject("Pick_Up_FilterWeapon")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterArmor")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEar")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterNeck")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterFoots")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterShield")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterBook")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterStone")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEtc")) To: for name in ('Weapon','Armor','Ear','Neck','Foots','Shield','Book','Stone','Etc'): self.PickUpFilterList.append(GetObject("Pick_Up_Filter{}".format(name))) self.PickUpFilterList[0].SetToggleUpEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[0].SetToggleDownEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[1].SetToggleUpEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[1].SetToggleDownEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[2].SetToggleUpEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[2].SetToggleDownEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[3].SetToggleUpEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[3].SetToggleDownEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[4].SetToggleUpEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[4].SetToggleDownEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[5].SetToggleUpEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[5].SetToggleDownEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[6].SetToggleUpEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[6].SetToggleDownEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[7].SetToggleUpEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[7].SetToggleDownEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[8].SetToggleUpEvent(self.__OnClickPickupFilterButtonEtc) # Etc self.PickUpFilterList[8].SetToggleDownEvent(self.__OnClickPickupFilterButtonEtc) # Etc To: eventFuncList = ( self.__OnClickPickupFilterButtonWeapon, self.__OnClickPickupFilterButtonArmor, self.__OnClickPickupFilterButtonEar, self.__OnClickPickupFilterButtonNeck, self.__OnClickPickupFilterButtonFoots, self.__OnClickPickupFilterButtonShield, self.__OnClickPickupFilterButtonBook, self.__OnClickPickupFilterButtonStone, self.__OnClickPickupFilterButtonEtc ) for child, event in zip(self.PickUpFilterList, eventFuncList): child.SetToggleUpEvent(event) child.SetToggleDownEvent(event)
    1 point
  12. Fix Dungeon count monsters: Dungeon.cpp struct FCountMonster { int n; FCountMonster() : n(0) {}; void operator()(LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { LPCHARACTER ch = (LPCHARACTER) ent; if (ch->IsMonster() || ch->IsStone())//FIX n++; } } }; (Function was keeping also NPC, it could make you ugly problems). Fix Dungeon memory usage: namespace { struct FNotice { FNotice(const char * psz) : m_psz(psz) { } void operator() (LPENTITY ent) { if (ent->IsType(ENTITY_CHARACTER)) { LPCHARACTER ch = (LPCHARACTER) ent; if (ch->IsPC()) //FIX ch->ChatPacket(CHAT_TYPE_NOTICE, "%s", m_psz); } } const char * m_psz; }; } Just 2 errors. I hope that it'll be useful
    1 point
  13. Hello, let's start! 1- char_item.cpp Find for double ";;" It's ok for compiler but not good for other things that may happen. 2- On bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell) Find: if (iWearCell < 0) return false; Add below: //FIX BLOCK MARRIAGE ITEMS WHILE RIDING if (iWearCell == WEAR_BODY && IsRiding() && (item->GetVnum() >= 11901 && item->GetVnum() <= 11914)) //Marriage Armors { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("?????????????????????????????")); return false; } if (iWearCell == WEAR_WEAPON && IsRiding() && (item->GetVnum() == 50201)) //Marriage Weapon { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("?????????????????????????????")); return false; } 3- SMALL PREVENTS ON questlua_global.cpp int _clear_server_timer(lua_State* L) { CQuestManager & q = CQuestManager::instance(); const char * name = lua_tostring(L, 1); DWORD arg = (DWORD) lua_tonumber(L, 2); if (name && arg) q.ClearServerTimer(name, arg); else sys_err("LUA PREVENT: Wrong argument on ClearServerTimer!"); return 0; } int _char_log(lua_State * L) { CQuestManager& q = CQuestManager::instance(); LPCHARACTER ch = q.GetCurrentCharacterPtr(); DWORD what = 0; const char* how = ""; const char* hint = ""; if (lua_isnumber(L, 1)) what = (DWORD)lua_tonumber(L, 1); if (lua_isstring(L, 2)) how = lua_tostring(L, 2); if (lua_tostring(L, 3)) hint = lua_tostring(L, 3); if (ch) LogManager::instance().CharLog(ch, what, how, hint); else sys_err("LUA PREVENT: !ch on _char_log!"); return 0; } 4- FIX ISSUE ON WAR: battle.cpp Find: battle_is_attackable Must be like this: if (victim->IsDead() || victim->IsObserverMode()) return false; if (ch->IsStun() || ch->IsDead() || ch->IsObserverMode()) return false; Hope it'll be useful.
    1 point
  14. No , go in putty: Write 1)cd /YOUR PATH/Source_Folder 2) cd .. 3) rm -rf Source_Folder
    0 points
×
×
  • 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.