Objekt erstellen Bug

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
  • Moin zusammen,


    ich habe in letzter Zeit ein seehr merkwürdiges Problem beim Erstellen von bestimmten Objekten. Und zwar werden die Objekte teilweise doppelt erstellt. Dieser Fehler tritt auf seitdem ich das entsprechende Objekt um 180 drehen wollte, da es dann in die richtige Richtung ausgerichtet ist.
    Das ganze kann man nur schwer erklären, aber diese Bilder sollten es erklären.


    Zuerst wenn das ganze Ingame erstellt wird, funktioniert es:



    Code:


    uBlitzer[i][ubObject] = CreateDynamicObject(18880, x, y, z-1.2, 0.0, 0.0, (rz-180));


    Dann, wenn die Objekte später geladen und erstellt werden, scheint es nicht mehr zu klappen:



    Code:


    uBlitzer[slot][ubObject] = CreateDynamicObject(18880, uBlitzer[slot][ubX], uBlitzer[slot][ubY], uBlitzer[slot][ubZ]-1.2, 0.0, 0.0, (uBlitzer[slot][ubAng]-180.0));


    Ich weiß echt nicht weiter und wäre über Hilfe erfreut.


    Mfg,
    UncleSub


    //Edit: Push und bearbeiten des Themas.
    //Edit 2: Beitrag wurde nicht gepusht

    2 Mal editiert, zuletzt von UncleSub () aus folgendem Grund: Push und Thema bearbeitet

  • Du musst uns mehr aus dem Script zeigen. besonders auch den teil wo das Objekt gedreht wird. auf der aktuellen Grundlage lässt sich kein Fehler feststellen.


    Blitzer Erstellen, dies funktioniert:



    stock CreateBlitzer(Float:x, Float:y, Float:z, Float:rz, MaxSpeed, Winkel = NORMAL_BLITZER)
    {
    for(new i; i < MAX_U_BLITZER; i++)
    {
    if(uBlitzer[i][ubErstellt] == false)
    {
    #if !defined BLITZER_NO_SAVE
    new string[256];
    format(string, sizeof(string), "INSERT INTO `Blitzer` (`bID`, `bX`, `bY`, `bZ`, `bRZ`, `bMaxSpeed`, `bWinkel`) VALUES ('%i', '%f', '%f', '%f', '%f', '%i', '%i')", i, x, y, z, rz, MaxSpeed, Winkel);
    db_free_result(db_query(BlitzerDB, string));
    #endif
    uBlitzer[i][ubObject] = CreateDynamicObject(18880, x, y, z-1.2, 0.0, 0.0, (rz-180));
    uBlitzer[i][ubGebiet] = CreateDynamicRectangle(x-10, y-10, x+10, y+10);
    uBlitzer[i][ubID] = i;
    uBlitzer[i][ubX] = x;
    uBlitzer[i][ubY] = y;
    uBlitzer[i][ubZ] = z;
    uBlitzer[i][ubAng] = rz;
    uBlitzer[i][ubMaxSpeed] = MaxSpeed;
    uBlitzer[i][ubWinkel] = Winkel;
    uBlitzer[i][ubErstellt] = true;
    return i;
    }
    }
    return print(">>> [Uncles Blitzer] FEHLER: Beim erstellen vom Blitzer ist ein Fehler aufgetreten. (MAX_U_BLITZER zu klein?) <<<") & 0;
    }


    Blitzer Laden:



    stock LoadBlitzer()
    {
    new rows, buffer[24], DBResult:result, slot;
    result = db_query(BlitzerDB, "SELECT * FROM `Blitzer`");
    rows = db_num_rows(result);
    if(rows == 0) return print("* 0 Blitzer geladen *");
    for(new i; i < rows; i++)
    {
    db_get_field(result, 0, buffer, sizeof(buffer)), slot = strval(buffer), uBlitzer[slot][ubID] = slot;
    db_get_field(result, 1, buffer, sizeof(buffer)), uBlitzer[slot][ubX] = floatstr(buffer);
    db_get_field(result, 2, buffer, sizeof(buffer)), uBlitzer[slot][ubY] = floatstr(buffer);
    db_get_field(result, 3, buffer, sizeof(buffer)), uBlitzer[slot][ubZ] = floatstr(buffer);
    db_get_field(result, 4, buffer, sizeof(buffer)), uBlitzer[slot][ubAng] = floatstr(buffer);
    db_get_field(result, 5, buffer, sizeof(buffer)), uBlitzer[slot][ubMaxSpeed] = strval(buffer);
    db_get_field(result, 6, buffer, sizeof(buffer)), uBlitzer[slot][ubWinkel] = strval(buffer);
    uBlitzer[slot][ubObject] = CreateDynamicObject(18880, uBlitzer[slot][ubX], uBlitzer[slot][ubY], uBlitzer[slot][ubZ]-1.2, 0.0, 0.0, (uBlitzer[slot][ubAng]-180));
    uBlitzer[slot][ubGebiet] = CreateDynamicRectangle(uBlitzer[slot][ubX]-10, uBlitzer[slot][ubY]-10, uBlitzer[slot][ubX]+10, uBlitzer[slot][ubY]+10);
    uBlitzer[slot][ubErstellt] = true;
    db_next_row(result);
    }
    db_free_result(result);
    printf("* %i Blitzer geladen *", rows);
    return 1;
    }


    Ich hoffe hier hat noch irgendwer eine Ahnung, was falsch ist.


    Edit: Push (Letztes bearbeiten/Letzter Beitrag: 25.06.2013, 19:36)
    Es scheint so, als ob hier niemand eine brauchbare Lösung hat. Vielleicht weiß ja einer der Experten weiter: Kaliber: Beavis: @BlackAce: IPrototypeI: und die anderen halt (Sorry, dass ich euch direkt anspreche, aber ich bräuchte mal eine Lösung des Problems..)

    Einmal editiert, zuletzt von UncleSub () aus folgendem Grund: Push

  • schonmal gedebuggt beim laden?
    Wenn ich es richtig verstanden hab dann stellen die sich alle an einer stelle ne?


    1. Habe bereits beim Laden prints eingefügt, weil ich dachte, dass evtl die Funktion 2x aufgerufen wird o.Ä., es scheint richtig zu sein. Die Rotation hab ich auch geprintet, aber die Werte sind auch richtig.
    2. Die Objekte sind an der selben Stelle (2 Stück), eins in der richtigen Rotation, das andere 180° gedreht.


    Edit:
    Ebenfalls merkwürdig ist, dass nach einem gmx alles ohne Probleme geladen und erstellt wird. Doch nach einem kompletten aus- und einschalten werden an den Stellen immer die 2 Objekte erstellt..

    Einmal editiert, zuletzt von UncleSub () aus folgendem Grund: Was hinzugefügt

  • 1. Habe bereits beim Laden prints eingefügt, weil ich dachte, dass evtl die Funktion 2x aufgerufen wird o.Ä., es scheint richtig zu sein. Die Rotation hab ich auch geprintet, aber die Werte sind auch richtig.
    2. Die Objekte sind an der selben Stelle (2 Stück), eins in der richtigen Rotation, das andere 180° gedreht.


    Edit:
    Ebenfalls merkwürdig ist, dass nach einem gmx alles ohne Probleme geladen und erstellt wird. Doch nach einem kompletten aus- und einschalten werden an den Stellen immer die 2 Objekte erstellt..


    Hm also ich kann dir da auch nicht weiterhelfen ich hab keinen Fehler gesehen auch beim testen ist mir auch nix aufgefallen.


    Siehe:


    Pastebin:
    http://pastebin.com/1teFBGXa


    Es könnte auch an ihrgend was anderm liegen was den code beeinflussen könnte , aber die funktion wird ja nicht doppelt aufgerufen sonst würde ich sagen das du main() raus genommen hast.
    Aber dem ist ja nicht so.


    //edit mir ist gerade aufgefallen das du eine Include veröffentlicht hast , welche dieses System ja beinhaltet und das hier ist ja wahrscheinlich auch das gleiche vllt mit abänderungen oder ohne ist ja auch egal. Nur hast du direkt das problem mit deiner include oder ist das erst seit dem du die rotation geändert hast was ja sinnlose ist das es deswegen doppelt erstellt wird.

  • Hmm..Das ist natürlich äußerst Mysteriös.


    seit dem du die rotation geändert hast was ja sinnlose ist das es deswegen doppelt erstellt wird.


    Ja, seitdem ich dort das geändert habe. Ich habe dies gemacht, da der Blitzer sonst in die Falsche Richtung ausgerichtet ist, was eigentlich nicht so schlimm wäre, wenn ich nicht jetzt eingefügt hätte, dass der Blitzer erkennt, ob man vor oder hinter dem Blitzer ist. Wenn man dann von einem frontblitzenden Blitzer, der einen aber mit der hinterseite blitzt, geblitzt wird, ist das schon merkwürdig..

  • Hmm..Das ist natürlich äußerst Mysteriös.



    Ja, seitdem ich dort das geändert habe. Ich habe dies gemacht, da der Blitzer sonst in die Falsche Richtung ausgerichtet ist, was eigentlich nicht so schlimm wäre, wenn ich nicht jetzt eingefügt hätte, dass der Blitzer erkennt, ob man vor oder hinter dem Blitzer ist. Wenn man dann von einem frontblitzenden Blitzer, der einen aber mit der hinterseite blitzt, geblitzt wird, ist das schon merkwürdig..


    Hm also ich habs nochmal mit deiner include probiert heir ist das selbe das es problem los funktioniert , mal so eine frage testest du das direkt auf deinem server oder erstmal local.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hm also ich habs nochmal mit deiner include probiert heir ist das selbe das es problem los funktioniert , mal so eine frage testest du das direkt auf deinem server oder erstmal local.


    Lokal. Die Include die man downloaden kann ist aber nicht die, mit der ich teste.
    Ich werde mal einen Freund bitten, ob er das bei sich testen kann. Falls es dort funktioniert, liegt es an etwas anderem.