Wie die Überschrift sagt, hätte ich gerne ein Script, dass ein Admin Autos zu sich porten kann.
Ist das möglich?
Könnt ihr mir Hier das Script rein posten?
LG
Wie die Überschrift sagt, hätte ich gerne ein Script, dass ein Admin Autos zu sich porten kann.
Ist das möglich?
Könnt ihr mir Hier das Script rein posten?
LG
Nutze:
OnPlayerCommandText
strcmp
strtok
Erst selber probieren
Ja ich habe es doch versucht, aber nicht hinbekommen, deswegen habe ich dieses Thread eröffnet.
Weiß niemand wie das geht?
Hier:
[ FILTERSCRIPT ] RV VehicleOwnership lite [v1.0.1]
-Unknown
Das steht da doch nirgens drin? Oder?
ich habs so, benutze aber zcmd
#include <sscanf>
#include <zcmd>
COMMAND:getveh(playerid,params[])
{
new ID, Float:vehpos[3];
if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/gotoveh [vehicleid]");
if(IsPlayerAdmin(playerid)
{
GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
}
else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
return 1;
}
Da kommt das :
C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(95) : error 017: undefined symbol "sscanf"
C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(102) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Was kann ich machen?
Außerdem habe ich das so abgeändert:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/getveh", cmdtext, true, 10) == 0)
{
new ID, Float:vehpos[3];
if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/getveh [vehicleid]");
if(IsPlayerAdmin(playerid))
{
GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
}
else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
return 1;
}
return 0;
}
Geht das auch so?
EDIT: kann ich das auch mit ocmd machen?
Ja das geht mit OCMD...
Hier mal der Code:
ocmd:getveh(playerid,params[])
{
new ID, Float:vehpos[3];
if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/getveh [vehicleid]");
if(IsPlayerAdmin(playerid))
{
GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
}
else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
return 1;
}
PS: Ungetestet sollte aber eig. gehen.
MfG. [SPR]Scripter
unter was muss das "ocmd"?
public OnPlayerCommandText(playerid, cmdtext[]) Da drunter?
Ja diese Include habe ich schon muss ich dann:
#include
so machen?
und wo muss das hin unter welcher Public?
EDIT:
habe die includes alles richitig aber:
#include <a_samp>
#include <ocmd>
#include <sscanf>
C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(7) : fatal error 100: cannot read from file: "sscanf"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Das muss ganz oben hin #include <sscanf>
Oben:
#include <sscanf>
#include <ocmd>
Dann irgendwo im Script aber nicht in nem Public den COmmand von OCMD.
MfG. [SPR]Scripter
Ja habs so:
#include <ocmd>
#include <sscanf>
C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(7) : fatal error 100: cannot read from file: "sscanf"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Dann hast du sscanf nicht.
Doch habe ich in Pawno/includes, kann ich dir in teamwiever zeigen wenn du willst.
Füg einfach dashier im Script ein:
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;
}
MfG. [SPR]Scripter
Gib mir bitte die Teamviewer daten per PM.
ok danke.
Geht das auch, dass ich mich zu einem veh hin porten kann?
Wäre toll, wenn ihr mir dabei auch noch helfen könntet.
Einfach den Command von oben etwas umstellen:
ocmd:gotoveh(playerid,params[])
{
new ID, Float:vehpos[3];
if(sscanf(params, "i",ID)) return SendClientMessage(playerid,0x008080FF, "/gotoveh [vehicleid]");
if(IsPlayerAdmin(playerid))
{
GetVehiclePos(ID, vehpos[0], vehpos[1], vehpos[2]);
SetPlayerPos(playerid, vehpos[0], vehpos[1]-5, vehpos[2]);
}
else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
return 1;
}
Es funktioniert leidernicht mit dem gotoveh ID
ist da evt. ein fehler drin?
EDIT:
Es klappt halb.
die id 1 z.B geht Id 30 nicht
Hast du vll eine Idee, was das sein könnte?
ist der Fehler vll Hier?:
new ID, Float:vehpos[3]; //Wenn ich das auto her porte ist das so, aber auch wenn ich hin will.
//muss da vll playerpos hin??