@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
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[i]));
if (pMsg->Get()->uiNumRows > 0)
return;
TFakePlayerLoginData fakePlayerLoginData;
strlcpy(fakePlayerLoginData.szName, names[i], 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[i]);
}
}
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[i], ch);
}
}