Wert einer for-Schleife ändern

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo


    Ich habe ein kleines Problem, wo ich nicht wiess, wie ich das beheben kann. Ich will, dass ein Auto beim Tod gelöscht wird und ein neues dafür spawnt. Das ganze wird jedoch mit einer For-Schleife gemacht, da es auch abgespeichert werden soll. Nun habe ich das Problem, dass wenn die alte VehicleID nicht mehr gleich die neue VehicleID beim Spawnen sein wird, ein Problem entsteht.


    FDaten[i][fCarID] = CreateVehicle(FDaten[i][fModelID],FDaten[i][fX],FDaten[i][fY],FDaten[i][fZ],FDaten[i][fA],FDaten[i][fFarbe1],FDaten[i][fFarbe2], -1);


    Wenn ich bei OnVehicleDeath das Auto zerstören lasse, muss ich ja den Wert "i" irgendwie auf die neue VehicleID umändern, da es sonst zu Problemen kommt. fCarID wird ja durch die VehicleID bestimmt, wie muss ich sowas machen. Hab einmal einen groben Aufbau zur Hilfe gemacht:


    for(new i = 0;i<_cache_fahrzeug;i++)
    {
    //1.Teil: Zerstören und Resetten
    if(FDaten[i][fCarID] != vehicleid) continue;
    FDaten[i][fCarId] = -1;
    DestroyVehicle(vehicleid);
    //2.Teil: Erschaffen mit neuer FCarID und Tuning
    Wenn Neue FCarID Verwahrt == 0
    {
    SpawnNeuesFahrzeuge
    Tuning
    }
    Else
    {
    SpawnNeuesFahrzeuge
    Tuning
    }
    }


    Ich hoffe, Ihr versteht grob was ich meine, wäre um Hilfe sehr sehr froh.
    MfG dUDA

  • Ich denke du hast den richtigen Grundgedanken, verstehe nur nicht genau deinen Aufbau.


    Warum gehst du es nicht anders an und verwendest dein Array FDaten für die jeweilige vehicleid:



    OnVehicleSpawn(vehicleid)
    {
    FDaten[vehicleid][wasauchimmer]=blabla;
    }


    Somit werden bei jedem Spawn gleich die richtigen Daten der richtigen Vehicleid zugesignt.


    Jedesmal zu schleifen und die vehid in eine extra Variable packen ist überflüssig.


    Dann kannst auch direkt bei VehicleDeath das richtige machen:


    OnVehicleDeath(vehicleid)
    {
    FDaten[vehicleid][wasauchimmer]=-1; //parameter resetten
    }

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Halllo


    Jein


    Das Fahrzeug soll mithilfe von Daten erstellt werden, die aus einer Datei ausgelesen werden.Grundidee:


    Ich lösche nur das Auto und erstelle ein neues Auto, jedoch ändert sich ja dann die VehicleID und der Wer "i", der ja sozusagen die fCarID ist, ist ein anderer, ich brauch die Daten des alten "i" aber, um das Auto wieder zu erstellen. Ich muss das so machen, da SetVehiclePos nur mit einem Player richtig funktioniert.


    MfG dUDA

  • Dann würde ich aber die Datei ID aber als variable speichern und nicht die vehicleid, also z.B.


    FDaten[vehicleid][fCarId] = ...


    So machst du es ja auch mit player arrays -> pInfo[playerid][...].


    Insgesamt ändert sich der Loop Umfang dann drastisch, du musst kaum mehr loopen.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Super Ray und dann müsste er jedesmal den Cache neu leeren und kann eh sofort das fCarID löschen womit er dann wieder sich weiter verwirrt ^^. Es war auch seine Entscheidung ob er das Script CPU oder RAM freundlich macht.



    for(new i = 0;i<_cache_fahrzeug;i++)
    {
    //1.Teil: Zerstören und Resetten
    if(FDaten[i][fCarID] != vehicleid) continue;
    FDaten[i][fCarId] = -1; //Diese Zeile brauchst du nichtmal ^^
    DestroyVehicle(vehicleid);
    //2.Teil: Erschaffen mit neuer FCarID und Tuning
    Wenn Neue FCarID Verwahrt == 0
    {
    //SpawnNeuesFahrzeuge
    //Tuning

    //Du lässt halt einfach das Fahrzeug neu erstellen?
    FDaten[i][fCarID] = CreateVehicle(FDaten[i][fModelID],FDaten[i][fX],FDaten[i][fY],FDaten[i][fZ],FDaten[i][fA],FDaten[i][fFarbe1],FDaten[i][fFarbe2], -1);
    //Weitere Kommentare im Text unten ^^
    }
    else
    {
    //SpawnNeuesFahrzeuge
    //Tuning
    }
    }



    Lass dich nicht verwirren undbehalte dein Konzept im Auge. Ich habe dir schonmal gesagt du solltest die Finger noch davon lassen, aber du willst es ja unbedingt ^^. Deine Variable i, auch wenn sie mit MAX_VEHICLES definiert wurde und eigentlich fast sagen will das die vehicleid gemeint ist, bleibt statisch und ist nur eine Ordnungszahl in dem Fall! MAX_VEHICLES erklärt dem Array nur wieviele PRIVAT Fahrzeuge es maximal geben kann, weshalb sie auch NICHTS mit der vehicleid ab jetzt zu tun hat. Du hast es ja erfolgreich geschafft die PrivatCarID mit der eigentlichen vehicleid zu unterscheiden (Laden/Speichern/Parken/...). Wieso also nicht jetzt auch? ^^. Als kleine Hilfe könntest du zB das machen:


    #define MAX_PRIVATCAR_ID (2000)


    und ersetzt bei dem new FDaten das MAX_VEHICLES durch MAX_PRIVATCAR_ID. Capiche ? ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Zitat

    Super Ray und dann müsste er jedesmal den Cache neu leeren und kann eh sofort das fCarID löschen womit er dann wieder sich weiter verwirrt ^^. Es war auch seine Entscheidung ob er das Script CPU oder RAM freundlich macht.


    Ehh, nö. Was du da vorschlägst bring keine Verbesserung zwecks CPU oder Ram Ressourcen, sondern ist entweder gleichzustellen mit dem oder schlechter als das was ich vorgeschlagen habe - aber gut ;).


    Er hat ja anscheinend eine Unique ID für jedes Auto also muss er die schon mit einbringen, nur geht das cleverer als so.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

    Einmal editiert, zuletzt von ray187 ()

  • Jetzt verstehe ich dich nicht ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!