Egyszerû.
Mod elejére:
new bool:DM[MAX_PLAYERS]; // ezzel létrhezól egy \"Bool\" változót.
majd így fog kinézni a parancsod:
CMD:parancs(playerid, params[])
{
if(DM[playerid] == true) return SendClientMessage(playerid, SZIN,\"Te már DM-ben vagy!\"); // lekérdezzük, hogy DM-ben van -e
{
SetPlayerPos(playerid,x,y,z); //Ha nincs elportoljuk..
// itt meg a többi ami kell.
}
return 1;
}
Fontos lehet, hogy csatlakozáskor tiltsuk le az õ DM-jét, mert anélkül csak a DM-ben lévõ játékosokat látja!
public OnPlayerConnect(playerid)
{
DM[playerid]=false;// letiltjuk.
return 1;
}
Ebbõl kiindulva, szerintem a /exitdm parancsot is megtudod oldani, Ha nem, akkor segítek.
nem teszteltem!
Mód elejére:
new DM[MAX_PLAYERS];
Ez a parancs:
CMD:dm( playerid , params [ ] ) {
if( DM[ playerid ] == 1 ) return SendClientMessage( playerid , -1 , \"* Már benne vagy a DM -ben! *\" );
SetPlayerPos( playerid, pozíció );
DM[ playerid ] = 1;
return 1; }
Kilépés:
CMD:exit( playerid, params [ ] ) {
if( DM[ playerid ] == 0 ) return SendClientMessage( playerid , -1 , \"* Már kiléptél a DM -bõl! *\" );
DM[ playerid ] = 0;
SendClientMessage( playerid, -1 , \" Kiléptél a DM -bõl! \");
return 1; }
Újraspawnolás:
public OnPlayerSpawn( playerid ) {
if( DM[ playerid ] == 1 ) {
SetPlayerPos( playerid , pozició );
SendClientMessage( playerid , -1 , \"Újra lespawnoltál a DM -ben mert megöltek!\" );
return 1; }
Minden parancs elejére, hogy ne használhassa DM -ben csak..
if( DM[ playerid ] == 1 ) return SendClientMessage( playerid, -1, \"Benne van egy DM -ben így nem használhatsz parancsokat!\");
Ennyi.
Értem de az baj, hogy minden parancs elé oda kell irni ezt
if( DM[ playerid ] == 1 ) return SendClientMessage( playerid, -1, \"Benne van egy DM -ben így nem használhatsz parancsokat!\");
mer ha a Dmt egy FS be csinálom akor ami más FS be van azt nem tiltja le csak azt ami abban az FS vagy gamemodban vann ahol a Dm is van
És ezért jobb ez a megoldás de ez nem megy ZCMD-s parancs al
}else if(dmid[playerid] != -1) return SendClientMessage(playerid,0xFFFF00AA,\"Nem használhatsz parancsokat DM-zónában elöbb lépj ki /exitdm\");
Ez minden parancsot letilt ami nem a dm FS-ében vann
rögtön meglesem csinálok 2 külön fs-t beléjük pár parancsot és megnézem megtudom e oldani
Dupla hozzászólás automatikusan összefûzve. ( 2013. február 16. - 16:45:43 )
Tökéletesen átviszi de igen szükséges minden egyes fs-ben illetve a gm-ben is minden egyes zcmd-s parancshoz odaírni olyan 3 sort az elejére (ha nagyon akarod rövidíteni csinálsz belõle egy függvényt és akkor fs-enként 1 függvényt + 1-1sor a zcmd-s parancsok elejére azt csövi)
de hogy bemutassam
MultiDM1-es fs-e(eza fõ fs ennek mindenképp futnia kell és a scriptfiles mappába kell csinálnod egy multifs nevû mappát)
#include <a_samp>
#include <zcmd>
#include <dini>
new DM[MAX_PLAYERS];
new loc[128];
new nev[MAX_PLAYER_NAME];
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, nev, sizeof(nev));
format(loc, sizeof(loc), \"/multifs/%s.ini\",nev);
if(!dini_Exists(loc))
{
dini_Create(loc);
dini_IntSet(loc, \"DM\", 0);
// DM[playerid] = dini_Int(loc, \"DM\");
}
else
{
// PlayerAdat[playerid][score] = dini_Int(loc, \"Score\");
// SetPlayerScore(playerid,PlayerAdat[playerid][score]);
}
DM[playerid] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
//PlayerAdat[playerid][score] = GetPlayerScore(playerid); // <--- OTT xD
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/multifs/%s.ini\",nev);
if(!dini_Exists(loc))
{
dini_Create(loc);
dini_IntSet(loc, \"DM\", 0);
}
else
{
dini_IntSet(loc,\"DM\",0);
}
return 1;
}
CMD:dmbe(playerid,params[])
{
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/multifs/%s.ini\",nev);
if(dini_Int(loc, \"DM\") != 0) return SendClientMessage(playerid,0xFFFFF,\"Nem használhatod a parancsot, mert dm módban vagy, lépj ki belõle /dmki\");
dini_IntSet(loc, \"DM\", 1);
return 1;
}
CMD:dmki(playerid,params[])
{
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/multifs/%s.ini\",nev);
if(dini_Int(loc, \"DM\") == 0) return SendClientMessage(playerid,0xFFFFF,\"Nem használhatod a parancsot, mert nem vagy dm módban\");
dini_IntSet(loc, \"DM\", 0);
return 1;
}
//üres fs-be másolod és lehet complie-olni ha megvannak az include-ok amik remélem megvannak
és itt pedig a 2-es verziója amiben már csak a DM állapot lekérésére vonatkozó példákat látsz illetve ezzel teszteltem rendesen áthozza e(természetesen mûködött)
#include <a_samp>
#include <zcmd>
#include <dini>
new loc[128];
new nev[MAX_PLAYER_NAME];
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
CMD:dmtest1(playerid,params[])
{
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/multifs/%s.ini\",nev);
if(dini_Int(loc, \"DM\") != 0) return SendClientMessage(playerid,0xFFFFF,\"Nem használhatod a parancsot, mert dm módban vagy, lépj ki belõle /dmki\");
SendClientMessage(playerid,0xFFFFF,\"hellóóóókaaa 111111111\");
return 1;
}
CMD:dmtest2(playerid,params[])
{
GetPlayerName(playerid,nev,sizeof(nev));
format(loc,sizeof(loc),\"/multifs/%s.ini\",nev);
if(dini_Int(loc, \"DM\") != 0) return SendClientMessage(playerid,0xFFFFF,\"Nem használhatod a parancsot, mert dm módban vagy, lépj ki belõle /dmki\");
SendClientMessage(playerid,0xFFFFF,\"hellóóóókaaa 22222222222\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
Nézd át ha kérdésed van szólj addig is csövi :smokin: