MoveObject?^^
Beiträge von xeroxxx
-
-
ich nutze beides,aber strcmp nutze ich nur für commands ohne parameter.
ganz ehrlich leute, habt ihr mal einen command wie /goto <id> in dcmd und in strcmp gescriptet?
in dcmd schaut so ein cmd ungefähr so aus:
dcmd_goto(playerid, params[])
{
new
id, Float:bspX, Float:bspY, Float:bspZ;
if (sscanf(params, "u", id )) SendClientMessage(playerid, 0xFF0000AA, "Verwendung: \"/goto <playerid>\"");
else if (id == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Player mit der richigen ID nicht gefunden.");
else
{
if(IsPlayerAdmin(playerid))
{
GetPlayerPos(id, Float:bspX, Float:bspY, Float:bspZ);
SetPlayerPos(playerid, Float:bspX, Float:bspY, Float:bspZ);
}
}
return 1;
}+ eine zeile für dcmd(goto, 4, cmdtext)
ungetestet, gibt aber keine errors
mit strcmp schaut das ganze so aus (haltet euch fest :D)
if(!strcmp(cmd, "/goto", true))
{
new Float:pX,Float:pY,Float:pZ,tmp[128];
if (IsPlayerAdmin(playerid))
{
tmp = strtok(cmdtext, index);
if(!strlen(tmp))
{
SendClientMessage(playerid, grün, "Hilfe: /goto [ID]");
SendClientMessage(playerid, rot, "FUNKTION: Kann dich zu einem Spieler Porten.");
return 1;
}
new giveplayerid = strval(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
GetPlayerPos(giveplayerid,pX,pY,pZ);
SetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ+2);
}
else
{
GetPlayerPos(giveplayerid,pX,pY,pZ);
SetPlayerPos(playerid,pX,pY,pZ+2);
}
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
}
else if(giveplayerid == INVALID_PLAYER_ID)
{
format(tmp, sizeof(tmp), "%d ist nicht im Server.", giveplayerid);
SendClientMessage(playerid, rot, tmp);
}
}
else SendClientMessage(playerid, rot, "Du bist kein Admin.");
return 1;
}das eine sind 35 zeilen (strcmp) das andere 17 (dcmd) bei parameter commands ist mir dcmd eindeutig lieber
-
ich hab mit ihm schon geredet ich helf ihm ein bisschen beim scripten morgen und zeig ihm was^^
btw du musst oben noch
#include <a_players>
reinsetzen sonst geht das nicht (hätt ich fast vergessen >.<)
-
Gleich ein Reallife server als erstes? na du nimmst dir aber viel vor ich empfehle dir zuerst ein bisschen einen stunt/freeroam zu machen aber ist deine entscheidung. naja vergiss nicht es heißt SetPlayerWantedLevel, nicht SetPlayerWanteds^^ das hatte ich falsch im kopf^^
-
nicht ganz. send client messsage schaut so aus:
SendClientMessage(playerid, rot, "Du hast ein Fahrzeug gestohlen!")
damit das geht muss aber ganz oben noch das hin:
#define rot 0xFF0000FF
da wo du auch da new hast mach das #define rot blabla hin^^ dann sollte es gehen^^
oh und sorry der command heißt
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1)
sorry hab ich falsch im kopf gehabt^^
-
gibt sehr viele tutorials dazu. Geh mal in den Tutorial bereich des Forums und schau auf den ersten 3 seiten da ist sicher irgendwo eins dabei^^
-
bei den news
new car;
OnGameModeInit
car == CreateVehicle(blabla) //einfach vor alle autos bei denen es sein soll ein "car =" vor CrèateVehicle setzen :P
OnPlayerEnterVehicle
if(car = vehicleid)
{
SetPlayerWanteds(playerid, GetPlayerWanteds(playerid) + 1);
}so nun sollte jeder der dieses auto betritt ein wanted bekommen...hoffe ich xD
-
Zitat
OnPlayerEnterVehicle(playerid,vehicleid) { if(IsPlayerAdmin(playerid)) { SendClientMessage(playerid,farbe,"du bist kein admin!"); RemovePlayerFromVehicle(playerid,vehicleid); } return 1; }
öhm KLAR! der code wird sicher nicht funktionieren. denk mal nach:
If is player admin (wenn der spieler admin ist)
"du bist kein admin"
Remove from vehicle (aus dem auto werfen)
und jetzt denkt nach was dieser code logisch machen wird.
das bedeutet quasi Wenn spieler ein admin ist dann nachricht "du bist kein admin" rauswurf auf dem auto
ergo sorgt dieser code dafür das du rausgeworfen wirst aus JEDEM auto wenn du ein admin bist.
richtiger code nochmal (zu 3.)
bei den new (Wenn du noch keine hast einfach ganz oben.)
new admincar;
unter OnGameModeInit
admincar = CreateVehicle(522,1489.9640,-1728.2372,13.3828,350.3375, rot, gelb, 10); (auszug aus meinem GameMode, musst du halt anpassen.)
dann unter OnPlayerEnterVehicle.
if(vehicleid == admincar)
{
if(IsPlayerAdmin(playerid))
{
//was passieren soll wenn der spieler ein admin ist, am besten einfach freilassen :P
}
else
{
if(ispassenger(playerid))
{
//was passieren soll wenn der spieler kein admin ist, aber nur als beifahrer im auto ist, am besten auch freilassen.
}
else
{
SendClientMessage(playerid, rot, "Du bist kein Admin und kannst daher dieses auto nicht fahren!"); // rot musst du definieren.
RemovePlayerFromVehicle(playerid);
}
return 1;
}sollte funktionieren, den code hab ich grad aus dem kopf geschrieben, sind also vllt fehler drin. sollte aber funktionieren.
-
Zitat
Ich haeb über 300 Objecte
na dann is klar woran der fehler liegt in dem fall kann ich nur sagen was die anderen sagen . Benutz einen ObjectStreamer
-
anubis dir ist schon klar das das quatsch ist? nur unter OnGameModeInit müssen die drin stehen. ich bin ein totaler anfänger im scripten aber das weiß sogar ich
-
frage: wozu einen streamer. soviel ich weiß ist das maximum für objekte 254. das was er da hat sind 91. Ergo wenn er keine anderen objekte hat sollte das gehen. Naja. Hast du andere Objecte auch noch wenn ja gib die mal oder sag wie viele das sind
edit: was hustler sagt is auch ne möglichkeit. hast du die unter public OnGameModeInit drin oder woanders?
-
so problem ich hab jetzt ein /announce geschrieben, das aber 4 errors liefert. das ganze schaut so aus:
Zitat
dcmd_announce(playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,rot,"Du bist kein Admin");//Fehlermeldung wenn kein Admin
new announcestring[200], andererstring[100], aname4announce;//Parameter deklarieren
if(sscanf(params,"s",announcestring))return SendClientMessage(playerid,rot,"Benutze /announce [text]");
GetPlayerName(playerid, aname4announce, sizeof(aname4announce));
format(andererstring, sizeof(andererstring), "Admin %s: %d", aname4announce, announcestring);
return GameTextForAll(andererstring, 5000, 1);
}
gut die variablennamen sind mir grad eben eingefallen aber naja hier gehts ja nicht um die kreativität meiner variabelnamen xDdas liefert folgende errors:
ZitatC:\DOKUME~1\ADMINI~1\Desktop\GRANDT~1\GAMEMO~1\XEROXS~1.PWN(482) : error 017: undefined symbol "dcmd_announce"
C:\DOKUME~1\ADMINI~1\Desktop\GRANDT~1\GAMEMO~1\XEROXS~1.PWN(486) : error 017: undefined symbol "params"
C:\DOKUME~1\ADMINI~1\Desktop\GRANDT~1\GAMEMO~1\XEROXS~1.PWN(487) : error 035: argument type mismatch (argument 2)
C:\DOKUME~1\ADMINI~1\Desktop\GRANDT~1\GAMEMO~1\XEROXS~1.PWN(487) : error 035: argument type mismatch (argument 2)
482 dcmd_announce(playerid,params[])486 if(sscanf(params,"s",announcestring))return SendClientMessage(playerid,rot,"Benutze /announce [text]");
487 GetPlayerName(playerid, aname4announce, sizeof(aname4announce));
ööhm jooo
-
hm ich versuch mal mit dcmd was zu scripten wenn ich noch probleme hab dann editiere ich hier
-
verstehen würd ichs gerne^^
was das bedeutet
Zitatif(sscanf(params,"ud",id,styleid))return SendClientMessage(playerid,rot,"Benutze /setplayerfightingstlye [id] [styleid]");
erklär mir ma bitte^^
vor allem was das "ud" bedeutet würde mich interessieren
dankö^^
-
soo.... eigentlich hatte ich vor nichmehr zu nerven aber LEIDER! xD
das /goto [id] das ich bekommen hab hab ich ja gut umändern können und damit sowohl ein /explode als auch /freeze & /unfreeze machen können. Versteht das jetzt bitte nicht als "Ich hab das Konzept verstanden" nö das kein bisschen ich hab heute schon 30 minuten versucht allein herauszufinden wie das goto aufgebaut war Jetzt wollte ich fragen ob mir jemand einen befehl mit 2 parametern scripten kann, einfach damit ich was zum orientieren hab. das kann /giveplayerweapon [id] [weaponid] oder /giveplayermoney [id] [geldmenge] oder /setplayerfightingstyle [id] [styleid] ich brauch nur was zum orientieren.
wenn mir jemand noch erklären könnte wie mein goto script aufgebaut ist würde mich das auch weiterbringen.
und achja min CO Admin will unbedingt ein /announce [TEXT] was dann per GameTextForAll den eingegebenen text anzeigt.
wenn mir das jemand machen könnte wäre cool achja und mein goto script ist:
Zitatif(!strcmp(cmd, "/goto", true))
{
new Float:pX,Float:pY,Float:pZ,tmp[128];
if (IsPlayerAdmin(playerid))
{
tmp = strtok(cmdtext, index);
if(!strlen(tmp))
{
SendClientMessage(playerid, grün, "Hilfe: /goto [ID]");
SendClientMessage(playerid, rot, "FUNKTION: Kann dich zu einem Spieler Porten.");
return 1;
}
new giveplayerid = strval(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
GetPlayerPos(giveplayerid,pX,pY,pZ);
SetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ+2);
}
else
{
GetPlayerPos(giveplayerid,pX,pY,pZ);
SetPlayerPos(playerid,pX,pY,pZ+2);
}
SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
}
else if(giveplayerid == INVALID_PLAYER_ID)
{
format(tmp, sizeof(tmp), "%d ist nicht im Server.", giveplayerid);
SendClientMessage(playerid, rot, tmp);
}
}
else SendClientMessage(playerid, rot, "Du bist kein Admin.");
return 1;
}ich versuch dann mal weiter das rauszubekommen und hoffe auf eine antwort bevor ich wahnsinnig werde xD
-
-
-
hey hp, danke für das script. kannst du auch noch ein /stuntcar und ein /arenacar machen und /stuntcar auf interior 14 legen und arenacar auf 15 also dass ich mit /arenacar die autos interior 15 kompatibel sind und die die ich mit /stuntcar spawne interior 14 kompatibel, das wäre dann noch das allerbeste^^
-
hp....mhmmm...
E:\SanAndreas\SAMPSERVER\gamemodes\XeroxScript.pwn(924) : error 017: undefined symbol "sscanf"
E:\SanAndreas\SAMPSERVER\gamemodes\XeroxScript.pwn(927) : warning 217: loose indentation
E:\SanAndreas\SAMPSERVER\gamemodes\XeroxScript.pwn(930) : warning 202: number of arguments does not match definition924 dcmd_car(playerid,params[]){new carid; if(sscanf(params, "d",carid)) {
927 if(carid < 400 carid > 611){
930 GetPlayerPos(playerid, x, y, z);GetPlayerFacingAngle(playerid, Angle);CreateVehicle(carid, x, y, z, Angle, 0 , 0);return 1;}
...
-