Jump to content
Metin2 Network
Create New...

Leaderboard

Popular Content

Showing content with the highest reputation on 10/29/2024 in all areas

  1. JackWrestler Fake_Oyuncu.rar
    3 points
  2. I am offering this classic PVM server file and project, level 99! It includes Jettix graphics, complete sources, and ready-to-use gameplay! The server is functional and 99% fixed in its current state. It is not based on Zenaris2 but on a different server file. I also offer the graphics separately or can install the maps and graphics on your Metin client. All runs work perfectly, as do most of the existing features on the server at the moment. I am selling it because I do not have enough players and have accumulated a lot of hate from other server owners. Technologies used: MartySama 5.7 Visual Studio 2022 GCC 10 Video: Pic: Server Details: /usr/ // corect location unpack home in /usr/ foder. usr/src/ // corect location unpack Serversource /usr/src/ folder. var/db/ // unpack mysql in var/db/ folder set 777 permision and delete logs run this comands in putty : chown -R mysql /var/db/mysql && chgrp -R mysql /var/db/mysql pkg install python3 pkg install python pkg install gcc pkg install gcc10 pkg install gmake cd /usr/src/Source/Server gmake all -j20 for compiling game source and db source dont forget set 777 permision Then use comand reboot ! Start server : cd /usr/home/m2_svfiles/main python admin_panel.py then select 1a mysql passwrod ip root 3306 123456 Gm account : test1 123456 Player account test2 123456 U need visual studio 2022 comunity for compiling binary cleint source ! patch_main its root location set in serverinfo.py your ips. Good luck ! @uffo.dev ! For more services WhatsApp me : +447930905158 /usr/ // corect location unpack home in /usr/ foder. usr/src/ // corect location unpack Serversource /usr/src/ folder. var/db/ // unpack mysql in var/db/ folder set 777 permision and delete logs run this comands in putty : chown -R mysql /var/db/mysql && chgrp -R mysql /var/db/mysql pkg install python3 pkg install python pkg install gcc pkg install gcc10 pkg install gmake cd /usr/src/Source/Server gmake all -j20 for compiling game source and db source dont forget set 777 permision Then use comand reboot ! Start server : cd /usr/home/m2_svfiles/main python admin_panel.py then select 1a mysql passwrod ip root 3306 123456 Gm account : test1 123456 Player account test2 123456 U need visual studio 2022 comunity for compiling binary cleint source ! patch_main its root location set in serverinfo.py your ips. Good luck ! @uffo.dev ! Discord: uffo.dev Any dontation welcome 1€ - 5€ maximum will be great and helpfull to bring you guys more quality staff on REVOLUT: @mmotube or Paypal: uffo.dev@gmail.com Archive Password: www.mmodev.pro Download 1: [Hidden Content] Downlaod 2: [Hidden Content] Account from: test1 to test161 password: 123456 Any questions or help with installation Discord: uffo.dev
    2 points
  3. Download: Martysama Download link.rar @SFX has fix for you search shop buttons position Fix: uiikashop.py For those who do not know how to install it, you have here the OVA and Game with Mysql tar.gz Download: Ova Download.rar Ova: User: root Password: password Navicat: (You need to create SSH Tunnel) User: root Password: password
    1 point
  4. Since everyone wants a gateway for their servers, I paid a good web developer to make one for my metin2 server, this gateway is tested and a lot of payments have been made through it. Config: gateway/includes/functions.php Free test: [Hidden Content] Username: metin2network password: Metin2Network@ Download: gateway.rar Archive password: metin2.network It is very easy to change the design: gateway\images
    1 point
  5. P2PSendSwitchbot: No switchbot found to transfer. (pid 28 source_port 13000 target_port 16000) error appears when you change ch,port etc new_switchbot.cpp 1 void CSwitchbotManager::Initialize() { m_map_Switchbots.clear(); } to void CSwitchbotManager::Initialize() { for (auto& it : m_map_Switchbots) { delete it.second; } m_map_Switchbots.clear(); } 2 void CSwitchbotManager::P2PSendSwitchbot(DWORD player_id, WORD wTargetPort) { CSwitchbot* pkSwitchbot = FindSwitchbot(player_id); if (!pkSwitchbot) { sys_err("No switchbot found to transfer. (pid %d source_port %d target_port %d)", player_id, mother_port, wTargetPort); return; } pkSwitchbot->Pause(); to void CSwitchbotManager::P2PSendSwitchbot(DWORD player_id, uint16_t wTargetPort) { CSwitchbot* pkSwitchbot = FindSwitchbot(player_id); if (!pkSwitchbot) { return; } pkSwitchbot->Pause(); m_map_Switchbots.erase(player_id); TPacketGGSwitchbot pack; pack.wPort = wTargetPort; pack.table = pkSwitchbot->GetTable(); delete pkSwitchbot; pkSwitchbot = nullptr; P2P_MANAGER::Instance().Send(&pack, sizeof(pack)); }
    1 point
  6. Freebsd 13.2+ Mariadb 10.6.16 pkg install python3 Navicat id: mdkc password: Dev Download: [Hidden Content]
    1 point
  7. Hi guys, in these months, I did a lot of updates and the work got supported from everyone by giving me suggestions and a lot of motivation. Thank you all for this. I've decided to re-write the thread since the images were old and the described features too. NOTE: THIS CHEAT WORKS ONLY ON GF SERVERS AND AT THE MOMENT I'LL NOT SUPPORT PSERVERS HOW TO INJECT 1. Put 'maps' and 'points' into "C:\mobware_mt2" ( if it doesn't exists, create it ) 2. Download Extreme Injector 3. Put metin2client.exe in "Process Name" 4. Press "Settings" 5. Select "Standard Injection" into "Injection Method" and press "Ok" 6. Select "Add Dll" and select "metin2-mobware-v3.dll" 7. Press "Inject" once in game Download: [Hidden Content]
    1 point
  8. INTRODUCTION & PROBLEM Hello, we will solve the famous "Cannot Find Tree" problem in the "CHARACTER::Sync" function in the server src and also the problems that may be caused by the "Dead();" section used for everything that is not a PC in this function. WHAT DID WE CHANGE? All of the currently shared fixes are actually incomplete, we will make a new arrangement to solve this problem at its root, thus we will fix the problem completely. HOW TO DO? Without going into details such as editing the reward mechanism of the existing dead function, we will simply create a new dead function and use it in Sync. The main purpose of this function, which can only be used for mobs and metins, is that it does not give a reward (drop) after the dead function, let's get started. First, open "char_battle.cpp" // FIND; struct FuncSetLastAttacked // Add ABOVE; void CHARACTER::RewardlessDead() // DevFix 29 { if (IsPC()) // This function only for mobs or stones, so if IsPC() exit the function before it start. - [MT2Dev Note] - 10/10/2024 { return; } if (IsDead()) { return; } if (IsMonster() || IsStone()) // Dead is only possible when victim is mob or stone. - [MT2Dev Note] - 10/10/2024 { SetPosition (POS_DEAD); ClearAffect (true); ClearSync(); Reward (false); // No drop yang or item. - [MT2Dev Note] if (m_pkStunEvent) { event_cancel (&m_pkStunEvent); } TPacketGCDead pack; pack.header = HEADER_GC_DEAD; pack.vid = m_vid; PacketAround (&pack, sizeof (pack)); REMOVE_BIT (m_pointsInstant.instant_flag, INSTANT_FLAG_STUN); sys_log (0, "Rewardless_DEAD: %s %p", GetName(), this); // Create Dead event.. In the Dead event, for monsters, make them destroy after a few seconds. - [Ymir Dev Note] if (m_pkDeadEvent) { event_cancel (&m_pkDeadEvent); } if (IsStone()) { ClearStone(); } if (GetDungeon()) { GetDungeon()->DeadCharacter (this); } SCharDeadEventInfo* pEventInfo = AllocEventInfo<SCharDeadEventInfo>(); pEventInfo->isPC = false; pEventInfo->dwID = this->GetVID(); m_pkDeadEvent = event_create (dead_event, pEventInfo, PASSES_PER_SEC (0)); sys_log (0, "Rewardless_DEAD_EVENT_CREATE: %s %p %p", GetName(), this, get_pointer (m_pkDeadEvent)); } } Then open "char.cpp" // Find the function; bool CHARACTER::Sync (long x, long y) { //xxx } // Change it completely; // DevFix 29 - Necessary arrangement for scenarios where sync is not possible. - [MT2Dev Note] - 01/04/2024 // Moves to the specified x, y position regardless. - [Ymir Dev Note] bool CHARACTER::Sync (long x, long y) { LPSECTREE current_tree = GetSectree(); // For a better performance, call it only once.. - [MT2Dev Note] if (!current_tree) { sys_err ("<CHARACTER::Sync> Sectree is NULL! - Name: %s", GetName()); return false; } if (IsPC() && IsDead()) // DevFix 27 - Dead players not needed sync.. - [MT2Dev Note] - 01/04/2024 { return false; } LPSECTREE new_tree = SECTREE_MANAGER::instance().Get (GetMapIndex(), x, y); if (!new_tree) { if (GetDesc()) { sys_err ("Cannot Find Tree at - X: %d Y: %d (Name: %s)", x, y, GetName()); x = GetX(); y = GetY(); new_tree = current_tree; // If there is no new tree, just use the old one. - [MT2Dev Note] if (!new_tree) { sys_err ("[CRITICAL] - Cannot Find Tree at - X: %d Y: %d (Name: %s)", x, y, GetName()); GetDesc()->SetPhase (PHASE_CLOSE); } } else { if (IsMonster() || IsStone()) // Dead is only possible when victim is mob or stone. - [MT2Dev Note] - 10/10/2024 { sys_err ("[MOB or STONE]No Tree: %d %d %d", x, y, GetMapIndex()); RewardlessDead(); // In this special case, we don't want any reward so this is new function for it. - [MT2Dev Note] - 10/10/2024 } else { sys_err ("[HOW IS THIS POSSIBLE?]No Tree: %d %d %d", x, y, GetMapIndex()); } } return false; } SetRotationToXY (x, y); SetXYZ (x, y, 0); if (GetDungeon()) { // Dungeon event attribute change. - [Ymir Dev Note] int iLastEventAttr = m_iEventAttr; m_iEventAttr = new_tree->GetEventAttribute (x, y); if (m_iEventAttr != iLastEventAttr) { if (GetParty()) { quest::CQuestManager::instance().AttrOut (GetParty()->GetLeaderPID(), this, iLastEventAttr); quest::CQuestManager::instance().AttrIn (GetParty()->GetLeaderPID(), this, m_iEventAttr); } else { quest::CQuestManager::instance().AttrOut (GetPlayerID(), this, iLastEventAttr); quest::CQuestManager::instance().AttrIn (GetPlayerID(), this, m_iEventAttr); } } } if (current_tree != new_tree) { if (!IsNPC()) { SECTREEID id = new_tree->GetID(); SECTREEID old_id = current_tree->GetID(); const float fDist = DISTANCE_SQRT (id.coord.x - old_id.coord.x, id.coord.y - old_id.coord.y); sys_log (0, "SECTREE DIFFER: %s %dx%d was %dx%d dist %.1fm", GetName(), id.coord.x, id.coord.y, old_id.coord.x, old_id.coord.y, fDist); // DevFix 30 } new_tree->InsertEntity (this); } return true; } Lastly, open "char.h" // Find; void Dead (LPCHARACTER pkKiller = NULL, bool bImmediateDead = false); // Add under; void RewardlessDead(); // DevFix 29
    1 point
  9. PASS: jjas8d8asdhashda923328328hddf DOWNLOAD: [Hidden Content] Read: [Hidden Content]
    1 point
  10. Hi, anyone who has ever worked on martysama and made a "Hard" server knows that a totally weird bug occurs, namely that we can hit from a horse at level 1. Fix instancebase.cpp: UINT CInstanceBase::SHORSE::GetLevel() { if (m_pkActor) { DWORD dwMountVnum = m_pkActor->GetRace(); if (dwMountVnum == 20101 || dwMountVnum == 20102 || dwMountVnum == 20103) { return MOUNT_TYPE_NONE; } #ifdef ENABLE_NO_MOUNT_CHECK return MOUNT_TYPE_MILITARY; #else return static_cast<UINT>(GetMountLevelByVnum(dwMountVnum, false)); #endif } return 0; }
    0 points
×
×
  • Create New...

Important Information

Terms of Service

Write what you are looking for and press enter or click the search icon to begin your search