- Katılım
- 30 Eki 2024
- Konular
- 15
- Mesajlar
- 112
- Online süresi
- 1mo 13d
- Reaksiyon Skoru
- 49
- Altın Konu
- 0
- TM Yaşı
- 1 Yıl 7 Ay 7 Gün
- Başarım Puanı
- 58
- MmoLira
- 3,094
- DevLira
- 0
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
- Katılım
- 17 Eki 2016
- Konular
- 129
- Mesajlar
- 2,409
- Çözüm
- 86
- Online süresi
- 2mo 11d
- Reaksiyon Skoru
- 1,290
- Altın Konu
- 1
- Başarım Puanı
- 258
- MmoLira
- 1,866
- DevLira
- 12
Ö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.Yüksek onlinede sql kullanımı problem yaratır json formatını yorumlarda vermiştim json olarak daha optimize olut
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.
- Katılım
- 9 Ocak 2022
- Konular
- 13
- Mesajlar
- 130
- Online süresi
- 2mo 21d
- Reaksiyon Skoru
- 76
- Altın Konu
- 0
- TM Yaşı
- 4 Yıl 4 Ay 27 Gün
- Başarım Puanı
- 76
- MmoLira
- 579
- DevLira
- 12
Yarın pc başına geçince uyarlama yaparımPeki nasıl yapacaklarını açıklarsanız güncelle verebilirim herkes faydalanır
- Katılım
- 9 Ocak 2022
- Konular
- 13
- Mesajlar
- 130
- Online süresi
- 2mo 21d
- Reaksiyon Skoru
- 76
- Altın Konu
- 0
- TM Yaşı
- 4 Yıl 4 Ay 27 Gün
- Başarım Puanı
- 76
- MmoLira
- 579
- DevLira
- 12
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Ö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.
- Katılım
- 9 Ocak 2022
- Konular
- 13
- Mesajlar
- 130
- Online süresi
- 2mo 21d
- Reaksiyon Skoru
- 76
- Altın Konu
- 0
- TM Yaşı
- 4 Yıl 4 Ay 27 Gün
- Başarım Puanı
- 76
- MmoLira
- 579
- DevLira
- 12
@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]
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:






