GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: [RC]Farkas - 2013. február 15. - 13:34:04

Cím: ZCMD DM KÉSZITÉSE
Írta: [RC]Farkas - 2013. február 15. - 13:34:04
ZCMD-vel, hogy kell Dm zonát késziteni ugy, hogy ne menyenek a parancsok benne én már probáltam igy:http://sampforum.hu/index.php?topic=23934.0 de nem jó. Aki tud segiteni az pls segitsen
Cím: ZCMD DM KÉSZITÉSE
Írta: BackUP - 2013. február 15. - 13:49:41
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!
Cím: ZCMD DM KÉSZITÉSE
Írta: ZyZu. - 2013. február 15. - 14:15:25
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.
Cím: ZCMD DM KÉSZITÉSE
Írta: BackUP - 2013. február 15. - 18:33:53
ugynezt írtam le, csak átláthatóbban.
Nem kell úgy összehúzni a sorokat, átláthtatlan. Van hely, nem kell félni.
Cím: ZCMD DM KÉSZITÉSE
Írta: ZyZu. - 2013. február 15. - 19:01:25
Tiedben van egy kis hiba is.. nézd majd végig.  ;)
Cím: ZCMD DM KÉSZITÉSE
Írta: [RC]Farkas - 2013. február 15. - 22:08:57
É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
Cím: ZCMD DM KÉSZITÉSE
Írta: Red-Eye - 2013. február 15. - 23:33:37
Csak megjegyzem ha olyat akarsz ami minden fs-be+gm-ben használható akkor ahhoz én azt javaslom tedd ki dini-vel vagy mással egy fájlba hogy dm-ben van e és onnan olvastasd be DE így is minden parancshoz  oda kell majd írnoda megfelelõ if-el stb. , mivel a ZCMD-s parancsok önállóak ha nem használsz zcmd-t hanem alap OnPlayerCommandText-et akkor igen egyszerûbb felül rövidre zárni az egészet ha dm-ben van.
Cím: ZCMD DM KÉSZITÉSE
Írta: [RC]Farkas - 2013. február 16. - 15:51:46
De sehogyse lehet megoldani zcmd vel ezt
Cím: ZCMD DM KÉSZITÉSE
Írta: Red-Eye - 2013. február 16. - 16:22:25
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:
Cím: ZCMD DM KÉSZITÉSE
Írta: [RC]Farkas - 2013. február 17. - 10:41:20
Ok THX értem
Mindenkinek met a +