Sandra Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 (bewerkt) Tutorial Menu's Gemaakt door Sandra18[NL] Andere Tutorials van mij:>>Objecten<<>>Account-systeem<<>>CheckPoints+AdminArea<< **Dit is een voorbeeld script dat menu's bevat. Wat heb je nodig: - Gta:Sa-mp - Sa-mp 0.2.* Script-tools - Basis scriptkennis Beknopte uitleg: In dit script bevat een menu waarmee je een teleport-locatie kan uitzoeken. Er zijn 10 verschillende locaties verdeeld over de 3 steden: Het menu kan je openen door /teleport in te typen. In dat menu kan je kiezen uit de 3 steden (Ls, Sf & Lv) Als je een stad kiest, opent er een nieuw menu die je locaties in de betreffende stad toont: Los Santos: -GroveSteet -Ls Vliegveld -Hoogste gebouw San Fiero: -Wang Cars -Sf Vliegveld -Pier 69 Las Venturas: -Piratenschip -Lv Vliegveld -4 Dragons Casino -Parkeergarage In dit script gebruiken we 7 hoofd-functies: - CreateMenu("tekst-in-header", aantal-keuzes, x, y, kolom-breedte, kolom-hoogte); - AddMenuItem(naam-doel-menu, kolom, "tekst"); - TogglePlayerControllable(playerid, waarde); waarde: 1=aan 0 =uit - ShowMenuForPlayer(menu, playerid); - SetPlayerPos(playerid, x, y, z); - SetPlayerFacingAngle(playerid, hoek); - SetCameraBehindPlayer(playerid); Uitgebreidere uitleg komt misschien later. Voorlopig zal je gewoon goed het script moeten doorlezen en proberen te begrijpen wat elke functie doet. (Zo heb ik ook leren scripten #include <a_samp> //defineren van de 4 menu's: new Menu:TeleportMenu; new Menu:LsTeleports; new Menu:SfTeleports; new Menu:LvTeleports; public OnGameModeInit() { SetGameModeText("TutorialGM by Sandra18[NL]"); //Karakters plaatsen AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); AddPlayerClass(93, 2494.4888, -1675.5619, 13.3359, 55.9011, 0, 0, 0, 0, 0, 0); //Het maken van de menu's: //eerst maak je een nieuw menu aan met CreateMenu TeleportMenu = CreateMenu("Kies een stad uit:",1,200,200,400,35); //Vervolgens maak je de keuzes met AddMenuItem: AddMenuItem(TeleportMenu, 0, "Los Santos"); // 1e keuze AddMenuItem(TeleportMenu, 0, "San Fiero"); //2e keuze AddMenuItem(TeleportMenu, 0, "Las Venturas"); //3e keuze LsTeleports = CreateMenu("Los Santos Teleports:",1,200,200,400,35); AddMenuItem(LsTeleports, 0, "GroveStreet"); AddMenuItem(LsTeleports, 0, "Ls Vliegveld"); AddMenuItem(LsTeleports, 0, "Hoogste Gebouw"); SfTeleports = CreateMenu("San Fiero Teleports:",1,200,200,400,35); AddMenuItem(SfTeleports, 0, "Wang Cars"); AddMenuItem(SfTeleports, 0, "Sf Vliegveld"); AddMenuItem(SfTeleports, 0, "Pier 69"); LvTeleports = CreateMenu("Las Venturas Teleports:",1,200,200,400,35); AddMenuItem(LvTeleports, 0, "PirateShip"); AddMenuItem(LvTeleports, 0, "Lv Vliegveld"); AddMenuItem(LvTeleports, 0, "4 Dragons Casino"); AddMenuItem(LvTeleports, 0, "Parkeergarage"); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid,-812.0018,-1949.3617,9.3004); SetPlayerCameraPos(playerid,-816.4528,-1945.0082,9.0269); SetPlayerCameraLookAt(playerid,-812.0018,-1949.3617,9.3004); SetPlayerFacingAngle(playerid, 0.0); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/teleport", cmdtext, true) == 0) { TogglePlayerControllable(playerid, 0); // zorg ervoor dat de speler niet meer kan bewegen ShowMenuForPlayer(TeleportMenu,playerid); // laat het menu 'TeleportMenu' zien return 1; } return 0; } public OnPlayerSelectedMenuRow(playerid, row) { TogglePlayerControllable(playerid, 1); // laat de speler weer bewegen SetCameraBehindPlayer(playerid); // zet de camera achter de speler new Menu:Current = GetPlayerMenu(playerid); if (Current == TeleportMenu) // check in welke menu je zit { switch(row) { case 0: {ShowMenuForPlayer(LsTeleports, playerid); TogglePlayerControllable(playerid, 0);} //keuze 1 case 1: {ShowMenuForPlayer(SfTeleports, playerid); TogglePlayerControllable(playerid, 0);} //keuze 2 case 2: {ShowMenuForPlayer(LvTeleports, playerid); TogglePlayerControllable(playerid, 0);} //keuze 3 } } if (Current == LsTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, 2481.5010,-1662.1470,13.3438); SetPlayerFacingAngle(playerid, 241.3432); } case 1: {SetPlayerPos(playerid, 1928.6345,-2457.9893,13.5391); SetPlayerFacingAngle(playerid, 129.8487); } case 2: {SetPlayerPos(playerid, 1563.1281,-1346.2808,330.0572); SetPlayerFacingAngle(playerid, 301.3620); } }} if (Current == SfTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, -1975.4209,291.0956,35.1719); SetPlayerFacingAngle(playerid, 231.8575); } case 1: {SetPlayerPos(playerid, -1191.5640,-400.4661,14.1484); SetPlayerFacingAngle(playerid, 330.6251); } case 2: {SetPlayerPos(playerid, -1713.7914,1334.8519,7.0468); SetPlayerFacingAngle(playerid, 294.0418); } }} if (Current == LvTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, 1999.9935,1521.5145,17.0625); SetPlayerFacingAngle(playerid, 342.4077); } case 1: {SetPlayerPos(playerid, 1724.4902,1610.0110,10.1314); SetPlayerFacingAngle(playerid, 104.1312); } case 2: {SetPlayerPos(playerid, 2037.3230,1007.3141,10.8203); SetPlayerFacingAngle(playerid, 90.9229); } case 3: {SetPlayerPos(playerid, 2058.1492,2446.1331,10.8203); SetPlayerFacingAngle(playerid, 212.6783); } }} return 1; } public OnPlayerExitedMenu(playerid) { new Menu:Current = GetPlayerMenu(playerid); if (Current == LsTeleports || SfTeleports || LvTeleports) { TogglePlayerControllable(playerid, 0); ShowMenuForPlayer(TeleportMenu, playerid); } else { TogglePlayerControllable(playerid, 0); } return 1; } Voor een beter uitgelijnde versie, klik >>hier<< Hier nog een filmpje waarin ik de menu's van dit script laat zien: Omdat ik dit allemaal op een laptop doe (die nog maar net gta-sa aankan) en ook nog eens Fraps gebruik, is de fps errug laag en spawnen de objecten vreselijk langzaam. Edit: In het filmpje zit nog een fout: Bij het Los Santos-menu staat "Lv Vliegveld" dit moest "Ls Vliegveld" zijn. Als je nog vragen hebt, mag je ze gerust in dit topic stellen. Grtz San >>> Door Azer: De lijst met tutorials blijft maar groeien, toegevoegd aan het PAWN Tutorial List topic<<< Bewerkt: 1 maart 2008 door =>Sandra<= Reageren
Rivel Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 (bewerkt) Nice, nice, nicer. Dit is giga goed. Ga ik zeker gebruiken bij mijn gamemode. Woot! Gewoon perfect dankje. Ik ga dit zeker toepassen. Bewerkt: 1 november 2007 door Rivel Reageren
Donwell Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 Wil ik even kijken of er nog iets is in het scripting gedeelte, zie ik weer een tutorial. Meteen even doorgelezen, en mijn gamemode geopend. Alles toegepast, nadat ik klaar was uitgetest. Ziet er erg goed uit, mijn complimenten. Ga zo door. Reageren
WackoX Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 (bewerkt) Wahaha nice! maar 10 error's, ik heb alle 10 gefixed en nu vraag ik aan jou of ik de nieuwe code dan aan jou mag geven (die zonder 10 error's) Bewerkt: 1 november 2007 door Danny_k Reageren
Sandra Geplaatst: 1 november 2007 Auteur Rapport Geplaatst: 1 november 2007 (bewerkt) Die krijg ik inderdaad ook. Het zijn trouwens geen errors maar warnings. warning 217: loose indentation Deze warnings geven aan bepaalde regels niet goed uitgelijnd zijn. Door een bepaalde code toe te voegen aan het script, zorg je ervoor dat Pawno deze warnings negeerd: #pragma tabsize 0 Zet dit bovenaan het script, maar wel onder de includes. Edit: Wahaha nice! maar 10 error's, ik heb alle 10 gefixed en nu vraag ik aan jou of ik de nieuwe code dan aan jou mag geven (die zonder 10 error's) Ligt eraan, als jij het script helemaal hebt uitgelijnd mag je die wel op www.pastebin.ca zetten en de link hier plaatsen... ...als jij alleen #pragma tabsize 0 hebt toegevoegd, hoeft het niet Bewerkt: 1 november 2007 door Sandra18[NL] Reageren
Galiorix Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 Geweldige tutorial Sandra. Super uitgelegd en het is altijd leuk om het resultaat te zien Ik ga hem zeker gebruiken in mijn gamemode! Greetz Reageren
WackoX Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 (bewerkt) Echt super goed maar nu heb ik dus nòg een menu gemaakt en heb daarbij alles ook moeten aanpassen maar nu heb ik een probleem, ik heb dus nu als menu (met een streep er onder betekend heb ik toegevoegt): Los Santos San Fierro Las Venturas Overig Alles werk priema enzo maar als ik dan ''Las Venturas'' ga, dan zie ik opeens òòk de teleport van ''overig'' er tussen staan, terwijl ik daar echt een apart menu voor heb gemaakt. En wat nog vreemder is, als ik dus naar die teleport ga die ''opeens'' in de teleports van Las Venturas zitten, gebeurt er niks, en als ik dan naar de categorie ''overig'' ga, dan staat daar niks tussen, en als ik dan tòch op spatie druk dan ga ik naar mouth chilliad? Hier mijn script onderdelen: new Menu:TeleportMenu; new Menu:LsTeleports; new Menu:SfTeleports; new Menu:LvTeleports; new Menu:OtherTeleports; TeleportMenu = CreateMenu("Choose a category",4,200,200,400,35); AddMenuItem(TeleportMenu, 0, "Los Santos"); AddMenuItem(TeleportMenu, 0, "San Fiero"); AddMenuItem(TeleportMenu, 0, "Las Venturas"); AddMenuItem(TeleportMenu, 0, "Other"); LsTeleports = CreateMenu("Los Santos Teleports:",3,200,200,400,35); AddMenuItem(LsTeleports, 0, "Grove Street"); AddMenuItem(LsTeleports, 0, "Airport"); AddMenuItem(LsTeleports, 0, "Hight bilding"); SfTeleports = CreateMenu("San Fiero Teleports:",3,200,200,400,35); AddMenuItem(SfTeleports, 0, "Work place"); AddMenuItem(SfTeleports, 0, "Airport"); AddMenuItem(SfTeleports, 0, "Hight bilding"); LvTeleports = CreateMenu("Las Venturas Teleports:",3,200,200,400,35); AddMenuItem(LvTeleports, 0, "PirateShip"); AddMenuItem(LvTeleports, 0, "Airport"); AddMenuItem(LvTeleports, 0, "Factory"); OtherTeleports = CreateMenu("Other Teleports:",3,200,200,400,35); AddMenuItem(LvTeleports, 0, "Chilliad"); AddMenuItem(LvTeleports, 0, "Airport Graveyard"); AddMenuItem(LvTeleports, 0, "Geheim"); public OnPlayerSelectedMenuRow(playerid, row) { TogglePlayerControllable(playerid, 1); SetCameraBehindPlayer(playerid); new Menu:Current = GetPlayerMenu(playerid); if (Current == TeleportMenu) { switch(row) { case 0: {ShowMenuForPlayer(LsTeleports, playerid); TogglePlayerControllable(playerid, 0);} case 1: {ShowMenuForPlayer(SfTeleports, playerid); TogglePlayerControllable(playerid, 0);} case 2: {ShowMenuForPlayer(LvTeleports, playerid); TogglePlayerControllable(playerid, 0);} case 3: {ShowMenuForPlayer(OtherTeleports, playerid); TogglePlayerControllable(playerid, 0);} } } if (Current == LsTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, 2481.5010,-1662.1470,13.3438); SetPlayerFacingAngle(playerid, 241.3432); } case 1: {SetPlayerPos(playerid, 1928.6345,-2457.9893,13.5391); SetPlayerFacingAngle(playerid, 129.8487); } case 2: {SetPlayerPos(playerid, 1563.1281,-1346.2808,330.0572); SetPlayerFacingAngle(playerid, 301.3620); } } } if (Current == SfTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, -2029.6158,178.0648,28.8359); SetPlayerFacingAngle(playerid, 231.8575); } case 1: {SetPlayerPos(playerid, -1231.8430,38.8787,14.1387); SetPlayerFacingAngle(playerid, 330.6251); } case 2: {SetPlayerPos(playerid, -1753.5303,885.9994,295.8750); SetPlayerFacingAngle(playerid, 294.0418); } } } if (Current == LvTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, 1999.9935,1521.5145,17.0625); SetPlayerFacingAngle(playerid, 342.4077); } case 1: {SetPlayerPos(playerid, 1689.6973,1612.2306,10.8203); SetPlayerFacingAngle(playerid, 104.1312); } case 2: {SetPlayerPos(playerid, 2501.3540,2780.1321,17.0073); SetPlayerFacingAngle(playerid, 90.9229); } } } if (Current == OtherTeleports) { switch(row) { case 0: {SetPlayerPos(playerid, -2330.8442,-1629.8027,483.7022); SetPlayerFacingAngle(playerid, 342.4077); } case 1: {SetPlayerPos(playerid, 347.8295,2537.1104,16.7504); SetPlayerFacingAngle(playerid, 104.1312); } case 2: {SetPlayerPos(playerid, 0.0, 0.0, 0.0); SetPlayerFacingAngle(playerid, 90.9229); } } } return 1; } public OnPlayerExitedMenu(playerid) { new Menu:Current = GetPlayerMenu(playerid); if (Current == LsTeleports || SfTeleports || LvTeleports || OtherTeleports) { TogglePlayerControllable(playerid, 0); ShowMenuForPlayer(TeleportMenu, playerid); } else { TogglePlayerControllable(playerid, 0); } return 1; } Sandra weet jij oplossing? Bewerkt: 1 november 2007 door Danny_k Reageren
Sandra Geplaatst: 1 november 2007 Auteur Rapport Geplaatst: 1 november 2007 Ja, ik zie de fout al: Het zit in dit stukje: OtherTeleports = CreateMenu("Other Teleports:",3,200,200,400,35); AddMenuItem(LvTeleports, 0, "Chilliad"); AddMenuItem(LvTeleports, 0, "Airport Graveyard"); AddMenuItem(LvTeleports, 0, "Geheim"); Hier 'geef je aan' dat die 3 items in het menu 'LvTeleports' moet. Je moet dat veranderen naar 'OtherTeleports' Dus: OtherTeleports = CreateMenu("Other Teleports:",3,200,200,400,35); AddMenuItem(OtherTeleports, 0, "Chilliad"); AddMenuItem(OtherTeleports, 0, "Airport Graveyard"); AddMenuItem(OtherTeleports, 0, "Geheim"); Ik heb het voor je getest, het werkt nu prima Succes ermee. Grtz Sandra Reageren
WackoX Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 Oohja tuurlijk wat stom van mij bedankt! God zegend u Reageren
Rene-GTA Geplaatst: 1 november 2007 Rapport Geplaatst: 1 november 2007 Mooi gemaakt hoor, mijn complimenten. Alleen jammer dat heel langzaam laad bij het filmpje, maarja. Veel tekst en heel duidelijk. Ga zo door. Reageren
Sandra Geplaatst: 2 november 2007 Auteur Rapport Geplaatst: 2 november 2007 (bewerkt) Voor een beter uitgelijnde en duidelijkere versie, klik >>hier<< Bewerkt: 2 november 2007 door Sandra18[NL] Reageren
WackoX Geplaatst: 2 november 2007 Rapport Geplaatst: 2 november 2007 (bewerkt) - Bewerkt: 3 november 2007 door Danny_k Reageren
Sandra Geplaatst: 2 november 2007 Auteur Rapport Geplaatst: 2 november 2007 Dit betekend niet veel goeds klik maar eens.Het zijn gewoon vuile script-jatters huh, hoezo? Reageren
WackoX Geplaatst: 3 november 2007 Rapport Geplaatst: 3 november 2007 Lama, hij heeft het al ge-edit, maar hij had gewoon precies zo'n zelfde menu in het script showroom Reageren
joman Geplaatst: 13 november 2007 Rapport Geplaatst: 13 november 2007 Super toffe tutorial!! Ik heb jouw account systeem tutorial ook al gebruikt en ben ze nu even aant mengen! alleen ik krijg nu dit uit de compile: C:\Users\Gebruiker\Desktop\SAMP server\gamemodes\test.pwn(146) : error 021: symbol already defined: "OnPlayerRequestClass"C:\Users\Gebruiker\Desktop\SAMP server\gamemodes\test.pwn(169) : error 021: symbol already defined: "OnPlayerCommandText" Even naar regels 144 t/m 148 en regels 167 t/m 171: public OnPlayerRequestClass(playerid, classid){ SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1968.3783, 1345.1572, 17.3746); en nu 167 t/m 171 public OnPlayerCommandText(playerid, cmdtext[]){ new cmd[256],tmp[256], tmp2[256]; new idx; Kan iemand mij nu helpen?? Ik ben nieuw in scripten voor SA:MP en heb dus een beetje hulp nodig. Alvast bedankt!! Joman 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.