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
Automatisch geldabziehen
- Weed
- Geschlossen
- Erledigt
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
-
-
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 -
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^^ -
Was willst du?
Ist das dann nicht nur Verlust?
Und hää?^^
Bitte formuliere die Frage mal neu -
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;
} -
warum lieber playertopoint? is doch aufwendiger mit new float y blabla und warum is hp immer float?
-
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.
-
-
wieso is denn getplayerdistance dumm?? und kannste das andre mal osten?
-
Leidest du an einer Rechtschreibschwäche?
-
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.
-
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
-
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
Weils ne Kommazahl ist^^ -
breadfish.de
Hat das Thema geschlossen.