/arrest [ID][Zeit] Befehl für Cops geht nicht (Brauche dringend Hilfe)

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 zusammen,
    ich habe in den letzten Tagen immer wieder versucht einen /arrest Befehl für Cops auf meinem Selfmade Server zu erstellen, jedoch klappt das alles nicht so ganz. ?(
    Ich habe auch bereits die Suchfunktion aus dem Forum verwendet und mir einige Tutorials angesehen bzw. durchgelesen, jedoch schaffe ich diesen Command einfach nicht. :(
    Ich brauche einen Command, der es einem Cop ermöglicht einen Spieler mit Wanteds ins Gefängnis zu porten. Der Befehl dafür sollte so aussehen: /knast [ID][Zeit].


    Ich poste einfach mal meinen Code:


    Der Befehl /knast:


    dcmd_knast(playerid, params[])
    {
    new pID,zeit;
    if(sscanf(params,"ui",pID,zeit))
    {
    return SendClientMessage(playerid,BLAU,"Verwendung: /knast [ID][Zeit]");
    }
    if(IstSpielerInFraktion(playerid,1))
    {
    if(IsPlayerInRangeOfPoint(playerid,5,1569.1207,-1693.5427,5.8906))
    {
    if(IsPlayerInRangeOfPoint(pID,5,1569.1207,-1693.5427,5.8906))
    {
    SetPlayerPos(pID,263.7467,77.5785,1001.0391);
    SetPlayerInterior(pID,6);
    SetTimerEx("knasttimer",zeit,false,"i",pID);
    sSpieler[playerid][knastzeit] = zeit;
    return 1;
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Der Spieler ist nicht in deiner Nähe!");
    }
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Du bist nicht am Arrest-Punkt!");
    }
    }
    else
    {
    return SendClientMessage(playerid,ROT,"Du bist nicht beim LSPD!");
    }
    }


    Mein Spielerdaten enum:


    //Spielerdaten
    enum SpielerDaten
    {
    Adminlevel,
    Level,
    Fraktion,
    Geld,
    Skin,
    sLogin,
    Autofuehrerschein,
    Motorradfuehrerschein,
    Bootsschein,
    Flugschein,
    LKWSchein,
    Waffenschein,
    Angelschein,
    Drogen,
    Personalausweis,
    Beruf,
    Wanteds,
    knastzeit
    }

    Meine Stocks:


    stock Register(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    dini_Create(Spieler);
    dini_Set(Spieler,"Name",Sname);
    dini_Set(Spieler,"Passwort",key);
    dini_IntSet(Spieler,"Adminlevel",0);
    dini_IntSet(Spieler,"Level",1);
    dini_IntSet(Spieler,"Fraktion",0);
    dini_IntSet(Spieler,"Geld",10600);
    dini_IntSet(Spieler,"Skin",0);
    dini_IntSet(Spieler,"Autofuehrerschein",0);
    dini_IntSet(Spieler,"Motorradfuehrerschein",0);
    dini_IntSet(Spieler,"Flugschein",0);
    dini_IntSet(Spieler,"Bootsschein",0);
    dini_IntSet(Spieler,"LKW-Schein",0);
    dini_IntSet(Spieler,"Angelschein",0);
    dini_IntSet(Spieler,"Waffenschein",0);
    dini_IntSet(Spieler,"Drogen",0);
    dini_IntSet(Spieler,"Personalausweis",0);
    dini_IntSet(Spieler,"Beruf",0);
    dini_IntSet(Spieler,"Wanteds",0);
    dini_IntSet(Spieler,"knastzeit",0);
    SendClientMessage(playerid,GRUEN,"Du hast dich registriert!");
    SpielerLaden(playerid);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,GRUEN,"Erfolgreich eingeloggt!");
    SpielerLaden(playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Das Passwort ist falsch!");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Logge dich mit deinem Passwort ein:","Login","Schließen");
    return 1;
    }
    }


    stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
    dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
    dini_IntSet(Spieler,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spieler,"Skin",GetPlayerSkin(playerid));
    dini_IntSet(Spieler,"Autofuehrerschein",sSpieler[playerid][Autofuehrerschein]);
    dini_IntSet(Spieler,"Motorradfuehrerschein",sSpieler[playerid][Motorradfuehrerschein]);
    dini_IntSet(Spieler,"Flugschein",sSpieler[playerid][Flugschein]);
    dini_IntSet(Spieler,"Bootsschein",sSpieler[playerid][Bootsschein]);
    dini_IntSet(Spieler,"LKW-Schein",sSpieler[playerid][LKWSchein]);
    dini_IntSet(Spieler,"Angelschein",sSpieler[playerid][Angelschein]);
    dini_IntSet(Spieler,"Waffenschein",sSpieler[playerid][Waffenschein]);
    dini_IntSet(Spieler,"Drogen",sSpieler[playerid][Drogen]);
    dini_IntSet(Spieler,"Personalausweis",sSpieler[playerid][Personalausweis]);
    dini_IntSet(Spieler,"Beruf",sSpieler[playerid][Beruf]);
    dini_IntSet(Spieler,"Wanteds",GetPlayerWantedLevel(playerid));
    dini_IntSet(Spieler,"knastzeit",sSpieler[playerid][knastzeit]);
    return 1;
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spieler,"Geld"));
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    SetPlayerWantedLevel(playerid,dini_Int(Spieler,"Wanteds"));
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
    sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
    sSpieler[playerid][Geld] = dini_Int(Spieler,"Geld");
    sSpieler[playerid][Skin] = dini_Int(Spieler,"Skin");
    sSpieler[playerid][sLogin] = 1;
    sSpieler[playerid][Autofuehrerschein] = dini_Int(Spieler,"Autofuehrerschein");
    sSpieler[playerid][Motorradfuehrerschein] = dini_Int(Spieler,"Motorradfuehrerschein");
    sSpieler[playerid][Flugschein] = dini_Int(Spieler,"Flugschein");
    sSpieler[playerid][Bootsschein] = dini_Int(Spieler,"Bootsschein");
    sSpieler[playerid][LKWSchein] = dini_Int(Spieler,"LKW-Schein");
    sSpieler[playerid][Angelschein] = dini_Int(Spieler,"Angelschein");
    sSpieler[playerid][Waffenschein] = dini_Int(Spieler,"Waffenschein");
    sSpieler[playerid][Drogen] = dini_Int(Spieler,"Drogen");
    sSpieler[playerid][Personalausweis] = dini_Int(Spieler,"Personalausweis");
    sSpieler[playerid][Beruf] = dini_Int(Spieler,"Beruf");
    sSpieler[playerid][Wanteds] = dini_Int(Spieler,"Wanteds");
    sSpieler[playerid][knastzeit] = dini_Int(Spieler,"knastzeit");

    }
    return 1;


    }


    stock SpielerReset(playerid)
    {
    sSpieler[playerid][Adminlevel] = 0;
    sSpieler[playerid][Level] = 0;
    sSpieler[playerid][Fraktion] = 0;
    sSpieler[playerid][Geld] = 0;
    sSpieler[playerid][Skin] = 0;
    sSpieler[playerid][Autofuehrerschein] = 0;
    sSpieler[playerid][Motorradfuehrerschein] = 0;
    sSpieler[playerid][Flugschein] = 0;
    sSpieler[playerid][Bootsschein] = 0;
    sSpieler[playerid][LKWSchein] = 0;
    sSpieler[playerid][Angelschein] = 0;
    sSpieler[playerid][Waffenschein] = 0;
    sSpieler[playerid][Drogen] = 0;
    sSpieler[playerid][Personalausweis] = 0;
    sSpieler[playerid][Beruf] = 0;
    sSpieler[playerid][Wanteds] = 0;
    sSpieler[playerid][knastzeit] = 0;
    return 1;
    }


    stock IstSpielerInKnast(playerid)
    {
    if(sSpieler[playerid][knastzeit] >= 1) return 1;
    return 0;
    }


    stock HatSpielerPerso(playerid)
    {
    if(sSpieler[playerid][Personalausweis] == 1) return 1;
    return 0;
    }


    stock IstSpielerBeruf(playerid,beruf)
    {
    if(sSpieler[playerid][Beruf] == beruf) return 1;
    return 0;
    }


    stock IstSpielerAdmin(playerid,level)
    {
    if(sSpieler[playerid][Adminlevel] >= level) return 1;
    return 0;
    }


    stock IstSpielerInFraktion(playerid, fraktionsid)
    {
    if(sSpieler[playerid][Fraktion] == fraktionsid) return 1;
    return 0;
    }


    stock IstSpielerLogged(playerid)
    {
    if(sSpieler[playerid][sLogin] == 1) return 1;
    return 0;
    }


    stock HatSpielerWanteds(playerid,wanteds)
    {
    if(sSpieler[playerid][Wanteds] >= 1) return 1;
    return 0;
    }


    Mein Knastzeit Timer:

    //Timer
    forward knasttimer(playerid);
    public knasttimer(playerid)
    {
    SetPlayerPos(playerid,1544.9874,-1675.4181,13.5595);
    SetPlayerInterior(playerid,0);
    return 1;
    }


    OnPlayerSpawn(1.wenn der Spieler im Knast ist,2.wenn der Spieler Wanteds hat und von nem Cop gekillt wird,3.Zivi Spawnpunkt,4.Cop Spawnpunkt):

    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    new zeit;
    zeit=dini_Int(Spieler,"knastzeit");
    if(IstSpielerInKnast(playerid))
    {
    SetPlayerPos(playerid,263.7467,77.5785,1001.0391);
    SetPlayerInterior(playerid,6);
    SetTimerEx("knasttimer",zeit,false,"i",playerid);
    return 1;
    }
    else
    {
    new wanteds,killerid;
    wanteds=GetPlayerWantedLevel(playerid);
    if(wanteds>=1)
    {
    if(IstSpielerInFraktion(killerid,1))
    {
    SetPlayerPos(playerid,266.7467,77.5785,1001.0391);
    SetPlayerInterior(playerid,6);
    return 1;
    }
    }
    else
    {
    if(IstSpielerInFraktion(playerid, 0))
    {
    SetPlayerPos(playerid, 825.6290,-1354.6455,13.5393);
    SetPlayerColor(playerid,WEISS);
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    return 1;
    }
    else if(IstSpielerInFraktion(playerid, 1))
    {
    SetPlayerPos(playerid, 237.6967,78.9653,1005.0391);
    SetPlayerInterior(playerid,6);
    SetPlayerColor(playerid,BLAU);
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    SendClientMessage(playerid,BLAU,"Du bist am LSPD gespawnt!");
    return 1;
    }
    }
    }
    return 1;
    }


    Sonstige Infos:

    #define sFraktion0 "Zivilist"
    #define sFraktion1 "LSPD"
    #include <a_samp>
    #include <dini>
    #include <sscanf>


    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1




    Wenn mir jemand helfen könnte, wäre ich ihm sehr dankbar, denn ohne einen /knast Befehl kann man keinen Reallife Server aufbauen, wie ich es geplant habe. :(


    mfg
    Jan
    :)

  • Was genau funktioniert nicht?
    Wenn ich dir einen Tipp geben darf:
    Ich würde anstatt SetTimerEx
    z.B. bei ongamemodeinit
    einen timer setzten wie z.B.


    Bei deinem Befehl:
    KnastZeit[playerid] = zeit;


    public OnGameModeInit(){ SetTimer("Sekunde",1000,true) return 1;}



    forward Sekunde ();
    public Sekunde (){ if(blabla ... // Abfrage ob er im Knast ist { KnastZeit[playerid] = KnastZeit[playerid]-1; if(KnastZeit[playerid] == 0) { SetPlayerPos(playerid, // Freiheit SetPlayerInterior(playerid,0); } }}


    KnastZeit[playerid] natürlich noch ganz oben rein schreiben... bei deinen anderen new's ^^
    Lg, Blazer ;)

    Erst wenn
    der letzte Baum gerodet,
    der letzte Fisch vergiftet
    und der letzte Fisch gefangen ist,
    werdet ihr feststellen,
    dass man Gold nicht essen kann.

  • OnPlayerSpawn


    if(sSpieler[playerid][knastzeit] > 0) // Im Knast
    {
    SetPlayerPos(playerid, // Knast
    SetPlayerInterior(playerid,6);
    }


    Lg

    Erst wenn
    der letzte Baum gerodet,
    der letzte Fisch vergiftet
    und der letzte Fisch gefangen ist,
    werdet ihr feststellen,
    dass man Gold nicht essen kann.

  • Du setzt bei deinem SpielerSpeichern Stock ne Variable Knast, wenn er in den Knast kommt, setzt du sie auf 1, und wenn er sich ausloggt kontollierst du, ob knast auf 1 ist, wenn ja, setzt du ihn wieder in den Knast

  • danke, aber das klappt immernoch nicht. Ich habe das jetzt abgeändert, wie du es gepostet hast, doch jetzt ist es so: ich sperre jemanden ein, dieser macht relog und spawnt ganz normal. nach etwa 10 sekunden wird er dann an den punkt teleportiert, wo man nach dem knasttimer spawnen soll. Kannste mir da helfen?


    public OnPlayerSpawn(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    new zeit;
    zeit=dini_Int(Spieler,"knastzeit");
    if(sSpieler[playerid][knastzeit] > 0)
    {
    SetPlayerPos(playerid,263.7467,77.5785,1001.0391);
    SetPlayerInterior(playerid,6);
    SetTimerEx("knasttimer",zeit,false,"i",playerid);
    return 1;
    }
    else
    {
    new wanteds,killerid;
    wanteds=GetPlayerWantedLevel(playerid);
    if(wanteds>=1)
    {
    if(IstSpielerInFraktion(killerid,1))
    {
    SetPlayerPos(playerid,266.7467,77.5785,1001.0391);
    SetPlayerInterior(playerid,6);
    return 1;
    }
    }
    else
    {
    if(IstSpielerInFraktion(playerid, 0))
    {
    SetPlayerPos(playerid, 825.6290,-1354.6455,13.5393);
    SetPlayerColor(playerid,WEISS);
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    return 1;
    }
    else if(IstSpielerInFraktion(playerid, 1))
    {
    SetPlayerPos(playerid, 237.6967,78.9653,1005.0391);
    SetPlayerInterior(playerid,6);
    SetPlayerColor(playerid,BLAU);
    SetPlayerSkin(playerid,dini_Int(Spieler,"Skin"));
    SendClientMessage(playerid,BLAU,"Du bist am LSPD gespawnt!");
    return 1;
    }
    }
    }
    return 1;
    }

  • new bool: justspawnt [ MAX_PLAYERS ] = false;


    onplayerspawn:
    justspawnt[playerid] = true;


    onplayerupdate:
    if(justspawnt[playerid] == true)
    {
    SetPlayerPos(playerid, //Knast
    SetPlayerInterior(playerid,6);
    justspawnt[playerid] = false;
    }


    Ich glaube so sollte es gehen

    Erst wenn
    der letzte Baum gerodet,
    der letzte Fisch vergiftet
    und der letzte Fisch gefangen ist,
    werdet ihr feststellen,
    dass man Gold nicht essen kann.

  • ich habe das von aviPhunk versucht und es geht! Trotzdem danke ich euch beiden!


    Es gibt jedoch noch ein weiteres Problem:
    ich muss immer bei /knast [ID][Zeit] bei Zeit eine granz große Zahl schreiben, weil das glaube ich millisekunden sind. kann man das in minuten ändern?


    mfg
    Jan

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Freut mich ;)
    Beim Befehl:
    sSpieler[playerid][knastzeit] = zeit*1000;



    SetTimerEx("knasttimer",zeit*1000,false,"i",playerid);

    Erst wenn
    der letzte Baum gerodet,
    der letzte Fisch vergiftet
    und der letzte Fisch gefangen ist,
    werdet ihr feststellen,
    dass man Gold nicht essen kann.

  • danke.


    Es gibt jedoch folgendes neues Problem:
    id 1 sperrt mich ein, es gibt einen serverrestart und ich bekommt id 1 und id 0 sitzt jetzt statt mir im knast. also: 1.felix sperrt jan ein->2.serverrestart->3.felix sitzt im knast, jan ist frei