Metamod:ClientConnect parancs letiltása:Sziasztok! Ebben a tutorialban megmutatom hogy lehet letiltani a szerverekre való csatlakozást, illetve inkább azt hogy hogy lehet beállítani hogy milyen szerverre engedjen fel a kliensel. Többek között ez azért jó megoldás, mert ha csinálsz egy klienst, amiben lesznek extrák ..stb,
hogy csak a te szervereden tudjanak játszani a kliensel!A
001es tutorial plugint veszem alapul, az adott sorokat ahoz viszonyítva mutatom, hogy hova kell bele írni a példa pluginba!
A Meta_Api.cpp fájlt megnyitjuk magunk elé első lépésként! És valahol az includek alatt létre hozzuk a következő sort:
int ClientCmd(const char *cmd);
Megkeressük az Initialize függvényt, és a ClientCmds szövegkiiírás alatt elhelyezzük ezt a sort:
pEnginefuncs->pfnClientCmd = &ClientCmd;Valahogy így kell kinéznie:
gEngfuncs.pfnClientCmd("echo \"www.hlmod.hu - Kliens elindult!\"");
pEnginefuncs->pfnClientCmd = &ClientCmd;
RETURN_META_VALUE(MRES_IGNORED, 0);
majd valahol a kódban, mondjuk az initalize alatt létre hozzuk a definált függvényt, ami így néz ki:
int ClientCmd(const char *cmd)
{
//Ha a beírt parancs tartalmazza a connect szót, és a beállított ip címet, akkor lefuttatja a konzolba beírt parancsot! Megjegyzem hogy mikor menüből csatlakozol, az is csak egy konzol parancsot teljesít, szóval ott is működni fog! Az példa ip cím helyére, kell a te szerverednek az ip címe, akár mennyi ip cím hozzá adható a megfelelő módon!
if( strstr( cmd, "connect" ) && strstr( cmd, "91.82.220.218:27998" ) )
{
return gEngfuncs.pfnClientCmd(cmd);
}
//Itt pedig az else részben tiltódik minden más connectes parancs tiltása. Kivéve a disconnect, mert kilépni már kilehessen a szerverről!
else if(strstr( cmd, "connect" ) && !strstr( cmd, "dis" ))
{
gEngfuncs.pfnClientCmd("echo \"Sajnalom, csak a hlmod.hu szervereire mehetsz fel a kliensel\"");
//MRES_SUPERCEDE mint mindenhol máshol ,itt is a teljes tiltást jelenti, így a beírt parancs nem fog lefutni, itt megállítja a függvényt!
RETURN_META_VALUE(MRES_SUPERCEDE, 4);
}
//Ha a fent található elágazásokba nem tér be az adott parancs futtatássakkor, akkor lefuttatja a beírt parancsot, tehát mindent amit beírsz a konzolba, az működni fog, mert azt az értéket adja vissza, szóval ez a return minden képpen kell bele!
return gEngfuncs.pfnClientCmd(cmd);
}
Végeredmény: