Jump to content
Geplaatst:
comment_811488

Tutorial Menu's



Gemaakt door Sandra18[NL]

**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 :roll:

#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: door =>Sandra<=

  • Reacties 63
  • Bezichtigingen 19.9k
  • Created
  • Laatste reactie

Top Posters In This Topic

Featured Replies

Geplaatst:
comment_933458
Ik wil nu in mijn menu dat ze ook Close kunnen kiezen alleen wat moet ik er dan van maken?

case 0: {EN HIER?};

Als je de speler hebt 'gefrozen' (TogglePlayerControllable(playerid, 0); hebt gebruikt).

Dan hoef je het alleen maar weer op '1' te zetten.

Als ik er dan van maak:

case 0: {TogglePlayerCotrollable(playerid, 1)};

dan gaat hij uit htt menu.

Bewerkt: door Remcconen

  • 8 maanden later...
Geplaatst:
comment_1199344

heey allemaal :puh:

kheb een vraagje over het maken van een menu

alles lukt bij mij wel, maar ik wil nu eigenlijk een menu met 3 rijen knoppen naast elkaar.

en vroeg me dus af of dat mogelijk is :O zo ja, wil iemand dan uit leggen hoe??

en zo nee... zeg het dan ook ff ;)

Bewerkt: door opacool6

  • 2 weken later...
Geplaatst:
comment_1209105

khad een ander vraagie :Y

ik heb het nu maar anders gedaan....

en zou nu willen dat als je op een van de knoppen drukt hij het menu niet afsluit maar nog wel het gene uitvoert wat hij bij het aandrukken van die knop hoort te doen...

is dit wel mogelijk??

  • 7 maanden later...
Geplaatst:
comment_1429024

ik heb weer een domme vraag van mij,

als ik bijvoorbeeld

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");

CreateMenu("Los Santos Teleports:",3,200,200,400,35);
AddMenuItem(LsTeleports, 0, "Grove Street");
AddMenuItem(LsTeleports, 0, "Airport");
AddMenuItem(LsTeleports, 0, "Hight bilding");

CreateMenu("San Fiero Teleports:",3,200,200,400,35);
AddMenuItem(SfTeleports, 0, "Work place");
AddMenuItem(SfTeleports, 0, "Airport");
AddMenuItem(SfTeleports, 0, "Hight bilding");

CreateMenu("Las Venturas Teleports:",3,200,200,400,35);
AddMenuItem(LvTeleports, 0, "PirateShip");
AddMenuItem(LvTeleports, 0, "Airport");
AddMenuItem(LvTeleports, 0, "Factory");

CreateMenu("Other Teleports:",3,200,200,400,35);
AddMenuItem(OtherTeleports, 0, "Chilliad");
AddMenuItem(OtherTeleports, 0, "Airport Graveyard");
AddMenuItem(OtherTeleports, 0, "Geheim");

krijg ik devolgende errors

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(177) : error 021: symbol already defined: "CreateMenu"

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(183) : error 021: symbol already defined: "CreateMenu"

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(188) : error 021: symbol already defined: "CreateMenu"

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(193) : error 021: symbol already defined: "CreateMenu"

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(198) : error 021: symbol already defined: "CreateMenu"

als ik deze doe

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");

krijg ik devolgende errors

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(177) : error 010: invalid function or declaration

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(183) : error 010: invalid function or declaration

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(188) : error 010: invalid function or declaration

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(193) : error 010: invalid function or declaration

I:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\area51.pwn(198) : error 010: invalid function or declaration

wazig voor mij?

Geplaatst:
comment_1433260
 

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");

[code]

zoiets bij allemaal doen

  • 2 maanden later...
Geplaatst:
comment_1512338

Ik krijg een error, of eigenlijk juist niet. Mijn script compiled niet :puh:.(als ik ok F5/compile klik, krijg ik dat schermpje waarin hoort te staan "Pawno compiler copyright dit en dat" maar het is helaas leeg).

Enig idee wat hiervoor een oplossing kan zijn?

Geplaatst:
comment_1512780
en zou nu willen dat als je op een van de knoppen drukt hij het menu niet afsluit maar nog wel het gene uitvoert wat hij bij het aandrukken van die knop hoort te doen...

Ja, tuurlijk. :Y

In je OnPlayerSelectedMenuRow zet je gewoon boven of onder de switch van dat menu dit bij:

ShowMenuForPlayer(Current, playerid);

als ik deze doe

TeleportMenu = CreateMenu("Choose a category",4,200,200,400,35);
...

krijg ik devolgende errors

[...]

wazig voor mij?

Heb je bovenaan je menu gedefiniëerd?

new Menu:TeleportMenu;

  • 4 maanden later...
Geplaatst:
  • Auteur
comment_1596366

Beetje laat denk ik,

Maaruuh in dat filmpje,

als je op LOS santos drukt en dan grove street hoogste gebouw

heb je daar neer gezet LVAIRPORT...?

Ja, en als je nog iets verder had gekeken, had je gezien dat recht onder het filmpje al 2 en half jaar lang die fout vermeld staat. :bonk:

  • 2 maanden later...
Geplaatst:
comment_1653818

Ik had om te testen even de code van plaatscode gekopieerd en geplakt alleen heb ik deze errors:

C:\Users\CasenHannah\Desktop\samp03asvr_R7_win32\filterscripts\teleport.pwn(1) : error 010: invalid function or declaration
C:\Users\CasenHannah\Desktop\samp03asvr_R7_win32\filterscripts\teleport.pwn(129) : error 013: no entry point (no public functions)
Pawn compiler 3.2.3664 	Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

confused2.gif

Bewerkt: door Casss

  • 4 maanden later...

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.

Gast
Op dit onderwerp reageren...

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.