/heilen error

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
  • if(strcmp(cmdtext,"/heilen",true) == 0)
    {
    if(gTeam[playerid] == TEAM_MEDIC)
    {
    new heilname[MAX_PLAYER_NAME];
    new string [123];
    {
    GetPlayerName(playerid,heilname,sizeof(heilname));
    format(string,sizeof(string),"Arzt: %s wurde von einem Arzt auf 100 HP geheilt!",heilname);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    SetPlayerHealth(playerid,100);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist nicht im Sanitäter Team!");
    }
    return 1;
    }

    Hallo ich habe mir grad mal im Wiki so angeschaut die Funktionen
    und habe mal angefangen ein /heilen " befehl für Medics zu erstellen
    aber ich möchte dass man die Playerid/Name auch angeben muss
    Aber geht nicht weil wenn ich dass eingebe dann heilt er automatisch!
    Danke für eure hilfe


    Werde auch Weiter noch im Wikipedia nachschauen
    LG ALPHA


    Destiny - RealLife is coming SOON!
    Wir sind zurück besser als je zuvor! :*

  • Mit dcmd.


    Quelle aus [ SCRIPTING ] Commands mit Parametern


    dcmd_sethealth(playerid,params[])
    {
    new
    pID,
    Float:fHP;
    if(sscanf(params, "df",pID,fHP)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /sethealth [playerid] [healthpoints]");


    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");


    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    GivePlayer[MAX_PLAYER_NAME],
    string[128];
    GetPlayerName(pID,GivePlayer,sizeof(GivePlayer));
    GetPlayerName(playerid,ThePlayer,sizeof(ThePlayer));
    SetPlayerHealth(pID,fHP);
    format(string,sizeof(string),"%s (ID %d) Healtpoints wurden von %s (ID %d) auf %.1f gesetzt!",GivePlayer,pID,ThePlayer,playerid,fHP);
    SendClientMessageToAll(COLOR_YELLOW,string);
    return 1;
    }




    sscanf code brauchse noch

  • Hmm hier,
    ungetestet - sollte eig. klappten :>


    jedoch brauchst du strtok



    if(strcmp(cmdtext,"/heilen",true) == 0)
    {
    if(gTeam[playerid] == TEAM_MEDIC)
    {
    new tmp[64],id;
    tmp=strtok(cmdtext,idx);
    id=strval(tmp);
    new heilname[MAX_PLAYER_NAME],artzt[MAX_PLAYER_NAME];
    GetPlayerName(playerid,artzt,sizeof(artzt));
    GetPlayerName(id,heilname,sizeof(heilname));
    new string [123];
    {
    GetPlayerName(playerid,heilname,sizeof(heilname));
    format(string,sizeof(string),"Arzt: %s wurde von %s geheilt!",heilname,artzt);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    SetPlayerHealth(id,100);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist nicht im Sanitäter Team!");
    }
    return 1;
    }


    Das iwo im script:



    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    bei OnPlayerCommandText:



    new cmd[64],idx;
    cmd = strtok(cmdtext, idx);


    lg

  • bei dir war es so das wenn du diesen Befehl eingibst das du geheilt wirst weil da eben bei SetPlayerHealth playerid stand also playerid sprich sich selbst