[Benötige Hilfe!] 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
  • Hallo Leute,


    ich habe mir vor kurzen mit der Hilfe von Haxler's Tutorial ( [SCRIPTING] Simples Haussystem ) Häuser erstellt.
    Es ist gut erklärt, soweit hat auch alles geklappt. Dazu habe ich noch einen Befehl zum verkaufen gefunden und das ganze so geschrieben, dass jeder Spieler nur ein Haus besitzen kann.


    Nun habe ich folgene Probleme:
    1. Spieler "x" kauft ein Haus, nun kommt Spieler "y" und gibt '/sellhaus' am Pickup des Hauses von Spieler "x" ein, verkauft somit das Haus und bekommt Geld.
    - Nur der Spieler der in der Hausinfo steht soll das Haus verkaufen können.


    Ich habe dazu mal alles aus meinem Script rausgesucht,



    CMD:sellhaus(playerid,params[])
    {
    if(sSpieler[playerid][Haus] ==0) return SendClientMessage(playerid,ROT,"Du besitzt kein Haus!");
    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,ROT,"Dieses Haus gehört icht dir!");
    if(!strcmp(HausInfo[haus][haus_besitzer],"Keiner",false)) return SendClientMessage(playerid,ROT,"Dieses Haus gehört der Stadt!");
    GivePlayerMoney(playerid,HausInfo[haus][haus_preis]);
    sSpieler[playerid][Haus] = 0;
    new pfad[50];
    format(pfad,50,"/haus/%d.ini",haus);
    dini_Set(pfad,"Besitzer","Keiner");
    KillHaus(haus);
    LoadHaus(haus);
    }
    }
    return 1;
    }



    Ich hoffe ihr könnt mir helfen!




    Mit freundlichen Grüßen
    AlphaGen


    //EDIT: Das Problem mit den Hausnummern ist gelöst!
    //EDIT: Das Problem mit den Interiors ist auch gelöst!

    DIVIDE ET IMPERA

    2 Mal editiert, zuletzt von [GSD]AlphaGen ()

  • if(dini_Get(pfad,"Besitzer",Spielername))
    Überprüfen ob der Besitzer das ist :) Weiß aber nicht ob des so stimmt, ich arbeite nicht mehr mit dini.

  • new s[128];
    format(s,128,"****Haus ID %d****\nBesitzer: %s\nPreis: %d$",hausid,HausInfo[hausid][haus_besitzer],HausInfo[hausid][haus_preis]);
    HausInfo[hausid][haus_label] = Create3DTextLabel(s,0xFF00FF,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,0,1);
    return print("Das Haus wurde erfolgreich geladen");



    So damit hätten wir die ID :)

  • Bei Problem 1 und Problem 2 finde ich den fehler nicht.


    Zu Problem 3 hätte ich das hier.


    MfG.

    Ok, nur wie kriege ich es hin, dass jeder Spieler in einer eigenen Virtuellen Welt landet..?


    Weil wenn ich
    Als Parameter bei worldid 1 eingebe, werden ja wohl wieder alle Spieler im Gleichen Interior landne.. oder etwa nicht?

    DIVIDE ET IMPERA

  • Füg in deinem Enum "VirtualWorld" ein und mach bei jedem Haus eine andere Zahl.
    Fang bei 1 an ;)


    Wenn 2 Leute dann da reingehen, sehen die sich nicht weil die in einer "Virtuellen Welt" sind. Also es ist dann so als ob es ein anderes Interior ist.


    MfG.

  • Ok, zu den VirtuellenWelten habe ich jetzt etwas geschrieben.
    Ich werde es nachher mit einem Kollegen Testen und schreiben ob es geklappt hat.


    Jetzt ist nurnoch das Problem, dass ein Spieler das Haus des anderen Spielers einfach verkaufen kann...

    DIVIDE ET IMPERA