Brauche Hilfe bei Medic Heal System

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 Breadfish


    Ich habe versucht ein medic Heal System zu scripten aber es funktioniert nicht.
    Möchte es so haben dass ein Medic einen Spieler heilen kann wenn er sich in seiner Nähe befindet.
    Er muss nicht im Krankenwagen sitzen. Ich freue mich auf eure Hilfe ;)



    if(strcmp(cmd, "/mheal", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pTot] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Tote können keine Befehle nutzen!");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /mheal [ID/NAME] [Preis]");
    return 1;
    }
    moneys = strval(tmp);
    if(moneys < 1 || moneys > 1000) { SendClientMessage(playerid, rot, "Der Preis darf nicht weniger als 1$ und höher als 100$ sein!"); return 1; }
    if (giveplayerid == playerid)
    {
    SendClientMessage(playerid,rot, "Du kannst dich nicht selber Heilen!");
    return 1;
    }
    if (IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new giveambu = GetPlayerVehicleID(giveplayerid);
    new playambu = GetPlayerVehicleID(playerid);
    if(gTeam[playerid] == TEAM_CYAN||PlayerInfo[playerid][pMember]==4||PlayerInfo[playerid][pLeader]==4)//model
    {
    if (IsAnAmbulance(playambu) && playambu == giveambu)
    {
    new Float:tempheal;
    GetPlayerHealth(giveplayerid,tempheal);
    if(tempheal >= 99.0)
    {
    SendClientMessage(playerid,rot,"Dieser Spieler hat genug Leben.");
    return 1;
    }
    format(string, sizeof(string), "~y~Geheilt $%d", giveplayer,moneys);
    GameTextForPlayer(playerid, string, 2000, 1);
    GivePlayerMoney(playerid,moneys);
    GivePlayerMoney(giveplayerid,-moneys);
    new hp = 0;
    if(PlayerInfo[playerid][pPainPerk] > 0)
    {
    hp = 20 * PlayerInfo[playerid][pPainPerk]; hp += 100;
    SetPlayerHealth(giveplayerid, hp);
    }
    else
    {
    hp = 100;
    SetPlayerHealth(giveplayerid, 100);
    }
    PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
    PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0);
    format(string, sizeof(string), "Du wurdest für {009933}$%d {FFFFFF}geheilt.",moneys);
    ClearAnimations(giveplayerid);
    SendClientMessage(giveplayerid,COLOR_WHITE,string);
    if(STDPlayer[giveplayerid] > 0)
    {
    STDPlayer[giveplayerid] = 0;
    SendClientMessage(giveplayerid, COLOR_WHITE, "Du bist nun nicht mehr an Ebola erkrankt. Die Ärzte konnten dich retten!");
    }


    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nicht im Krankenwagen");
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, " Du bist kein Medic Mitglied");
    return 1;
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_RED, string);
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von HandsUper () aus folgendem Grund: Erledigt

  • Bis zu dem Message der preis darf nicht unter 1 oder über 100 sein usw.


    Bis dahin wird es ausgeführt. Der Preis ist eig richtig aber die nachricht kommt trotzdem


    Ich will es so haben dass der Medic einen Spieler heilen kann ohne auf eine Akzeptierung zu warten.


    Der Spieler darf aber erst geheilt werden wenn er unter 99 hp ist. Der Medic soll dafür halt Geld bekommen
    aber den Preis stelle ich ein. Nur ohne /accept usw.

    Einmal editiert, zuletzt von HandsUper ()


  • ocmd:mheal(playerid, params[])
    {
    if(!IsPlayerConneced(playerid))return 1;
    if(PlayerInfo[playerid][pTot] == 1)return SendClientMessage(playerid, COLOR_GREY, "Tote können keine Befehle nutzen!");
    new giveplayerid, moneys;
    if(gTeam[playerid] != TEAM_CYAN&&PlayerInfo[playerid][pMember]!=4&&PlayerInfo[playerid][pLeader]!=4)return SendClientMessage(playerid, COLOR_RED, "Du bist kein Medic Mitglied");
    if(sscanf(params, "ui", giveplayerid, moneys))return SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /mheal [ID/NAME] [Preis]");
    if(moneys < 1 || moneys > 1000)return SendClientMessage(playerid, rot, "Der Preis darf nicht weniger als 1$ und höher als 100$ sein!");
    if(giveplayerid == playerid)return SendClientMessage(playerid,rot, "Du kannst dich nicht selber Heilen!");
    if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID)
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid),
    SendClientMessage(playerid, COLOR_RED, string);
    return 1;
    }
    new playambu, Float:givehealth;
    playambu = GetPlayerVehicleID(playerid);
    givehealth = GetPlayerHealth(giveplayerid);
    if(!IsAnAmbulance(playambu))return SendClientMessage(playerid, COLOR_RED, "Du sitzt in keinem Krankenwagen");
    if(!IsPlayerInMyVehicle(playerid, giveplayerid))return SendClientMessage(playerid, COLOR_RED, "Ihr seid nicht im gleichen Wagen!");
    if(givehealth >= 99.0)return SendClientMessage(playerid, COLOR_RED, "Der Spieler hat genug leben");
    if(STDPlayer[giveplayerid] > 0)
    {
    STDPlayer[giveplayerid] = 0;
    SendClientMessage(giveplayerid, COLOR_WHITE, "Du bist nun nicht mehr an Ebola erkrankt. Die Ärzte konnten dich retten!");
    }
    SetPlayerHealth(giveplayerid, 100),
    PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0),
    PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0),
    format(string, sizeof(string), "Du wurdest für {009933}$%d {FFFFFF}geheilt.",moneys),
    ClearAnimations(giveplayerid),
    SendClientMessage(giveplayerid,COLOR_WHITE,string);
    return 1;
    }



    stock IsPlayerInMyVehicle(playerid, giveid)
    {
    new id_cache[2];
    id_cache[0] = GetPlayerVehicleID(playerid);
    id_cache[1] = GetPlayerVehicleID(giveid);
    if(id_cache[0] == id_cache[1])return 1;
    return 0;
    }

    Hab dir den Command mal bisschen umgeschrieben, unter anderem, habe ich es auf OCMD umgeschrieben.
    Also lege ich dir doch sehr ans Herz dass du dir die Include holst, sowie SSCANF einrichtest.
    Den SSCANF Stock musst du quasi einfach unten als "Funktion" einfügen oder dir ebenfalls die Include+Plugin reinhauen.