/Hausverkaufen

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
  • Gerade mal schnell gemacht, teste den mal:


    ocmd:hausverkaufen(playerid,params[])
    {
    for(new haus = 1; haus < MAX_HAUS; haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 1)return SendClientMessage(playerid,0x00FF00,"Dieses Haus gehört dir nicht!");
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]);
    new pfad[50];
    format(pfad,50,"/haus/%d.txt",haus);
    dini_Set(pfad,"Besitzer","Keiner");
    KillHaus(haus);
    LoadHaus(haus);
    }
    }
    return 1;
    }

    Back to the roots!

  • Soweit geht´s aber wenn man an einem anderen Haus steht was einem nicht gehört dann bekommt man trotztem das Geld.


    und ein Warning:


    C:\Users\Beny\Desktop\FUN.pwn(3637) : warning 203: symbol is never used: "Player"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Weiß aber nicht welche Zeile das ist, weil der Zeile 3637 anzeigt, und die liegt bei mir ganz unten im Script.

  • Das Liegt daran, das du Irgendwo im Script new Player; hast und das nicht nutzt.


    ocmd:hausverkaufen(playerid,params[])
    {
    for(new haus = 1; haus < MAX_HAUS; haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,true) == 0)
    {
    SendClientMessage(playerid,0x00FF00,"Dieses Haus gehört dir nicht!");
    return 1;
    }
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]);
    new pfad[50];
    format(pfad,50,"/haus/%d.txt",haus);
    dini_Set(pfad,"Besitzer","Keiner");
    KillHaus(haus);
    LoadHaus(haus);
    }
    }
    return 1;
    }

    Back to the roots!

    Einmal editiert, zuletzt von >> Andre << () aus folgendem Grund: True

  • Jo, habs gefunden.. :D mal kurz testen..


    Und wie mache ich es das man nur ein Haus kaufen kann ?


    Wäre echt geil wenn du das auch noch machst :):love:


    //Edit


    Wofür steht "Right" da ? :D


    C:\Users\Beny\Desktop\FUN.pwn(1587) : error 017: undefined symbol "right"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ah.. Danke hier ist der Kaufen Command:


    ocmd:kaufen(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)return SendClientMessage(playerid,0x00FF00,"Dieses Haus gehört dir bereits!");
    if(strcmp(HausInfo[haus][haus_besitzer],"Keiner",false))return SendClientMessage(playerid,0x00FF00,"Dieses Haus steht nicht zum Verkauf!");
    // wenn das Haus frei ist dann kaufen:
    if(GetPlayerMoney(playerid) < HausInfo[haus][haus_preis])return SendClientMessage(playerid,0x00FF00,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-HausInfo[haus][haus_preis]); // Geld abziehen
    new pfad[50];
    format(pfad,50,"/haus/%d.txt",haus); // Pfad formatieren
    dini_Set(pfad,"besitzer",name); // Besitzer überschreiben
    KillHaus(haus); // Hauspickup löschen
    LoadHaus(haus); // Haus laden
    }
    }
    return 1;
    }


    //Edit


    Jetzt failt der Verkaufen befehl total, wenn ich an irgend nem Haus bin kann ich einfach verkaufen und bekomme Geld, wenn ich an meinem Haus stehe steht da "Das ist nicht dein Haus"..

  • So: Teste mal


    ocmd:hausverkaufen(playerid,params[])
    {
    for(new haus = 1; haus < MAX_HAUS; haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 1)
    {
    SendClientMessage(playerid,0x00FF00,"Dieses Haus gehört dir nicht!");
    return 1;
    }
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]);
    new pfad[50];
    format(pfad,50,"/haus/%d.txt",haus);
    dini_Set(pfad,"Besitzer","Keiner");
    KillHaus(haus);
    LoadHaus(haus);
    }
    }
    return 1;
    }

    Back to the roots!


  • Immer noch ein Fail ich sag ja ich hab schon fast alles versucht, garnicht so leicht xD


    Also wenn man an einem freien Haus steht dann bekommt man trotztem das Geld..


    ocmd:verkaufen(playerid,params[])//HAUS SYSTEM
    {
    for(new haus = 1; haus < MAX_HAUS; haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 1)return SendClientMessage(playerid,0x00FF00,"Dieses Haus gehört dir nicht!");
    if(!strcmp(HausInfo[haus][haus_besitzer],"Keiner",false))return SendClientMessage(playerid,0x00FF00,"Dieses Haus ist bereits Verkauft!");
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]);
    new pfad[50];
    format(pfad,50,"/haus/%d.txt",haus);
    dini_Set(pfad,"Besitzer","Keiner");
    KillHaus(haus);
    LoadHaus(haus);
    }
    }
    return 1;
    }


    Versuch mal also bei mir gehts :D

  • Du musst doch einfach nur 1 if-Abfrage mehr einbauen.


    Beim Registrieren eines Spielers legst du eine neue Variable an: ''Haus_Anzahl = 0''
    Oben #define MAX_HAUS 1
    Bedeutet, dass jeder Spieler maximal 1 Haus haben kann.


    Beim Befehl für das Kaufen eines Hauses abfragen, ob die Spielervariable ''Haus_Anzahl'' gleich dem ''MAX_HAUS'' ist.
    Wenn ja, ''Du kannst nicht mehr Häuser kaufen''
    Wenn nein, Haus kaufen, Geld abziehen, Spielervariable ''Haus_Anzahl'' um 1 erhöhen.


    Fertig.


    //edit:
    Achja, beim Verkauf des Hauses die Spielervariable ''Haus_Anzahl'' natürlich um 1 senken...




  • der erste der mir das macht so das es Funktioniert bekommt 2,50€ via Paypal.. 8o