Hallo, kann mir jemand einen kleinen Befehl machen, um andere Spieler in ein Fahrzeug, in dem selbst sitzt, zu setzen? So in der Art /indenwagen [ID] ?
Danke schonmal,
Wayne
Hallo, kann mir jemand einen kleinen Befehl machen, um andere Spieler in ein Fahrzeug, in dem selbst sitzt, zu setzen? So in der Art /indenwagen [ID] ?
Danke schonmal,
Wayne
Wir haben es versucht, aber es hat einfach keiner hinbekommen...
...daher wollte ich fragen ob jmd den Befehle nicht für uns schreiben kann.
danke im voraus
Johannes
dcmd(indenwagen,10,cmdtext);
dcmd_indenwagen(playerid,params[])
{
if(IsPlayerInAnyVehicle(playerid))
{
new sString[128];
new sName[MAX_PLAYER_NAME];
if(sscanf(params,"s",sName))
{
return SendClientMessage(playerid,COLOR_RED,"Benutze: /indenwagen [Name]");
}
PutPlayerInVehicle(sName,GetPlayerVehicleID(playerid),3);
}
else
{
SendClientMessage(playerid,COLOR_RED," Du bist in keinem Fahrzeug!");
}
return 1;
}
Ausm Kopf deswegen kA obs funzt!
und hier mit strtok
if(strcmp(cmd, "/indenwagen",true) == 0)
{
new param[32];
Param = strtok(cmdtext, idx);
if(!Param[0])return SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /indenwagen [playerid]");
new giveplayerid = strval(Param);
if(!IsPlayerConnected(giveplayerid))return SendClientMessage(playerid, COLOR_WHITE, "Dieser Spieler is Offline");
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich in keinem Auto");
new Float:X, Float:Y, Float:Z;
GetPlayerPos(giveplayerid, X, Y, Z);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, X,Y,Z))return SendClientMessage(playerid, COLOR_WHITE, "Info: Du bist nicht in der nähe des Spielers");
new vehid = GetPlayerVehicleID(playerid);
PutPlayerInVehicle(giveplayerid, vehid, 1);
return true;
}
C:\Users\Johannes\Desktop\ger.pwn(8400) : error 047: array sizes do not match, or destination array is too small
der error kommt wenn ich den befehl einfüg
dann vergrößer das array mal
bitte auf deutsch^^
sry... ich hab kein plan was du meinst
zeig mal die linie von deinem code wo der fehler kommt
zeig mal die linie von deinem code wo der fehler kommt
Das wäre Zeile 4: "Param = strtok(cmdtext, idx);" *5faches Augenrollen*
if(strcmp(cmd, "/indenwagen",true) == 0)
{
new param[128];//wenns dann immer noch nich geht auf 256 setzen was eigentlich nich schick für den Server is
Param = strtok(cmdtext, idx);
if(!Param[0])return SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /indenwagen [playerid]");
new giveplayerid = strval(Param);
if(!IsPlayerConnected(giveplayerid))return SendClientMessage(playerid, COLOR_WHITE, "Dieser Spieler is Offline");
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_WHITE, "Du befindest dich in keinem Auto");
new Float:X, Float:Y, Float:Z;
GetPlayerPos(giveplayerid, X, Y, Z);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, X,Y,Z))return SendClientMessage(playerid, COLOR_WHITE, "Info: Du bist nicht in der nähe des Spielers");
new vehid = GetPlayerVehicleID(playerid);
PutPlayerInVehicle(giveplayerid, vehid, 1);
return true;
}
Hmmm mit 256 gehts, aber wäre wohl nicht gut für den Server. Gibts denn keine andere möglichkeit?
Ich hab den Thread hier gelesen und da mir langweilige war dachte ich ich mach dir das mal
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(indenwaagen,11,cmdtext);
return 0;
}
dcmd_indenwaagen(playerid,params[]) {
new Player,
Float: x,
Float: y,
Float: z;
if(sscanf(params, "d", Player)) {
return SendClientMessage(playerid,COLOR_RED,"USAGE: /indenwaagen [playerid]");
}
GetPlayerPos(playerid,x,y,z);
if(IsPlayerInRangeOfPoint(Player,10,x,y,z)) {
PutPlayerInVehicle(Player,GetPlayerVehicleID(playerid),2); }
return 1;
}
Wenn du ne erklärung dazu Brauchst sag Bescheid bin gern Bereit dir eine zu Schreibn
Wobei der Code bei 2-Türern absolut in die Hose geht.
Sascha Ja erklärung wäre nett =) Danke schonmal
BloodyEric Keine Sorge, wir brauchens nur für 4-er =D
Dann änderst du eben die seatid in eine 1 um !
//edit: Hier die Erklärungen:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(indenwaagen,11,cmdtext); //Das müsste doch eigentlich Klar sein ^^
return 0;
}
dcmd_indenwaagen(playerid,params[]) {
new Player,
Float: x,
Float: y,
Float: z;
if(sscanf(params, "d", Player)) { //das "d" steht für eine Zahl / Playerid würde ich ein "s" schreiben könnte man das mit dem Player Namen machen anstatt der ID
return SendClientMessage(playerid,COLOR_RED,"USAGE: /indenwaagen [playerid]"); //wenn du nur /indenwaagen eingibst wird das angezeigt
}
GetPlayerPos(playerid,x,y,z); //erkennt wo sich der player befindet
if(IsPlayerInRangeOfPoint(Player,10,x,y,z)) { //Wenn der Spieler im Radius 10 von der Position des Players ist
PutPlayerInVehicle(Player,GetPlayerVehicleID(playerid),2); } //Wird er in Das auto von der playerid gesetzt
return 1; //Natürlich währ es nicht schlecht würde man noch Messages hinzufügen oder was passiert falls der spieler in keinem Car ist
}
Ich hoff ich hab das für dich so gut wie möglich erklärt...
Falls du noch Fragen hast einfach ne Nachricht da lassen werd mir das dann anguckn
Achja am Scriptbeginn brauchst du natürlich das dcmd
#include <sscanf>
#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
//Die beide dinge Brauchst du damit du das Command auch verwenden kannst
Falls du kein sscanf hast versuch das zu googlen ich bin sicher du findest eins
Dann änderst du eben die seatid in eine 1 um !
Hier sind ja alle Sitze beschrieben: http://wiki.sa-mp.com/wiki/PutPlayerInVehicle
Vielen Dank Sascha, werde es erst morgen Probieren können, jetzt sind die ganzen dödel Offline =D
Man könnte es auch wie im Godfather machen dass man auch eine Seatid angeben muss.
Hallo
if(sscanf(params, "d", Player)) { //das "d" steht für eine Zahl / Playerid würde ich ein "s" schreiben könnte man das mit dem Player Namen machen anstatt der ID
Du meinst wohl eher ein "u" ?
MfG dUDA
Wieso u?, eher dann i, obwohl i und d gleich sind, siehe:
http://wiki.sa-mp.com/wiki/Format