Kann mir jemand diesen Befehl Umschreiben?

  • Kann mir jemand diesen Befehl Umschreiben?

    Hallo,

    Dieser Befehl soll umgeschrieben werden, für den Job Mechanicker.
    Er sollte /repair [ID] [Preis] können.
    Dennoch sollte er nicht unter 0$ den Preis setzen können.

    Hier der Code:

    [pwn]ocmd:rep(playerid,params[])
    {
    new veh;
    veh = GetPlayerVehicleID(playerid);
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,rot,"Du bist kein Mechaniker!");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"Du Bist in keinem Fahrzeug");
    RepairVehicle(veh);
    return 1;
    }[/pwn]
  • [pwn]ocmd:rep(playerid,params[])
    {
    new veh,pID,Preis,string[128];
    if(sscanf(params, "dd", pID,Preis)) return SendClientMessage(playerid,Rot,"/rep [playerid] [Preis]");
    if(Preis == 0) return SendClientMessage(playerid,Rot,"Der Preis darf nicht unter 0$ liegen!");
    if(!isPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Der Spieler ist nicht eingeloggt!");
    veh = GetPlayerVehicleID(pID);
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,rot,"Du bist kein Mechaniker!");
    if(!IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid,rot,"Der Spieler ist in keinem Fahrzeug!");
    format(string,sizeof(string),"Mechaniker: %s hat dein Fahrzeug für %d repariert!",getName(playerid),Preis);
    SendClientMessage(pID,blau,string);
    RepairVehicle(veh);
    return 1;
    }
    stock getName(playerid)
    {
    new GetNamee[MAX_PLAYER_NAME];
    GetPlayerName(playerid,GetNamee,sizeof(GetNamee));
    return GetNamee;
    }[/pwn]

    //edit Fail :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von xGreekz7x ()

  • Wen jemand
    /rep 21 -500 schreibt dann bekommt der Mechaniker -500 ist dir klar oder?
    so müsste es richtig sein

    PHP-Quellcode

    1. ocmd:rep(playerid,params[])
    2. {
    3. new veh,pID,Preis,string[128];
    4. if(sscanf(params, "dd", pID,Preis)) return SendClientMessage(playerid,Rot,"/rep [playerid] [Preis]");
    5. if(Preis <= 0) return SendClientMessage(playerid,Rot,"Der Preis darf nicht unter 0$ liegen!");
    6. if(!isPlayerConnected(pID)) return SendClientMessage(playerid,rot,"Der Spieler ist nicht eingeloggt!");
    7. veh = GetPlayerVehicleID(pID);
    8. if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,rot,"Du bist kein Mechaniker!");
    9. if(!IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid,rot,"Der Spieler ist in keinem Fahrzeug!");
    10. format(string,sizeof(string),"Mechaniker: %s hat dein Fahrzeug für %d repariert!",getName(playerid),Preis);
    11. SendClientMessage(pID,blau,string);
    12. RepairVehicle(veh);
    13. return 1;
    14. }
    15. stock getName(playerid)
    16. {
    17. new GetNamee[MAX_PLAYER_NAME];
    18. GetPlayerName(playerid,GetNamee,sizeof(GetNamee));
    19. return GetNamee;
    20. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von SweizY ()

  • [pwn]ocmd:rep(playerid,params[])
    {
    new veh;
    new pID, Preis;
    if(sscanf(params, "si", pID, Preis))return 1;
    if(Preis < 1)return 1;
    veh = GetPlayerVehicleID(pID);
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,rot,"Du bist kein Mechaniker!");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"Du Bist in keinem Fahrzeug");
    SetVehicleHealth(veh, 1000);
    RepairVehicle(veh);
    return 1;
    }[/pwn]
  • Ich will auch hier mal darauf hinweisen, das als Character für Username "u" wesentlich besser geeignet ist, als sm i oder d.

    [pwn if(sscanf(params, "ui", pID,Preis)) return SendClientMessage(playerid,Rot,"/rep [playerid] [Preis]");[/pwn]
    wäre so die beste Methode.

    @playerid: Du solltest schon möglichst immer eine Fehlermeldung ausgeben, damit der User weiss, was er falsch gemacht hat,
    also aus deinem
    [pwn]
    if(sscanf(params, "si", pID, Preis))return 1;
    if(Preis < 1)return 1;
    [/pwn]

    lieber (Mit der oben genannten Characteränderung) so:
    [pwn]
    if(sscanf(params, "ui", pID, Preis))return SendClientMesage(playerid, rot, "BENUTZUNG: /rep [ID] [PREIS]");
    if(Preis < 1)return SendClientMessage(playerid, rot, "Du kannst nicht weniger als 1$ für eine reperatur verlangen!");
    [/pwn]

    @SweizY:
    Du ziehst niemandem etwas ab, der Preis ist bei dir lediglich als Schrift in SendClienMessage zu sehen.


    Als weiteres zieht niemand von euch überhaupt Geld ab,
    dazu solltet ihr dann schon GivePlayerMoney(); verwenden ^^.
    Ohne dem wird gar kein Geld bei euch in irgend einer Weise verschoben.
    Gruß,
    Dennis
  • ohje, mein Fehler, war auch in Eile. :D

    So sollte es richtig sein:

    [pwn]ocmd:rep(playerid,params[])
    {
    new veh;
    new pID, Preis;
    if(sscanf(params, "si", pID, Preis))return SendClientMessage(playerid, rot, "Nutze: /rep [Username/ID] [Preis]");
    if(Preis < 1)return SendClientMessage(playerid, rot, "Fehler: Der Preis muss höher als 0 sein!");
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,rot,"Du bist kein Mechaniker!");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"Du Bist in keinem Fahrzeug");
    if(!IsPlayerInAnyVehicle(pID))return SendClientMessage(playerid, rot, "Der User ist in keinem Auto!");
    if(GetPlayerMoney(playerid) < Preis)return SendClientMessage(playerid, rot, "Der Spieler hat nicht soviel Geld bei sich.");
    veh = GetPlayerVehicleID(pID);
    SetVehicleHealth(veh, 1000);
    RepairVehicle(veh);
    GivePlayerMoney(pID, - Preis);
    GivePlayerMoney(playerid, Preis);
    SendClientMessage(playerid, rot, "Du reparierst sein Fahrzeug!");
    SendClientMessage(pID, rot, "Dein Fahrzeug wird repariert!");
    return 1;
    }[/pwn]