Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
09.01.2001, 11:16
calle



Hallo Leute !!

Ich bin gerade dabei ein Tut über das Basisgeldsystem in die tat umzusetzen, wobei ich am ende auf ein paar Fehler stoße.
Mein Code läst sich 1a compilieren wenn ich diesen teil nicht einbaue:
------------------------------------------------------------------------
Um das Geld noch anzeigen zu lassen müsst ihr das

case 69:
{
if (g_pGameRules->IsTeamplay())
{
ClientPrint(pev, HUD_PRINTCENTER, UTIL_VarArgs("Account: $%d",
m_iMoneyAmount));
}
break;

bei den impuslecommands einragen. Einfach auf "in Dateien Suchen" klicken und
dann nach "impulse" suchen!

Dann geht ihr in die config.cfg in eurem Mod und legt eine Taste auf die
Funktion impulse 69!
------------------------------------------------------------------------

Aber wenn ich diesen Teil in der Player.cpp eibaue gibt es viele Fehler !
Ich will aber natürlich mein Geld anzeigen lassen aber mit den impuslecommands komme ich wolh nicht zurecht !
Wenn ich es mache, wie es beschrieben ist, (Einfach auf "in Dateien Suchen" klicken und dann nach "impulse" suchen!) dann findet er sehr viele übereinstimmungen, in unterschiedlichen Dateien.
Muss ich in allen Dateien was ändern, oder in Welchen ?
Kann mir jemand die mir die dateien nennen, wo ich das einragen muss !
Das wäre sehr nett von euch !!
Achja eine Frage abe ich noch ! kann man das Buymenu auch mit einem VGUI Menu anzeigen !
Es wäre nett wenn mir das einer erklärt !
Vielen Dank schon mal im Voraus.

cu calle

--

http://www.callesclub.de

zum Seitenanfang zum Seitenende Profil || Suche
001
09.01.2001, 11:36
TheTinySteini



player.cpp, Funktion CBasePlayer::ImpulseCommands():

void CBasePlayer::ImpulseCommands( )
{
TraceResult tr;// UNDONE: kill me! This is temporary for PreAlpha CDs

// Handle use events
PlayerUse();

int iImpulse = (int)pev->impulse;
switch (iImpulse)
{
case 99:
{

int iOn;

if (!gmsgLogo)
{
iOn = 1;
gmsgLogo = REG_USER_MSG("Logo", 1);
}
else
{
iOn = 0;
}

ASSERT( gmsgLogo > 0 );
// send "health" update message
MESSAGE_BEGIN( MSG_ONE, gmsgLogo, NULL, pev );
WRITE_BYTE(iOn);
MESSAGE_END();

if(!iOn)
gmsgLogo = 0;
break;
}
// =====================
// HIER DEN CODE EINFÜGEN!!!
// =====================
case 100:
// temporary flashlight for level designers
if ( FlashlightIsOn() )

So, sollte funktionieren. In anderen Dateien musst du nix ändern, auch wenn da was von impulse drinsteht. Ansonsten: Buymenu in VGUI geht, klar, aber ganz einfach ist das nicht... und auch nicht unbedingt einfach zu erklären - da müsste man dir schon fast den fertigen Code schicken, und ich glaub nicht, dass das hier jemand macht ;-)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
002
09.01.2001, 11:57
calle



Danke TheTinySteini !
Ich werde es heute Abend gleich ausprobieren !
also muss ich den Buy-Menu Code so einfügen !

if(!iOn)
gmsgLogo = 0;
break;
}
// =====================
case 69:
{
if (g_pGameRules->IsTeamplay())
{
ClientPrint(pev, HUD_PRINTCENTER, UTIL_VarArgs("Account: $%d",
m_iMoneyAmount));
}
break;
// HIER DEN CODE EINFÜGEN!!!
// =====================
case 100:
// temporary flashlight for level designers
if ( FlashlightIsOn() )

So, sollte funktionieren. In anderen Dateien musst du nix ändern, auch wenn da was von impulse drinsteht. Ansonsten: Buymenu in VGUI geht, klar, aber ganz einfach ist das nicht... und auch nicht unbedingt einfach zu erklären - da müsste man dir schon fast

So war das richtig ?
Und dann kann ich das Geld im Hud sehen !!

DANKE

Calle

--

http://www.callesclub.de

zum Seitenanfang zum Seitenende Profil || Suche
003
09.01.2001, 12:38
Buy-Menu-Man



Ich hab ein VGUI-Buy-Menu gemacht!
Was ist da dran schwer????
Ist doch gleich wie der Teamauswahlscreen!!!
Nur halt mit anderen Beschriftungen der Buttons und anderen Commands, die losgeschickt werden!

--

http://battletech-hl.teamfortress2.de

zum Seitenanfang zum Seitenende Profil || Suche
004
09.01.2001, 13:15
calle



Kannst du mir Teile davon nicht mal posten !
Ursprünglich wollte ich ja auch VGUI Buy & Team & Class Menu ! Aber ich habe Propleme mit den VGUI Menus, weil ich nicht weis was in der client.ccp einfügen soll !
Ich habe mir alle Tuts die es zum VGUI gibt durch gelesen !
Aber wie ma die Commands einbaut weis ich immer noch nicht !!
Es wäre nett wenn du mir Hilfst !

Danke
Calle

--

http://www.callesclub.de

zum Seitenanfang zum Seitenende Profil || Suche
005
09.01.2001, 13:56
Another1



noch ne frage
ClientPrint(pev, HUD_PRINTCENTER, UTIL_VarArgs("Account: $%d",
m_iMoneyAmount));

wo wird der wert gesetzt bzw die variable definiert??

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
006
09.01.2001, 14:27
calle



Hier ist das Tut !

Quelle: HLPP Autor: Gavin

Das Tutorial ist in Englisch von Gavin. Es ist von Zsort ins deutsche übersetzt
und ein bischen verbessert worden.

Legende:

neuer Code

alter Code

Als erstes müsst ihr in die Player.h gehen.

Über int m_iPlayerSound; schreibt ihr int m_iMoneyAmount;

Erklärung:

Diese Variable hält das Geld, das jeder Spieler für verschiedene Dinge
bekommt, wie z.B. wenn er jemanden tötet der man selber stirbt.

Öffne nun player.cpp und geh zu der Funktion CBasePlayer::Killed.

Nun fügst du über den Linien

SetThink(PlayerDeathThink);

pev->nextthink = gpGlobals->time + 0.1;

diese Zeile ein:

m_iMoneyAmount += 100;

Das gibt der einer Person 100 DM wenn er stribt.

Öffne jetzt client.cpp und geh zur Funktion ClientKill

Unter pl->Killed( pev, GIB_NEVER ); schreibts du pl->m_iMoneyAmount -= 100;

Das zieht dir 100 DM ab, wenn du dich selbst tötest. Nun wollen wir
einer Person Geld geben, wenn sie jemanden tötet. Dazu öffnest du
multiplay.gamerules.cpp und gehst zu der Funktion
IpointsForKill und schreibst über return 1;
die Zeile pAttacker->m_iMoneyAmount += 500;

Das gibt dem Killer 500 DM. Aber was will man mit dem ganzen Geld,
wenn man sich nichts dafür kaufen kann ? Um das zu ändern gehen wir
in die teamplay_gamerules.cpp und fügen unter
#include "game.h" das ein: :

extern int gmsgShowMenu;
void ShowMenu(CBasePlayer *pPlayer, int bitsValidSlots, int nDisplayTime, BOOL
fNeedMore, char pszText[500])
{
MESSAGE_BEGIN( MSG_ONE, gmsgShowMenu, NULL, pPlayer ->pev);
WRITE_SHORT( bitsValidSlots);
WRITE_CHAR( nDisplayTime );
WRITE_BYTE( fNeedMore );
WRITE_STRING (pszText);
MESSAGE_END();

}

Erklärung: Das ist nicht der ganze Menü Code. Lest das Menu tutorial
bei Wavelength. Das erlaubt uns ein Kaufmenü zu zeigen, indem man
Waffen kaufen kann.
Nun geh zu der clientcommand Funktion und füge über return FALSE; das ein:

else if (FStrEq(pcmd, "buy" ))
{
ShowMenu(pPlayer, 0x1F, 20, 0, "#buy_menu");
pPlayer->m_iMenu = 1;
return TRUE;
}

Nun öffne player.h und füge entweder über oder unter m_iMoneyAmount; dies ein:
int m_iMenu;

Nun gehe zurück in die teamplay_gamerules.cpp und da zu der clientcommand
Funktion.

Unter int slot = atoi( CMD_ARGV(1) ); fügst du das ein:

if(pPlayer->m_iMenu == 1)
{
switch(slot)
{
case 1:
if(pPlayer->m_iMoneyAmount <= 199)
return TRUE;
pPlayer->GiveNamedItem( "weapon_python" );
pPlayer->m_iMoneyAmount -= 200;
break;
case 2:
if(pPlayer->m_iMoneyAmount <= 399)
return TRUE;
pPlayer->GiveNamedItem( "weapon_shotgun" );
pPlayer->m_iMoneyAmount -= 400;
break;
case 3:
if(pPlayer->m_iMoneyAmount <= 599)
return TRUE;
pPlayer->GiveNamedItem( "weapon_9mmAR" );
pPlayer->m_iMoneyAmount -= 600;
break;
case 4:
if(pPlayer->m_iMoneyAmount <= 799)
return TRUE;
pPlayer->GiveNamedItem( "weapon_handgrenade" );
pPlayer->m_iMoneyAmount -= 800;
break;
case 5:
if(pPlayer->m_iMoneyAmount <= 999)
return TRUE;
pPlayer->GiveNamedItem( "weapon_crossbow" );
pPlayer->m_iMoneyAmount -= 1000;
break;
}
}

Das sind die Sachen die man kaufen kann.
Nun musst du nur noch eine Textdatei mit dem namen titles.txt erstellen und
das einfügen:

buy_menu

{

=== Buy Weapons ===

Waffe Preis

1. MP5 500

2. Shotgun 400

3. Python 300

4. Crossbow 700

5. RPG 1000

}

Die Waffennamen und den Preis müsst ihr je nachdem schreiben wie ihr es oben
eingestellt bzw. wie ihr die Waffen nennen wollt. habt.

Um das Geld noch anzeigen zu lassen müsst ihr das

case 69:
{
if (g_pGameRules->IsTeamplay())
{
ClientPrint(pev, HUD_PRINTCENTER, UTIL_VarArgs("Account: $%d",
m_iMoneyAmount));
}
break;

bei den impuslecommands einragen. Einfach auf "in Dateien Suchen" klicken und
dann nach "impulse" suchen!

Dann geht ihr in die config.cfg in eurem Mod und legt eine Taste auf die
Funktion impulse 69!

Um das Kaufmenü noch anzeigen zu lassen, legt ihr auch eine Taste in der
Config.cfg auf buy.

© 2000, Gavin

--

http://www.callesclub.de

zum Seitenanfang zum Seitenende Profil || Suche