Jump to content
View in the app

A better way to browse. Learn more.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tutorial Objecten



Gemaakt door Sandra18[NL]

**In deze tutorial leg ik jullie uit hoe je objecten kunt maken, vernietigen, verplaatsen en draaien.

Wat heb je nodig:

- Pawno

- Sa:mp 0.2.* Script-tools

- Basis scriptkennis

- En niet te vergeten een kop koffie :7

Sinds sa:mp 0.2 is uitgebracht is het mogelijk om zelf objecten aan een server toe te voegen.

Dit word dan ook veel gedaan.

Veel beginners willen graag poorten in hun server hebben, maar hebben geen idee hoe ze dat moeten aanpakken.

Daarom heb ik maar deze tutorial gemaakt.

Vragen zijn natuurlijk altijd welkom.

Goed, om te beginnen leg ik eerst kort uit welke functies we gaan gebruiken:

- CreateObject(model-id, X, Y, Z, X-rot, Y-rot, Z-rot);

- DestroyObject(object-id)

- MoveObject(object-id, nieuwe-X, nieuwe-Y, nieuwe-Z, snelheid)

- SetObjectRot(id, nieuwe-X-rot, nieuwe-Y-rot, nieuwe-Z-rot);

Als voorbeeld nemen we als object een hek. (model-id = 974)

Deze zetten we in het midden van GroveStreet.

Coördinaten: (2486.0, -1667.0, 13.0).

Om je script ordelijk te houden, is het verstandig om de objecten namen te geven. Zo kan je ze makkelijk uit elkaar houden.

Wij zullen ons hek de naam 'Poort' geven. (Let op de hoofdletter P)

Daarvoor moeten we dus een nieuw variabele maken.

We maken 3 verschillende commando's:

/open

/close

/destroy

We gebruiken SendClientMessage met de kleur groen. (die moeten we dus nog definieren)

We beginnen dus met:

#include <a_samp>
#define COLOR_GREEN 0x00FF00AA

new Poort;

Dan volgt de 'main' (Dit zie je in de console verscheinen)

main()
{
print("\n00000000000000000000000000000000");
print("TutorialGameMode by Sandra18[NL]");
print("00000000000000000000000000000000\n");
}

Vervolgende de OnGameModeInit() (Hier moet alles instaan wat er tijdens het opstarten van de gamemode moet gebeuren.

Normaal zet je hier altijd de AddPlayerClasses en AddStaticVehicles neer.

Hier moet je dus ook de CreateObject-functie plaatsen omdat het hek bij het opstarten van de gamemode al aanwezig moet zijn:

public OnGameModeInit()
{
SetGameModeText("TutorialGameMode");
AddPlayerClass(93, 2494.4888, -1675.5619, 13.3359, 55.9011,0,0,0,0,0,0); // 1 spawnplek

//CreateObject(id, X, Y, Z, X-rotatie, Y-rotatie, Z-rotatie); 
//Je kunt het object een naam geven op deze manier:
Poort = CreateObject(974, 2486.0,-1667.0,13.0, 0.0,0.0,0.0);

return 1;
}

Dan nog het gedeelten waar je je karakter moet uitkiezen. (Voorbeeld):

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid,-812.0018,-1949.3617,9.3004); // Waar de speler te zetten voor het spawn-menu
SetPlayerCameraPos(playerid,-816.4528,-1945.0082,9.0269); // Camera voor het spawn-menu
SetPlayerCameraLookAt(playerid,-812.0018,-1949.3617,9.3004); // Waar moet de camera naar toe kijken?
return 1;
}

Nu is het tijd voor de commando's:

Het commando /destroy:

if (strcmp("/destroy", cmdtext, true, 10) == 0)  // invoer van het commando
{
DestroyObject(Poort);  // functie om het object te vernietigen
SendClientMessage(playerid, COLOR_GREEN, "De poort is nu vernietigd."); // verzend een bericht
return 1;
}

Het commando: /open:

Ik zet in dit commando alle 6 manieren om een poort te bewegen:

- Verschuiven over de X-as

- Verschuiven over de Y-as

- Verschuiven over de Z-as

- Roteren t.o.v. de X-as

- Roteren t.o.v. de Y-as

- Roteren t.o.v. de Z-as

Ik scheid elke manier door 2 slashes //

Zo kan je van die functiee een 'aantekening' maken, en dus word die functie niet gebruikt.

Voor de snelheid van het bewegen gebruiken we nu '3' en we zullen bij de rotaties telkens met een hoek van 90 graden draaien.

De begin positie van de poort is: 2486.0,-1667.0,13.0

-Om de poort te verschuiven langs de X-as, dan verhoog je de 2486.0:

MoveObject(Poort, 2495.0, -1667.0, 13.0, 3);

-Om de poort te verschuiven langs de Y-as, dan verhoog je de -1667.0:

MoveObject(Poort, 2486.0, -1660.0, 13.0, 3);

-Om de poort te verschuiven langs de Z-as, dan verhoog je de 13.0:

MoveObject(Poort, 2486.0, -1667.0, 20.0, 3);

De standaard rotatie van de Poort is 0, 0, 0

-Om de poort t.o.v. de X-as te roteren, dan verhoog je de 1e 0:

SetObjectRot(Poort, 90, 0, 0);

-Om de poort t.o.v. de Yas te roteren, dan verhoog je de 2e 0:

SetObjectRot(Poort, 0, 90, 0);

-Om de poort t.o.v. de Z-as te roteren, dan verhoog je de 3e 0:

SetObjectRot(Poort, 0, 0, 90);

De code word dus als volgt:

if (strcmp("/open", cmdtext, true, 10) == 0) //Invoer van het commando
{
// MoveObject(objectid, nieuwe X, nieuwe Y, nieuwe Z, snelheid);
//MoveObject(Poort, 2495.0, -1667.0, 13.0, 3); //verplaatsing X
//MoveObject(Poort, 2486.0, -1660.0, 13.0, 3); //verplaatsing Y
//MoveObject(Poort, 2486.0, -1667.0, 20.0, 3); //verplaatsing Z 
//SetObjectRot(Poort, 90, 0, 0); //De poort draait nu 90 graden t.o.v. de X-as
//SetObjectRot(Poort, 0, 90, 0); //De poort draait nu 90 graden t.o.v. de Y-as
//SetObjectRot(Poort, 0, 0, 90); //De poort draait nu 90 graden t.o.v. de Z-as

SendClientMessage(playerid, COLOR_GREEN, "De poort is nu geopend."); //Verzend een bericht naar de speler
return 1;
}

Je hoeft alleen maar uit de bovenstaande code voor 1 van de functies de // weg te halen.

Ik heb vlug een filmpje gemaakt waarin ik de 6 verschillende bewegingen laat zien.

Dit filmpje staat onderaan dit bericht.

Om de poort te sluiten hoef je alleen maar de Poort te 'moven' naar de oude positie en de rotatie weer op de oude stand te zetten:

if (strcmp("/close", cmdtext, true, 10) == 0)
{
MoveObject(Poort, 2486.0, -1667.0, 13.0, 3);  //terug naar oude positie
SetObjectRot(Poort, 0, 0, 0); //terug naar oude rotatie
SendClientMessage(playerid, COLOR_GREEN, "De poort is nu gesloten.");
return 1;
}

Samenvatting:

Als jij een poort wilt die door het commando /open 5 stappen naar boven beweegt en met /close weer sluit, dan heb je deze code nodig:

#include <a_samp>
#define COLOR_GREEN 0x00FF00AA

new Poort;

main()
{
print("\n00000000000000000000000000000000");
print("TutorialGameMode by Sandra18[NL]");
print("00000000000000000000000000000000\n");
}


public OnGameModeInit()
{
SetGameModeText("TutorialGameMode");
AddPlayerClass(93, 2494.4888, -1675.5619, 13.3359, 55.9011,0,0,0,0,0,0);

//CreateObject(id, X, Y, Z, X-rotatie, Y-rotatie, Z-rotatie);
Poort = CreateObject(974, 2486.0,-1667.0,13.0, 0.0,0.0,0.0);

return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid,-812.0018,-1949.3617,9.3004); // Waar de speler te zetten voor het spawn-menu
SetPlayerCameraPos(playerid,-816.4528,-1945.0082,9.0269); // Camera voor het spawn-menu
SetPlayerCameraLookAt(playerid,-812.0018,-1949.3617,9.3004); // Waar moet de camera naar toe kijken?
return 1;
}


public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/open", cmdtext, true, 10) == 0) //Invoer van het commando
{
MoveObject(Poort, 2486.0, -1667.0, 18.0, 3); 
SendClientMessage(playerid, COLOR_GREEN, "De poort is nu geopend."); 
return 1;
}

if (strcmp("/close", cmdtext, true, 10) == 0)
{
MoveObject(Poort, 2486.0, -1667.0, 13.0, 3); 
SendClientMessage(playerid, COLOR_GREEN, "De poort is nu gesloten.");
return 1;
}

if (strcmp("/destroy", cmdtext, true, 10) == 0)
{
DestroyObject(Poort);
SendClientMessage(playerid, COLOR_GREEN, "De poort is nu vernietigd.");
return 1;
}


return 0;
}

Voor een beter uitgelijnde versie, klik >>hier<<

Tis al laat, ben niet helemaal helder meer, dus deze tutorial kan wat chaotisch zijn.

Maar als er nog vragen zijn of er iets niet duidelijk is, moet je het maar in dit topic posten.

Succes ermee

Grtz Sandra

<object width="425" height="350"><param name="movie" value="

name="wmode" value="transparent"></param><embed src="
type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>

<font color="Red">>>> Door Azer: Toegevoegd aan het "PAWN Tutorial List" topic<<<</font>

Edited by Sandra

  • Replies 59
  • Views 12.2k
  • Created
  • Last Reply

Top Posters In This Topic

Featured Replies

Mooie tutorial, heel handig voor de beginners.

Ikzelf gebruik een andere manier voor het verplaatsen van de objecten, deze is wat ingewikkelder.

Leuk dat je ook een filmpje met uitleg erbij heb gemaakt :)

  • Author
Mooie tutorial, heel handig voor de beginners.

Ikzelf gebruik een andere manier voor het verplaatsen van de objecten, deze is wat ingewikkelder.

Leuk dat je ook een filmpje met uitleg erbij heb gemaakt :)

Thnx, maar wat is een makkelijkere manier dan?

Mooie tutorial, heel handig voor de beginners.

Ikzelf gebruik een andere manier voor het verplaatsen van de objecten, deze is wat ingewikkelder.

Leuk dat je ook een filmpje met uitleg erbij heb gemaakt :)

Thnx, maar wat is een makkelijkere manier dan?

Ik heb nog even je tut opnieuw gelezen en uiteindelijk doe je hetzelfde.

Alleen je behandeld eerst het op een andere manier.

Ik doe datgene wat in je samenvatting staat ;)

Top Tutorial, Sandra! :tu: Ik dacht er zelf ook al eens aan om zoiets te gebruiken om bepaalde gebieden af te sluiten, nu kan ik het ook eens toepassen, zal het binnenkort eens testen.

Hoe dan ook, goede uitleg, ook goed filmpje voor de uitkomst. Mijn complimenten hiervoor.

  • Author

Voor een beter uitgelijnde versie van het voorbeeld-script, klik >>hier<<

  • 2 weeks later...

Goeie tutorial, Sandra. Netjes uitgelegt en een filmpje, ga zo door.

  • 1 month later...

goeie uitleg Sandra :tu: zelfs ik ben er uit gekomen!

ik ga het zeker gebruiken alleen moet de lijst met objecten nog vinden weet iemand waar je die kan vinden???

alvast bedankt

  • Author
goeie uitleg Sandra :tu: zelfs ik ben er uit gekomen!

ik ga het zeker gebruiken alleen moet de lijst met objecten nog vinden weet iemand waar je die kan vinden???

alvast bedankt

Echt een lijst met alle objecten is er volgens mij niet, aangezien er zo'n 18000 objecten zijn..

Het beste kan je MTA-map editor gebruiken, en daar kan je door alle objecten scrollen, daar staan dan ook de id's bij

ik heb één probleem met het neerzetten van spullen

alles wat ik neerzet wordt dwars neergezet :cry:

Dan moet je eventjes de rotatie aanpassen, als ik me niet vergis is dat de Z-rotatie. Als je hem een kwartslag wil draaien, verhoog je hem tot 90 graden of 270. ;)

Dan moet je eventjes de rotatie aanpassen, als ik me niet vergis is dat de Z-rotatie. Als je hem een kwartslag wil draaien, verhoog je hem tot 90 graden of 270. ;)

oke bedankt!!

weet iemand het id van een gasfles of een looping en een goeie schans

  • Author

Ik denk dat niemand de id's van alle 18000 objecten uit zn/haar hoofd weet :clown:

Download gewoon MTA Map Editor en zoek daar de objecten + id's op.

Ik denk dat niemand de id's van alle 18000 objecten uit zn/haar hoofd weet :clown:

Download gewoon MTA Map Editor en zoek daar de objecten + id's op.

dat wil ik best doen maar kan geen een goede krijgen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.