[Source] Fragen

06/01/2011 16:28 ~Product~#1
Hallo liebe Leute

ich habe heute 1 Frage da ich selbst nicht viel mit dem Source weiß frag ich euch einfach mal :P

1.Frage = Wo stell ich das ein das Amplis bis zu 5 Stück stapelbar sind also aktivierbar

Falls jemand die Antwort weiß bitte um hilfe.

mfg. und danke im vorraus.
06/01/2011 16:38 Sedrika#2
In der source mal nach dem normalen Ampli suchen (worldserver) und dann lernen, wies da aufgebaut ist =)
06/01/2011 17:08 ~Product~#3
hab jetzt im world server z.B mal alles nach Exp abgesucht da der ampli allgemein nicht gefunden hatte und da hab ich nichts gefunden was darauf hingedeutet hatte
06/01/2011 17:09 Sedrika#4
Du weisst schon, dass du nach der Item ID suchen sollst ?
Also was in der Propitem steht.
Sollte in DpSvr.cpp sein, wenn ich mich nicht falsch errinere.
06/01/2011 17:17 Krustenkäse#5
glaube eher, dass das in der MoverSkill.cpp geprüft wird:

Code:
	case II_SYS_SYS_SCR_AMPESA:
	case II_SYS_SYS_SCR_AMPESB:
	case II_SYS_SYS_SCR_AMPESC:
	case II_SYS_SYS_SCR_AMPESD:
	case II_SYS_SYS_SCR_AMPESE:
#ifdef __S_ADD_EXP
	case II_SYS_SYS_SCR_AMPESS:
#endif // __S_ADD_EXP
		{
			if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPES ) || HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPEM ) )
				nResult = 2;
			else if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPI ) )
				nResult = 3;

			// ·¹º§ °Ë»ç
			int nLevel = GetLevel();

			CString str;
			if( pItemProp->dwID == II_SYS_SYS_SCR_AMPESA )
			{
				if( 20 < nLevel )
				{
					str.Format( "%d - %d", 1, 20 );
					((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSELEVEL, "\"%s\"", str ); // 
					nResult = 99;
				}
			}
			else if( pItemProp->dwID == II_SYS_SYS_SCR_AMPESB )
			{
				if( nLevel < 21 || 40 < nLevel )
				{
					str.Format( "%d - %d", 21, 40 );
					((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSELEVEL, "\"%s\"", str ); // 
					nResult = 99;
				}
			}
			else if( pItemProp->dwID == II_SYS_SYS_SCR_AMPESC )
			{
				if( nLevel < 41 || 60 < nLevel )
				{
					str.Format( "%d - %d", 41, 60 );
					((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSELEVEL, "\"%s\"", str ); // 
					nResult = 99;
				}
			}
			else if( pItemProp->dwID == II_SYS_SYS_SCR_AMPESD )
			{
				if( nLevel < 61 || 80 < nLevel )
				{
					str.Format( "%d - %d", 61, 80 );
					((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSELEVEL, "\"%s\"", str ); // 
					nResult = 99;
				}
			}
			else if( pItemProp->dwID == II_SYS_SYS_SCR_AMPESE )
			{
				if( nLevel < 81 || 120 < nLevel )
				{
					str.Format( "%d - %d", 81, 120 );
					((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSELEVEL, "\"%s\"", str ); // 
					nResult = 99;
				}
			}

			if( !(nResult == 2 || nResult == 3 || nResult == 99 ) )
			{
				[COLOR="Red"]BOOL bBuf[3];[/COLOR]
				int nBufCount = 0;
				BOOL bSpecial = FALSE;
				int nSpecialCount = 0;

				ZeroMemory( bBuf, sizeof( bBuf ) );
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESA ) )
				{
					bBuf[0] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESA1 ) )
				{
					bBuf[1] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESA2 ) )
				{
					bBuf[2] = TRUE;		++nBufCount;
				}

				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESB ) )
				{
					bBuf[0] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESB1 ) )
				{
					bBuf[1] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESB2 ) )
				{
					bBuf[2] = TRUE;		++nBufCount;
				}

				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESC ) )
				{
					bBuf[0] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESC1 ) )
				{
					bBuf[1] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESC2 ) )
				{
					bBuf[2] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESD ) )
				{
					bBuf[0] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESD1 ) )
				{
					bBuf[1] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESD2 ) )
				{
					bBuf[2] = TRUE;		++nBufCount;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESE ) )
				{
					bBuf[0] = TRUE;		++nBufCount;
				}
#ifdef __S_ADD_EXP
				[COLOR="Red"]if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESS ) )
				{
					bBuf[0] = TRUE;		++nBufCount;	nSpecialCount++;//bSpecial = TRUE;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESS1 ) )
				{
					bBuf[1] = TRUE;		++nBufCount;	nSpecialCount++;//bSpecial = TRUE;
				}
				if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_AMPESS2 ) )
				{
					bBuf[2] = TRUE;		++nBufCount;	nSpecialCount++;//bSpecial = TRUE;
				}[/COLOR]
#endif // __S_ADD_EXP

				[COLOR="Red"]int nMaxBuf = 3;
				//if( bSpecial == FALSE )
				{				
					if( nLevel < 41 )
						nMaxBuf = 3;				
					else if( nLevel < 61 && nSpecialCount < 2 )
						nMaxBuf = 2;
					else if( nLevel <= 120 && nSpecialCount < 1 )
						nMaxBuf = 1;
					else
						nMaxBuf = 3;
				}[/COLOR]

#ifdef __S_ADD_EXP
				//if( bSpecial && pItemProp->dwID != II_SYS_SYS_SCR_AMPESS )
				if( nSpecialCount && pItemProp->dwID != II_SYS_SYS_SCR_AMPESS )
				{
					nResult = 2;					
				}
				else
#endif // __S_ADD_EXP
				[COLOR="Red"]if( nBufCount < nMaxBuf )
				{
					for( int i = 0 ; i < nMaxBuf ; ++i )
					{
						if( bBuf[i] == FALSE )
						{
							if( i == 0 )
								pItemProp = prj.GetItemProp( pItemProp->dwID );
							else if( i == 1 )
								pItemProp = prj.GetItemProp( pItemProp->dwID + 1 );
							else 
								pItemProp = prj.GetItemProp( pItemProp->dwID + 2 );	
							break;
						}							
					}[/COLOR]

					DoApplySkill( (CCtrl*)this, pItemProp, NULL );
					float fFactor = 1;
					switch( nBufCount + 1)
					{
					case 1:
						{
							fFactor *= 1.5f;
						}
						break;
					case 2:
						{
							//if( bSpecial || nLevel < 61 )
							if( nSpecialCount || nLevel < 61 )
								fFactor *= 2.0f;
							else
								fFactor *= 1.5f;
						}
						break;
					[COLOR="Red"]case 3:
						{
							//if( bSpecial || nLevel < 41 )
							if( nSpecialCount || nLevel < 41 )
								fFactor *= 2.5f;
							else if( nLevel < 61 )
								fFactor *= 2.0f;
							else
								fFactor *= 1.5f;
						}
						break;[/COLOR]
					}
					CString strTemp;
#if __VER >= 11 // __EXPITEM_TOOLTIP_CHANGE
					int nPercent = (int)( (fFactor - 1.0f) * 100.0f );
					strTemp.Format( "%s %d%% %s", prj.GetText( TID_GAME_EXPITEM_TOOLTIP ), nPercent, prj.GetText( TID_GAME_EXPITEM_TOOLTIP1 ) );
#else //__EXPITEM_TOOLTIP_CHANGE
					strTemp.Format( "%s%.1f%s", prj.GetText( TID_GAME_EXPTOOLTIP ), fFactor, prj.GetText( TID_GAME_EXPTOOLTIP1 ) );
#endif //__EXPITEM_TOOLTIP_CHANGE
					((CUser*)this)->AddText( strTemp ); // 
				}
				else
				{
#ifdef __S_ADD_EXP
					//if( bSpecial )
					//{
					//	((CUser*)this)->AddDefinedText( TID_GAME_EXP_3 ); //
					//}
//					else
#endif // __S_ADD_EXP
					{
						if( nLevel < 21 )
							str.Format( "%d - %d", 1, 20 );
						else if( nLevel < 41 )
							str.Format( "%d - %d", 21, 40 );
						else if( nLevel < 61 )
							str.Format( "%d - %d", 41, 60 );
						else if( nLevel < 81 )
							str.Format( "%d - %d", 61, 80 );
						else if( nLevel <= 120 )
							str.Format( "%d - %d", 81, 120 );

						CString szMaxBuf;
						szMaxBuf.Format( "%d", nMaxBuf );
						((CUser*)this)->AddDefinedText( TID_GAME_EXP_NOTUSE, "\"%s\" \"%s\"", str, szMaxBuf ); // 
					}
					nResult = 99;					
				}				
			}
		}
		break;
rotes sind wichtige Stellen...
06/01/2011 17:35 ~Product~#6
danke krustenkäse
wäre das vielleicht auch machbar das du mir irgendwie in icq oder egal wo genauer zeigen könntest wie ich wo was ändere :) ?
06/01/2011 18:10 dennisdra#7
@~Product~
Da spricht der große C++ Könner auf einmal ganz leise Töne.
Uns allen vorschwafeln, V16 selbst gecoded zu haben und dann nicht mal die STRG+F Taste nutzen können um nach Amplis zu suchen.
Aber egal.

B2T:

Nice Sache
@Krustenkäse mach ein How-To daraus, dann kommt es in den Index und wird sicherlich vielen weiterhelfen.

So far,
dennisdra
06/01/2011 18:59 Achileus#8
Ist egal Super Coder oder Super Noob .

Ein Forum ist dafür da um Fragen zu stellen und nicht immer haufenweise Realses zu machen also das ist meine Meinung.Egal wie viel Ahnung man hat man kann nicht alles wissen das ist und bleibt so..
06/01/2011 19:13 Fullscreen#9
Bevor das hier eine große Diskussion wird, in der geflamet wird, stelle ich lieber den #closerequest.
06/01/2011 19:13 rädsun#10
Quote:
Originally Posted by dennisdra View Post
Nice Sache
@Krustenkäse mach ein How-To daraus, dann kommt es in den Index und wird sicherlich vielen weiterhelfen.

So far,
dennisdra
Ist eigentlich unnötig, selbst ein Superbob in Sachen Source wie ich sieht, was da zu adden und zu verändern ist..
06/01/2011 19:32 Achileus#11
Quote:
Originally Posted by rädsun View Post
Ist eigentlich unnötig, selbst ein Superbob in Sachen Source wie ich sieht, was da zu adden und zu verändern ist..
Das war zu Dennisdra bezogen hätte man alles gut durchgelesen naja,aber mich intressiert das auch mal!
06/01/2011 22:34 Daniiii#12
hat sich die frage geklärt? hätte gern wenn überhaupt einen closerequest vom threadersteller
06/01/2011 22:40 Achileus#13
@Daniiiiiiii

Eigl nicht eigl doch ich weiß es nicht ob es alles ist ich glaube es nicht.

Wenn es alles ist danke wenn nicht wäre eine erkärung gut
06/01/2011 23:17 ~Product~#14
danii danke und ja kannst schließen
danke euch :)