Krankenhaus

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
  • Moin erstmal:



    Habe eine frage undzwar, ich habe ein Krankenhaussystem gemacht, aber es ist noch ein bissle buggy, das heißt:



    1. Wenn ich das erstemal in krankenhaus gehe und dann wieder entlassen werde klappt es.


    Aber wenn ich das zweite mal sterbe komm ich nicht mehr ins krankenhaus sondern ich komme ganz normal an meinem spawn platz



    2. Ich habe ein Timer erstellt das man erst 4 sek nach dem Tod ins krankenhaus kommt, aber man wird zuerst gespawnt und dann 1sek später kommt man erst ins krankenhaus....



    hier mal der code:



    public OnPlayerDeath(playerid, killerid, reason)
    {
    ZeitTimer1[playerid] = SetTimerEx("KrankenhausTimer1", 3500, 1, "i",playerid);
    Zeit1[playerid] = 4;

    return 1;
    }



    public KrankenhausTimer1(playerid)
    {
    if(Zeit[playerid] == 0)
    {
    KillTimer(ZeitTimer1[playerid]);
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, rot ,"Du bist im Krankenhaus!");
    ZeitTimer[playerid] = SetTimerEx("KrankenhausTimer",1000,1,"i",playerid);
    TogglePlayerControllable(playerid, 0);
    GivePlayerMoney(playerid, -250);
    SendClientMessage(playerid, rot, "Deine Artztkosten betragen 250 €");
    SetPlayerPos(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerCameraPos(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerCameraLookAt(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerInterior(playerid, 0);
    Zeit[playerid] = 20;
    }
    Zeit[playerid]--;
    }




    public KrankenhausTimer(playerid)
    {
    new string[64];
    format(string, sizeof(string), "~r~Du bist in Ohnmacht ~n~~r~%d bist du wieder Erwachst.", Zeit[playerid]);
    GameTextForPlayer(playerid, string, 1500, 3);
    if(Zeit[playerid] == 0)
    {//Falls ja...
    KillTimer(ZeitTimer[playerid]);
    SpawnPlayer(playerid);
    GameTextForPlayer(playerid,"~r~Du wurdest entlassen!",2000,3);
    SetPlayerHealth(playerid, 100.00);
    TogglePlayerControllable(playerid, 1);
    SetPlayerPos(playerid,-2641.0754,653.2502,13700.4980);
    SetPlayerFacingAngle(playerid,89.6760);
    }
    Zeit[playerid]--;
    }




    Hoffentlich könnt ihr mir helfen denn ich bin verzweifelt ....

  • Schauste mal in meinem Steckbrief oder im Tutorial Bereich da gibts ein Krankenhaus Tutorial das 100% Funktioniert :P


    Und mach am ende des Timer Public's return 1;^^

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Du musst für jeden Spieler eine Variable machen, die am Anfang auf 0 gestellt ist.
    Wenn ein Spieler Stirbt, muss diese auf 1 gesetzt werden. Unter "OnPlayerSpawn" fragst du dann ab, ob
    diese Variable auf 1 ist. Falls ja wird der Spieler ins Krankenhaus teleportiert.


    So hab ich das jedenfalls gemacht.

  • ja schon aber das hängt doch garnicht zusammen....


    bei mir ist das ja so wenn der timer ausgeht passiert des, und deshalb hab ich ja dann killtimer gemacht...


    naja ich werds mal mit dem tutorial von ZKK ausbessern

  • Wieso machste eig.
    ZeitTimer[playerid] = SetTimerEx("KrankenhausTimer",1000,1,"i",playerid);
    Und nicht einen Timer der durchläuft also so:
    ZeitTimer[playerid] = SetTimerEx("KrankenhausTimer",30*1000,0,"i",playerid);
    Das wären jetzt 30 Sekunden kannste dir ja beliebig aussuchen aber anstatt die Variable runtergehen zu lassen die Var einfach löschen und den Timer direkt auf die volle Zeit setzen.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • also habe es mal nach deinem Prinzip gemacht habe aber eine warning bekommen:



    Code
    C:\Users\Dean\Desktop\Krankenhaus.pwn(2034) : warning 215: expression has no effect
    Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase
    
    
    1 Warning.



    Hier mal mein KHS System:



    //KrankenhausSachen
    new Zeit[MAX_PLAYERS];
    new ZeitTimer[MAX_PLAYERS];
    new ErsterSpawn[MAX_PLAYERS];
    new Krankenhaus[MAX_PLAYERS];
    forward KrankenhausTimer(playerid);



    public OnPlayerConnect(playerid)
    {
    TextDrawShowForPlayer(playerid,Textdraw0); //Gehörtnicht dazu
    TextDrawShowForPlayer(playerid,Textdraw1);// Gehört nicht dazu
    ErsterSpawn[playerid] = 0;
    Krankenhaus[playerid] = 0;

    return 1;
    }



    public OnPlayerSpawn(playerid)
    {
    if(ErsterSpawn[playerid] == 0)//Falls der Spieler noch nicht seinen ersten Spawn hatte => Kein Krankenhaus...
    {//Falls ja...
    ErsterSpawn[playerid]=1;//Setzt die Spieler Variable auf 1 => Erster Spawn gehabt
    }
    return 1;
    }



    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(ErsterSpawn[playerid] == 1)//Frabt ab ob der Erste Spawn bereits war.
    {
    ResetPlayerWeapons(playerid);
    SendClientMessage(playerid, rot ,"Du bist im Krankenhaus!");
    ZeitTimer[playerid] = SetTimerEx("KrankenhausTimer",1000,1,"i",playerid);
    TogglePlayerControllable(playerid, 0);
    GivePlayerMoney(playerid, -250);
    SendClientMessage(playerid, rot, "Deine Artztkosten betragen 250 €");
    SetPlayerPos(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerCameraPos(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerCameraLookAt(playerid,-2631.5818,645.2377,13701.2363);
    SetPlayerInterior(playerid, 0);
    Zeit[playerid] = 20;
    }

    return 1;
    }



    public KrankenhausTimer(playerid)
    {
    new string[64];
    format(string, sizeof(string), "~r~Du bist in Ohnmacht ~n~~r~%d bist du wieder Erwachst.", Zeit[playerid]);
    GameTextForPlayer(playerid, string, 1500, 3);
    if(IsPlayerConnected(playerid))//Fragt ab ob der Spieler Online ist
    {//Falls ja...
    if(Krankenhaus[playerid] == 1)//Fragt ab ob der Spieler im Krankenhaus ist
    {//Falls ja...
    if(Zeit[playerid] == 0)
    {//Falls ja...
    ErsterSpawn[playerid] == 0;
    SpawnPlayer(playerid);
    GameTextForPlayer(playerid,"~r~Du wurdest entlassen!",2000,3);
    SetPlayerHealth(playerid, 100.00);
    TogglePlayerControllable(playerid, 1);
    SetPlayerPos(playerid,-2641.0754,653.2502,13700.4980);
    SetPlayerFacingAngle(playerid,89.6760);
    }
    }
    }
    Zeit[playerid]--;
    return 1;
    }




    Vllt hilft dir das besser




    Einmal editiert, zuletzt von SAD94 ()