Krankenhaus-Problem

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 folgendes Problem:
    Ich möchte, dass man ins Krankenhaus kommt wenn man stirbt, da soll dann eine Kamerafahrt sein und danach soll man vor dem Krankenhaus gespawnt werden.
    Das ganze funktioniert aber nicht richtig.
    Wenn man stirbt, beginnt keine Kamera fahrt und man wird am standart Spawn gespawnt.
    Außerdem soll ein Pickup erstellt werden, dass wieder gelöscht werden Soll, wenn der Spieler lebt, das wird dann aber nicht mehr gelöscht. Behoben


    Code


    //OnPlayerDeath
    SetPlayerHealth(playerid, 100.0);
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    KrankenPickup[playerid]=CreateDynamicPickup(1254, 1, X, Y, Z);
    sInfo[playerid][gestorben] = 1;
    for(new i=0; i<250; i++)
    {
    SendClientMessage(playerid, COLOR_WHITE, " ");
    }
    SpawnPlayer(playerid);
    TogglePlayerSpectating(playerid, 1);
    InterpolateCameraPos(playerid, 1726.174072, -1268.656860, 31.427850, 1848.518188, -1249.270507, 30.470912, 180000);
    InterpolateCameraLookAt(playerid, 1727.962158, -1264.103759, 30.392429, 1844.484863, -1246.447753, 29.596525, 180000);
    KrankenTimer[playerid]=SetTimerEx("KHTimer", 180000, 0, "i", playerid);
    SendClientMessage(playerid, COLOR_BLUE, "[Info] Die Behandlung wird ca. 3 Minuten dauern!");

    Code
    public KHTimer(playerid)
    {
    SpawnPlayer(playerid);
    new money2=300, value, string[128];
    value = random(99);
    money2 += value;
    format(string, sizeof(string), "[Info] Die Behandlung hat dich %i€ gekostet!", money2);
    SendClientMessage(playerid, COLOR_BLUE, string);
    sInfo[playerid][money] -= money2;
    SetPlayerMoney(playerid);
    sInfo[playerid][gestorben] =0;
    return 1;
    }

    Code
    //OnPlayerSpawn
    if(sInfo[playerid][gestorben] == 0)
    {
    switch(sInfo[playerid][spawnchange])
    {
    case 0:
    {
    SetPlayerPos(playerid, 475.2139,-1768.3831,14.1287);
    SetPlayerFacingAngle(playerid, 139.3004);
    SetCameraBehindPlayer(playerid);
    }
    }
    StopAudioStreamForPlayer(playerid);
    TogglePlayerControllable(playerid, 0);
    SetTimerEx("Login", 888*3, 0, "i", playerid);
    TogglePlayerSpectating(playerid, 0);
    }
    else
    {
    SetCameraBehindPlayer(playerid);
    DestroyDynamicPickup(KrankenPickup[playerid]);
    SetPlayerPos(playerid, 1786.5051,-1230.0046,14.0820);
    SetPlayerFacingAngle(playerid,180.5842);
    }


    //Ein Problem Behoben

  • Du solltest erstmal
    SpawnPlayer(playerid); // OnPlayerDeath
    entfernen, du möchtest ihn eine Kamerafahrt geben stoppst aber sofort wieder.
    (Du spawnst ihn direkt und setzt die Kamera wieder hinter den Spieler)


    Jetzt habe ich noch eine Frage, warum sendest du 250x eine Nachricht aus um den Chat zu löschen? (10x reicht)


    Du solltest den Spieler übrigens noch in das Krankenhaus porten damit auch alles dort gestreamed wird.
    Einfach wo davor das SpawnPlayer bei OnPlayerDeath war die Position in das Krankenhaus setzen.


    Jetzt zählt der die Zeit runter und spawnt dann richtig.


  • Habe es überall raus genommen, die Kamerafahrt funktioniert nun auch. Allerdings spawnt man immernoch am Spawn


    Aktueller Code


    public KHTimer(playerid)
    {
    TogglePlayerSpectating(playerid, 0);
    DestroyDynamicPickup(KrankenPickup[playerid]);
    SetPlayerPos(playerid, 1786.5051,-1230.0046,14.0820);
    SetPlayerFacingAngle(playerid,180.5842);
    new money2=300, value, string[128];
    value = random(99);
    money2 += value;
    format(string, sizeof(string), "[Info] Die Behandlung hat dich %i€ gekostet!", money2);
    SendClientMessage(playerid, COLOR_BLUE, string);
    sInfo[playerid][money] -= money2;
    SetPlayerMoney(playerid);
    SetCameraBehindPlayer(playerid);
    sInfo[playerid][gestorben] =0;
    return 1;
    }

    Aktueller Code
    public OnPlayerDeath(playerid, killerid, reason)
    {
    TogglePlayerSpectating(playerid, 1);
    InterpolateCameraPos(playerid, 1726.174072, -1268.656860, 31.427850, 1848.518188, -1249.270507, 30.470912, 180000);
    InterpolateCameraLookAt(playerid, 1727.962158, -1264.103759, 30.392429, 1844.484863, -1246.447753, 29.596525, 180000);
    SetPlayerHealth(playerid, 100.0);
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    KrankenPickup[playerid]=CreateDynamicPickup(1254, 1, X, Y, Z);
    sInfo[playerid][gestorben] = 1;
    for(new i=0; i<10; i++)
    {
    SendClientMessage(playerid, COLOR_WHITE, " ");
    }
    KrankenTimer[playerid]=SetTimerEx("KHTimer", 180000, 0, "i", playerid);
    SendClientMessage(playerid, COLOR_BLUE, "[Info] Die Behandlung wird ca. 3 Minuten dauern!");
    return 1;
    }


    //Edit Problem behoben /close