Gang Gebiet Wirt nicht angezeigt

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • hey ich hab mir da son Dynamisches Gang Gebiet gebaut doch ihren wie will er mir das nicht anzeigen auf der Minimap oder auf der Großen karte
    Ganz oben:

    /* Gang Gebiet */
    #define MAX_GANGGEBIETE 4
    new gangzone[MAX_GANGGEBIETE];
    /* Gang Gebiete */
    enum Gebiete
    {
    GangRevier_ID,
    Float:GangRevier_XM,
    Float:GangRevier_YM,
    Float:GangRevier_XN,
    Float:GangRevier_YN
    }
    new GangGebiet[MAX_GANGGEBIETE][Gebiete];

    OnGameModeInit:

    for(new GangRevier=1;GangRevier<MAX_GANGGEBIETE;GangRevier++)
    {
    gangzone[GangRevier] = GangZoneCreate(GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YM],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);
    printf("Geladen:%d",GangRevier);
    }

    OnPlayerSpawn:

    for(new GANG=0;GANG<MAX_GANGGEBIETE;GANG++)
    {
    GangZoneShowForPlayer(playerid, gangzone[GANG], 0xFFFF0096);
    }

    aus der Datenbank tut er auch alles laden
    wo ist da der Fehler?
    kann mir da bitte wer helfen?
    lg kifkat


    //edit gangzone[1] >> gangzone[GangRevier]

    Einmal editiert, zuletzt von Kevin B. ()

  • wie ich oben schrieb lädt er die Koordinaten aus der Datenbank, nur er zeigt sie nicht an
    stock GangRevirErstellen(Float:aGangRevier_XM,Float:aGangRevier_YM,Float:aGangRevier_XN,Float:aGangRevier_YN)
    {
    mysql_real_escape_string(query,query);
    format(query, sizeof(query), "INSERT INTO GangRevier(aGangRevier_XM,aGangRevier_YM,aGangRevier_XN,aGangRevier_YN) VALUES ('%f','%f','%f','%f')",aGangRevier_XM,aGangRevier_YM,aGangRevier_XN,aGangRevier_YN);
    mysql_query(query);
    return true;
    }
    //edit Text
    //edit kann mir da wer weiterhelfen?
    //edit kann mir da echt keiner helfen?

    3 Mal editiert, zuletzt von Kevin B. ()

  • for(new GangRevier=1;GangRevier<MAX_GANGGEBIETE;GangRevier++)
    Gibt es einen Grund, warum die for-Schleife bei 1 anfängt ?
    Die sollte wohl eher bei 0 anfangen.


    Ansonsten müssten wir mal den Code sehen, wo alles geladen wird (um mögliche Fehler dort auszuschließen).
    Achja, wofür wird GangRevier_ID verwendet? Scheint hier irgendwie überflüssig zu sein und verbraucht damit unnötig Speicher.

  • fangt bei eins an da in der Datenbank auch erst ab 1 angefangen wirt ^^
    ändert aba auch nix dran wen ich es ab 0 anfangen lasse
    So lade ich sie

    stock GangRevierLaden()
    {
    new result[150],GangRevierids = 1;
    mysql_query("SELECT * FROM GangRevier");
    mysql_store_result();
    if(!mysql_num_rows())
    {
    mysql_free_result();
    return 0;
    }
    while(GangRevierids<MAX_GANGGEBIETE && mysql_retrieve_row())
    {
    mysql_fetch_field_row(result,"id");
    GangGebiet[GangRevierids][GangRevier_ID] = strval(result);
    strdel(result,0,sizeof(result));

    mysql_fetch_field_row(result,"aGangRevier_XM");
    GangGebiet[GangRevierids][GangRevier_XM] = floatstr(result);
    strdel(result,0,sizeof(result));

    mysql_fetch_field_row(result,"aGangRevier_YM");
    GangGebiet[GangRevierids][GangRevier_YM] = floatstr(result);
    strdel(result,0,sizeof(result));

    mysql_fetch_field_row(result,"aGangRevier_XN");
    GangGebiet[GangRevierids][GangRevier_XN] = floatstr(result);
    strdel(result,0,sizeof(result));

    mysql_fetch_field_row(result,"aGangRevier_YN");
    GangGebiet[GangRevierids][GangRevier_YN] = floatstr(result);
    strdel(result,0,sizeof(result));
    GangRevierids++;
    }
    printf("<-- Gebiete geladen %d/%d -->",GangRevierids,MAX_GANGGEBIETE);
    return mysql_free_result();
    }

    das Klappt ja auch nur er Zeigt mir sie nicht an

  • Auf den ersten Blick fällt mir jetzt nichts auf.
    Würde mal gerne einen der Datensätze aus der Datenbank sehen.


    Und lass dir mal zwischen diesen beiden Zeilen (Z. 31-32)strdel(result,0,sizeof(result));
    GangRevierids++;
    mit printf("Gebiet geladen; ID = %i, XM = %f, YM = %f, XN = %f, YN = %f",GangGebiet[GangRevierids][GangRevier_ID],GangGebiet[GangRevierids][GangRevier_XM],GangGebiet[GangRevierids][GangRevier_YM],GangGebiet[GangRevierids][GangRevier_XN],GangGebiet[GangRevierids][GangRevier_YN]); ausgeben, welche Daten er tatsächlich lädt und poste das Ergebnis hier.


  • for(new GangRevier= 0;GangRevier<MAX_GANGGEBIETE;GangRevier++)
    {
    gangzone[GangRevier] = GangZoneCreate(GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YM],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);
    printf("Gebiet geladen; ID = %i, XM = %f, YM = %f, XN = %f, YN = %f",GangRevier,GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YM],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);
    }


    [18:55:03] Gebiet geladen; ID = 0, XM = 0.000000, YM = 0.000000, XN = 0.000000, YN = 0.000000
    [18:55:03] Gebiet geladen; ID = 1, XM = -1997.079956, YM = -1999.479980, XN = -2016.380004, YN = -2015.930053
    [18:55:03] Gebiet geladen; ID = 2, XM = -1961.930053, YM = -1956.569946, XN = -1956.469970, YN = -1960.150024
    [18:55:03] Gebiet geladen; ID = 3, XM = 0.000000, YM = 0.000000, XN = 0.000000, YN = 0.000000

    breadfish.de/wcf/attachment/4419/

  • Ah ich sehe das Problem.. es liegt an den Gangzonen.
    Wenn du deine Ganggebiete so erstellst:
    GangZoneCreate(GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YM],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);
    Dann muss der erste Parameter (GangRevier_XM) die Seite der Gangzone sein, die am Weitesten im Westen liegt, da es den Rand für den Westen festlegt;
    GangRevier_YM ist der südliche Rand der Gangzone;
    GangRevier_XN ist der östliche Rand der Gangzone;
    GangRevier_YN ist der westliche Rand der Gangzone.
    (http://wiki.sa-mp.com/wiki/GangZoneCreate)


    Wenn bei diesem Datensatz:
    Gebiet geladen; ID = 1, XM = -1997.079956, YM = -1999.479980, XN = -2016.380004, YN = -2015.930053
    also XM mit XN und YM mit YN vertauschen würdest, würde es funktionieren. ;)


    Mit freundlichen Grüßen,
    Piranha.

  • also so ?
    gangzone[GangRevier] = GangZoneCreate(GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);
    wen ja so funktioniert es leider auch nicht

  • Mit vertauschen meinte ich nicht ersetzen.
    Die Zeile kann so bleiben, du musst dann lediglich die Datensätze ändern.


    XM = -1997.079956, YM = -1999.479980, XN = -2016.380004, YN = -2015.930053
    Bei diesem Datensatz beispielsweise muss XM die Seite bzw. der Rand im Westen der Gangzone sein.
    YM die Seite bzw. der Rand im Süden..
    XN im Osten..
    YN im Norden..
    Darauf musst du dann bei jeder Gangzone achten, wenn du dir die Koordinaten holst.


    Der richtige Datensatz sieht dann so aus:
    XM = -2016.380004, YM = -2015.930053, XN = -1997.079956, YN = -1999.479980


    Wir gehen hierbei davon aus, dass GangZoneCreate so aussieht:
    GangZoneCreate(XM, YM, XN, YN);


    Habe hier jetzt mal schnell eine Skizze erstellt, die das ein wenig veranschaulichen soll:

    Hoffe, dass du es verstehst, da ich es nicht besser erklären kann. :)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • mhh ich bin nun so gelaufen

    bei den Befehl

    ocmd:gangrevier(playerid,params[])
    {
    if(sInfo[playerid][sSpieler_adminlevel] == 1991)
    {
    new Float:PasX,Float:PasY,Float:PasZ;
    if(StatusRevier == 0)
    {

    GetPlayerPos(playerid,PasX,PasY,PasZ);
    for(new GANG=1;GANG<MAX_GANG;GANG++)
    {
    GanRevierErstellen[GANG][GangRevier_XM] = PasX;
    }
    SendClientMessage(playerid,GELB,"1.Lauf Zu Nähsten Ecke");
    printf("Startus:%d",StatusRevier);
    StatusRevier = 1;
    return 1;
    }
    else if(StatusRevier == 1)
    {
    GetPlayerPos(playerid,PasX,PasY,PasZ);
    for(new GANG=1;GANG<MAX_GANG;GANG++)
    {
    GanRevierErstellen[GANG][GangRevier_YM] = PasX;
    }
    SendClientMessage(playerid,GELB,"2.Lauf Zu Nähsten Ecke");
    StatusRevier = 2;
    return 1;
    }
    else if(StatusRevier == 2)
    {
    GetPlayerPos(playerid,PasX,PasY,PasZ);
    for(new GANG=1;GANG<MAX_GANG;GANG++)
    {
    GanRevierErstellen[GANG][GangRevier_XN] = PasX;
    }
    SendClientMessage(playerid,GELB,"3.Lauf Zu Nähsten Ecke");
    StatusRevier = 3;
    return 1;
    }
    else if(StatusRevier == 3)
    {
    GetPlayerPos(playerid,PasX,PasY,PasZ);
    for(new GANG=1;GANG<MAX_GANG;GANG++)
    {
    GanRevierErstellen[GANG][GangRevier_YN] = PasX;
    SendClientMessage(playerid,GELB,"Du Hast Erfolgreich ein Gang Gebiet Erstellt!");
    GangRevirErstellen(GanRevierErstellen[GANG][GangRevier_XM],GanRevierErstellen[GANG][GangRevier_YM],GanRevierErstellen[GANG][GangRevier_XN],GanRevierErstellen[GANG][GangRevier_YN]);
    return 1;
    }
    StatusRevier = 0;
    }
    }
    return 1;
    }

    er zeigt es aba noch imma net an

  • Spoiler anzeigen
    ist doch bei mir auch nicht anders?
    //Edit kann mir da keine weiterhelfe?
    //edit

    Spoiler anzeigen
    Ich versteh es einfach nicht
    Setze ich es so rein
    gangzone[GangRevier] = GangZoneCreate(-2132.8125,120.1171875,-2003.90625,310.546875);Zeigt er sie an aba wen ich es so mache
    for(new GangRevier=1;GangRevier<MAX_GANGGEBIETE;GangRevier++)
    {
    //gangzone[GangRevier] = GangZoneCreate(-2132.8125,120.1171875,-2003.90625,310.546875);
    gangzone[GangRevier] = GangZoneCreate(GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YN],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YM]);

    Spoiler anzeigen
    }
    Zeigt er es nicht darauf hin hab ich es den mit Vertauschen probiert also so
    for(new GangRevier=1;GangRevier<MAX_GANGGEBIETE;GangRevier++)
    {
    //gangzone[GangRevier] = GangZoneCreate(-2132.8125,120.1171875,-2003.90625,310.546875);
    gangzone[GangRevier] = GangZoneCreate(GangGebiet[GangRevier][GangRevier_XM],GangGebiet[GangRevier][GangRevier_YM],GangGebiet[GangRevier][GangRevier_XN],GangGebiet[GangRevier][GangRevier_YN]);

    Spoiler anzeigen
    }
    Das Klappt aba auch nicht was ist den daran falsch bitte helft mir
    auch wen das Thema als erledigt mackiert ist es ist nicht erledigt ;(
    //edit weis da echt keiner weiter?
    ////edit Fehler Behoben

    4 Mal editiert, zuletzt von Kevin B. ()