Hay, könnt ihr mir nen Befehl erstellen, bei dem man einen Spieler slappen kann...
Und zwar mit der Entscheidung wie hoch man ihn slappt.
Also: /slap [ID] [HÖHE]
Würde mich freuen...
LG
Hay, könnt ihr mir nen Befehl erstellen, bei dem man einen Spieler slappen kann...
Und zwar mit der Entscheidung wie hoch man ihn slappt.
Also: /slap [ID] [HÖHE]
Würde mich freuen...
LG
dcmd(slap,4,cmdtext);
dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,pSize);
return 1;
}
Nicht getestet
Alles anzeigendcmd(slap,4,cmdtext);
dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,pSize);
return 1;
}
Nicht getestet
Ich glaube das wird nicht so ganz funktionieren, da pSize eine direkte Koordinate sein muss, ist aber auch nicht wirklich doll nachgedacht
Nicht doll nachgedacht!
Arg stimmt dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "df",pID,pSize)) //<<<---- so meinst du ??
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,pSize);
return 1;
}
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21993) : error 017: undefined symbol "dcmd_slap"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21996) : error 017: undefined symbol "sscanf"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(22007) : warning 225: unreachable code
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
Hallo,
Dir fehlen bestimmt includes...
Habe mal auch gemacht, jedoch ohne höhe, da ich änfänger bin scripte erst seit 2 tagen
if(strcmp(cmd, "/slap", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /slap [playerid]");
return 1;
}
new playa;
new Float:shealth;
new Float:slx, Float:sly, Float:slz;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >=2)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerHealth(playa, shealth);
SetPlayerHealth(playa, shealth-5);
GetPlayerPos(playa, slx, sly, slz);
SetPlayerPos(playa, slx, sly, slz+5);
PlayerPlaySound(playa, 1130, slx, sly, slz+5);
printf("AdmCmd: %s slapped %s",sendername, giveplayer);
format(string, sizeof(string), "AdmCmd: %s wurde geslapt von %s",giveplayer ,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Diesen Befehl kannst du nicht nutzen.");
}
}
return 1;
}
Alles anzeigenC:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21993) : error 017: undefined symbol "dcmd_slap"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(21996) : error 017: undefined symbol "sscanf"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(22007) : warning 225: unreachable code
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
War ja klar -.-
Irgendwo Copy & Paste, es fehlt noch unter OnPlayerCommandText eine Funktion, kann ich nicht ausm Kopf sagen, dann hast du sscanf nicht definiert, steht da ja.
Alles anzeigenHallo,
Dir fehlen bestimmt includes...
Habe mal auch gemacht, jedoch ohne höhe, da ich änfänger bin scripte erst seit 2 tagen
if(strcmp(cmd, "/slap", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /slap [playerid]");
return 1;
}
new playa;
new Float:shealth;
new Float:slx, Float:sly, Float:slz;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >=2)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerHealth(playa, shealth);
SetPlayerHealth(playa, shealth-5);
GetPlayerPos(playa, slx, sly, slz);
SetPlayerPos(playa, slx, sly, slz+5);
PlayerPlaySound(playa, 1130, slx, sly, slz+5);
printf("AdmCmd: %s slapped %s",sendername, giveplayer);
format(string, sizeof(string), "AdmCmd: %s wurde geslapt von %s",giveplayer ,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Diesen Befehl kannst du nicht nutzen.");
}
}
return 1;
}
Das findeste ja in jedem Godfather und weil ich ned der beste bin, frag ich ja hier danach -.-
Alles anzeigenHallo,
Dir fehlen bestimmt includes...
Habe mal auch gemacht, jedoch ohne höhe, da ich änfänger bin scripte erst seit 2 tagen
if(strcmp(cmd, "/slap", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /slap [playerid]");
return 1;
}
new playa;
new Float:shealth;
new Float:slx, Float:sly, Float:slz;
playa = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >=2)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerHealth(playa, shealth);
SetPlayerHealth(playa, shealth-5);
GetPlayerPos(playa, slx, sly, slz);
SetPlayerPos(playa, slx, sly, slz+5);
PlayerPlaySound(playa, 1130, slx, sly, slz+5);
printf("AdmCmd: %s slapped %s",sendername, giveplayer);
format(string, sizeof(string), "AdmCmd: %s wurde geslapt von %s",giveplayer ,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Diesen Befehl kannst du nicht nutzen.");
}
}
return 1;
}
Kannste deiner Oma erzählen das du schowas schon scripten kannst obwohl du vor 2 tagen mit dem Scripten angefangen hast.
Hallo,
Ich sage nur Tuturials, Ebook usw....
Kann mir vill irg einer schreiben, was ich wo genau eintragen muss, dass die errors weggehn?
Ich bin eher der "Learning by doin"- Typ
Ok hier sollte gehen
Oben in deinem Script unter include <a_samp>
kommt das
#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
unter OnPlayerCommandText kommtdcmd(slap,4,cmdtext);
das dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,pSize);
return 1;
}
kommt ganz nach unten und das hier 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;
}kommt auch ganz nach unten
Alles anzeigenOk hier sollte gehen
Oben in deinem Script unter include <a_samp>
kommt das
#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
unter OnPlayerCommandText kommtdcmd(slap,4,cmdtext);
das dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,pSize);
return 1;
}
kommt ganz nach unten und das hier 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;
}kommt auch ganz nach unten
Hast du aber fein erklärt, bekommst Seife, meld dich mal.
Hallo,
Ich sage nur Tuturials, Ebook usw....
Aha nadann erklär mir mal was das heißt (also sollst es mir erklären was das bewirkt):
playa = ReturnUser(tmp);
oder das
ABroadCast(COLOR_LIGHTRED,string,1);
????
Korrektur von Pixels' Script:
dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,Z+pSize);
return 1;
}
Alles anzeigenKorrektur von Pixels' Script:
dcmd_slap(playerid,cmdtext)
{
new pID,pSize;
if(sscanf(params, "dd",pID,pSize))
{
//wenn nur /slap eingegeben worden ist
}
new Float:X,Float:Y,Float:Z;
GetPlayerPos(pID,X,Y,Z);
SetPlayerPos(pID,X,Y,Z+pSize);
return 1;
}
Genau so falsch -.-
if(strcmp(cmd, "/slap", true) == 0)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /slap [ID/Teil des Namens]");
return 1;
}
new playa;
new Float:shealth;
new Float:slx, Float:sly, Float:slz;
playa = ReturnUser(tmp);
new hohe;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "BENUTZE: /slap [ID/Teil des Namens] [Höhe]");
return 1;
}
if (PlayerInfo[playerid][pAdmin] >=1)
{
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerHealth(playa, shealth);
SetPlayerHealth(playa, shealth-5);
GetPlayerPos(playa, slx, sly, slz);
SetPlayerPos(playa, slx, sly, slz+hohe);
PlayerPlaySound(playa, 1130, slx, sly, slz+hohe);
printf("AdmCmd: %s hat %s geschlagen",sendername, giveplayer);
format(string, sizeof(string), "AdmCmd: %s wurde von %s geschlagen",giveplayer ,sendername);
ABroadCast(COLOR_LIGHTRED,string,1);
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Dir ist es nicht erlaubt, diesen Befehl zu benutzen!");
}
}
return 1;
}
aus dem kopf geschrieben kp ob es funkt
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(11360) : error 035: argument type mismatch (argument 2)
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35453) : error 017: undefined symbol "params"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35459) : warning 202: number of arguments does not match definition
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35452) : warning 203: symbol is never used: "pSize"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35450) : warning 203: symbol is never used: "cmdtext"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35450) : warning 203: symbol is never used: "playerid"
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35497) : warning 219: local variable "ch" shadows a variable at a preceding level
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35522) : warning 219: local variable "ch" shadows a variable at a preceding level
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35578) : warning 219: local variable "ch" shadows a variable at a preceding level
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35603) : warning 219: local variable "ch" shadows a variable at a preceding level
C:\Program Files (x86)\Rockstar Games\endlich\gamemodes\TES.pwn(35659) : warning 219: local variable "ch" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.