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: lionorgames - 2013. november 04. - 16:27:03

Cím: Csak admin tudja használni a teleportot.
Írta: lionorgames - 2013. november 04. - 16:27:03
Sziasztok!
Szeretnék segítséget kérni még pedig készítettem egy teleport scriptet és szeretném, hogy csak admin tudja használni tudnátok segíteni?
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/t347\", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid,0xFF000000,\"Teleportok:\");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,\"Teleportok:\",\"/vmi\",\"Választ\", \"\");//Dialog ID: 1
return 1;
}
return 0;
}

 
Lényeg az lenne hogy ezt át írni admin parancsba, hogy csak admin tudja használni
Elõre is köszönöm!
Cím: Csak admin tudja használni a teleportot.
Írta: Flash - 2013. november 04. - 16:40:09
public OnPlayerCommandText(playerid, cmdtext[])
{
       if (strcmp(\"/t347\", cmdtext, true, 10) == 0)
       {
               if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, \"nem vagy admin!\");
               SendClientMessage(playerid,0xFF000000,\"Teleportok:\");
               ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,\"Teleportok:\",\"/vmi\",\"Választ\", \"\");//Dialog ID: 1
               return 1;
}
       return 0;
}
Cím: Csak admin tudja használni a teleportot.
Írta: lionorgames - 2013. november 04. - 17:06:24
Rendben és úgy meglehetne csinálni hogy ne csak rcon admin tudjon hanem 1lvl-tõl fölfele?
Cím: Csak admin tudja használni a teleportot.
Írta: Clarence_Callahan - 2013. november 04. - 17:29:01
Ahoz már külön adminrendszer kell
Cím: Csak admin tudja használni a teleportot.
Írta: JBauer - 2013. november 04. - 18:04:33
Rossz helyre nyitottad, átraktam ide.
Cím: Csak admin tudja használni a teleportot.
Írta: AdamHawer - 2013. november 04. - 18:12:38
    public OnPlayerCommandText(playerid, cmdtext[])
   {
           if (strcmp(\"/t347\", cmdtext, true, 10) == 0)
           {
                   JatekosInfo[playerid][AdminSzint] >= 1) return SendClientMessage(playerid, HIBA, \"* Ezt a parancsot 1-es vagy annál nagyobb szintû adminisztrátor használhatja.\");
                   SendClientMessage(playerid,0xFF000000,\"Teleportok:\");
                   ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,\"Teleportok:\",\"/vmi\",\"Választ\", \"\");//Dialog ID: 1
                   return 1;
    }
           return 0;
   }

 
De amúgy is rosszul csináltad, mivel a csetre írja a Teleportokat, de Dialógust nyit neki, amibe felesleges a / jel.
Így kezd el:
Szín:
 
#define COLOR_HIBA 0xFF0000FF // Piros
#define COLOR_SIKERES_TELEPORT 0x00FF00FF // Zöld

 
A parancs:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
           if (strcmp(\"/teleport\", cmdtext, true, 10) == 0)
    {
                   JatekosInfo[playerid][AdminSzint] >= 1) return SendClientMessage(playerid, COLOR_HIBA, \"* Ezt a parancsot 1-es vagy nagyobb admin használhatja.\");
                   ShowPlayerDialog(playerid,1, DIALOG_STYLE_LIST,\"Választható teleportok:\",\"Teleport 1.\\nTeleport 2.\\nTeleport 3.\",\"Kiválaszt\", \"Mégsem\");
                   return 1;
    }
    return 0;
}

 
A dialógus:
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(response) // Azaz van \"Mégsem\".
       switch(listitem) // Választható értékek.
       {
            case 0: // Teleport 1.
            {
   SetPlayerPos(playerid, x, y, z); // Adj meg adatot.
   SendClientMessage(playerid, COLOR_SIKERES_TELEPORT, \"* Sikeresen teleportáltál. Hely: Teleport 1.\");
            }
            case 1: // Teleport 2.
            {
   SetPlayerPos(playerid, x, y, z); // Adj meg adatot.
   SendClientMessage(playerid, COLOR_SIKERES_TELEPORT, \"* Sikeresen teleportáltál. Hely: Teleport 2.\");
            }
           case 2: // Teleport 3.
            {
   SetPlayerPos(playerid, x, y, z); // Adj meg adatot.
   SendClientMessage(playerid, COLOR_SIKERES_TELEPORT, \"* Sikeresen teleportáltál. Hely: Teleport 3.\");
     }
          }
}
return 1; // És így tovább...
}
Cím: Csak admin tudja használni a teleportot.
Írta: Flash - 2013. november 05. - 13:16:59
Ádám nem kell túlbonyolítani.
Annyi az egész hogy mindenhol máshogy kérdezik le az admin szintet. Mivel én nem tudom milyen adminrendszert használsz (gondolom változósat) ezért leírok neked egy példát.
Na szóval, ha így kérdezed le az adminszintet, hogy: playerdata[playerid][Adminszint] akkor így fog kinézni a kódod:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
       if (strcmp(\"/t347\", cmdtext, true, 10) == 0)
       {
               if(playerdata[playerid][Adminszint] < 1) return SendClientMessage(playerid, -1, \"Ehhez a parancshoz minimum 1 es adminszint szükséges.\");
               SendClientMessage(playerid,0xFF000000,\"Teleportok:\");
               ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,\"Teleportok:\",\"/vmi\",\"Választ\", \"\");//Dialog ID: 1
               return 1;
}
       return 0;
}

 
Ha viszont azt szeretnéd, hogy 2-es adminszinttõl lehessen használni a /t347 parancsot, akkor a playerdata[playerid][Adminszint] < 1 helyett playerdata[playerid][Adminszint] < 2 -t írsz és így tovább..!  ;)
Cím: Csak admin tudja használni a teleportot.
Írta: AdamHawer - 2013. november 05. - 17:38:09
Kedves Flash,
Lényegében ugyan azt a kódot írtad le mint én, csak épp a return üzenet és a \"playerdata\" lett más.
Igen ehhez kell enum...