Sziasztok! A problémám az lenne, hogy ladmin4-et használok és ha valaki kick-elésre vagy banolásra kerül, akkor csak a szerveren lévő többi ember látja az akit banoltam vagy kickeltem, csak annyit lát, hogy server closed the connection. Hogy lehetne ezt megoldani?
A kick parancs
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] [reason]\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
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),\"%s -t kidobta %s [indok nélkül] \",playername,adminname); SendClientMessageToAll(grey,string);
SaveToFile(\"KickLog\",string); print(string); return iKick(player1);
} else {
SaveToFile(\"KickLog\",string); print(string); return Kick(player1); }
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
A ban parancs
dcmd_ban(playerid,params[]) {
if(PlayerInfo[playerid][LoggedIn] == 1) {
if(PlayerInfo[playerid][Level] >= 4) {
new tmp[256], tmp2[256], Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
if(!strlen(params)) return SendClientMessage(playerid, red, \"HASZNÁLAT: /ban [playerid] [indok]\");
if(!strlen(tmp2)) return SendClientMessage(playerid, red, \"HIBA: Ki hagytad az indokot\");
new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
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));
new year,month,day,hour,minuite,second; getdate(year, month, day); gettime(hour,minuite,second);
CMDMessageToAdmins(playerid,\"BAN\");
format(string,sizeof(string),\"%s -t kidobta (BANN) %s [indok: %s] [Dátum: %d/%d/%d] [idő: %d:%d]\",playername,adminname,params[2],day,month,year,hour,minuite);
SendClientMessageToAll(grey,string);
SaveToFile(\"BanLog\",string);
print(string);
if(udb_Exists(PlayerName2(player1)) && PlayerInfo[player1][LoggedIn] == 1) dUserSetINT(PlayerName2(player1)).(\"banned\",1);
format(string,sizeof(string),\"BANN-olta: %s. Indok: %s\", adminname, params[2] );
SendClientMessage(player1,0xff0000AA, string); return iBan(player1);
} else return SendClientMessage(playerid, red, \"Játékos nincs csatlakozva vagy magadat akartad, vagy egy nagyobb szintű admint akartál\");
} else return SendClientMessage(playerid,red,\"HIBA: Te nem vagy egy elég magas szint hogy használd ezt a parancsot\");
} else return SendClientMessage(playerid,red,\"HIBA: You must be logged in to use this commands\");
}
A válaszokat előre is köszi :)
As of SA-MP 0.3x, any action taken directly before Kick() (such as sending a message with SendClientMessage) will not reach the player. A timer must be used to delay the kick.[/quote]
Magyarul ha kick előtt vagy után írsz a kcikelt játékosnak üzenetet azt nem látja. Ezt timerrel lehet orvosolni amit a wiki is említ:
// In order to display a message (eg. reason) for the player before the connection is closed
// you have to use a timer to create a delay. This delay only needs to be a few milliseconds long,
// but this example uses a full second just to be on the safe side.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/kickme\", true) == 0)
{
// Kick the player who executed this command.
// First, send them a message.
SendClientMessage(playerid, 0xFF0000FF, \"You have been kicked!\");
// Actually kick them a second later on a timer.
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", playerid);
return 1;
}
return 0;
}
forward DelayedKick(playerid);
public DelayedKick(playerid)
{
Kick(playerid);
return 1;
}
Használata tehát: SetTimerEx(\"DelayedKick\", 1000, false, \"i\", playerid);
Magyarul a két parancsba ezt írd az üzenet alá:
SetTimerEx(\"DelayedKick\", 1000, false, \"i\", player1);