ich habe für mein onplayercommand ganz unten return 1;
Dann machst du es falsch, und bei dir kommt nie "Server: Unknown Command". Probier es mal aus^^
ich habe für mein onplayercommand ganz unten return 1;
Dann machst du es falsch, und bei dir kommt nie "Server: Unknown Command". Probier es mal aus^^
Du hast auch daran gedacht, am Anfang die richtigen Includes zu schreiben?
Ganz wichtig:
#include <a_samp>
Edit: Jo, hab ich auch gerade gemerkt^^ Schnell eben editiert.
Einfach am Ende des Befehls noch ein return 1; einfügen
Bei public OnPlayerCommandText(playerid,cmdtext[]) steht am Ende ja immer ein return 0; die Null einfach in eine Eins ändern.
Zu den NPCs mit Fernsehern: Würde eventuell so gehen:
Wäre aber auch nicht so ganz das Wahre, denk ich mal
Ist in deinem Gamemode das so eingestellt, dass Checkpoints, die zuweit weg sind, für den Spieler nicht mehr angezeigt werden? Das wird häufig bei Gamemodes mit Properties benutzt, weil man nur ein Checkpoint pro Zeit haben kann. Versuche mal SetPlayerRaceCheckpoint(playerid, 1, Float:x, Float:y, Float:z, 0.0,0.0,0.0,15);
Edit: Ah, ich sehe grad was^^ Setze mal bei Zeile 12 eine Klammer zu (})
Erstelle eine Variable, die angibt, ob das Tor offen ist (Wert 1) oder zu (Wert 0). Da wo du das mit dem Hupen und Öffnen gemacht hast, kannst du dann prüfen lassen, wenn gehupt wurde, ob das Tor bereits offen ist. Wenn ja, soll es wieder geschlossen werden und der Timer, der das Tor wieder schließt, gekillt werden. Wenn das Tor zu ist, ganz normal, öffnen lassen.
Setze einfach einen Timer, der die Tore in 10 Sekunden wieder verschiebt.
Dein Script sagt momentan folgendes: /tv 1 setzt die Kamera von Spieler ID:1 hinter ihm.
SetCameraBehindPlayer benutzt man, damit die Kamera eines jeweiligen Spielers hinter ihm gesetzt wird. Um anderen Leuten zuzuschauen, musst du SetCameraBehindPlayer(playerid) ersetzen durch:
TogglePlayerSpectating(playerid, 1); // Zuschauermodus AN
PlayerSpectatePlayer(playerid, ziel); // "playerid" schaut nun "ziel" zu
TogglePlayerControllable(playerid,0); brauchst du nicht.
Um den Zuschauermodus zu beenden machst du folgendes:
TogglePlayerSpectating(playerid, 0); // Zuschauermodus AUS
SetCameraBehindPlayer(playerid); // Setze die Kamera von "playerid" wieder hinter ihm
Sollte dann am Ende etwa so aussehen:
public OnPlayerCommandText(playerid,cmdtext[])
{
//...
//...
if (strcmp("/tv", cmdtext, true, 3) == 0)
{
if(SpielerInfo[playerid][alvl]<1)
{
new pname[128], tv[128];
GetPlayerName(ziel,pname,sizeof(pname));
format(tv,sizeof(tv),"Du guckst nun %s zu.",pname);
TogglePlayerSpectating(playerid,1);
PlayerSpectatePlayer(playerid,ziel);
SendClientMessage(playerid,COLOR_YELLOW,tv);
return 1;
}
SendClientMessage(playerid,COLOR_RED,"Du bist kein Supporter/Admin!");
return 1;
}
if (strcmp("/untv", cmdtext, true, 5) == 0)
{
if(SpielerInfo[playerid][alvl]<3)
{
TogglePlayerSpectating(playerid,0);
SetCameraBehindPlayer(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"TV beendet!");
return 1;
}
SendClientMessage(playerid,COLOR_RED,"Du bist kein Supporter/Admin!");
return 1;
}
return 0;
}
new Text3D:label[MAX_PLAYERS];
public OnFilterScriptExit()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
Delete3DTextLabel(label[i]);
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/admin", true, 10) == 0 && IsPlayerAdmin(playerid) == 1)
{
label[playerid] = Create3DTextLabel("Administrator/Moderator",0xFF0000,0,0,0,40,0,0);
Attach3DTextLabelToPlayer(label[playerid],playerid,0,0,1.5);
return 1;
}
return 0;
}
Vielleicht hilft dir folgendes: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) und
PutPlayerInVehicle(playerid,vehicleid,seatid);
new label[MAX_PLAYERS];
label[playerid] = Create3DTextLabel(Adminstrator/Moderator);
Attach3DTextLabelToPlayer
Ändern in:
new Text3D:label[MAX_PLAYERS];
label[playerid] = Create3DTextLabel("Administrator/Moderator",0xFF0000,0,0,0,40,0,0);
Attach3DTextLabelToPlayer(label[playerid],playerid,0,0,1.5);
Außerdem fehlen am Ende 3 Klammern...
Wie genau überprüfst du, welchen Wert es hat?
switch(GetVehicleModel(vehicleid))
{
case 400..410: // Wenn die ModelID 400 bis 410 ist...
{
}
case 411..420: // usw
{
}
}
Edit: Versuch' mal "new tmodel" außerhalb einer Public zu setzen.
new tmodel;
public OnVehicleSpawn(vehicleid)
{
tmodel = GetVehicleModel(vehicleid);
if(tmodel == 402)
{
Variable[vehicleid] = 70;
}
else
{
Variable[vehicleid] = 100;
}
return 1;
}
und ich möchte je nachdem welche ModelID das vehicle hat, ein unterschiedlicher Wert in einer Variable gespeichert wird.
Wird es, wenn die ModelID 400 ist, bekommt die Variable den Wert 400... wenn sie 401 ist, den Wert 401... für jedes Fahrzeug...
Edit: Ich verstehe nicht, wieso du es so umständlich machen willst o_O Dann musst du ja alle FahrzeugModels (!!!) durchgehen mit if schleife o_O
Klar weiß ich, was die VehicleModel ist. Mit dem was ich dir eben geschickt habe, speichert der die VehicleModel in einer Variable, wolltest du doch, oder nicht?
Nur halt, dass der bei Model 522 den Wert 522 speichert, und nicht 20... wäre aber auch so herum zu umständlich.
Probier' es mal so:
new VehicleModel[MAX_VEHICLES] = -1;
public OnVehicleSpawn(vehicleid)
{
VehicleModel[vehicleid] = GetVehicleModel(vehicleid);
return 1;
} // Die Variable hat nun für das Fahrzeug "vehicleid" den Wert "vehicleid"
Sieht aber nicht so sinnvoll aus, wozu brauchst du eine Variable?
Unter PutPlayerInVehicle "return 1;" einfügen. (ohne "")
versuch mal new giveplayerid = ReturnUser(strval(inputtext));
Wenn's bei ID 0 nicht geht, was normal ist, weil soweit ich weiß es eine Zahl zwischen 1 und 30000 sein muss.. (Nicht ganz sicher.)
Versuch's mal damit, anstatt dann giveplayerid zu benutzen als Dialogid, schreibste einfach
hin.
if(GetPlayerSkin(playerid) == gsskins[4]) { }
Versuch's mal mit: