Hi alle zusammen , brauche eure hilfe.
ich brauche ein Heal Command wo mit man andere user heilen kann.
(Suche)/hp cmd
- Steven
- 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
-
-
if (strcmp("/heilen", cmdtext, true,7) == 0)
{
SetPlayerHealth(playerid,100.0);
return 1;
}Füs selbstheilen.
Wie man andere heilt weis ich noch nicht.
-
ohh danke aber ich meinte eigendlich das ich andere user mit
einer id angeben kann, und die dann hp bekommen -
if(strcmp(strget(cmdtext,0), "/hp",true) == 0)
{
SetPlayerHealth(strget(cmdtext,1), 100);
}dürfte funktionieren
-
noch mal ich brauche ein command wo mit man andere user heilen kann
-
if (strcmp("/heilen", cmdtext, true,7) == 0)
{
SetPlayerHealth(playerid,100.0);
return 1;
} SetPlayerHealt [ID] (playerid, 100.0); -
if(strcmp(strget(cmdtext,0), "/hp", true) == 0)
{
SetPlayerHealth(strget(cmdtext,1), 100); // das strget steht für die id, die du eingegeben hast!!
}dann zitire ich es dir eben nocheinmal
btw: erst lesen, dann mäckern!!//edit:
dir fehlt dann noch der stock strget(nehme ich mal an):
stock strget(strx[], pos, search = ' ') {
new arg, ret[128], idxx;
for (new i = 0; i < strlen(strx); i++) {
if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
arg++;
if (arg == pos + 1){
ret[i-idxx] = EOS;
return ret;
} else if (arg == pos)
idxx= i+1;
}
else if (arg == pos)
ret[i - idxx] = strx[i];
}
return ret;
} -
Zitat
argument type mismatch (argument 1)
Zeile:SetPlayerHealth(strget(cmdtext,1), 100);
-
dcmd(heal,4,cmdtext);
dcmd_heal(playerid,params[])
{
if(Spieler[playerid][alvl] < 2){ // Abfrage ob der Spieler Admin lvl 2 hat
return SendClientMessage (playerid,grau,"Du musst ein Admin sein um Healen zu können");
}
new pID,life;
if(sscanf(params,"ud",pID,life)){
return SendClientMessage(playerid,grau,"USAGE: /heal [playerid] [float(0-100!)]*");
}
if(!IsPlayerConnected(pID)){
return SendClientMessage(playerid,grau,"Niemand ist Online mit dieser ID");
}
if(life < 0){
return SendClientMessage(playerid,grau,"INVALID FLOAT!");
}
if(life > 100){
return SendClientMessage(playerid,grau,"INVALID FLOAT!");
}
new string[128],string2[128],aname[MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
SetPlayerHealth(pID,life);
GetPlayerName(playerid,aname,sizeof(aname));
GetPlayerName(pID,name,sizeof(name));
format(string,sizeof(string),"Du hast das leben von %s auf %d gesetzt",name,life);
format(string2,sizeof(string2),"Admin %s hat dein HP auf %d gesetzt",aname,life);
SendClientMessage(playerid,COLOR_GREEN,string);
SendClientMessage(pID,COLOR_GREEN,string2);
return 1;
}is ungetestet sollte aber gehen
-
ähhh bekomme viele errors und so ein command habe ich
noch nie gesehen -
-
Brauchst noch sscanf.
Ganz unten ins Skript.
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[strpos++];
}
changestr[changepos] = '\0';
setarg(paramPos,0,_:floatstr(changestr));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
} -
undefined symbol "dcmd_heal"
bekomme es nicht hin hilfe^^ -
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Zu den anderen Definierungen
-
hm... nichts anders,wo kommt den dcmd(heal,4,cmdtext); hin?
-
OnPlayerCommandText
und den anderen Code kannst irgendwo einfügen, aber nicht in einem Callback.
Also am besten ganz unten oder so. -
Coole sach geht danke man^^
wollte noch mal fragen wie ich das ändern
kann das man /hpp eingeben muss da mit der
command angesprochen wird -
dcmd(hpp,3,cmdtext);
dcmd_hpp(playerid,params[])
blablalbla -
ja danke Close^^