Arrest System [Mini Problem]

  • Arrest System [Mini Problem]

    Hallo,

    ich habe noch ein Mini Problem mit meinem Arrest System, unzwar will ich, dass wenn man sich ausloggt und dann wieder einloggt,
    oder stirbt oder spawnt und man im Knast ist, wieder dorthin teleportiert werden soll.
    Ich weiß, ich muss mit OnPlayerSpawn arbeiten und habe sogar die Grundstrucktur hingekriegt.
    Ich habe mit PVar abgefragt ob playerid Knast auf 1 stehen hat, wenn ja kommt ne Message.
    Aber er wird nicht zurüpck teleportiert.

    Code:
    [pwn]//Arrest System
    ocmd:arrest(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Dazu bist du nicht befugt.");
    new pID, Float:X, Float:Y, Float:Z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /arrest [ID/Teilname]");
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1560.2823,-1693.9921,5.8906))return SendClientMessage(playerid, ROT, "[Fehler]{FFFFFF} Du bist nicht am Arrest Point.");
    GetPlayerPos(pID, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der Spieler ist nicht in deiner Nähe.");
    if(GetPlayerWantedLevel(pID) == 0)
    {
    SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Der Spieler hat keine Wanteds.");
    }
    if(GetPlayerWantedLevel(pID) == 1)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 120 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetTimerEx("EinWanted", 120000, 0, "i", pID);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,2000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 2)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 240 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetTimerEx("ZweiWanteds", 240000, 0, "i", pID);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,4000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 3)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 360 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    SetTimerEx("DreiWantedss", 360000, 0, "i", pID);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,6000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 4)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 480 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    SetTimerEx("VierWantedsss", 480000, 0, "i", pID);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt..",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,8000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 5)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 600 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetTimerEx("FunfWantedssss", 600000, 0, "i", pID);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(Weis,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,10000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 6)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 720 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetTimerEx("SechsWantedsssss", 720000, 0, "i", pID);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,12000);
    TogglePlayerControllable(pID,true);
    }
    return 1;
    }

    //Timer Funktionen
    public SechsWantedsssss(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }
    public FunfWantedssss(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }
    public VierWantedsss(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }
    public DreiWantedss(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }
    public ZweiWanteds(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }
    public EinWanted(pID)
    {
    SendClientMessage(pID,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(pID,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(pID,89.0210);
    SetPVarInt(pID,"Knast",0);
    SetPlayerInterior(pID,0);
    SetPlayerWantedLevel(pID,0);
    SpielerSpeichern(pID);
    return 1;
    }

    //Forwards
    forward EinWanted(pID);
    forward ZweiWanteds(pID);
    forward DreiWantedss(pID);
    forward VierWantedsss(pID);
    forward FunfWantedssss(pID);
    forward SechsWantedsssss(pID);

    //OnlPlyerSpawn
    if(GetPVarInt(playerid,"Knast") == 1)
    {
    SendClientMessage(playerid,ROT,"[Knast Information]{FFFFFF} Zurück in die Zelle.");
    }[/pwn]

    MFG

    Neu im Bereich Pawn? Du kommst nicht klar? Du bist verwirrt und möchtest endlich scripten können?
    Klick mich für mehr Informationen.
  • Also, abspeichern denke ich sollte dir klar sein, wie das geht, also mit deinen PVars halt.

    Dort speicherst du und lädst "KnastTime" ab.

    Dann änderst du deinen Befehl zu dem:

    [pwn]ocmd:arrest(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Dazu bist du nicht befugt.");
    new pID, Float:X, Float:Y, Float:Z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /arrest [ID/Teilname]");
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1560.2823,-1693.9921,5.8906))return SendClientMessage(playerid, ROT, "[Fehler]{FFFFFF} Du bist nicht am Arrest Point.");
    GetPlayerPos(pID, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid, Weis, "Der Spieler ist nicht in deiner Nähe.");
    if(GetPlayerWantedLevel(pID) == 0)
    {
    SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Der Spieler hat keine Wanteds.");
    }
    if(GetPlayerWantedLevel(pID) == 1)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 120 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 120000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,2000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 2)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 240 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 240000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,4000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 3)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 360 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 360000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,6000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 4)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 480 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 480000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt..",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,8000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 5)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 600 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 600000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(Weis,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,10000);
    TogglePlayerControllable(pID,true);
    }
    if(GetPlayerWantedLevel(pID) == 6)
    {
    new string[128];
    SendClientMessage(pID,ROT,"[Information]{FFFFFF} Du bist nun für 720 Sekunden im Gefängnis.");
    SetPlayerWantedLevel(pID,0);
    SetPlayerPos(pID,264.0242,81.5690,1001.0391);
    SetPlayerInterior(pID,6);
    ResetPlayerWeapons(pID);
    SetPVarInt(pID,"Knast",1);
    SetPVarInt(pID, "KnastTime", 720000);
    format(string,sizeof(string), "[Knast Information]{FFFFFF} Officer %s hat den Verbrecher %s eingesperrt.",SpielerName(playerid),SpielerName(pID));
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID);
    GivePlayerMoney(playerid,12000);
    TogglePlayerControllable(pID,true);
    }
    return 1;
    }[/pwn]

    Gut, hier haben wir überall die Variable KnastTime eingeführt.

    Unter OnGameModeInit machst du einen Timer nämlich so, damit die KnastTime auch runtergeht:

    [pwn]SetTimer("KnastTimeCheck", 1000, true);[/pwn]

    Denn machen wir dann zu dem:

    [pwn]forward KnastTimeCheck();
    public KnastTimeCheck()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i, "Knast") == 1)
    {
    if(GetPVarInt(i, "KnastTime") >= 1)
    {
    SetPVarInt(i, "KnastTime", GetPVarInt(i, "KnastTime") - 1000); // oderso in der Art, bin mir grad net sicher
    }
    }
    if(GetPVarInt(i, "KnastTime") <= 0 && GetPVarInt(i, "Knast") == 1)
    {
    SetPVarInt(i, "Knast", 0);
    SetPVarInt(i, "KnastTime", 0);
    SendClientMessage(i,ROT,"[Knast Information]{FFFFFF} Du hast deine Haftstrafe ausgesessen.");
    SetPlayerPos(i,1549.1331,-1675.4790,14.8298);
    SetPlayerFacingAngle(i,89.0210);
    SetPlayerInterior(i,0);
    SpielerSpeichern(i);
    }
    }
    return 1;
    }[/pwn]

    Dann machst du unter OnPlayerSpawn das:

    [pwn]if(GetPVarInt(playerid, "Knast") == 1)
    {
    SetPlayerPos(playerid,264.0242,81.5690,1001.0391);
    SetPlayerInterior(playerid,6);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid,ROT,"[Knast Information]{FFFFFF} Zurück in die Zelle.");
    }[/pwn]

    Sollte prima klappen, und deine Funktionen einwanteds etc. kannst du erstmal einklammern. ;)

    Lg