Wolfman Renk Sistemindeki Hata Fixi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 29

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhabalar Geçen skıl rengi değiştirme için konu paylaşıldı bunun için wolfman sorun oluşuyormuş yabancı kaynakta gördüm sizler ile paylaşıyorum


Açın GameLib/ActorInstanceData.cpp ve aratın:

Kod:
case CInstanceBase::EFFECT_WEAPON + CInstanceBase::WEAPON_ONEHAND:     case CInstanceBase::EFFECT_WEAPON + CInstanceBase::WEAPON_TWOHAND:         return m_dwSkillColor[4];         break;                  Arat                  case CInstanceBase::EFFECT_AFFECT + CInstanceBase::AFFECT_RED_POSSESSION:         return m_dwSkillColor[174];         break;     case CInstanceBase::EFFECT_AFFECT + CInstanceBase::AFFECT_BLUE_POSSESSION:         return m_dwSkillColor[175];         break;                  Ekle

Aç UserInterface/GameType.h ve ekle :
Kod:
MAX_BUFF_COUNT = 5, Değiş MAX_BUFF_COUNT = 6,

3. açın UserInterface/InstanceBase.cpp ve bulun:
Kod:
for (int i = 0; i < 8; ++i) // i = skillGroup     {         for (int t = 0; t < ESkillColorLength::MAX_SKILL_COUNT; ++t) // t = skill         {             for (int x = 0; x < ESkillColorLength::MAX_EFFECT_COUNT; ++x) // x = layers             {                 skill[i * 10 + i * (ESkillColorLength::MAX_SKILL_COUNT - 1) + t + 1][x] = *(dwSkillColor++);             }         }                  Altına Ekleyin                               for (int i = 170; i < 170 + ESkillColorLength::MAX_SKILL_COUNT; i++)         {             for (int x = 0; x < ESkillColorLength::MAX_EFFECT_COUNT; ++x)                 skill[i][x] = tmpdwSkillColor[i - 170][x];         }


4. açınUserInterface/InstanceBaseEffect.cpp ve aratın

Kod:
case EFFECT_AFFECT + AFFECT_GYEONGGONG:         RegisterEffect(eEftType, "", "d:/ymir work/pc/assassin/effect/gyeonggong_loop.mse", false, GetNameString());         break;     case EFFECT_WEAPON + WEAPON_ONEHAND:         RegisterEffect(eEftType, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse", false, GetNameString());         break;     case EFFECT_WEAPON + WEAPON_TWOHAND:         RegisterEffect(eEftType, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse", false, GetNameString());         break;                  aratın                  sonra Ekleyin                  case EFFECT_AFFECT + AFFECT_RED_POSSESSION:         RegisterEffect(eEftType, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop_w.mse", false, GetNameString());         break;     case EFFECT_AFFECT + AFFECT_BLUE_POSSESSION:         RegisterEffect(eEftType, "", "d:/ymir work/pc3/common/effect/gyeokgongjang_loop_w.mse", false, GetNameString());         break;

açın common/length.h ve bulun:

Kod:
MAX_BUFF_COUNT = 5, Değişin bunu MAX_BUFF_COUNT = 6,

açın db/Cache.cpp ve bulun:
Kod:
void CSKillColorCache::OnFlush() Arat sütünü komple değiş void CSKillColorCache::OnFlush() {     char query[QUERY_MAX_LEN];     snprintf(query, sizeof(query),         "REPLACE INTO skill_color%s (`player_id`"         ", `s1_col1`, `s1_col2`, `s1_col3`, `s1_col4`, `s1_col5`"         ", `s2_col1`, `s2_col2`, `s2_col3`, `s2_col4`, `s2_col5`"         ", `s3_col1`, `s3_col2`, `s3_col3`, `s3_col4`, `s3_col5`"         ", `s4_col1`, `s4_col2`, `s4_col3`, `s4_col4`, `s4_col5`"         ", `s5_col1`, `s5_col2`, `s5_col3`, `s5_col4`, `s5_col5`"         ", `s6_col1`, `s6_col2`, `s6_col3`, `s6_col4`, `s6_col5`" // End of Skills         ", `s7_col1`, `s7_col2`, `s7_col3`, `s7_col4`, `s7_col5`" // Begin of Buffs         ", `s8_col1`, `s8_col2`, `s8_col3`, `s8_col4`, `s8_col5`"         ", `s9_col1`, `s9_col2`, `s9_col3`, `s9_col4`, `s9_col5`"         ", `s10_col1`, `s10_col2`, `s10_col3`, `s10_col4`, `s10_col5`"         ", `s11_col1`, `s11_col2`, `s11_col3`, `s11_col4`, `s11_col5`"         ", `s12_col1`, `s12_col2`, `s12_col3`, `s12_col4`, `s12_col5`"         ") "         "VALUES (%d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d" // End of Skills         ", %d, %d, %d, %d, %d" // Begin of Buffs         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ", %d, %d, %d, %d, %d"         ")", GetTablePostfix(), m_data.player_id,         m_data.dwSkillColor[0][0], m_data.dwSkillColor[0][1], m_data.dwSkillColor[0][2], m_data.dwSkillColor[0][3], m_data.dwSkillColor[0][4],         m_data.dwSkillColor[1][0], m_data.dwSkillColor[1][1], m_data.dwSkillColor[1][2], m_data.dwSkillColor[1][3], m_data.dwSkillColor[1][4],         m_data.dwSkillColor[2][0], m_data.dwSkillColor[2][1], m_data.dwSkillColor[2][2], m_data.dwSkillColor[2][3], m_data.dwSkillColor[2][4],         m_data.dwSkillColor[3][0], m_data.dwSkillColor[3][1], m_data.dwSkillColor[3][2], m_data.dwSkillColor[3][3], m_data.dwSkillColor[3][4],         m_data.dwSkillColor[4][0], m_data.dwSkillColor[4][1], m_data.dwSkillColor[4][2], m_data.dwSkillColor[4][3], m_data.dwSkillColor[4][4],         m_data.dwSkillColor[5][0], m_data.dwSkillColor[5][1], m_data.dwSkillColor[5][2], m_data.dwSkillColor[5][3], m_data.dwSkillColor[5][4], // End of Skills         m_data.dwSkillColor[6][0], m_data.dwSkillColor[6][1], m_data.dwSkillColor[6][2], m_data.dwSkillColor[6][3], m_data.dwSkillColor[6][4], // Begin of Buffs         m_data.dwSkillColor[7][0], m_data.dwSkillColor[7][1], m_data.dwSkillColor[7][2], m_data.dwSkillColor[7][3], m_data.dwSkillColor[7][4],         m_data.dwSkillColor[8][0], m_data.dwSkillColor[8][1], m_data.dwSkillColor[8][2], m_data.dwSkillColor[8][3], m_data.dwSkillColor[8][4],         m_data.dwSkillColor[9][0], m_data.dwSkillColor[9][1], m_data.dwSkillColor[9][2], m_data.dwSkillColor[9][3], m_data.dwSkillColor[9][4],         m_data.dwSkillColor[10][0], m_data.dwSkillColor[10][1], m_data.dwSkillColor[10][2], m_data.dwSkillColor[10][3], m_data.dwSkillColor[10][4]         , m_data.dwSkillColor[11][0], m_data.dwSkillColor[11][1], m_data.dwSkillColor[11][2], m_data.dwSkillColor[11][3], m_data.dwSkillColor[11][4]     );     CDBManager::instance().ReturnQuery(query, QID_SKILL_COLOR_SAVE, 0, NULL);     if (g_test_server)         sys_log(0, "SkillColorCache::Flush :REPLACE %u (%s)", m_data.player_id, query);     m_bNeedQuery = false; }

açın db/ClientManagerPlayer.cpp ve bulun:
Kod:
aratın void CClientManager::QUERY_SKILL_COLOR_LOAD(CPeer* peer, DWORD dwHandle, TPlayerLoadPacket* packet) Komple değiştirin void CClientManager::QUERY_SKILL_COLOR_LOAD(CPeer* peer, DWORD dwHandle, TPlayerLoadPacket* packet) {     CSKillColorCache* c;     TSkillColor* p;     if (c = GetSkillColorCache(packet->player_id))     {         p = c->Get();         peer->EncodeHeader(HEADER_DG_SKILL_COLOR_LOAD, dwHandle, sizeof(p->dwSkillColor));         peer->Encode(p->dwSkillColor, sizeof(p->dwSkillColor));     }     else     {         char szQuery[QUERY_MAX_LEN];         snprintf(szQuery, sizeof(szQuery), "SELECT "             "s1_col1, s1_col2, s1_col3, s1_col4, s1_col5"             ", s2_col1, s2_col2, s2_col3, s2_col4, s2_col5"             ", s3_col1, s3_col2, s3_col3, s3_col4, s3_col5"             ", s4_col1, s4_col2, s4_col3, s4_col4, s4_col5"             ", s5_col1, s5_col2, s5_col3, s5_col4, s5_col5"             ", s6_col1, s6_col2, s6_col3, s6_col4, s6_col5" // end of skills             ", s7_col1, s7_col2, s7_col3, s7_col4, s7_col5" // begin of buffs             ", s8_col1, s8_col2, s8_col3, s8_col4, s8_col5"             ", s9_col1, s9_col2, s9_col3, s9_col4, s9_col5"             ", s10_col1, s10_col2, s10_col3, s10_col4, s10_col5"             ", s11_col1, s11_col2, s11_col3, s11_col4, s11_col5"             ", s12_col1, s12_col2, s12_col3, s12_col4, s12_col5"             " FROM skill_color%s WHERE player_id=%d",             GetTablePostfix(), packet->player_id);         CDBManager::instance().ReturnQuery(szQuery, QID_SKILL_COLOR, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id));     } }

. açın game/char_skill.cpp bulun:
Kod:
struct FComputeSkillParty {     FComputeSkillParty(DWORD dwVnum, LPCHARACTER pkAttacker, BYTE bSkillLevel = 0)         : m_dwVnum(dwVnum), m_pkAttacker(pkAttacker), m_bSkillLevel(bSkillLevel)     {     }     void operator () (LPCHARACTER ch)     {          Altına bunu ekleyin                  if (m_dwVnum == 175)         {             BYTE skill = ESkillColorLength::BUFF_BEGIN + 5;             BYTE id = 5;             DWORD data[ESkillColorLength::MAX_SKILL_COUNT + ESkillColorLength::MAX_BUFF_COUNT][ESkillColorLength::MAX_EFFECT_COUNT];             memcpy(data, ch->GetSkillColor(), sizeof(data));             DWORD dataAttacker[ESkillColorLength::MAX_SKILL_COUNT + ESkillColorLength::MAX_BUFF_COUNT][ESkillColorLength::MAX_EFFECT_COUNT];             memcpy(dataAttacker, m_pkAttacker->GetSkillColor(), sizeof(dataAttacker));             data[skill][0] = dataAttacker[id][0];             data[skill][1] = dataAttacker[id][1];             data[skill][2] = dataAttacker[id][2];             data[skill][3] = dataAttacker[id][3];             data[skill][4] = dataAttacker[id][4];             ch->SetSkillColor(data[0]);             TSkillColor db_pack;             memcpy(db_pack.dwSkillColor, data, sizeof(data));             db_pack.player_id = ch->GetPlayerID();             db_clientdesc->DBPacketHeader(HEADER_GD_SKILL_COLOR_SAVE, 0, sizeof(TSkillColor));             db_clientdesc->Packet(&db_pack, sizeof(TSkillColor));         }

Son olarak MySQL Table: Açın ve okutun
Kod:
-- ---------------------------- -- Table structure for skill_color -- ---------------------------- DROP TABLE IF EXISTS `skill_color`; CREATE TABLE `skill_color`  (   `player_id` int(11) UNSIGNED ZEROFILL NOT NULL,   `s1_col1` int(255) NOT NULL DEFAULT 0,   `s1_col2` int(255) NOT NULL DEFAULT 0,   `s1_col3` int(255) NOT NULL DEFAULT 0,   `s1_col4` int(255) NOT NULL DEFAULT 0,   `s1_col5` int(255) NOT NULL DEFAULT 0,   `s2_col1` int(255) NOT NULL DEFAULT 0,   `s2_col2` int(255) NOT NULL DEFAULT 0,   `s2_col3` int(255) NOT NULL DEFAULT 0,   `s2_col4` int(255) NOT NULL DEFAULT 0,   `s2_col5` int(255) NOT NULL DEFAULT 0,   `s3_col1` int(255) NOT NULL DEFAULT 0,   `s3_col2` int(255) NOT NULL DEFAULT 0,   `s3_col3` int(255) NOT NULL DEFAULT 0,   `s3_col4` int(255) NOT NULL DEFAULT 0,   `s3_col5` int(255) NOT NULL DEFAULT 0,   `s4_col1` int(255) NOT NULL DEFAULT 0,   `s4_col2` int(255) NOT NULL DEFAULT 0,   `s4_col3` int(255) NOT NULL DEFAULT 0,   `s4_col4` int(255) NOT NULL DEFAULT 0,   `s4_col5` int(255) NOT NULL DEFAULT 0,   `s5_col1` int(255) NOT NULL DEFAULT 0,   `s5_col2` int(255) NOT NULL DEFAULT 0,   `s5_col3` int(255) NOT NULL DEFAULT 0,   `s5_col4` int(255) NOT NULL DEFAULT 0,   `s5_col5` int(255) NOT NULL DEFAULT 0,   `s6_col1` int(255) NOT NULL DEFAULT 0,   `s6_col2` int(255) NOT NULL DEFAULT 0,   `s6_col3` int(255) NOT NULL DEFAULT 0,   `s6_col4` int(255) NOT NULL DEFAULT 0,   `s6_col5` int(255) NOT NULL DEFAULT 0,   `s7_col1` int(255) NOT NULL DEFAULT 0,   `s7_col2` int(255) NOT NULL DEFAULT 0,   `s7_col3` int(255) NOT NULL DEFAULT 0,   `s7_col4` int(255) NOT NULL DEFAULT 0,   `s7_col5` int(255) NOT NULL DEFAULT 0,   `s8_col1` int(255) NOT NULL DEFAULT 0,   `s8_col2` int(255) NOT NULL DEFAULT 0,   `s8_col3` int(255) NOT NULL DEFAULT 0,   `s8_col4` int(255) NOT NULL DEFAULT 0,   `s8_col5` int(255) NOT NULL DEFAULT 0,   `s9_col1` int(255) NOT NULL DEFAULT 0,   `s9_col2` int(255) NOT NULL DEFAULT 0,   `s9_col3` int(255) NOT NULL DEFAULT 0,   `s9_col4` int(255) NOT NULL DEFAULT 0,   `s9_col5` int(255) NOT NULL DEFAULT 0,   `s10_col1` int(255) NOT NULL DEFAULT 0,   `s10_col2` int(255) NOT NULL DEFAULT 0,   `s10_col3` int(255) NOT NULL DEFAULT 0,   `s10_col4` int(255) NOT NULL DEFAULT 0,   `s10_col5` int(255) NOT NULL DEFAULT 0,   `s11_col1` int(255) NOT NULL DEFAULT 0,   `s11_col2` int(255) NOT NULL DEFAULT 0,   `s11_col3` int(255) NOT NULL DEFAULT 0,   `s11_col4` int(255) NOT NULL DEFAULT 0,   `s11_col5` int(255) NOT NULL DEFAULT 0,   `s12_col1` int(255) NOT NULL DEFAULT 0,   `s12_col2` int(255) NOT NULL DEFAULT 0,   `s12_col3` int(255) NOT NULL DEFAULT 0,   `s12_col4` int(255) NOT NULL DEFAULT 0,   `s12_col5` int(255) NOT NULL DEFAULT 0,   PRIMARY KEY (`player_id`) USING BTREE ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Fixed;

1852747806_kolorowanie(1).gif.cd6e466e6f04d402bdc3e8870bb305a7.gif

Wolfman Renk Sistemindeki Hata Fixi

Metin2 özel sunucularında Wolfman karakteriyle PvP sistemlerinde yüksek performans göstermek isteyen oyuncular için önemli bir konu olan renk sistemi, bazen beklenmedik hatalarla karşılaşabilmektedir. Bu hata genellikle Wolfman karakterinin belirli durumlarda doğru renklerle görüntülenmemesiyle ortaya çıkar. Bu yazıda Wolfman renk sisteminde karşılaşılan hatayı nasıl düzelteceğinizi adım adım anlatacağız.

Wolfman Renk Sisteminin Çalışması

Metin2 özel sunucularında Wolfman karakteri, PvP savaşları sırasında bazı özel efektlerle tanınır. Bu efektlerden birisi de karakterin renginin belirli durumlarda değişmesidir. Bu renk değişimi genellikle PvP moduna geçişte ya da belirli item kombinasyonlarında meydana gelir. Ancak bazı durumlarda bu renk sistemi çalışmaz ve karakter normal renginde kalabilir veya tamamen siyah-beyaz bir şekilde görünür.

Hatanın Neden Kaynağı Olabilir?

Wolfman renk sisteminde yaşanan sorunlar genellikle aşağıdaki sebeplerle oluşur:

- Client tarafında eksik veya hatalı renk tanımlamaları
- Game serverda tanımlanmamış renk efektleri
- Character appearance paketlerindeki eksiklikler
- Python GUI veya UIscript dosyalarındaki hatalar

Fix İşlemi Nasıl Yapılır?

Fix işlemi için ilk olarak client tarafında bulunan 'wolfman' karakteriyle ilgili dosyalara bakmanız gerekir. Özellikle 'char_info' veya 'character_appearance' isimli dosyalarda Wolfman karakterinin renk değerlerinin doğru tanımlandığından emin olunmalıdır. Bu dosyalar genellikle py root dizininde bulunur. Ayrıca, auth ve game sunucularında tanımlı olan renk efektleri kontrol edilmeli ve eksik kalan yerler doldurulmalıdır.

Python ve C++ Kodlarında Gerekli Değişiklikler

Wolfman karakteri için renk efekti Python GUI dosyalarında tanımlanmışsa, bu dosyanın doğru şekilde çalıştığından emin olun. Özellikle UIscript kısmında wolfman_color_effect gibi fonksiyonlar tanımlanmış olabilir. Bu fonksiyonların doğruluğu kontrol edilmeli ve gerekirse C++ kod seviyesinde değişiklik yapılmalıdır. Eğer game server src üzerinde çalışıyorsanız, wolfman.cpp dosyasında yer alan renk ayarlamalarını gözden geçirin.

Paket Dosyalarının Kontrolü

Metin2 özel sunucularında paket dosyaları büyük önem taşır. Wolfman karakterinin doğru şekilde renklendirilmesi için gerekli paketlerin doğru şekilde derlenmiş olduğundan emin olun. Bu paketler genellikle 'pack' dizininde yer alır. Eğer eksik veya hatalı bir paket varsa, bu durum renk sistemini etkileyebilir. Paket dosyalarını güncelleyerek veya doğru versiyonunu yükleyerek bu sorunu çözebilirsiniz.

Sonuç

Wolfman karakteri ile PvP sistemlerinde yüksek performans almak istiyorsanız, renk sisteminin doğru çalışması çok önemlidir. Bu hatanın çözümü için hem client hem de server tarafında gerekli kontrolleri yapmanız gerekir. Python GUI, UIscript, C++ source ve paket dosyaları üzerinde yapılacak küçük değişikliklerle bu sorunu kolayca giderebilirsiniz. Dilerseniz Metin2Lobby üzerinden daha fazla kaynak ve yardım alabilirsiniz.


Fix for Wolfman Color System Bug

An important topic for players wanting high performance with the Wolfman character in PvP systems on Metin2 private servers is the color system, which sometimes encounters unexpected errors. This error usually occurs when the Wolfman character does not appear with correct colors under certain conditions. In this article, we will explain step by step how to fix the bug occurring in the Wolfman color system.

How the Wolfman Color System Works

On Metin2 private servers, the Wolfman character is known for special effects during PvP battles. One of these effects is the change in the character’s color under certain situations. This color change typically happens upon entering PvP mode or with specific item combinations. However, sometimes this color system fails and the character may remain in its default color or appear entirely in black and white.

What Could Cause This Error?

Issues with the Wolfman color system generally arise due to the following reasons:

- Missing or incorrect color definitions on the client side
- Undefined color effects in the game server
- Deficiencies in character appearance packages
- Errors in Python GUI or UIscript files

How to Perform the Fix?

To perform the fix, first examine the files related to the 'wolfman' character located on the client side. Ensure that the color values for the Wolfman character are correctly defined in files like 'char_info' or 'character_appearance'. These files are usually located within the py root directory. Additionally, verify the color effects defined in the auth and game servers and fill in any missing parts.

Necessary Changes in Python and C++ Codes

If the color effect for the Wolfman character is defined in Python GUI files, ensure that this file operates correctly. Particularly in the UIscript section, functions such as wolfman_color_effect might be defined. Verify the correctness of these functions and make necessary changes at the C++ code level if needed. If you are working on the game server src, review the color settings in the wolfman.cpp file.

Checking Package Files

Package files hold great importance in Metin2 private servers. To ensure the Wolfman character is properly colored, verify that the required packages are compiled correctly. These packages are usually located in the 'pack' directory. If there is a missing or incorrect package, it can affect the color system. You can resolve this issue by updating or installing the correct version of the package files.

Conclusion

If you want high performance with the Wolfman character in PvP systems, it is crucial that the color system works properly. To resolve this bug, you need to perform necessary checks on both the client and server sides. Small changes made in Python GUI, UIscript, C++ source, and package files can easily solve this issue. For further resources and help, visit Metin2Lobby.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt