SetPlayerCheckpoint(playerid, 3.0,1248.8826,-1258.9431,12.8862); die 3.0 muss nach hinten.
ZitatSetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z,Float:size)
SetPlayerCheckpoint(playerid, 3.0,1248.8826,-1258.9431,12.8862); die 3.0 muss nach hinten.
ZitatSetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z,Float:size)
Ah mir ist grad aufgefallen du hast hinter dem Public immer noch ein Semikolon ( ; ). Dass muss natürlich weg.
Zitatpublic CP1NO2(playerid);
edit: schreibehler^^
1. Du musst SetTimerEx verwenden
2. Kommentier doch einfach Zeile für Zeile aus. So findest du den Fehler eigentlich recht schnell
Du willst doch abfragen ob das Fahrzeug-Model ein Bus etc. ist oder? Wenn ja musst du GetVehicleModel verwenden. Außerdem verwendest du das Fahrzeug 449 (Tram) 2 mal. D.h. man muss sich ein Busticket und ein Zugticket kaufen^^
if(newstate == PLAYER_STATE_PASSENGER)
{
switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
{
case 431:
{
SendClientMessage(playerid,COLOR_YELLOW,"Kaufe dir ein Busticket /btk.");
SetTimer("BTC",10000,0);
}
case 577:
{
SendClientMessage(playerid,COLOR_YELLOW,"Kaufe dir ein Flugticket /ftk.");
SetTimer("FTC",10000,0);
}
case 538,570,449:
{
SendClientMessage(playerid,COLOR_YELLOW,"Kaufe dir ein Zugticket /ztk.");
SetTimer("ZTC",10000,0);
}
}
}
dini_Remove("/haus/%d.txt"); daran liegts. Mach da einfach dini_Remove(pfad);
Als erstes muss du aus new copcar; new copcar[2]; //2 = anzahl der Fahrzeuge machen. In der Variable wird die ID gespeichert wenn du aber 2 Fahrzeuge in die gleiche Variable speicherst buggt das.
copcar = AddStaticVehicle(596,1601.1548,-1700.2468,5.6123,90.4101,0,1); // Policecar 1
copcar = AddStaticVehicle(596,1601.2417,-1696.1384,5.6109,90.2837,0,1); // Policecar 2
wird dann also zu
copcar[0] = AddStaticVehicle(596,1601.1548,-1700.2468,5.6123,90.4101,0,1); // Policecar 1
copcar[1] = AddStaticVehicle(596,1601.2417,-1696.1384,5.6109,90.2837,0,1); // Policecar 2
Außerdem würde ich erst bei OnPlayerStateChange abfragen ob der Spieler ein Cop ist und ihn dann rauswerfen.
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
for(new i;i<sizeof(copcar);i++)
{
if(GetPlayerVehicleID(playerid) == copcar[i])
{
if(gTeam[playerid] != TEAM_POLICE)
{
RemovePlayerFromVehicle(playerid);
return GameTextForPlayer(playerid, "Du bist kein Polizist!", 3000,3);
}
}
}
}
return 1;
}
habs noch nicht getestet aber so oder ähnlich dürfte es gehen...
case 280..283,285,288 du fragst da die Skin-ID ab. Was du brauchst ist aber die classid.
ZitatNote: Class IDs are assigned when AddPlayerClass is used.
Das erste AddPlayerClass wäre dann also classid 0 (deshalb tut CJ auch).
AddPlayerClass(0,2185.6685,-1812.9491,13.5569,191.9988,0,0,0,0,0,0);//classid 0
AddPlayerClass(280,1541.0613,-1675.5898,13.5518,87.7057,0,0,0,0,0,0); //classid 1
AddPlayerClass(288,1541.2834,-1675.6553,13.5522,91.1210,0,0,0,0,0,0); //classid 2
AddPlayerClass(285,1541.1193,-1675.6711,13.5519,90.8624,0,0,0,0,0,0); //classid 3 und so weiter...
Geht auch leichter (so wie Thommylee gesagt hat):
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
SetPlayerCameraPos(playerid,x,y,z+50);
SetPlayerCameraLookAt(playerid,x,y,z);
Damit wird die Position vom Spieler abgefragt und die Kamera 50 Meter nach oben verschoben. Sie zeigt dann genau auf den Spieler bzw. nach unten.
Ich denke er meint dass der Bot automatisch eingeloggt wird. Irgendwo wird sicher abgefragt ob der Spieler eingeloggt ist und wenn nicht kommt ein Login-Fenster o.ä. Dort einfach abfragen ob der Spieler ein Bot ist und wenn ja diesen Schritt überspringen.
Ja, ich mein dass die dann automatisch zur nächsten Schiene die es original in GTA gibt teleportiert werden.
Normalerweiße werden die Züge/Trams doch automatisch auf die vorgegebenen Schienen teleportiert...
Mach mal printf("Test: %d",PlayerCar[i][model]); Und sag was im ServerLog steht. Könnte auch sein dass das Model einfach falsch ist und deshalb kein Name dazu verfügbar ist.
Du brauchst die ocmd-Include. Einfach mal danach suchen.
Weiß nicht obs ein Fehler ist aber:
stock Stadt(playerid)
{
new Float:X, Float:Y, Float:Z; //We use this to store player position
GetPlayerPos(playerid, X, Y, Z); //Here we are storing the player position on the variables X, Y, and Z defined previously
new zoneid = 0;
for(; zoneid < sizeof(zoness); zoneid++)
{
if (X <= zoness[zoneid][zone_maxxx] && X >= zoness[zoneid][zone_minxx] && Y <= zoness[zoneid][zone_maxyy] && Y >= zoness[zoneid][zone_minyy])
{
return zoness[zoneid][zone_namee]; //hier ein Text
}
}
return 1; // hier gibt die Funktion eine Zahl zurück
}
wie wärs wenn du statt dem return 1; auch mal einen Text zurück gibst?
Bevor du Admin-Befehle erstellst solltest du vielleicht ein Admin-System scripten. Die Befehle sind dann alle relativ ähnlich...
ocmd:a(playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0x00FF00,"Du bist kein Admin!");
if(!strlen(params))return SendClientMessage(playerid,0x00FF00,"Verwendung: /a [text]");
new s[128],pname[32];
GetPlayerName(playerid,pname,32);
format(s,128,"%s sagt: %s",pname,params);
SendClientMessageToAll(0x00FF00,s);
return 1;
}
noch nicht getestet. Geht nur als Rcon-Admin (kannst du aber ändern).
Serverseitige Mods in Samp die jeder sieht? O.o Kann es sein dass du Samp mit MTA verwechselst?
Hm zeig mal ein paar Zeilen darüber und darunter. Sehe da keinen Fehler
edit: oh oben stehts ja schon. Was passiert wenn du die betroffene Zeile auskommentierst?
Oh sorry. Muss natürlich Delete3DTextLabel heißen.
Wäre gut zu wissen was für Errors kommen...