Beiträge von Jeffry

    Du hattest keine Abfrage in der Schleife, ob der Blitzer bereits existiert.
    Versuche es so:
    ocmd:blitzer(playerid,params[])
    {
    new str[128],name[MAX_PLAYER_NAME],geschw,strafe,Float:x,Float:y,Float:z,Float:a,Datei[64];
    if(IsPlayerConnected(playerid))
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(IsPlayerFraktRang(playerid, 7, 1))
    {
    if(sscanf(params,"dd",geschw,strafe))return SendClientMessage(playerid,Grau,"Benutze: /blitzer [Geschw.] [Strafe/Kmh]");
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Grau,"Du darfst nicht in einem Fahrzeug sitzen.");
    if(IsPlayerInRangeOfPoint(playerid,60.0,Blitzer[i][xpos],Blitzer[i][ypos],Blitzer[i][zpos]))return SendClientMessage(playerid,Grau,"In der Nähe steht bereits ein Blitzer.");
    if(geschw < 40 || geschw > 160)return SendClientMessage(playerid,Grau,"Die Geschwindigkeit darf min. 40Km/h und max. 160Km/h betragen.");
    if(strafe < 2 || strafe > 20)return SendClientMessage(playerid,Grau,"Die Geldstrafe pro Km/h muss zwischen 2$ und 20$ liegen.");
    for(new i; i < MAX_BLITZER; i++)
    {
    if(Blitzer[i][Strafe] != 0) continue;
    format(Datei,sizeof(Datei),"/Blitzer/%d.txt",i);
    dini_Create(Datei);
    GetPlayerPos(playerid,x,y,z);
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerFacingAngle(playerid,a);
    Blitzer[i][xpos] = x;
    Blitzer[i][ypos] = y;
    Blitzer[i][zpos] = z;
    Blitzer[i][apos] = a;
    Blitzer[i][Geschw] = geschw;
    Blitzer[i][Radius] = 30;
    Blitzer[i][Strafe] = strafe;
    Blitzer[i][ID] = i;
    CreateObject(18880,x+1.0,y+1.0,z-2.0,0.0,0.0,a,400);
    SendClientMessage(playerid,Grün,"Du hast erfolgreich einen Blitzer aufgestellt.");
    format(str,sizeof(str),"%s hat einen Blitzer erstellt. (%.2f,%.2f,%.2f)",name,x,y,z);
    printf("%s",str);
    SaveBlitzer();
    return 1;
    }
    }
    return 1;
    }

    So sieht es auf jeden Fall besser aus.


    Versuche es dann so:
    public Sekunde()
    {
    for(new i=0; i<sizeof vInfo; i++)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vInfo[i][v_id_x],engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine!=1)continue;
    printf("Auto %i Tank %i",vInfo[i][v_id_x],vInfo[i][v_tank]);
    print("Motor ist an!");
    vInfo[i][v_tank]=vInfo[i][v_tank]-VEHICLE_TANK_ABZUG;
    printf("0.2L wurden abgezogen Jetzt: %f",vInfo[i][v_tank]);
    for(new pi=0; pi<MAX_PLAYERS; pi++)
    {
    if(GetPlayerVehicleID(pi) != vInfo[i][v_id_x] || GetPlayerState(playerid) != PLAYER_STATE_DRIVER)continue;
    print("Spieler gefunden!");
    new string[164];
    if(vInfo[i][v_tank]<=0)
    {
    engine=0;
    SetVehicleParamsEx(vInfo[i][v_id_x],engine,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(pi,rot," Der Tank ist Leer!");
    break;
    }
    if(GetVehicleModel(vInfo[i][v_id_x])==462)
    {
    vInfo[i][v_tank]=100.0;
    format(string,sizeof string,"Tank: %iL",floatround(vInfo[i][v_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    break;
    }
    if(vInfo[i][v_vehicleid]==462)
    {
    vInfo[i][v_tank]=100.0;
    format(string,sizeof string,"Tank: %iL",floatround(vInfo[i][v_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    break;
    }
    if(GetPlayerVehicleSeat(pi)==0)
    {
    print("fahrer gefunden");
    format(string,sizeof string,"Tank: %iL",floatround(vInfo[i][v_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    print("Anzeige aktualisiert!");
    if(vInfo[i][v_tank]<=0)
    {
    SendClientMessage(pi,rot,"Dein Tank ist leer!");
    engine=0;
    SetVehicleParamsEx(vInfo[i][v_id_x],engine,lights,alarm,doors,bonnet,boot,objective);
    }
    }
    }
    }
    return 1;
    }

    Gegenfrage:
    Hat es einen bestimmten Grund, warum du ein extra Array für den Tank machst?


    Meiner Meinung nach wäre es wesentlich sinnvoller den Tank so zu nutzen:
    vInfo[i][v_tank]
    Ohne ein extra Array. Das würde einen Haufen Arbeit sparen.

    Spoiler anzeigen
    if(strcmp(cmd, "/arrest", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
    {
    if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Dienst!");
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,6.0,-1589.8398,715.9842,-5.2422) || IsPlayerInRangeOfPoint(playerid,3.0,215.6246,113.8847,999.0156) || IsPlayerInRangeOfPoint(playerid,3.0,1564.6660,-1694.4382,5.8906))
    {
    // Jail spot
    new suspect = GetClosestPlayer(playerid);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /arrest (ID / Name)");
    return 1;
    }
    if(IsACop(suspect))
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du kannst keinen Beamten einsperren!");
    return 1;
    }
    if(IsPlayerConnected(suspect))
    {
    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
    {
    GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(WantedLevel[suspect] < 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist nicht gesucht!");
    return 1;
    }
    GivePlayerMoney(suspect,-WantedLevel[suspect]*750);
    GivePlayerMoney(playerid,WantedLevel[suspect]*750);
    PlayerInfo[playerid][pGehalt] += WantedLevel[suspect]*2000;
    ResetPlayerWeapons(suspect);
    if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
    {
    format(string, sizeof(string), "INFO: Officer %s hat den Verbrecher %s eingesperrt", SpielerName(playerid), SpielerName(suspect));
    OOCNews(COLOR_RED, string);
    }
    else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
    {
    format(string, sizeof(string), "INFO: Agent %s hat den Verbrecher %s eingesperrt", SpielerName(playerid), SpielerName(suspect));
    OOCNews(COLOR_RED, string);
    }
    else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
    {
    format(string, sizeof(string), "INFO: Soldat %s hat den Verbrecher %s eingesperrt", SpielerName(playerid), SpielerName(suspect));
    OOCNews(COLOR_RED, string);
    }
    else if(PlayerInfo[playerid][pMember]==22||PlayerInfo[playerid][pLeader]==22)
    {
    format(string, sizeof(string), "INFO: SWAT Agent %s hat den Verbrecher %s eingesperrt", SpielerName(playerid), SpielerName(suspect));
    OOCNews(COLOR_RED, string);
    }
    if(PlayerInfo[playerid][pMember]==FBI_MEMBER) //====== FBI_MEMBER mit der Member ID von FBI ersetzen, oder wie auch immer du abfragst, ob der Spieler FBI ist.
    {
    //Hier die Positionen für die Zelle(n) in SF eintragen, gleich wie unten bei den LSPDZellen.
    }
    else
    {
    if(LSPDZellen == 0)//zelle1
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,227.3844,111.5490,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 1)//zelle2
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,223.5090,111.4179,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 2)//zelle3
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,219.5361,111.3571,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 3)//Zelle4
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,215.5814,111.1412,999);
    LSPDZellen += 1;
    }
    }
    PlayerInfo[suspect][pJailTime] = WantedLevel[suspect] * 240;
    new spr[100];
    format(spr,sizeof(spr),"Du wurdest für %d Minuten und einer Geldstrafe von %d$ eingesperrt",WantedLevel[suspect] * 4,WantedLevel[suspect] * 2000);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,spr);
    PlayerInfo[suspect][pJailed] = 1;
    PlayerInfo[suspect][pArrested] += 1;
    SetPlayerInterior(suspect, 6);
    SetPlayerFree(suspect,playerid, "Verhaftet");
    WantedPoints[suspect] = 0;
    WantedLevel[suspect] = 0;
    SetPlayerWantedLevel(suspect,0);
    }
    //distance
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Niemand zum Verhaften in deiner Nähe.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Beamter !");
    return 1;
    }
    }
    //not connected
    return 1;
    }


    Beachte Zeile 62 und 64.

    Du bist da mit dem Index und der vehicle ID durcheinander gekommen.
    Außerdem sind die Tank-Schleifen immer bis ans Ende gelaufen.


    Versuche es so:
    SaveCars()
    {
    for(new i=0; i<sizeof(vInfo); i++)
    {
    if(vInfo[i][v_id_x]==0)continue;
    new string[64];
    format(string,sizeof string,"/autos/car %i.txt",vInfo[i][v_db_id]);
    new color1,color2;
    for(new io=0; io<sizeof VEHICLE_TANK; io++)
    {
    if(VEHICLE_TANK[io][td_vehicle_id] != vInfo[i][v_id_x]) continue;
    dini_FloatSet(string,"Tank",VEHICLE_TANK[io][td_tank]);
    break;
    }
    GetVehicleColor(vInfo[i][v_id_x], color1,color2);
    vInfo[i][v_color_1]=color1;
    vInfo[i][v_color_2]=color2;
    vInfo[i][v_spoiler]=GetVehicleComponentInSlot(vInfo[i][v_id_x],0);
    vInfo[i][v_hood]=GetVehicleComponentInSlot(vInfo[i][v_id_x],1);
    vInfo[i][v_roof]=GetVehicleComponentInSlot(vInfo[i][v_id_x],2);
    vInfo[i][v_sideskirt]=GetVehicleComponentInSlot(vInfo[i][v_id_x],3);
    vInfo[i][v_lamps]=GetVehicleComponentInSlot(vInfo[i][v_id_x],4);
    vInfo[i][v_nitro]=GetVehicleComponentInSlot(vInfo[i][v_id_x],5);
    vInfo[i][v_exhaust]=GetVehicleComponentInSlot(vInfo[i][v_id_x],6);
    vInfo[i][v_wheels]=GetVehicleComponentInSlot(vInfo[i][v_id_x],7);
    vInfo[i][v_stereo]=GetVehicleComponentInSlot(vInfo[i][v_id_x],8);
    vInfo[i][v_hydraulics]=GetVehicleComponentInSlot(vInfo[i][v_id_x],9);
    vInfo[i][v_front_bumper]=GetVehicleComponentInSlot(vInfo[i][v_id_x],10);
    vInfo[i][v_rear_bumper]=GetVehicleComponentInSlot(vInfo[i][v_id_x],11);
    vInfo[i][v_vent_left]=GetVehicleComponentInSlot(vInfo[i][v_id_x],12);
    vInfo[i][v_vent_right]=GetVehicleComponentInSlot(vInfo[i][v_id_x],13);
    ChangeVehiclePaintjob(vInfo[i][v_id_x],vInfo[i][v_paintjob]);
    dini_IntSet(string,"Color_1",vInfo[i][v_color_1]);
    dini_IntSet(string,"Color_2",vInfo[i][v_color_2]);
    dini_IntSet(string,"v_spoiler",vInfo[i][v_spoiler]);
    dini_IntSet(string,"v_hood",vInfo[i][v_hood]);
    dini_IntSet(string,"v_roof",vInfo[i][v_roof]);
    dini_IntSet(string,"v_sideskirt",vInfo[i][v_sideskirt]);
    dini_IntSet(string,"v_lamps",vInfo[i][v_lamps]);
    dini_IntSet(string,"v_nitro",vInfo[i][v_nitro]);
    dini_IntSet(string,"v_exhaust",vInfo[i][v_exhaust]);
    dini_IntSet(string,"v_wheels",vInfo[i][v_wheels]);
    dini_IntSet(string,"v_stereo",vInfo[i][v_stereo]);
    dini_IntSet(string,"v_hydraulics",vInfo[i][v_hydraulics]);
    dini_IntSet(string,"v_front_bumper",vInfo[i][v_front_bumper]);
    dini_IntSet(string,"v_rear_bumper",vInfo[i][v_rear_bumper]);
    dini_IntSet(string,"v_vent_left",vInfo[i][v_vent_left]);
    dini_IntSet(string,"v_vent_right",vInfo[i][v_vent_right]);
    dini_IntSet(string,"v_paintjob",vInfo[i][v_paintjob]);
    }
    return 1;
    }


    public Sekunde()
    {
    for(new i=0; i<sizeof vInfo; i++)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(engine==0)continue;
    new tID;
    for(new ipp=0; ipp<sizeof VEHICLE_TANK; ipp++)
    {
    if(VEHICLE_TANK[ipp][td_vehicle_id] != vInfo[i][v_id_x]) continue;
    tID=ipp;
    break;
    }
    printf("Auto %i Tank %i",i,VEHICLE_TANK[tID][td_tank]);
    print("Motor ist an!");
    VEHICLE_TANK[tID][td_tank]=VEHICLE_TANK[tID][td_tank]-VEHICLE_TANK_ABZUG;
    printf("0.2L wurden abgezogen Jetzt: %f",VEHICLE_TANK[tID][td_tank]);
    for(new pi=0; pi<MAX_PLAYERS; pi++)
    {
    if(!IsPlayerInAnyVehicle(pi))continue;
    print("Spieler gefunden!");
    if(GetPlayerVehicleID(pi)==VEHICLE_TANK[tID][td_vehicle_id])
    {
    if(VEHICLE_TANK[tID][td_tank]<=0)
    {
    engine=0;
    SetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SendClientMessage(pi,rot," Der Tank ist Leer!");
    break;
    }
    }
    if(GetVehicleModel(i)==462)
    {
    VEHICLE_TANK[tID][td_tank]=100.0;
    new string[164];
    format(string,sizeof string,"Tank: %iL",floatround(VEHICLE_TANK[tID][td_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    break;
    }
    if(vInfo[i][v_vehicleid]==462)
    {
    VEHICLE_TANK[tID][td_tank]=100.0;
    new string[164];
    format(string,sizeof string,"Tank: %iL",floatround(VEHICLE_TANK[tID][td_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    break;
    }
    new string[164];
    if(GetPlayerVehicleSeat(pi)==0)
    {
    print("fahrer gefunden");
    format(string,sizeof string,"Tank: %iL",floatround(VEHICLE_TANK[tID][td_tank]));
    PlayerTextDrawSetString(pi,Tacho_Fuel[pi],string);
    print("Anzeige aktualisiert!");
    if(VEHICLE_TANK[tID][td_tank]<=0)
    {
    SendClientMessage(pi,rot,"Dein Tank ist leer!");
    engine=0;
    SetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    }
    }
    }
    }
    return 1;
    }

    Nein. Zeile 61 - 92 in obigem Code damit ersetzen und den Abschnitt nach
    if(PlayerInfo[playerid][pMember]==FBI_MEMBER)
    natürlich mit den neuen SF Positionen ausfüllen.

    Was steht so im Server Log?
    //Timer Funktion
    forward DownstateTimer(playerid);
    public DownstateTimer(playerid)
    {
    printf("Timer aufgerufen: %d | %d | %d", playerid, Downstate_Counter[playerid], Downstate_Timer[playerid]);
    Downstate_Counter[playerid]++;
    if(Downstate_Counter[playerid] == 4)
    {
    printf("4");
    Downstate_Counter[playerid] = 0;

    new Float:a;
    GetPlayerArmour(playerid, a);
    printf("a: %f", a);
    if(0.0 < a < 100.0)
    {
    SetPlayerArmour(playerid, a - 1.0);
    }
    if(a == 100.0)
    {
    printf("a == 100.0");
    KillTimer(Downstate_Timer[playerid]);
    Downstate_Timer[playerid] = -1;
    Condition[playerid] = CONDITION_ALIVE;
    Downstate_Counter[playerid] = 0;
    ClearAnimations(playerid);
    SetPlayerHealth(playerid, 30);
    SetPlayerArmour(playerid, 0);
    //TO DO: Hide all textdraws from the downstate
    }
    if(a <= 0.0)
    {
    printf("a <= 0.0");
    KillTimer(Downstate_Timer[playerid]);
    Downstate_Timer[playerid] = -1;
    Condition[playerid] = CONDITION_DEAD;
    Downstate_Counter[playerid] = 0;
    ApplyAnimation(playerid, "CRACK", "crckdeth1", 4.1, false, true, true, true, 24*60000, true);
    //TO DO: Offer Respawn Hotkey
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][0]); //Downstate
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][1]); //WeaponCoverBox
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][2]); //Infobox
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][3]); //HealthCoverBox
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][4]); //Indicator arrow
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][5]); //Stop the bleeding
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][6]); //Cry for help
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][7]); //Last strength
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][8]); //Medicine
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][9]); //Up and down arrow of main circle
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][10]); //Left and right arrow of main circle
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][11]); //Medicine drop down menu
    PlayerTextDrawHide(playerid, TD_Downstate[playerid][12]); //Close box info
    //TO DO: Hide downstate action textdraws and infobox (when respawned, hide all downstate textdraws)
    }
    }
    printf("Fertig.");
    return 1;
    }

    Nein, hier, so:
    if(PlayerInfo[playerid][pMember]==FBI_MEMBER)
    {

    }
    else
    {
    if(LSPDZellen == 0)//zelle1
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,227.3844,111.5490,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 1)//zelle2
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,223.5090,111.4179,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 2)//zelle3
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,219.5361,111.3571,999);
    LSPDZellen += 1;
    }
    if(LSPDZellen == 3)//Zelle4
    {
    SetPlayerInterior(playerid, 0);
    UnFreezePlayer(playerid);
    PlayerCuffed[playerid] = 0;
    SetPlayerPos(playerid,215.5814,111.1412,999);
    LSPDZellen += 1;
    }
    }

    Machs mal so:
    new Downstate_Timer[MAX_PLAYERS] = {-1,...};


    //Unter OnPlayerSpawn
    if(Downstate_Timer[playerid] != -1) KillTimer(Downstate_Timer[playerid]);
    Downstate_Timer[playerid] = SetTimerEx("DownstateTimer", 250, true, "i", playerid);


    Im Timer:
    KillTimer(Downstate_Timer[playerid]);
    Downstate_Timer[playerid] = -1;