Forrás:Depi, SampFórumról DM zóna létrehozása
Na, amit Ti is láthatjátok a címből, most azt fogom leírni Nektek, hogy hogyan is lehet megoldani,
azt ha valaki DM zónába van, akkor onnan csak egy bizonyos paranccsal tudjon kijönni ill. más parancsot se tudjon használni addig.
Na kezdjük is el:
1. Létre kell hozni egy globális változót, ami tárolja, hogy a játékos Dm zónába van-e vagy nincs
new: bool:DM[MAX_PLAYERS];
A változónknak két értéke lehet,
- első:
True
( igaz )
- második:
False
( hamis ).
Akkor a
True
jelzi majd, hogy DM zónába van, és a
False
pedig hogy nincs.
2. Ha valaki csatlakozik a szerverre akkor a DM változó értéke egyértelműen False ( hamis ) lesz.
public OnPlayerConnect(playerid)
{
DM[playerid] = false;
return 1;
}
Tehát, True ( hamis ) értéket adtunk neki.
3. Ha valaki le csatlakozik akkor is False ( hamis ) értéket adunk neki.
public OnPlayerDisconnect(playerid, reason)
{
DM[playerid] = false;
return 1;
}
Jöhetnek a parancsok
4.
DM parancs létrehozása
if(strcmp(cmdtext, "/dm") == 0 )
{
if(DM[playerid] == true) return SendClientMessage(playerid,0xFFFF00AA,"DM zónában vagy ! Először /exitdm");
// Lekérdezzük hogy DM zónában van-e vagy nincs
ResetPlayerWeapons(playerid); // meglévő fegyvereit elvesszük
GivePlayerWeapon(playerid,32,1000); // Adunk neki fegyvert
SetPlayerArmour(playerid, 100); // Adunk neki páncélt
SetPlayerPos(playerid,2782.3257,-2019.7649,13.5620); // Teleport koordinátája ( ide teleportálja )
SendClientMessage(playerid, 0xFFFF00AA,"Csatlakoztál a DM-hez! Kilépéshez: /exitdm");
// Ki írunk neki egy 'infó' szöveget
DM[playerid] = true; // beállítjuk a DM változót, hogy True ( igaz ) értéket mutasson.
return 1; // Visszatérés
}
Hát ennyi lenne, egy egyszerű DM parancs, de ezt még lehet 'cifrázni' karakter,fegyver,élet,páncél mentésével.
Na, ha már megvolt a DM parancs, akkor hozzunk létre egy exitdm nevű parancsot.
5.
Exitdm parancs létrehozása
if(strcmp(cmdtext, "/exitdm") == 0)
{
if(DM[playerid] == false) return SendClientMessage(playerid,0xFFFF00AA,"Nem vagy DM zónában!");
DM[playerid] = false; // Ha a játékos sikeresen kilépet akkor false ( hamis ) értéket kap
SendClientMessage(playerid, 0xFFFF00AA,"Sikeresen kiléptél a DM zónából!");
// Ha kilépett a DM zónából akkor küldünk neki üzenetet
ResetPlayerWeapons(playerid); // Elvesszük a fegyvereit.
return 1; // Visszatérés
}
Tehát, ez lesz az a parancs, amit a DM zónába használhat.
6. Nézzünk egy egyszerű parancsot
if(strcmp(cmdtext, "/tudom") == 0)
{
if(dm[playerid] == true) return SendClientMessage(playerid,0xFFFF00AA,"DM zónában vagy ! Először /exitdm");
// Megvizsgáljuk, hogy DM zónába vane- vagy nincs, ha nincs akkor lefut a parancs
SendClientMessage(playerid,0xFFFF00AA,"Ezt már te is megtanultad!"); // szöveget írunk neki, ha nincs DM zónában
return 1; // Visszatérés
}
Hát ennyi lenne röviden. Lehet kifogom egészíti az adatok mentésével.
Sok sikert.
|
Az elejét elrontottad.
new: bool:DM[MAX_PLAYERS];
helyett
new bool:DM[MAX_PLAYERS];
A kettőspont nem kell a new után.