COMMAND:ban(playerid, params[]){// Setup local variablesnew PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[128], Name[24], AdminName[24];// Send the command to all admins so they can see itSendAdminText(playerid, \"/ban\", params);// Check if the player has logged inif (APlayerData[playerid][LoggedIn] == true){// Check if the player\'s admin-level is at least 3if (APlayerData[playerid][PlayerLevel] >= 3){ if (sscanf(params, \"uiis[128]\", PlayerToBan, Days, Hours, Reason)) SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/ban <név/ID> <Nap> <Óra> <Oka>\\\"\"); else { if (IsPlayerConnected(PlayerToBan)) { // Get the names of the player and the admin who executed the ban GetPlayerName(playerid, AdminName, sizeof(AdminName)); GetPlayerName(PlayerToBan, Name, sizeof(Name)); // Increase the number of bans APlayerData[PlayerToBan][bans]++; // Calculate the total bantime (when the player can login again) TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime(); // Check if this is the player\'s 5th ban if (APlayerData[PlayerToBan][bans] == 5) APlayerData[PlayerToBan][banTime] = 2147483640; // Make the ban permanent (as high as it can go) else APlayerData[PlayerToBan][banTime] = TotalBanTime; // Store this value for the player // Inform the player about his ban // Check if this is the player\'s 5th ban if (APlayerData[PlayerToBan][bans] == 5) { format(Msg, 128, \"Véglegesen bannolt %s, ez volt az 5. ban.\", AdminName); SendClientMessage(PlayerToBan, 0x808080FF, Msg); } else { format(Msg, 128, \"Bannolva lettél %s által %i napra és %i órára.\", AdminName, Days, Hours); SendClientMessage(PlayerToBan, 0x808080FF, Msg); format(Msg, 128, \"Oka: %s\", Reason); SendClientMessage(PlayerToBan, 0x808080FF, Msg); format(Msg, 128, \"Ez volt az %i ban, 5.-re örökre repülsz.\", APlayerData[PlayerToBan][bans]); SendClientMessage(PlayerToBan, 0x808080FF, Msg); } // Kick the player (his data will be saved) Kick(PlayerToBan); // Inform everybody else which player was banned and for how long format(Msg, 128, \"[%s] %s bannolta %s játékost %i napra és %i órára.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours); SendClientMessageToAll(0x808080FF, Msg); } }}else return 0;}else return 0;return 1;}
COMMAND:kick(playerid, params[]){new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];// Send the command to all admins so they can see itSendAdminText(playerid, \"/kick\", params);// Check if the player has logged inif (APlayerData[playerid][LoggedIn] == true){// Check if the player\'s admin-level is at least 1if (APlayerData[playerid][PlayerLevel] >= 1){ if (sscanf(params, \"us[128]\", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, \"Használat: \\\"/kick <név/ID> <Oka>\\\"\"); else if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he\'s connected) { // Get the name of the player who warned the player GetPlayerName(playerid, Name, sizeof(Name)); // Send the warned player a message who kicked him and why he\'s been kicked format(ReasonMsg, 128, \"Kickelve lettél [%s] %s által.\", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name); SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg); format(ReasonMsg, 128, \"Oka: %s\", Reason); SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg); // Kick the player Kick(PlayerToKick); } else SendClientMessage(playerid, 0xFF0000FF, \"Nincs ilyen játékos online.\");}else return 0;}else return 0;// Let the server know that this was a valid commandreturn 1;}
Important Note: 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]ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog.
Ahogyan a Wikiben is áll: a Kick() függvény elõtt semelyik másik, a player számára eljuttatandó dolog nem jut el a playerig, pl. a SendClientMessage üzenetét sem látja a játékos, ugyanis kirúgja õt a rendszer, mielõtt még meglátná az üzenetet. Important Note: 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.ZSOLTI99, nem 0.3z-tõl \"nem mükszik\", hanem a többi verziónál is így volt. Valamint nem \"nem mükszik\", hanem egyszerûen gyorsabban lesz kirúgva a játékos, minthogy ahhoz eljutni a SendClientMessage függvény által elküldött üzenet, vagy bármi más, számára alapesetben látszódó dolog. Tehát mûködni mûködik. Ahogyan az \"üzenet küldés\" is.A megoldás rá az, hogy egy timerrel késleleted a Kick() függvényt. Talán egy 100 ezredmásodpercre beállított, nem ismétlõdõ timer is elég hozzá, nem kell több idõt várni. Vagy ha igen, picit megemeled mondjuk 200-ra, de szerintem már 0,1 mp-s timerrel is jó lesz a dolog. [/quote]Én teszteltem az ilyen dolgot és 0.3e verzión mûködött rendesen
Important Note: 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.
Kick(PlayerToKick);
KickEx(PlayerToKick);
stock KickEx(playerid){ SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);}forward KickExTimer(playerid);public KickExTimer(playerid){ Kick(playerid);}
KickEx()
SetTimerEx(\"KickExTimer\", 100, false, \"i\", playerid);