/kick und /ban

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Halle,
    Ich möchte dass man in meinem DM Server NUR Als RCon Kicken/Bannen kann.. Falls niemand Online ist kann man /votekick machen.


    Also, wie geht das, kann mir bitte jemand die Befehle geben? Also so dass man nur als Rcon kicken/Bannen darf :)


    /kick [ID] [GRUND]
    /ban [ID] [GRUND]

  • if(strcmp(cmdtext,"/kick",true,5)==0)
    {
    if(cmdtext[5]!=' ') return 1;
    new string[128];
    new find=strfind(cmdtext," ",false,6);
    strmid(string,cmdtext,6,find);
    if(!IsNumeric(string)) return SendClientMessage(playerid,-1,"Fehler!");
    if(cmdtext[find+1]==EOS) return SendClientMessage(playerid,-1,"Fehler!");
    new pID=strval(string);
    format(string,sizeof(string),"Du wurdest gekickt, Grund: %s",cmdtext[find]);
    SendClientMessage(pID,-1,string);
    SetTimerEx("KickPlayer",100,false,"i",pID);
    return 1;
    }


    forward KickPlayer(playerid);
    public KickPlayer(playerid)
    {
    Kick(playerid);
    }


    Mal recht einfach gemacht, ein /kick Befehl,
    falls du Fragen hast oder etwas nicht verstehst,
    frag einfach ;)


  • Ich habe eine Frage, er redet von

    Zitat

    Falls niemand Online ist kann man /votekick machen.


    was hat das mit deinem Code zu tun!?
    Ich nehme mal an das soll Vote for Kick heißen sprich eine Abstimmung.

    KleineHilfe 2.0

  • Schreibe mich per Pn an.

    Und wieso schreibst du es nicht hier hin?


    So könnte man ja auch mal anderen Leuten mit der gleichen Frage helfen.
    Blöd wenn alle immer sagen "SuFu" aber Probleme per PN beantwortet werden.



    new VoteKickAktiv;
    new VoteKickPlayer;
    new VoteCount;
    new Voted[MAX_PLAYERS];
    new VoteTime;
    new VoteKTimer;


    public OnPlayerDisconnect(playerid, reason)
    {
    if(VoteKickPlayer == playerid)
    {
    VoteKickPlayer = 0;
    KillTimer(VoteKTimer);
    }
    return 1;
    }


    stock GetOnlinePlayerCount()
    {
    new pCount = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(i != INVALID_PLAYER_ID)
    {
    pCount++;
    }
    }
    return pCount;
    }


    if(strcmp(cmd, "/Vote",true)==0)
    {
    if(Voted[playerid] == 0)
    {
    Voted[playerid] = 1;
    VoteCount++;
    new msg[256];
    new pName[20];
    GetPlayerName(playerid, pName, 20);
    format(msg, 256, "VoteKick: %s hat gevotet! Stand: %d/%d", pName, VoteCount, GetOnlinePlayerCount());
    SendClientMessageToAll(0x00FFBEFF, msg);
    }
    else
    {
    SendClientMessage(playerid, 0xC4463EFF, ".:Du hast bereits für einen Kick gevotet:.");
    }
    }

    if(strcmp(cmd, "/VoteKick",true)==0)
    {
    new aCount = 0;
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i))
    {
    aCount++;
    }
    }
    if(aCount == 0)
    {
    if(VoteKickAktiv == 0)
    {
    new pID, reason[128];
    if(sscanf(params, "us[128]", pID, reason)) return SendClientMessage(playerid, 0xFF5A00FF, "/VoteKick [Spieler] [Grund]");
    new msg[256];
    new pName[20];
    new pName2[20];
    GetPlayerName(pID, pName2, 20);
    GetPlayerName(playerid, pName, 20);
    format(msg, 256, "VoteKick: %s fordert einen Votekick für Spieler %s! Grund: %s", pName, pName2, reason);
    SendClientMessageToAll(0xC4463EFF, msg);
    SendClientMessageToAll(0xC4463EFF, ".:Benutze /Vote um den Spieler zu kicken:.");
    VoteKickPlayer = pID;
    VoteKickAktiv = 1;
    VoteCount = 1;
    VoteTime = 60;
    VoteKTimer = SetTimerEx("VoteKickTimer", 1000, 0, "i", pID);
    }
    else
    {
    SendClientMessage(playerid, 0xFF5A00FF, ".:Votekick nicht möglich! Es läuft aktuell bereits eine Votekick:.");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF5A00FF, ".:Votekick nicht möglich! Es ist ein Administrator online:.");
    }
    }



    forward VoteKickTimer(playerid);
    public VoteKickTimer(playerid)
    {
    VoteTime--;
    if(VoteTime == 0)
    {
    new msg[256];
    format(msg, 256, "VoteKick Ergebnis: %d/%d", VoteCount, GetOnlinePlayerCount());
    SendClientMessageToAll(0x00FFBEFF, msg);
    if(VoteCount > GetOnlinePlayerCount()/2)
    {
    new pName[20];
    GetPlayerName(playerid, pName, 20);
    format(msg, 256, "VoteKick: %s wurde gekickt!", pName);
    SendClientMessageToAll(0xFF1400FF, msg);
    Kick(playerid);


    }
    else
    {
    new pName[20];
    GetPlayerName(playerid, pName, 20);
    format(msg, 256, "VoteKick: %s wurde nicht gekickt!", pName);
    SendClientMessageToAll(0xFF1400FF, msg);
    for(new i; i < MAX_PLAYERS; i++)
    {
    Voted[i] = 0;
    }
    }
    VoteKickAktiv = 0;
    KillTimer(VoteKTimer);

    }
    }




    Wurde noch nicht getestet, dürfte aber funktionieren.


    Bei Fehlern melde dich bitte nochmal.