Beiträge von Jeffry

    Schreibe es mal so:
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    format(string, sizeof(string), "AdmCmd: Du wurdest von %s gebannt, Grund: %s", sendername, (result));
    SendClientMessage(giveplayerid,COLOR_LIGHTRED, string);
    PlayerInfo[giveplayerid][pGesperrt] = 1;
    OnPlayerUpdate(giveplayerid); //Hier hatte ich dir die falsche Variable gesagt, sorry.
    return 1;


    Und das musst du mit einem Array machen, sonst bringt das nichts.
    Du könntest aber auch einfach die Kick/Ban-Fix Include nutzen.
    forward KickTimer(playerid);
    new oKick[MAX_PLAYERS];


    public KickTimer(playerid)
    {
    if(oKick[playerid] == 0)
    {
    SetTimerEx("KickTimer",200,false,"i",playerid);
    oKick[playerid] = 1;
    }
    else if(oKick[playerid] == 1)
    {
    Kick(playerid);
    oKick[playerid] = 0;
    }
    return 1;
    }

    Was machen die Punkte da?
    public OnPlayerConnect(playerid)
    {
    new pname[MAX_PLAYER_NAME], string[39 + MAX_PLAYER_NAME];
    if(fexist(UserPath(playerid)))
    {
    INI_ParseFile(UserPath(playerid), "LoadUser_%s");
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login Menu",""COL_WHITE"Type your password below to login.","Login","Kick");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Register Menu","Type your password below to register a new account.","Register","Kick");
    }
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "%s has Joined the server.", pname);
    SendClientMessageToAll(0xFF8000FF, string);
    return 1;
    }

    Geht's so?

    Schreibe es so:
    ocmd:fillcar(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SCM(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,COLOR_GRAU,"Du bist in keinem Fahrzeug!");
    new vID = GetPlayerVehicleID(playerid);
    new string[128];
    if(!HasCarMotor(vID))return SCM(playerid,COLOR_GRAU,"Dieses Fahrzeug besitzt kein Motor!");
    if(GetPVarInt(playerid,"tank_Rechnung")>0)return SCM(playerid,COLOR_GRAU,"Begleiche erst die Rechnung in der Tankstelle.");
    if(IsMotorOn(vID))return SCM(playerid,COLOR_GRAU,"Schalte erst den Motor ab bevor du Tanken tust.");
    for(new i=0; i<sizeof(tkInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    if(bsInfo[i][b_id] !=2)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,tkInfo[i][tk_x],tkInfo[i][tk_y],tkInfo[i][tk_z])) continue;
    format(string,128,"Willkommen bei der Tankstelle.\nAktueller Preis pro Liter: %i$",bsInfo[i][b_gasprice]);
    ShowPlayerDialog(playerid,DIALOG_FILLCAR,DIALOG_STYLE_INPUT,"Tankstelle",string,"Tanken","Abbrechen");
    return 1;
    }
    return SCM(playerid,COLOR_GRAU,"Du bist nicht in der nähe einer Tankstelle.");
    }


    Das return bei der if-Abfrage gehört nicht in die Schleife, wenn du mehrere prüfen willst.

    Kannst du so schreiben:
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    static lastIn[MAX_PLAYERS];
    if(gettime() > lastIn[playerid] + 3)
    {
    for(new i=0; i<sizeof(iInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,1,iInfo[i][IP_X],iInfo[i][IP_Y],iInfo[i][IP_Z]))continue;
    lastIn[playerid] = gettime();
    SetPlayerPos(playerid,iInfo[i][IP_IntX],iInfo[i][IP_IntY],iInfo[i][IP_IntZ]);
    SetPlayerInterior(playerid,iInfo[i][IP_Interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    }
    return 1;
    }

    Sa haben wir doch den Fehler. Du versuchst KillTimer mit dem Callback zu machen, das geht nicht.


    Dort wo du den Timer startest muss es so aussehen:
    meinTimer = SetTimer...


    Und das KillTimer dann so:
    KillTimer(meinTimer);


    Wobei meinTimer global unter den Includes deklariert ist.


    IntelCore.I7:
    Du hast noch immer nicht das Callback genannt unter welchem der Code steht, und du hast noch immer nicht die Copyrights ersetzt mit dem Copyright playerid Array...

    Ja, relativ wenig zwar, aber du hast anstatt einer IF Abfrage zwei IF Abfragen, somit braucht die Abfrage theoretisch doppelt so lang. Sind zwar nur Nanosekunden, aber wenn es einfacher und schneller geht, kann man es ja so machen.


    Letztendlich spielt es keine Rolle, da zählt die persönliche Bevorzugung.

    So wie ich das sehe willst du nur das Krankenhaus herausfinden, welches dir beim Tod am nächsten ist.
    Dazu brauchst du diese ganze Sortiererei gar nicht. Außerdem war das mit der Verwendung der Variablen etwas durcheinander bei deinem Code, du hast da Sachen angegeben die gar nicht existieren.


    Schreibe es so:
    new hospitalID[MAX_PLAYERS]; //Zwischenspeicher

    new Float:Hospitals[][] =
    {
    {1177.0387, -1323.8035, 14.0510, EAST},
    {-2655.6882, 636.9452, 14.4531, SOUTH},
    {1607.2102, 1818.1615, 10.820, NORTH}
    };

    public OnPlayerDeath(playerid, killerid, reason)
    {
    new Float:dist = 999999999.0, idx, Float:tmp;
    for(new i=0; i<sizeof(Hospitals); i++) //Schleife durch alle Krankenhäuser, dynamisch.
    {
    tmp = GetPlayerDistanceFromPoint(playerid, Hospitals[i][0], Hospitals[i][1], Hospitals[i][2]);
    if(tmp < dist) //Wenn Krankenhaus näher als das zuletzt nähste.
    {
    dist = tmp;
    idx = i;
    }
    }
    hospitalID[playerid] = idx; //Nähstes Krankenhaus in den Zwischenspeicher packen
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    new idx = hospitalID[playerid]; //Zwischenspeicher laden und Spieler an die Position setzen.
    SetPlayerPos(playerid, Hospitals[idx][0], Hospitals[idx][1], Hospitals[idx][2]);
    SetPlayerFacingAngle(playerid, Hospitals[idx][3]);
    return 1;
    }

    Das ist soweit alles richtig, das gesperrt muss auch in der Datei stehen, du schreibst es ja rein. Ob es da mit 0 oder 1 steht ist was anderes, aber es muss drin stehen, schau da mal nochmal nach.


    Steht die Abfrage, ob der Spieler gebannt ist direkt nach dem Laden der Spieler Stats, oder wo im Code steht das? Poste das bitte mal zusammenhängend, weil wenn da zuvor zum Beispiel ein return ist, dann würde es nichts bringen.

    PlayerInfo findest du, indem du nach "new PlayerInfo" suchst, das was in der zweiten Klammer steht ist das enum, suche danach dann, ohne die Klammern.


    Das SpielerSpeichern oder wie auch immer es bei dir heißt, findest du indem du nach "/Accounts/" suchst.


    Das sollte nicht zu schwer sein, wenn du einen Server führen willst, solltest du in der Lage sein wenigstens etwas in deinem Code zu finden.

    So wie ich das sehe willst du Fraktion 1 und 2 die Nachricht senden. Dann schreibe es so:
    //FRAKTIONSNACHRICHTEN
    stock SendFraktionMessage(farbe,string[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(sSpieler[i][Fraktion] >= 1 && sSpieler[i][Fraktion] <= 2)
    {
    SendClientMessage(i,farbe,string);
    }
    }
    }


    Außerdem musst du im /f Befehl SendFraktionMessage machen, anstatt SendAdminMessage.