Beiträge von Jeffry

    Ja.


    Zwecks dem Mieten:
    Es wäre besser, eine neue Tabelle "Mieter" anzulegen, in der du die Haus ID und den Mieter-Name speicherst. So kannst du beliebig viele Mieter haben:
    1 | Hans
    1 | Horst
    2 | Fritz
    1 | Fritz
    3 | Tom
    2 | Horst
    1 | Tom
    ...

    Hast du es mal so versucht?
    ocmd:exit(playerid, params[])
    {
    for(new i=0; i<MAX_HOUSE; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][IntX],hInfo[i][IntY],hInfo[i][IntZ]))
    {
    SetPlayerPos(playerid, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    }
    return SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines Hauses!");
    }


    Stimmen die Koordinaten auch überein, oder hast du vielleicht falsche eingetragen?

    #pragma dynamic 1000000


    Füge das mal unter den Includes ein. Falls die Meldung nicht weg geht, erhöhe die Zahl etwas.





    EDIT: (Post unten)
    @Goldfire: Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke! :)

    Was hast du denn da gemacht? Schau dir mal den Code von mir an und den von dir.
    Warum hast du es nicht einfach nur kopiert?


    forward lookup();
    public lookup()
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInRangeOfPoint(i,1.0,3422.0671,-1810.0132,11.9972)) SetPlayerPos(i,3419.1365,-1815.3472,10015.5713);
    if(IsPlayerInRangeOfPoint(i,10.0,3419.1365,-1815.3472,10015.5713)) SetPlayerPos(i,3422.0671,-1810.0132,11.9972);
    }
    return 1;
    }

    Kannst du den Code bitte richig posten (erster Expander)?


    Dann erstelle bitte mal zwei Häuser und poste dann einen Screenshot wie es in der Datenbank aussieht.

    Nein, so nicht, PermanenT...


    public sekunde()
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if((gettime()-Bergarbeiter[i][aufladez]) >= 7 && Bergarbeiter[i][aufladez]!=0)
    {
    SetPlayerCheckpoint(i,Bergabfuhr_Stationen[berg_Checkpoint][B_fX],Bergabfuhr_Stationen[berg_Checkpoint][B_fY],Bergabfuhr_Stationen[berg_Checkpoint][B_fZ],Bergabfuhr_Stationen[berg_Checkpoint][B_fRad]);
    SendClientMessage(i,GRÜN,"Eisenerz abgeliefert!");
    Bergarbeiter[i][aufladez]=0;
    }
    }
    return 1;
    }


    Und:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(IsPlayerInRangeOfPoint(playerid,20,682.4080,823.6100,-27.3594))
    {
    if(PRESSED(2048))
    {
    if(!Bergarbeiter[playerid][aufladez])
    Bergarbeiter[playerid][aufladez] = gettime();
    }
    }
    if(RELEASED(2048) && Bergarbeiter[i][aufladez] != 0)
    {
    Bergarbeiter[i][aufladez]=0;
    SendClientMessage(i,ROT,"Du hast die Taste keine 7 Sekunden gedrückt");
    }
    return 1;
    }

    forward lookup();
    public lookup()
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInRangeOfPoint(i,1.0,3422.0671,-1810.0132,11.9972)) SetPlayerPos(i,3419.1365,-1815.3472,10015.5713);
    if(IsPlayerInRangeOfPoint(i,10.0,3419.1365,-1815.3472,10015.5713)) SetPlayerPos(i,3422.0671,-1810.0132,11.9972);
    }
    return 1;
    }


    So? Oder wie meinst du es?

    Nein.


    Mit einem Timer, der jede Sekunde durch alle Spieler loopt (Schleife) und das hier prüft:


    Timer bei OnGameModeInit erstellen.
    for-Schleife durch alle Spieler im Timer-Public und entsprechend abfragen.


    Es macht keinen Sinn für jeden Spieler einen Timer dafür zu erstellen.



    Bei OnPlayerKeyStateChange bleibt alles so wie es war.

    ocmd:sellhouse(playerid, params[])
    {
    new string[64];
    for(new i=0; i<MAX_HOUSE; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]))
    {
    if(hInfo[i][Gekauft] != 1) return SendClientMessage(playerid, error, "Dieses Haus kannst du nicht verkaufen!");
    if(strcmp(hInfo[i][Besitzer], SpielerName(playerid))) return SendClientMessage(playerid, error, "Dieses Haus gehört nicht dir!");
    hInfo[i][Gekauft] = 0;
    format(hInfo[i][Besitzer], 34, "");
    format(string, sizeof(string), "Besitzer: Niemand\nPreis: %d\nLevel: %d",hInfo[i][Kaufpreis],hInfo[i][Level]);
    Update3DTextLabelText(hInfo[i][Houselable], 0xB90000FF, string);
    GivePlayerMoney(playerid, hInfo[i][Kaufpreis]);
    return 1;
    }
    }
    return SendClientMessage(playerid, error, "Du bist nicht in der Nähe deines Hauses!");
    }