Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
B 1
berione65
sen272 1
sen272
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

TR Tipi Pet Sistemi 1

indirmek için izniniz yok
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

bak bu kod char.h 'ta yok normalde olması gerekiyor :
GetExtendInvenMax
cmd_genaralkden kaldırdım bakalım lazım olursa sökecek yer var sökerim
 
ACMD(do_PetChangeName)
bunda SQL Injection var.
/pet_change_name arg1(strtonumber) arg2(directuse)
şeklinde.
Özel mesaj atıp nasıl sql injection yapılıyor diye saçma sorular sormayın başkasına zarar vermeniz için yardımcı olmam.
Ayrıca karakter kontrolü yok boşluk ve özel işaretler ile vs isim koyulabilir. python dan kontrol koyulduysa /pet_change_name 0 selam_ben_tunga diye nick koyarsınız. Tek engel veritabanındaki string limiti.

change_pet'in kodları üzücü :D yorum yok.
İnsanları korkutmak için yazmadım. change_name bölümünü başka filesten baksanız iyi olur. diyeceklerim bu kadar.
Paylaşım için teşekkürler.
 
Kodda düzenleme yaptım fakat nekadar işe yarar bilmiyorum hata alırsanız kodda düzeltme yapmam için hata mesajını yazınız

 
Kod:
ACMD(do_PetChangeName)
{
    char arg1[256], arg2[256];
    two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

    if (!*arg1 || !*arg2)
        return;

    int bCell = 0;
    str_to_number(bCell, arg1);
    LPITEM item = ch->GetInventoryItem(bCell);
    if (!item)
        return;
    if (ch->CountSpecifyItem(55030) < 1)
        return;

    if (!strcmp(arg2, "%") || !strcmp(arg2, "/") || !strcmp(arg2, ">") || !strcmp(arg2, "|") || !strcmp(arg2, ";") || !strcmp(arg2, ":") || !strcmp(arg2, "}") || !strcmp(arg2, "{") || !strcmp(arg2, "[") || !strcmp(arg2, "]") || !strcmp(arg2, "%") || !strcmp(arg2, "#") || !strcmp(arg2, "@") || !strcmp(arg2, "^") || !strcmp(arg2, "&") || !strcmp(arg2, "'") )
    {
        ch->ChatPacket(CHAT_TYPE_INFO,"[Pet-Kulucka] Hatali isim girdiniz");
        return;
    }

    if (ch->GetNewPetSystem()->IsActivePet())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ONCE_PETINI_GONDER"));
        return;
    }

    char szName[CHARACTER_NAME_MAX_LEN + 1];
    DBManager::instance().EscapeString(szName, sizeof(szName), arg2, strlen(arg2));

    std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("UPDATE new_petsystem SET name = '%s' WHERE id = '%lu'", szName, item->GetID()));
    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("PET_ISMI_DEGISTIRILDI"));
    ch->RemoveSpecifyItem(55030, 1);
}
 
Kod:
ACMD(do_PetChangeName)
{
    char arg1[256], arg2[256];
    two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

    if (!*arg1 || !*arg2)
        return;

    int bCell = 0;
    str_to_number(bCell, arg1);
    LPITEM item = ch->GetInventoryItem(bCell);
    if (!item)
        return;
    if (ch->CountSpecifyItem(55030) < 1)
        return;

    if (!strcmp(arg2, "%") || !strcmp(arg2, "/") || !strcmp(arg2, ">") || !strcmp(arg2, "|") || !strcmp(arg2, ";") || !strcmp(arg2, ":") || !strcmp(arg2, "}") || !strcmp(arg2, "{") || !strcmp(arg2, "[") || !strcmp(arg2, "]") || !strcmp(arg2, "%") || !strcmp(arg2, "#") || !strcmp(arg2, "@") || !strcmp(arg2, "^") || !strcmp(arg2, "&") || !strcmp(arg2, "'") )
    {
        ch->ChatPacket(CHAT_TYPE_INFO,"[Pet-Kulucka] Hatali isim girdiniz");
        return;
    }

    if (ch->GetNewPetSystem()->IsActivePet())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ONCE_PETINI_GONDER"));
        return;
    }

    char szName[CHARACTER_NAME_MAX_LEN + 1];
    DBManager::instance().EscapeString(szName, sizeof(szName), arg2, strlen(arg2));

    std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("UPDATE new_petsystem SET name = '%s' WHERE id = '%lu'", szName, item->GetID()));
    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("PET_ISMI_DEGISTIRILDI"));
    ch->RemoveSpecifyItem(55030, 1);
}
"Karakter kontrolü yok boşluk ve özel işaretler ile vs isim koyulabilir."
stringler basit şekliyle sıralı karakter kümesidir. strcmp ile bu küme içerisindeki tüm karakterleri belirlenen string ile sıra sıra compare edemezsiniz. kümenin tamamını compare edersiniz. demek istediğim adı sadece "%" veya "/" olan bir karakter açılamaz ancak "%/" olan bir karakter açılabilir.
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst