Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Bot Oyuncu Sistemi. 2024-11-03

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan Jack.Wrestler
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 129
  • Görüntüleme Görüntüleme 17K
5.00 yıldız(lar) 4 Değerlendirme Değerlendirenler

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!

Paylaşım İçin Teşekkürler iyi akşamlar
 
Yüksek onlinede sql kullanımı problem yaratır json formatını yorumlarda vermiştim json olarak daha optimize olut
Ölçüp denemek gerekli bir sql sorgusunun sorun yaratacağını sanmıyorum, bu sorgu yalnızca gm tarafından girilen bir kod ile çalışıyor.

Bizim prodda milyar veri olan tablomuza saniyede 100 defa sorgu atılan uygulamalarımızda sorun olmuyor çünkü doğru partition edilmiş ve arama yapılan kolonlar pk index erişim log(n) ve satıra eriştikten sonra diğer verileri okuma o(1) kompleksitesi.
 
Ölçüp denemek gerekli bir sql sorgusunun sorun yaratacağını sanmıyorum, bu sorgu yalnızca gm tarafından girilen bir kod ile çalışıyor.

Bizim prodda milyar veri olan tablomuza saniyede 100 defa sorgu atılan uygulamalarımızda sorun olmuyor çünkü doğru partition edilmiş ve arama yapılan kolonlar pk index erişim log(n) ve satıra eriştikten sonra diğer verileri okuma o(1) kompleksitesi.
Demek istediğim şu gm kodu ile giriliyor lakin bir cache yok memory kullanımı yok performans açısından sorun yaratabilir sonuçta her player için kod girmen gerekiyor tek seferlik bir döngü yok
 
@Jack.Wrestler kodda ufak bir geliştirme
NameList eklendi, namelist'de geçen isimler oyunda varmı kontrolü eklendi varsa o karakter adını atlar
toplu çağırma ve gönderme eklendi testleri yapıldı sorunsuz çalışmakta


[CODE lang="cpp" title="cmd_gm"]ACMD(do_fake_player)
{
char arg1[256], arg2[256];
two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

if (!*arg1 || !*arg2)
{
ch->ChatPacket(CHAT_TYPE_INFO, "usage: fake_player login <name>");
ch->ChatPacket(CHAT_TYPE_INFO, "usage: fake_player logout <name>");
ch->ChatPacket(CHAT_TYPE_INFO, "usage: fake_player fullon <count>");
ch->ChatPacket(CHAT_TYPE_INFO, "usage: fake_player fulloff <count>");
return;
}

const char* names[] = {
"Homeron", "MrGe", "HOPPALA", "xAFFETMEg", "MythArrow", "Shunai", "RzeLy", "GODUMBOZULDU", "CUPPALA",
"Hemera", "Dou", "ASSASIN", "Mangeku", "PADISAH", "BOZKURT", "MUSLERA", "RvsSpeed", "ASL4N", "Ninja",
"Hell", "Olc", "LORD", "DELI", "Seyis", "Paradise", "EFSANE", "BABA", "HeavenFARM", "Speed", "TURUVALI",
"ASDASDASD", "3141592653", "HeddA", "Efsun", "ESDELIDELI", "TrMusallat", "BASKAN", "Wind", "BenGeldim",
"TENNSII", "RaEdEn", "Eda", "HeMRA2", "GAVIROSTA", "Demirci", "HAYYAVRUM", "AyYuzlum", "MEMISxKraL",
"LORDfarm", "HerYerDuman6", "KasarRuski", "BaekLORD", "Volkann", "0R0SPUEDA", "ZALIM", "PsychoSociaL",
"SINCANLIM", "GowtheR", "AVSARBEY", "BABAxDERLER", "Burra", "GARFIELD", "CaptainStag", "ZihinseLPlus",
"RAJON", "benuzulmem", "Pretzel", "EJDER", "Zoe", "Ez4Ence", "KRITIKCI", "TEKILA", "meflud", "NARCOS",
"Eclipse7", "tethyS", "DeliDumrul", "SUMBUL", "ZaMaZoM", "WarWolf", "sisko", "CHIVAS", "pretzell",
"Eclipse77", "NobleStrike", "KekkeiGenkai", "RuhsuzOkcu", "PALANBEYAZ", "lRozeNl", "SANRI", "SeqhilNinja",
"SmokerDAYI", "FizofreN", "SmokerIDAYI", "THANOS", "VATAN", "Kutlusam", "PARMAKDARBE", "SeljukEmpire",
"Sharingan", "SOSYOPAT", "KesBeni", "GODFARM", "Itachi", "YAYGELARTIK", "Maestro", "KafamDuman6",
"OhaKiNG", "XxLeGendxX", "Ramires", "gaddaR", "Hercai", "RedKeys", "Devilish", "p0seid0n", "ASGARD",
"Eye4You", "TurkishPower", "TACSIZKRAL", "SOYLUYUM", "SmithKlineTR", "OTTOMAN", "JaWeL", "MEZARCI34",
"LASTDANCE", "Pailrox", "Hassaki", "xFARKETMEZ", "oVEYTo", "EskiciGeldi", "RowsAgla", "EnginSertkay",
"SIKINTILI", "CaptanJake", "EZEL", "SwangeR", "Archer", "PosionFake", "BabaMerhaba", "ByHefna",
"engntekleyen", "EnginSertkaa", "Furious", "TARZAN", "Indicibus", "SarKopat", "lLoran", "Hassasium",
"TrOnLaR", "OrkunMNTMR", "kutsama1", "Baro", "DioBrando", "D4YI", "POMPA", "Kirwe", "TankerMelda",
"BidonNecmi", "Mayhem", "ScorpionJr", "PerfectDewiL", "ByJamiryoo", "DeliNoyan", "Orkun1910", "Powerade",
"Ryzen", "Muholox58", "Skayres", "TRDrenisH", "Matriks", "KralMetehan", "RaptorBlood", "TRDrenissH",
"TainTed", "BlackBrother", "Eulith", "Sensizim", "Malphite", "G4me0vER", "Pinhani", "AyiABBAS",
"FarketmeezWT", "TylerDurden", "Vaenictas", "AyiKADO", "DeaTLoarD", "vosseL", "xLarge", "andavalemre",
"ITeKKrAlI", "DarkSide", "EternaL", "DIRILISH", "Afrodit", "J3adJ3oy", "Aldarion", "TheMoRe", "AyiCEREN",
"Titanium", "SURAVAR", "Crow", "STALLIZE", "Despina", "Pemions", "AyiBATU", "TestaRossa", "godUZI",
"ReaLxFLU", "Sasurata", "Kutsabebeim", "Eliena", "CakarLaRRR", "Kurosaki", "Rhot", "Ninjayimben",
"Zeors", "SemiGod", "KARASURA", "DELALE", "MagicLord", "Hasecan", "Chupons", "SekoBey", "POSEIDON",
"TEKYUMRUK", "Sekoooo", "WurGunBey", "Invincible", "FRENTE", "RoyaLs", "Serchuva", "EmonG", "ThiweT",
"CardinalRed", "MesquL", "Delpwinzy", "LeuEntrica", "VARLUKHAN", "PATRON", "IPuF", "AVVArutin",
"babafingo", "ZorBaaTR", "KaRaCeLLaT", "UtkuDuman", "InsCnmYa", "Poncik", "MuSaLlat", "Scary", "Elizabet"
};

if (0 == strcmp(arg1, "login"))
{
std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT name FROM player.player WHERE name = '%s'", arg2));
if (pMsg->Get()->uiNumRows > 0)
return;
TFakePlayerLoginData fakePlayerLoginData;
strlcpy(fakePlayerLoginData.szName, arg2, sizeof(fakePlayerLoginData.szName));
fakePlayerLoginData.lMapIndex = ch->GetMapIndex();
fakePlayerLoginData.lX = ch->GetX();
fakePlayerLoginData.lY = ch->GetY();
fakePlayerLoginData.iRotation = ch->GetRotation();

CFakePlayerManager::Instance().FakePlayerLogin(ch, &fakePlayerLoginData);
}
else if (0 == strcmp(arg1, "logout"))
{
CFakePlayerManager::Instance().FakePlayerLogout(arg2, ch);
}
else if (0 == strcmp(arg1, "fullon"))
{
int count = 1;
if (*arg2 && isnhdigit(*arg2))
{
str_to_number(count, arg2);
count = MINMAX(50, count, 250);
}

const int nameCount = sizeof(names) / sizeof(names[0]);
if (count > nameCount)
{
count = nameCount;
ch->ChatPacket(CHAT_TYPE_INFO, "Only %d names available, adjusting count to match.", nameCount);
}

for (int i = 0; i < count; ++i)
{
std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT name FROM player.player WHERE name = '%s'", names));
if (pMsg->Get()->uiNumRows > 0)
return;
TFakePlayerLoginData fakePlayerLoginData;
strlcpy(fakePlayerLoginData.szName, names, sizeof(fakePlayerLoginData.szName));
fakePlayerLoginData.lMapIndex = ch->GetMapIndex();
fakePlayerLoginData.lX = ch->GetX() - number(200, 750);
fakePlayerLoginData.lY = ch->GetY() - number(200, 750);
fakePlayerLoginData.iRotation = ch->GetRotation();

CFakePlayerManager::Instance().FakePlayerLogin(ch, &fakePlayerLoginData);
ch->ChatPacket(CHAT_TYPE_INFO, "Fake player %s logged in.", names);
}
}
else if (0 == strcmp(arg1, "fulloff"))
{
int count = 1;
if (*arg2 && isnhdigit(*arg2))
{
str_to_number(count, arg2);
count = MINMAX(1, count, 250);
}

const int nameCount = sizeof(names) / sizeof(names[0]);
if (count > nameCount)
count = nameCount;
for (int i = 0; i < count; ++i)
CFakePlayerManager::Instance().FakePlayerLogout(names, ch);
}
}[/CODE]
 
Son düzenleme:

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

Geri
Üst