[Help] Locate vehicle
#1

How do I detect a file that contains the name of a user inside it? Let me explain, is that I have a system of ownership with saved to the user's data and I want it to be able to locate the vehicle that is its property (its name is stored in the saved file)

Code:
stock RefreshCar(iVehicleID)
{
	new iStr[22];
	format(iStr, sizeof(iStr), "Vehiculos/%d.ini", iVehicleID);
	new INI:VArch = INI_Open(iStr);

	INI_SetTag(VArch,"data");
	INI_WriteInt(VArch,"Modelo", InfoVeh[iVehicleID][vModelo]);
	INI_WriteInt(VArch,"Color1", InfoVeh[iVehicleID][vColor1]);
	INI_WriteInt(VArch,"Color2", InfoVeh[iVehicleID][vColor2]);
	INI_WriteInt(VArch,"Precio", InfoVeh[iVehicleID][vPrecio]);
	INI_WriteString(VArch,"Dueсo", InfoVeh[iVehicleID][vComprador]); ///////////
	INI_WriteFloat(VArch,"vVida", InfoVeh[iVehicleID][vVida]);
	INI_WriteFloat(VArch,"vPosX", InfoVeh[iVehicleID][vPosX]); ///////////
	INI_WriteFloat(VArch,"vPosY", InfoVeh[iVehicleID][vPosY]); ///////////
	INI_WriteFloat(VArch,"vPosZ", InfoVeh[iVehicleID][vPosZ]); ///////////
	INI_WriteFloat(VArch,"vPosA", InfoVeh[iVehicleID][vPosA]);
	INI_WriteInt(VArch,"vKilometros", InfoVeh[iVehicleID][vKilometros]);
	INI_WriteInt(VArch,"vGasolina", InfoVeh[iVehicleID][vGasolina]);
	INI_WriteString(VArch,"Placa", InfoVeh[iVehicleID][vPlaca]);
	INI_WriteInt(VArch,"PaintJ", InfoVeh[iVehicleID][vPintadoJ]);
	// Guardar DAСO
	INI_WriteInt(VArch,"Damage_Panel", InfoVeh[iVehicleID][vDamage][0]);
	INI_WriteInt(VArch,"Damage_Puertas", InfoVeh[iVehicleID][vDamage][1]);
	INI_WriteInt(VArch,"Damage_Luces", InfoVeh[iVehicleID][vDamage][2]);
	INI_WriteInt(VArch,"Damage_Ruedas", InfoVeh[iVehicleID][vDamage][3]);
	// Guardar TUNING
	INI_WriteInt(VArch,"vMod1", vMods[iVehicleID][0]);
	INI_WriteInt(VArch,"vMod2", vMods[iVehicleID][1]);
	INI_WriteInt(VArch,"vMod3", vMods[iVehicleID][2]);
	INI_WriteInt(VArch,"vMod4", vMods[iVehicleID][3]);
	INI_WriteInt(VArch,"vMod5", vMods[iVehicleID][4]);
	INI_WriteInt(VArch,"vMod6", vMods[iVehicleID][5]);
	INI_WriteInt(VArch,"vMod7", vMods[iVehicleID][6]);
	INI_WriteInt(VArch,"vMod8", vMods[iVehicleID][7]);
	INI_WriteInt(VArch,"vMod9", vMods[iVehicleID][8]);
	INI_WriteInt(VArch,"vMod10", vMods[iVehicleID][9]);
	INI_WriteInt(VArch,"vMod11", vMods[iVehicleID][10]);
	INI_WriteInt(VArch,"vMod12", vMods[iVehicleID][11]);
	INI_WriteBool(VArch,"Usado", InfoVeh[iVehicleID][vUsado]);
	INI_WriteInt(VArch,"Cerrado", InfoVeh[iVehicleID][vCerrado]);
	INI_WriteInt(VArch,"Interior", InfoVeh[iVehicleID][vInt]);
	INI_WriteInt(VArch,"VirtualWorld", InfoVeh[iVehicleID][vVW]);

	INI_Close(VArch);
 	return 1;
}
Reply
#2

I dont think you have to open file and check each and every file whether its owned by certain individual since data is already stored inside "InfoVeh" you can loop through all vehicles look if the car is owned by that certain individual

this is how to do it...

pawn Code:
new VehicleNames[212][64] =
{
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Pereniel", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Mr 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", "ZR3 50", "Walton",
    "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage",
    "Dozer", "Maverick", "News Chopper", "Rancher", "FBI Rancher", "Virgo",
    "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact",
    "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
    "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
    "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle",
    "Cropdust", "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 A",
    "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance",
    "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight", "Trailer",
    "Kart", "Mower", "Duneride", "Sweeper", "Broadway", "Tornado", "AT-400",
    "DFT-30", "Huntley", "Stafford", "BF-400", "Newsvan", "Tug", "Trailer A",
    "Emperor", "Wayfarer", "Euros", "Hotdog", "Club", "Trailer B", "Trailer C",
    "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)",
    "Police Car (SFPD)", "Police Car (LVPD)", "Police Ranger", "Picador",
    "S.W.A.T. Van", "Alpha", "Phoenix", "Glendale", "Sadler",
    "Luggage Trailer A", "Luggage Trailer B", "Stair Trailer",
    "Boxville", "Farm Plow", "Utility Trailer"
};

stock GetVehicleModelName(modelid) //this function helps to gets model name by id from the variable i have just added above
{
    new vname[sizeof VehicleNames[]];
    if (400 <= modelid <= 611) strcat(vname, VehicleNames[modelid - 400], sizeof vname);
    return vname;
}

/*
Lets just start by this, we have to get something of a vehicle which differs from other vehicle such as id or plate, lets use plate since its more realstic for RP Server
*/


CMD:myvehicles(playerid, params[]) //If you already have this cmd please consider removing it
{
    new pname[MAX_PLAYER_NAME+1],
        string[250],
        count = 0;
    GetPlayerName(playerid, pname, sizeof(pname));
    for(new v = 0; v < MAX_VEHICLES; v++) //Looping through all vehicles
    {
        if(!strcmp(pname, InfoVeh[v][vComprador], true)) //If playername and vehicle owner name is same
        {
            format(string, sizeof(string), "Vehicle Name: %s | Plate: %s", GetVehicleModelName(InfoVeh[v][vModelo]), InfoVeh[v][vPlaca]); //formating a message with vehicle name and plate
            SendClientMessage(playerid, -1, string); //sending the formatted message
            count ++; //counting total vehicles found under player name
        }
    }
    if(count == 0) //If there are no vehicle found owned under the name of player who used /myvehicles
    {
        SendClientMessage(playerid, -1, "No vehicle found registered on your name");
    }
    return 1;
}

/*
Ok so we are done getting vehicle owned under the player name lets move to second cmd, which is /tracevehicle, keep in mind you have to get plate name first using /myvehicles
*/


CMD:tracevehicle(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, -1, "/tracevehicle [plate]"); //if tracevehicle "plate" is empty
    new pname[MAX_PLAYER_NAME+1],
    count = 0;
    GetPlayerName(playerid, pname, sizeof(pname));
    for(new v = 0; v < MAX_VEHICLES; v++) //Looping through all vehicles
    {
        if(!strcmp(params, InfoVeh[v][vPlaca], true)) //if any vehicle is found under the plate
        {
            if(!strcmp(pname, InfoVeh[v][vComprador], true)) //If playername and vehicle owner name is same
            {
                new Float:x, Float:y, Float:z;
                GetVehiclePos(v, x, y, z); //Getting position of the vehicle
                SetPlayerCheckpoint(playerid, x, y, z, 5.0); //creating a checkpoint for player, you can replace it with something else if you want
            }
            else SendClientMessage(playerid, -1, "This vehicle is not owned by you"); //if vehicle is not owned by the person who used this cmd
            count ++; //checking if any vehicle is registered under that plate
        }
    }
    if(count == 0) //If there are no vehicle found owned under that plate
    {
        SendClientMessage(playerid, -1, "Invalid Plate Number");
    }
    return 1;
}
Reply
#3

Excellent, thanks for the help.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)