Beiträge von Jeffry

    Wird wenn ich z.b 17 Häuser erstellt habe und haus 15 Lösche wird dann 16 auf 15 verschoben und 17 auf 16 ?

    Nein. Warum sollte das so sein? Dann würden sich die IDs ja ständig verschieben.
    In dem Fall kannst du das AUTO_INCREMENT auch weg lassen, und die ID komplett über den Code steuern (immer eine freie ID nehmen).



    Hast du vielleicht ne Idee wie ich abfragen kann, ob der Spieler vor einem Objekt steht und dieses anschießt ? Entsprechend, festerstellte Objekte von SAMP.

    https://wiki.sa-mp.com/wiki/OnPlayerWeaponShot

    Zum Auslesen des Wertes, falls du ihn nicht kennst:

    SQL
    SELECT `AUTO_INCREMENT`
    FROM  INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'Datenbank'
    AND   TABLE_NAME   = 'Tabelle'


    Zum setzen:

    SQL
    ALTER TABLE tabelle AUTO_INCREMENT = neuer_wert


    Achte darauf, dass bei InnoDB der Wert nicht kleiner gesetzt werden kann, als der größte Eintrag + 1 (z.B. id = 2 existiert, dann muss A_I mindestens 3 sein).

    mysql_format(handle, query, sizeof(query), "UPDATE Benutzer SET Level = '%d', Money = '%d', Admin = '%d', WHERE UserID = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][p_id]);

    zu:
    mysql_format(handle, query, sizeof(query), "UPDATE Benutzer SET Level = '%d', Money = '%d', Admin = '%d', WHERE UserID = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);


    bzw.
    mysql_format(handle, query, sizeof(query), "UPDATE Benutzer SET Level = '%d', Money = '%d', Admin = '%d', WHERE UserID = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], sSpieler[playerid][pAdmin], PlayerInfo[playerid][p_id]);
    Falls für das Admin Level sSpieler genutzt wird, wie im Befehl (eventuell geändert?).

    Ändere den Teil zu:
    if(Spieler[playerid][Wanteds] > 0 && IsACop(killerid))
    {
    SetPlayerHealth(playerid,100);
    Spieler[playerid][Jailed] = 1;
    Spieler[playerid][JailType] = 2;
    GivePlayerCash(playerid, -5000);
    GivePlayerCash(killerid, 5000);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, COLOR_GRAD2, "");
    format(string, sizeof(string), "Du bist nun für %d Minuten im Knast. (Nicht Gestellt, -5000$)",Spieler[playerid][Wanteds]*4);
    SendClientMessage(playerid, BLAU, string);
    SetTimerEx("Unjail",Spieler[playerid][Wanteds]*4*1000*60,false,"i",playerid);
    //SetPlayerPos(playerid, 264.0500,77.8530,1001.0391);
    //SetPlayerInterior(playerid, 6);
    //ClearChat(playerid);
    // PlayerPlaySound(killerid, 1139, 0.0, 0.0, 0.0);
    // SendClientMessage(killerid,0xFFFFFF00,"Du hast den gesuchten Verbrecher geschnappt!");
    // SendClientMessage(killerid,0xFFFFFF00,"Dir wird eine Prämie für den nächsten Zahltag gutgeschrieben.");
    // SendClientMessage(playerid,0xFFFFFF00,"Du wurdest von der Polizei gestoppt!");
    //der eingespäter wird nicht als killerid sndern als playerid definirt
    SetPlayerWantedLevel(playerid,0);
    //SpawnPlayer(playerid);
    //format(string, sizeof(string), "%s hat den Verbrecher %s geschnappt!", GetName(killerid), GetName(playerid));
    //SendFamilyMessage(1, BLAU, string);
    //SendFamilyMessage(2, BLAU, string);
    }


    Und füge bei OnPlayerSpawn ein:
    if(Spieler[playerid][Jailed] == 1)
    {
    SetPlayerPos(playerid, 264.0500,77.8530,1001.0391);
    SetPlayerInterior(playerid, 6);
    }


    Poste nächstes mal bitte den Quellcode im PWN/Code Tag.

    2 Warum steht bei mir nur das er Aktiviert wurde und bei wem anderes nur das er ausgemacht wurde ?

    Das liegt daran, dass du den Wert mit jedem Schleifendurchlauf von 1 auf 0 und umgekehrt änderst.
    Ändere es zu:
    ocmd:einsatz(playerid)
    {
    if(GetPlayerFrakID(playerid) != 2) return SendClientMessage(playerid,BLAU," Du bist kein SEK Mitglied.");
    new str[128];
    if(Einsatz == 0)
    {
    Einsatz = 1;
    format(str, sizeof(str), "---> Achtung ein Einsatz wurde autorisiert <---");
    }
    else
    {
    Einsatz = 0;
    format(str, sizeof(str), "---> Achtung der Einsatzbefehl wurde deklariert <---");
    }
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(pInfo[i][pEingeloggt] == 0) continue;
    if(GetPlayerFrakID(i) != 2) continue;
    SendClientMessage(i,BLAU,str);
    }
    return 1;
    }

    SendClientMessage(pid, C_YELLOW, "Du bist nun ein Administrator");
    SendClientMessage(pid, C_BLUE2, "Der angegebene Spieler ist nun Admin");
    Du sendest beide Nachrichten an die pid.


    Ändere es ab zu:
    SendClientMessage(pid, C_YELLOW, "Du bist nun ein Administrator");
    SendClientMessage(playerid, C_BLUE2, "Der angegebene Spieler ist nun Admin");


    Falls es weiterhin nicht geht, nutzt du das sscanf Plugin?