Skocz do zawartości
CrachCraiten

Komenda Kick

Rekomendowane odpowiedzi

Cześć, mam problem z komendą kick, wpisując ją wyskakuje cały czas aby wpisać ID i Powód. O to kod:

Cytuj

CMD:kick(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
    {
        SendClientMessage(playerid, CZERWONY, "••Nie jesteś administratorem.••");
        return 1;
    }

    new PlayerId, Reason[255];
    if(sscanf(params, "us[255]", PlayerId, Reason))
    {
        SendClientMessage(playerid, CZERWONY, "••Wpisz: /kick [id gracza] [powód]••");
        return 1;
    }

    if(PlayerId == INVALID_PLAYER_ID)
    {
        SendClientMessage(playerid, CZERWONY, "••Nie ma gracza o podanym ID!••");
        return 1;
    }
    if(IsPlayerAdmin(playerid))
    Kick(playerid);

    return 1;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 godziny temu, DaGaXeR napisał:

I na prawdę nawet warning Ci nie wyskoczył o tym, że masz playerid i PlayerId? :o

Dlaczego miałby wyskoczyć? Jedyne co tam źle jest, to to, że kicknie gracza który wpisał komendę, a nie gracza którego wybrał kickujący.

+ ten warunek na końcu czy jest adminem, też nie wiem po co. :E

Edytowane przez Nortal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

CMD:kick(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
        new id;
        new powod[128];
        if(sscanf(params, "us", id, powod)){SendClientMessage(playerid, COLOR_WHITE, "/kick <id> <powod<");return 1;}
        else if(id == INVALID_PLAYER_ID){SendClientMessage(playerid, COLOR_RED, "Podany gracz nie istnieje!");return 1;}
        else
        {
            SendClientMessage(id, COLOR_RED, "Zostales/as zkickowany/a!");
            Kick(id);
            SendClientMessage(playerid, COLOR_RED,"Gracz zotal zkickowany!");
            return 1;
        }
    }
    return 1;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najlepiej jest dać gotowca z błędem. 

 

Co do tematu, to tak jak pisał Dejv - aktualizacja sscanfa.

Edytowane przez Nortal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie aktualizuj sscanfa to raczej nic nie da, to jest niedopracowane (to w czym jest błąd, a błąd jest w tym 'u')

if(sscanf(params, "us", id, powod)){SendClientMessage(playerid, COLOR_WHITE, "/kick <id> <powod<");return 1;}

zmień 'u' na 'i' lun 'd' no i 's' spowrotem na 's[255]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
23 godzin temu, Dejv napisał:

zaktualizuj sscanfa....

8 godzin temu, NikeKST napisał:

Nie aktualizuj sscanfa to raczej nic nie da, to jest niedopracowane (to w czym jest błąd, a błąd jest w tym 'u')

if(sscanf(params, "us", id, powod)){SendClientMessage(playerid, COLOR_WHITE, "/kick <id> <powod<");return 1;}

zmień 'u' na 'i' lun 'd' no i 's' spowrotem na 's[255]

Obaj możecie mieć rację, ale drugi tylko w drugiej części swojej wypowiedzi.

Cytuj

sscanf 2.8.2 - 18/04/2015
- Fixed a bug where "u" wasn't working correctly after a server restart.

[źródło]

A co do kodu...

    if(PlayerId == INVALID_PLAYER_ID)
    {
        SendClientMessage(playerid, CZERWONY, "••Nie ma gracza o podanym ID!••");
        return 1;
    }

Lepiej przemyśl (do skutku) powyższą instrukcję ;) [podpowiedź]

Edytowane przez PrzMas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×