Ok hab mich jetzt bissl näher damit beschäftigt
Also mit /v [FahrzeugID] Fahrzeug spawnen Farben per Random
Insgesamt kann man sich 3 Autos spawnen bis die slots alle sind
Wenn ein Auto kaputt geht wir der slot auf dem es sitzt wieder frei
falls man es nicht mehr findet mit /ruf [SLotID(1-3)]
so und wenn man keine Lust mehr auf das auto hat /delslot [SlotID(1-3)] wird vom server gelöscht und die owner variabel wird resettet
Wenn man einsteigt steht wenn es das eigene ist willkommen zurück: der Name
Falls man nicht "Owner" ist steht da Dieses Fahrzeug gehört nicht ihnen.Es gehört:Der Name
Also beginnen wir mal
Zuerst:
new Auto1[MAX_PLAYERS];
new Auto3[MAX_PLAYERS];
new Auto2[MAX_PLAYERS];
new slot[MAX_PLAYERS];
new Auto11[MAX_PLAYERS];
new Auto31[MAX_PLAYERS];
new Auto21[MAX_PLAYERS];
das unter die includes
dann:
Auto1[playerid]=999;
Auto2[playerid]=999;
Auto3[playerid]=999;
unter public OnPlayerConnect(playerid)
danach
DestroyVehicle(Auto11[playerid]);
DestroyVehicle(Auto21[playerid]);
DestroyVehicle(Auto31[playerid]);
Bei public OnPlayerDisconnect(playerid)
Nun wenn es Kaputt geht muss der Slot wieder frei werden.Also:
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(vehicleid == Auto11[i])
{
DestroyVehicle(Auto11[i]);
Auto1[i]=999;
SendClientMessage(i,0xddaaffff,"Slot 1 ist nun frei");
}
else if(vehicleid == Auto21[i])
{
DestroyVehicle(Auto21[i]);
Auto2[i]=999;
SendClientMessage(i,0xddaaffff,"Slot 2 ist nun frei");
}
else if(vehicleid == Auto31[i])
{
DestroyVehicle(Auto31[i]);
Auto3[i]=999;
SendClientMessage(i,0xddaaffff,"Slot 3 ist nun frei");
}
}
}
Das unter public OnVehicleDeath(vehicleid,killerid)
Nun zum CMD:
if(strcmp(strget(cmdtext,0),"/v",true)==0)
{
new vID = strval(strget(cmdtext,1));
if( vID <= 611 && vID >= 400)
{
new Float:X,Float:Y,Float:Z,Float:Roat;
new rand1=random(10);
new rand2=random(10);
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Roat);
if(Auto1[playerid]== 999)
{
Auto11[playerid]=CreateVehicle(vID,X,Y,Z,Roat,rand1,rand2,-1);
PutPlayerInVehicle(playerid,Auto11[playerid],0);
slot[playerid]=1;
new string[128];
Auto1[playerid]=1;
format(string,sizeof(string),"Sie haben ein Auto auf Slot %i gespawnt 1.Farbe: %i 2.Farbe: %i",slot[playerid],rand1,rand2);
SendClientMessage(playerid,0xddaaffff,string);
}
else if(Auto2[playerid]== 999)
{
Auto21[playerid]=CreateVehicle(vID,X,Y,Z,Roat,rand1,rand2,-1);
PutPlayerInVehicle(playerid,Auto21[playerid],0);
slot[playerid]=2;
new string[128];
Auto2[playerid]=1;
format(string,sizeof(string),"Sie haben ein Auto auf Slot %i gespawnt 1.Farbe: %i 2.Farbe: %i",slot[playerid],rand1,rand2);
SendClientMessage(playerid,0xddaaffff,string);
}
else if(Auto3[playerid]== 999)
{
Auto31[playerid]=CreateVehicle(vID,X,Y,Z,Roat,rand1,rand2,-1);
PutPlayerInVehicle(playerid,Auto31[playerid],0);
Auto3[playerid]=1;
slot[playerid]=3;
new string[128];
format(string,sizeof(string),"Sie haben ein Auto auf Slot %i gespawnt 1.Farbe: %i 2.Farbe: %i",slot[playerid],rand1,rand2);
SendClientMessage(playerid,0xddaaffff,string);
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Sie Haben sich schon 3 Autos gerufe /ruf[1-3]um es zu holen");
}
return 1;
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Benutze /v [VehicleID(400-611)]");
}
return 1;
}
if(strcmp(strget(cmdtext,0),"/delslot",true)==0)
{
new slot1 = strval(strget(cmdtext,1));
if(slot1 == 1){
if(Auto1[playerid]!=999){
DestroyVehicle(Auto11[playerid]);
Auto1[playerid]=999;
SendClientMessage(playerid,0xddaaffff,"Slot 1 ist nun frei");
}
else
{
SendClientMessage(playerid,0xddaaffff,"Slot 1 ist schon frei");
}
}
else if(slot1 == 2){
if(Auto1[playerid]!=999){
DestroyVehicle(Auto21[playerid]);
Auto2[playerid]=999;
SendClientMessage(playerid,0xddaaffff,"Slot 2 ist nun frei");
}
else
{
SendClientMessage(playerid,0xddaaffff,"Slot 2 ist schon frei");
}
}
else if(slot1 == 3){
if(Auto1[playerid]!=999){
DestroyVehicle(Auto31[playerid]);
Auto3[playerid]=999;
SendClientMessage(playerid,0xddaaffff,"Slot 3 ist nun frei");
}
else
{
SendClientMessage(playerid,0xddaaffff,"Slot 3 ist schon frei");
}
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Benutze /delslot [Slot (1-3)]");
}
return 1;
}
if(strcmp(strget(cmdtext,0),"/ruf",true)==0)
{
new slot1 = strval(strget(cmdtext,1));
new Float:X,Float:Y,Float:Z,Float:Roat;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Roat);
if(slot1 == 1)
{
if(Auto1[playerid] != 999)
{
PutPlayerInVehicle(playerid,Auto11[playerid],0);
SetVehiclePos(Auto11[playerid],X,Y,Z);
new string[128];
format(string,sizeof(string),"Sie haben Slot %i gerufen",slot1);
SendClientMessage(playerid,0xddaaffff,string);
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Slot nicht besetzt");
}
}
else if(slot1 == 2)
{
if(Auto2[playerid] != 999)
{
PutPlayerInVehicle(playerid,Auto21[playerid],0);
SetVehiclePos(Auto21[playerid],X,Y,Z);
new string[128];
format(string,sizeof(string),"Sie haben Slot %i gerufen",slot1);
SendClientMessage(playerid,0xddaaffff,string);
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Slot nicht besetzt");
}
}
else if(slot1 == 3)
{
if(Auto3[playerid] != 999)
{
PutPlayerInVehicle(playerid,Auto31[playerid],0);
SetVehiclePos(Auto31[playerid],X,Y,Z);
new string[128];
format(string,sizeof(string),"Sie haben Slot %i gerufen",slot1);
SendClientMessage(playerid,0xddaaffff,string);
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Slot nicht besetzt");
}
}
else
{
SendClientMessage(playerid,0xffaaffaa,"Benutze /ruf [Slot (1-3)]");
}
return 1;
}
Und jetzt das erwünschte Namen anzeigen:
for(new i=0; i<MAX_PLAYERS; i++)
{
if(vehicleid == Auto21[i]||vehicleid == Auto31[i]||vehicleid == Auto11[i])
{
if(IsPlayerConnected(i))
{
if(playerid == i)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(i,pname,sizeof(pname));
new carstr[128];
format(carstr,sizeof(carstr),"Willkommen zurück in ihrem Auto: %s",pname);
SendClientMessage(playerid,0xffaaffaa,carstr);
}
else
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(i,pname,sizeof(pname));
new carstr[128];
format(carstr,sizeof(carstr),"Das Auto gehört nicht ihnen.Es gehört %s",pname);
SendClientMessage(playerid,0xffaaffaa,carstr);
}
}
else
{
DestroyVehicle(Auto31[i]);
DestroyVehicle(Auto21[i]);
DestroyVehicle(Auto11[i]);
SendClientMessage(i,0xddaaffff,"Owner war offline und wurde daher gelöscht");
}
}
}
und zum Schluss noch das das mit strget und den befehlen geht einfach nach der letzten Klammer im Script:
stock strget(strx[], pos, search = ' ') {
new arg, ret[128], idxx;
for (new i = 0; i < strlen(strx); i++) {
if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
arg++;
if (arg == pos + 1){
ret[i-idxx] = EOS;
return ret;
} else if (arg == pos)
idxx= i+1;
}
else if (arg == pos)
ret[i - idxx] = strx[i];
}
return ret;
}
Hat zwar ein stück gedauert ber hoffe konnte helfen
Gruß Blackybecks ![love :love:](https://breadfish.de/wcf/images/smilies/emojione/1f60d.png)