Problem beim Haussystem

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
  • Moin Fischis,


    Mein Problem ist das die neuen Koordinaten nicht in die Spielerdatei eingetragen werden beim Ausführen des CMD. Wie kommt das? Ich habe hier die Variante das ich die SpielerPosition abfrage, ginge es nicht auch das einfach die Koordinaten aus dem IsPlayerInRangeOfPoint nehme?


    Zur Erklärung: Es stehen HausPickups rum, sobald der Besitzer "Keiner" eingetragen ist, kann man es kaufen und man soll nach Reconnect dort auf denselben Koordinaten spawnen wie wo das Pickup steht.


    Edit: Die Variablengrößen sind nicht entsprechend dessen wie sie Optimal wären, diese werden von mir hinterher angepasst.



    ocmd:kaufehaus(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME],string[40],save[50], Float: pSpawnX, Float:pSpawnY,Float:pSpawnZ;
    GetPlayerName(playerid,name,sizeof name);
    GetPlayerPos(playerid, pSpawnX,pSpawnY,pSpawnZ);
    format(string,sizeof(string),"/Spieler/%s.ini",name);
    sInfo[playerid][pHaus] = dini_Int(string,"pHaus");
    if(sInfo[playerid][pHaus] == 0)
    {
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)return SendClientMessage(playerid,COLOR_RED,"Dieses Haus gehört dir bereits!");
    if(strcmp(HausInfo[haus][haus_besitzer],"Keiner",false))return SendClientMessage(playerid,COLOR_RED,"Dieses Haus steht nicht zum Verkauf!");
    if(GetPlayerMoney(playerid) < HausInfo[haus][haus_preis])return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-HausInfo[haus][haus_preis]);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast das Haus erfolgreich gekauft!");
    format(save,sizeof(save),"/Haus/%d.ini",haus);
    dini_Set(save,"besitzer",name);
    dini_IntSet(string,"pHaus",1);
    dini_FloatSet("string","pSpawnX",pSpawnX);
    dini_FloatSet("string","pSpawnY",pSpawnY);
    dini_FloatSet("string","pSpawnZ",pSpawnZ);
    SendClientMessage(playerid,COLOR_YELLOW,"Info: Dein Spawn wurde an dieses Haus gebunden!");
    KillHaus(haus);
    LoadHaus(haus);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Info: Deine Hausdaten wurden erfolgreich geaendert!");

    }
    else if(sInfo[playerid][pHaus] == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst derzeit nur 1 Haus besitzen");
    }
    }
    }
    return 1;
    }

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche

  • Huch, hab wohl geträumt beim schreiben. Danke.


    Mal angenommen ich will nun nicht die Spielerposition speichern in dem Moment wo ich /kaufehaus eingegeben habe, sondern die Daten vom Pickup aus der Datei. Kann ich das dann einfach so schreiben?


    Edit: Was mir in Pawn immernoch Problem bereitet ist definitiv an manchen Stellen die Syntax. Irgendwo ist sie immer gleich, aber dann als Anfänger doch sehr verschieden.
    Edit2: Ja kann man. Learning by Doing sage ich da nur :thumbup:



    dini_FloatSet(string,"pSpawnX",HausInfo[haus][haus_x]);
    dini_FloatSet(string,"pSpawnY",HausInfo[haus][haus_y]);
    dini_FloatSet(string,"pSpawnZ",HausInfo[haus][haus_z]);

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche