Timer (OnPlayerDeath)

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 ho...
    könnte mir evtl jemand helfen nen timer zu erstellen...
    ich hätte gern , das nach nem kill, die killerid 1 min in den knast muss
    und die playerid 1 min ins kh...
    den codeschnipsel für OnPlayerDeath hab ich schon zusammen...
    mir fehlt jetzt einzig und allein ein timer =)
    ich hoffe ihr könnt mir helfen =)


    thx im voraus

    Einmal editiert, zuletzt von -s0N!k-54- ()

  • wo muss der timer hin?^^
    scripte seit knapp ner woche.. hab da noch die ein oder andere schwierigkeit das ganze zuzuordnen...
    wollte das der beide player in dieser zeit gefreezt sind...
    man man man nich so einfach als neuling =)

  • Unter OnPlayerDeath - bzw. dort wo Du den Timer starten lassen möchtest.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • du machst 2 forwards oben im script:
    forward Krankenhaus(playerid);
    forward Knast(playerid);


    du machst 2 settimerex unter OnPlayerDeath:


    OnPlayerDeath(...)
    {
    SetTimerEx("Krankenhaus",60000,0,"i",playerid);
    SetTimerEx("Knast",60000,0,"i",killerid);


    nun musst zu 2 publics machen, die treten ein sobald die zeit von 60000 milisekunden = 1min abgelaufen ist.


    public Krankenhaus(playerid)
    {
    //was passieren soll also das der vllt spawnt oder das eine nachricht ersheint
    return 1;
    }


    public Knast(playerid)
    {
    //das selbe wie beim public Krankenhaus, du muss nun scripten was passieren soll
    return 1;
    }

  • Verwende bitte nicht 2 Timer die letzten Endes das selbe bewirken sollen, sondern verwende eine Funktion und übergib an diese player und killerid.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • das würde auch gehen.


    weiß aber nicht wie dann SetTimerEx heißen soll. "ii",playerid,killerid ?


    ich denke schon und dann ein forward:forward NAME(playerid, killerid);


    und ein public:
    public NAME(playerid,killerid)
    {
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • habs jetzt so gemacht...


    forward Krankenhaus(playerid);
    forward Knast(playerid);



    public OnPlayerDeath(playerid, killerid, reason)
    {
    PlayerPlaySound(playerid,1062,0.0,0.0,0.0);
    SetPlayerPos(playerid,1607.0782,1822.7979,10.8203);
    SetPlayerPos(killerid,0.0,0.0,0.0);
    SendClientMessage(playerid, 0xAA3333AA, "Du bist im Krankenhaus warte ne Minute");
    TogglePlayerControllable(playerid, 1);
    TogglePlayerControllable(playerid, 1);
    SendClientMessage(killerid,0xFF6347AA, "Ab in den Knast mit dir");
    SendClientMessage(playerid,0xFF6347AA, " Du bist gestorben Arzt kosten 200$");
    GivePlayerMoney(killerid, -600);
    GivePlayerMoney(playerid, -200);
    TogglePlayerControllable(killerid, 1);
    TogglePlayerControllable(killerid, 1);
    SetTimerEx("Krankenhaus",60000,0,"i",playerid);
    SetTimerEx("Knast",60000,0,"i",killerid);
    return 1;
    }


    public Krankenhaus(playerid)
    {
    SendClientMessage(playerid, 0xAA3333AA, "Besuche uns bald wieder =).");
    SetPlayerHealth(playerid, 100);
    SetPlayerPos(playerid,0.0,0.0,0.0);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }


    public Knast(playerid)
    {
    SendClientMessage(playerid, 0xAA3333AA, "Raus mit dir du hast den Staat genug Geld gekostet =).");
    SetPlayerPos(playerid,0.0,0.0,0.0);
    TogglePlayerControllable(playerid, 0);
    return 1;
    }


    SetPlayerPos(playerid,0.0,0.0,0.0);<<< die nullen werden natürlich noch ersetzt mit den richtigen koordinaten


    thx@ all =)

  • Wie gesagt, wenn du zwei Timer für eine Sache verwendest verdoppelst Du damit den "Ressourcenverbrauch" - was in diesem Fall absolut sinnlos ist.


    Mach eine gemeinsame Funktion



    forward blabla(playerid,killerid);
    public blabla(playerid,killerid)
    {


    }



    SetTimerEx("blabla",60000,0,"dd",playerid,killerid);


    Verwende auch "d" wenn es sich um eine "normale" Dezimalzahl handelt. "i" wird für alle Dez-Zahlen benutzt - Hex + Okt + Dez.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax


  • wie geasagt scripte erst seit n paar tagen...
    versteh nicht wirklich wie du das meinst... =)

  • Ich hab dir das mal auf einen Timer angepasst



    forward Kill(playerid,killerid);


    public OnPlayerDeath(playerid, killerid, reason)
    {
    PlayerPlaySound(playerid,1062,0.0,0.0,0.0);
    SetPlayerPos(playerid,1607.0782,1822.7979,10.8203);
    SetPlayerPos(killerid,0.0,0.0,0.0);
    SendClientMessage(playerid, 0xAA3333AA, "Du bist im Krankenhaus warte ne Minute");
    TogglePlayerControllable(playerid, 1);
    TogglePlayerControllable(playerid, 1);
    SendClientMessage(killerid,0xFF6347AA, "Ab in den Knast mit dir");
    SendClientMessage(playerid,0xFF6347AA, " Du bist gestorben Arzt kosten 200$");
    GivePlayerMoney(killerid, -600);
    GivePlayerMoney(playerid, -200);
    TogglePlayerControllable(killerid, 1);
    TogglePlayerControllable(killerid, 1);
    SetTimerEx("Kill",60000,0,"ii",playerid,killerid);
    return 0;
    }


    public Kill(playerid,killerid)
    {
    SendClientMessage(playerid, 0xAA3333AA, "Besuche uns bald wieder =).");
    SetPlayerHealth(playerid, 100);
    SetPlayerPos(playerid,0.0,0.0,0.0);
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(killerid, 0xAA3333AA, "Raus mit dir du hast den Staat genug Geld gekostet =).");
    SetPlayerPos(killerid,0.0,0.0,0.0);
    TogglePlayerControllable(killerid, 0);
    return 0;
    }

    //Danke ray nun getestet ... funktioniert bei mir


    Spart den 2. Timer damit Resourcen... nun bei 2 Timern und einen kleinen Script nicht merklich... stell dir das ganze aber mal vor bei der 20 fachen anzahl von Timern und einem 15k Zeilen script den dauerhaft 150 Leute ausnutzen....

    Einmal editiert, zuletzt von Velo. ()

  • Sorry,


    Du rufst eine Funktion auf, die beide gerade erstellen Funktionen abdeckt. Beispiel:



    forward SpielerGestorben(playerid,killerid);


    public SpielerGestorben(playerid,killerid)
    {
    SendClientMessage(playerid, 0xAA3333AA, "Besuche uns bald wieder =).");
    SetPlayerHealth(playerid, 100);
    SetPlayerPos(playerid,0.0,0.0,0.0);
    TogglePlayerControllable(playerid, 0);
    SendClientMessage(killerid, 0xAA3333AA, "Raus mit dir du hast den Staat genug Geld gekostet =).");
    SetPlayerPos(killerid,0.0,0.0,0.0);
    TogglePlayerControllable(killerid, 0);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    // ...
    SetTimerEx("SpielerGestorben",60000,0,"dd",playerid,killerid); // anstelle der beiden anderen SetTimerEx
    //...


    Begründung: Wenn es so einfach ist, auf einen Timer zu verzichten, sollte man dem nachgehen. Die Verwendung von Timern sollten so weit wie möglich eingeschränkt werden und gerade in diesem Beispiel ist es absolut nicht nötig zwei Timer zu verwenden.


    Der Code über meinem Post wird übrigens nicht funktionieren, da die Timer Funktion falsch aufregufen wird. Meiner ist aber auch nicht getestet ;).

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax