Haus Exit

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 ein "System" bzw. Funktion gemacht womit ich per Enter Taste in Häuser rein und rausgehen kann.
    Ich habe das Abspeicherungssystem vom GF genommen für Häuser d.H in einer .cfg Datei. ;)


    Derzeit sind 10 Häuser drin gespeichert und im Script sind maximale Häuser = 10. (#define SCRIPT_MAXHOUSES 10)


    Wenn ich nun in ein Haus reingehen möchte geht alles reibungslos. Hab schonmal debugged um zu schauen in welches Haus ich reinkomme.
    Wenn ich bei Haus-ID 9 reingehe, komme ich in 9 rein, gehe ich bei ID 8 rein, komme ich auch bei ID 8 rein.


    Derzeit sieht es so aus:

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys == KEY_SECONDARY_ATTACK)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i < sizeof(HouseInfo); i++)
    {
    if (IsPlayerInRangeOfPoint(playerid,3.0,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
    {
    if(Spieler[playerid][HausKey] == i || HouseInfo[i][hLock] == 0)
    {
    SetPlayerInterior(playerid,HouseInfo[i][hInt]);
    SetPlayerVirtualWorld(playerid,HouseInfo[i][hWorld]);
    SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]);
    GameTextForPlayer(playerid, "~w~Willkommen zu Hause", 5000, 1);
    printf("Entered House: %d", i);
    Spieler[playerid][Int] = HouseInfo[i][hInt];
    Spieler[playerid][World] = HouseInfo[i][hWorld];
    Spieler[playerid][Local] = i;
    }
    else
    {
    GameTextForPlayer(playerid, "~r~Verschlossen", 5000, 1);
    return 1;
    }
    }
    }
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i<sizeof(HouseInfo); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerPos(playerid, HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]);
    Spieler[playerid][Int] = 0;
    Spieler[playerid][World] = 0;
    Spieler[playerid][Local] = 255;
    if(HouseInfo[i][hHealth] == 1)
    {
    new Float:life;
    GetPlayerHealth(playerid, life);
    if(life < 100.0)
    {
    SetPlayerHealth(playerid, 100.0);
    }
    }
    }
    }
    }
    }
    }


    Beim Exit werde ich aber immer an die Exit-Position von Haus 9 geportet.
    Egal bei welchem Haus es ist.


    Kann mir jemand helfen? Wäre echt nett. :)

  • Verwenden die Häuser alle das gleiche Interior? Wenn ja solltest du abfragen ob der Spieler auch in der richtigen Virtual World ist.
    HouseInfo[i][hWorld] ist eigentlich unnötig, da jedes Haus eine eigene ID hat könntest du auch diese als VirtualWorld verwenden:

    SetPlayerVirtualWorld(playerid,i);
    beim Verlassen:
    if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]) && GetPlayerVirtualWorld(playerid) == i)

  • Vielen Dank, Haxler. Hat mir sehr geholfen.


    Nur habe ich jetzt noch ein Problem bei meinem Login & Register System.


    Sobald ein Spieler (der registriert ist) mehr mals auf die ESC Taste haut wie ein bekloppter oder auf OK drückt, wird der Account zurückgesetzt und alles ist auf 0 bis auf das Passwort das ist dann richtig.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new pname[MAX_PLAYER_NAME], accFormat[128], str[128], str2[128];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(accFormat, sizeof(accFormat), "/Accounts/%s.ini", pname);
    if(response)
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:
    {
    if(!strlen(inputtext))
    {
    SetPlayerPos(playerid, 1418.9675,-1629.9078,54.6056-20);
    SetPlayerCameraPos(playerid, 1418.9675,-1629.9078,54.6056);
    SetPlayerCameraLookAt(playerid,1530.6985,-1714.1191,33.4747);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFF00}Falsches Passwort eingegeben!\n{FFFFFF}Dein Account wurde in der Datenbank gefunden.\n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter!\n{FFFFFF}Du kannst dich nun Einloggen. Bitte gib dein Passwort ein:", "OK", " ");
    return 1;
    }
    if(strcmp(inputtext, dini_Get(accFormat, "Passwort")) == 0)
    {
    Spieler[playerid][Admin] = dini_Int(accFormat, "Admin");
    Spieler[playerid][Level] = dini_Int(accFormat, "Level");
    Spieler[playerid][Exp] = dini_Int(accFormat, "Exp");
    Spieler[playerid][MaxExp] = dini_Int(accFormat, "MaxExp");
    Spieler[playerid][Payday] = dini_Int(accFormat, "Payday");
    Spieler[playerid][Geschlecht] = dini_Int(accFormat, "Geschlecht");
    Spieler[playerid][Member] = dini_Int(accFormat, "Member");
    Spieler[playerid][Leader] = dini_Int(accFormat, "Leader");
    Spieler[playerid][Rang] = dini_Int(accFormat, "Rang");
    Spieler[playerid][Geld] = dini_Int(accFormat, "Geld");
    Spieler[playerid][Bank] = dini_Int(accFormat, "Bank");
    Spieler[playerid][Festgeld] = dini_Int(accFormat, "Festgeld");
    Spieler[playerid][Kills] = dini_Int(accFormat, "Kills");
    Spieler[playerid][Deaths] = dini_Int(accFormat, "Deaths");
    Spieler[playerid][Verbrechen] = dini_Int(accFormat, "Verbrechen");
    Spieler[playerid][Spielzeit] = dini_Int(accFormat, "Spielzeit");
    Spieler[playerid][Knast] = dini_Int(accFormat, "Knast");
    Spieler[playerid][Wanteds] = dini_Int(accFormat, "Wanteds");
    Spieler[playerid][Warnungen] = dini_Int(accFormat, "Warnungen");
    Spieler[playerid][Mats] = dini_Int(accFormat, "Mats");
    Spieler[playerid][SafeMats] = dini_Int(accFormat, "SafeMats");
    Spieler[playerid][Drogen] = dini_Int(accFormat, "Drogen");
    Spieler[playerid][SafeDrogen] = dini_Int(accFormat, "SafeDrogen");
    Spieler[playerid][SChange] = dini_Int(accFormat, "SChange");
    Spieler[playerid][Tut] = dini_Int(accFormat, "Tut");
    Spieler[playerid][Job] = dini_Int(accFormat, "Job");
    SetPlayerSkin(playerid, Spieler[playerid][Skin]);
    GivePlayerMoney(playerid, Spieler[playerid][Geld]);
    Spieler[playerid][Handy] = dini_Int(accFormat, "Handy");
    Spieler[playerid][Local] = 255;
    Spieler[playerid][World] = 0;
    Spieler[playerid][Int] = 0;
    Spieler[playerid][Muted] = dini_Int(accFormat, "Muted");
    Spieler[playerid][HausKey] = dini_Int(accFormat, "HausKey");
    Spieler[playerid][MuteTime] = dini_Int(accFormat, "MuteTime");
    SetTimerEx("Mute", 60000, 1, "%i", playerid);
    SetSpawnInfo(playerid, 0, Spieler[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0,0, 0);
    format(str, sizeof(str), "~b~Willkommen~n~~w~%s", SpielerName(playerid));
    GameTextForPlayer(playerid, str, 4000, 1);
    if(Spieler[playerid][Admin] == 1)
    {
    format(str2, sizeof(str2), "Trial-Supporter %s ist nun für Fragen verfügbar. Bitte verwende /sup", SpielerName(playerid));
    SendClientMessageToAll(COLOR_GREEN, str2);
    }
    else if(Spieler[playerid][Admin] == 2)
    {
    format(str2, sizeof(str2), "Supporter %s ist nun für Fragen verfügbar. Bitte verwende /sup", SpielerName(playerid));
    SendClientMessageToAll(COLOR_GREEN, str2);
    }
    else if(Spieler[playerid][Admin] == 3)
    {
    format(str2, sizeof(str2), "Trial-Admin %s ist nun für Fragen verfügbar. Bitte verwende /sup", SpielerName(playerid));
    SendClientMessageToAll(COLOR_GREEN, str2);
    }
    else if(Spieler[playerid][Admin] == 4)
    {
    format(str2, sizeof(str2), "Admin %s ist nun für Fragen verfügbar. Bitte verwende /sup", SpielerName(playerid));
    SendClientMessageToAll(COLOR_GREEN, str2);
    }
    else if(Spieler[playerid][Admin] > 5)
    {
    format(str2, sizeof(str2), "Head-Admin %s ist nun für Fragen verfügbar. Bitte verwende /sup", SpielerName(playerid));
    SendClientMessageToAll(COLOR_GREEN, str2);
    }
    if(Spieler[playerid][Tut] == 1)
    {
    ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Infos zur Person", "Der Account wurde erfolgreich Angelegt. \nBitte fülle nun einige Informationen über deine Person aus.\n \nBist du Männlich oder Weiblich?", "Männlich", "Weiblich");
    }
    SpawnPlayer(playerid);
    new minute, hour, hrstr[10];
    gettime(hour, minute);
    format(hrstr, sizeof(hrstr), "%02d:%02d", hour, minute);
    TextDrawShowForPlayer(playerid, Hud0);
    TextDrawSetString(Hud0, hrstr);
    SetTimerEx("UpdateTime", 60000, 1, "%i", playerid);
    TextDrawShowForPlayer(playerid, Hud3);
    TextDrawShowForPlayer(playerid, Hud4);
    TextDrawShowForPlayer(playerid, Hud5);
    LoggedIn[playerid] = 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFF00}Falsches Passwort eingegeben!\n{FFFFFF}Dein Account wurde in der Datenbank gefunden.\n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter!\n{FFFFFF}Du kannst dich nun Einloggen. Bitte gib dein Passwort ein:", "OK", " ");
    return 1;
    }
    }

    case DIALOG_REG:
    {
    if(!strlen(inputtext))
    {
    SetPlayerPos(playerid, 1418.9675,-1629.9078,54.6056-20);
    SetPlayerCameraPos(playerid, 1418.9675,-1629.9078,54.6056);
    SetPlayerCameraLookAt(playerid,1530.6985,-1714.1191,33.4747);
    ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFFFF}Willkommen auf Reality Stories\n{FFFFFF}Es wurde kein Account unter diesen Namen gefunden.\n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter!\n{FFFFFF}Du kannst dich nun Registrieren. Bitte gib dein Passwort ein:", "OK", " ");
    return 1;
    }
    dini_Create(accFormat);
    dini_Set(accFormat, "Passwort", inputtext);
    Spieler[playerid][Admin] = 0;
    Spieler[playerid][Level] = 1;
    Spieler[playerid][Exp] = 0;
    Spieler[playerid][MaxExp] = 0;
    Spieler[playerid][Payday] = 0;
    Spieler[playerid][Geschlecht] = 0;
    Spieler[playerid][Member] = 0;
    Spieler[playerid][Leader] = 0;
    Spieler[playerid][Rang] = 0;
    Spieler[playerid][Geld] = 10000;
    Spieler[playerid][Bank] = 11000;
    Spieler[playerid][Festgeld] = 0;
    Spieler[playerid][Kills] = 0;
    Spieler[playerid][Deaths] = 0;
    Spieler[playerid][Verbrechen] = 0;
    Spieler[playerid][SChange] = 0;
    Spieler[playerid][Spielzeit] = 0;
    Spieler[playerid][Knast] = 0;
    Spieler[playerid][Wanteds] = 0;
    Spieler[playerid][Warnungen] = 0;
    Spieler[playerid][Job] = 0;
    Spieler[playerid][Mats] = 0;
    Spieler[playerid][SafeMats] = 0;
    Spieler[playerid][Drogen] = 0;
    Spieler[playerid][Tut] = 1;
    Spieler[playerid][HausKey] = 255;
    Spieler[playerid][Muted] = 0;
    Spieler[playerid][MuteTime] = 0;
    Spieler[playerid][Local] = 255;
    Spieler[playerid][Int] = 0;
    Spieler[playerid][World] = 0;
    Spieler[playerid][SafeDrogen] = 0;
    GivePlayerMoney(playerid, 10000);
    new randphone = 1000 + random(8999);
    Spieler[playerid][Handy] = randphone;
    SetTimerEx("Sex", 3000, 0, "%i", playerid);
    SetSpawnInfo(playerid, 0, Spieler[playerid][Skin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0,0, 0);
    SpawnPlayer(playerid);
    TogglePlayerControllable(playerid, 0);
    new minute, hour, hrstr[10];
    gettime(hour, minute);
    format(hrstr, sizeof(hrstr), "%02d:%02d", hour, minute);
    TextDrawShowForPlayer(playerid, Hud0);
    TextDrawSetString(Hud0, hrstr);
    SetTimerEx("UpdateTime", 60000, 1, "%i", playerid);
    TextDrawShowForPlayer(playerid, Hud3);
    TextDrawShowForPlayer(playerid, Hud4);
    TextDrawShowForPlayer(playerid, Hud5);
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFF00}Falsches Passwort eingegeben!\n{FFFFFF}Dein Account wurde in der Datenbank gefunden.\n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter!\n{FFFFFF}Du kannst dich nun Einloggen. Bitte gib dein Passwort ein:", "OK", " ");
    SetPlayerPos(playerid, 1418.9675,-1629.9078,54.6056-20);
    SetPlayerCameraPos(playerid, 1418.9675,-1629.9078,54.6056);
    SetPlayerCameraLookAt(playerid,1530.6985,-1714.1191,33.4747);
    }
    case DIALOG_REG:
    {
    ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFFFF}Willkommen auf Reality Stories\n{FFFFFF}Es wurde kein Account unter diesen Namen gefunden.\n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter!\n{FFFFFF}Du kannst dich nun Registrieren. Bitte gib dein Passwort ein:", "OK", " ");
    SetPlayerPos(playerid, 1418.9675,-1629.9078,54.6056-20);
    SetPlayerCameraPos(playerid, 1418.9675,-1629.9078,54.6056);
    SetPlayerCameraLookAt(playerid,1530.6985,-1714.1191,33.4747);
    }
    }
    }
    //OnPlayerConnect
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    SendClientMessage(playerid, COLOR_WHITE, "");
    GetPlayerName(playerid, name, sizeof(name));
    format(accFormat, 128, "/Accounts/%s.ini", name);
    if(dini_Exists(accFormat))
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFFFF} Willkommen auf Reality Stories \n{FFFFFF}Dein Account wurde in der Datenbank gefunden. \n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter! \n{FFFFFF}Du kannst dich nun Einloggen. Bitte gib dein Passwort ein:", "OK", " ");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REG, DIALOG_STYLE_INPUT, "Reality Stories", "{FFFFFF}Willkommen auf Reality Stories \n{FFFFFF}Es wurde kein Account unter diesen Namen gefunden. \n{FFFFFF}Gib dein Passwort niemals weiter. Auch nicht an Admins oder Supporter! \n{FFFFFF}Du kannst dich nun Registrieren. Bitte gib dein Passwort ein:", "OK", " ");
    }


    Ich hoffe mir kann dabei jemand helfen. :)