4 registered members (ozgur, Ayumi, VHX, monarch),
1,161
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
menuskript
#261685
04/19/09 12:41
04/19/09 12:41
|
Joined: Jul 2006
Posts: 63 Deutschland
Tecizo
OP
Junior Member
|
OP
Junior Member
Joined: Jul 2006
Posts: 63
Deutschland
|
Ich habe ein kleines Menuskript für eine art Piemenu geschriebn: menu.zipHier ein Beispiel wie man es einbinden kann:
#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:
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: VeT]
#262202
04/22/09 12:51
04/22/09 12:51
|
Joined: Jul 2006
Posts: 63 Deutschland
Tecizo
OP
Junior Member
|
OP
Junior Member
Joined: Jul 2006
Posts: 63
Deutschland
|
okay here is an english version: menu.zipit should work but i haven't tried it yet example for a main.c:
#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:
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
Serious User
|
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. 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
|
|
|
|