Üdv mindenkinek!
Az a problémám van, hogy van két parancsom, amivel a következõ hibák léptek fel:
/warn: az a gond, hogy ha warnolok valakit, akkor azt nemirja ki a chatbe... de viszont a parancs mûködik, mert 3 warn után kickelte a szerver a
játékost, de aztsem irta...
/kick: ezzel meg az a problémám, hogy ha kickelem a játékost, akkor az a játékos, akit kickeltem nem látja az üzenetet, csak annyit hogy server closed the connection... Pedig kellene látnia, hogy pl ASD bannolta ádámot. indok.: asdasas
Íme a két parancs:
dcmd_warn(playerid,params[]) {
if(PlayerInfo[playerid][Level] >= 2) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, red, \"USAGE: /warn [playerid] [reason]\");
new warned = strval(tmp), str[2048];
if(PlayerInfo[warned][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel]) return SendClientMessage(playerid,red,\"HIBA: Ezt a parancsot te nem használhatod magasabb szintû admin ellen\");
if(IsPlayerConnected(warned) && warned != INVALID_PLAYER_ID) {
if(warned != playerid) {
CMDMessageToAdmins(playerid,\"WARN\");
PlayerInfo[warned][Warnings]++;
if( PlayerInfo[warned][Warnings] == MAX_WARNINGS) {
format(str, sizeof (str), \"{375FFF}**Admin {E60000}\\\"%s\\\" {375FFF}kirúgta {E60000}\\\"%s\\\"{375FFF}-t. [indok: {E60000}%s{375FFF}] (Figyelmeztetések: {E60000}%d/%d{375FFF})**\", pName(playerid), pName(warned), params[1+strlen(tmp)], PlayerInfo[warned][Warnings], MAX_WARNINGS);
SendClientMessageToAll(grey, str);
SaveToFile(\"KickLog\",str); Kick(warned);
return PlayerInfo[warned][Warnings] = 0;
} else {
format(str, sizeof (str), \"{375FFF}**Admin {E60000}\\\"%s\\\" {375FFF}figyelmeztette {E60000}\\\"%s\\\"{375FFF}-t. [indok: {E60000}%s{375FFF}] (Figyelmeztetések: {E60000}%d/%d{375FFF})**\", pName(playerid), pName(warned), params[1+strlen(tmp)], PlayerInfo[warned][Warnings], MAX_WARNINGS);
return SendClientMessageToAll(yellow, str);
}
} else return SendClientMessage(playerid, red, \"HIBA: Magadat nem figyelmeztheted\");
} else return SendClientMessage(playerid, red, \"HIBA: Játékos nincs csatlakozva\");
} else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 2-es szintû adminnak kéne lenned!\");
}
dcmd_kick(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 3) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"Használat: /kick [playerid] [indok]\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[2048];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
CMDMessageToAdmins(playerid,\"KICK\");
if(!strlen(tmp2)) {
format(string,sizeof(string),\"{375FFF}**Admin {E60000}%s {375FFF}kidobta ({E60000}KICK{375FFF}) {E60000}%s{375FFF}-t! [{E60000}Indok nélkül{375FFF}]**\",adminname,playername); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return Kick(player1);
} else {
format(string,sizeof(string),\"{375FFF}**Admin {E60000}%s {375FFF}kidobta ({E60000}KICK{375FFF}) {E60000}%s{375FFF}-t! [indok: {E60000}%s{375FFF}]**\",adminname,playername,params[2]); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return Kick(player1); }
} else return SendClientMessage(playerid, red, \"A játékos nincs csatlakozva, vagy magadat akartad, vagy magasabb szintû az admint!\");
} else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 3-as szintû adminnak kéne lenned!\");
} else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 3-as szintû adminnak kéne lenned!\");
}
Szia!
A kick:
A forwardjaid közé:
forward NewKick(playerid);
Publicokhoz(ez egy új callback):
public NewKick(playerid) { Kick(playerid); }
NKick(playerid) { SetTimerEx(\"NewKick\", 500, 0, \"d\", playerid); }
És ahol
Kick(playerid);
van, oda ezt írod:
NKick(playerid);
Értelem szerûen, a playerid változhat.
AnthonyGates
http://wiki.sa-mp.com/wiki/Kick
Itt le van írva, hogyan lehet \"javítani\" ezt a \"hibát\".
Illusztráltam egy WARN szöveget:
{375FFF}**Admin {E60000}\"Nem_Tudom_Mi_A_Neve\" {375FFF}figyelmeztette {E60000}\"Nem_Tudom_Mi_A_Neve\"{375FFF}-t. [indok: {E60000}ne legyen túl rövid :){375FFF}] (Figyelmeztetések: {E60000}3/3{375FFF})**
199 karakter...a chatben max 128 karakter jelenik meg ! szóval ez lehet az oka annak, hogy nem jelenik meg, túl hosszú a szöveg !
Itt egy script amiben teszteltem, az általad színezett szöveg nem jelenik meg, de az amibõl kivettem a színezést az igen.
#include
public OnFilterScriptInit()
{
SendClientMessage(0,0xFF6600FF,\"{375FFF}**Admin {E60000}\\\"Nem_Tudom_Mi_A_Neve\\\" {375FFF}figyelmeztette {E60000}\\\"Nem_Tudom_Mi_A_Neve\\\"{375FFF}-t. [indok: {E60000}ne legyen túl rövid :){375FFF}] (Figyelmeztetések: {E60000}3/3{375FFF})**\");
SendClientMessage(0,0xFF6600FF,\"**Admin \\\"Nem_Tudom_Mi_A_Neve\\\" figyelmeztette \\\"Nem_Tudom_Mi_A_Neve\\\"-t. [indok: ne legyen túl rövid :)] (Figyelmeztetések: 3/3)**\");
return 1;
}
http://wiki.sa-mp.com/wiki/SendClientMessage
const message[] The text that will be displayed (max 144 characters).
NOTE - 1 (success) will be returned even if the message is too long (> 144 characters) and fails to be sent
If a message is longer than 144 characters, it will not be sent. Truncation can be used to prevent this. Displaying a message on multiple lines will also solve this issue.
[/quote]
Egyéb dolgokat is találtam benne amiket nem így csinálnék a helyedben, de ez már csak rajtad múlik, hogy megfogadod e õket, csak gondoltam jelzem :) .
dcmd_warn(playerid,params[])
{
if(PlayerInfo[playerid][Level] >= 2)
{
// elég 128 cella, ennyi a parancs maximális hossza
new tmp[128], tmp2[128], Index;
tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, red, \"USAGE: /warn [playerid] [reason]\");
new warned = strval(tmp), str[144]; // str mérete nagyon nagy ! 2048 nem is fér ki egy sorba !
// Ha a figyelmeztett szintje Fõadmin ÉS a játékos szintje NEM Fõadmin // Szóval az üzenet nem éppen azt tükrözi mint amit a feltétel ellenõriz :)
// if(PlayerInfo[playerid][Level] < PlayerInfo[warned][Level]) // Ez lenne az üzenethez való feltétel :)
if(PlayerInfo[warned][Level] == ServerInfo[MaxAdminLevel] && PlayerInfo[playerid][Level] != ServerInfo[MaxAdminLevel]) return SendClientMessage(playerid,red,\"HIBA: Ezt a parancsot te nem használhatod magasabb szintû admin ellen\");
if(IsPlayerConnected(warned)) // Felesleges az INVALID_PLAYER_ID ellenõrzés az IsPlayerConnected után, soha nem jutna addig a feltétel ellenõrzés
{
if(warned != playerid)
{
CMDMessageToAdmins(playerid,\"WARN\");
PlayerInfo[warned][Warnings]++;
if(PlayerInfo[warned][Warnings] == MAX_WARNINGS)
{
format(str, sizeof (str), \"{375FFF}**Admin {E60000}\\\"%s\\\" {375FFF}kirúgta {E60000}\\\"%s\\\"{375FFF}-t. [indok: {E60000}%s{375FFF}] (Figyelmeztetések: {E60000}%d/%d{375FFF})**\", pName(playerid), pName(warned), params[1+strlen(tmp)], PlayerInfo[warned][Warnings], MAX_WARNINGS);
SendClientMessageToAll(grey, str);
SaveToFile(\"KickLog\",str); Kick(warned);
return PlayerInfo[warned][Warnings] = 0;
}
else
{
format(str, sizeof (str), \"{375FFF}**Admin {E60000}\\\"%s\\\" {375FFF}figyelmeztette {E60000}\\\"%s\\\"{375FFF}-t. [indok: {E60000}%s{375FFF}] (Figyelmeztetések: {E60000}%d/%d{375FFF})**\", pName(playerid), pName(warned), params[1+strlen(tmp)], PlayerInfo[warned][Warnings], MAX_WARNINGS);
return SendClientMessageToAll(yellow, str);
}
}
else return SendClientMessage(playerid, red, \"HIBA: Magadat nem figyelmeztheted\");
}
else return SendClientMessage(playerid, red, \"HIBA: Játékos nincs csatlakozva\");
}
else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 2-es szintû adminnak kéne lenned!\");
}
format
message
format
message
[/quote]
format(str, sizeof (str), \"{375FFF}**Admin {E60000}\\\"%s\\\" {375FFF}kirúgta {E60000}\\\"%s\\\"{375FFF}-t.**\", pName(playerid), pName(warned));
format(str, sizeof (str), \"**{375FFF}[indok: {E60000}%s{375FFF}] (Figyelmeztetések: {E60000}%d/%d{375FFF})**\", params[1+strlen(tmp)], PlayerInfo[warned][Warnings], MAX_WARNINGS);
SendClientMessageToAll(grey, str);
na vajon hol a hiba? :D
megvan :D
meg is oldottam
mostmár csak a kicket kell megcsináljam, úgy hogy nelegyen erroros
Dupla hozzászólás automatikusan összefûzve. ( 2013. október 27. - 12:53:41 )
kaptam két warn-t két sorra:
dcmd_kick(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 3) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"Használat: /kick [playerid] [indok]\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[2048];
player1 = strval(tmp);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
GetPlayerName(player1, playername, sizeof(playername)); GetPlayerName(playerid, adminname, sizeof(adminname));
CMDMessageToAdmins(playerid,\"KICK\");
if(!strlen(tmp2)) {
format(string,sizeof(string),\"{375FFF}**Admin {E60000}%s {375FFF}kidobta ({E60000}KICK{375FFF}) {E60000}%s{375FFF}-t! [{E60000}Indok nélkül{375FFF}]**\",adminname,playername); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return NKick(player1);
} else {
format(string,sizeof(string),\"{375FFF}**Admin {E60000}%s {375FFF}kidobta ({E60000}KICK{375FFF}) {E60000}%s{375FFF}-t! [indok: {E60000}%s{375FFF}]**\",adminname,playername,params[2]); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return NKick(player1); }
} else return SendClientMessage(playerid, red, \"A játékos nincs csatlakozva, vagy magadat akartad, vagy magasabb szintû az admint!\");
} else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 3-as szintû adminnak kéne lenned!\");
} else return SendClientMessage(playerid,red,\"HIBA: Ehez a parancshoz legalább 3-as szintû adminnak kéne lenned!\");
}
ezeket a warnokat kaptam:
D:\\Egyéb Fájlok\\SaMp Dolgaim\\Szerverek\\NewTDC Project\\filterscripts\\ladmin4v2.pwn(2869) : warning 209: function \"NKick\" should return a value
D:\\Egyéb Fájlok\\SaMp Dolgaim\\Szerverek\\NewTDC Project\\filterscripts\\ladmin4v2.pwn(2872) : warning 209: function \"NKick\" should return a value
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Warnings.