Sziasztok.
Készítettem egy adminszolgálat scriptet. RCON adminisztrátor használhatja.
Parancs(ok):
-/duty - Ezzel állsz szolgálatba.
Ha ki szeretnél lépni a szolgálatból, akkor írd be: /duty 0
A /duty parancs után 6 számot lehet beírni. < 0-5 > Mindegyik szám, külön szín. Például /duty 1 - Akkor citromsárgával a fejed fölé írja, hogy Admin szolgálatban.
http://dreamssite.atw.hu/SAMP/asz.pwn
/*
Adminszolgálat színek:
- 0. Kikapcsolva
- 1. Citromsárga
- 2. Piros
- 3. Kék
- 4. Zöld
- 5. Fehér
*/
#include < a_samp >
#include < zcmd >
#include < sscanf >
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_RED 0xFF0000AA
#define COLOR_BLUE 0x0037ffAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_WHITE 0xFFFFFFAA
#undef MAX_PLAYERS
#define MAX_PLAYERS 30 // Szerver férõhelye
new asz[MAX_PLAYERS];
new str[64];
CMD:duty(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
new szin;
if(sscanf(params,\"d\",szin)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /duty < 0-5 >\");
if(szin == 0 || szin == 1 || szin == 2 || szin == 3 || szin == 4 || szin == 5)
{
if(szin == 0)
{
asz[playerid] = 0;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat kikapcsolva.\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s kilépett az adminszolgálatból.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
else if(szin == 1)
{
asz[playerid] = 1;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. ( Citromsárga )\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s adminszolgálatba lépett.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
else if(szin == 2)
{
asz[playerid] = 2;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. ( Piros )\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s adminszolgálatba lépett.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
else if(szin == 3)
{
asz[playerid] = 3;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. ( Kék )\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s adminszolgálatba lépett.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
else if(szin == 4)
{
asz[playerid] = 4;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. ( Zöld )\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s adminszolgálatba lépett.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
else if(szin == 5)
{
asz[playerid] = 5;
SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. ( Fehér )\");
GetPlayerName(playerid, str,sizeof(str));
format(str,128,\"%s adminszolgálatba lépett.\",str);
SendClientMessageToAll(COLOR_RED,str);
}
} else { SendClientMessage(playerid, COLOR_RED, \"A színek 0 és 5 között lehetnek.\"); }
} else { SendClientMessage(playerid, COLOR_RED, \"Nem vagy adminisztrátor.\"); }
return 1;
}
public OnPlayerConnect(playerid)
{
asz[playerid] = 0;
return 1;
}
public OnPlayerUpdate(playerid)
{
if(asz[playerid] == 1)
{
SetPlayerChatBubble(playerid, \"Admin szolgálatban\",COLOR_YELLOW,40.0,1000);
}
else if(asz[playerid] == 2)
{
SetPlayerChatBubble(playerid, \"Admin szolgálatban\",COLOR_RED,40.0,1000);
}
else if(asz[playerid] == 3)
{
SetPlayerChatBubble(playerid, \"Admin szolgálatban\",COLOR_BLUE,40.0,1000);
}
else if(asz[playerid] == 4)
{
SetPlayerChatBubble(playerid, \"Admin szolgálatban\",COLOR_GREEN,40.0,1000);
}
else if(asz[playerid] == 5)
{
SetPlayerChatBubble(playerid, \"Admin szolgálatban\",COLOR_WHITE,40.0,1000);
}
return 1;
}
public OnFilterScriptInit()
{
print(\"Bence adminszolgálat script betöltve.\");
return 0;
}
Hello!
Azt vettem észre, hogy sok helyen bugos, ill. laggot okoz az OnPlayerUpdate miatt. Íme egy egyszerûbb megoldás, laggmentes, és remélhetõleg nem bugos.
/*
Adminszolgálat színek:
- 0. Kikapcsolva
- 1. Citromsárga
- 2. Piros
- 3. Kék
- 4. Zöld
- 5. Fehér
*/
#include < a_samp >
#include < zcmd >
#include < sscanf2 >
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_RED 0xFF0000AA
#define COLOR_BLUE 0x0037ffAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_WHITE 0xFFFFFFAA
#undef MAX_PLAYERS
#define MAX_PLAYERS 30 // Szerver férõhelye
new asz[MAX_PLAYERS];
new Text3D:at[MAX_PLAYERS];
stock ASZ(playerid,ertek)
{
new str[30],str2[128];
asz[playerid] = ertek;
if(ertek == 0) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat kikapcsolva.\") , Delete3DTextLabel(at[playerid]);
if(ertek == 1) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. (Citromsárga)\"), Update3DTextLabelText(at[playerid],COLOR_YELLOW,\"Admin szolgálatban\");
if(ertek == 2) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. (Piros)\"), Update3DTextLabelText(at[playerid],COLOR_RED,\"Admin szolgálatban\");
if(ertek == 3) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. (Kék)\") , Update3DTextLabelText(at[playerid],COLOR_BLUE,\"Admin szolgálatban\");
if(ertek == 4) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. (Zöld)\") , Update3DTextLabelText(at[playerid],COLOR_GREEN,\"Admin szolgálatban\");
if(ertek == 5) return SendClientMessage(playerid, COLOR_WHITE, \"Adminszolgálat bekapcsolva. (Fehér)\"), Update3DTextLabelText(at[playerid],COLOR_WHITE,\"Admin szolgálatban\");
GetPlayerName(playerid, str,30);
if(ertek != 0) return format(str2,128,\"%s adminszolgálatba lépett.\",str), SendClientMessageToAll(COLOR_RED,str2);
if(ertek == 0) return format(str2,128,\"%s kilépett az adminszolgálatból.\",str),SendClientMessageToAll(COLOR_RED,str2) ;
Attach3DTextLabelToPlayer(at[playerid], playerid, 0.0, 0.0, 0.5);
return 1;
}
CMD:duty(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, \"Nem vagy admin...\");
new szin;
if(sscanf(params,\"d\",szin)) return SendClientMessage(playerid, COLOR_RED, \"Használat: /duty < 0-5 >\");
if(szin <= 1|| szin >= 6) return SendClientMessage(playerid, COLOR_WHITE,\"Minimum: 0 - Max: 5.\");
if(szin == 0) return ASZ(playerid,0);
if(asz[playerid] == 0)
{
if(szin == 1) return ASZ(playerid,1);
if(szin == 2) return ASZ(playerid,2);
if(szin == 3) return ASZ(playerid,3);
if(szin == 4) return ASZ(playerid,4);
if(szin == 5) return ASZ(playerid,5);
}
else return SendClientMessage(playerid, COLOR_RED,\"Már szolgálatban vagy...\");
return 1;
}
public OnPlayerConnect(playerid)
{
asz[playerid] = 0;
at[playerid] = Create3DTextLabel(\"-\", 0xFF0000FF, 0.0, 0.0, 0.0, 20, 0, 1);
return 1;
}
public OnPlayerDisconnect(playerid)
{
Delete3DTextLabel(at[playerid]);
return 1;
}
public OnFilterScriptInit()
{
print(\"Bence adminszolgálat script betöltve.\");
return 0;
}