Tutorial: scorePopUp wie in Cod4/Cod6

serthy
Soo heute bin ich nun mal an der reihe und zeige euch (falls noch jemand cod2 spielen sollte..) wie man die gelben punkte-anzeigen für einen kill in cod2 reinbringt

also als erstes müsstet ihr euch informieren wie man einen mod erstellt, solltet genug hier im forum finden

so
erstellt euch eine neue textdatei und nennt sie:

_scorePopup.gsc

in die kommt dann folgendes rein:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:



init()
{
	precachestring(&"+&&1");	// alternativ mit Localized Strings:	precachestring(&"MEINMODNAME_PLUS");
}

onPlayerConnect()
{
	for(;;)
	{
		level waittill( "connected", player );
		
		player.xpUpdateTotal = 0;
		player.bonusUpdateTotal = 0;
	
		player.hud_scorePopup = newClientHudElem( player );
		player.hud_scorePopup.horzAlign = "center";
		player.hud_scorePopup.vertAlign = "middle";
		player.hud_scorePopup.alignX = "center";
		player.hud_scorePopup.alignY = "middle";
 		player.hud_scorePopup.x = 0;
		player.hud_scorePopup.y = -60;
		player.hud_scorePopup.fontscale = 0.82;
		player.hud_scorePopup.archived = false;
		player.hud_scorePopup.color = (0.5,0.5,0.5);
		player.hud_scorePopup.sort = 10000;

		player.hud_scorePopup fontPulseInit();
	}
}

fontPulseInit()
{
	self.baseFontScale = self.fontScale;
	self.maxFontScale = self.fontScale * 4;
	self.inFrames = 3;
	self.outFrames = 5;
}

fontPulse( player )
{
	self notify ( "fontPulse" );
	self endon ( "fontPulse" );
	player endon( "disconnect" );
	player endon( "joined_team" );
	player endon( "joined_spectators" );
	
	scaleRange = self.maxFontScale - self.baseFontScale;
	
	while( self.fontScale < self.maxFontScale )
	{
		self.fontScale = _getmin( self.maxFontScale , self.fontScale + ( scaleRange / self.inFrames ) );
		wait 0.05;
	}
	while( self.fontScale > self.baseFontScale )
	{
		self.fontScale = _getmax( self.baseFontScale , self.fontScale - ( scaleRange / self.outFrames ) );
		wait 0.05;
	}
}

scorePopup( amount , bonus , hudColor )
{
	self endon( "disconnect" );
	self endon( "joined_team" );
	self endon( "joined_spectators" );

	if ( amount == 0 )
		return;

	self notify( "scorePopup" );
	self endon( "scorePopup" );

	self.xpUpdateTotal += amount;
	self.bonusUpdateTotal += bonus;

	wait 0.05;

	if ( self.xpUpdateTotal < 0 )
		self.hud_scorePopup.label = &"";
	else
		self.hud_scorePopup.label = &"+&&1";	// alternativ mit Localized Strings:	self.hud_scorePopup.label = &"MEINMODNAME_PLUS";


	self.hud_scorePopup.color = hudColor;

	self.hud_scorePopup setValue( self.xpUpdateTotal );
	self.hud_scorePopup.alpha = 0.85;
	self.hud_scorePopup thread fontPulse( self );

	increment = _getmax( int( self.bonusUpdateTotal / 20 ), 1 );
		
	if ( self.bonusUpdateTotal )
	{
		while ( self.bonusUpdateTotal > 0 )
		{
			self.xpUpdateTotal += _getmin( self.bonusUpdateTotal , increment );
			self.bonusUpdateTotal -= _getmin( self.bonusUpdateTotal , increment );
			
			self.hud_scorePopup setValue( self.xpUpdateTotal );
			
			wait 0.05;
		}
	}	
	else
	{
		wait 1;
	}

	self.hud_scorePopup fadeOverTime( 0.75 );
	self.hud_scorePopup.alpha = 0;
	
	wait 2;
	self.xpUpdateTotal = 0;		
}

/*===Kleine Hilfsfunktionen===*/

_getmax( a , b )
{
	if( a > b )		return a;
	else			return b;
}

_getmin( a , b )
{
	if( a < b )		return a;
	else			return b;
}



so
dann müsst ihr folgendes in euren gametypes.gsc aufrufen (zB: sd.gsc oder tdm.gsc )

--> oben in die main funktion, wo viele init(); stehen kommt das drunter:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
thread maps\mp\gametypes\_scorePopup::init();



--> dann in die Callback_PlayerConnect() funktion kommt das i-wo ganz unten hin:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
thread maps\mp\gametypes\_scorePopup::onPlayerConnect();



--> und schlussendlich überall da wo die gelben punkte angezeigt werden sollen kommt das hin:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
thread maps\mp\gametypes\_scorePopup::scorePopup( amount , bonus , hudColor );



zB: in die callback_playerKilled() funktion
da steht das so etwas wie das drin:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
attacker thread maps\mp\gametypes\_scorePopup::scorePopup( 100 , 0 , ( 0.94 , 0.81 , 0.00 ) );



wenn ihr mit Localized strings arbeiten wollt dann erstellt eine neue meinemodname.str datei und rein kommt folgendes (oder ihr fügt es eurer hinzu):

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VERSION             "1"
CONFIG              "C:\trees\cod2\bin\StringEd.cfg"
FILENOTES           ""


REFERENCE           PLUS
LANG_ENGLISH        "+&&1"
LANG_GERMAN         "+&&1"

ENDMARKER



hier noch ein paar farben:

0.5, 0.0, 0.8 - Sexxy purple
1.0, 0.0, 0.0 - Epic Red
1.0, 0.0, 0.4 - Preppy Pink
0.0, 0.8, 0.0 - Epic Green
0.9, 1.0, 0.0 - Banana Yellow
1.0, 0.5, 0.0 - Burnt Orange
0.0, 0.5, 1.0 - Turquoise
0.0, 0.0, 1.0 - Deep Blue
0.3, 0.0, 0.3 - Deep Purple
0.0, 1.0, 0.0 - Light Green
0.5, 0.0, 0.2 - Maroon
0.0, 0.0, 0.0 - Black
1.0, 1.0, 1.0 - White
0.0, 1.0, 1.0 - Cyan

und hier ein Screen:




Viel spass smile

wenn es fehler, eroor oder unklarheiten gibt, bitte posten