Wiederbelebungs System Probleme

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
  • Guten Tag,


    Undzwar möchte ich ein Wiederbelebungs System machen.
    Dies sollte so ablaufen, der Spieler stirbst und landet im Krankenhaus. Daraufhin wird ein Totenkopf Pickup erstellt, dies hab ich auch so schon hinbekommen.
    Jetzt möchte ich das wenn der Spieler stirbt eine Meldung bei den Medics kommt, dies hab ich auch hinbekommen.


    format(string,sizeof(string),"%s ist gestorben und benötigt eine Wiederbelebung. (Tippe /accept wiederbelebung ein um den Notruf anzunehmen.)",SpielerName(playerid));
    SendMedicMessage(COLOR_DEPARTMENT,string);


    So jetzt soll der Medic /accept wiederbelebung ID machen und dann soll ein Checkpoint erstellt werden wo der Spieler gestorben ist.
    Wenn ich das System soweit hin fertig habe, könnte ich es auch alleine Fortsetzen.
    Ich würde mich sehr freuen wenn mir einer den restlichen Script teil zeigen würde wie ich es machen kann.


    Mit freundlichen Grüßen
    Martin.1994

  • Martin.1994


    Dein System könnte so aussehen in etwa



    #include <a_samp>
    #include <sscanf2>
    #include <pcmd>


    new Float:DeadPoint[MAX_PLAYERS][3],
    DeadPeople[MAX_PLAYERS] ={-1,...},
    ReanimatedPlayer[MAX_PLAYERS]={-1,...},
    Medic[MAX_PLAYERS];


    CMD->medic(playerid,params[]){
    extract params -> new player:pID;else return SendClientMessage(playerid,-1,"Benutze: /medic [playerid]");
    Medic[pID] = 1;
    return 1;
    }
    CMD->accept(playerid,params[]){
    extract params -> new player:pID;else return SendClientMessage(playerid,-1,"Benutze: /accept [playerid]");
    new i;
    for(; i != MAX_PLAYERS; ++i){
    if(DeadPeople[i] == pID){
    SetPlayerCheckpoint(playerid,DeadPoint[i][0],DeadPoint[i][1],DeadPoint[i][2],1.0);
    ReanimatedPlayer[playerid] = i;
    return SendClientMessage(playerid,-1,"Du kannst ihn nun reanimieren");
    }
    }
    SendClientMessage(playerid,-1,"Dieser Spieler ist nicht Tod");
    return 1;
    }
    public OnPlayerDeath(playerid, killerid, reason)
    {
    GetPlayerPos(playerid,DeadPoint[playerid][0],DeadPoint[playerid][1],DeadPoint[playerid][2]);
    DeadPeople[playerid] = playerid;
    new i,str[30];
    format(str,30,"Der Spieler mit der id %d ist verreckt!",playerid);
    CreatePickup(1254, 1, DeadPoint[playerid][0],DeadPoint[playerid][1],DeadPoint[playerid][2], 0);
    for(; i < MAX_PLAYERS; ++i)if(Medic[i])SendClientMessage(i,-1,str);
    return 1;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(ReanimatedPlayer[playerid] != -1){
    new i;
    for(; i < MAX_PLAYERS; ++i){
    if(IsPlayerInRangeOfPoint(playerid,2.0,DeadPoint[i][0],DeadPoint[i][1],DeadPoint[i][2]) && ReanimatedPlayer[playerid] == DeadPeople[i]){
    DisablePlayerCheckpoint(playerid);
    SetPlayerPos(ReanimatedPlayer[playerid],DeadPoint[i][0],DeadPoint[i][1],DeadPoint[i][2]);
    DestroyPickup(pickupid);
    DeadPeople[i] = -1;
    ReanimatedPlayer[playerid] = -1;
    DeadPoint[i][0] = 0.0;
    DeadPoint[i][1] = 0.0;
    DeadPoint[i][2] = 0.0;
    return SendClientMessage(playerid,-1,"Du hast den Spieler reanimiert");
    }
    }
    }
    return 1;
    }