Jump to content

Speachless

Premium
  • Posts

    683
  • Joined

  • Last visited

  • Days Won

    8
  • Feedback

    0%

Everything posted by Speachless

  1. Open char _state.cpp and search: if (fDist >= 4000.0f) Add before if (fDist >= 100.0f) { int boss_no_follow[] = {3391, 3591, 3791, 3091, 3191, 3891, 3691, 1191, 1901, 5163, 1304}; for (int i = 0; i < _countof(boss_no_follow); i++) { if (m_pkMobData->m_table.dwVnum == boss_no_follow[i]) { SetVictim(NULL); return; } } } The difference between mob_proto NOMOVE flag is that c++ part allow the mob to use his walk motion when it's not attacked. Open char_state.cpp and search: if (victim && !victim->IsDead()) Replace with if (victim && !victim->IsDead()) { SECTREE *tree = victim->GetSectree(); if (tree && tree->IsAttr(victim->GetX(), victim->GetY(), ATTR_BANPK)) return; if (CanBeginFight()) BeginFight(victim); return; } In char.cpp search void CHARACTER::OnMove(bool bIsAttack) After add SECTREE * sectree = GetSectree(); if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && IsMonster()) Return(); After you go out of safezone the mob will go for you. I haven't got a solution for that yet. Frist method needs something more. Open ActorInstanceBattle.cpp and create a bool with boss vnum bool NO_MOVE_WHEN_ATTACK(unsigned int vnum) { switch (vnum) { case 2493: case 2091: case 2092: case 1903: case 2492: case 1191: case 2598: case 3091: case 3191: case 3591: case 3691: case 3791: case 3891: case 3391: case 6091: return true; } return false; } Search bool CActorInstance::__CanPushDestActor(CActorInstance& rkActorDst) Add if (NO_MOVE_WHEN_ATTACK(rkActorDst.GetRace())) return false;
  2. We better work on a official ++ topic for the future members to be able to find faster.
  3. AA i see now, it happens when you hit them, not if you use bravely cape. I will search for a fix.
  4. If you teleport before mobs come nears to you in safezone, the mob will stay there so i think lent's code need to be used because it's on OnMove. Tested, works. SECTREE * sectree = GetSectree(); if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && IsMonster()) { SetVictim(NULL); Return(); }
  5. Move the code to char_state.cpp Follow/Move. Search 2493 (ctrl+f) and you will add the code before it.
  6. No, the edit also solves a kick problem that generally occurs on the mainline source. The problem occurs when you have hundreds of online players. I do not know if I made any other changes, because it was a long time ago, but the above function has solved my problem for sure. There is no need to get out the whole sequence code, just that little change is enough.
  7. Just stop. I use that replace since 2 years. You wanted for help, i told you what to do. It's not just a syserr. It's a kick characters from game. You will see after you get players on server.
  8. When people will understand that if you want help you have to post your code ? Check pvp_check_disconnect There is a null pointer in GetQuestFlag . Fix the pvp code or make a return if null there.
  9. Edit like this //if (bHeader == HEADER_CG_PONG) //sys_log(0, "PONG! %u %u", m_pPacketInfo->IsSequence(bHeader), *(BYTE *) (c_pData + iPacketLen - sizeof(BYTE))); if (m_pPacketInfo->IsSequence(bHeader)) { BYTE bSeq = lpDesc->GetSequence(); BYTE bSeqReceived = *(BYTE *) (c_pData + iPacketLen - sizeof(BYTE)); if (bSeq != bSeqReceived) return true; else { lpDesc->push_seq(bHeader, bSeq); lpDesc->SetNextSequence(); } }
  10. I wasn't talking about you. I appreciate that there are people who post free systems. I am taking about owner of server who download a system, but don't look in code. Every code can be improved. I know people who used systems from internet and got their servers f.up. It's not about who created the system, it's about who use it. Please accept my apologies, I didn't mean to upset you.
  11. Yes, but i saw others using it without the fix. And i was like " what the hell man, people just don't want to learn from the past "
  12. void MessengerManager::RemoveFromBlockList(MessengerManager::keyA account, MessengerManager::keyA companion) You have to escape it. Haven't you learned anything from the past sql exploit ?
  13. Your ACMD(do_user_horse_ride) it's not normal. You are not normal too.
  14. My server it's 3 old old and have hundreds of players online. A 3 old server has also a huge database right ? so more memory to read/write. And i don't have problems. Just stop telling people that loop timers are bad performance because are not. EVERYTHING ON METIN2 IT'S BASED ON TIMERS. You want to optimise the game ? Start with python part.
  15. Talk about performance when you have a server. ( and ps: It's not normal that a game run out of memory). I have 10 loop_timers to all connected players and the game doesn't even feel them. It's about data you put that loop to read/write. But most loops writes/read just some lines of code. Just stop
  16. Game performance can't be affected by a loop_timer.
  17. You already have a python code, on that mini interface. Use it.
  18. This tutorial may help you But in 2018 you can't get a source ?
  19. You have to compile the quest, with ./qc name.quest
×
×
  • 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.