Jump to content

[TUT]Verwijderbare objecten en voertuigen maken


David22

Recommended Posts

Tutorial



Verwijderbare objecten en voertuigen maken


Welkom!

Je kent het vast wel: heb je een leuk filterscript gemaakt waarmee je wat voertuigen en objecten plaatst, verdwijnen ze niet als je het filterscript unload! Gelukkig is daar wat simpels voor te maken, en hoe je dat doet leg ik uit in deze tutorial!


Okay, voordat het werkelijke scriptwerk begint, hebben we twee variabelen nodig.

CreateObject(18449, -531.890564, -144.243698, 68.263382, 0.0000, 22.3454, 269.7592);
CreateObject(10757, -568.168640, -180.696716, 82.207024, 30.9397, 355.7028, 122.0311);
CreateObject(16409, -532.680664, -100.009903, 83.704559, 0.0000, 0.0000, 89.0631);
CreateObject(2780, -538.811340, -108.151123, 83.677376, 0.0000, 0.0000, 0.0000);
CreateObject(2780, -525.228394, -106.688660, 83.685410, 0.0000, 0.0000, 0.0000);
CreateObject(7419, -1254.041748, 178.796753, 6.887449, 0.0000, 0.0000, 45.0000);
CreateObject(2780, -1269.653931, 129.249191, 13.148438, 0.0000, 0.0000, 0.0000);
CreateObject(2780, -1260.302124, 117.892700, 13.148438, 0.0000, 0.0000, 0.0000);
CreateObject(17058, -723.188721, 987.671143, 11.114426, 0.0000, 0.0000, 270.0000);
CreateObject(971, -723.326050, 1002.465393, 10.924068, 0.0000, 0.0000, 0.0000);
CreateObject(1411, -723.119629, 1002.380249, 16.087168, 0.0000, 0.0000, 180.0000);
CreateObject(1696, -723.119629, 956.280518, 12.140042, 0.0000, 0.0000, 0.0000);
CreateObject(2780, -719.088684, 948.644165, 11.132813, 0.0000, 0.0000, 0.0000);
CreateObject(2780, -726.397461, 949.101013, 11.215046, 0.0000, 0.0000, 0.0000);
CreateObject(3461, -565.290161, -179.846405, 79.978760, 0.0000, 0.0000, 0.0000);
CreateObject(3461, -562.322144, -182.661942, 76.799942, 0.0000, 340.2330, 73.9115);
CreateObject(3461, -565.504822, -175.635361, 79.273697, 0.0000, 0.0000, 0.0000);
CreateObject(3267, -439.887939, -68.630669, 57.696949, 0.0000, 0.0000, 123.7500);
CreateObject(3267, -439.733734, -58.771431, 57.590263, 0.0000, 0.0000, 56.2500);
CreateObject(18248, -472.388763, -85.738281, 66.895912, 0.0000, 0.0000, 270.0000);
CreateObject(18450, -1063.468628, 336.187775, 12.685352, 0.0000, 0.0000, 326.2500);
CreateObject(18450, -1001.973328, 294.993164, 12.726391, 0.0000, 0.0000, 326.2500);
CreateObject(18450, -942.352417, 255.150513, 12.713346, 0.0000, 0.0000, 326.2500);
CreateObject(18450, -875.921753, 210.762375, 12.721890, 0.0000, 0.0000, 326.2500);
CreateObject(18450, -810.246826, 166.857025, 4.403103, 0.0000, 12.0321, 326.2500);
CreateObject(4870, -946.920593, 520.640625, 13.184609, 0.0000, 0.0000, 225.0000);
CreateObject(4870, -826.310791, 641.242859, 13.138460, 0.0000, 0.0000, 225.0000);
CreateObject(3461, -688.079346, 931.390991, 20.764534, 0.0000, 0.0000, 0.0000);
CreateObject(1451, -700.960632, 945.600952, 12.179315, 0.0000, 0.0000, 213.7500);
CreateObject(1312, -691.576050, 685.758850, 19.823063, 0.0000, 0.0000, 258.7500);
CreateObject(978, -775.843201, 720.647522, 18.054016, 0.0000, 0.0000, 225.0000);
CreateObject(16480, -703.594055, 901.298096, 14.225965, 0.0000, 0.0000, 326.2500);
CreateObject(1681, -1373.006836, 119.500229, 16.126463, 0.0000, 0.0000, 0.0000);
CreateObject(1682, -1252.160278, 58.901104, 25.446415, 0.0000, 0.0000, 45.0000);
CreateObject(12986, -1286.984009, 64.705536, 14.671068, 0.0000, 0.0000, 90.0000);
CreateObject(1634, -1252.099121, 200.933014, 28.708090, 0.0000, 0.0000, 0.0000);
AddStaticVehicle(415,-1246.0798,67.3544,13.9075,45.2712,-1,-1); // cheetah 1
AddStaticVehicle(415,-1265.0505,94.9274,13.9182,132.6222,-1,-1); // cheetah 2
AddStaticVehicle(415,-1280.8721,58.8457,13.9197,341.9323,-1,-1); // cheetah 3
AddStaticVehicle(415,-1281.5247,137.2139,14.3180,142.2358,-1,-1); // cheetah 4
AddStaticVehicle(415,-1299.4443,174.1530,13.9204,316.5008,-1,-1); // cheetah 5
AddStaticVehicle(415,-1110.6226,351.6973,14.2697,143.0047,-1,-1); // cheetah 6
AddStaticVehicle(415,-1040.3781,447.1841,14.3167,161.1771,-1,-1); // cheetah 7
AddStaticVehicle(415,-738.8785,711.2610,17.7923,81.4575,-1,-1); // cheetah 8
AddStaticVehicle(415,-697.8035,928.7279,12.0611,187.6023,-1,-1); // cheetah 9
AddStaticVehicle(415,-448.1937,606.5637,16.6629,138.8947,-1,-1); // cheetah 10
AddStaticVehicle(481,-378.2030,549.6870,15.9394,270.0285,-1,-1); // bmx 1
AddStaticVehicle(481,-148.2919,568.3095,3.8931,202.0962,-1,-1); // bmx 2
AddStaticVehicle(481,-199.9771,205.2498,11.0562,76.5678,-1,-1); // bmx 3
AddStaticVehicle(468,-230.4081,135.4944,2.0503,89.1511,-1,-1); // sanchez 1
AddStaticVehicle(468,-316.5216,7.6442,5.0018,258.6052,-1,-1); // sanchez 2
AddStaticVehicle(468,-257.7255,247.6704,8.6487,264.6925,-1,-1); // sanchez 3
AddStaticVehicle(468,-540.0297,289.3087,1.7466,93.3793,-1,-1); // sanchez 4
AddStaticVehicle(468,-703.7765,225.9043,2.2391,95.6326,-1,-1); // sanchez 5
AddStaticVehicle(596,-852.3827,201.9853,13.8830,59.7318,-1,-1); // police car 1
AddStaticVehicle(466,-859.4181,205.8807,13.9034,56.2140,-1,-1); // glendale 1
AddStaticVehicle(596,-865.6656,208.7127,13.7868,25.0977,-1,-1); // police car 2
AddStaticVehicle(596,-1101.3206,418.7402,13.9984,308.2130,-1,-1); // police car 3
AddStaticVehicle(478,-1235.3409,225.6927,14.1417,45.2991,-1,-1); // walton 1
AddStaticVehicle(478,-1302.0500,217.9082,14.2567,311.6055,-1,-1); // walton 2
AddStaticVehicle(478,-978.1595,499.4880,14.2626,314.2122,-1,-1); // walton 3
AddStaticVehicle(478,-909.2534,548.6572,14.2583,314.2584,-1,-1); // walton 4
AddStaticVehicle(478,-777.7755,722.2853,18.2111,314.7246,-1,-1); // walton 4
AddStaticVehicle(429,-710.6606,902.5749,12.1490,102.6387,-1,-1); // banshee 1
AddStaticVehicle(429,-141.2498,565.3396,15.5928,281.3436,-1,-1); // banshee 2
AddStaticVehicle(429,-219.4510,168.5342,5.6047,336.4668,-1,-1); // banshee 3
AddStaticVehicle(532,-192.4453,149.0722,6.5522,269.7409,-1,-1); // combine 1
AddStaticVehicle(532,-173.1747,59.7661,4.0871,112.1821,-1,-1); // combine 2
AddStaticVehicle(422,-242.6467,106.5920,1.4693,29.0543,-1,-1); // bobcat 1
AddStaticVehicle(429,-505.1876,-197.7580,78.0851,2.8563,-1,-1); // banshee 4
AddStaticVehicle(493,-220.1744,290.1382,-0.2335,90.6052,-1,-1); // jetmax 1
AddStaticVehicle(493,-651.8765,868.2969,-0.1179,227.5410,-1,-1); // jetmax 2
AddStaticVehicle(493,-1110.3754,326.8241,-0.1758,346.9234,-1,-1); // jetmax 3
AddStaticVehicle(468,-970.5850,266.4257,13.9275,52.0427,-1,-1); // sanchez
AddStaticVehicle(468,-894.4867,581.9889,13.9399,319.9369,-1,-1); // sanchez
AddStaticVehicle(415,-681.1357,927.3202,11.9162,180.3011,-1,-1); // cheetah 11
AddStaticVehicle(415,-665.4614,939.6400,11.9039,178.2806,-1,-1); // cheetah 12
AddStaticVehicle(415,-675.4451,946.6476,11.9057,358.5767,-1,-1); // cheetah 13
AddStaticVehicle(415,-670.5839,946.5580,11.9027,1.0754,-1,-1); // cheetah 14
AddStaticVehicle(415,-713.4785,974.6740,12.0760,174.2127,-1,-1); // cheetah 15
AddStaticVehicle(555,-824.9886,795.2200,17.6882,174.5484,-1,-1); // windsor 1
AddStaticVehicle(555,-677.2943,661.9299,16.3188,270.3123,-1,-1); // windsor 2
AddStaticVehicle(540,-541.8388,-99.6982,63.2608,350.0063,-1,-1); // vincent
AddStaticVehicle(540,-485.4763,-75.3216,60.7744,357.3389,-1,-1); // vincent 2
AddStaticVehicle(401,-436.9603,-72.4894,58.7233,81.8564,-1,-1); // bravura
AddStaticVehicle(571,-549.8361,-45.2632,63.0628,282.8861,-1,-1); // kart
AddStaticVehicle(571,-446.3446,-57.2444,58.6188,92.1363,-1,-1); // kart 2
AddStaticVehicle(551,-452.4746,-47.0027,59.5798,356.7180,-1,-1); // merit
AddStaticVehicle(551,-351.9323,172.9244,6.0030,262.8865,-1,-1); // merit 2
AddStaticVehicle(551,-200.3244,219.0175,11.8002,328.8337,-1,-1); // merit 3
AddStaticVehicle(547,-203.6881,255.1527,11.9097,345.3012,-1,-1); // primo
AddStaticVehicle(547,-115.2471,535.3886,6.9055,89.5871,-1,-1); // primo 2
AddStaticVehicle(547,-107.6367,578.9495,3.2030,194.6143,-1,-1); // primo 3

Zoals je ziet worden hier de AddStaticVehicle en AddObject-functies gebruikt. Deze functies gaan wij ombuigen naar de CreateDeletableVehicle en CreateDeletableObject-functies. Maar voordat we dat doen, moeten we eerst de gamemode vertellen dat de objecten en voertuigen die we maken met CreateObject en AddStaticVehicle / CreateVehicle. Dit doen we door aan te nemen dat elk voertuig en object hiermee is gemaakt, en later de uitzonderingen toe te voegen.

public Instellingen() //de functie Instellingen code geven
{
for(new i = 0; i <= MAX_VEHICLES; i++) //Als i nog kleiner is als 700, voer de code dan uit en maak i er eentje groter
{
	VerwijderbareAuto[i] = 0; //Het is geen verwijderbare auto.
}
for(new j = 0; j <= MAX_OBJECTS; j++) //Als j kleiner is als 150, voer de code dan uit en maak j er eentje groter
{
	VerwijderbaarObject[j] = 0; //Het is geen verwijderbaar object
}
}

Nu gaan we de CreateDeletableVehicle, CreateDeletableObject, CreateAllVehicles, CreateAllObjects, DeleteAllVehicles en DeleteAllObjects functies maken. Omdat het nogal moeilijk is om dit zin voor zin uit te leggen, plaats ik de code maar even op een andere manier, namelijk met commentaar erbij.

public CreateDeletableVehicle(modelid, Float:x, Float:y,Float:z, Float:angle, color1, color2)
{
// De functie CreateDeletableVehicle maken
new vehid;
// Een variabele maken om het id van het voertuig in op te slaan
vehid = AddStaticVehicle(modelid, x, y, z, angle, color1, color2);
// Het voertuig neerzetten
VerwijderbareAuto[vehid] = 1;
// Het voertuig is verwijderbaar.
return vehid;
// Het id van het voertuig returnen.
}

public CreateDeletableObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ)
{
// De functie CreateDeletableObject maken
new obid;
// Variabele maken om het id van het object in op te slaan
obid = CreateObject(modelid, X, Y, Z, rX, rY, rZ);
// Het object maken
VerwijderbaarObject[obid] = 1;
// Het object is verwijderbaar
return obid;
// Het id van het net gemaakte object returnen.
}

public DeleteAllVehicles()
{
// De functie DeleteAllVehicles maken
for(new i = 0; i <= MAX_VEHICLES; i++)
// Maak de nieuwe variabele i aan, als deze kleiner is als 700 is wordt de code uitgevoerd en 1 bij i opgeteld.
{
	if(VerwijderbareAuto[i] == 1)
	// Als de auto verwijderbaar is...
	{
		DestroyVehicle(i);
		// De auto verwijderen
		VerwijderbareAuto[i] = 0;
		// De auto is niet meer verwijderbaar
	}
}
}

public DeleteAllObjects()
{
// De functie DeleteAllObjects maken
for(new i = 0; i <= MAX_OBJECTS; i++)
// Maak de nieuwe variabele i aan, als deze kleiner is als 150 is wordt de code uitgevoerd en 1 bij i opgeteld.
{
	if(VerwijderbaarObject[i] == 1)
	// Als het object verwijderbaar is...
	{
		DestroyObject(i);
		// Het object verwijderen
		VerwijderbaarObject[i] = 0;
		// Het object is niet meer verwijderbaar
	}
}
}

Dit zijn de belangrijkste functies. Nu moeten we alleen nog de CreateAllVehicles en CreateAllObjects functie's toevoegen, maar de inhoud van deze functies hangt compleet af van welke objecten en voertuigen je wil maken. Maar, je moet de objecten en voertuigen toevoegen in deze functie! Als je dit doet kan je namelijk de objecten en voertuigen ook verwijderen met bijvoorbeeld een command! Deze functies zien er dus ongeveer zo uit:

public CreateAllVehicles()
{
CreateDeletableVehicle(415,-1246.0798,67.3544,13.9075,45.2712,-1,-1); // cheetah 1
CreateDeletableVehicle(415,-1265.0505,94.9274,13.9182,132.6222,-1,-1); // cheetah 2
return 1;
}

public CreateAllObjects()
{
CreateDeletableObject(12986, -1286.984009, 64.705536, 14.671068, 0.0000, 0.0000, 90.0000);
CreateDeletableObject(1634, -1252.099121, 200.933014, 28.708090, 0.0000, 0.0000, 0.0000);
return 1;
}

Nu rest ons nog een ding: we moeten de objecten en voertuigen laten maken / spawnen als het filterscript geladen wordt. Dit doen we in de OnFilterscriptInit-callback:

public OnFilterscriptInit()
{
CreateAllVehicles();
CreateAllObjects();
return 1;
}

Hoewel, het is ook wel handig als de voertuigen verdwijnen als je het filterscript unload. Dat kan bij de OnFilterscriptExit-callback:

public OnFilterscriptExit()
{
DeleteAllVehicles();
DeleteAllObjects();
return 1;
}

Waarom gebruik je forwards en publics?

Vrij simpel. Dit is niet per se nodig, maar als je ooit eens een timer of iets dergelijks wil toepassen op een van deze functies is het wel nodig. Dit is dus simpelweg om moeite in de toekomst te besparen :Y.

HINT: Voertuigen verwijderen met een command:

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/delete", cmdtext, true) == 0)
{
	DeleteAllVehicles();
			DeleteAllObjects();
	return 1;
}
return 0;
}


Als je alles bij elkaar gooit, komt het script er zo uit te zien:

Klik! :)


Veel succes ermee, en mocht er iets niet duidelijk zijn, vraag het gerust! :)

Bewerkt: door David22
Link to comment
Delen op andere websites

#define SCRIPT_VEHICLES 10 // dit getal pas je aan naar het aantal auto's

new Vehicle[SCRIPT_VEHICLES];

public OnFilterScriptInit()
{
Vehicle[0] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[1] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[2] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[3] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[4] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[5] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[6] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[7] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[8] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
Vehicle[9] = CreateVehicle(427, 0.0, 0.0, 10.0, 90.0, -1, -1, 600);
return 1;
}

public OnFilterScriptExit()
{
for(new i = 0; i <= sizeof(Vehicle); i++)
{
	DestroyVehicle(Vehicle[i]);
}
return 1;
}

Het zelfde geldt uiteraard voor objects. Hier maak je dan bv een array voor aan genaamd Object o.i.d.

Link to comment
Delen op andere websites

[...]

Kan ook, maar ik vind mijn methode simpeler ^_^.

Meningen verschillen. Die van BB is toch veel korter.

Ja, maar als je het systeem eenmaal hebt, is mijn methode simpeler. Bij die van Big Boss moet je namelijk telkens de variabele wijzigen als je een nieuw voertuig / object wil toevoegen, en bij de van mij hoef je alleen maar een aparte functie te gebruiken :Y.

Link to comment
Delen op andere websites

  • 8 maanden later...

Ik heb een command in dcmd:

dcmd_veh(playerid, params[])

{

new Float:x, Float:y, Float:z;

GetPlayerPos(playerid, x, y, z);

new Float:angle;

new vehid;

new color1;

new color2;

if(adminlevel[playerid] >= 2)

{

if(sscanf(params, "i,i,i", vehid,color1,color2))

{

SendClientMessage(playerid, COLOR_DRED, "USAGE: /veh <carid> <color1> <color2>");

return 1;

}

AddStaticVehicle(vehid, x, y, z, angle, color1, color2);

SendClientMessage(playerid, COLOR_GREEN, "You've spawned a vehicle!");

}

return 1;

}

Werkt perfect! Maare, die auto's blijven dus niet staan.

Hoe zorg ik er nou voor dat ze juist blijven staan, en niet dat ze bijv. verwijderbaar zijn?

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...