- Katılım
- 6 Mayıs 2022
- Mesajlar
- 45,967
ilk Olarak. void CUser::SelNationToAgent(Packet & pkt) Bu kısımı Aşağıdaki ile Degiştiriyoruz.
Ve Yine Ayni Şekilde. void CUser::ChangeHair Bu Satiri Bulup Aşağidaki ile Değiştiriyoruz.
void CUser::NewCharToAgent Bulup Aşağidaki ile Değiştiriyoruz.
void CUser:
elCharToAgent Bulup Aşağidaki ile Değiştiriyoruz.
void CUser::SelCharToAgent Bulup Aşağidaki ile Değiştiriyoruz.
void CUser::SelectCharacter Aşağidaki ile Değiştiriyoruz.
void CUser::SendServerChange(std::string & ip, uint8 bInit) Aşağidaki ile Değiştiriyoruz.
void CUser::SetLogInInfoToDB(uint8 bInit) Aşağidaki ile Değiştiriyoruz.
void CUser::RecvLoginInfo(Packet & pkt) Aşağidaki ile Değiştiriyoruz.
void CUser::GameStart(Packet & pkt) Aşağidaki ile Değiştiriyoruz.
Son Olarak. void CUser::CheckSeedQuest Bulup Aşağidaki ile Değiştiriyoruz.
"Not: Sorun Alanlar Özelden Yazabilirler Sorun'larını"
18xx Andream Savaşı Düzenleme Sorunsuz: Knight Online Private Server Geliştiricileri İçin Rehber
Knight Online özel sunucularında yüksek seviye içerikler sunmak isteyen geliştiriciler için 18xx Andream Savaşı düzenlemek, sunucunuzun popülerliğini artırmada büyük rol oynar. Bu rehberde, Andream Savaşları sırasında yaşanabilecek sorunları en aza indirgeyen ve sorunsuz bir düzenleme yapmayı öğreneceksiniz.
18xx Andream Savaşı Nedir?
Knight Online oyununda Andream Savaşı, Karus ve El Morad krallıklarının birbirleriyle savaştığı önemli bir PvP etkinliğidir. Özellikle 18xx seviyelerinde düzenlenen bu savaşlar, sunucu popülasyonunu aktif tutmak ve oyun içi rekabeti artırmak için idealdir. Ancak doğru yapılandırılmazsa, sunucuda performans düşüklüğü, oyuncu kayıpları ve hatta crash gibi ciddi problemlere yol açabilir.
Sunucu Dosyalarında Gerekli Değişiklikler
18xx Andream savaşları için öncelikle server files üzerinde bazı ayarlamalar yapılmalıdır. Özellikle zone server dosyalarında yer alan mob.bin ve npc.bin dosyaları kontrol edilmeli. Cap 83 ya da cap 70 sistemlerde bu dosyaların doğru şekilde yapılandırıldığından emin olunmalıdır.
Savaş Ayarlarını Optimize Etme
Andream savaşları için KO DB üzerinde doğru zamanlama ve ko emulator ayarları yapılmalıdır. Savaş zamanlarını KO Dev ekibi olarak tanımlarken, sunucu yoğunluğuna göre crash yememek adına testler yapmanız önemlidir. Özellikle ebonyshard gibi sistemsel ayarlar da gözden geçirilmelidir.
Oyuncu Deneyimini Artırmak
Sunucunuzda 18xx Andream Savaşı gerçekleşirken, oyuncuların macro bot veya KO Bot kullanmalarını engellemek için KO Guard ve KO Filter gibi sistemlerin aktif olması gerekir. Bu sayede adil bir savaş ortamı sağlanabilir.
Sonuç
Knight Online Private Server geliştiricileri için 18xx Andream Savaşları, sunucuyu popüler kılmak açısından kritik öneme sahiptir. Doğru KO Source kodları ve emulator ayarlarıyla sorunsuz bir savaş sistemi oluşturmak mümkündür. KnightLobby.com olarak biz bu tür gelişmiş yapılandırmalarla ilgileniyoruz ve geliştiricilere yardımcı oluyoruz.
Kaynaklar
KnightLobby - Knight Online Private Server Geliştirme
18xx Andream War Editing Without Issues: A Guide for Knight Online Private Server Developers
Knight Online private server developers who aim to provide high-level content will find that editing 18xx Andream Wars significantly boosts their server's popularity. This guide teaches you how to configure Andream Wars in a way that minimizes potential problems and ensures a smooth experience.
What is 18xx Andream War?
In Knight Online, the Andream War is an important PvP event where the kingdoms of Karus and El Morad battle each other. Especially at level 18xx, these wars are ideal for keeping the server population active and increasing in-game competition. However, if not configured properly, they can cause serious issues like performance drops, player disconnections, and even server crashes.
Required Changes in Server Files
Firstly, certain adjustments must be made in server files for 18xx Andream Wars. In particular, mob.bin and npc.bin files located in the zone server should be checked. Ensure these files are properly configured in systems such as Cap 83 or Cap 70.
Optimizing War Settings
For Andream Wars, timing settings must be correctly defined in KO DB and ko emulator. While defining war times as part of the KO Dev team, make sure to run tests according to server load to avoid crashes. System-level configurations like ebonyshard should also be reviewed.
Improving Player Experience
During your server's 18xx Andream War, ensure that KO Guard and KO Filter systems are active to prevent players from using macro bots or KO Bots. This helps maintain a fair battlefield environment.
Conclusion
For Knight Online Private Server developers, 18xx Andream Wars are crucial in making your server popular. With correct KO Source codes and emulator configurations, it's possible to create a seamless war system. At KnightLobby.com, we focus on such advanced configurations and assist developers.
Resources
KnightLobby - Knight Online Private Server Development
Kod:
void CUser::AllCharInfoToAgent() { Packet result(WIZ_ALLCHAR_INFO_REQ); g_pMain->AddDatabaseRequest(result, this); }
Ve Yine Ayni Şekilde. void CUser::ChangeHair Bu Satiri Bulup Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::ChangeHair(Packet & pkt) { std::string strUserID; uint32 nHair; uint8 bOpcode, bFace; // The opcode: // 0 seems to be an in-game implementation for converting from old -> new hair data // 2 seems to be used with the hair change item(?). // Another note: there's 4 bytes at the end of the packet data that I can't account for (maybe a[nother] checksum?) pkt.SByte(); pkt >> bOpcode >> strUserID >> bFace >> nHair; Packet result(WIZ_CHANGE_HAIR); result.SetByte(); result << bOpcode << strUserID << bFace << nHair; g_pMain->AddDatabaseRequest(result, this); }
void CUser::NewCharToAgent Bulup Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::NewCharToAgent(Packet & pkt) { Packet result(WIZ_NEW_CHAR); uint32 nHair; uint16 sClass; uint8 bCharIndex, bRace, bFace, str, sta, dex, intel, cha, errorCode = 0; std::string strUserID; pkt >> bCharIndex >> strUserID >> bRace >> sClass >> bFace >> nHair >> str >> sta >> dex >> intel >> cha; _CLASS_COEFFICIENT* p_TableCoefficient = g_pMain->m_CoefficientArray.GetData(sClass); if (bCharIndex > 2) errorCode = NEWCHAR_NO_MORE; else if (p_TableCoefficient == nullptr || (str + sta + dex + intel + cha) > 300) errorCode = NEWCHAR_INVALID_DETAILS; else if (str < 50 || sta < 50 || dex < 50 || intel < 50 || cha < 50) errorCode = NEWCHAR_STAT_TOO_LOW; if (errorCode != 0) { result << errorCode; Send(&result); return; } result << bCharIndex << strUserID << bRace << sClass << bFace << nHair << str << sta << dex << intel << cha; g_pMain->AddDatabaseRequest(result, this); }
void CUser:
Kod:
void CUser::DelCharToAgent(Packet & pkt) { Packet result(WIZ_DEL_CHAR); std::string strUserID, strSocNo; uint8 bCharIndex; pkt >> bCharIndex >> strUserID >> strSocNo; if (bCharIndex > 2 || strUserID.empty() || strUserID.size() > MAX_ID_SIZE || strSocNo.empty() || strSocNo.size() > 15 || isClanLeader()) { result << uint8(0) << uint8(-1); Send(&result); return; } // Process the deletion request in the database result << bCharIndex << strUserID << strSocNo; g_pMain->AddDatabaseRequest(result, this); }
void CUser::SelCharToAgent Bulup Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::SelCharToAgent(Packet & pkt) { Packet result(WIZ_SEL_CHAR); std::string strUserID, strAccountID; uint8 bInit; pkt >> strAccountID >> strUserID >> bInit; if (strAccountID.empty() || strAccountID.size() > MAX_ID_SIZE || strUserID.empty() || strUserID.size() > MAX_ID_SIZE || strAccountID != m_strAccountID) { Disconnect(); return; } // Disconnect any currently logged in sessions. CUser *pUser = g_pMain->GetUserPtr(strUserID, TYPE_CHARACTER); if (pUser && (pUser->GetSocketID() != GetSocketID())) { pUser->Disconnect(); // And reject the login attempt (otherwise we'll probably desync char data) result << uint8(0); Send(&result); return; } result << strUserID << bInit; g_pMain->AddDatabaseRequest(result, this); }
void CUser::SelectCharacter Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::SelectCharacter(Packet & pkt) { Packet result(WIZ_SEL_CHAR); uint8 bResult, bInit; if (isBanned()) { Disconnect(); return; } pkt >> bResult >> bInit; result << bResult; if (bResult == 0 || !GetZoneID()) goto fail_return; m_pMap = g_pMain->GetZoneByID(GetZoneID()); if (GetMap() == nullptr) goto fail_return; if (g_pMain->m_nServerNo != GetMap()->m_nServerNo) { _ZONE_SERVERINFO *pInfo = g_pMain->m_ServerArray.GetData(GetMap()->m_nServerNo); if (pInfo == nullptr) goto fail_return; SendServerChange(pInfo->strServerIP, bInit); return; } if (g_pMain->m_byBattleOpen == NO_BATTLE && GetFame() == COMMAND_CAPTAIN) m_bFame = CHIEF; // Disallow players from relogging in the opposite nation's home zone when an invasion's not running. if (((GetZoneID() != GetNation() && GetZoneID() <= ZONE_ELMORAD && !g_pMain->m_byBattleOpen) // also disallow players from logging back into war zones that aren't currently active... || (GetMap()->isWarZone() && !g_pMain->m_byBattleOpen) // Chaos, bdw and juraid montuain || isInTempleEventZone() // Ronark Land, Ardream, RLB, Bifrost, Krowaz Dominion. || (g_pMain->m_byBattleOpen && (GetZoneID() == ZONE_RONARK_LAND || GetZoneID() == ZONE_ARDREAM || GetZoneID() == ZONE_RONARK_LAND_BASE || GetZoneID() == ZONE_BIFROST || GetZoneID() == ZONE_KROWAZ_DOMINION))) && !isGM()) { NativeZoneReturn(); Disconnect(); return; } SetLogInInfoToDB(bInit); result << GetZoneID() << GetSPosX() << GetSPosZ() << GetSPosY() << g_pMain->m_byOldVictory; m_bSelectedCharacter = true; Send(&result); SetUserAbility(false); if (GetLevel() > MAX_LEVEL) { Disconnect(); return; } m_iMaxExp = g_pMain->GetExpByLevel(GetLevel()); SetRegion(GetNewRegionX(), GetNewRegionZ()); if (GetClanID() == -1) { SetClanID(0); m_bFame = 0; return; } else if (GetClanID() != 0 && GetZoneID() > 2) { result.Initialize(WIZ_KNIGHTS_PROCESS); result << uint8(KNIGHTS_LIST_REQ) << GetClanID(); g_pMain->AddDatabaseRequest(result, this); } return; fail_return: Send(&result); }
void CUser::SendServerChange(std::string & ip, uint8 bInit) Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::SendServerChange(std::string & ip, uint8 bInit) { Packet result(WIZ_SERVER_CHANGE); result << ip << uint16(_LISTEN_PORT) << bInit << GetZoneID() << g_pMain->m_byOldVictory; Send(&result); }
void CUser::SetLogInInfoToDB(uint8 bInit) Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::SetLogInInfoToDB(uint8 bInit) { _ZONE_SERVERINFO *pInfo = g_pMain->m_ServerArray.GetData(g_pMain->m_nServerNo); if (pInfo == nullptr) { Disconnect(); return; } Packet result(WIZ_LOGIN_INFO); result << GetName() << pInfo->strServerIP << uint16(_LISTEN_PORT) << GetRemoteIP() << bInit; g_pMain->AddDatabaseRequest(result, this); }
void CUser::RecvLoginInfo(Packet & pkt) Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::RecvLoginInfo(Packet & pkt) { int8 bResult = pkt.read<uint8>(); if (bResult < 0) Disconnect(); }
void CUser::GameStart(Packet & pkt) Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::GameStart(Packet & pkt) { if (isInGame()) return; uint8 opcode = pkt.read<uint8>(); if (opcode == 1) { SendMyInfo(); g_pMain->UserInOutForMe(this); g_pMain->MerchantUserInOutForMe(this); g_pMain->NpcInOutForMe(this); SendNotice(); SendTime(); SendWeather(); // SendHackToolList(); Packet result(WIZ_GAMESTART); Send(&result); } else if (opcode == 2) { m_state = GAME_STATE_INGAME; UserInOut(INOUT_RESPAWN); if (!m_bCity && m_sHp <= 0) m_bCity = -1; if (m_bCity > 0) { int level = GetLevel(); if (m_bCity <= 100) level--; // make sure we don't exceed bounds if (level > MAX_LEVEL) level = MAX_LEVEL; else if (level < 1) level = 1; m_iLostExp = (g_pMain->GetExpByLevel(level) * (m_bCity % 10) / 100); if (((m_bCity % 10) / 100) == 1) m_iLostExp /= 2; } else { m_iLostExp = 0; } CheckSeedQuest(); BlinkStart(); SetUserAbility(); // rental RecastSavedMagic(m_sHp == m_iMaxHp ? true : false); //ItemMallRecast // If we've relogged while dead, we need to make sure the client // is still given the option to revive. if (isDead()) SendDeathAnimation(); g_pMain->TempleEventGetActiveEventTime(this); } m_tHPLastTimeNormal = UNIXTIME; }
Son Olarak. void CUser::CheckSeedQuest Bulup Aşağidaki ile Değiştiriyoruz.
Kod:
void CUser::CheckSeedQuest() { if (CheckExistEvent(STARTER_SEED_QUEST, 2)) { Packet result(WIZ_QUEST, uint8(1)); result << uint16(3) << uint8(244) << uint8(1) << uint8(2) << uint8(167) << uint8(2) << uint8(100); result << uint16(0); Send(&result); } }
"Not: Sorun Alanlar Özelden Yazabilirler Sorun'larını"
18xx Andream Savaşı Düzenleme Sorunsuz: Knight Online Private Server Geliştiricileri İçin Rehber
Knight Online özel sunucularında yüksek seviye içerikler sunmak isteyen geliştiriciler için 18xx Andream Savaşı düzenlemek, sunucunuzun popülerliğini artırmada büyük rol oynar. Bu rehberde, Andream Savaşları sırasında yaşanabilecek sorunları en aza indirgeyen ve sorunsuz bir düzenleme yapmayı öğreneceksiniz.
18xx Andream Savaşı Nedir?
Knight Online oyununda Andream Savaşı, Karus ve El Morad krallıklarının birbirleriyle savaştığı önemli bir PvP etkinliğidir. Özellikle 18xx seviyelerinde düzenlenen bu savaşlar, sunucu popülasyonunu aktif tutmak ve oyun içi rekabeti artırmak için idealdir. Ancak doğru yapılandırılmazsa, sunucuda performans düşüklüğü, oyuncu kayıpları ve hatta crash gibi ciddi problemlere yol açabilir.
Sunucu Dosyalarında Gerekli Değişiklikler
18xx Andream savaşları için öncelikle server files üzerinde bazı ayarlamalar yapılmalıdır. Özellikle zone server dosyalarında yer alan mob.bin ve npc.bin dosyaları kontrol edilmeli. Cap 83 ya da cap 70 sistemlerde bu dosyaların doğru şekilde yapılandırıldığından emin olunmalıdır.
Savaş Ayarlarını Optimize Etme
Andream savaşları için KO DB üzerinde doğru zamanlama ve ko emulator ayarları yapılmalıdır. Savaş zamanlarını KO Dev ekibi olarak tanımlarken, sunucu yoğunluğuna göre crash yememek adına testler yapmanız önemlidir. Özellikle ebonyshard gibi sistemsel ayarlar da gözden geçirilmelidir.
Oyuncu Deneyimini Artırmak
Sunucunuzda 18xx Andream Savaşı gerçekleşirken, oyuncuların macro bot veya KO Bot kullanmalarını engellemek için KO Guard ve KO Filter gibi sistemlerin aktif olması gerekir. Bu sayede adil bir savaş ortamı sağlanabilir.
Sonuç
Knight Online Private Server geliştiricileri için 18xx Andream Savaşları, sunucuyu popüler kılmak açısından kritik öneme sahiptir. Doğru KO Source kodları ve emulator ayarlarıyla sorunsuz bir savaş sistemi oluşturmak mümkündür. KnightLobby.com olarak biz bu tür gelişmiş yapılandırmalarla ilgileniyoruz ve geliştiricilere yardımcı oluyoruz.
Kaynaklar
KnightLobby - Knight Online Private Server Geliştirme
18xx Andream War Editing Without Issues: A Guide for Knight Online Private Server Developers
Knight Online private server developers who aim to provide high-level content will find that editing 18xx Andream Wars significantly boosts their server's popularity. This guide teaches you how to configure Andream Wars in a way that minimizes potential problems and ensures a smooth experience.
What is 18xx Andream War?
In Knight Online, the Andream War is an important PvP event where the kingdoms of Karus and El Morad battle each other. Especially at level 18xx, these wars are ideal for keeping the server population active and increasing in-game competition. However, if not configured properly, they can cause serious issues like performance drops, player disconnections, and even server crashes.
Required Changes in Server Files
Firstly, certain adjustments must be made in server files for 18xx Andream Wars. In particular, mob.bin and npc.bin files located in the zone server should be checked. Ensure these files are properly configured in systems such as Cap 83 or Cap 70.
Optimizing War Settings
For Andream Wars, timing settings must be correctly defined in KO DB and ko emulator. While defining war times as part of the KO Dev team, make sure to run tests according to server load to avoid crashes. System-level configurations like ebonyshard should also be reviewed.
Improving Player Experience
During your server's 18xx Andream War, ensure that KO Guard and KO Filter systems are active to prevent players from using macro bots or KO Bots. This helps maintain a fair battlefield environment.
Conclusion
For Knight Online Private Server developers, 18xx Andream Wars are crucial in making your server popular. With correct KO Source codes and emulator configurations, it's possible to create a seamless war system. At KnightLobby.com, we focus on such advanced configurations and assist developers.
Resources
KnightLobby - Knight Online Private Server Development
