Haussystem - IsPlayerInRangeofPoint- Geht Nicht

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 leute habe im Englischen SA:MP Forum ein einfaches Haussystem nachgescriptet , aber ich habe ein Problem. Ich bekomme keine Errors , aber ich kann kein Haus kaufen , er erkennt nicht , dass ich in der Nähe bin hier mal die codes:


    ocmd:kaufen(playerid,params[])
    {
    for(new i; i<MAX_HOUSES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
    {
    new Pname[24]; GetPlayerName(playerid, Pname, 24);
    if(strlen(dini_Get("Owned.ini", Pname)))
    if(GetPlayerMoney(playerid) < HouseInfo[i][HouseCost]) return SendClientMessage(playerid, 0xF60000AA, "Du hast nicht genug Geld für das Haus");
    if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "Dieses Haus hat schon einen Besitzer!");
    GivePlayerMoney(playerid, - HouseInfo[i][HouseCost]);
    GameTextForPlayer(playerid, "~r~Haus gekauft!", 2000, 3);
    HouseInfo[i][Owned] = 1;
    format(HouseInfo[i][HouseOwner], 24, "%s", Pname);
    dini_Set("Owners.ini", Pname, HouseInfo[i][HouseNames]);
    return 1;
    }
    SendClientMessage(playerid, 0xF60000AA, "Du bist nicht nah genug am Haus");
    return 1;
    }
    return 1;
    }
    enum houseinfo
    {
    HouseNames[60], //To save into the file
    HouseCost, //The house cost
    HouseOwner[24], // The house owners Name
    HouseIsBought, //If the house is brought or not
    Float:PickupX, // PickupX
    Float:PickupY, //PickupY
    Float:PickupZ, //PickupZ
    Float:TeleX, //The house location
    Float:TeleY, //The house location
    Float:TeleZ, //The house location
    Interior, //The house Interior
    HouseSell, //House sell price
    Owned,
    Virtual
    }


    new HouseInfo[MAX_HOUSES][houseinfo]; //It saves all the info in this variable.


    stock CreateHouse(Filename[], Cost, Float:Pickupx, Float:Pickupy, Float:Pickupz, Float:Telex, Float:Teley, Float:Telez, interior, sell)
    {
    if(!dini_Exists("Owners.ini"))
    {
    dini_Create("Owners.ini");
    }
    HouseCount ++;
    new ID = HouseCount; //HouseID
    format(HouseInfo[ID][HouseNames], 60, "%s", Filename); //Saves the HouseName into a variable
    HouseInfo[ID][HouseCost] = Cost;
    HouseInfo[ID][HouseIsBought] = 0;
    HouseInfo[ID][PickupX] = Pickupx;
    HouseInfo[ID][Virtual] = 2000000 + ID;
    HouseInfo[ID][PickupY] = Pickupy;
    HouseInfo[ID][PickupZ] = Pickupz;
    HouseInfo[ID][TeleX] = Telex;
    HouseInfo[ID][TeleY] = Teley;
    HouseInfo[ID][TeleZ] = Telez;
    HouseInfo[ID][Interior] = interior;
    HouseInfo[ID][HouseSell] = sell;
    if(strlen(dini_Get("Owners.ini", Filename))) //This is to see if there is any owner.
    {
    format(HouseInfo[ID][HouseOwner], 24, "%s", dini_Get("Owners.ini", Filename));
    HouseInfo[ID][Owned] = 1;
    }
    PickupID[ID] = CreatePickup(1273, 23, Pickupx, Pickupy, Pickupz, -1); //Creates the pickup :).
    Create3DTextLabel("House", 0x00A0F6AA, Pickupx, Pickupy, Pickupz + 0.75, 15.0, 0, 1);
    }


    unter gamemodeinit
    CreateHouse("TestHaus1", 1, 2317.130615, 692.398498, 11.460937, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHaus2", 1, 2346.872802, 692.999267, 11.460937, 266.857757, 305.001586, 999.148437, 2, 1);
    CreateHouse("TestHaus3", 1, 2396.482666, 691.487060, 11.453125, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHaus4", 1, 2398.476074, 735.344665, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHaus5", 1, 2368.863525, 733.627502, 11.460937, 2196.850341, -1204.343261, 1049.023437, 6, 1);
    CreateHouse("TestHaus6", 1, 2013.253906, 731.041870, 11.453125, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHaus7", 1, 2449.826660, 742.588806, 11.460937, 266.857757, 305.001586, 999.148437, 5, 1);
    CreateHouse("TestHaus8", 1, 2449.662353, 714.210693, 11.468292, 266.857757, 305.001586, 999.148437, 5, 1);


    Ich kann nicht den fehler finden ...

  • zwei Kommentare:


    • Wow du benützt ocmd, was eigentlich nicht viel Schneller ist als dcmd xD
    • Lass doch die Arme Schleife alle Häuser durchgehen, du checkst ja nur die HausID 0 ab, also echt. Schleifen Quäler ! xD

    Hier der richtige Code:


    ocmd:kaufen(playerid,params[])
    {
    for(new i; i<MAX_HOUSES; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10, HouseInfo[i][PickupX], HouseInfo[i][PickupY], HouseInfo[i][PickupZ]))
    {
    new Pname[24]; GetPlayerName(playerid, Pname, 24);
    if(strlen(dini_Get("Owned.ini", Pname)))
    if(GetPlayerMoney(playerid) < HouseInfo[i][HouseCost]) return SendClientMessage(playerid, 0xF60000AA, "Du hast nicht genug Geld für das Haus");
    if(HouseInfo[i][Owned] == 1) return SendClientMessage(playerid, 0xF60000AA, "Dieses Haus hat schon einen Besitzer!");
    GivePlayerMoney(playerid, - HouseInfo[i][HouseCost]);
    GameTextForPlayer(playerid, "~r~Haus gekauft!", 2000, 3);
    HouseInfo[i][Owned] = 1;
    format(HouseInfo[i][HouseOwner], 24, "%s", Pname);
    dini_Set("Owners.ini", Pname, HouseInfo[i][HouseNames]);
    return 1;
    }
    }
    SendClientMessage(playerid, 0xF60000AA, "Du bist nicht in der Nähe eines Hauses!");
    return 1;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • schu dir ma diese Zeile an wo sie steht und wo das bei dir stehen würde..

    SendClientMessage(playerid, 0xF60000AA, "Du bist nicht in der Nähe eines Hauses!");

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!