Timer Geht nicht ;(

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
  • Hey Leute,


    versuceh gerade ein Jail system zu machen für meinen deutsch englischen server :)


    JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[playerid][pJailtime],1,"d",playerid);

    public SetJailTimer(playerid)
    {
    if(SpielerInfo[playerid][pJail] == 1)
    {
    new string[128];
    format(string,sizeof(string),"~y~Jailtime:~n~~r~%i~n~~y~Minutes",SpielerInfo[playerid][pJailtime]);
    GameTextForPlayer(playerid,string,60000,6);
    SpielerInfo[playerid][pJailtime]--;
    SendClientMessage(playerid,FRot,"Kleiner test ;)");
    }
    else if(SpielerInfo[playerid][pJailtime] == 0)
    {
    KillTimer(JailTimer);
    SpielerInfo[playerid][pJail] = 0;
    SpielerInfo[playerid][pJailtime] = 0;
    SpawnPlayer(playerid);
    }
    return 1;
    }


    Aber das public wird nicht aufgerufen ;(


    Fg

  • Wird es überhaupt nicht aufgerufen oder werden die Bedingungen ignoriert und deswegen macht er nichts.
    Klammer mal die Bedingungen weg und versuchs einfach mal mit sendclientmessage und wenns dann nicht klappt liegt an deinem settimer..




    Ideen oder Fragen zum Selfmade Script? --> Skype alextheking72



    © Project Revival Roleplay


  • //====| 1 |====
    ocmd:setprison(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/setprison'], use '/help' .");
    new pID, string[128],grund[128], jailtime;
    if(sscanf(params,"usi",pID,grund,jailtime))return SendClientMessage(playerid,FGrau,"Fehler: benutze /setprison [ID] [GRUND] [JAILTIME]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs ins prison stecken !");
    /*if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber ins prison stecken !");
    if(!IsPlayerAnAdmin(pID,6))
    {
    if(IsPlayerAnAdmin(pID,1))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine admins ins Prison stecken ! (AUSSER: Community Leitung) !");
    }*/
    SpielerInfo[playerid][pJail] = 1;
    SpielerInfo[playerid][pJailtime] = jailtime;
    format(string,sizeof(string),"[SERVER:] Welcome in Prison ! Reason: %s | Jailtime: %i Minutes.",grund,jailtime);
    SendClientMessage(pID,FRot,string);
    JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[pID][pJailtime],1,"d",playerid);
    SetPlayerInterior(pID,10);
    SetPlayerVirtualWorld(pID,5);
    SetPlayerPos(pID,228.9065,110.9886,999.2188);
    new string2[128];
    format(string2,sizeof(string2),"~y~Jailtime:~n~~r~%i~n~~y~Minutes",SpielerInfo[pID][pJailtime]);
    GameTextForPlayer(pID,string,62000,6);
    return 1;
    }
    //====| V2 |=====
    if(SpielerInfo[playerid][pJail] == 1)
    {
    new string[128];
    JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[playerid][pJailtime],1,"d",playerid);
    SetPlayerInterior(playerid,10);
    SetPlayerVirtualWorld(playerid,5);
    SetPlayerPos(playerid,228.9065,110.9886,999.2188);
    format(string,sizeof(string),"~y~Jailtime:~n~~r~%i~n~~y~Minutes",SpielerInfo[playerid][pJailtime]);
    GameTextForPlayer(playerid,string,60000,6);
    }



    Das funktioniert ja aber der timer wird nicht aufgerufen ;(

  • Muss du da nicht pID eintragen?


    JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[pID][pJailtime],1,"d",playerid);
    zu
    JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[pID][pJailtime],1,"d",pID);
    Ich glaube, das muss so.

  • JailTimer = SetTimerEx("SetJailTimer",60000*SpielerInfo[pID][pJailtime],1,"d",pID);


    Erst einmal ist das ein "Player-Timer". Heißt, dass wir mit Arrays arbeiten müssen (sonst löscht man alle Timer gleich).
    Dann hast du repeating auf true (1). Ich glaube nicht, dass der Spieler unendlich drin bleiben soll ^^.


    Dann würde ich vorschlagen, dass du in der Public Print anwendest. (Zb: so)
    Public blabla()
    {
    print("1");
    //Irgendwelche Sachen....
    print("2");
    //usw...
    }


    Und genau das gleiche vor und nach dem Timer. (An der Stelle, wo er gestartet wird)


    Dann brauchst du uns nur noch den Server-Log zeigen.


    L.G.
    heyho

  • Erst einmal ist das ein "Player-Timer". Heißt, dass wir mit Arrays arbeiten müssen (sonst löscht man alle Timer gleich).

    Ich kill den timer aber wenn du kucken kannst -.-*


    Fg

    Also eigentlich versuch ich dir ja nur zu helfen, deswegen denke ich, dass es sehr dreist von dir ist, unfreundlich zu werden, wenn dir wer versucht zu helfen.
    Wie gesagt, dann killst du Jeden Timer....Und eigentlich ist es einfach nur unnötig.

  • Wenn du den Timer killen möchtest, was eigentlich gar nicht nötig ist, dann musst du mit [MAX_PLAYERS] und [playerid] arbeiten.


    An der Variable hinten [MAX_PLAYERS] anhängen.


    Da, wo du die Variable im Script benutzt [playerid] anhängen und beim Killen:
    KillTimer(VARIABLENAMEN[playerid]);


    Ich hoffe das hat dir weitergeholfen, wenn nicht, melde dich noch einmal.

  • new JailTimer[MAX_PLAYERS];


    public SetJailTimer(pID)
    {
    if(SpielerInfo[pID][pJail] == 1)
    {
    new string[128];
    format(string,sizeof(string),"~y~Jailtime:~n~~r~%i~n~~y~Minutes",SpielerInfo[pID][pJailtime]);
    GameTextForPlayer(pID,string,60000,6);
    SpielerInfo[pID][pJailtime]--;
    SendClientMessage(pID,FRot,"Kleiner test ;)");
    }
    else if(SpielerInfo[pID][pJailtime] == 0)
    {
    KillTimer(JailTimer[pID]);
    SpielerInfo[pID][pJail] = 0;
    SpielerInfo[pID][pJailtime] = 0;
    SpawnPlayer(pID);
    }
    return 1;
    }
    ocmd:setprison(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,5))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/setprison'], use '/help' .");
    new pID, string[128],grund[128], jailtime;
    if(sscanf(params,"usi",pID,grund,jailtime))return SendClientMessage(playerid,FGrau,"Fehler: benutze /setprison [ID] [GRUND] [JAILTIME]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs ins prison stecken !");
    /*if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber ins prison stecken !");
    if(!IsPlayerAnAdmin(pID,6))
    {
    if(IsPlayerAnAdmin(pID,1))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine admins ins Prison stecken ! (AUSSER: Community Leitung) !");
    }*/
    SpielerInfo[pID][pJail] = 1;
    SpielerInfo[pID][pJailtime] = jailtime;
    format(string,sizeof(string),"[SERVER:] Welcome in Prison ! Reason: %s | Jailtime: %i Minutes.",grund,jailtime);
    SendClientMessage(pID,FRot,string);
    JailTimer[pID] = SetTimerEx("SetJailTimer",60000*SpielerInfo[pID][pJailtime],1,"d",pID);
    SetPlayerInterior(pID,10);
    SetPlayerVirtualWorld(pID,5);
    SetPlayerPos(pID,228.9065,110.9886,999.2188);
    new string2[128];
    format(string2,sizeof(string2),"~y~Jailtime:~n~~r~%i~n~~y~Minutes",SpielerInfo[pID][pJailtime]);
    GameTextForPlayer(pID,string,62000,6);
    return 1;
    }
    Ist nun neugeschrieben, schau mal ob das nun funktioniert.