/heal für Medic

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
  • Servus Leute,
    ich editiere gerade ein GodFather Script und mir ist aufgefallen das unter /heal Command auch mit
    andere Sachen verbunden sind wie z.B. Upgardes bla blaa. Siehe hier:

    if(strcmp(cmd, "/heal", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new location = PlayerInfo[playerid][pLocal];
    if(!strlen(tmp))
    {
    if(location != 255)
    {
    if(location < 255)
    {
    if(HouseInfo[location][hArm] == 1)
    {
    format(string, sizeof(string), "%s legt die Schutzweste an.", sendername);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    FreezePlayer(playerid);
    GetPlayerPos(playerid, Unspec[playerid][sPx], Unspec[playerid][sPy], Unspec[playerid][sPz]);
    Unspec[playerid][sPint] = PlayerInfo[playerid][pInt];
    Unspec[playerid][sLocal] = PlayerInfo[playerid][pLocal];
    SetPlayerPos(playerid,1527.5,-12.1,1002.0);
    PlayerInfo[playerid][pLocal] = 255;
    SetPlayerInterior(playerid,99);
    Spectate[playerid] = 257;
    }
    else
    {
    format(string, sizeof(string), "Dieser Ort hat keine Upgrades.");
    SendClientMessage(playerid, COLOR_RED,string);
    }
    if(HouseInfo[location][hHel] == 1)
    {
    new Float:tempheal;
    GetPlayerHealth(playerid,tempheal);
    if ( tempheal < 100.0)
    {
    SetPlayerHealth(playerid,100.0);
    PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
    format(string, sizeof(string), "Du wurdest wieder zu 100% geheilt.");
    SendClientMessage(playerid, COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN,"Du wurdest wieder zu 100% geheilt.");
    }
    }
    else
    {
    format(string, sizeof(string), "Dieser Ort ist nicht zum Healing Upgrade.");
    SendClientMessage(playerid, COLOR_RED,string);
    }
    return 1;
    }
    else if(location == 101)//Restaurant
    {
    new Float:tempheal;
    GetPlayerHealth(playerid,tempheal);
    if ( tempheal < 100.0)
    {
    SetPlayerHealth(playerid,100.0);
    PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
    format(string, sizeof(string), "Du wurdest wieder zu 100% geheilt.");
    SendClientMessage(playerid, COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du wurdest bereits Behandelt.");
    }
    }
    else if(location == 102 && IsACop(playerid))//Police Armoury
    {
    SetPlayerHealth(playerid,100.0);
    SetPlayerArmour(playerid,100.0);
    format(string, sizeof(string), "* %s legt die Schutzweste an.", sendername);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    FreezePlayer(playerid);
    GetPlayerPos(playerid, Unspec[playerid][sPx], Unspec[playerid][sPy], Unspec[playerid][sPz]);
    Unspec[playerid][sPint] = PlayerInfo[playerid][pInt];
    Unspec[playerid][sLocal] = PlayerInfo[playerid][pLocal];
    SetPlayerPos(playerid,1527.5,-12.1,1002.0);
    PlayerInfo[playerid][pLocal] = 255;
    SetPlayerInterior(playerid,99);
    Spectate[playerid] = 257;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /heal [ID/NAME] [Preis]");
    return 1;
    }
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /heal [ID/NAME] [Preis]");
    return 1;
    }
    moneys = strval(tmp);
    if(moneys < 1 || moneys > 1000) { SendClientMessage(playerid, COLOR_RED, "Der Behandlungspreis daf nicht weniger als: 1$ und nicht höher als 1000$ sein."); return 1; }
    if (giveplayerid == playerid)
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst dich nicht selber Behandeln.");
    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 >= 160)
    {
    SendClientMessage(playerid, TEAM_GREEN_COLOR,"Diese Person wurde bereits Behandelt.");
    return 1;
    }
    format(string, sizeof(string), "~y~Du heilst: ~n~~w~%s~n~~g~$%d", giveplayer,moneys);
    GameTextForPlayer(playerid, string, 5000, 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 $%d geheilt.",moneys);
    SendClientMessage(giveplayerid, TEAM_GREEN_COLOR,string);
    if(STDPlayer[giveplayerid] > 0)
    {
    STDPlayer[giveplayerid] = 0;
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "Du bist nun nicht mehr an STD erkrankt. Die Ärzte konnten dich retten.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Spieler befindest dich nicht im Rettungswagen oder Rettungshelikopter.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Medic.");
    return 1;
    }
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Kann mir jemand dabei helfen das nur für Medics zu machen. Ich habe es versucht aber irgendwas stimmt
    dann mit dem Preis nicht.. Danke.

    :) SWAGETTI & YOLONAISE!

  • ocmd:heal(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,3))//Anpassen
    {
    new Name[MAX_PLAYERS][MAX_PLAYER_NAME];
    new verletzter;
    new preis;
    if(sscanf(params,"ui",verletzter,preis))return SendClientMessage(playerid,ROT,"/heal [SpielerID] [Preis]");
    SetPlayerHealth(verletzter,100);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    GetPlayerName(playerid,Name[playerid],MAX_PLAYER_NAME);
    new string[128];
    format(string,sizeof(string),"Du wurdest von Artzt %s geheilt und bezahlst %d$.",Name[playerid],preis);
    SendClientMessage(verletzter,ROT,string);

    }
    else
    {
    SendClientMessage(playerid,FARBE,"Du bist kein Medic!");
    }
    return 1;
    }

  • Die Abfrage ist schon drinn, alles ist drinn nur wenn ich InGame /heal mache bekomme ich die
    SCM = Dieser Ort ist kein Upgrade bla. Nur wenn ich /heal ID Preis mache kommen die heal nachrichten.


    @[GSL]Erik:

    C:\Users\\Desktop\\gamemodes\(22988) : error 017: undefined symbol "params"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Bekomme das hier.

    :) SWAGETTI & YOLONAISE!

    Einmal editiert, zuletzt von John_Sanclear ()


  • params ist nicht definiert, musste du definieren.
    zeig die mal zeile wo der error ist..




    Ideen oder Fragen zum Selfmade Script? --> Skype alextheking72



    © Project Revival Roleplay

  • Habe es jetzt so:

    if(strcmp(cmd,"/heal", true) ==0)
    {
    if(PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    new Name[MAX_PLAYERS][MAX_PLAYER_NAME];
    new verletzter;
    new preis;
    if(sscanf(params,"ui",verletzter,preis))return SendClientMessage(playerid,COLOR_GRAD2,"Benutze: /heal [SpielerID] [Preis]");
    SetPlayerHealth(verletzter,100);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    GetPlayerName(playerid,Name[playerid],MAX_PLAYER_NAME);
    new string2[128];
    format(string2,sizeof(string2),"Du wurdest von Artzt %s geheilt und bezahlst %d$.",Name[playerid],preis);
    SendClientMessage(verletzter,COLOR_LIGHTRED,string2);


    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist kein Medic!");
    }
    return 1;
    }


    C:\Users\\Desktop\• \gamemodes\.pwn(22988) : error 017: undefined symbol "params"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Bekomme jetzt nur noch 1 Error.

    :) SWAGETTI & YOLONAISE!

    Einmal editiert, zuletzt von John_Sanclear ()

  • Ich habe jetzt rein gemacht das man sich nicht selber healen kann aber funktioniert auch net.

    ocmd:heal(playerid,params[])
    {
    new Name[MAX_PLAYERS][MAX_PLAYER_NAME];
    new verletzter;
    new preis;
    if(PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    if(playerid == verletzter)
    {
    if(sscanf(params,"ui",verletzter,preis))return SendClientMessage(playerid,COLOR_GRAD2,"Benutze: /heal [SpielerID] [Preis]");
    SetPlayerHealth(verletzter,100);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    GetPlayerName(playerid,Name[playerid],MAX_PLAYER_NAME);
    new string2[128];
    format(string2,sizeof(string2),"Du wurdest von Artzt %s geheilt und bezahlst %d$.",Name[playerid],preis);
    SendClientMessage(verletzter,COLOR_LIGHTRED,string2);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du kannst dich nicht selber Behandeln.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist kein Medic!");
    }
    return 1;
    }

    :) SWAGETTI & YOLONAISE!

    Einmal editiert, zuletzt von John_Sanclear ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du willst "playerid" mit "verletzter" vergleichen, obwohl die letztere Variable erst später seinen gedachten Wert zugeteilt bekommt.
    Wenn du den Befehl ausführst, wird immer mit 0 verglichen.


    Sollte als Denkanstoß und Lösung genügen. ^^

    [align=center]

  • ...



    new verletzter; //Variable wird erstellt; Hat automatisch den Wert 0.
    new preis;
    if(PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    if(playerid == verletzter) //HIER überprüfst du, ob playerid == verletzter, also ob playerid 0 ist.
    {
    if(sscanf(params,"ui",verletzter,preis))return [...] // HIER bekommt "verletzter" seinen eigentlichen Wert zugeteilt, welcher mit playerid verglichen werden muss!



    ...


    Also noch mehr helfen, ohne die Lösung direkt zu posten, geht nicht.
    Selbst ist der Mann, also ergreife Eigeninitiative und überleg. :)

    [align=center]


  • if(sscanf(params,"ui",verletzter,preis))return [...] // HIER bekommt "verletzter" seinen eigentlichen Wert zugeteilt, welcher mit playerid verglichen werden muss!


    Kommt da nicht return SendCLientMessage(playerid,COLOR_GRAD2,"Benutze: /heal [playeridid] [Preis]"); rein?

    :) SWAGETTI & YOLONAISE!

  • ocmd:heal(playerid,params[])
    {
    new Name[MAX_PLAYERS][MAX_PLAYER_NAME];
    new verletzter;
    new preis;
    if(PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4)
    {
    if(sscanf(params,"ui",verletzter,preis))return SendClientMessage(playerid,COLOR_GRAD2,"Benutze: /heal [SpielerID] [Preis]");
    if(playerid == verletzter) return SendClientMessage(playerid,Rot,"Du kannst dich nicht selber heilen!");
    SetPlayerHealth(verletzter,100);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    GetPlayerName(playerid,Name[playerid],MAX_PLAYER_NAME);
    new string2[128];
    format(string2,sizeof(string2),"Du wurdest von Artzt %s geheilt und bezahlst %d$.",Name[playerid],preis);
    SendClientMessage(verletzter,COLOR_LIGHTRED,string2);
    GivePlayerMoney(playerid,preis);
    GivePlayerMoney(verletzter,-preis);
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du kannst dich nicht selber Behandeln.");
    }
    return 1;
    }