Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/27/15 in all areas

  1. M2 Download Center Download Here ( Internal ) I'm releasing self-tipped Source-Code extension for attacking Pets Preview: In Scope Square - the hottest P-Server project that will ever start - the whole thing is of course 1000x better, fixed with possible bugs, and a gui, with which the pet can then essentially control where the target of the Can choose pets himself, and can also launch skills of the pet you open "PetSystem.h" and insert under "void unmount();" bool Attack(LPCHARACTER pkVictim = NULL); Should then look like this: Same file, looks for: CPetActor * GetByVnum(DWORD vnum) const; and inserts below: void LaunchAttack(LPCHARACTER pkVictim = NULL); Should then look like this: you open "PetSystem.cpp" and: searches for bool CPetActor::Update(DWORD deltaTime) Replace complete function with: bool CPetActor::Update(DWORD deltaTime) { bool bResult = false; // Æê ÁÖÀÎÀÌ Á×¾ú°Å³ª, ¼ÒȯµÈ ÆêÀÇ »óÅ°¡ ÀÌ»óÇÏ´Ù¸é ÆêÀ» ¾ø¾Ú. (NOTE: °¡²û°¡´Ù ÀÌ·± Àú·± ÀÌÀ¯·Î ¼ÒȯµÈ ÆêÀÌ DEAD »óÅ¿¡ ºüÁö´Â °æ¿ì°¡ ÀÖÀ½ // ÆêÀ» ¼ÒȯÇÑ ¾ÆÀÌÅÛÀÌ ¾ø°Å³ª, ³»°¡ °¡Áø »óÅ°¡ ¾Æ´Ï¶ó¸é ÆêÀ» ¾ø¾Ú. if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID()) || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner() ) { this->Unsummon(); return true; } if (this->GetCharacter()->GetVictim()) { bResult = this->Attack(); } if (!bResult) { if (this->IsSummoned() && HasOption(EPetOption_Followable)) bResult = this->_UpdateFollowAI(); } return bResult; } Same file, looks for the function: void CPetActor::ClearBuff() Adds the following func AFTER this function (not IN the function): bool CPetActor::Attack(LPCHARACTER pkVictim) { if (pkVictim) { if (!pkVictim->IsMonster() || pkVictim->IsDead()) return false; if (m_pkChar->GetVictim()) return false; } else { pkVictim = m_pkChar->GetVictim(); if (!pkVictim) return false; } m_pkChar->SetVictim(pkVictim); const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ(); const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ(); int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y); if (iDistance >= m_pkChar->GetMobAttackRange()) { m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange()); } else { if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000) { if (m_pkChar->Attack(pkVictim)) { m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time()); m_pkChar->SetLastAttacked(get_dword_time()); } } } return true; } should then look like this: You are looking for the function: bool CPetSystem::Update(DWORD deltaTime) and ABOVE inserts the following function: void CPetSystem::LaunchAttack(LPCHARACTER pkVictim) { if (!pkVictim) return; for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it) { CPetActor* pkPetActor = it->second; if (pkPetActor->IsSummoned()) pkPetActor->Attack(pkVictim); } } should then look like this: and last but not least - open the file: "char_battle.cpp", looks for the function: bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType) and adds under the following content: // only pc sets victim null. For npc, state machine will reset this. if (BATTLE_DEAD == iRet && IsPC()) SetVictim(NULL); This one: if (BATTLE_DEAD != iRet && IsPC()) { if (m_petSystem && m_petSystem->CountSummoned() > 0) m_petSystem->LaunchAttack(pkVictim); } Should then look like this: So that would increase the biceps buttock opening by - for my part - 2 meters. #Edt: So that the pets can also die: Opens the pvp.cpp, searches for bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim) and inserts: if (pkChr->IsPet() && pkVictim->IsMonster()) { return true; } if (pkChr->IsMonster() && pkVictim->IsPet()) { return true; } Like this: Enjoy!
    6 points
  2. M2 Download Center Download Here ( Internal ) Hi devs, I didn't any release long time. It's not so good I think, so here I'm. This is my older boss from Santhia, used in Forest dungeon. Folder contains only my edited effect, next ones You have in your client, it's standard effects. I don't want to be like other people and do all work just for myself or for sell. This is Santhia thing, so enjoy it and use on your server. Tip: Use new granny for this mob. etc. 2.8+ Download: [Hidden Content] With love, Plechito
    5 points
  3. Corrected tabulation, code, include and english How-To [HowTo] Search in petsystem.h "void unmount();" and add this under : bool Attack(LPCHARACTER pkVictim = NULL); It's look like this : Then search "CPetActor* GetByVnum(DWORD vnum) const;" and add this under : void LaunchAttack(LPCHARACTER pkVictim = NULL); It's look like this : -> Save and then open PetSystem.cpp: Search the "bool CPetActor::Update(DWORD deltaTime)" function And replace it with this : bool CPetActor::Update(DWORD deltaTime) { bool bResult = false; if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) || NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID()) || ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner() ) { this->Unsummon(); return true; } if (this->GetCharacter()->GetVictim()) { bResult = this->Attack(); } if (!bResult) { if (this->IsSummoned() && HasOption(EPetOption_Followable)) bResult = this->_UpdateFollowAI(); } return bResult; } Search the "void CPetActor::ClearBuff()" function And add this function under : bool CPetActor::Attack(LPCHARACTER pkVictim) { if (pkVictim) { if (!pkVictim->IsMonster() || pkVictim->IsDead()) return false; if (m_pkChar->GetVictim()) return false; } else { pkVictim = m_pkChar->GetVictim(); if (!pkVictim) return false; } m_pkChar->SetVictim(pkVictim); const PIXEL_POSITION& rkPetPos = m_pkChar->GetXYZ(); const PIXEL_POSITION& rkVictimPos = pkVictim->GetXYZ(); int iDistance = DISTANCE_APPROX(rkPetPos.x - rkVictimPos.x, rkPetPos.y - rkVictimPos.y); if (iDistance >= m_pkChar->GetMobAttackRange()) { m_pkChar->Follow(pkVictim, m_pkChar->GetMobAttackRange()); } else { if (get_dword_time() - m_pkChar->GetLastAttackTime() >= 3000) { if (m_pkChar->Attack(pkVictim)) { m_pkChar->SendMovePacket(FUNC_ATTACK, 0, rkPetPos.x, rkPetPos.y, 0, get_dword_time()); m_pkChar->SetLastAttacked(get_dword_time()); } } } return true; } It will look like this: Search "bool CPetSystem::Update(DWORD deltaTime)" And add this above: void CPetSystem::LaunchAttack(LPCHARACTER pkVictim) { if (!pkVictim) return; for (itertype(m_petActorMap) it = m_petActorMap.begin(); it != m_petActorMap.end(); ++it) { CPetActor* pkPetActor = it->second; if (pkPetActor->IsSummoned()) pkPetActor->Attack(pkVictim); } } It will look like this: Save and open "char_battle.cpp" : Add a the begining : #include "PetSystem.h" Then search this function : "bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)" And especially this part: // only pc sets victim null. For npc, state machine will reset this. if (BATTLE_DEAD == iRet && IsPC()) SetVictim(NULL); Add this under: if (BATTLE_DEAD != iRet && IsPC()) { if (m_petSystem && m_petSystem->CountSummoned() > 0) m_petSystem->LaunchAttack(pkVictim); } It will look like this: Save and open "pvp.cpp" Then search this function : "bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)" And add this under : if (pkChr->IsPet() && pkVictim->IsMonster()) { return true; } if (pkChr->IsMonster() && pkVictim->IsPet()) { return true; } Like this: Recompile, and done
    4 points
  4. M2 Download Center Download Here ( Internal ) Hello, To extend NPC Shop to 80 Items follow these steps. ServerSide Open "common/length.h" and search: SHOP_HOST_ITEM_MAX_NUM = 40 Replace with: SHOP_HOST_ITEM_MAX_NUM = 80 In the same file search: SHOP_PRICELIST_MAX_NUM = 40 Replace with: SHOP_PRICELIST_MAX_NUM = 80 Now open "game/shop.cpp" and search: m_pGrid = M2_NEW CGrid(5, 9) Replace with: m_pGrid = M2_NEW CGrid(10, 9) Now open "game/shop_manager.cpp" and search: CGrid grid = CGrid(5, 9) Replace with: CGrid grid = CGrid(10, 9) Now compile Db File & Game File and ServerSide's steps complete. ClientSide NOTE: If you want Only NPC Shop's with 80 Items follow this guide, else if you want NPC Shop & Private Shop follow the Update Istruction. Extract "pack/uiscript" from your Client and open "shopdialog.py". Now reaplace all content with: Shopdialog.py ~ 80 Items Now create "shopdialog2.py" and insert this content: ShopDialog2 ~ 80 Items for Shop Ok, at this point you can compress your UiScript with the new file "shopdialog2.py". Extract "pack/root" from your Client and open "interfacemodule.py" Search this: self.dlgShop = uiShop.ShopDialog() self.dlgShop.LoadDialog() self.dlgShop.Hide() After add: self.dlgShop2 = uiShop.ShopDialog2() self.dlgShop2.LoadDialog() self.dlgShop2.Hide() Same file, search this: def OpenShopDialog(self, vid): self.wndInventory.Show() self.wndInventory.SetTop() self.dlgShop.Open(vid) self.dlgShop.SetTop() After add: def OpenShopDialog2(self, vid): self.wndInventory.Show() self.wndInventory.SetTop() self.dlgShop2.Open(vid) self.dlgShop2.SetTop() Now open "game.py" and Search: def StartShop(self, vid): self.interface.OpenShopDialog(vid) Replace with: def StartShop(self, vid): if chr.IsNPC(vid): self.interface.OpenShopDialog(vid) else: self.interface.OpenShopDialog2(vid) Now open "uishop.py" and Search: def Close(self): self.OnCloseQuestionDialog() shop.Close() net.SendShopEndPacket() self.CancelShopping() self.tooltipItem.HideToolTip() self.Hide() Replace with: def Close(self): self.OnCloseQuestionDialog() shop.Close() net.SendShopEndPacket() self.CancelShopping() self.Hide() Same file, search: def OnUpdate(self): USE_SHOP_LIMIT_RANGE = 1000 (x, y, z) = player.GetMainCharacterPosition() if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE: self.Close() After add: UiShop.py ~ ShopDialog2 Now you can compress "root" file. #Update [24-02-15] Fixed Client Bug. Changes in "shop_manager.cpp" added. #Update [26-02-15] Added PrivateShop with 80 Items. NPC & PrivateShop with 80 Items ClientSide: Open "UserInterface/Packet.h" in you Binary Client Source and Search: SHOP_HOST_ITEM_MAX_NUM = 40 Replace with: SHOP_HOST_ITEM_MAX_NUM = 80 Now you can compile your Binary Source. Open your Client File and extract "pack/uiscript". Open "shopdialog.py" and replace all contentwith: Shopdialog.py ~ 80 Items Now open "privateshopbuilder.py" and replace all content with: PrivateShopBuilder ~ 80 Items Now you can compress your UiScript. Screen Private Shop: [Hidden Content] Et Voilà, we ended. [Hidden Content] Good work, Bye.
    2 points
  5. Hi everyone, I just wanna show you some things I made 1.Autopotions with time instead of quantity 2.Potions inventory: a special inventory for potions 3.Reborn replacing level instead of alignment (replacing alignment is kinda stupid, if you ask me). 4.Rage System: it fills by 1% for every mob you hit (hit, not ability). When it is at 100% you will gain some bonuses. If you don't attack for 3 seconds it will start decreasing by 5% per second. If you start attacking again it will start increasing too. I made more things, but I have prints only for those. What you think? Who of you are going to do them?
    2 points
  6. This is already discussed, but I will summarize the history here so you can answer to that thread in MPC. In 8th August 2014 a hacker hired by the owner of metin2.sg, Christopher Chia, infected one of the employees of the hosting company Eterhost. Through this employees' PC, he downloaded the WoM repository, database and website -which were hosted there- and deleted all of Eterhost customer's data (about 100 VPS or 5 TB worth of data). This became the most destructive hacking event ever happened in the metin2 world. About 2 months later Christopher Chia himself (using an account called "AVeryGenerousMan") released all of these WoM files in epvp hoping to get some applause for his hacking endeavors. His server got ddosed by epvp users instead. More information about SG's criminal history is
    2 points
  7. What say the Syser from your Client i see a environment bug of the Shadowmaps it`s Creazy the SRC have realy nice bugs and failes Ven. My SYSERR shows nothing Change the client bro, this is the best source client. It tested me in all possible ways. UPDATE 27.02.2015 -Special lib folder and python22.dll added. -True and TRUE was fixed -And moree
    2 points
  8. M2 Download Center Download Here ( Internal )
    1 point
  9. Hello, I will explain how you can have 24 slots item in exchange/trade dialog. ServerSide Open your "game/exchange.cpp" in Source File and search: m_pGrid = M2_NEW CGrid(4,3); Replace with: m_pGrid = M2_NEW CGrid(6,4); Open "game/exchange.h" and search: EXCHANGE_ITEM_MAX_NUM = 12 Replace with: EXCHANGE_ITEM_MAX_NUM = 24 Now you can compile your Game File. ClientSide Open "UserInterface/PythonExchange.h" from your Binary Source files and search: EXCHANGE_ITEM_MAX_NUM = 12 Replace with: EXCHANGE_ITEM_MAX_NUM = 24 Now you can compile your Client Binary. Extract "pack/uiscript" from your Client and open "exchangedialog.py", replace all content with: ExchangeDialog.py ~ 24 Slot Item Now you can compress your UiScript. Good work, Bye.
    1 point
  10. hi can u give me link to this set?
    1 point
  11. M2 Download Center Download Here ( Internal ) Hello metin2dev, i will teach you how to use the io.open function. You can create an editable quest announcement without restarting the server or reload anything. On login example quest ioopenexample_1 begin state start begin when login begin announcements = io.open("locale/location/announcements.txt") notice("News:"..announcements:read()) end end end That's pretty simple.
    1 point
  12. woow amazing work...thx alot
    1 point
  13. 3ds max studio. And some tools that you can find in this forum like the gr2 convertor. One curiosity, what do you want to remove?
    1 point
  14. Hell yea my brother Kind Regards Ken ~ TA
    1 point
  15. //currently hp int npc_get_hp(lua_State * L) { CQuestManager& q = CQuestManager::instance(); LPCHARACTER npc = q.GetCurrentNPCCharacterPtr(); lua_pushnumber(L, npc->GetHP()); } //maximum hp int npc_get_max_hp(lua_State * L) { CQuestManager& q = CQuestManager::instance(); LPCHARACTER npc = q.GetCurrentNPCCharacterPtr(); lua_pushnumber(L, npc->GetMaxHP()); }
    1 point
  16. maybe because u dont put the damage in mob proto?
    1 point
  17. char_battle.cpp add to Includes: #include "PetSystem.h", should work =)
    1 point
  18. It IS Savant Nice to hear that there are actually people listening to his songs =) He's an awesome artist and started with the toy-keyboard of his little sister, awesome guy =)
    1 point
  19. Thanks =) I actually had the Intention to translate it, but no time and stuff, really nice from you ^-^ All in all - this is a Bitchmove-Release. The Guy selling this annoyed me hard. And 250€ is definetly too much for 2 Functions and a call.
    1 point
  20. English tutorial please...
    1 point
  21. Open uiCharacter.py and search: def __CanUseHorseSkill(self): slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_RIDING) if not slotIndex: return FALSE grade = player.GetSkillGrade(slotIndex) level = player.GetSkillLevel(slotIndex) if level < 0: level *= -1 if grade >= 1 and level >= 1: return TRUE And change it to: def __CanUseHorseSkill(self): slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_RIDING) if not slotIndex: return FALSE grade = player.GetSkillGrade(slotIndex) level = player.GetSkillLevel(slotIndex) if level < 0: return False if level >= 4: return True return FALSE
    1 point
  22. Go to Userinterface Search and open "locale_inc.h" now see you #define LOCALE_SERVICE_SINGAPURE or what ever // ½Ì°¡Æú #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM and add #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM Now Compail all new and it´s work Ven.
    1 point
  23. What about setting the ds_drop event flag to number like 5? Can't you read the code to understand its function? /e ds_drop 5
    1 point
  24. to solve this error you have to open the file secblock.h from cryptopp and go to line 91 and replace CheckSize(n); with this->CheckSize(n);
    1 point
  25. In PythonLauncher.cpp: search: PyModule_AddIntConstant(builtins, "TRUE", 1); and add: PyModule_AddIntConstant(builtins, "TRUE", 1); PyModule_AddIntConstant(builtins, "FALSE", 0); PyModule_AddIntConstant(builtins, "True", 1); PyModule_AddIntConstant(builtins, "False", 0); Now TRUE and True works
    1 point
  26. I know what the problem is. Delete everything related to visual studio computer. Delete and from Program Data. Delete and from AppData Absolutely everything related to visual studio. and install visual studio this link [Hidden Content] problem is visual studio This file afxres.h is a component of Visual Studio. No source.
    1 point
  27. mi core is based in "mainline" i not find the file "length.h" :/ Server/common/lenght.h
    1 point
  28. if you are using source open length.h and search for 120 and change it to 250 or whatever you want
    1 point
×
×
  • 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.