Beiträge von Jeffry

    Das liegt daran, dass der Timer X mal gestartet wird, wenn du weniger als 6 Healthpunkte hast, jedes mal wenn OnPlayerUpdate aufgerufen wird wird der Timer nochmal gestartet (nicht von vorne, sondern parallel so den bereits existierenden).


    Empfehlenswert wäre es so zu machen:
    new Float:bhealth;
    GetPlayerHealth(playerid, bhealth);
    if(Verletzttimer[playerid] != -1 && bhealth > 6.0)
    {
    TextDrawHideForPlayer(playerid,VERLETZT);
    TextDrawShowForPlayer(playerid,Ts3);
    TextDrawShowForPlayer(playerid,TsIp);
    KillTimer(Verletzttimer[playerid]);
    Verletzttimer[playerid] = -1;
    }
    else if(Verletzttimer[playerid] == -1 && bhealth <= 6.0)
    {
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 2.5, 1, 0, 0, 0, 0); // Dieing of Crac
    RemovePlayerFromVehicle(playerid);
    TextDrawShowForPlayer(playerid,VERLETZT);
    TextDrawHideForPlayer(playerid,Ts3);
    Verletzttimer[playerid] = SetTimerEx("verletztsein",60000,0,"i",playerid);
    TextDrawHideForPlayer(playerid,TsIp);
    }


    Und bei der Deklaration:
    new Verletzttimer[MAX_PLAYERS] = {-1,...}; //Setzt alle Indizes auf -1


    Nach der Methode von iEnerqie würde es zwar auf den ersten Blick auch klappen, allerdings wird die Variable vom Timer nicht zurückgesetzt, und da bei > 6.0 die Prüfung fehlt, ob der Timer läuft, wird der Timer mit der ID X ständig beendet. Bekommt ein anderer Timer diese ID zugewiesen, dann wird dieser Timer sofort beendet (ist wie bei den playerids, wenn du ständig versuchst, ID 10 zu kicken, irgendwann bekommt wieder einer die ID 10 und wird sofort gekickt).


    Zu deiner Frage:
    Das _ könnte hier bestehen bleiben, da die pVar nichts mit dem Array zu tun hat. Eine pVar und ein Array gleichzeitig zu nutzen macht aber keinen Sinn, da man es allein über das Array regeln kann (siehe Code).

    format(query,sizeof(query),"SELECT COUNT(besitzer) FROM hanf WHERE besitzer = '%s') ",SpielerName(playerid));


    format(query,sizeof(query),"SELECT COUNT(besitzer) FROM hanf WHERE besitzer = '%s' ",SpielerName(playerid));

    Die Schleife benötigst du hier gar nicht. Du kannst es so machen:
    public Drogenanzahl(playerid)
    {
    new num_fields,num_rows,query[145], anzahl;
    cache_get_data(num_rows, num_fields, dbhandle);
    if(num_rows) anzahl = cache_get_row_int(0, 0);
    format(query,sizeof(query),"%i",anzahl);
    SendClientMessage(playerid,Weiss,query);
    return 1;
    }

    Das kannst du mit einem Query dieser Art machen:


    SQL
    SELECT COUNT(besitzer) FROM drogentabelle WHERE besitzer = 'Gurkey';

    Im Callback kannst du dann einfach
    new anzahl = cache_get_row_int(0, 0);
    nutzen.

    Das sind doch 3 dimensionale Arrays oder so ?

    Nein, das sieht nur so aus. Kommt von der Schreibweise, dass das Array außerhalb steht.


    enum test {
    id,
    var[5]
    }


    new testvars[][test] = {
    {1, {0, 1, 2, 3, 4}},
    {2, {0, 1, 2, 3, 4}}
    };


    public OnGameModeInit()
    {
    printf("%d", testvars[0][var][2]); //Das Array muss außerhalb der Klammer stehen
    return 1;
    }

    Das meinte ich, du kannst das gleiche Playback zwei mal abspielen, aber nur mit einem anderen Name.
    Sprich:
    new name[MAX_PLAYER_NAME];
    format(name, sizeof(name), "BotName_%d", playerid);
    ConnectNPC(name, "RecordName");


    Beim RecordName trägst du den Name der .rec Datei ein.
    Der NPC heißt dann immer entsprechend der ID, zum Beispiel für ID 1: Horst_1 und für ID 5: Horst_5

    as er auch erscheint sofern ich es möchte

    Dort wo du es möchtest:
    http://wiki.sa-mp.com/wiki/NPC:ConnectNPC




    Verschwindet sobald ich es möchte

    Dort wo du es möchtest:
    http://wiki.sa-mp.com/wiki/Kick


    Beachte aber, dass du nicht den gleichen NPC mit dem gleichen Name zwei mal online haben kannst. Du musst dann einen anderen Namen nehmen (nutze gegebenenfalls eine zufällige Zahl am Ende des NPC-Namens, oder beziehe dich auf die playerid desjenigen, der sich registriert hat, das wäre dann eindeutig).

    Sprich mit dem was du mir gesendet hast bekommst du die Errors vom Compiler?
    Das kann ich nicht nachvollziehen, da es bei mir die Include erkennt.


    Was du mal versuchen kannst ist, den ganzen Ordner in einen neuen Pfad zu kopieren und den alten Ordner zu löschen. Möglicherweise hilft das, dass der Compiler die Include erkennt.

    format(string,sizeof(string),"Folgende Administratoren von *** sind zurzeit online:\n\n%s{FFFFFF}: %s, ID: %d",adminrang,adminname,i);
    Zu
    format(string,sizeof(string),"%s%s{FFFFFF}:%s, ID: %d\n",string, adminrang,adminname,i);


    Und vor der Schleife:
    format(string,sizeof(string),"Folgende Administratoren von *** sind zurzeit online:\n\n");