Beiträge von FLASH.[8743]

    Hallo,


    Ich habe immer folgendes Problem mit dem Object Streamer:


    CreateDynamicObject(16685,X,Y,Z,0.0000000,0.0000000,90.0000000,-1,-1,-1,3000,3000); //object(cn2_rnway_bit2); (1);


    Undzwar wenn ich auf diesem Objekt langfahre bis zum Ende, dann verschwindet es ca. 20 Meter vor ende bzw. es wird gelöscht ich weis nicht warum.
    Object ID 16685 und ich habe auch einige Probleme, dass man durch manche Objekte einfach durchlaufen kann z.B. eine Garage oder sowas & manche Objecte spawnen viel zu spät bzw. erst 1m vor mir obwoh streamer distance 3000 ist und draw distance 3000?
    Habe ich was falsch gemacht?


    Server.cfg:

    Code
    stream_distance 2500.0
    stream_rate 1000


    Mfg,

    Hi Leute,


    Ich habe einen Kilometerstand gescriptet aber der zählt total schnell rauf.
    Ich glaube da ist irgendwas falsch oder??



    // Funktion mit Tacho
    if(GetVehicleKilometerStand(vehicleid) > 10)
    {
    VehicleInfo[vehicleid][MStand] += floatround(floatdiv(GetVehicleKilometerStand(vehicleid), 60.0));
    }
    if(VehicleInfo[vehicleid][MStand] > 9)
    {
    VehicleInfo[vehicleid][KMStand] += 1;
    VehicleInfo[vehicleid][MStand] = 0;
    }


    stock GetVehicleKilometerStand(vehicleid)
    {
    new Float: POS[4];
    GetVehicleVelocity(vehicleid, POS[0], POS[1], POS[2]);
    POS[3] = floatsqroot(floatpower(floatabs(POS[0]), 2.0) + floatpower(floatabs(POS[1]), 2.0) + floatpower(floatabs(POS[2]), 2.0)) * 180;
    return floatround(POS[3]);
    }

    Also:


    Der eigentliche Text wird jetzt angezeigt aber nicht wie gewünscht


    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank];
    maxliter /= 100;
    GetVehicleHealth(vehicleid,health);
    if(vehicleid == 0) return 1;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s~n~",VehicleNames[GetVehicleModel(vehicleid) - 400];
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/ maxliter); // Hier soll Vehicleinfo... geteilt durch maxliter stattfinden
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h",GetVehicleSpeed(vehicleid));
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    return 1;
    }


    Irgendwie hat das Script immer an der Stelle unterbrochen, wo die Rechnung war:
    VehicleInfo[vehicleid][Tank]/ maxliter)
    Als ich da nur Vehicleinfo[...] hingeschreiben habe, ging alles wie gewünscht, aber die Anzeige wird nicht aktualisiert.
    Wegen dieser Rechnung ist das Script immer genau an dieser Stelle gestoppt worden.


    Also das Script soll bitte an dieser Stelle Dividieren deswegen / aber / geht nicht genauso wenig wie /= beides geht nicht?
    Wie dividiert man diese beiden Variablen, sodass es nun endlich klappt??


    Danke

    So, der Fehler is nun gefixxt..
    Was war der Fehler??
    Der Fehler lag hier:



    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter); // Hier sollte eigentlich Liter geteilt durch Maximal Liter werden.


    So jetzt hat er es zwar gemacht, aber ich will ja dass die Anzeige angezeigt wird. Wie kann man sonst noch teilen?

    Sorry, ich hatte nicht ganz verstanden.


    Im Server Log erscheint wieder folgendes:


    Code
    playerid: 0 | vehicleid: 1
    Fahrzeuganzeige[playerid][0] gesetzt
    Fahrzeugname: ~w~Infernus~n~ Fahrzeuganzeige[playerid][1] gesetzt
    Geschwindigkeit: ~r~0 ~y~km/h


    Funktionieren tuts trotzdem nicht :| ;(

    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank];
    maxliter /= 100;
    GetVehicleHealth(vehicleid,health);

    printf("playerid: %d | vehicleid: %d", playerid, vehicleid);


    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    print("Fahrzeuganzeige[playerid][0] gesetzt");
    format(string,sizeof(string),"Fahrzeugname: %s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    print("Fahrzeuganzeige[playerid][1] gesetzt");
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h",GetVehicleSpeed(vehicleid));
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter); // DAS IST DER VERBUGGTE TEXTDRAW
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    print("Fahrzeuganzeige[playerid][2] gesetzt");
    return 1;
    }

    Es kommen immer diese Zeilen:


    Code
    playerid: 0 | vehicleid: 1
    Fahrzeuganzeige[playerid][0] gesetzt
     Fahrzeugname: ~w~Infernus~n~n
     Fahrzeuganzeige[playerid][1] gesetzt
     Geschwindigkeit: ~r~0 ~y~km/h~
     playerid: 0 | vehicleid: 0 // Sobald ich aussteige kommt diese Zeile und dann wird das Script beendet
     Fahrzeuganzeige[playerid][0] gesetzt


    Das kommt immer

    Es wird alles gesetzt bis auf die 2.
    Der Wert entspricht dem gewünschten.
    Was mir auffällt, ist, dass der Timer nicht wie gewünscht gekillt wird??
    Vielleciht entstehen dadurch die Bug, denn obwohl ich ausgesteiegen bin, printet er ordentlich


    "playerid: 0 | vehicleid: 0
    Fahrzeuganzeige[playerid][0] gesetzt"


    das kommt in einer sekunde mehrmals..


    Mir ist auch aufgefallen, dass er manchmal die playerid 1 manchmal 0 nimmt.
    (Beide sind connectet aber keiner in diesem Fahrzeug??)


    Hier nochmal der Code:


    public IsPlayerDriverTextDrawCheck()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"ImFahrzeug")==0)
    {
    if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    SetPVarInt(i,"ImFahrzeug",1);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    updatevehicleanzeigetimer[i] = SetTimerEx("UpdateVehicleAnzeigeTimer",250,true,"i",i);
    PlayerTextDrawShow(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawShow(i,Vehicleanzeigetext[i][s]);
    }
    }
    }
    else if(GetPVarInt(i,"ImFahrzeug")==1)
    {
    if(!IsPlayerInAnyVehicle(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER && GetVehicleDriver(i) != i)
    {
    SetPVarInt(i,"ImFahrzeug",0);
    for(new r=0; r<MAX_FAHRZEUGANZEIGETEXT; r++)
    {
    PlayerTextDrawHide(i,Fahrzeuganzeige[i][r]);
    }
    for(new s=0; s<MAX_VEHICLEANZEIGETEXT; s++)
    {
    PlayerTextDrawHide(i,Vehicleanzeigetext[i][s]);
    }
    KillTimer(updatevehicleanzeigetimer[i]);
    }
    }
    }
    return 1;
    }

    Bitteschön: :D


    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, maxliter, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    maxliter = VehicleInfo[vehicleid][MaxTank];
    maxliter /= 100;
    GetVehicleHealth(vehicleid,health);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h~",GetVehicleSpeed(vehicleid));
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/maxliter);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    return 1;
    }