Krankenhaus-System funzt 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
  • so, hi leute,


    ich scripte jetzt seit ca. 2 wochen und habs von anfang an eigentlich ziemlich gut hingekriegt... mein 1. größeres problem hab ich selbst lösen können, aber jetzt beim krankenhaus system schaff ichs nicht das alles zu fixen, daher hab ich micht jetzt hier im samp-forum registriert und hoffe jetzt auf eure hilfe^^



    also: mein krankenhaus system liest beim playerdeath erst mal die 3 entfernungen aus (ls, sf und lv krankenhaus und gibt dann den befehl an den stock krankenhaus(playerid,id) wobei id für 0 (ls) 1 (sf) oder 2 (lv) steht (das nächstgelegenste krankenhaus eben...). daraufhin wird der spieler in den käfig unterm krankenhaus gespawnt, gefreezed und die camera auf den schriftzug des jeweiligen krankenhauses gerichtet. jetzt wird auch noch im krankenhaus stock ein timer (id: behandlung[playerid]) erstellt, 1000 ms, wiederholung true und "i" als playerid wird mit übermittelt, in dem aufgerufenen public (khhp) werden dann jede sekunde 10 hp dem toten spieler gegeben, bis dann mit dem if herausgefunden wird, ob der spieler 100 oder mehr hp besitzt. daraufhin wird nämlich der timer behandlung[playerid] gekillt und der spieler gespawnt (vorm krankenhaus...)


    was aber bis jetzt nicht funktioniert sinn die 10 hp jede sekunde/1000ms, er wird sofort nach 1 sekunde gespawnt... seit 2 tagen versuche ich das hinzubekommen und schaff es nicht...


    (vll hilft es zu wissen, dass mein kh-system orientiert an dem krankenhaus-tutorial von hier erstellt wurde... Krankenhaus hinzufügen)


    hier meine code ausschnitte:
    -----------------------------------
    ganz oben vorm main():

    //Timer
    new behandlung[MAX_PLAYERS];
    //Arrays
    new ErsterSpawn[MAX_PLAYERS];
    new Krankenhaus[MAX_PLAYERS];
    //forwards
    forward khhp(playerid);


    OnGameModeInit(): (das sinn dei käfige, in die der tote player hingespawnt wird^^)

    //Objects
    //KrankenhausKäfige
    CreateObject(19272, 1150.85, -1326.12, -20.00, 0.00, 0.00, 0.00);
    CreateObject(19272, -2640.66, 664.33, -20.00, 0.00, 0.00, 0.00);
    CreateObject(19272, 1607.38, 1790.23, -20.00, 0.00, 0.00, 0.00);


    OnPlayerConnect(...): (die variablen auf 0 setzen)

    ...
    ErsterSpawn[playerid] = 0;
    Krankenhaus[playerid] = 0;
    ...


    OnPlayerSpawn(...): (ja ich hab mein geld extra nochmal gegen hacks/cheats gesichert mit ner playervariable :thumbup: )

    public OnPlayerSpawn(playerid)
    {
    if(ErsterSpawn[playerid] == 0) //Falls der Spieler noch nicht seinen ersten Spawn hatte => Kein Krankenhaus...
    {
    ErsterSpawn[playerid]=1; //Setzt die Spieler Variable auf 1 => Erster Spawn gehabt
    PlayerColor(playerid);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,GetPVarInt(playerid,"Geld"));
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SetPlayerCameraPos(playerid,315.8290,-1771.0876,4.7339);
    SetPlayerPos(playerid,315.8290,-1773.9100,4.7339);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    SetPVarInt(playerid,"maxcars",floatround(GetPVarInt(playerid,"Level")+0.5));
    return 1;
    }
    else
    {
    if(GetPVarInt(playerid,"entlassen") == 1)
    {
    switch(GetPVarInt(playerid,"khspawn"))
    {
    case 0:
    {
    SetPlayerPos(playerid,1176.2795,-1323.2716,14.0135);
    SetPlayerFacingAngle(playerid,270);
    SetCameraBehindPlayer(playerid);
    }
    case 1:
    {
    SetPlayerPos(playerid,-2655.3804,634.2601,14.4531);
    SetPlayerFacingAngle(playerid,180);
    SetCameraBehindPlayer(playerid);
    }
    case 2:
    {
    SetPlayerPos(playerid,1607.1523,1819.3735,10.8280);
    SetPlayerFacingAngle(playerid,0);
    SetCameraBehindPlayer(playerid);
    }
    }
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    DeletePVar(playerid,"khspawn");
    DeletePVar(playerid,"entlassen");
    return 1;
    }
    else
    {
    return 0;
    }
    }
    }


    OnPlayerDeath(...):


    public OnPlayerDeath(playerid, killerid, reason)
    {
    SendDeathMessage(killerid,playerid,reason);
    SetPVarInt(playerid,"kh",1);
    TogglePlayerControllable(playerid,0);
    ResetPlayerWeapons(playerid);
    Krankenhaus[playerid] = 1;
    new Float:distLS,Float:distSF,Float:distLV;
    distLS = GetPlayerDistanceFromPoint(playerid,1152.5037,-1326.7557,-19.0000);
    distSF = GetPlayerDistanceFromPoint(playerid,-2637.7944,664.5626,-19.0000);
    distLV = GetPlayerDistanceFromPoint(playerid,1608.9064,1789.1655,-19.0000);
    if(floatcmp(distLS,distSF)==-1)
    {
    if(floatcmp(distLS,distLV)==-1)
    {
    krankenhaus(playerid,0); //LS
    }
    else
    {
    krankenhaus(playerid,2); //LV
    }
    }
    else
    {
    if(floatcmp(distSF,distLV)==-1)
    {
    krankenhaus(playerid,1); //SF
    }
    else
    {
    krankenhaus(playerid,2); //LV
    }
    }
    return 0;
    }



    OnPlayerRequestSpawn(...): (ka ob das nicht i-wie unötig is... hab halt alles mögliche durchprobiert, dass er nicht spawnt...)


    public OnPlayerRequestSpawn(playerid)
    {
    if(GetPVarInt(playerid,"entlassen") == 0)
    {
    return 0;
    }
    else
    {
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SpawnPlayer(playerid);
    return 1;
    }
    }



    hier mein eigenes public, das public khhp(playerid): (der timer ruft das auf)


    public khhp(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1) //Fragt ab ob der Spieler Online ist
    {
    if(Krankenhaus[playerid] == 1) //Fragt ab ob der Spieler im Krankenhaus ist
    {
    new Float:hp;
    GetPlayerHealth(playerid,hp);
    SetPlayerHealth(playerid,hp+10.0);
    hp+=10.0;
    if(hp>=100.0)
    {
    KillTimer(behandlung[playerid]);
    SetPVarInt(playerid,"entlassen",1);
    SpawnPlayer(playerid);
    }
    }
    }
    return 1;
    }



    hier mein stock krankenhaus(playerid,(krankenhaus-)id):




    stock krankenhaus(playerid,id)
    {
    SetPlayerInterior(playerid, 0); //Setzt den Interior vom Spieler auf 0 damit er was sehen kann
    switch(id)
    {
    case 0: //LS
    {
    SetPlayerPos(playerid,1152.5037,-1326.7557,-19.0000);
    SetPlayerCameraPos(playerid, 1211.2188, -1322.9846, 23.6346);
    SetPlayerCameraLookAt(playerid, 1210.2119, -1323.0203, 23.3768);
    SetPVarInt(playerid,"khspawn",0);
    }
    case 1: //SF
    {
    SetPlayerPos(playerid,-2637.7944,664.5626,-19.0000);
    SetPlayerCameraPos(playerid, -2529.6250, 652.3801, 54.7671);
    SetPlayerCameraLookAt(playerid, -2530.6294, 652.4240, 54.4917);
    SetPVarInt(playerid,"khspawn",1);
    }
    case 2: //LV
    {
    SetPlayerPos(playerid,1608.9064,1789.1655,-19.0000);
    SetPlayerCameraPos(playerid, 1607.7516, 1863.5873, 27.9389);
    SetPlayerCameraLookAt(playerid, 1607.7570, 1862.5786, 27.6160);
    SetPVarInt(playerid,"khspawn",2);
    }
    }
    behandlung[playerid] = SetTimerEx("khhp",1000,true,"i",playerid);
    }






    über jegliche art von hilfe, hinweise oder fragen usw. würde ich mich sehr freuen!


    lg Twix



    UPDATE: spawne jetzt nach 1 sekunde mit cj-skin bei dem ort wo man normal class auswählt, stehe dort für weitere 9 sekunden und spawne dann mit meinen 100 hp beim krankenhaus...

    Selfmade-Script (Reallife/Roleplay) in Bearbeitung... (aktueller Stand: 3300 Zeilen)


    ▒█▀█▀█ █░░░█▒▄█░ █░█
    ░░▒█░░ █░█░█░▒█░ ▄▀▄
    ░▒▄█▄░ ░▀░▀░▒▄█▄ ▀░▀

    Einmal editiert, zuletzt von Tw1x ()