Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.08.2000, 10:21
Morgan[UHLO]



Ich habe jetzt ein Vgui Menu (client.cpp) und ein Geldsystem (hl.dll)! Die variable die das Geld hält ist m_iMoneyAmount! Wie kann ich das ganze in meinem VGUI Menü anzeigen ?? Und wie macht man eine Scrollleiste ??

--

zum Seitenanfang zum Seitenende Profil || Suche
001
31.08.2000, 16:19
Morgan[UHLO]



Keiner der mir helfen kann ? Na toll, da ist Prefect für 4 Monate nach Irlande und schon kann hier keiner mehr helfen . Gibt es hier nur 4 gute Coder oder was ? (Prefect, TTT, Masterstroke, BigGuy )

--

zum Seitenanfang zum Seitenende Profil || Suche
002
05.09.2000, 19:18
DUMDUM



Tja, wiesss net, aber ich hab ne lösung!
also:
du suchst dir ne stelle wo message_begin oder so steht,
am besten eine von der du glaubtst dass sie oft aufgerufen wird.
hier fügst du so was ein:
WRITE_SHORT(pPlayer->M_iMoney) //oder so
dann suchst du dir in der client.dll dir stelle an der die daten von der message gelesen werden.
da fügst du ein:
short geld;
geld = READ_SHORT(); // muss aber in die reihenfolge passen!

--

zum Seitenanfang zum Seitenende Profil || Suche
003
06.09.2000, 18:23
Morgan[UHLO]



Hmm! Das klappt nicht! Ich meinte oben natürlich client.cpp nicht client.cpp!!

--

zum Seitenanfang zum Seitenende Profil || Suche
004
09.09.2000, 14:20
BigDaddy



LOL! du meinst wohl: client.dll
Wie das ganze in der Server-DLL aussehen muss, kann ich dir sagen, allerdings habe ich keine Ahnung, wie man das ganze dann mit der client.dll handhabt:
in der player.cpp musst du erstmal bei der initialisierung der ganzen gmsg's eine neue Zeile eintragen:

int gmsgMoney = 0;

du gehst zu den REG_USER_MSG's und trägst dort etwa ein:

gmsgMoney = REG_USER_MSG ("Money_Amount", 1);

die 1 in der Zeile kann variieren, je nachdem wie lang deine MSG wird. Ist die länge in der Laufzeit variabel, musst du den Wert auf -1 setzen.
In der Player.cpp kannst du jetzt auch eine neue Funktion erstellen: (am besten ganz am Ende)

void CBasePlayer::SendPlayersMoney(int Money_Amount)
{
MESSAGE_BEGIN(MSG_ONE, gmsgMoney, NULL, pev);
WRITE_BYTE( Money_Amount );
MESSAGE_END();
}

Über diese Funktion kannst du dann in die Client-DLL die Geldmenge senden. Diese Funktion musst du aber natürlich auch noch in der player.h definieren...
Mal schauen, wie man das dann in der client-dll empfängt. Es kann auch sein, dass du die Message auch in der delta.lst eintragen musst, glaube ich aber nicht...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
09.09.2000, 15:28
SpineBuster



hi Morgan!

Ich hab da folgende Idee:

Da es sich ja um ein VGUI Menü handelt spielt sich das ganze erstmal in der
vgui_TeamFortressViewport.cpp der client.dll ab. Du erstellst so ab Zeile 2000 eine neue Funktion:

int TeamFortressViewport::MsgFunc_GetMoney( const char *pszName, int iSize, void *pbuf )
{
BEGIN_READ( pbuf, iSize );
m_iMoneyAmount = READ_LONG(); //Oder wie Du deine Variable in der client.dll auch nennst

return 1;
}

So, diese Funktion wird jetzt via Messages von der mp.dll bzw hl.dll aufgerufen.

Dazu erstellst du, ähnlich wie BigDaddy sagte, in der player.cpp bei den ganzen anderen
eine neue Variable:
int gmsgSendMoney = 0;

und dann weiter unten

gmsgSendMoney = REG_USER_MSG( "GetMoney" , 4); //4 bytes schreiben, damit man genug reinbekommt :D

und schliesslich schreibst du in die
void CBasePlayer :: UpdateClientData( void )
Funktion unter die SetFov Message deine eigene, also:

MESSAGE_BEGIN( MSG_ONE, gmsgSendMoney, NULL, pev);
WRITE_LONG( m_iMoneyAmount );
MESSAGE_END();

Der Rest ist Dir hoffentlich klar... :D

Ich hoffe, ich konnte Dir helfen.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
09.09.2000, 19:12
Morgan[UHLO]



Danke! Ich werde es ausprobieren! Ach noch ne Frage: Wenn es klappen sollte, wie kann ich das ganze dann in einem VGUI MEnü anzeigen! Ich habe schon ein Vgui Fenster!

--

zum Seitenanfang zum Seitenende Profil || Suche
007
10.09.2000, 00:02
einstein.ThW



du köntest es sooo einfach haben:

saug dir den HLR scorce und schau es nach

--

zum Seitenanfang zum Seitenende Profil || Suche
008
10.09.2000, 11:52
SpineBuster



hi,

Einstein: Hmm, meint Ihr, dass HL Repulse, ich beziehe das jetzt NICHT auf Morgan, für Anfänger geeignet ist? Besteht nicht auch die Gefahr, dass jemand einfach den ganzen Source kopiert und bei sich einbaut, ohne dass er es überhaupt versteht? Naja, egal.

Also Morgan:

Zu meinem vorherigem Post, es kann sein, dass du noch die Zeile

int TeamFortressViewport::MsgFunc_GetMoney( const char *pszName, int iSize, void *pbuf )

in die vgui_TeamFortressViewport.h, so ab Zeile 380 einfügen musst(probiers aus),
und zu deiner Frage, Erstelle zunächst eine neue Variable in deinem Code:

TextPanel *m_pText;
CSchemeManager *pSchemes = gViewPort->GetSchemeManager(); //Wenn du es nicht schon hast
SchemeHandle_t hTeamWindowText = pSchemes->getSchemeHandle( "Briefing Text" ); //s.o.

So, jetzt fügst du folgendes noch in Deinen Code:

m_pText = new TextPanel("", 0,0, x , y ); //x = Breite des Textfeldes, y = Höhe des T.
m_pText->setParent( m_pWindow ); //Welches ist der Parent? Das Window o. Die ScrollBar usw.
m_pText->setFont( pSchemes->getFont(hTeamWindowText) );
pSchemes->getFgColor( hTeamWindowText, r, g, b, a );
m_pText->setFgColor( r, g, b, a );
pSchemes->getBgColor( hTeamWindowText, r, g, b, a );
m_pText->setBgColor( r, g, b, a );

char sz[255];

sprintf(sz, "%i Dollars", m_iMoneyAmount);
m_pText->setText(sz);

Ich hoffe ich konnte helfen

Achja, alle, die mich in ICQ anlabern wollen (könnte ja sein *g*) meine Nummer ist:75142526

--

zum Seitenanfang zum Seitenende Profil || Suche
009
10.09.2000, 17:34
einstein.ThW



@SpineBuster: Fals jemand den code in seinen mod einbauen sollte OHNE uns zu fragen und wir stellen dies fest dann wird es seinen mod nicht mehr lange geben und er wird wahrscheinlich eine sehr hohoe geldstrafe bezahlen müssen da das kopieren von open-sorce projekten ILLIGAL ist.
aber mann klönnte naturlich den code als hilfe nehemen da hab ich nichts gegen. und fals man ihn wirklich kopieren will sollte man mich erst fragen.

--

zum Seitenanfang zum Seitenende Profil || Suche
010
10.09.2000, 18:21
Morgan[UHLO]



Danke Spinebuster! PS: Du abeitest nicht zufällig an einem Mod ? Wenn ja kannste bei uns mitmachen! (http://hlfuture.net-games.com - Ultima Half-Life Online)

--

zum Seitenanfang zum Seitenende Profil || Suche
011
10.09.2000, 22:00
SpineBuster



Bitte Morgan! *g*

Ich hab' dich auf meine ICQ Liste hinzugefügt. Wir sprechen mal darüber, ich arbeite nämlich an keinem Mod...

My ICQ: 75142526

--

zum Seitenanfang zum Seitenende Profil || Suche
012
11.09.2000, 13:05
BigDaddy



Wegen Open-Source:
Ihr wisst ja, das die Rechte für alle Mods, die mit dem SDK gemacht worden sind, bei VALVE-Software liegen... Also könnt ihr wahrscheinlich wenig mit der GNU anfangen...

--

zum Seitenanfang zum Seitenende Profil || Suche
013
11.09.2000, 14:20
Morgan[UHLO]



Ich habe ein Problem! So klappt jetzt alles! Bloß das Geld ist nich die richtige Menge! Ich habe festgelegt das der spieler am anfang 500 bekommt! Im Menü steht dann irgendwas so: 120997123 ?

--

zum Seitenanfang zum Seitenende Profil || Suche
014
04.10.2000, 17:53
Prefect-Eire



BigDaddy: Das stimmt nicht ganz. Valve (bzw. Sierra) hat das Recht, die Mods zu verkaufen. In sofern hast du recht, weil die GNU-Lizenz dafuer eigentlich abgeaendert werden muesste. Aber: Valve hat keinerlei Rechte am Sourcecode des Mods!

cu,
Prefect

--

Hi! I'm a .signature *virus*! Copy me into your ~/.signature to help me spread!
No virus scan is perfect!

zum Seitenanfang zum Seitenende Profil || Suche