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;
}
Tutorial Objecten
Gemaakt door Sandra18[NL]
Andere Tutorials van mij:
>>Menu's<<
>>Account-systeem<<
>>CheckPoints+AdminArea<<
**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
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:
Dan volgt de 'main' (Dit zie je in de console verscheinen)
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:
Dan nog het gedeelten waar je je karakter moet uitkiezen. (Voorbeeld):
Nu is het tijd voor de commando's:
Het commando /destroy:
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:
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:
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:
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="
<font color="Red">>>> Door Azer: Toegevoegd aan het "PAWN Tutorial List" topic<<<</font>
Bewerkt: door Sandra