/befreien - für Cops

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
  • Heyho ;)
    Ich hab da'n kleines Problem, und da ich mich nie weiter mit solchen Sachen beschäftigt habe, such ich hier mal um Rat ^^
    Also folgendes: Ich hab einen Befehl gescriptet, mit dem Cops, Spieler die getied sind "(/tie)" entfesseln können.
    Da ich es etwas unfair fände, dass die nur /befreien eingeben müssten - dachte ich mir, sie sollen 30 Sekunden brauchen.
    Das klappt auch alles, allerdings scheitere ich bei der Abfrage, ob der Cop noch in der Nähe des Gefesselten ist (im Timer - da ich nicht weiß, wie ich die ID's der Spieler mit in den Timer nehmen soll xD)
    Ich benutze LoH :P
    Hier mal alles, was bisher mit Befreien zu tun hat :).
    Der Befehl (der soweit einwandfrei geht):
    if(strcmp(cmd, "/befreien", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(IsACop(playerid))
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE,"Benutze: /befreien [Spieler]"); return 1; }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if (ProxDetectorS(8.0, playerid, giveplayerid))
    {
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst befreien!"); return 1; }
    if(PlayerTied[giveplayerid])
    {
    new string33[128];
    format(string33, sizeof(string33),"Du entfesselst nun %s. Du musst 30 Sekunden warten!",giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE,string33);
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    SetTimerEx("Befreien2",30000,0,"i",playerid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Der Spieler ist nicht gefesselt!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Der Spieler ist nicht in deiner Nähe!");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Der Spieler ist nicht online!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist kein COP / FBI AGENT / ARMY MITGLIED!");
    return 1;
    }
    }
    return 1;
    }


    Dann einmal die public's Befreien(playerid,giveplayerid) & public Befreien2(playerid,giveplayerid):
    public Befreien2(playerid, giveplayerid)
    {
    if(ProxDetectorS(8.0, playerid, giveplayerid))
    {
    SetTimerEx("Befreien",1,0,"i",giveplayerid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist zu früh gegangen!");
    return 1;
    }
    return 1;
    }
    public Befreien(playerid, giveplayerid)
    {
    new string[128];
    SetPlayerInterior(giveplayerid, 0);
    format(string, sizeof(string), "* Du wurdest befreit.");
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    GameTextForPlayer(giveplayerid, "~g~Frei", 2500, 3);
    UnFreezePlayer(giveplayerid);
    PlayerTied[giveplayerid] = 0;
    PhoneOnline[giveplayerid] = 0;
    PlayerCantWrite[giveplayerid] = 0;
    return 1;
    }
    und natürlich (auch wenns eher unwichtig ist) die forwards^^:
    forward Befreien(playerid, giveplayerid);
    forward Befreien2(playerid, giveplayerid);


    Ich hoffe, mir kann einer helfen =P