[TUT]Verwijderbare objecten en voertuigen maken
Featured Replies
Recent actief 0
- Er zijn hier geen geregistreerde gebruikers aanwezig.
Een betere weg om onze GTA community te volgen. Leer meer.
Een volledig scherm app op het beginscherm inclusief notificaties, badges en meer.
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.
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
.
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