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.