GTA Közösség - A magyar GTA fórum
San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Leírások/Útmutatók => A témát indította: mauladam - 2011. augusztus 02. - 06:57:55
-
Sziasztok!
Megérkezett az elsõ tutorialom. :)
Mint ahogy a téma nevén is látszik azt fogom megmutatni, hogyan készíthettek egy egyszerû AFK filterszkriptet!
Kommentekbe mindent leírok.
[pawn]//Elõször is ágyazzuk be a szükséges fájlokat:
#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
//Hozzunk létre egy bool tipusú változót az összes játékosnak:
new bool:AFK[MAX_PLAYERS];
//Most következik, hogy ha egy játékos feljön a szerverre, ílletve kilép, false-ra, azaz hamisra állítjuk neki az AFK változóját:
public OnPlayerConnect(playerid)
{
AFK[playerid] = false;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
AFK[playerid] = false;
return 1;
}
//Most pedig írjuk meg a parancsot:
CMD:afk(playerid)
{
new nev[MAX_PLAYER_NAME], str[32];
//Ha a játékos AFK változójának értéke false, azaz hamis:
if(AFK[playerid] == false)
{
AFK[playerid] = true; //Átállítjuk a játékos AFK változóját igazra.
SetPlayerVirtualWorld(playerid, 1); //Áttesszük másik virtuális világba.
GetPlayerName(playerid, nev, MAX_PLAYER_NAME); //Lekérdezzük a nevét.
format(str, 32, \"[AFK]%s\", nev); //Megformázzuk az str változót.
SetPlayerName(playerid, str); //Átállítjuk a játékos nevét.
TogglePlayerControllable(playerid, false); //Megfagyasszuk a játékost.
}
//Ha a játékos AFK változójának értéke true, azaz igaz:
else if(AFK[playerid] == true)
{
AFK[playerid] = false; //Átállítjuk a játékos AFK változóját hamisra.
SetPlayerVirtualWorld(playerid, 0); //Visszaállítjuk az alap virtuális világba.
GetPlayerName(playerid, nev, MAX_PLAYER_NAME); //Lekérdezzük a nevét.
strdel(nev, 0, 5); //Kitöröljük a nev változóból ezt: [AFK].
SetPlayerName(playerid, nev); //Visszaállítjuk nevét.
TogglePlayerControllable(playerid, true); //Haggyuk hogy mozogjon újra.
}
return 1; //Visszatérés
}[/pawn]
Remélem valakinek jól jött :)
Ja, és minden kérést/kérdést írjatok ide!
-
Nem kötekedés,de
CMD:akf(playerid)[/quote]
-
:D
Elég csak átfutni gondolatban a kódot és hamar rá lehet jönni mikor csatlakozok a szerverre ez a változó
[pawn]
public OnPlayerConnect(playerid)
{
AFK[playerid] = true;
return 1;
}
[/pawn]
true értéket kap így ha beírom hogy /afk kitöröli a nevembõl az elsõ 5 karaktert. Szuper.
[pawn]
//Ha a játékos AFK változójának értéke true, azaz igaz:
else if(AFK[playerid] == true)
{
AFK[playerid] = false; //Átállítjuk a játékos AFK változóját hamisra.
SetPlayerVirtualWorld(playerid, 0); //Visszaállítjuk az alap virtuális világba.
GetPlayerName(playerid, nev, MAX_PLAYER_NAME); //Lekérdezzük a nevét.
strdel(nev, 0, 5); //Kitöröljük a nev változóból ezt: [AFK].
SetPlayerName(playerid, nev); //Visszaállítjuk nevét.
TogglePlayerControllable(playerid, true); //Haggyuk hogy mozogjon újra.
}
[/pawn]
Tesztelj, mielõtt publikálsz valamit please.
-
:D
Elég csak átfutni gondolatban a kódot és hamar rá lehet jönni mikor csatlakozok a szerverre ez a változó
[pawn]
public OnPlayerConnect(playerid)
{
AFK[playerid] = true;
return 1;
}
[/pawn]
Ezt elírtam.... sajnos.
Nem kötekedés,de
CMD:akf(playerid)[/quote]
[/quote]
Ezzel mi a baj? Nem használtam paramétereket, így nem kell a params[].
-
Nem kötekedés,de
CMD:akf(playerid)
[/quote]
ezt is elirtad akf helyett afk :)
-
Ja bocs-bocs, azt hittem arra gondol hogy nincs params[]. :)