Szerző Téma: Kick és ban indok nem látszódik  (Megtekintve 555 alkalommal)

Kick és ban indok nem látszódik
« Dátum: 2015. November 20. - 18:09:44 »
0 Show voters
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 :)

Nem elérhető CMike

  • 332
  • FB.COM/sampdayrpg
    • Profil megtekintése
Kick és ban indok nem látszódik
« Válasz #1 Dátum: 2015. November 20. - 18:53:32 »
0 Show voters
Előbb írd ki az üzenetet utána pedig egy timer fusson le ami bannolja
Egy új project-en dolgozom!
server28.clans.hu:7793
FB.COM/UJSAMP

Kick és ban indok nem látszódik
« Válasz #2 Dátum: 2015. November 20. - 19:07:12 »
0 Show voters
A probléma az, hogy a timer-hez hülye vagyok o.O Egy random üzenetküldőhöz hozzá tudom rakni a time-rt, de ha egy ilyet kell csinálni soha nem működik.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Kick és ban indok nem látszódik
« Válasz #3 Dátum: 2015. November 20. - 19:37:49 »
0 Show voters
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);

Kick és ban indok nem látszódik
« Válasz #4 Dátum: 2015. November 20. - 19:46:30 »
0 Show voters
Ha csak szimplán beillesztem az a timer-t úgy is fog működni? csak mert azt a kickplayerids cuccot nem látom, hogy hol van :D Kicsit nehezen átlátható a Ladmin számomra :D

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Kick és ban indok nem látszódik
« Válasz #5 Dátum: 2015. November 20. - 20:06:47 »
0 Show voters
Idézetet írta: GoldTec date=1448045190\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58492\" data-ipsquote-contentclass=\"forums_Topic
Ha csak szimplán beillesztem az a timer-t úgy is fog működni?
 
Ja. Csak figyelj hogy player1-et írj meg mindig a megfelelő játékos id-t írd oda. a stockot meg simán bazd a mód/script aljára

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal