Beiträge von Jeffry

    Das liegt daran, dass du diese Meldung mit return hinzugefügt hast:
    SendClientMessage(playerid,COLOR_RED,"Du besitzt keinen Schlüssel für dieses Fahrzeug.");


    Wann soll diese Meldung kommen?

    Hier ein Beispiel für die schwarzen Balken:
    Box1 = TextDrawCreate(0.0000, -118.0000, "~n~");
    TextDrawLetterSize(Box1, 1.0000, 26.0000);
    TextDrawUseBox(Box1, 1);
    TextDrawBoxColor(Box1, 0x000000FF);
    TextDrawFont(Box1, 0);
    TextDrawSetShadow(Box1, 0);
    TextDrawSetProportional(Box1, 0);


    Box2 = TextDrawCreate(0.0000, 310.0000, "~n~");
    TextDrawLetterSize(Box2, 1.0000, 19.0000);
    TextDrawUseBox(Box2, 1);
    TextDrawBoxColor(Box2, 0x000000FF);
    TextDrawFont(Box2, 0);
    TextDrawSetShadow(Box2, 0);
    TextDrawSetProportional(Box2, 0);

    if(pInfo[killerid][fraktion]==7 || pInfo[killerid][fraktion]==8 || pInfo[killerid][fraktion]==9 || pInfo[playerid][fraktion]==7 || pInfo[playerid][fraktion]==8 || pInfo[playerid][fraktion]==9)
    zu:
    if((pInfo[killerid][fraktion]==7 || pInfo[killerid][fraktion]==8 || pInfo[killerid][fraktion]==9) && (pInfo[playerid][fraktion]==7 || pInfo[playerid][fraktion]==8 || pInfo[playerid][fraktion]==9))

    Kommt drauf an was alles dort drin steht.


    Du kannst ja mal versuchen es auf 100 zu ändern, dann läuft es 10 mal schneller (100ms).
    Wenn Probleme auftreten kannst du es ja auch wieder zurück ändern.

    Hast du irgendwo außerhalb von Publics mal eine Variable oder ein enum-Wert "id" deklariert?
    Daran scheint es nämlich zu liegen, dass auf höherer Ebene - und das kann hier nur global sein - die Variable "id" bereits definiert wurde.


    Schau da mal nach und benenne das "id" dann um, zu "g_id" zum Beispiel.


    Alternativ kannst du in den Funktionen mit den Warnungen das "id" jeweils umbenennen, zu "l_id" zum Beispiel.

    Den Dialog kannst du so lassen wie er aktuell ist, und dann eben das:
    -> In OnDialogResponse von DIALOG_RADIO:
    ---> listitem 0: ShowPlayerDialog: DIALOG_RADIOKAT1 mit allen Radionamen von Kategorie 1
    ---> listitem 1: ShowPlayerDialog: DIALOG_RADIOKAT2 mit allen Radionamen von Kategorie 2

    Das liegt daran, dass das Pickup und das Label die ID 0 haben, und somit immer das vorherige gelöscht wird.
    Schreibe es so:
    updateHaus(id)
    {
    new string[128];
    if(hInfo[id][h_pickup] != -1)
    {
    DestroyPickup(hInfo[id][h_pickup]);
    }
    if(hInfo[id][h_text] != Text3D:-1)
    {
    Delete3DTextLabel(hInfo[id][h_text]);
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    hInfo[id][h_pickup]=CreatePickup(1273, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Zum Verkauf\nKosten: %i$\n/hauskaufen", hInfo[id][h_preis]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_RED, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    else
    {
    hInfo[id][h_pickup]=CreatePickup(1239, 1, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], -1);
    format(string,sizeof(string), "Besitzer: %s\n/enter", hInfo[id][h_besitzer]);
    hInfo[id][h_text]=Create3DTextLabel(string, COLOR_BUSBLUE, hInfo[id][h_x], hInfo[id][h_y], hInfo[id][h_z], 10, 0, 1);
    }
    return 1;
    }


    Füge bei OnGameModeInit das ein:
    for(new i = 0; i < sizeof(hInfo); i++)
    {
    hInfo[i][h_pickup] = -1;
    hInfo[i][h_text] = Text3D:-1;
    }


    Und setze die Variablen auch genau so zurück, wenn das Haus gelöscht wird, also überall dort, wo DestroyPickup und Delete3DTextLabel verwendet wird (außer in updateHaus, da es dort ja direkt danach neu erstellt wird).

    Dann musst du es so machen:


    ShowPlayerDialog: DIALOG_RADIO
    -> Da in OnDialogResponse:
    ---> listitem 0: ShowPlayerDialog: DIALOG_RADIOKAT1 mit allen Radionamen von Kategorie 1
    ---> listitem 1: ShowPlayerDialoh: DIALOG_RADIOKAT2 mit allen Radionamen von Kategorie 2


    -> In OnDialogResponse für DIALOG_RADIOKAT1
    ---> listitem 0: Erstes Radio in Kategorie 1 spielen
    ...


    gleiches für DIALOG_RADIOKAT2.