[AsiPly] Bilinen Tüm Bug Ve Açıklar Hepsi Tek Konuda Birleşti.

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
latest
Merhaba arkadaşlar bu konuyu bug ve açıkları tek tek gezerek değilde tek bir konu üzerinden daha kolay ve rahat olsun diye yapıyorum. Konular Turkmmo ve yabancı forumlar üzerinden yapılmıştır.



[TABLE=full][TR][TD]
Konu Başlıkları[/TD][TD]
Linkler[/TD]
[/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD][/TD][TD][/TD][/TR][TR][TD]
Sersemlik bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
4 Taş Depo Bugu[/TD][TD]
[/TD][/TR][TR][TD]
Loncadayken Krallık değiştirme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Parti Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
At level Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Silah evrim sistemi efekt+ Bağırmada Evrim gözükmeme sorunu fix[/TD][TD]
[/TD][/TR][TR][TD]
İtemSwap bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Lonca Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Sql İnjeckt Fixleyenler Yapsın Mutlaka Fix[/TD][TD]
[/TD][/TR][TR][TD]
Sql İnjeckt Fix[/TD][TD]
[/TD][/TR][TR][TD]
Party Hp Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]Envanterden depoya item atma FİX.[/TD][TD]
[/TD][/TR][TR][TD]
Quest Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Kuşak Sistem Kemer Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
4 Taş sistemi Artırma bug fix[/TD][TD]
[/TD][/TR][TR][TD]
Cinsiyet Değiştirirken Kostum Bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Omuz Kuşagı Kombinasyon bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Lua esc Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Shop Grid Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Kuşak Sistemi Envanter Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Kilitli İtem Yansıtma Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Lonca Güvenliği Açıgı Fix[/TD][TD]
[/TD][/TR][TR][TD]
Internal IP Fix[/TD][TD]
[/TD][/TR][TR][TD]
Hamle Atınca Hp düşme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Check Client Version Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Ch Düşmesiyle Alakalı Game.core[/TD][TD]
[/TD][/TR][TR][TD]
Lonca exploit Fix[/TD][TD]
[/TD][/TR][TR][TD]
Cube Core Fix[/TD][TD]
[/TD][/TR][TR][TD]
Lycan Turmali Sorunu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Envanter Doluyken İtem Değişmeme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Oyundan atma Speed Hack detect Fix[/TD][TD]
[/TD][/TR][TR][TD]
Karakter Silmeme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Karakter İsim Hilesi Fix[/TD][TD]
[/TD][/TR][TR][TD]
Hareket Ederken İtem değişmeme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Bineğe Binince Oyundan Atma Fix[/TD][TD]
[/TD][/TR][TR][TD]
Kuşak görüntü bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Skillde Saldırı değeri Gözükmeme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Ofline Shop Sql Injecktion Fix[/TD][TD]
[/TD][/TR][TR][TD]
Bazı Beceri kitab bugları fix[/TD][TD]
[/TD][/TR][TR][TD]
C++ Sql İnjection-Arkadaş-Fısıltı-Lonca[/TD][TD]
[/TD][/TR][TR][TD]
P2P GIRIŞ BAĞLANTISINI ENGELLEME[/TD][TD]
[/TD][/TR][TR][TD]
Quest Instant Speed Fix[/TD][TD]
[/TD][/TR][TR][TD]
Maden Bot Fix[/TD][TD]
[/TD][/TR][TR][TD]
Absürt Bonus Engelli[/TD][TD]
[/TD][/TR][TR][TD]
Envanter Süresi Olmadan Şebnem Bugunu Fixleme[/TD][TD]
[/TD][/TR][TR][TD]
Harita Yüklenirken Dc Yeme Fix[/TD][TD]
[/TD][/TR][TR][TD]
Kostum Bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Zırh Tak Çıkar Bugu Fix[/TD][TD]
[/TD][/TR][TR][TD]
Sysr Hatalarını Çözümleri[/TD][TD]
[/TD][/TR][TR][TD]
SQUENCE LOG FİX[/TD][TD]
[/TD][/TR][TR][TD]
Kazma Veya Olta Varken Kostum Engeli Fix[/TD][TD]
[/TD][/TR][TR][TD]
Reload q Crash Bug Fix[/TD][TD]
[/TD][/TR][TR][TD]
Offline shop açıkken krallık değiştirme && isim izni kullanma fixi[/TD][TD]
[/TD][/TR][TR][TD]
Yeni Karakter ekleyince "Karakter Yaratamazsın Hatasının fix[/TD][TD]
[/TD][/TR][TR][TD]
Pazardan 2 kişi aynı anda aynı itemi alınca dc fix[/TD][TD]
[/TD][/TR][TR][TD]
Pet yaş fixi piyasadakinden farklı [/TD][TD]
[/TD][/TR][TR][TD]
[C++] Ticaret Ekranı Açık iken Quest Engell[/TD][TD]
[/TD][/TR][TR][TD]
Offline Shop item kaybolma fix[/TD][TD]
[/TD][/TR][TR][TD]
Binek geri atma sorunu fix[/TD][TD]
[/TD][/TR][TR][TD]
Kullanılan itemi direk depoya koyma fix[/TD][TD]
[/TD][/TR][TR][TD]
SEQUENCE_LOG Fix (Sysser Kapatmaz Sorun fix)[/TD][TD]
[/TD][/TR][TR][TD]
TC OFFLİNE SHOP KULLANANLAR İÇİN 4-6 TAŞ FİXİ[/TD][TD]
[/TD][/TR][TR][TD]
Gelinlik & Smokin takılı ise , kostüm giyme engelleme[/TD][TD]
[/TD][/TR][TR][TD]
Büyü çözme sklinde oluşan lag fix[/TD][TD]
[/TD][/TR]
[/TABLE] #Yeni güncelleme.




#Sunucu Tabanlı performans ve iyileştirmeler.

[TABLE=full][TR][TD]
#Sunucu tabanlı iyileştirme ve performanslar[/TD][TD]
Linkler[/TD]
[/TR][TR][TD]
#Oto kanal başlatma kanal düşenler için ideal.[/TD][TD]
[/TD][/TR][TR][TD]
Oto Kanal Başlatma Kanal düşenlere için ideal Güncel[/TD][TD]
[/TD][/TR][TR][TD]
#Kanal başında 4 adet core dosyası #PERFORMANS[/TD][TD]
[/TD][/TR]
[/TABLE] #Tarafımca uygun görülen sistemler


[TABLE=full][TR][TD]
#Sistemin İsmi[/TD][TD]
#Sistemin Linki[/TD]
[/TR][TR][TD]
Boss güvenlik sistemi[/TD][TD]
[/TD][/TR][TR][TD]
Boss sekmeme sistemi[/TD][TD]
[/TD][/TR][TR][TD]
Lonca lider tagı sistemi[/TD][TD]
[/TD][/TR][TR][TD]
Depo banka sistemi[/TD][TD]
[/TD][/TR][TR][TD]
Offical character select[/TD][TD]
[/TD][/TR][TR][TD]
Offical kanal değiştirme[/TD][TD]
[/TD][/TR][TR][TD]
Kostum Efekt Verme Sistemi[/TD][TD]
[/TD][/TR][TR][TD]
Serverinfo clientten çeksin[/TD][TD]
[/TD][/TR][TR][TD]
Oto pot Aç Kapat yaparak oluşan lag önlem [/TD][TD]
[/TD][/TR][TR][TD]#New Klavye Kontrollü Pet Attack Sistemi[/TD][TD] [/TD][/TR][TR][TD]#New Simya Güncellemesi[/TD][TD] [/TD][/TR]
[/TABLE]

[TABLE=full][TR][TD]
# [/TD][TD]
Source [/TD][TD]
Linkler [/TD]
[/TR][TR][TD]
1[/TD][TD]
Toplu Source fixleri[/TD][TD]
[/TD][/TR][TR][TD]
2[/TD][TD]
Warning fixleri[/TD][TD]
[/TD][/TR][TR][TD]
3[/TD][TD]
Lycan ekleme[C++/Lua/Py][/TD][TD]
[/TD][/TR]
[/TABLE] #New Güncelleme #26.04.2018 17:03 #New


#New Yazı tipi güncellemesi /Times New Roman /

Kod:
if (pkOldGrid)         m_pkGrid = M2_NEW CGrid(pkOldGrid, 5, m_iSize);     else         m_pkGrid = M2_NEW CGrid(5, m_iSize);
Kod:
if (pkOldGrid) {         m_pkGrid = M2_NEW CGrid(pkOldGrid, 5, m_iSize);         delete pkOldGrid;     }     else         m_pkGrid = M2_NEW CGrid(5, m_iSize);

Kod:
pkPeer->EncodeHeader(HEADER_DG_SAFEBOX_WRONG_PASSWORD, dwHandle, 0);
Kod:
delete pSafebox;
cc183db7fd.png



Kod:
extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont);
Kod:
extern const char * userDC(const char * userName);
Kod:
void SendLog(const char * c_pszBuf) {     const DESC_MANAGER::DESC_SET & c_ref_set = DESC_MANAGER::instance().GetClientSet();     std::for_each(c_ref_set.begin(), c_ref_set.end(), log_packet_func(c_pszBuf)); }
Kod:
const char * userDC(const char * userName) {     LPDESC d = DESC_MANAGER::instance().FindByCharacterName(userName);     LPCHARACTER    tch = d ? d->GetCharacter() : NULL;     if (!tch)     {         return "Player not in game";     }else{         DESC_MANAGER::instance().DestroyDesc(d);         return "Player kicked out";     } }
Kod:
else if (!stBuf.compare(0, 3, "DC "))
Kod:
else if (!stBuf.compare(0, 3, "DC "))                 {                                                       std::string msg = stBuf.substr(3, LOGIN_MAX_LEN);                  ///  dev_log(LOG_DEB0, "DC : '%s'", msg.c_str());                     stResult = userDC(msg.c_str());                                      /*TPacketGGDisconnect pgg;                     pgg.bHeader = HEADER_GG_DISCONNECT;                     strlcpy(pgg.szLogin, msg.c_str(), sizeof(pgg.szLogin));                     P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGDisconnect));                     // delete login key                     {                         TPacketDC p;                         strlcpy(p.login, msg.c_str(), sizeof(p.login));                         db_clientdesc->DBPacket(HEADER_GD_DC, 0, &p, sizeof(p));                     }*/                                  }

Kod:
#define FIXDESCFINDPC

Kod:
///Add #include <boost/algorithm/string.hpp> //Find         if (d->GetCharacter() && !strcmp(d->GetCharacter()->GetName(), m_name))             return true;         return false;          ///Change #if defined(FIXDESCFINDPC)         return d->GetCharacter() && boost::algorithm::to_lower_copy(std::string(d->GetCharacter()->GetName())) == boost::algorithm::to_lower_copy(std::string(m_name)); #else         if (d->GetCharacter() && !strcmp(d->GetCharacter()->GetName(), m_name))             return true;         return false; #endif or ///Change #if defined(FIXDESCFINDPC)         auto tolowerlocal = [*](std::string sz) {             std::transform(sz.begin(), sz.end(), sz.begin(), ::tolower);             return sz;         };         return d->GetCharacter() && tolowerlocal(std::string(m_name)) == tolowerlocal(std::string(d->GetCharacter()->GetName())); #else         if (d->GetCharacter() && !strcmp(d->GetCharacter()->GetName(), m_name))             return true;         return false; #endif

Kod:
Open cipher.h and add; using CryptoPP::byte;
Kod:
GetMountVnum
Kod:
if(GetMountVnum())         {             if( !((GetMountVnum() >= 20101 && GetMountVnum() <= 20205)))                 return true;         }                       if(GetMountVnum()) //Server filesinizde skill kodları farklı ise onları kendinize göre ayarlayın.         {             if( !((GetMountVnum() >= 20209 && GetMountVnum() <= 20212)    ||                 GetMountVnum() == 20215 || GetMountVnum() == 20218 || GetMountVnum() == 20225    )    )                     return false;         }
Kod:
#define ENABLE_YMIR_AFFECT_FIX
Kod:
ch->StartCheckSpeedHackEvent();
Kod:
#ifdef ENABLE_YMIR_AFFECT_FIX     ch->SetQuestFlag("item.last_time", get_global_time()); #endif
Kod:
const char *    GetName() const;
Kod:
#ifdef ENABLE_YMIR_AFFECT_FIX         bool            CheckTimeUsed(LPITEM item); #endif
Kod:
int CalculateConsumeSP(LPCHARACTER lpChar)
Kod:
https://paste2.org/Hbaf68Pc
Kod:
case USE_ABILITY_UP:
Kod:
http://paste2.org/gFVsEmcO
Kod:
case USE_AFFECT : {
Kod:
http://paste2.org/NjCafvv9
Kod:
sys_log(0,"ITEM_BLEND!!");
Kod:
http://paste2.org/PNOd6sdh
Kod:
CSafebox * pkSafebox = ch->GetSafebox();     LPITEM pkItem = ch->GetItem(p->ItemPos);     if (!pkSafebox || !pkItem)         return;
Kod:
if (pkItem->GetType() == ITEM_BELT && pkItem->IsEquipped()) ch->ChatPacket(CHAT_TYPE_INFO, "Önce kemer Envanterini boşalt!");     return; }
Kod:
/Warr Bug'unu Fixlemek için Diff paylaşıyorum arkadaşlar. Game Rev. 40250 Kod: game40250 0008DF69: 8E 86
Kod:
if slotNumber >= player.INVENTORY_PAGE_SIZE: slotNumber -= player.INVENTORY_PAGE_SIZE
Kod:
if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex: slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
6kXW1l.jpg

b2GZpV.jpg
Kod:
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
Kod bloğunun içine eklenir:
Kod:

Kod:
if (pkVictim->GetShopOwner())       return false;
[/B]
Kod:
if (strArg1 == "r_info") { if (0 == arg2[0]) {
Kod:
Cube_request_result_list(ch);
Kod:
//Cube_request_result_list(ch); return;
# EDİT : Kesin çözümü WoM 2 ekibi tarafından yayınlandı. Paylaşmama gerek kalmadı sanırım. (Ben farklı çözdüm fakat yorumları baktığımda buda kesin sonucu elde ediyor.)


Src'nize girip (game/src/cube.cpp) açın ve aratın;



if (false == bCatchInfo)

Değiştirin;


if (!bCatchInfo || materialInfoText.size() == 0)
ve tekrar arayın;



resultCount = resultList.size();
Ekleyin;



if (resultCount == 0) { return;}
Fixlenmiştir. :)
Kod:
if (item2->GetSocketCount() == 0) return false;
Alttaki kod bulduğumuz kodun altına eklenir.

Kod:

Kod:
if (item2->IsEquipped())             return false;
Yine char_item.cpp içerisinde aşşağıdaki kod aratılır.

Kod:

if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343)
Ve üstüne bu kod eklenir.

Kod:

if (item2->IsEquipped())
return false;
Kod:
if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && number(0, 4) > 0) // 80% íë¥             {                 int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100;                 if (i)                 {                     CreateFly(FLY_HP_SMALL, pAttacker);                     pAttacker->PointChange(POINT_HP, i);                 }             }
Kod:
if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && number(0, 4) > 0) // 80% Ä®·ü             {                 int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100;                 if (i && i > 0)                 {                     CreateFly(FLY_HP_SMALL, pAttacker);                     pAttacker->PointChange(POINT_HP, i);                 }             }
Kod:
if (!ch->IsEmptyItemGrid(p->ItemPos, pkItem->GetSize()))         return;
Kod:
for (WORD belt_index = BELT_INVENTORY_SLOT_START; belt_index < BELT_INVENTORY_SLOT_END; ++belt_index)     {         if (pkItem->GetType() != 3 && p->ItemPos.cell == belt_index)         {             if(pkItem->GetSubType() != 0 || pkItem->GetSubType() != 11 || pkItem->GetSubType() != 7)             {                 ch->ChatPacket(CHAT_TYPE_INFO, "|cFFff0000|H|h<Check> Depodan Kemer Envanterine item yerlestiremezsin !");                 return;             }         }        }
Kod:
if (item2->IsEquipped())     return false;
PYzq0v.png
Kod:
dwPrice = item->GetShopBuyPrice();

Kod:
if (dwPrice > item->GetGold()) dwPrice = item->GetGold();
Kod:
ACMD(do_unmount)
Kod:
https://paste2.org/HpE9BngM
Kod:
RemoveAffect(AFFECT_MOUNT_BONUS);
Kod:
https://paste2.org/8CBUzLd0   LPITEM item = GetWear(WEAR_UNIQUE1);       LPITEM item2 = GetWear(WEAR_UNIQUE2);       if (item && item->IsRideItem())       {         UnequipItem(item);       }            if (item2 && item2->IsRideItem())       {         UnequipItem(item2);       }
Kod:
enum DamageFlag { DAMAGE_NORMAL = (1 << 0), DAMAGE_POISON = (1 << 1), DAMAGE_DODGE = (1 << 2), DAMAGE_BLOCK = (1 << 3), DAMAGE_PENETRATE= (1 << 4), DAMAGE_CRITICAL = (1 << 5), };
Kod:
Aratın: bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type)
Kod:
enum DamageFlag { DAMAGE_NORMAL    = (1 << 0), DAMAGE_POISON    = (1 << 1), DAMAGE_DODGE    = (1 << 2), DAMAGE_BLOCK    = (1 << 3), DAMAGE_PENETRATE= (1 << 4), DAMAGE_CRITICAL = (1 << 5), };
f187df973eb84c97988ffc16cac8886d.png

Kod:
if (type != DAMAGE_TYPE_NORMAL && type != DAMAGE_TYPE_NORMAL_RANGE) { if (IsAffectFlag(AFF_TERROR)) { int pct = GetSkillPower(SKILL_TERROR) / 400; if (number(1, 100) <= pct) return false; } }
Kod:
if (IsAffectFlag(AFF_TERROR))     {         if (type != DAMAGE_TYPE_NORMAL && type != DAMAGE_TYPE_NORMAL_RANGE)         {             int iTerrorPCT = GetSkillPower(SKILL_TERROR) / 3.3;             if (number(1, 100) <= iTerrorPCT)             {                 SendDamagePacket(pAttacker, 0, DAMAGE_BLOCK);                 return false;             }         }     }
ac9894aa59954f58a5f4e4128e47e8e4.png

Hata 1: pct değikeni aynı fonksiyonda 3 ayrı hesaplama için kullanılıyor, yanlış hesaplama yapması mümkün
Hata 2: GetSkillPower(SKILL_TERROR)' ün verdiği değerler;
M1: 50
G1: 82
P: 125
şeklinde. orjinal kısımda bu değerleri 400'e bölüyor!? ve en yüksek seviye dehşet için 125 / 400 den 0.3125 gibi komik bir rakam çıkıyor ve sistem yuvarladığında 1 bile etmiyor direk bu kısmı pas geçiyor. düzenlemesi için 3.3 olarak değiştirildi bu şekilde tam olarak skilldesc de yansıttığı oranda uyguluyor
Hata 3: Block paketi eklenmemiş eğer oran tutturulursa pas geçer, şuan block paketi eklendiğinden oran tutturulursa miss olarak gözükür
Kod:
if (pAttacker->GetPoint(POINT_STEAL_HP))             {                 int pct = 1;                 if (number(1, 10) <= pct)                 {                     int iHP = MIN(dam, MAX(0, iCurHP)) * pAttacker->GetPoint(POINT_STEAL_HP) / 100;                     if (iHP > 0 && GetHP() >= iHP)                     {                         CreateFly(FLY_HP_SMALL, pAttacker);                         pAttacker->PointChange(POINT_HP, iHP);                         PointChange(POINT_HP, -iHP);                     }                 }             }             // SP ½ºÆ¿             if (pAttacker->GetPoint(POINT_STEAL_SP))             {                 int pct = 1;                 if (number(1, 10) <= pct)                 {                     int iCur;                     if (IsPC())                         iCur = iCurSP;                     else                         iCur = iCurHP;                     int iSP = MIN(dam, MAX(0, iCur)) * pAttacker->GetPoint(POINT_STEAL_SP) / 100;                     if (iSP > 0 && iCur >= iSP)                     {                         CreateFly(FLY_SP_SMALL, pAttacker);                         pAttacker->PointChange(POINT_SP, iSP);                         if (IsPC())                             PointChange(POINT_SP, -iSP);                     }                 }             }
Kod:
int iStealHP_ptr = pAttacker->GetPoint(POINT_STEAL_HP);             if (iStealHP_ptr)             {                 if (number(1, 100) <= iStealHP_ptr)                 {                     int iHP = MIN(dam, MAX(0, GetHP())) * pAttacker->GetPoint(POINT_STEAL_HP) / 100;                     if ((pAttacker->GetHP() > 0) && (pAttacker->GetHP() + iHP < pAttacker->GetMaxHP()) && (GetHP() > 0) && (iHP > 0))                     {                         CreateFly(FLY_HP_MEDIUM, pAttacker);                         pAttacker->PointChange(POINT_HP, iHP);                         PointChange(POINT_HP, -iHP);                     }                 }             }             // SP ½ºÆ¿             int iStealSP_ptr = pAttacker->GetPoint(POINT_STEAL_SP);             if (iStealSP_ptr)             {                 if (IsPC() && pAttacker->IsPC()) {                     if (number(1, 100) <= iStealSP_ptr)                     {                         int iSP = MIN(dam, MAX(0, GetSP())) * pAttacker->GetPoint(POINT_STEAL_SP) / 100;                         if ((pAttacker->GetSP() > 0) && (pAttacker->GetSP() + iSP < pAttacker->GetMaxSP()) && (GetSP() > 0) && (iSP > 0))                         {                             CreateFly(FLY_SP_MEDIUM, pAttacker);                             pAttacker->PointChange(POINT_SP, iSP);                             PointChange(POINT_SP, -iSP);                         }                     }                 }             }
Kod:
if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && number(0, 4) > 0) // 80% È®·ü             {                 int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100;                 if (i)                 {                     CreateFly(FLY_HP_SMALL, pAttacker);                     pAttacker->PointChange(POINT_HP, i);                 }             }             // Ä¥ ¶§¸¶´Ù SPȸº¹             if (pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) && number(0, 4) > 0) // 80% È®·ü             {                 int i = MIN(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) / 100;                 if (i)                 {                     CreateFly(FLY_SP_SMALL, pAttacker);                     pAttacker->PointChange(POINT_SP, i);                 }             }
Kod:
int iAbsoHP_ptr = pAttacker->GetPoint(POINT_HIT_HP_RECOVERY);             if (iAbsoHP_ptr)             {                 if (number(1, 100) <= iAbsoHP_ptr) {                     int iHPAbso = MIN(dam, GetHP()) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100;                     if ((pAttacker->GetHP() > 0) && (pAttacker->GetHP() + iHPAbso < pAttacker->GetMaxHP()) && (GetHP() > 0) && (iHPAbso > 0))                     {                         CreateFly(FLY_HP_BIG, pAttacker);                         pAttacker->PointChange(POINT_HP, iHPAbso);                     }                 }             }             // Ä¥ ¶§¸¶´Ù SPȸº¹             int iAbsoSP_ptr = pAttacker->GetPoint(POINT_HIT_SP_RECOVERY);             if (iAbsoSP_ptr)             {                 if (number(1, 100) <= iAbsoSP_ptr) {                     int iSPAbso = MIN(dam, GetSP()) * pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) / 100;                     if ((pAttacker->GetSP() > 0) && (pAttacker->GetSP() + iSPAbso < pAttacker->GetMaxSP()) && (GetSP() > 0) && (iSPAbso > 0))                     {                         CreateFly(FLY_SP_BIG, pAttacker);                         pAttacker->PointChange(POINT_SP, iSPAbso);                     }                 }             }
*Not:
Kod:

POINT_ERROR:
şeklinde syserr alırsanız aşağıdaki işlemi yapın;

*char.cpp açın
Bul:
Kod:

sys_err("POINT_ERROR: %s type %d val %d (max: %d)", GetName(), val, max_val);
Değiştir:
Kod:

sys_err("POINT_ERROR: %s type %d val %d (max: %d)", GetName(), type, val, max_val);
Kod:
Statünün 90 verilmesine rağmen karakter alanındaki statülerin tam dolmamasını görmüşsünüzdür mutlaka bu gün size bunun nasıl düzeltileceğini anlatacağım. Root/introselect.py Açılır Aratılır: self.destGauge =[ float(valueHTH)/380, float(valueINT)/380, float(valueSTR)/380, float(valueDEX)/380 ] Değiştirilir: self.destGauge =[ float(valueHTH)/90, # max statünüze göre değiştirebilrisiniz. float(valueINT)/90, # max statünüze göre değiştirebilrisiniz. float(valueSTR)/90, # max statünüze göre değiştirebilrisiniz. float(valueDEX)/90 # max statünüze göre değiştirebilrisiniz. ] Root/introcreate.py Açılır Aratılır: float(self.stat[0])/float(statSummary), float(self.stat[1])/float(statSummary), float(self.stat[2])/float(statSummary), float(self.stat[3])/float(statSummary), Değiştirilir: float(self.stat[0])/90,# max statünüze göre değiştirebilrisiniz. float(self.stat[1])/90,# max statünüze göre değiştirebilrisiniz. float(self.stat[2])/90,# max statünüze göre değiştirebilrisiniz. float(self.stat[3])/90,# max statünüze göre değiştirebilrisiniz.





Emma-Stone-Bye-Bye-Gif.gif

Metin2 Lobby'de AsiPly Bug ve Açıklarının Toplu Sunumu

AsiPly Nedir?
Metin2 özel sunucularında önemli bir yere sahip olan AsiPly, birçok geliştirici tarafından kullanılan güçlü bir Python tabanlı oyun içi arayüz sistemidir. Bu sistem, hem PVP sistemlerinde hem de kullanıcı deneyimini artırmada büyük rol oynar. Ancak, gelişmiş özellikler sunsa da bazı güvenlik açıkları ve hatalar da beraberinde getirmiştir. Bu yazıda, AsiPly ile ilgili bilinen tüm buglar ve açıklar derlenerek tek konu altında toplanmıştır.

Bilinen Bug ve Açıklar
AsiPly sistemi, özellikle Python betiklerinde doğrulama eksiklikleri nedeniyle güvenlik açıklarına sahiptir. Örneğin, bazı kullanıcı arayüzü (UI) komutları doğrudan oyun sunucusuna gönderilirken doğru bir şekilde filtrelenmez. Bu durum, kötü niyetli oyuncuların sunucuya zarar verebileceği veya oyun içi verileri değiştirebileceği bir zafiyettir.

Python GUI Sistemlerinde Güvenlik Açıkları
AsiPly, Py GUI (Python Graphical User Interface) sistemleri ile entegre çalışmaktadır. Bu sistemler, kullanıcı dostu arayüzler sunarken, bazen komutları yorumlamada yetersiz kalabiliyor. Özellikle 'root' klasörlerinde bulunan dosyalara erişim sırasında doğrulama yapılmadığı için, bazı kullanıcılar yetkisiz alanlara erişebiliyor. Bu da sunucu güvenliği açısından ciddi bir risktir.

C++ ile Entegrasyon Sorunları
AsiPly, genellikle C++ ile yazılmış sunucu kaynak kodlarıyla entegre çalışır. Ancak, bazı durumlarda Python betiklerinden gelen veriler C++ tarafında yeterince kontrol edilmeden işlendiğinden, buffer overflow gibi güvenlik açıklarına neden olabilir. Bu tür açıklar, sunucunun çökmesine veya istismar edilmesine yol açabilir.

AsiPly ile İlgili Önerilen Çözümler[/COORD]
Geliştiricilerin yapması gereken ilk adım, tüm gelen verileri sunucu tarafında kontrol etmektir. Özellikle Python GUI üzerinden gelen komutlar, C++ tarafında filtrelenmeden işleme alınmamalıdır. Ayrıca, Py Root ve Pack sistemlerindeki yetkilendirme kontrolleri güçlendirilmelidir. Yetkisiz erişimleri engellemek için, kullanıcıların hangi dosyalara erişebileceği sınırlanmalıdır.

Metin2 Lobby Üzerinden Geliştirici Desteği
Metin2 Lobby olarak, AsiPly sistemlerinde yaşanan bu sorunlara karşı geliştiricilere destek vermeye devam ediyoruz. Bu konularla ilgili forumumuzda paylaşılan güncel kaynak kodlar, Python GUI örnekleri, C++ sistem düzenlemeleri ve güvenlik önerileri sayesinde, sunucularınızın daha güvenli ve stabil çalışmasını sağlayabilirsiniz.

Sonuç
AsiPly sistemi, güçlü ve esnek bir yapıya sahip olsa da, bazı güvenlik açıkları ve hatalar barındırmaktadır. Geliştiricilerin bu açıkları farkında olması ve gerekli önlemleri alması büyük önem taşımaktadır. Bu konu, Metin2 özel sunucu dünyasında güvenlik farkındalığını artırmak adına oldukça değerlidir.


Compilation of All Known AsiPly Bugs and Vulnerabilities at Metin2 Lobby

What is AsiPly?
AsiPly is a powerful Python-based in-game UI system that holds an important place in Metin2 private servers. This system plays a significant role in both PVP systems and enhancing user experience. However, despite offering advanced features, it also brings along certain security vulnerabilities and bugs. In this article, all known bugs and vulnerabilities related to AsiPly are compiled and gathered under a single topic.

Known Bugs and Vulnerabilities
Due to insufficient validation in its Python scripts, the AsiPly system has security vulnerabilities. For example, some UI commands sent directly to the game server are not properly filtered. This creates a vulnerability that allows malicious players to harm the server or modify in-game data.

Security Vulnerabilities in Python GUI Systems
AsiPly integrates with Py GUI (Python Graphical User Interface) systems, which provide user-friendly interfaces. However, sometimes these systems fail to adequately interpret commands. Since access to files located in 'root' folders is not validated, some users may gain unauthorized access. This poses a serious security risk for the server.

Integration Issues with C++
AsiPly typically works integrated with C++ based server source codes. However, in some cases, data coming from Python scripts are processed on the C++ side without sufficient checks, which can lead to security vulnerabilities like buffer overflow. Such vulnerabilities may cause the server to crash or be exploited.

Suggested Solutions for AsiPly
The first step for developers should be to validate all incoming data on the server side. Especially commands coming from Python GUI should not be processed on the C++ side without filtering. Additionally, authorization checks in Py Root and Pack systems must be strengthened. To prevent unauthorized access, user permissions to specific files should be limited.

Developer Support via Metin2 Lobby
As Metin2 Lobby, we continue to provide support to developers facing these issues within AsiPly systems. Through our forums, where updated source codes, Python GUI examples, C++ system modifications, and security recommendations are shared, you can ensure your servers run more securely and stably.

Conclusion
Although the AsiPly system has a powerful and flexible structure, it still contains certain security vulnerabilities and errors. It is crucial for developers to be aware of these vulnerabilities and take necessary precautions. This topic is highly valuable in raising awareness about security in the world of Metin2 private servers.
 

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

Benzer konular

Geri
Üst Alt