-
Sziasztok! Egy saját admin rendszeren dolgozom már több mint 1 hónapja. Eddig minden gördülékenyen ment és ha nem is tudtam megoldani valamit, azt a következő egy-két napon már sikerült. Viszont most 1 hete próbálok egy elérhető adminok lekérdezésére szolgáló parancsot készíteni. Nem tudtam, hogy hogyan kezdjek neki, így kerestem itt is, valamint hivatalos fórumon is. Találtam is egyet a hiv. fórumon, viszont rengeteg hiba volt benne. Nagy részét már kijavítottam, de van még rajta mit változtatni. Íme a kód:
if(strcmp(cmdtext, \"/admins\", true) == 0)
{
new strtext[1000], string[64];
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][aLevel] == 1)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, \"*[Kezdő Admin] %s (%d)\", sendername, playerid);
SendClientMessage(playerid, 0x99CCCCAA, string);
}
if(PlayerInfo[playerid][aLevel] == 2)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, \"*[Haladó Admin] %s (%d)\", sendername, playerid);
SendClientMessage(playerid, 0x99FFCCAA, string);
}
if(PlayerInfo[playerid][aLevel] == 3)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, \"*[Profi Admin] %s (%d)\", sendername, playerid);
SendClientMessage(playerid, 0x99FFCCAA, string);
}
if(PlayerInfo[playerid][aLevel] == 4)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, \"*[FőAdmin] %s (%d)\", sendername, playerid);
SendClientMessage(playerid, 0x008D04FF, string);
}
if(PlayerInfo[playerid][aLevel] == 5)
{
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 128, \"*[FőAdmin/Tulajdonos] %s (%d)\", sendername, playerid);
SendClientMessage(playerid, 0x006CA2FF, string);
}
strcat(string, \"\\n\");
strcat(strtext, string);
}
}
ShowPlayerDialog(playerid, DIALOG_STYLE_MSGBOX, \"{FFA500}Elérhető Adminok\", strtext, \"Ok\", \"\");
}
return 1;
Az elcsúszásokért elnézést kérek. Ez az egész parancs OnPlayerCommandText alatt van, még mielőtt bárki is kritizálna. :D Előre is köszönöm a segítséget!
-
jó az ötlet, hogy admin rendszert írsz, nekem is az elsők között volt.. :D
de rosszul állsz neki, hogy sima parancsfeldolgozót használsz.. sokkal jobb és egyszerűbb a ZCMD, szerintem azt tanuld meg..
if(strcmp(cmdtext, \"/admins\", true) == 0)
{
new strtext[1000],
string[64],
ranks[][] = { \"Kezdő admin\", \"Haladó admin\", \"Profi admin\", \"Főadmin\", \"Főadni/tulajdonos\"};
for(new i = 0; i < MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[aLevel] > 0) {
GetPlayerName(i, sendername, sizeof(sendername));
format(string, sizeof(string), \"*[%s]* %s %d\\n\", ranks[PlayerInfo[aLevel]], sendername, i);
strcat(strtext, string);
}
}
ShowPlayerDialog(playerid, ASDERT, DIALOG_STYLE_MSGBOX, \"{FFA500}Elérhető Adminok\", strtext, \"Ok\", \"\");
return 1;
}
ASDERT helyett írj be egy dialogid-t amit még nem használtál, mert kihagytad :D
-
ha nem tudod használni a zcmd-t
akkor itt a sampforumé
sampforum.hu/index.php?page=zcmd
-
Félre értetek. Én ZCMD -t használok, csak ezt így találtam hivatalos fórumon. :D
Edit: Mellesleg köszönöm a segítséget! Kaptok plusszt! :P 10-15 perc múlva lezárom a témát, csak még látom, hogy 1-2 ember nézi, és hátha hozzá akar szólni...
Edit 2: Beraktam az fs-be, viszont ha felmegyek, akkor nem működik... :/ Átírtam ZCMD-be is, és úgy sem lett jó... :-[
-
Hali!
Próbáld ki ezt:
CMD:admins(playerid)
{
new count = 0;
new string[1024];
new AdmRank[32];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
if(PlayerInfo[aLevel] > 0)
{
switch(PlayerInfo[aLevel])
{
case 1: { AdmRank = \"Kezdő admin\"; }
case 2: { AdmRank = \"Haladó admin\"; }
case 3: { AdmRank = \"Profi admin\"; }
case 4: { AdmRank = \"Főadmin\"; }
case 5: { AdmRank = \"Főadmin/Tulajdonos\"; }
}
format(string, 1024, \"%s%s | Szint: %d ..:: [Rang: %s] ::.. \\n\",string,pName(i),PlayerInfo[aLevel],AdmRank);
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, \"Adminok:\" ,string, \"Close\", \"\");
count++;
}
}
if (count == 0)
SendClientMessage(playerid,0xFF0000AA,\"Szerver: {ffffff}Nem találtam admint! {00D8FF}:(\");
}
return 1;
}
stock pName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
-
Tessék:
#include <a_samp>
#include <zcmd>
#define DIALOG_ADMINS 1234
new string[1024], line[256];
CMD:admins(playerid) {
line[0]=EOS;
for(new i; i < MAX_PLAYERS; i++) {
if(PlayerInfo[aLevel] > 0) {
format(line, sizeof(line), \"{%06x}%s(%i) - Rang: %s\\n\", GetPlayerColor(i) >>> 8, Name(i), i, GetAdminRang(i));
strcat(string, line);
}
}
ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_MSGBOX, \"Online Adminisztrátorok\", string, \"[X]\", \"\");
return 1;
}
stock GetAdminRang(playerid) {
new rang[64];
switch(PlayerInfo[aLevel]) {
case 1: rang = \"Próbaidős\";
case 2: rang = \"Moderátor\";
case 3: rang = \"Adminisztrátor\";
case 4: rang = \"Fő Adminisztrátor\";
case 5: rang = \"Tulajdonos\";
}
return rang;
}
Name(p) { new n[24]; GetPlayerName(p, n, 24); return n; }
Ezt egy volt szerveremből alakítottam át neked.
-
Köszönöm szépen a segítséget! Végül a Sh1ft féle parancsot raktam be. :D