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!
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;
}
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...
}
Á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..! ;)