Sandra Geplaatst: 24 oktober 2007 Rapport Geplaatst: 24 oktober 2007 (bewerkt) 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: #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> Bewerkt: 17 januari 2010 door Sandra Reageren
Timb0 Geplaatst: 25 oktober 2007 Rapport Geplaatst: 25 oktober 2007 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 Reageren
Sandra Geplaatst: 25 oktober 2007 Auteur Rapport Geplaatst: 25 oktober 2007 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? Reageren
Timb0 Geplaatst: 25 oktober 2007 Rapport Geplaatst: 25 oktober 2007 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 Reageren
Donwell Geplaatst: 26 oktober 2007 Rapport Geplaatst: 26 oktober 2007 Top Tutorial, Sandra! 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. Reageren
Sandra Geplaatst: 2 november 2007 Auteur Rapport Geplaatst: 2 november 2007 Voor een beter uitgelijnde versie van het voorbeeld-script, klik >>hier<< Reageren
Jesperkaj Geplaatst: 11 november 2007 Rapport Geplaatst: 11 november 2007 Goeie tutorial, Sandra. Netjes uitgelegt en een filmpje, ga zo door. Reageren
opacool6 Geplaatst: 22 december 2007 Rapport Geplaatst: 22 december 2007 goeie uitleg Sandra 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 Reageren
Sandra Geplaatst: 22 december 2007 Auteur Rapport Geplaatst: 22 december 2007 goeie uitleg Sandra 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 Reageren
opacool6 Geplaatst: 24 december 2007 Rapport Geplaatst: 24 december 2007 ik heb één probleem met het neerzetten van spullen alles wat ik neerzet wordt dwars neergezet Reageren
Donwell Geplaatst: 24 december 2007 Rapport Geplaatst: 24 december 2007 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. Reageren
opacool6 Geplaatst: 24 december 2007 Rapport Geplaatst: 24 december 2007 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!! Reageren
opacool6 Geplaatst: 24 december 2007 Rapport Geplaatst: 24 december 2007 weet iemand het id van een gasfles of een looping en een goeie schans Reageren
Sandra Geplaatst: 24 december 2007 Auteur Rapport Geplaatst: 24 december 2007 Ik denk dat niemand de id's van alle 18000 objecten uit zn/haar hoofd weet Download gewoon MTA Map Editor en zoek daar de objecten + id's op. Reageren
opacool6 Geplaatst: 25 december 2007 Rapport Geplaatst: 25 december 2007 Ik denk dat niemand de id's van alle 18000 objecten uit zn/haar hoofd weet Download gewoon MTA Map Editor en zoek daar de objecten + id's op. dat wil ik best doen maar kan geen een goede krijgen Reageren
Recommended Posts
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.