000
22.05.2001, 13:21
Buy-Menu-Man
|
Hi!
Ich habe jetzt das VGUI-Menu erfolgreich gecodet und möchte nun das "alte" Menü auch noch als Option anbieten!
Und zwar will ich 2 Menüs machen:
1. Teamauswahl
2. Klassenauswahl
Ich hab auch schon angefangen das zu coden....nur mein Probelm war, dass die Funktion, die das Zeug auf den Bildschirm schreibt ja immer den gleichen Command schickt und dass ich dann nicht einfach in der ClientCommand Funktion so: if(FStrEq(pcmd, "class")) machen kann!
Also hab ich einfach eine Variable deklariert, die ich nach jedem Menüaufruf verändere...so:
ShowMenu(....);
menu = 1;
Dann frage ich das in der ClientCommand Funktion wieder ab...
if (menu==1)
....
Also bei der ersten auswahl funktioniert das auch...dann erscheint die Klassenauswahl und wenn ich dann was drücke sollte ich spawnen, aber es geht nicht! Keine Ahnung wieso nicht...
Meine erste Frage: Kann man das auch eleganter Lösen?
2. Wieso funktioniert das nicht?
--
http://battletech-hl.teamfortress2.de
|
|
Profil || Suche
|
001
22.05.2001, 16:39
Creeper
|
1. Du erstellst in der player.h
einen enum _Menu mit den namen der Menüs und dann eine neue Variable (z.b. m_nMenu) des Typs _Menu, dann setzt du vor jedem Aufruf von deinem Menü m_nMenu auf den Namen des Menüs und änderst die ClientCommand ein bisschen um so:
if ( FStrEq( pcmd, "menuselect" ) )
{
//if ( CMD_ARGC() < 2 )
//return TRUE;
int slot = atoi( CMD_ARGV(1) );
// select the item from the current menu
// + Creeper
switch(pPlayer->m_nMenu)
{
case Menu_ChangeTeam:
if (slot == 1)
{
}
else if (slot == 2)
{
}
else if (slot == 3)
{
}
else if (slot == 0)
{
return 1;
}
return TRUE;
case Menu_Buy:
if (slot == 1)
{
pPlayer->m_nMenu = Menu_BuyHandgun;
pPlayer->ShowMenu(0x21F, 0, 0, "#BuyHandgun");
}
--
Head Coder:Sudden-Impact
Listen to CKY you fuCKYrs http://www.ckymusic.com
|
|
Profil || Suche
|
002
22.05.2001, 20:38
Buy-Menu-Man
|
Ich hab das jetzt so gemacht wie du gesagt hast....sieht echt professioneller aus!
Also hier ist der Code, der in der teamplayergamerules.cpp steht:
if ( FStrEq( pcmd, "menuselect" ) )
{
int slot = atoi( CMD_ARGV(1) );
switch(pPlayer->oldmenu)
{
case TEAM:
pPlayer->OldTeamMenu(pPlayer);
case CLASS:
if(slot == 1)
sprintf(sz, "Choose a class:\n\n1 Davion Sniper\n2 Liao Deathcommando\n3 DEST Soldier");
else if(slot == 2)
sprintf(sz, "Choose a class:\n\n1 Solahma\n2 Elemental\n3 Clan Mechwarrior");
pPlayer->oldmenu = SPAWN;
ShowMenu(pPlayer, 4, 0, 0, sz);
case SPAWN:
pPlayer->playerclass = slot;
pPlayer->Spawn();
MESSAGE_BEGIN( MSG_ONE, gmsgScoreInfo, NULL, pPlayer->edict() );
WRITE_BYTE( ENTINDEX(pPlayer->edict()) );
WRITE_SHORT( 0 );
WRITE_SHORT( 0 );
WRITE_SHORT( pPlayer->playerclass );
MESSAGE_END();
pPlayer->oldmenu = TEAM;
}
}
Aber es ist das gleiche Problem wie vorher!
Ich kann mein Team wählen und dann versuch ich die Klasse zu wählen:
Nichts geht!
Keine Reaktion!
--
http://battletech-hl.teamfortress2.de
|
|
Profil || Suche
|
003
23.05.2001, 17:58
Creeper
|
nach jedem case kommt ein
return true;
--
Head Coder:Sudden-Impact
Listen to CKY you fuCKYrs http://www.ckymusic.com
|
|
Profil || Suche
|
004
23.05.2001, 18:18
TheVoice
|
bzw. break!
Denn im moment wird einfach das ganze ding von oben bis unten
durchlaufen ohne wirklich die einzelnen Fälle zu bearbeiten sondern
alle hintereinander.
--
Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]
|
|
Profil || Suche
|
005
24.05.2001, 17:26
Creeper
|
jo oder halt break
--
Head Coder:Sudden-Impact
Listen to CKY you fuCKYrs http://www.ckymusic.com
|
|
Profil || Suche
|
006
09.06.2001, 19:05
Buy-Menu-Man
|
ich hab jetzt ein break hinter jedem case......keine Unterschiede.....alles gleich wie vorher....
--
http://battletech-hl.teamfortress2.de
|
|
Profil || Suche
|
007
09.06.2001, 19:33
Creeper
|
poste mal den code ich versteh das ned ganz!
--
Head Coder:Sudden-Impact
Listen to CKY you fuCKYrs http://www.ckymusic.com
|
|
Profil || Suche
|