Haus system fehler o.O ?

  • Haus system fehler o.O ?

    Hey Leute...







    Ich bin mit dem Scripten anscheinent echt aus der Übung gekommen.....



    Und um wieder rein zu kommen, habe ich mir ein RL GM bei Breadfish geladen, und wollte es ein bisschen Editieren und auffrischen.





    So nun habe ich aber bemerkt das das kpl. Haussyste wohl irgendwie nicht will, das fände ich sehr schade, da dann der Immobilienmarkler Job für nichts gut wäre.



    Das haus system ist Sehr verzweigt in dem Script und Hochladen würde ich es jetzt auch ungern irgendwo da ich schon sehr viel drann gemacht habe und es schade drum wäre



    Deswegen meine Frage... Könnte mal Jeman via teamviewer o.ä. darübe schauen und mir sagen was da Falsch ist?



    Ich wäre euch zu tiefst dankbar!



    //edit: oder ich Lade es i-wo hoch und schicke es jemanden Per PN der al drüber schauen würde.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Scripter-oNE ()

  • [pwn]new bool:hausstatus[100];[/pwn]

    [pwn]new bool:disableHausCheckpoint[MAX_PLAYERS];
    new playerhaus[MAX_PLAYERS];
    new playerHausCheckpoint[MAX_PLAYERS];
    new Float:checkHausCoords[100][6];
    new Float:hauscheckpoints[100][4];
    new HausCPNames[100][256];
    new MAX_HAUS;[/pwn]

    [pwn] MAX_HAUS = dUserINT("haus").("Anzahl");

    for(new i = 0;i<MAX_HAUS;i++)
    {
    //KOORDINATEN CHECK
    format(tmpstring,sizeof(tmpstring),"haus%dkx",i);
    checkHausCoords[0] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dky",i);
    checkHausCoords[i][1] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dgx",i);
    checkHausCoords[i][2] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dgy",i);
    checkHausCoords[i][3] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dh",i);
    checkHausCoords[i][4] = floatstr(dUser("haus").(tmpstring));
    //KOORDINATEN CHECK

    //CHECKPOINTS
    format(tmpstring,sizeof(tmpstring),"haus%dcpx",i);
    hauscheckpoints[i][0] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dcpy",i);
    hauscheckpoints[i][1] = floatstr(dUser("haus").(tmpstring));

    format(tmpstring,sizeof(tmpstring),"haus%dcpz",i);
    hauscheckpoints[i][2] = floatstr(dUser("haus").(tmpstring));


    format(tmpstring,sizeof(tmpstring),"haus%dbesitzer",i);
    if(!strlen(dUser("haus").(tmpstring)))
    {
    format(tmpstring,sizeof(tmpstring),"Haus %d ist leer.",i);
    HausCPNames[i] = tmpstring;
    }
    else
    {
    strcpy(tmpstring, dUser("haus").(tmpstring));
    strrep(tmpstring, ",", ", ");
    format(HausCPNames[i], sizeof(HausCPNames[]), "Haus %d: %s", i, tmpstring);
    }

    HausCPNames[50] = "Haus Innen";

    format(tmpstring,sizeof(tmpstring),"hausstatus%d",i);
    if(strval(dUser("haus").(tmpstring)) == 0) hausstatus[i] = false;

    hauscheckpoints[i][3] = 1.0;

    if(i == INNER_HOUSE)
    {
    hauscheckpoints[i][3] = 4.0;
    }
    //CHECKPOINTS

    }[/pwn]

    [pwn] SetTimer("Haustimer",700,1);[/pwn]


    [pwn]forward Haustimer();[/pwn]

    [pwn]forward EnableHausCheckpoint(playerid);[/pwn]

    [pwn]public Haustimer()
    {

    new string[256];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && disableHausCheckpoint[i] == false) {
    for(new j=0; j < MAX_HAUS; j++) {
    if(isPlayerInArea(i, checkHausCoords[j])) {
    if(playerHausCheckpoint[i]!=j) {

    if(playerHausCheckpoint[i] != 999)
    {
    TextDrawDestroy(checks[i]);
    }


    DisablePlayerCheckpoint(i);
    SetPlayerCheckpoint(i, hauscheckpoints[j][0],hauscheckpoints[j][1],hauscheckpoints[j][2],hauscheckpoints[j][3]);
    playerHausCheckpoint[i] = j;


    format(string,sizeof(string),"%s",HausCPNames[j]);
    //TextDrawDestroy(checks[i]);


    checks[i] = TextDrawCreate(100.0, 340.0, string);
    TextDrawColor(checks[i], COLOR_WHITE);
    TextDrawBoxColor(checks[i], 0x000000ff);
    TextDrawFont(checks[i], 1);
    TextDrawTextSize(checks[i], 500.0, 600.0);
    TextDrawUseBox(checks[i], true); // you can replace true with 1 if you really want
    TextDrawShowForPlayer(i, checks[i]);

    }
    } else {
    if(playerHausCheckpoint[i]==j) {
    DisablePlayerCheckpoint(i);
    playerHausCheckpoint[i] = 999;
    TextDrawDestroy(checks[i]);
    }
    }
    }
    }
    }
    }
    [/pwn]

    Diese Befehle Funzen garnicht!

    [pwn] if(strcmp(cmd, "/gsul", true)==0 && beruf[playerid]==12 && dienst[playerid]==1 && berufsebene[playerid]>=1) //hk
    {

    {

    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new tmpstring2[256];

    format(tmpstring2,sizeof(tmpstring2),"%f",x);
    format(tmpstring,sizeof(tmpstring),"haus%dkx",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    format(tmpstring2,sizeof(tmpstring2),"%f",y);
    format(tmpstring,sizeof(tmpstring),"haus%dky",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    format(tmpstring2,sizeof(tmpstring2),"%f",z);
    format(tmpstring,sizeof(tmpstring),"haus%dh",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    return 1;
    }
    }

    if(strcmp(cmd, "/gsor", true)==0 && beruf[playerid]==12 && dienst[playerid]==1 && berufsebene[playerid]>=1) //hg
    {

    {

    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new tmpstring2[256];
    format(tmpstring2,sizeof(tmpstring2),"%f",x);
    format(tmpstring,sizeof(tmpstring),"haus%dgx",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    format(tmpstring2,sizeof(tmpstring2),"%f",y);
    format(tmpstring,sizeof(tmpstring),"haus%dgy",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);

    return 1;
    }
    }

    if(strcmp(cmd, "/gscp", true)==0 && beruf[playerid]==12 && dienst[playerid]==1 && berufsebene[playerid]>=1) //hs
    {

    {

    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new tmpstring2[256];
    format(tmpstring2,sizeof(tmpstring2),"%f",x);
    format(tmpstring,sizeof(tmpstring),"haus%dcpx",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    format(tmpstring2,sizeof(tmpstring2),"%f",y);
    format(tmpstring,sizeof(tmpstring),"haus%dcpy",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    format(tmpstring2,sizeof(tmpstring2),"%f",z);
    format(tmpstring,sizeof(tmpstring),"haus%dcpz",dUserINT("haus").("Anzahl"));
    dUserSet("haus").(tmpstring,tmpstring2);
    dUserSetINT("haus").("Anzahl",dUserINT("haus").("Anzahl")+1);
    return 1;
    }
    }[/pwn]

    [pwn]if(strcmp(cmd, "/einziehen", true)==0 && beruf[playerid]==12 && dienst[playerid]==1 && berufsebene[playerid]>=1)
    {
    new targetplayer[MAX_STRING];
    targetplayer = strtok(cmdtext, idx);

    if(!strlen(targetplayer))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Benutze: /einziehen [Spielername]");
    return 1;
    }

    if(udb_Exists(targetplayer))
    {
    new hausid = playerHausCheckpoint[playerid];

    if(hausid != 999 && IsPlayerInCheckpoint(playerid))
    {
    if(MovePlayerIntoHouse(targetplayer, hausid))
    { SendClientMessage(playerid, COLOR_GREEN, "Der Spieler wurde erfolgreich umgesiedelt."); }
    else
    { SendClientMessage(playerid, COLOR_RED, "Dieses Haus ist bereits voll."); }
    }
    else
    { SendClientMessage(playerid,COLOR_RED,"Du musst im Checkpoint des Hauses sein um jemanden umzusiedeln."); }
    }
    else
    { SendClientMessage(playerid, COLOR_RED, "Der Spieler ist nicht in der Datenbank vorhanden."); }

    return 1;
    }[/pwn]

    [pwn] if (strcmp(cmd, "/haus", true)==0)
    {
    if(isPlayerInArea(playerid,checkHausCoords[dUserINT(PlayerName(playerid)).("haus")]) || isPlayerInArea(playerid,checkHausCoords[INNER_HOUSE]))
    {


    if((hausstatus[playerHausCheckpoint[playerid]] == false && GetPlayerInterior(playerid) == 0) || (hausstatus[dUserINT(PlayerName(playerid)).("haus")] == false && dUserINT(PlayerName(playerid)).("haus") == playerhaus[playerid]))
    {
    if(GetPlayerInterior(playerid) == 6)
    {
    hausstatus[dUserINT(PlayerName(playerid)).("haus")] = true;
    } else {
    hausstatus[playerHausCheckpoint[playerid]] = true;
    }
    SendClientMessage(playerid,COLOR_GREEN,"***Du hast dein Haus aufgeschlossen");
    PlayerPlaySoundEx(playerid,1139);

    } else {
    if(GetPlayerInterior(playerid) == 6)
    {
    hausstatus[dUserINT(PlayerName(playerid)).("haus")] = false;
    } else {
    hausstatus[playerHausCheckpoint[playerid]] = false;
    }
    SendClientMessage(playerid,COLOR_ORANGE,"***Du hast dein Haus abgeschlossen");
    PlayerPlaySoundEx(playerid,1058);
    }
    } else {
    SendClientMessage(playerid,COLOR_RED,"Du musst in deinem Grundstück sein um dein Haus auf/ab-zuschließen");
    }
    return 1;
    }[/pwn]

    Überall im script bei OnPlayerConnect usw wird das hier auch noch abgefragt
    [pwn]playerhaus[playerid] = playerHausCheckpoint[playerid];[/pwn]


    [pwn]public EnableHausCheckpoint(playerid)
    {
    disableHausCheckpoint[playerid] = false;
    }[/pwn]

    [pwn]stock MovePlayerIntoHouse(playername[], houseid)
    {
    new i;
    new bool:becameResident;
    new tmp[MAX_STRING];
    new residents[40][MAX_PLAYER_NAME];

    if(!udb_Exists(playername) || houseid < 0)
    { return 0; }

    format(tmp, sizeof(tmp), "haus%dbesitzer", houseid);
    explode(",", dUser("haus").(tmp), residents);
    if(arrsearch(residents, playername) == -1)
    {
    for(i=0; i<sizeof(residents); i++)
    {
    if(!strlen(residents[i]))
    {
    strcpy(residents[i], playername);
    becameResident = true;
    break;
    }
    printf("DebugEinziehen: %d: %s", i, residents[i]);
    }

    if(!becameResident)
    { return 0; }

    print(implode(",", residents));

    dUserSet("haus").(tmp, implode(",", residents));
    format(HausCPNames[houseid], sizeof(HausCPNames[]), "Haus %d: %s", houseid, implode(", ", residents));
    }

    KickPlayerOutOfHouse(playername);
    dUserSetINT(playername).("haus", houseid);

    return 1;
    }[/pwn]

    Und noch ein Stock für stock KickPlayerOutOfHouse(playername[], houseid=-1) Zeichen reichen aber nicht
  • So habe ich das ja bei jedenm Beruf, und über all Funktioniert es. Nur dieses "Dumme" Haussystem will nicht.
    Und ja, Ich finde die Stelle auch nicht wo er überhaupt erstmal ein haus erstellt. Oder übersehe ich das was,

    Ausserdem verstehe ich auch nicht ganz wofür die Befehle /gsul und co gut sein sollen.

    Allso eine frage an die Profis xD Wo werden de 1. Die Häuser erstellt und 2. Wofür sind die Befehle /gsul /gsor und /gscp gut?
  • dUserInt ist meines Wissens nach eine Standart Pawn Funktion um Sachen zu Speichern!
    Von daher kann ich die Funktion auch nicht genau hier Posten.

    Das Haussystem ist aber im kompletten Script verteilt und einige abfragen werden auch bei ganz anderen sachen wie dem tot system und co. abgefragt.
    Es wäre wesentlich einfacher wen man das System irgendwie ans laufen bekommen könnte!

    Ich habe auch gerade mal versucht, die Befehle ohne jobabfrage zu benutzen Sprich als Ganz normalen Befehl,doch da Passiert genau so wenig ich gebe den Befehl ein z.B. /gsul und nichts passiert! selbst wen ich /gsul 9 9 9 oder in der Art eingebe, Passiert nichts, keine ausgabe und keine Funktion ^^

    //edit: Ich denke aber mal das es alles ein bisschend amit zusammen hängt, das garnicht erst irgendwelche Häuser erstellt werden. Es gibt ja anscheint kein befehl zum erstellen von Häusern und im Script sehe ich auch keine Vorgevertigten Coordinaten wo "Häuser" stehen....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Scripter-oNE ()

  • Ohh Sehr Geil! in NRW wohne ich auch ^^ ganz in der nähe von Winterberg :D


    Das fände ich mal Extrem Nett von dir, und ich wäre dir mal extrem zu dank verflichtet, Ich hoffe das dass dan alles Klappt :D
    Kannst du dann auch so ein befehl schreiben der zum erstellen von häusern zuständig ist?
    Naja will nicht so viel labern und schleimen :D

    Man findet bestimmt auch eine möglichkeit sich dann zu revanchieren.