Mein System, doch es ist etwas Buggy, Überschrift sagt alles.
enum dtc_PlayerCar
{
CarId,
CarOwner[MAX_PLAYER_NAME],
CarModel,
Float:CarPos_x,
Float:CarPos_y,
Float:CarPos_z,
Float:CarRotate,
CarNitro,
CarHyd,
CarWheel,
CarAusp,
CarSideL,
CarSideR,
CarFB,
CarRB,
CarSpoiler,
CarRoof,
CarHood,
CarVents,
CarLamps,
CarPJ,
CarC1,
CarC2,
CarPreis,
CarPlate,
CarNumber[32],
CarGesperrt,
CarSperrpreis
};forward GetOwner(veh);
public GetOwner(veh)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
for(new x = 0; x < MaxVeh; x++)
{
if(PlayerCar[i][x][CarId] == veh){return i;}
}
}
return 555;
}
stock KZExistiert(string[])
{
for(new v=0;v<max_vehicles;v++)
{
if(IsADtCar(v))
{
for(new x=0;x<maxveh;x++)
{
for(new i=0;i<max_players;i++)
{
if(IsPlayerConnected(i))
{
if(strcmp(string,PlayerCar[i][x][CarNumber],true)==0)
{
return 1;
}
}
}
}
}
}
return 0;
}
stock GetCarFromKZ(string[])
{
for(new v=0;v<max_vehicles;v++)
{
if(IsADtCar(v))
{
for(new x=0;x<maxveh;x++)
{
for(new i=0;i<max_players;i++)
{
if(IsPlayerConnected(i))
{
if(strcmp(PlayerCar[i][x][CarNumber],string,true)==0)
{
return PlayerCar[i][x][CarId];
}
}
}
}
}
}
return 0;
}
stock IsDtCarGesperrt(vehicle)
{
for(new i=0;i<max_players;i++)
{
if(IsADtCar(vehicle))
{
for(new x=0;x<maxveh;x++)
{
if(IsPlayerConnected(i))
{
if(vehicle == PlayerCar[i][x][CarId])
{
if(PlayerCar[i][x][CarGesperrt] == 1)
{
return 1;
}
}
}
}
}
}
return 0;
}if (strcmp("/carlist", cmdtext, true)==0)
{
if(Dtc_PlayerHaveCar[playerid][0] && !Dtc_PlayerHaveCar[playerid][1])
{
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
format(string,sizeof(string),"Fahrzeug: %s || Kennzeichen: %s",CarName[PlayerCar[playerid][0][CarModel]-400],PlayerCar[playerid][0][CarNumber]);
SendClientMessage(playerid,0x00FFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
}
if(Dtc_PlayerHaveCar[playerid][1] && !Dtc_PlayerHaveCar[playerid][0])
{
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
format(string,sizeof(string),"Fahrzeug: %s || Kennzeichen: %s",CarName[PlayerCar[playerid][1][CarModel]-400],PlayerCar[playerid][1][CarNumber]);
SendClientMessage(playerid,0x00FFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
}
if(Dtc_PlayerHaveCar[playerid][0] && Dtc_PlayerHaveCar[playerid][1])
{
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
format(string,sizeof(string),"Fahrzeug: %s || Kennzeichen: %s",CarName[PlayerCar[playerid][0][CarModel]-400],PlayerCar[playerid][0][CarNumber]);
SendClientMessage(playerid,0x00FFFFFF,string);
format(string,sizeof(string),"Fahrzeug: %s || Kennzeichen: %s",CarName[PlayerCar[playerid][1][CarModel]-400],PlayerCar[playerid][1][CarNumber]);
SendClientMessage(playerid,0x00FFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,">> Carliste <<");
}
if(!Dtc_PlayerHaveCar[playerid][0] && !Dtc_PlayerHaveCar[playerid][1])
{
SendClientMessage(playerid,0xFF0000FF,"Du hast garkein Fahrzeug!");
}
return 1;
}
if(strcmp(cmd,"/freikaufen",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,2.5,930.9573,-1207.6936,17.1938))
{
if(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarGesperrt] == 1)
{
if(GetPlayerMoney(playerid) >= PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis])
{
GivePlayerMoney(playerid,-PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis]);
format(string,256,"Du hast deinen %s für %d$ wieder frei gekauft. Hoffentlich kommt das nicht noch einmal vor.",CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis]);
SendClientMessage(playerid,0x00FFFFFF,string);
PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarGesperrt] = 0;
FraktionsKasse[23] += PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis];
new xx[MAX_PLAYER_NAME];
GetPlayerName(playerid,xx,sizeof(xx));
format(string,256,"%s hat sein Fahrzeug (%s) für %d$ freigekauft. Das Geld wurde auf die Fraktionskasse überwiesen.",xx,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis]);
SendRadioMessage(24, TEAM_BLUE_COLOR, string);
PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarSperrpreis]=0;
SetVehiclePos(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],937.4331,-1226.2257,16.5307);
SetVehicleZAngle(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],180);
PutPlayerInVehicle(playerid,PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],0);
return 1;
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du hast nicht genug Geld.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Dieses Fahrzeug ist nicht gesperrt.");
SendClientMessage(playerid,0xFF0000FF,"Stelle sicher, dass du den richtigen Schlüssel ausgewählt hast.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist nicht am \"/freikaufen\"-Punkt.");
return 1;
}
}
if(strcmp(cmd,"/newschild",true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,2.5,1660.3594,-1282.4482,14.7665))
{
if(IsPlayerInAnyVehicle(playerid))
{
new car = GetPlayerVehicleID(playerid);
if(IsADtCar(car))
{
if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
{
if(car == PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId])
{
new rndzahl, stringg[32];
rndzahl = random(8999)+1000;
format(stringg,sizeof(stringg),"%d",rndzahl);
if(KZExistiert(stringg))
{
rndzahl = rndzahl-1;
format(stringg,sizeof(stringg),"%d",rndzahl);
}
PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPlate] = 1;
//format(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarNumber],sizeof(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarNumber]),"%d",rndzahl);
PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarNumber] = stringg;
format(string,sizeof(string),"Dein neues Kennzeichen ist: %d",rndzahl);
SendClientMessage(playerid,0x00FFFFFF,string);
new Float:CarX,Float:CarY,Float:CarZ,Float:CarA;
GetVehiclePos(car,CarX,CarY,CarZ);
GetVehicleZAngle(car,CarA);
DestroyVehicle(car);
PlayerCarSpawn(playerid,Dtc_PlayerKey[playerid]);
SetVehiclePos(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],CarX,CarY,CarZ);
SetVehicleZAngle(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],CarA);
PutPlayerInVehicle(playerid,PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId],0);
return 1;
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Das ist nicht dein Fahrzeug!");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du musst den richtigen Schlüssel ausgewählt haben!");
return 1;
}
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist in keinem Fahrzeug!");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist nicht am /newschild-Punkt.");
return 1;
}
}
if(strcmp(cmd,"/entsperrcar",true)==0)
{
if(IsPlayerInFrac(playerid,24))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xFF0000FF,"FEHLER: /entsperrcar [Kennzeichen]");
return 1;
}
new kz[32];
format(kz,sizeof(kz),"%s",tmp);
if(KZExistiert(kz))
{
new kzveh = GetCarFromKZ(kz);
if(IsDtCarGesperrt(kzveh))
{
new modell = GetVehicleModel(kzveh);
new gpid = GetOwner(kzveh);
new gpidname[MAX_PLAYER_NAME];
GetPlayerName(gpid,gpidname,sizeof(gpidname));
format(string,sizeof(string),"Du hast das Kennzeichen %s (User: %d || Name: %s || Fahrzeug: %s) entsperrt.",kz,gpid,gpidname,CarName[modell-400]);
SendClientMessage(playerid,0x00FFFFFF,string);
new pnn[MAX_PLAYER_NAME];
GetPlayerName(playerid,pnn,sizeof(pnn));
format(string,sizeof(string),"%s hat dein Fahrzeug %s entsperrt.",pnn,CarName[modell-400]);
SendClientMessage(gpid,0xFF0000FF,string);
for(new x=0;x<maxveh;x++)
{
if(strcmp(PlayerCar[gpid][x][CarNumber],kz,true)==0)
{
PlayerCar[gpid][x][CarGesperrt] = 0;
PlayerCar[gpid][x][CarSperrpreis]=0;
}
}
return 1;
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Dieses Fahrzeug ist nicht gesperrt.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Dieses Kennzeichen wurde nicht registriert.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist kein Ordnungsamtmitglied.");
return 1;
}
}
if(strcmp(cmd,"/sperrcar",true)==0)
{
if(IsPlayerInFrac(playerid,24))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xFF0000FF,"FEHLER: /sperrcar [Kennzeichen] [Preis] [Grund]");
return 1;
}
new kz[32];
format(kz,sizeof(kz),"%s",tmp);
if(KZExistiert(kz))
{
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
{
format(string,128,"FEHLER: /sperrcar %s [Sperrpreis] [Grund]",kz);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
new preis;
preis = strval(tmp);
if(preis >= 1)
{
tmp=strtok(cmdtext,idx);
if(!strlen(tmp))
{
format(string,128,"FEHLER: /sperrcar %s %d [Grund]",kz,preis);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
new grund[256];
format(grund,sizeof(grund),"%s",tmp);
new kzveh = GetCarFromKZ(kz);
if(!IsDtCarGesperrt(kzveh))
{
new modell = GetVehicleModel(kzveh);
new gpid = GetOwner(kzveh);
new gpidname[MAX_PLAYER_NAME];
GetPlayerName(gpid,gpidname,sizeof(gpidname));
format(string,sizeof(string),"Du hast das Kennzeichen %s (User: %d || Name: %s || Fahrzeug: %s) für %d$ mit folgendem Grund gesperrt: %s",kz,gpid,gpidname,CarName[modell-400],preis,grund);
SendClientMessage(playerid,0x00FFFFFF,string);
new pnn[MAX_PLAYER_NAME];
GetPlayerName(playerid,pnn,sizeof(pnn));
format(string,sizeof(string),"%s hat dein Fahrzeug %s mit dem Kennzeichen %s für %d$ mit folgendem Grund gesperrt: %s",pnn,CarName[modell-400],kz,preis,grund);
SendClientMessage(gpid,0xFF0000FF,string);
for(new x=0;x<maxveh;x++)
{
if(strcmp(PlayerCar[gpid][x][CarNumber],kz,true)==0)
{
PlayerCar[gpid][x][CarGesperrt] = 1;
PlayerCar[gpid][x][CarSperrpreis]=preis;
}
}
return 1;
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Dieses Fahrzeug ist bereits gesperrt.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Der Sperrpreis darf nicht unter 0 sein.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Dieses Kennzeichen wurde nicht registriert.");
return 1;
}
}
else
{
SendClientMessage(playerid,0xFF0000FF,"Du bist kein Ordnungsamtmitglied.");
return 1;
}
}CreatePickup(1239,1,930.9573,-1207.6936,17.1938,0); // /freikaufen- Punkt
CreatePickup(1239,1,1660.3594,-1282.4482,14.7665,0);// /newschild - Punkt
Create3DTextLabel("Hier kannst du ein Staatliches Kennzeichen beantragen,\nindem du den Befehl \"/newschild\" benutzt.\nWenn du kein Kennzeichen hast,\nkann es sein, dass dein Fahrzeug\nvom Ordnungsamt abgeschleppt wird.", 0xFF0000FF, 1660.3594,-1282.4482,16, 50, 0);
Create3DTextLabel("Hier kannst du dein Fahrzeug mit dem Befehl \n\"/freikaufen\"\nfrei kaufen,\nfalls es gesperrt ist.", 0xFF0000FF, 930.9573,-1207.6936,18, 50, 0);