Ausführlicher geschrieben:
if(strcmp(cmdtext,"/lv",true)==0) {
if(GetPlayerState(playerid)==2) {
new aid=GetPlayerVehicleID(playerid);
SetVehiclePos(aid,x,y,z);
SetPlayerPos(playerid,x,y,z);
PutPlayerInVehicle(playerid,aid,0); }
else { SetPlayerPos(playerid,x,y,z); }
return 1;
}
Beiträge von KeksOfDeath
-
-
Bei /getip kommen bei ihm Errors... beim anderne weiß ich nciht, ob er strget definiert hat... der /getip kann auch so aussehen:
if(!strcmp(strget(cmdtext,0)),"/getip") {
if(strlen(strget(cmdtext,1))) {
new typ=strval(strget(cmdtext,1));
if(IsPlayerConnected(typ)) {
new name[MAX_PLAYER_NAME], ip[15], s[50];
GetPlayerName(typ,name,sizeof(name));
GetPlayerIp(typ,ip,sizeof(ip));
format(s,sizeof(s),"%ss Ip: %s",name,ip);
SendClientMessage(playerid,FARBE,s); }}
return 1;
}
Oder so:
if(strcmp(cmdtext,"/getip",true,6)==0) {
if(strlen(cmdtext[7])) {
new typ=strval(cmdtext[7]);
if(IsPlayerConnected(typ)) {
new name[MAX_PLAYER_NAME], ip[15], s[50];
GetPlayerName(typ,name,sizeof(name));
GetPlayerIp(typ,ip,sizeof(ip));
format(s,sizeof(s),"%ss Ip: %s",name,ip);
SendClientMessage(playerid,FARBE,s); }}
return 1;
} -
if(strcmp(cmdtext,"/settime",true,8)==0) {
if(strlen(cmdtext[9])) {
new zeit=strval(cmdtext[9]);
if(GetPlayerLevel(playerid) < 1) return SendClientMessage(playerid, red, "Dein Level ist für diesen Command nicht hoch genug !!");
if(zeit>=0 && zeit<=23) {
new name[MAX_PLAYER_NAME], s[80];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s hat die Uhr auf %d gestellt",name,zeit);
SendClientMessageToAll(FARBE,s);
SetWorldTime(zeit);}}
return 1; -
1) Verwende mal eine ordenliche Schrift, wir sind nicht blind
2) Dieses Forum hat so einige gute Tutorials -
format(string, sizeof(string), "%d", armour);
Zur wiedergabe eines floats benutzt man %f
Dann wird bei dir in etwa sowas erscheinen: armour: 100.000000
Da kann pawno aber noch runden...
%.0f//dann werden daraus 100 -
Ist das jetzt sozusagen ein Scriptwunsch, dass das jeamnd "mal so eben schnell" für dich macht, oder eher etwas für sponsoring/scripting, dass du da auch was für gibst?
Kleiner Tipp: Fang mit was einfachem an (Stunt/DM/Fun/...) und festige die Grundlagen -
Tolle Seite bis zur 10. Klasse..: http://mathepower.com/
-
if (minute < 10)
{
format(string, sizeof string, " ~r~ Homepage:~w~ fbserever.ath.cx~r~ DM1:~w~ %d Spieler ~r~ DM2:~w~ %d Spieler ~r~Time:~w~ %d:0%d",playerdm1,playerdm2,hour, minute);
}
else {
format(string, sizeof string, " ~r~ Homepage:~w~ fbserever.ath.cx~r~ DM1:~w~ %d Spieler ~r~ DM2:~w~ %d Spieler ~r~Time:~w~ %d:%d",playerdm1,playerdm2,hour, minute); } -
Die 10.0 heißt Radius von 10 Floats
-
Ok, ich habe vergessen was zu sagen:
Beim Preis sollst du die [] nicht mitschreiben, d.h. statt [150] machst du 150
Und bei x,y,z sollst du die Floats eintragen
PS: 150$ für 1 Liter Benzin?^^ -
Verdoppeln:
if(PlayerToPoint(....) || PlayerToPoint(...) || PlayerTo...(...)) {
Das heißt oder und && heißt undUnd zu dem anderne Problem... kann ich hellsehen? Du musst schon den Code posten, wie du es jetzt eingefügt ahst (nicht den ganzen GM)
-
Erstmal danke Jason, es ist auch so, wie du es gesagt hast, ich habe den GameText entfernt (Textdraw war ja nciht vorhanden) und es funktioniert... zumindest beim ersten mal...
Man kann das Menu genau 1 mal aufrufen udn es erscheint normal, danach kann man warten, wie man will, man bekommt imemr wieder das verrückte Menu -
Ops, hast recht, hab die Tankstelle vergessen xD
if(strcmp(cmdtext,"/tanken",true)==0) {
if(PlayerToPoint(10.0,playerid,x,y,z)) {//bei x,y und z die Koordinaten eintragen
if(GetPlayerState(playerid)==2) {
new aid=GetPlayerVehicleID(playerid);
if(GetPlayerMoney(playerid)>=100-benzin[aid]*[hier musst du den Preis für 1 Liter Benzin eintragen]) {
GameTextForPlayer(playerid,"Tank ist wieder voll",5000,1);
benzin[aid]=100; }
else {
new s[50], lit=GetPlayerMoney(playerid)/[Hier den Preis für 1 Liter Benzin eintragen];
format(s,sizeof(s),"%d Liter Benzin getankt",lit);
GameTextForPlayer(playerid,s,5000,1);
benzin[aid]+=lit; }}}
return 1;
}
Sollte PlayerToPoint bei dir nicht deklariert sein, dann klick mich//EDIT: Zu deinem EDIT5: Das ist mir unerklärlich... es wird nur 1 mal pro Minute was ausm Tank entfernt
-
Zu dem Tor:
Gans nach oben:
new torname;
OnGameModeInit:
torname=CreateObject(.....);//die Positionen vom GESCHLOSSENEN Tor
OnPlayerCommandText:
if(strcmp(cmdtext,"/pd",true)==0) {
MoveObject(torname,x,y,z,geschwindigkeit);//die x, y und zFloats vom OFFENEN Tor eintragen, bei Geschwindigkeit... trag da einfach ne Zahl zwischen 0.1 und 20 ein (je dichter die Zah lan 20 dran ist, desto schneller bewegt ich das Tor)
return 1;
}
Um es wieder zu schließen musst du einfach nur bei MoveObject die x,y und z Floats austauschenPayDay:
Ganz nach oben:
forward payd(); new zahler=0;
OnGameModeInit:
SetTimer("payd",60000,1);//die 60000 sind 1 Minuten in Millisekunden gerechnet und die 1 am Ende heißt, dass der Timer wiederhohlt werden soll
Normalerweise würde man da gleich 360000 eintragen, weil das 5 Minuten wären, aber wir zeihen dort gleich des Tanken mit ein
Dann ganz nach unten:
public payd() {
for(new i=0; i<MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
if(zahler>=5) {
GivePlayerMoney(i,5000);
zahler=0;
SendClientMessage(i,FARBE,"PayDay, du bekommst 5000$"); }
tanken(i); }}
zahler++; }
Das "tanken(i)" nur mit einfügen, wenn du auch das Tanksystem reinmachstZum tanken:
Ganz nach oben:
forward tanken(playerid); new benzin[MAX_VEHICLES];
OnGameModeInit:
for(new v=0; v<MAX_VEHICLES; v++) {
benzin[v]=100; }
Ganz nach unten:
public tanken(playerid) {
if(GetPlayerState(playerid)==2) {
new aid=GetPlayerVehicleID(playerid);
if(benzin[aid]>=1) {
new s[30];
benzin[aid]--;
format(s,sizeof(s),"Tank: %d/100 Liter",benzin[aid]);
GameTextForPlayer(playerid,s,10000,1); }
else {
SendClientMessage(playerid,FARBE,"Dein Tank ist leer");
//jetzt müsste man ihn entweder freezen, damit er nicht weiterfährt...
//TogglePlayerControllable(playerid,0);
//oder man kann ich auch töten, dann fährt er auch nciht weiter...
//SetPlayerHealth(playerid,0);
}}}
Falls du dich für das freezen entscheidest, dann bruachst du auch nochn unfreeze cmd:
OnPlayerCommandText:
if(strcmp(cmdtext,"/aussteigen",true)==0) {
if(GetPlayerState(playerid)==2) {
TogglePlayerControllable(playerid,1);
RemovePlayerFromVehicle(playerid); }
return 1;
}
Und damit dann da niemand mehr einsteigen kann:
OnPlayerStateChange:
if(newstate==2) {
if(benzin[GetPlayerVehicleID(playerid)]==0) {
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1); }}
So, das wars dann auch schon -
t ist ein public wie jeder andere auch, d.h. man kann auch mit "if" arbeiten, ohne einen cmd zu haben:
public OnPlayerCommandText(...) {
if(imdm[playerid]==0) {
if(strcmp(cmdtext,"/cmd1",true)==0) {
//joa^^
return 1;
}
if(strcmp(cmdtext,"/cmd2",true)==0) {
//joa^^
return 1;
}
}
if(strcmp(cmdtext,"/cmd3",true)==0) {
//joa^^
return 1;
}
cmd 1 und 2 kann er jetzt nur verwenden, wenn er nicht im DM ist, cmd 3 kann er immer verwenden (das imdm[playerid] war jetzt mal ausgedacht, das musst du natürlich noch deklarieren) -
Es ist auch zum lachen ,das denken sicherlich noch 50 andere Leute, aber jetzt müssen nciht noch 50 Posts hinterherkommen, wie lustig das ist
-
Ja, zumindest die Hauptfunktion... ich gehe mal davon aus, dass du Nachrichten selber senden kannst
-
Bau den cmd einfach anders auf...
if(strcmp(cmdtext,"/settime",true,8)==0) {
if(strlen(cmdtext[9])) {
new zeit=strval(cmdtext[9]);
if(zeit>=0 && zeit<=23) {
SetWorldTime(zeit); }}
return 1;
} -
Deine Funktion
Zitatstock WP(playerid,weaponid,ammo)
{
return GiveWeapon(playerid,weaponid,ammo);
}
würde eigentlich funktionieren... nur wird ein Error kommen, weil es "GivePlayerWeapon" heißt -
Man könnte jetzt bestimmen, wie viele Leute in einem Fahrzeug sitzen...
if(strcmp(cmdtext,"/wieviele",true)==0) {
if(IsPlayerInAnyVehicle(playerid)) {
new aid=GetPlayerVehicleID(playerid), i, anzahl, s[100], f, fs[15];
for(i=0; <MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
if(IsPlayerInAnyVehicle(i)) {
if(GetPlayerVehicleID(i)==aid) {
if(GetPlayerState(i)==2) { f=1; }
anzahl++; }}}}
if(f==1) { format(fs,sizeof(fs),"besetzt"); }
else if(f==0) { format(fs,sizeof(fs),"frei"); }
format(s,sizeof(s),"In deinem Auto sitzen %d Leute und der Fahrersitz ist %s",anzahl,fs);
SendClientMessage(playerid,FARBE,s); }
return 1;
}
Man kann jetzt nur sagen, wie viele Leute in dem Fahrzeug sitzen und, ob der Fahrersitz belegt ist, über die anderen kann man nichts sagen (dami ist gemeint, dass man z.B nciht sagen kann, dass der Sitz nummer 2 frei ist oder nicht)