Ich hab ne ganz knappe Frage.
Ich habe ein Kommando mit dem man sich selbst healt
if(strcmp(cmdtext,"/heal",true)==0)
{
SetPlayerHealth(playerid, 100);
SendClientMessage(playerid, 0xFFFFFFFF, "Du wurdest geheilt!");
}
Wie kann man nun /heal Crossline oder /heal ID einfügen?
Crossline
/heal ID /kill ID etc.
- Crossline
- 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
-
-
Mit OCMD kannst du Parameter schnell und einfach verwenden, würde dann so aussehen:
ocmd:heal(playerid,params[])
{
new pID; //Der Parameter wird in dieser Variable gespeichert
if(sscanf(params, "i", pID))
{
return SendClientMessage(playerid,0xFFFFFFFF,"/heal [Spieler-ID 1]"); //Hier wird eine Fehlermeldung ausgegeben, sollte kein Parameter eingegeben worden sein
}
SetPlayerHealth(pID, 100); // Dieser Spieler wird gehealt ...
SendClientMessage(pID, 0xFFFFFFFF, "Du wurdest geheilt!"); //... und bekommt diese Message ausgegeben
return 1;
} -
ocmd:heal(playerid,params[])
{
new pID; //Der Parameter wird in dieser Variable gespeichert
if(sscanf(params, "i", pID))
{
return SendClientMessage(playerid,0xFFFFFFFF,"/heal [Spieler-ID 1]"); //Hier wird eine Fehlermeldung ausgegeben, sollte kein Parameter eingegeben worden sein
}
SetPlayerHealth(pID, 100); // Dieser Spieler wird gehealt ...
SendClientMessage(pID, 0xFFFFFFFF, "Du wurdest geheilt!"); //... und bekommt diese Message ausgegeben
return 1;
}C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(1) : error 029: invalid expression, assumed zero
C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(1) : error 017: undefined symbol "ocmd_heal"
C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(1) : error 029: invalid expression, assumed zero
C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(1) : fatal error 107: too many error messages on one line// Die 1'en wurden geändert damit es verständlich ist
-
Geht bei mir ohne Probleme, habe ich jetzt auch getestet Ganz sicher, dass du Ocmd und Sscanf includiert hast?
-
#include <a_samp>
#include <Dini>
#include <dudb>
#include <ocmd>
#include <Sscanf>public OnPlayerCommandText(playerid, cmdtext[])
{
ocmd:heal(playerid,params[])
{
new pID; //Der Parameter wird in dieser Variable gespeichert
if(sscanf(params, "i", pID))
{
return SendClientMessage(playerid,0xFFFFFFFF,"/heal [Spieler-ID 1]"); //Hier wird eine Fehlermeldung ausgegeben, sollte kein Parameter eingegeben worden sein
}
SetPlayerHealth(pID, 100); // Dieser Spieler wird gehealt ...
SendClientMessage(pID, 0xFFFFFFFF, "Du wurdest geheilt!"); //... und bekommt diese Message ausgegeben
return 1;
}
return 0;
} -
ocmd-Befehle gehören in keine Publics.. mach es am besten ganz unten vom Script unter "OnPlayerClickPlayer(playerid, clickedplayerid, source)"
(Standartsgemäß)Beispiel:
public LOL(playerid)
{
return 1;
}
ocmd:wtf(playerid,params[]) //IN KEINEM PUBLIC
{
SCM(playerid,Grau,"WTF");
return 1;
} -
Vielen Dank! Hat geklappt!
Jetzt wollte ich noch ein Kommando "/up ID" einfügen, womit man Spieler nach oben versetzt.ocmd:up(playerid,params[])
{
new pID2; //Der Parameter wird in dieser Variable gespeichert
if(sscanf(params, "i", pID2))
{
return SendClientMessage(playerid,0xFFFFFFFF,"/up [Spieler-ID]"); //Hier wird eine Fehlermeldung ausgegeben, sollte kein Parameter eingegeben worden sein
}
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerPos(playerid,x,y,z+20.0);
SendClientMessage(pID2, 0xFFFFFFFF, "Du wurdest nach oben versetzt!"); //... und bekommt diese Message ausgegeben
return 1;
}
Bei /up kommt die Fehlermeldung, dass eine ID fehlt, das ist ja auch gut so.
Aber egal welche ID ich eingebe, immer werde ich hochversetzt. Warum? -
Du musst anstatt der playerid bei Get und SetPlayerPos pID2 benutzen.
Sprich:
GetPlayerPos(pID2,x,y,z);
SetPlayerPos(pID2,x,y,z+20.0);Gruß
Neo -
Haha, irgendwie logisch Danke
-
breadfish.de
Hat das Thema geschlossen.