/arrest Befehl -> Zeit wird nicht gesetzt

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!
    Ich habe das Problem, dass eine Variable nicht gessetet wird, die die Gefängniszeit deklariert.
    Nun zum Befehl:



    ocmd:arrest(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(SpielerInfo[playerid][sMember] == 1 || SpielerInfo[playerid][sMember] == 2)
    {
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Arrest [SpielerID/Name]");

    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID, name, sizeof(name));

    new string[512];
    if(!SpielerInfo[pID][pWanted] > 0)
    {
    new time;
    time = SpielerInfo[pID][pWanted]*ServerSettings[ArrestTime];
    SpielerInfo[pID][pJailTime]=time;
    SpielerInfo[pID][pJailed]=1;
    SetTimer("JailTime", 1000, 0);
    SetPlayerPos(playerid,198.4943,162.0886,1003.0300);
    SetPlayerInterior(playerid,3);
    format(string, sizeof(string), "Du wurdest von %s eingesperrt!", GetName(playerid));
    SendClientMessage(pID, COLOR_DARKRED, string);
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Der ausgewählte Spieler hat keinen Wanted Level!");
    return 1;
    }

    if(SpielerInfo[playerid][sMember] == 1)
    {
    format(string, sizeof(string), "> LS-Polizeibeamter %s hat den Verbrecher %s eingesperrt <", GetName(playerid), name);
    SendClientMessageToAll(COLOR_DARKRED, string);
    }
    else if(SpielerInfo[playerid][sMember] == 2)
    {
    format(string, sizeof(string), "> SEK-Agent %s hat den Verbrecher %s eingesperrt <", GetName(playerid), name);
    SendClientMessageToAll(COLOR_DARKRED, string);
    }
    return 1;
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein LSPD/SEK Beamter!");
    return 1;
    }
    }
    return 1;
    }


    Hier der Public zum Timer:


    forward JailTime(playerid);


    public JailTime(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(SpielerInfo[playerid][pJailTime] > 0)
    {
    SpielerInfo[playerid][pJailTime]=SpielerInfo[playerid][pJailTime]-1;
    return 1;
    }
    else {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 1555.2781, -1675.5569, 16.1953);
    SetPlayerFacingAngle(playerid, 90.6666);
    SetCameraBehindPlayer(playerid);
    SpielerInfo[playerid][pJailed]=0;
    SpielerInfo[playerid][pJailTime]=0;
    new string[512];
    format(string, sizeof(string), "~g~Freiheit!~n~~g~Benimm dich das nächste Mal");
    GameTextForPlayer(playerid, string, 2500, 1);
    return 1;
    }
    }
    return 1;
    }


    PS: ServerSettings[ArrestTime] ist deklariert und hat den Wert 90.


    LG lolcooper


    Ich hoffe, mir kann jemand helfen :)

  • SetTimer("JailTime", 1000, 0);
    zu
    SetTimerEx("JailTime", 1000, 0, "d", playerid);



    Und:
    if(SpielerInfo[playerid][pJailTime] > 0)
    {
    SpielerInfo[playerid][pJailTime]=SpielerInfo[playerid][pJailTime]-1;
    return 1;
    }


    zu:
    if(SpielerInfo[playerid][pJailTime] > 0)
    {
    SetTimerEx("JailTime", 1000, 0, "d", playerid);
    SpielerInfo[playerid][pJailTime]=SpielerInfo[playerid][pJailTime]-1;
    return 1;
    }

  • Du hast doch sicherlich einen Timer der jede Minute aktualisiert oder? Wenn ja, machst du dort eine Schleife und frägst alle Spieler ab die im Knast sind, bzw. alle ab die Jailtime >0 haben und dann machst du bei allen ein -- und wenn bei einem 0 ist schickst du ihn in die Freiheit und am besten machst du noch eine zweite Variable ob er im knast ist... sonst wird er 100 mal gespawnt ;)


  • Du hast doch sicherlich einen Timer der jede Minute aktualisiert oder? Wenn ja, machst du dort eine Schleife und frägst alle Spieler ab die im Knast sind, bzw. alle ab die Jailtime >0 haben und dann machst du bei allen ein -- und wenn bei einem 0 ist schickst du ihn in die Freiheit und am besten machst du noch eine zweite Variable ob er im knast ist... sonst wird er 100 mal gespawnt

    Mein Problem hat sich geändert.. Siehe vorherigen Post. :thumbup:


    LG lolcooper


  • Dann drück dich bitte mit dem Post etwas anderes aus ich versteh nicht genau was du meinst...

    Also... :D :D
    Sobald man ja in das Gefängnis gesteckt wird, bleibt man auch dort for ever :D


    Ich habe auch einen /jailtime CMD erstellt, der die aktuelle Gefängniszeit anzeigt. Aber die scheint immer auf 0 zu sein und deswegen komme ich aus dem Gefängnis nicht mehr raus.. :/


    LG lolcooper

  • Der Bürgermeister kann selber die Arrest Zeit bestimmen.. Die Variable hat den Inhalt 90 als Zahl abgespeichert.


    LG lolcooper


    EDIT: Der Spieler Name wird auch nicht ausgegeben, wenn ich jemanden einsperre...

    Ich hab dir bereits vorhin gesagt unter sscanf muss auch der aktuelle Spieler im vordefinierung in unserem GM wiedergegeben werden.
    Also:
    new user;user = ReturnUser(pID);



    Weil wie will das Script die richtigen Spieler treffen.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.


  • Kommt folgender Fehler: (1430) : error 035: argument type mismatch (argument 1)


    new user;
    user=ReturnUser(pID); <---------- Fehler Zeile

  • Stefan pass auf wegen den Zitaten. Von mir wurde in Breadfish heute nen Beitrag gelöscht weil ich im Zitat angeblich sinnloses drin hätte. -.-


    Aber zurück zum Thema: dann mach new user mal am Anfang des ocmd's Befehl. Muss gehen :/

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • ocmd:arrest(playerid,params[])
    {
    new pID;
    if(IsPlayerConnected(playerid))
    {
    if(SpielerInfo[playerid][sMember] == 1 || SpielerInfo[playerid][sMember] == 2)
    {
    if(sscanf(params,"u",pID))return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Arrest [SpielerID/Name]");

    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID, name, sizeof(name));

    new string[512];
    if(SpielerInfo[pID][pWanted] > 0)
    {
    new time;
    time = SpielerInfo[pID][pWanted]*ServerSettings[ArrestTime];
    SpielerInfo[pID][pJailTime]=time;
    SpielerInfo[pID][pJailed]=1;
    SetPlayerPos(playerid,198.4943,162.0886,1003.0300);
    SetPlayerInterior(playerid,3);
    format(string, sizeof(string), "Du wurdest von %s eingesperrt!", GetName(playerid));
    SendClientMessage(pID, COLOR_DARKRED, string);
    SetTimerEx("JailTime", 1000, 0, "d", playerid);
    SpielerInfo[playerid][pWanted]=0;
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Der ausgewählte Spieler hat keinen Wanted Level!");
    return 1;
    }

    if(SpielerInfo[playerid][sMember] == 1)
    {
    format(string, sizeof(string), "> LS-Polizeibeamter %s hat den Verbrecher %s eingesperrt <", GetName(playerid), name);
    SendClientMessageToAll(COLOR_DARKRED, string);
    }
    else if(SpielerInfo[playerid][sMember] == 2)
    {
    format(string, sizeof(string), "> SEK-Agent %s hat den Verbrecher %s eingesperrt <", GetName(playerid), name);
    SendClientMessageToAll(COLOR_DARKRED, string);
    }
    return 1;
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein LSPD/SEK Beamter!");
    return 1;
    }
    }
    return 1;
    }


    Dies ist der neue Code..


    Die Variable "pID" erkennt er zwar schon, aber er befüllt sie nicht mit einem spieler.. z.B. ich gebe ein: /arrest Jeffry :thumbup:
    Dann würde er eine Error Meldung abgeben, wie "Der ausgewählte Spieler hat keinen Wanted Level!". Wobei ich selber 36 Wanteds habe.


    sscanf habe ich versucht zu updaten, aber es bringt gar nichts.


    LG lolcooper

  • Also, es soll ja derjenige mit den Wanteds arrested werden, daher muss ich die haben und nicht du, wenn du mich arrestest. Das stimmt ja im Code auch.


    SetTimerEx("JailTime", 1000, 0, "d", playerid);
    SpielerInfo[playerid][pWanted]=0;


    zu:
    SetTimerEx("JailTime", 1000, 0, "d", pID);
    SpielerInfo[pID][pWanted]=0;


    Und derjenige den du eingibst: /arrest Jeffry => Jeffry muss ein Wanted haben, nicht du.

  • *facepalm* Der peinlichste Fehler, den ich jemals gemacht habe :thumbup:


    Aber ich bekommen immer wieder die Fehlermeldung "Der ausgewählte Spieler hat keinen Wanted Level!"...


    Ich habe /arrest lolcooper gemacht und ich hatte auch 36 Wanteds... Aber es klappt nicht


    LG lolcooper

  • SetPlayerPos(playerid,198.4943,162.0886,1003.0300);
    SetPlayerInterior(playerid,3);
    Hier auch noch. pID muss das sein.



    Mach das
    new string[512];
    if(SpielerInfo[pID][pWanted] > 0)


    mal zu:
    new string[512];
    printf("pID: %d Wanted: %d", pID, SpielerInfo[pID][pWanted]);
    if(SpielerInfo[pID][pWanted] > 0)


    Was wird geprintet? Und stimmt die ID?