Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
02.08.2000, 11:46
Morgan in Urlaub



HI!
Ich habe ein großes Problem!
Ich habe eine Funktion erstellt, bei der man sich eine Spielerklasse aussuchen kann!
Aber wenn ich dann in der Konsole changeclass eintippe kommt immer unknown command! Woran liegt das ?? Hier der Code:

teamplay_gamerules.cpp

//=========================================================
BOOL CHalfLifeTeamplay :: ClientCommand( CBasePlayer *pPlayer, const char *pcmd )
{
if ( FStrEq( pcmd, "menuselect" ) )
{
if ( CMD_ARGC() < 2 )
return TRUE;

int slot = atoi( CMD_ARGV(1) );


pPlayer->m_iPlayerClass = slot;
return TRUE;
}

else if (FStrEq(pcmd, "changeclass" ))
{
//zeigt das Menü
ShowMenu (pPlayer, 0x3F, 0, 0, "#class_list");
return TRUE;
}

return FALSE;
}

Und dann noch meine Funktion in der multiplay_gamerules.cpp
void CHalfLifeMultiplay :: PlayerSpawn( CBasePlayer *pPlayer )
{
BOOL addDefault;
CBaseEntity *pWeaponEntity = NULL;

pPlayer->pev->weapons |= (1<<WEAPON_SUIT);

addDefault = TRUE;

while ( pWeaponEntity = UTIL_FindEntityByClassname( pWeaponEntity, "game_player_equip" ))
{
pWeaponEntity->Touch( pPlayer );
addDefault = FALSE;
}

if ( addDefault )
{
//This part of the code checks to see if m_iPlayerClass is less than 0 or greater than 6.
// it ensures we've got a valid number. If not, they're a soldier.
if (pPlayer->m_iPlayerClass < 1 || pPlayer->m_iPlayerClass > 3)
pPlayer->m_iPlayerClass = 3;
//Basic class everyone gets this
pPlayer->GiveNamedItem( "weapon_crowbar" );
pPlayer->GiveNamedItem( "weapon_handgrenade" );
pPlayer->GiveNamedItem( "weapon_handgrenade" );
if (pPlayer->m_iPlayerClass == 1) //If m_iPlayerClass is equal to 1...
{
//Barbar
g_engfuncs.pfnSetClientKeyValue( pPlayer->entindex(), g_engfuncs.pfnGetInfoKeyBuffer(
pPlayer->edict() ), "model", "merc" );//Das Spielermodell
// Hier die Panzerung
pPlayer->pev->armorvalue=30;
// and player speed.
// Ausgabe des Satzes
ClientPrint(pPlayer->pev, HUD_PRINTTALK, "You are now a Barbar.");
}
else if (pPlayer->m_iPlayerClass == 2) //If m_iPlayerClass is equal to 2...
{
// Name
}
else if (pPlayer->m_iPlayerClass == 3) //If m_iPlayerClass is equal to 3...
{
// Name

}
}
}

Bitte helft mir!

--

zum Seitenanfang zum Seitenende Profil || Suche
001
02.08.2000, 12:32




geh mal in die client.cpp und such da nach den ganzen else if commands, und ig als letztes
else if( FStrEq(pcmd, "changeclass" ) ) {} ein, dam müsste gehen.

Kann es ein das dir coden nicht gan so liegt?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
02.08.2000, 13:28
Morgan in Urlaub



Hmm! Jetzt kommt zwar nicht mehr unknownk command aber mein Menü wird immer noch nicht gezeigt! Was mass ich da in die beiden Klammern schreiben ???

--

zum Seitenanfang zum Seitenende Profil || Suche
003
02.08.2000, 14:36




in den beisen klammern muss nichts stehen, aber hier wird
else if (FStrEq(pcmd, "changeclass" ))
{
//zeigt das Menü
ShowMenu (pPlayer, 0x3F, 0, 0, "#class_list");
return TRUE;
}
ja nur der text aus der titles.txt angezeigt nichts anderes.
hast du denn was in die titles.txt reingeschrieben?

--

zum Seitenanfang zum Seitenende Profil || Suche
004
02.08.2000, 15:47
Morgan in Urlaub



Ich habe etwas im Titles.txt! Das klappt nicht! Das hatte ich auch schon ausprobiert!! Der sagt dann er kennt das schowmenu net!

--

zum Seitenanfang zum Seitenende Profil || Suche
005
03.08.2000, 12:32
Morgan in Urlaub



Ich raffe gar nichts mehr!! Klappt das alte Menü denn nicht mehr mit dem SDK2 oder wird das anders aktiviert ??
Der Menü Code ist doch so oder:

void ShowMenu(CBasePlayer * pPlayer, int bitsValidSlots, int DisplayTime, bool DisplayNow, char menu[500])
{
MESSAGE_BEGIN( MSG_ONE, gmsgShowMenu, NULL, pPlayer->pev);
WRITE_SHORT( bitsValidSlots );
WRITE_CHAR( DisplayTime );
WRITE_BYTE( DisplayNow );
WRITE_STRING ( menu );
MESSAGE_END();

--

zum Seitenanfang zum Seitenende Profil || Suche
006
14.08.2000, 14:39
Morgan[UHLO]



Hallo ihr Coder da draußen! Help!!

--

zum Seitenanfang zum Seitenende Profil || Suche
007
14.08.2000, 22:09
Masterstroke



Also, meine Funktion sieht so aus:
void ShowMenu (CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL fNeedMore, char *pszText)
{
MESSAGE_BEGIN( MSG_ONE, gmsgShowMenu, NULL, pPlayer->pev);
WRITE_SHORT( bitsValidSlots);
WRITE_CHAR( nDisplayTime );
WRITE_BYTE( fNeedMore );
WRITE_STRING (pszText);
MESSAGE_END();
}
Und sie funtioniert einwandfrei mit dem neuen SDK! Was für einen Fehler bekommst du denn?

--

Masterstroke
resourcecode.de

zum Seitenanfang zum Seitenende Profil || Suche
008
15.08.2000, 15:46
Morgan[UHLO]



Ich bekomme keinen Fehler! Bloß meine Menüs werden nicht angezeigt ! PS: Wann bekommt ihr bei dhcc endlich mal ein vgui menü tutorial??

--

zum Seitenanfang zum Seitenende Profil || Suche
009
16.08.2000, 01:34
Masterstroke



...seltsam...wie gesagt, bei mir klappts...lege doch mal in deiner Teamplay-Gamerules (ich denke die bnutzt du, oder?) ein Menü auf einen Befhel...Also, so z.B. (in ClientCommand)

else if ( FStrEq( pcmd, "checkmenue" ) )
{
char tus[500] = "";
sprintf(tus,"Test-Menue
1: 1-Punkt
2: 2-Punkt
3: 3-Punkt
");
ShowMenu(pPlayer,0x7,0,0,tus);
return TRUE;
}
So muesste es eigentlich klappen....

--

Masterstroke
resourcecode.de

zum Seitenanfang zum Seitenende Profil || Suche
010
18.08.2000, 14:12
Morgan[UHLO]



Das klappt nicht Masterstroke! Da kommt dan Unknown Command!

--

zum Seitenanfang zum Seitenende Profil || Suche
011
19.08.2000, 00:30
Masterstroke



...da liegt der Hase im Pfeffer...
Wenn du in der teamplay_gamerules.cpp einen Command(ich hoffe du kennst die if - else if - else Syntax...) wirklich richtig eingefügt hast, dann rufst du ganz einfach nicht Teamplay auf...
Also: Prüfe, ob du entweder in den Advanced Options Teamplay an hast, oder (besser) geh in die gamerules.cpp zu InstallGamerules und ändere es da so, das nur return new Teamplay(oder so..) Da ist, auf jeden Fall nicht Mulitplayer Gamerules, denn sonst geht es nicht..!

--

Masterstroke
resourcecode.de

zum Seitenanfang zum Seitenende Profil || Suche
012
19.08.2000, 08:25
Morgan[UHLO]



Daran habe ich noch gar nicht gedacht! Ich werde es ausprobieren. Danke Masterstroke!

--

zum Seitenanfang zum Seitenende Profil || Suche
013
20.08.2000, 16:24
Morgan[UHLO]



Es klappt doch masterstroke! Eine kleine(oder)große bitte habe ich noch! Könntest du mir vielleicht sagen, wie man das selbe menü als VGUI Menü hinbekommt! Ich vertraue auf deine Fähigkeiten! (=)) PS: Hast du nicht Lust bei unserem Mod Ultima Half-Life Online mitzumachen? So einen guten Coder könnten wir gebrauchen! (=)) Cu

--

zum Seitenanfang zum Seitenende Profil || Suche
014
21.08.2000, 17:25
Masterstroke



...tja...Was habe ich gesagt?? Ich hatte doch Recht...Leider muss ich dir auch sagen, dass ich leider im Moment überhaupt keine Zeit für Half-Life Mods habe-->*sorry*

--

Masterstroke
resourcecode.de

zum Seitenanfang zum Seitenende Profil || Suche
015
22.08.2000, 07:00
Morgan[UHLO]



Und was ist mit dem VGUI System ?

--

zum Seitenanfang zum Seitenende Profil || Suche
016
22.08.2000, 23:40
Prefect



Das Menü einfach so fürs VGUI umzuschreiben ist gar nicht so leicht. Natürlich könnte jemand (ich ganz sicher nicht) einen allgemeinen VGUI-Menücode schreiben, der einen Eintrag aus der titles.txt nimmt und ihn in ein VGUI-Menü umformt.

Ansonsten bleibt dir nichts anderes übrig als eine neue Menüklasse zu erstellen.

Und, ich wiederhole mich (frag mich _bitte_ nicht wie oft *sigh*), dazu gibt es ein eigentlich ganz einfaches, und man könnte meinen verständliches, Rezept: Du kopierst ein existierendes VGUI-Menü (Teammenu oder Classmenu), und veränderst dabei einfach alle Namen im Menü durch die Namen deines eigenen. Neben der vgui_XXX.cpp und den Einträgen in der vgui_TeamFortressViewport.h mußt du allerdings auch noch ein paar Membervariablen und -funktion vom TeamFortressViewport duplizieren (z.B. CreateTeam/ClassMenu(), und die Orte wo sie aufgerufen werden). Dazu eignet sich am Besten eine Volltextsuche nach z.B. TeamMenu.

Der nächste Schritt ist, alles, was nicht in dein Menü paßt, gnadenlos rauszulöschen, und dann Stück für Stück die Teile einzufügen, die du noch brauchst.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
017
23.08.2000, 07:35
Morgan[UHLO]



Ich werds versuchen!

--

zum Seitenanfang zum Seitenende Profil || Suche