Automatisch geldabziehen

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
  • Ich möchte bei einem Cmd das man eine Zeitbombe erstellen kann und dafür für die explosionsheftigkeit zahlen muss, nur wie mach ich das? Das man eingibt /zbomb [zeit] [radius] und der zieht automatisch geld ab

  • Bei solchen Fragen ist es sehr hilfreich, wenn man dabeischriebt, wie man die/das Paramter bei sich normalerweise ausliest (dcmd, strtok, strget, sscanf), weil man sonst entweder hohe Gefahr läuft, es auf dem falschen Weg zu machen, oder man macht es sehr kompliziert (cmdtext[7] und so...)
    //EDIT: Hab grad in nem anderen Thread von dir gefunden, womit du arbeitest
    //OnPlayerComamndText:
    dcmd(zbomb,5,cmdtext);
    //in kein callback
    dcmd_zbomb(playerid,params[]) {
    new zeit,rad;
    if(sscanf(params,"dd",zeit,rad)) return SendClientMessage(playerid,FARBE,"/zbomb zeit radius");
    if(zeit>=1) {
    if(rad>=1) {
    GivePlayerMoney(playerid,-(rad*10));//er verleirt pro radius 10$, d.h. bei 100 radius 1000$
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetTimerEx("boom",zeit*1000,0,"fffd",x,y,z,rad); }
    else { SendClientMessage(playerid,FRBE,"Radius muss mindestens 1 sein"); }}
    else { SendClientMessage(playerid,FARBE,"Zeit muss mindestens 1 sein"); }
    return 1;
    }
    //ganz anch oben:
    forward boom(Float:xbx, Float:yby, Float:zbz, brad);
    //ganz nach unten:
    public boom(Float:xbx, Float:yby, Float:zbz, brad) {
    CreateExplosion(xbx,yby,zbz,[trage hier den explosionstypen ein und entferne auch die '[]'],brad);
    return 1;
    }

  • hui da muss ich erstmal durchblicken, aber danke ich werds mal versuchen^^


    /edit habs gerallt, nur warum muss man settimerex machen und nicht nur settimer? und warum bei forward noch das in klammern das geht och auch ohne oda?^^


    PS: siehe signatur

  • wenn du nur einen Timer setzen würdest , würds für jeden kacke ausgehen,
    bei SetTimerEx müsste per zugriff nur für den bestimmten spieler die Funktion ausgelösst werden,
    Öffentliche klassen müssen ausserdem deklariert werden sprich mit einer forward versehen werden

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • wie mach ich das bei /repair (in dem auto indem er sitzt) das der dann pro hp 40$ abzug gebekommt und davon bitte 50% in die tasche des adac typen gehen gehen??????
    und bei /heal [playerid] ebenso
    kann das wer? natürlich^^

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    4 Mal editiert, zuletzt von Weed ()

  • Also ich möchte das man beim adac z.b. bei dem befehel /heal [ID] (mit GetDistanceBetweenPlayer) der Patient pro HP 10 $ abgezogen bekommt. Davon sollen 60 % in die tasche des arztes gehen

  • dcmd_heal(playerid,params[]) {
    if(!strlen(params)) return SendClientMessage(playerid,FARBE,"/heal ID");
    new typ=strval(params), Float:leben;
    if(GetPlayerHealth(typ,leben)) {
    if(GetDistanceBetweenPlayers(playerid,typ)<=10) {//ich hätt lieber PlayerToPoint genommen
    if(GetPlayerMoney(typ)>=diff) {
    new diff=(100-floatround(leben))*10;
    GivePlayerMoney(playerid,diff/100*60);
    GivePlayerMoney(typ,-diff);
    SetPlayerHealth(typ,100); }}}
    return 1;
    }

  • PlayerToPoint und GetDistanceBetweenPlayers sind in diesem Fall gleich "dumm", da sie nicht gerade effizient gecodet sind.
    Ich würde eher die IsPlayerInRangeOfPoint von Y_Less benutzen, findet sich im englischen SA:MP Forum, Scripting Base, unter dem Topic Code Optimisation.


    Healthpoints sind genauso wie Armour immer ein Floatwert. Warum das so ist weiß ich persönlich leider nicht.

  • ich? Eigentlich nicht aber ich habe 10 Fingerschreiben gelernt und Tippe zur Zeit schnell und deswegen kommen manchmal Tippfehler rein. Aber breadfish weiß so was, warum is hp ne Float?

  • ich? Eigentlich nicht aber ich habe 10 Fingerschreiben gelernt und Tippe zur Zeit schnell und deswegen kommen manchmal Tippfehler rein.

    Dann gebe ich dir einen heißen Tipp: man kann das Geschriebene nochmal anschauen und korrigieren bevor man seinen Post abschickt!

    Aber breadfish weiß so was, warum is hp ne Float?

    Weil das eben so ist, das haben die SA-MP Devs so festgelegt.

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • Hp brauch ein float weil das ist fast so wie coordinaten wenn du vo anders stehst stehst du auch in anderen Koordinaten und Hp kann ja ständig aufgefüllt werden und man verliert ja auch Leben

    RFT