Da ist so einiges falsch gewesen. Eine Funktion , die überprüft, ob man überhaupt ein Fahrzeug mit dem Kriterium findet würde es um einiges erleichtern.
new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
Würde zB. bei der Suche nach Namen immer crashen , weil vID nie einen Wert zugewiesen bekommt.
Ich hab das mal neu geschrieben :
static const pAllVehicleNames[][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
"Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
"Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
"Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
"Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
"Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
"Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
"Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
"Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
"FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
"Boxvillde", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
"Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
"Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
"Fortune", "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
"Blade", "Freight", "Streak", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
"Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
"Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
"Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
"Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car", "Police Car", "Police Car",
"Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
"Boxville", "Tiller", "Utility Trailer"
};
enum {
e_Not_Found = -1,
e_Multi_Match = -2
};
stock GetVehicleModelIDByName( vehiclename[] , &treffer) {
new
iModelID = 0;
treffer = 0;
for(new i ; i < sizeof( pAllVehicleNames ) ; i++) {
if(!strfind( pAllVehicleNames[i],vehiclename,true)) {
treffer++;
iModelID = 400 + i;
}
}
if( treffer == 0 ) {
return e_Not_Found;
}
else if( treffer > 1 ) {
return e_Multi_Match;
}
else {
return iModelID;
}
}
COMMAND:v(playerid,params[]) {
new
modelid;
if( sscanf(params,"d",modelid ) ) {
// keine Zahl, also suchen durchsuchen wir namen!
if( isnull(params) ) {
return SendClientMessage(playerid,0xFF0000FF,"USAGE: /v ( FahrzeugID / Name )");
}
new
iTreffer = 0,
string[128];
modelid = GetVehicleModelIDByName( params , iTreffer);
if( modelid == e_Multi_Match ) {
format(string,sizeof(string),"ERROR - Es wurden %d Fahrzeuge gefunden nach dem Suchkriterium '%s'.Bitte genauer suchen!",iTreffer, params);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
else if ( modelid == e_Not_Found ) {
format(string,sizeof(string),"ERROR - Es wurden kein Fahrzeug gefunden mit dem Suchkriterium '%s'.",params);
SendClientMessage(playerid,0xFF0000FF,string);
return 1;
}
// Wir haben die modelid gefunden!
// Rufen wir uns selber nochmal auf, dann brauch man den Code nicht kopieren!
// uns selber = /V
string[0] = '\0';
format(string,sizeof(string),"%d",modelid);
CallLocalFunction("cmd_v","ds",playerid,string);
}
else {
// Zahl eingegeben
// überprüfen
if( modelid < 400 || modelid > 611) return SendClientMessage(playerid,0xFF0000FF,"Nur Model-ID's von 400-611 benutzen!");
new
name[MAX_PLAYER_NAME],
string[128],
vehicleid,
Float:fX,
Float:fY,
Float:fZ;
GetPlayerPos( playerid, fX , fY , fZ);
GetPlayerName( playerid, name , sizeof(name) );
vehicleid = CreateVehicle( modelid, fX , fY , fZ , 0.0 , -1 , -1 , -1);
Adminauto[vehicleid] = 1;
SetVehicleNumberPlate( vehicleid ,"Admin Car"); // Erst sichtbar nach respawn!
SetVehicleHealth( vehicleid ,1000.0); // 1000.0 ist sowieso Standart - Sinn ???
PutPlayerInVehicle(playerid,vehicleid,0);
format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name, pAllVehicleNames[ modelid - 400 ] );
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Spieler[i][Admin] >= 1) SendClientMessage(i, 0xFF6347FF, string);
}
}
return 1;
}