Beiträge von Jeffry

    Klar, das geht, nur ist es relativ komplex.
    Willst du, dass man mehrere aufklappen kann, oder wenn man eins aufklappt, dass das andere geschlossen wird?

    Du musst eben standardmäßig sInfo[playerid][firma] auf -1 setzen, und wenn der Spieler dann bereits eines hat:
    if(sInfo[playerid][firma] != -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du hast bereits eine Firma.");


    Und bei OnPlayerConnect eben:
    sInfo[playerid][firma]=1;
    zu:
    sInfo[playerid][firma]=-1;


    Beim Registrieren auch auf -1 setzen.

    ocmd:inv(playerid,params[])
    {
    new string[256];
    for(new i=0; i<sizeof(ItemInfo[]); i++)
    {
    if(ItemInfo[playerid][ItemsEnum:i]==0) continue;
    format(string,sizeof(string),"%s%s (%i)\n",string, ItemName(i), ItemInfo[playerid][ItemsEnum:i]);
    }
    if(!strlen(string)) return SendClientMessage(playerid,C_Error,"Du hast keine Gegenstände in deinem Inventar.");
    ShowPlayerDialog(playerid,DIALOG_Inventar,DIALOG_STYLE_LIST,"Inventar",string,"Wählen","Abbrechen");
    return 1;
    }


    stock ItemName(i)
    {
    new name[32];
    switch(i)
    {
    case 0: name = "Schlagring";
    case 1: name = "Golfschlaeger";
    default: name = "Unbekannt";
    }
    return name;
    }

    Das weiß ich nicht.
    Normalerweise gibt es da keine Probleme.


    Schreibt er den MD5 Wert denn in die Tabelle rein, oder schlägt schon das fehl?

    Kannst du bitte mal die Koordinaten der Plätze schicken? Dann kann ich oder jemand anderes es ausprobieren. Das dürfte schneller gehen, als zu raten wo der Fehler ist.



    @Mencent: Das passt so, das kann man so machen. Es wird dann entsprechend true oder false ausgegeben.

    Also bei mir klappt das Grün.


    Was mir aber an deinem Code in PN aufgefallen ist:
    SetTimerEx("Laune", 60000*2, true, "u",playerid);
    zu:
    SetTimerEx("Laune", 60000*2, true, "d",playerid);


    u existiert bei SetTimerEx nicht, das ist eine Erfindung von sscanf.


    Außerdem, wenn du den Timer bei OnPlayerConnect startest, dann startest du ihn jedes mal wieder, wenn ein neuer Spieler verbindet, so hast du irgendwann 10 Timer auf der gleichen ID laufen.
    Sinnvoll wäre ein Timer, der eine Schleife durch alle Spieler enthält.

    Dann versuche mal:
    printf("i: %d | Face: %d | Range: %d", i, PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 1), IsPlayerInRangeOfPoint(playerid, 4, FirePos[i][0], FirePos[i][1], FirePos[i][2]));
    if(PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 1) && IsPlayerInRangeOfPoint(playerid, 4, FirePos[i][0], FirePos[i][1], FirePos[i][2]))
    zu:
    printf("i: %d | Face: %d | Range: %d", i, PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 10.0), IsPlayerInRangeOfPoint(playerid, 14.0, FirePos[i][0], FirePos[i][1], FirePos[i][2]));
    if(PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 10.0) && IsPlayerInRangeOfPoint(playerid, 14.0, FirePos[i][0], FirePos[i][1], FirePos[i][2]))


    Möglicherweise reicht es, die Distanz anzupassen.