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: ninjo98 - 2013. december 14. - 17:42:28

Cím: Jail
Írta: ninjo98 - 2013. december 14. - 17:42:28
Üdv!
Itt van ez a /jail parancs most töltöttem le, hogy építhetem bele azt ha egy admin berak valakit a börtönbe tiltsa le a parancsot számára és írja ki, hogy nem használhatsz parancsot a börtönben.. És az unjailba pedig oldja neki ezt a parancs letiltást
Jail:
 
CMD:jail(playerid, params[])
{
new giveplayerid, time,reason[128];
new name[MAX_PLAYER_NAME], giveplayername[MAX_PLAYER_NAME];
if(!sscanf(params,\"dds\",giveplayerid,time,reason))
{
    if(AccInfo[playerid][Admin] >= 2)
    {
        if(IsPlayerConnected(giveplayerid))
        {
           if(AccInfo[giveplayerid][Jailed] == 0)
           {
               SetPlayerInterior(giveplayerid, 0);
               AccInfo[giveplayerid][JailTime] = time*1000*60;
               JailTimer[giveplayerid] = SetTimerEx(\"UnJail\",AccInfo[giveplayerid][JailTime],0,\"d\",giveplayerid);
               SetPlayerPos(giveplayerid,1690.80004883,-1950.59997559,9.80000019);
               AccInfo[giveplayerid][Jailed] = 1;
         GetPlayerName(playerid,name,sizeof(name));
         GetPlayerName(giveplayerid,giveplayername,sizeof(giveplayername));
         format(reason,sizeof(reason),\"%s börtönbe zárta %s -t, %d percre. Indok: %s\",name,giveplayername,time,reason);
         SendClientMessageToAll(COLOR_PURPLE, reason);
      }
      else
      {
         SendClientMessage(playerid, COLOR_RED,\"Ez a játékos már börtönben van!\");
      }
   }
   else
   {
       SendClientMessage(playerid, COLOR_RED,\"Hiba: Rossz ID\");
   }
}
else
{
   SendClientMessage(playerid, COLOR_RED,\"Nem vagy elég magas szintû adminsztrátor!\");
}
}
else
{
    SendClientMessage(playerid, COLOR_RED,\"Használat: /jail [Playerid] [Perc] [indok]\");
}
return 1;
}

 
Unjail:
 
CMD:unjail(playerid, params[])
{
new giveplayerid, giveplayername[MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME];
if(!sscanf(params,\"i\",giveplayerid))
{
    if(AccInfo[playerid][Admin] >= 2)
    {
        if(IsPlayerConnected(giveplayerid))
        {
            if(AccInfo[giveplayerid][Jailed] == 1)
            {
                new string[128];
                UnJail(giveplayerid);
                GetPlayerName(giveplayerid,giveplayername,sizeof(giveplayername));
                GetPlayerName(playerid,name,sizeof(name));
                format(string,sizeof(string),\"%s Kiengedte a Börtönbõl %s-t\",name,giveplayername);
                SendClientMessageToAll(COLOR_PURPLE, string);
      }
      else
      {
         SendClientMessage(playerid, COLOR_RED,\"Hiba: A játékos nincs börtönben.\");
      }
   }
   else
   {
       SendClientMessage(playerid, COLOR_RED,\"Hiba: Rossz ID\");
   }
}
else
{
    SendClientMessage(playerid, COLOR_RED,\"Nem vagy elég magas szintû adminisztrátor!\");
}
}
else
{
    SendClientMessage(playerid, COLOR_RED,\"Használat: /unjail [Playerid]\");
}
return 1;
}

 

public UnJail(giveplayerid)
{
AccInfo[giveplayerid][Jailed] = 0;
KillTimer(JailTimer[giveplayerid]);
SpawnPlayer(giveplayerid);
SendClientMessage(giveplayerid, COLOR_RED,\"Kiengedtek!\");
return 1;
}
Cím: Jail
Írta: Dfoglalo - 2013. december 14. - 17:54:39
Rcon adminnál:
 
if(IsPlayerAdmin(playerid))

 
Saját adminrendszernél:
 
if(/* Változó */ >= /* Ahányas adminszinttõl */
Cím: Jail
Írta: ninjo98 - 2013. december 14. - 17:57:00
Lehet nem írtam le jól  :Cry2: Akit az admin berak a börtönbe ne tudjon parancsot használni..
És ha kiengedik tudjon :)
Cím: Jail
Írta: Dfoglalo - 2013. december 14. - 18:16:10
Ja bocs :D Létrehozol egy logikai változót minden játékosnak, pl. a bortonbenvane[playerid]-t. Ennek adj false értéket alapból. Ám amikor börtönbe kerül, akkor állítsd át truera, ha meg kikerül, ismét falsera. De ezt lehet sima változóval is, számokkal, ez most mindegy. Ha true az érték, tehát a játékos börtönben van, akkor tiltod neki a parancsok használatát. ZCMD-vel nem foglalkozom, mert szerintem nem valami hasznos, max kezdõknek, sok hátránya is van. Éppen ezért nem tudom, hogy itt egyszerre hogy tudod az összes parancsnál letiltani a használatot, de az úgy megoldható, hogy minden parancshoz odaírod, higy csak igaz érték esetén teljesüljenek a dolgok.
Cím: Jail
Írta: ninjo98 - 2013. december 14. - 18:21:14
Elméletbe megy csak hasonlót még nem készítettem, és nem is találtam  :(
Egy mintát tudnál linkelni vagy csinálni
Cím: Jail
Írta: Dfoglalo - 2013. december 14. - 18:39:07
Basszus alapszintû programozás... Egy darab értékadás, és elágazás az egész... Tabon vagyok, itt rossz forráskódot írni, de valamit kihozok neked.. A parancsba:
 
if(valtozo == 1)
{
   print(\"Jailban vagy, nem tudsz parancsokat használni!\");
}
else
{
   // Ide azt, amit csináljon a parancs.
}

 
Ezt oda írd, ahol berakod a börtönbe a játékost:
 
valtozo = 1;

 
Ezt meg oda, ahol kijön a jailból:
 
valtozo = 0;
Cím: Jail
Írta: ninjo98 - 2013. december 14. - 18:44:38
Basszus még mindig nem értem  :facepalm:
Bele építené valaki nekem ?
Cím: Jail
Írta: Dfoglalo - 2013. december 14. - 18:49:53
Ennél jobban nem tudom elmagyarázni :confused: Majd más beleépíti neked, az, aki PC-n van, de én most biztosan nem.
Azonban valaki megcsinálja helyetted, és kész, de ettõl még nem fogod tudni, hogy is van ez, csak úgy ott lesz. Úgy pedig ne programozz, hogy nem is tudod, mit csinálsz!
Cím: Jail
Írta: ninjo98 - 2013. december 14. - 19:44:22
Találtam egy ilyet és jó :)
 
public OnPlayerCommandReceived(playerid, cmdtext[])
{
   if(Börtön[playerid][Jailed] == 1)
{
       SendClientMessage(playerid, 0xFF0000AA, \"Börtönbe nincs parancs használat!\");
return 0;
}
return 1;
}