Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, Nymphodora), 1,592 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
menuskript #261685
04/19/09 12:41
04/19/09 12:41
Joined: Jul 2006
Posts: 63
Deutschland
T
Tecizo Offline OP
Junior Member
Tecizo  Offline OP
Junior Member
T

Joined: Jul 2006
Posts: 63
Deutschland
Ich habe ein kleines Menuskript für eine art Piemenu geschriebn:
menu.zip

Hier ein Beispiel wie man es einbinden kann:
Code:
#include <acknex.h>
#include "menu.c"

function main()
{
	wait(1);

	int hauptmenuitems_lenght = 5; //anzahl der elemente
	MENUITEM* hauptmenuitems = malloc(sizeof(MENUITEM) * hauptmenuitems_lenght); //pointer erstellen
	hauptmenuitems[0].bmap = bmap_create("fortsetzen.tga"); //bild des elements
	hauptmenuitems[0].text = "Spiel Fortsetzen"; //text des elements
	hauptmenuitems[1].bmap = bmap_create("speichern.tga"); //bild des elements
	hauptmenuitems[1].text = "Spiel Speichern"; //text des elements
	hauptmenuitems[2].bmap = bmap_create("laden.tga"); //bild des elements
	hauptmenuitems[2].text = "Spiel Laden"; //text des elements
	hauptmenuitems[3].bmap = bmap_create("neu.tga"); //bild des elements
	hauptmenuitems[3].text = "Neues Spiel"; //text des elements
	hauptmenuitems[4].bmap = bmap_create("beenden.tga"); //bild des elements
	hauptmenuitems[4].text = "Beenden"; //text des elements

	int speichermenuitems_lenght = 4; //anzahl der elemente
	MENUITEM* speichermenuitems = malloc(sizeof(MENUITEM) * speichermenuitems_lenght); //pointer erstellen
	speichermenuitems[0].bmap = bmap_create("1.tga"); //bild des elements
	speichermenuitems[0].text = "Spielstand 1"; //text des elements
	speichermenuitems[1].bmap = bmap_create("2.tga"); //bild des elements
	speichermenuitems[1].text = "Spielstand 2"; //text des elements
	speichermenuitems[2].bmap = bmap_create("3.tga"); //bild des elements
	speichermenuitems[2].text = "Spielstand 3"; //text des elements
	speichermenuitems[3].bmap = bmap_create("zurueck.tga"); //bild des elements
	speichermenuitems[3].text = "Zurück"; //text des elements

	int oeffnenmenuitems_lenght = 4; //anzahl der elemente
	MENUITEM* oeffnenmenuitems = malloc(sizeof(MENUITEM) * oeffnenmenuitems_lenght); //pointer erstellen
	oeffnenmenuitems[0].bmap = bmap_create("1.tga"); //bild des elements
	oeffnenmenuitems[0].text = "Spielstand 1"; //text des elements
	oeffnenmenuitems[1].bmap = bmap_create("2.tga"); //bild des elements
	oeffnenmenuitems[1].text = "Spielstand 2"; //text des elements
	oeffnenmenuitems[2].bmap = bmap_create("3.tga"); //bild des elements
	oeffnenmenuitems[2].text = "Spielstand 3"; //text des elements
	oeffnenmenuitems[3].bmap = bmap_create("zurueck.tga"); //bild des elements
	oeffnenmenuitems[3].text = "Zurück"; //text des elements



	MENUSEITE* hauptmenuseiten = malloc(sizeof(MENUSEITE) * 3); //pointer erstellen
	hauptmenuseiten[0].menuitems = hauptmenuitems; //items für diese seite
	hauptmenuseiten[0].hintergrund = bmap_create("hintergrund.tga"); //hintergrund für diese seite
	hauptmenuseiten[0].menuitems_lenght = hauptmenuitems_lenght; //anzahl der elemente
	hauptmenuseiten[1].menuitems = speichermenuitems; //items für diese seite
	hauptmenuseiten[1].hintergrund = bmap_create("hintergrund2.tga"); //hintergrund für diese seite
	hauptmenuseiten[1].menuitems_lenght = speichermenuitems_lenght; //anzahl der elemente
	hauptmenuseiten[2].menuitems = oeffnenmenuitems; //items für diese seite
	hauptmenuseiten[2].hintergrund = bmap_create("hintergrund2.tga"); //hintergrund für diese seite
	hauptmenuseiten[2].menuitems_lenght = oeffnenmenuitems_lenght; //anzahl der elemente



	MENU* hauptmenu = malloc(sizeof(MENU));  //pointer erstellen
	hauptmenu.auswahlmaske = bmap_create("auswahl.tga"); //bild als "curser"
	hauptmenu.s1 = 0.3; //geschwindigkeit zum wechseln zwischen elementen
	hauptmenu.s2 = 10; //geschwindigkeit zum ein/ausblenden
	hauptmenu.dist = 400; //groesse des kreises
	hauptmenu.normalsize[0] = 1680; //auflösung des hintergrundbildes
	hauptmenu.normalsize[1] = 1050; //auflösung des hintergrundbildes
	hauptmenu.menuseiten = hauptmenuseiten; //die seiten des menus
	hauptmenu.seite = 0; //ausgewählte seite
	hauptmenu.schriftart = "Comic Sans MS"; //schriftart
	hauptmenu.schriftmodus = 0; //schriftmodus 0=normal, 1=fett, 2=kursiv, 3=fett+kursiv
	hauptmenu.schriftgroesse = 26; //schriftgroesse
	
	
	show_menu(hauptmenu); //menu anzeigen
}


Und hier ein beispiel für die Datei menufunktionen.c:
Code:
function menufunktionen(MENU* menu, int selektion)
{
	switch(menu.seite) //funktionen dür die jeweilige seite
	{
		case 0:
			switch(selektion) //funktionen für das jeweilige element
			{
				case 0: resume();
				break;
				case 1: menu.seite = 1;
				break;
				case 2: menu.seite = 2;
				break;
				case 3: new_game();
				break;
				case 4: sys_exit("");
				break;
			}
			break;
		case 1:
			switch(selektion) //funktionen für das jeweilige element
			{
				case 0: game_save("save", 0, SV_ALL);
				break;
				case 1: game_save("save", 1, SV_ALL);
				break;
				case 2: game_save("save", 2, SV_ALL);
				break;
				case 3: menu.seite = 0;
				break;
			}
			break;
		case 2:
			switch(selektion) //funktionen für das jeweilige element
			{
				case 0: game_load("save", 0);
				break;
				case 1: game_load("save", 1);
				break;
				case 2: game_load("save", 2);
				break;
				case 3: menu.seite = 0;
				break;
			}
			break;
	}
}



Das Menu wird nur durch die Funktionen draw_quad und draw_text erstellt. Ich hab aber das Gefühl das der Alphawert bei Bildern mit Alphakanal nicht stimmt. Ausserdem sieht das Skalieren mit der draw_quad Funktion nicht so gut aus. Das Skript sollte ab der Version 7.60.0 funktionieren.

Re: menuskript [Re: Tecizo] #262102
04/21/09 22:50
04/21/09 22:50
Joined: Jul 2004
Posts: 1,710
MMike Offline
Serious User
MMike  Offline
Serious User

Joined: Jul 2004
Posts: 1,710
please give a screen shot of what manu your talking about?

Re: menuskript [Re: MMike] #262185
04/22/09 11:37
04/22/09 11:37
Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
VeT Offline

Serious User
VeT  Offline

Serious User

Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
and english version, if possible smile


1st prize: Lite-C and Newton 2.17 by Vasilenko Vitaliy

Newton2 videos: http://tinyurl.com/NewtonVideos
LiteC+Newton2 discussion: http://tinyurl.com/NewtonWrapperDiscussion
Latest LiteC+Newton2 version(v23, from 29.10.2009): http://depositfiles.com/files/ae1l0tpro
Re: menuskript [Re: MMike] #262188
04/22/09 11:39
04/22/09 11:39
Joined: Jul 2006
Posts: 63
Deutschland
T
Tecizo Offline OP
Junior Member
Tecizo  Offline OP
Junior Member
T

Joined: Jul 2006
Posts: 63
Deutschland
here an example with some of the vista icons:



Re: menuskript [Re: Tecizo] #262189
04/22/09 11:41
04/22/09 11:41
Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
VeT Offline

Serious User
VeT  Offline

Serious User

Joined: Aug 2004
Posts: 1,345
Kyiv, Ukraine
looks nice smile


1st prize: Lite-C and Newton 2.17 by Vasilenko Vitaliy

Newton2 videos: http://tinyurl.com/NewtonVideos
LiteC+Newton2 discussion: http://tinyurl.com/NewtonWrapperDiscussion
Latest LiteC+Newton2 version(v23, from 29.10.2009): http://depositfiles.com/files/ae1l0tpro
Re: menuskript [Re: VeT] #262202
04/22/09 12:51
04/22/09 12:51
Joined: Jul 2006
Posts: 63
Deutschland
T
Tecizo Offline OP
Junior Member
Tecizo  Offline OP
Junior Member
T

Joined: Jul 2006
Posts: 63
Deutschland
okay here is an english version: menu.zip
it should work but i haven't tried it yet

example for a main.c:
Code:
#include <acknex.h>
#include "menu.c"

function main()
{
	wait(1);

	int mainmenuitems_lenght = 5; //number of elements
	MENUITEM* mainmenuitems = malloc(sizeof(MENUITEM) * mainmenuitems_lenght); //create pointer
	mainmenuitems[0].bmap = bmap_create("continue.tga"); //image of the element
	mainmenuitems[0].text = "Continue Playing"; //text of the element
	mainmenuitems[1].bmap = bmap_create("save.tga"); //image of the element
	mainmenuitems[1].text = "Store Game"; //text of the element
	mainmenuitems[2].bmap = bmap_create("laden.tga"); //image of the element
	mainmenuitems[2].text = "Load Game"; //text of the element
	mainmenuitems[3].bmap = bmap_create("new.tga"); //image of the element
	mainmenuitems[3].text = "New Game"; //text of the element
	mainmenuitems[4].bmap = bmap_create("quit.tga"); //image of the element
	mainmenuitems[4].text = "Quit"; //text of the element

	int savemenuitems_lenght = 4; //number of elements
	MENUITEM* savemenuitems = malloc(sizeof(MENUITEM) * savemenuitems_lenght); //create pointer
	savemenuitems[0].bmap = bmap_create("1.tga"); //image of the element
	savemenuitems[0].text = "Score 1"; //text of the element
	savemenuitems[1].bmap = bmap_create("2.tga"); //image of the element
	savemenuitems[1].text = "Score 2"; //text of the element
	savemenuitems[2].bmap = bmap_create("3.tga"); //image of the element
	savemenuitems[2].text = "Score 3"; //text of the element
	savemenuitems[3].bmap = bmap_create("back.tga"); //image of the element
	savemenuitems[3].text = "Back"; //text of the element

	int loadmenuitems_lenght = 4; //number of elements
	MENUITEM* loadmenuitems = malloc(sizeof(MENUITEM) * loadmenuitems_lenght); //create pointer
	loadmenuitems[0].bmap = bmap_create("1.tga"); //image of the element
	loadmenuitems[0].text = "Score 1"; //text of the element
	loadmenuitems[1].bmap = bmap_create("2.tga"); //image of the element
	loadmenuitems[1].text = "Score 2"; //text of the element
	loadmenuitems[2].bmap = bmap_create("3.tga"); //image of the element
	loadmenuitems[2].text = "Score 3"; //text of the element
	loadmenuitems[3].bmap = bmap_create("back.tga"); //image of the element
	loadmenuitems[3].text = "Back"; //text of the element



	MENUPAGE* mainmenupages = malloc(sizeof(MENUPAGE) * 3); //create pointer
	mainmenupages[0].menuitems = mainmenuitems; //items for this page
	mainmenupages[0].backgound = bmap_create("background.tga"); //background for this page
	mainmenupages[0].menuitems_lenght = mainmenuitems_lenght; //number of elements
	mainmenupages[1].menuitems = savemenuitems; //items for this page
	mainmenupages[1].backgound = bmap_create("background2.tga"); //background for this page
	mainmenupages[1].menuitems_lenght = savemenuitems_lenght; //number of elements
	mainmenupages[2].menuitems = loadmenuitems; //items for this page
	mainmenupages[2].backgound = bmap_create("background2.tga"); //background for this page
	mainmenupages[2].menuitems_lenght = loadmenuitems_lenght; //number of elements



	MENU* mainmenu = malloc(sizeof(MENU));  //create pointer
	mainmenu.selection_mask = bmap_create("auswahl.tga"); //picture as selection mask
	mainmenu.s1 = 0.3; //speed to switch between elements
	mainmenu.s2 = 10; //speed for show/hide
	mainmenu.dist = 400; //size of the circle
	mainmenu.normalsize[0] = 1680; //resolution of the menu x
	mainmenu.normalsize[1] = 1050; //resolution of the menu y
	mainmenu.menupages = mainmenupages; //pages of the menu
	mainmenu.page = 0; //selected page
	mainmenu.font = "Comic Sans MS"; //font
	mainmenu.font_mode = 0; //font mode 0=normal, 1=bold, 2=italic, 3=bold+italic
	mainmenu.font_size = 26; //font size
	
	
	show_menu(mainmenu); //show menu
}

example for a menufunctions.c:
Code:
function menufunktionen(MENU* menu, int selektion)
{
	switch(menu.seite) //select the page (case 0 = page1, case 1 = page2...)
	{
		case 0:
			switch(selektion) //functions for the elements of a page1 (case 0 = element1...)
			{
				case 0: resume();
				break;
				case 1: menu.page = 1;
				break;
				case 2: menu.page = 2;
				break;
				case 3: new_game();
				break;
				case 4: sys_exit("");
				break;
			}
			break;
		case 1:
			switch(selektion) //functions for the elements of a page2 (case 0 = element1...)
			{
				case 0: game_save("save", 0, SV_ALL);
				break;
				case 1: game_save("save", 1, SV_ALL);
				break;
				case 2: game_save("save", 2, SV_ALL);
				break;
				case 3: menu.page = 0;
				break;
			}
			break;
		case 2:
			switch(selektion) //functions for the elements of a page3 (case 0 = element1...)
			{
				case 0: game_load("save", 0);
				break;
				case 1: game_load("save", 1);
				break;
				case 2: game_load("save", 2);
				break;
				case 3: menu.page = 0;
				break;
			}
			break;
	}
}


I haven't translated everything in menu.c

Re: menuskript [Re: Tecizo] #262402
04/23/09 14:31
04/23/09 14:31
Joined: Dec 2006
Posts: 1,086
Queensland - Australia
Nidhogg Offline
Serious User
Nidhogg  Offline
Serious User

Joined: Dec 2006
Posts: 1,086
Queensland - Australia
First of I would like to thank Tecizo for his menu contrib.

Question I have though is, "How do I freeze everything in the background without affecting the menu, It's not only with this menu but any menu I have tried to do." Any help would be greatly appreciated.

Also here is a slight variation for using mouse wheel and left mouse button.

Code:
int rotate_left()
{

	if (((key_cul + key_a) != 0) + (mickey.z < -1))
	{
		return(1);
	}
}

int rotate_right()
{
	if (((key_cur + key_d) != 0) + (mickey.z > 1))
        {	
                return (1);
        }
}

int selected()
{ 
return ((key_enter + key_space + mouse_left) != 0);
}


Just look in the main menu script and replace this with the ones in there.
You may also have to change the functions to thier original names as well.




Windows XP SP3
Intel Dual Core CPU: E5200 @ 2.5GHz
4.00GB DDR3 Ram
ASUS P5G41T-M LX
PCIE x16 GeForce GTS 450 1Gb
SB Audigy 4
Spyware Doctor with AntiVirus

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1