Gangzonen Namen werden nicht angezeigt.

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 habe ein Gangzonensystem geschrieben, er ladet es und erstellt sie auch,
    dennoch wenn ich in die Zone hinein gehe und gebe /test ein bekomme ich den Zonennamen nicht angezeigt.


    /test ist nur drine ob das ich das System auch richtig geschrieben habe... zum testen halt.


    So sollte es aussehen:
    Sektor: No-Name


    So sieht es aus:
    Sektor:


    Code zur Namenabfrage der Zone:
    stock CheckSektorName(playerid)
    {
    new str[16];
    for(new i = 0; i <System[SektorOnline]; i++)
    {
    if(IsPlayerInArea(playerid, SektorInfo[i][sX1],SektorInfo[i][sY1],SektorInfo[i][sX2],SektorInfo[i][sY2]))
    {
    format(str, sizeof(str), "%s",SektorInfo[i][sName]);
    break;
    }
    }
    return str;
    }


    IsPlayerInArea:
    stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(X <= MinX && X >= MaxX && Y <= MinY && Y >= MaxY) {
    return 1;
    }
    return 0;
    }


    und zuguter letzt die Funktion wo den Zonennamen anzeigt.
    stock GenerateNeeds(playerid)
    {
    new string[256];
    format(string, 256, "~r~%s [UID: %d]~n~~n~~r~SAD: ~y~%d~n~~r~Erfahrung: ~w~%d~n~~r~Ehre: ~w~%d~n~~r~Level: ~w~%d~n~~r~Clan: ~w~%s~n~~r~Sektor: ~w~%s",
    SpielerInfo[playerid][pName], SpielerInfo[playerid][pUID], SpielerInfo[playerid][pSAD], SpielerInfo[playerid][pEXP],
    SpielerInfo[playerid][pEhre], SpielerInfo[playerid][pLevel],PlayerClan(SpielerInfo[playerid][pClan]), CheckSektorName(playerid));
    TextDrawSetString(SpielerInfo[playerid][Needs], string);
    return 1;
    }


    Ich hoffe ihr könnt mir helfen....


    Tochnas

  • stock CheckSektorName(playerid)
    {
    new str[16], sector = -1;
    for(new i = 0; i <System[SektorOnline]; i++)
    {
    if(IsPlayerInArea(playerid, SektorInfo[i][sX1],SektorInfo[i][sY1],SektorInfo[i][sX2],SektorInfo[i][sY2]))
    {
    sector = i;
    break;
    }
    }

    if(sector != -1)
    {
    format(str, sizeof(str), "%s", SektorInfo[sector][sName]);
    return str;
    }
    else
    {
    format(str, sizeof(str), "None");
    return str;
    }

    }


    Versuch das mal damit auszutauschen, dann müsste wenn du in keiner Zone bist None ausgegeben werden.


    Edit: Oder der Sektorname wird im Array nicht richtig gesetzt.

  • Also bin im Sektor und der zeigt mir "None" an.... also funktioniert eventuell "IsPlayerInArea" nicht....
    Doch der Sektor-Name wird im Array gespeichert, überprüfe ja alles per logs, und der Sektorname stimmt.


    Code
    [18:36:46] Sektor No-Name[1] geladen.
    1|0|No-Name|344.7781|-1579.5255|654.8240|-2115.6372
  • Danke Jeffry du hast mir den Bug behoben, das ich die Gangzone auf der ganzen Karte an gewissen stellen gesehen habe, aber der Name kommt immernoch nicht.


    Edit:


    Hier werden die Zonen geladen und erstellt.
    stock CreateSektor()
    {
    new MaxSektor, str[1024], Query[128];
    format(Query, sizeof(Query), "SELECT * FROM `sektor`");
    mysql_query(Query);
    mysql_store_result();
    MaxSektor = mysql_num_rows();
    for(new i = 0; i <MaxSektor; i++)
    {
    while(mysql_fetch_row(str))
    {
    sscanf(str, "e<p<|>{i}is[16]ffff>",SektorInfo[i]);
    Sektor[i] = GangZoneCreate(SektorInfo[i][sX1],SektorInfo[i][sY1],SektorInfo[i][sX2],SektorInfo[i][sY2]);
    System[SektorOnline] += 1;
    printf("Sektor %s[%d] geladen.\n%s", SektorInfo[i][sName],System[SektorOnline],str);
    }
    }
    mysql_free_result();
    }

  • Naja, wenigstens was.
    Wie ist denn "System[SektorOnline]" definiert? Kann es sein, dass die Schleife deswegen nicht richtig durchlaufen wird?
    Und wie ist dein IsPlayerInArea definiert? Ich hab da schon so manch unterschiedliche Varianten gesehen.


    EDIT: Wird die GanzZone richtig auf der Karte angezeigt? Wenn ja, dann liegt es nicht am Erstellen der GangZone (CreateSektor).

  • enum s_system {
    PlayerOnServer,
    SektorOnline, // hier
    OldHour,
    Text:MoneyBack, Text:BoxBack,
    Text:Uhrzeit,
    Text:Handel,
    HandelMin,
    HandelSec
    };
    new System[s_system];


    Wie du siehst beim erstellen der Zone steigt die Variable um eins.
    Und ebenfalls in der Log steht hinter dem Sektorname die ID was die Variable ist.


    IsPlayerInArea ist im ersten Post beinhaltet.

  • Ah, sorry. Hatte ich überlesen.
    if(X <= MinX && X >= MaxX && Y <= MinY && Y >= MaxY) {
    zu:
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
    Da hätten wir den Fehler.


    Als Beispiel: X muss GRÖßER als der kleinste Wert sein, siehe Zahlenstrahl:



    _________________________________________________________________________
    -1 0 1 2 3


    Sagen wir unsere Area geht von 1 bis 3: Zahl müss größer als 1 und kleiner als drei (bzw. jeweils gleich) sein.