Beiträge von kreetkev

    Also gut :)


    Sobald ich den Server Starte und ein Fahrzeuge spawne mit dem Befehl "/veh", zeigt er mir an dass CarID "242" gespawned wurde.
    (Habe insg. 241 Fest erstelle Fahrzeuge auf meinem Server)
    Wenn ich aber dannach "/destroycars" eingebe, geht erstmal kein Auto "kaputt" da die zahl "201" ja "verbuggt" ist.
    Anschließend möchte ich noch ein Fahrzeug mit /veh erstellen und plötzlich steht dort: Fahrzeug 1 wurde gespawned. Ab diesem Zeitpunkt läuft es richtig.


    Habe grade was getestet: Server an, direkt Befehl /destroycars. Alle Fahrzeuge von ID 1-99 wurden gelöscht...


    Dannach ging aber der Befehl wieschongesagt einwandfrei.


    Hier mein Destroycars Befehl:


    if(strcmp(cmd, "/destroycars", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(Spieler[playerid][Admin] < 4)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
    return 1;
    }
    for(new i = 0; i < sizeof(CreatedCars); i++)
    {
    if(i != 0)
    {
    DestroyVehicle(i);
    }
    }
    SendClientMessage(playerid, COLOR_GREY, "Erschaffene Fahrzeuge wurden zerstört!");
    }
    return 1;
    }


    Und hier wo ich CreatedCars usw. erstelle:


    Ongamemodeinit
    new CreatedCars[100];
    new CreatedCar = 0;


    Theoritisch könnt ich ja so machen und ich muss es auch, dass er einfach von der 241 einfach weiter Addiert. Sprich das nächste Fahrzeuge wäre 242 243 usw.
    Dann würde das mit den Kilometern auch klappen...

    Zunächst erstellst du ein Tor.


    Dann erstellst du unter Ongamemodeinit einen Timer der jede Sekunde läuft.


    Unter dieser Funktion fragst du einfach ab, ob der Spieler eines dieser Tore ist und wenn ja, dann fragst du ab ob der Spieler
    berechtigt ist dieses Tor zu öffnen. Wenn ja, öffnet sich das Tor. Dies tust du mit Movebject();

    Perfekt. Habe aber nun ein weiteren Fehler gefunden.
    Sobald dann die Carid 1 gespawned wird, steht unter /dl die carid 1.
    Da aber schon ein fahrzeug mit der Carid 1 besteht, übernimmt er logischerweise auch die KM des Fahrzeuges mit der ID 1.
    Wenn ich immer weiter Fahrzeuge spawne, übernehmen die Logischerweise die ID des eigentliches Fahreuges mit der ID.
    Sprich, man müsste die Cars eigentlich ab id z.b. 500 Spawnen lassen, damit die die id 500 haben und ich keine 500 Fahrzeuge besitze..
    Jemand eine Idee?

    Ok, sobald der Server Up ist und ich conncecte, sowie dannach /destroycars eingebe, fängt er bei 1 an. Danke :)


    Theoritisch könnte ich doch, vom Script aus, zb. 1min nach Serverstart den Befehl !vom script Aus! /destroycars senden oder nicht? Nur wie?

    Super! Das Speichern und Laden funktioniert nun einwandfrei. Er speichert sie richtig in KM und gibt es auch so wieder.


    Er zeigt auch jetzt nur eine Nachkommastelle an, danke dafür :)


    Habe noch eine andere Frage bezüglich dieser Autos...


    Ich habe ein /veh Befehl der wie folgt aussieht:


    if(strcmp(cmd, "/veh", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (Spieler[playerid][Admin] < 4)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /veh [autoid] [farbe1] [farbe2]");
    return 1;
    }
    new car;
    car = strval(tmp);
    if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "Fahrzeug-ID kann nicht unter 400 und über 611 sein!"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /veh [autoid] [farbe1] [farbe2]");
    return 1;
    }
    new color1;
    color1 = strval(tmp);
    if(color1 < 0 || color1 > 126) { SendClientMessage(playerid, COLOR_GREY, "Die Farbe kann nicht unter 0 und über 126 sein!"); return 1; }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /veh [autoid] [farbe1] [farbe2]");
    return 1;
    }
    new color2;
    color2 = strval(tmp);
    if(color2 < 0 || color2 > 126) { SendClientMessage(playerid, COLOR_GREY, "Die Farbe kann nicht unter 0 und über 126 sein!"); return 1; }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    new carid = AddStaticVehicleEx(car, X,Y,Z, 0.0, color1, color2, 60000);
    CreatedCars[CreatedCar] = carid;
    CreatedCar ++;
    format(string, sizeof(string), "Fahrzeug %d wurde gespawned.", carid);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    return 1;
    }


    Das Problem ist hierbei nur, dass wenn man den Server startet und sich ein Auto spawnt zeigt er plötzlich an: "Fahrzeug 201 wurde gespawned".
    Wenn ich 2-3 Autos Spawne und paar Minuten warte, fängt er ab 1 an, sprich es funktioniert erst dann normal.
    Habe diese new´s erstellt:


    new CreatedCars[100];
    new CreatedCar = 0;


    Habe auch ein /destroycars Befehl wo die gespawneten Autos destroyed werden. Aber nicht die "verbuggten: 201..."
    Eine Idee?


    Zudem ist die Frage, wie ich jetzt abfrage ob ein Spieler in solch einem Auto sitzt, damit er den Motor starten kann..


    Mein Motor Befehl:


    for(new i=0;i<sizeof(lspdcar);i++)
    {
    if(vid == lspdcar[i])
    {
    if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 3)
    {
    if(motor[vid] == 1)
    {
    format(string, sizeof(string), "* %s stellt den Motor ab.", SpielerName(playerid));
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,light,alarm,doors,bonnet,boot,objective);
    motor[vid] = 0;
    }
    else if(motor[vid] == 0)
    {
    format(string, sizeof(string), "* %s betätigt die Zündung. Der Motor springt an!", SpielerName(playerid));
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,light,alarm,doors,bonnet,boot,objective);
    motor[vid] = 1;
    }
    }
    else { SendClientMessage(playerid,COLOR_GRAD2,"Du besitzt nicht die passenden Schlüssel für dieses Fahrzeug!"); }
    }
    }



    Hoffe kannst helfen :p


    Danke dir nochmal für alles und für die weiteren Hilfen :)

    Muss jetzt nur noch testen ob das Dividieren durch 1000 und beim laden das Multiplizieren mal 1000 klappt.


    Er schiesst mir aber folgenden Error raus:


    error 022: must be lvalue (non-constant)


    In dieser Zeile: vehicles[lspdcar[j]][vehicleKm]*1000 = dini_Float(autos,"Gefahrene KM");


    P.S: Wenn dies gelöst wäre kann ich auch testen ob er nur eine Stelle nach dem komma zeigt :)


    E: Text verändert

    Mir gefällt deine Einstellung :)


    Nun denn, ich will die Kilometer natürlich in Kilometer haben. Sprich er soll sie in KM anzeigen ( was er tut ) und auch so speichern.
    Das mit dem mal 1000 Multiplizieren ist garkeine schlechte Idee. Beim Speichern durch 1000 dividieren und beim laden mal 1000 Multiplizieren.


    Wie mach ich eigentlich, dass er mir nur eine Stelle nach dem Komma anzeigt? Sprich: 3.1
    Habe es zz. so: 3.23


    MfG :)

    Die Kilometer werden mir wie folgt angezeigt z.b. : Kilometer: 5.23
    Sprich die Distanz ist schon in KM angegeben.


    Egal, ich danke dir trotzdem für alles und deine Bemühungen, du hast es echt drauf :)
    Ich wäre nie auf die Idee gekommen - und viele andere bestimmt auch nicht - das laden ans Ende zumachen.
    Logisches Denken ist dabei, aber bei sowas .. hätt ich nie gedacht :D


    Danke dir nochmals :)


    Bis dann

    Wieder mal einige Dinge getestet,
    das mit dem Speichern/Laden klappt nun wunderbar. Habe das Laden einfach ans ende von GamemodeInit gepackt. Danke dafür.
    Zwecks den 2.33 usw. hat dein Code auch funktioniert, ebenfalls danke.


    Nun aber, sobald ich den Server ausmache, dividiert er jedesmal die KM durch 1000. Ich könnte auch einfach die Division entfernen, dann ist es aber nicht mehr so übersichtlich.
    Eine Idee wie er dies einmalig machen könnte und dann niewieder? Wenn nicht, dann lass ich einfach die Division weg, jeder kann durch 1000 Rechnen, das ist nicht das Problem.
    Das wichtigste war einfach, dass er alles Speichert/Lädt und nicht zu viel anzeigt.


    E:


    Das heisst also, ich muss jetzt für jedes erstellte Fahrzeug das hier machen?:


    for (new i=0; i < sizeof(lspdcar); i++)
    {
    format(autos, sizeof(autos), "/Autos/lspdcar%i.ini", i);
    if ( !dini_Exists(autos) )
    {
    dini_Create(autos);
    }
    dini_FloatSet(autos,"Gefahrene KM", vehicles[lspdcar[i]][vehicleKm]);
    }


    Bloß anstatt lspdcar die anderen Definitonen...


    Wie sieht das aus bei den Fraktionsautos? Habe vor ein Fraktionsautohaus zu machen für Gangs und Mafien.
    Dort wird ebenfalls das Auto erstellt.


    Dann einfach z.b. gangcar[vehicle][++] = CreateVehicle(...)


    Nur ein Beispiel ob das so funktionieren würde.. und bei Load/Save car anstatt lspdcar gangcar... ?
    Müsste so klappen eigentlich..

    So, nach gefühlten 100 tests habe ich nun ein überblick vom ganzen.


    Mit deinem Schnipsel speichert er alles. Dennoch schreibt er eine Falsche Zahl um genauer zu sein nimmt er die Kilometer mal 1000.
    Z.b. Ich bin 5km gefahren zeigt aber 5000 an.
    Habe dann ganz einfach das hier gemacht aber nur bei savecar


    (vehicles[lspdcar[i]][vehicleKm]/1000)


    Sobald ich den Server ausschalte und einschalte, ladet er nichts. dennoch ist in der Datei der alte Wert.


    Idee?


    Zudem wunder ich mich, angenommen ich lösche nochmal alle Dateien von den Fahrzeugen.
    Ich Starte den Server -> Es werden neue erstellt -> in den Dateien steht überall 0.000000km gefahren.
    Sobald ich aber in eines der Fahrzeuge einsteige zeigt er bei den LSPD Cars 2.33 zu viel an. Sprich ich bin noch kein stück gefahren, zeigt aber 2.33 an. Dies wird dann nach serverclose logischerweise gespeichert.
    Bei den Motorrädern zeigt er komischerweise nur 2.31 zu viel an und beim Infernus 2.30.


    Misteriöse angelegenheit.


    Ich poste mal überall wo ich [vehicleKm] benutze:


    enum vehicleData {
    Float:vehicleKm,
    Float:vLastX,
    Float:vLastY,
    Float:vLastZ
    };
    new vehicles[MAX_VEHICLES][vehicleData];


    bei save- und loadcar


    und bei meinem Speedometer:


    forward Speedometer(playerid);
    public Speedometer(playerid)
    {
    if ( IsPlayerConnected(playerid) )
    {
    if( IsPlayerInAnyVehicle(playerid) )
    {
    new string[255];
    new vehicleid = GetPlayerVehicleID(playerid);
    if ( GetPlayerState(playerid) == PLAYER_STATE_DRIVER )
    {
    new Float:x2, Float:y2, Float:z2, Float:output;
    GetVehiclePos(vehicleid, x2, y2, z2);
    output = floatsqroot(floatpower(floatabs(floatsub(x2, vehicles[vehicleid][vLastX])), 2)+floatpower(floatabs(floatsub(y2, vehicles[vehicleid][vLastY])), 2)+floatpower(floatabs(floatsub(z2, vehicles[vehicleid][vLastZ])), 2));
    vehicles[vehicleid][vehicleKm] += output;
    vehicles[vehicleid][vLastX] = x2; vehicles[vehicleid][vLastY] = y2; vehicles[vehicleid][vLastZ] = z2;
    }
    format(string,sizeof(string),"%.2f",(vehicles[vehicleid][vehicleKm]/1000));
    TextDrawSetString(Speedo7[playerid], string);
    }
    }
    return 1;
    }


    Hoffe kannst helfen.. bin selber überfordert. Danke dir jetzt schon für deine ganzen Bemühungen :)  Jeffry:

    Habe grad nachgeschaut, in einer Datei sei ein Auto ca 5000 KM gefahren, was nicht sein kann..


    Hier mal ein Beispiel wie ich meine Fahrzeuge erstelle:
    lspdcar[0]=CreateVehicle(596,1558.9219,-1710.9008,5.5059,0.6407,162,1,-1); // lspdcar1
    lspdcar[1]=CreateVehicle(596,1562.3774,-1710.7616,5.5064,3.3127,162,1,-1); // lspdcar2
    lspdcar[2]=CreateVehicle(596,1565.8649,-1710.9077,5.5042,357.2282,162,1,-1); // lspdcar3
    lspdcar[3]=CreateVehicle(596,1570.1058,-1710.8044,5.5062,0.8896,162,1,-1); // lspdcar4
    lspdcar[4]=CreateVehicle(596,1574.3531,-1710.7686,5.5069,2.1109,162,1,-1); // lspdcar5
    lspdcar[5]=CreateVehicle(596,1578.7871,-1710.6569,5.5072,358.7660,162,1,-1); // lspdcar6
    lspdcar[6]=CreateVehicle(596,1583.6697,-1710.6595,5.5069,356.7186,162,1,-1); // lspdcar7
    lspdcar[7]=CreateVehicle(596,1587.5743,-1710.6823,5.5067,359.1919,162,1,-1); // lspdcar8
    lspdcar[8]=CreateVehicle(596,1591.5151,-1710.6036,5.5063,1.1170,162,1,-1); // lspdcar9
    lspdcar[9]=CreateVehicle(596,1595.5037,-1710.6510,5.5070,0.3941,162,1,-1); // lspdcar10


    Aus dem prinzip, da ich die Fahrzeuge noch brauche.. Z.b. für eine Abfrage für /motor ob der Spieler in solch einem Auto ist und berechtigt ist...


    Könntest du mit Teamviewer oder so mal schauen wenn du Lust hättest? Oder einfach mal reden und so sagen^^

    Habe mich bedankt, da er mir den Code nochmal übersichtlich hingeschrieben hat.


    Habe nun dein Schnipsel getestet, er erstellt zwar die Dateien aber nicht die Eigentlichen Fahrzeug ids.
    Er speichert dennoch die Kilometer bloß es wird jetzt schwer 2000 Dateien durchzugucken in welche Datei genau..


    Habe gerade nachgeschaut, habe zz. 141 Autos auf meinem Server.


    D.h. er müsste eig. 141 Dateienerstellen.
    er erstellt aber genau 2001 Dateien.
    Die Dateien sehen wie folgt aus:


    0
    1
    10
    100
    1000
    1001 - 2001
    2
    20
    200
    2000


    Eine Idee? :D


    MfG

    Ohjeeee


    Danke für den Hinweis, werde es ändern und testen ...
    Ohmann.. zumglück tut dummheit nicht weh :D


    Danke dir :)


    //E: Hat funktioniert danke nochmals :)
    Da ich bemerkt habe, dass du dich gut auskennst mit Scripten usw.
    Könntest du ebend mal in einem Threadvon mir nachgucken? Benötige es dringend... Jeffry:

    Huhu :)


    Bin soebend von Dini auf MySQL umgestiegen. Habe ein Tutorial im Internet gefolgt und alles gemacht so wie es dort stand.
    Habe die database.sql umgeschrieben in meine Variablen -> Importiert -> Alles wunderbar.
    Wenn ich mir ein neuen Spieler erstelle und Offline gehe werden alle Daten gespeichert. Z.b. Geld 50.000 oder Level 1.


    Wenn ich mich aber einlogge werden plötzlich alle Werte auf 1 gesetzt. Jemand eine Idee?


    Hier das Laden:


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new string[128];
    Spieler[playerid][Registriert] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Maennlich] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Weiblich] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Skin] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Money] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][ImTutorial] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Perso] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][DrivLic] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][TheoPruefung] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Level] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][PraxisPruefung] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Tutorial] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Admin] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Level] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Team] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Rank] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][FlugLic] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][GunLic] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][AngelLic] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][BootLic] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Muted] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][MuteTime] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Jailed] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][JailTime] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][JailType] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Spawnchange] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Leader] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Wanteds] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][KH] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][PayDayGeld] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Drugs] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Mats] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Nummer] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][pName] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Kills] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));
    Spieler[playerid][Tode] = mysql_GetInt("accounts", "Level", "Name", SpielerName(playerid));

    GivePlayerCash(playerid,Spieler[playerid][Money]);


    format(string, sizeof(string), "~b~Willkommen~n~~w~%s", SpielerName(playerid));
    GameTextForPlayer(playerid, string, 3000, 1);


    SetPlayerSkin(playerid,Spieler[playerid][Skin]);
    SetSpawnInfo(playerid, 0,Spieler[playerid][Skin],0.0,0.0,200.0,0.0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    Danke im voraus :)


    MfG