Cheatwaffen beim Gegner verhindern

Kein Durchblick im Quellcode von Ja2? Hier werden sie geholfen.

Moderator: Flashy

Antworten
Realist
Alpha-Squad
Beiträge: 1573
Registriert: 24 Apr 2003, 11:00
Wohnort: Düsseldorf

Cheatwaffen beim Gegner verhindern

Beitrag von Realist » 16 Sep 2005, 15:43

Moin,

spieltechnisch kann es passieren, dass bei einem Waffenmod der Gegner
plötzlich Waffen mit Attachments dran hat, die so gar nicht vorgesehen
waren. Das passiert, wenn in den Maps festgelegt wird, welche Waffe der
Gegner besitzen soll. Um diese Unfairness zu beheben ohne jede einzelne
Map überarbeiten zu müssen, sollten folgende in rot geschriebene Codezeilen
ausreichen.


Tactical\Soldier Create.c:
void CreateDetailedPlacementGivenStaticDetailedPlacementAndBasicPlacementInfo(
SOLDIERCREATE_STRUCT *pp, SOLDIERCREATE_STRUCT *spp, BASIC_SOLDIERCREATE_STRUCT *bp )

Code: Alles auswählen

	//This isn't perfect, however, it blindly brings over the items from the static 
	//detailed placement.  Due to the order of things, other items would 
	for( i = 0; i < NUM_INV_SLOTS; i++ )
	{
		//copy over static items and empty slots that are droppable (signifies a forced empty slot)
		if( spp->Inv[ i ].fFlags & OBJECT_NO_OVERWRITE )
		{
			memcpy( &pp->Inv[ i ], &spp->Inv[ i ], sizeof( OBJECTTYPE ) );
			//memcpy( pp->Inv, spp->Inv, sizeof( OBJECTTYPE ) * NUM_INV_SLOTS );
			//return;
		}

[highlight]
		for (j = 0; j < MAX_ATTACHMENTS; ++j)
		{
			// do some great stuff here
			if ( !ValidAttachment( pp->Inv[i].usAttachItem[j], pp->Inv[i].usItem ) )
			{
				RemoveAttachment( &pp->Inv[i], j, NULL );
			}
		}
[/highlight]
	}
Natürlich muss die Zählervariable j noch in der Funktion deklariert werden,
aber das nur für die, die es nicht wussten. :D

Ich habe es anhand der angehängten Map, die commandant freundlicherweise
für mich entsprechend erstellt hat, getestet für den Fall, dass das ZF nicht
mehr an ein M24 attacht werden kann. Von den drei Gegnern in der Mitte
der Karte kann man von einem eins mit ZF klauen, nach der Modifikation s.o.
nicht mehr.

Vielleicht kann ja noch jemand die Funktionstüchtigkeit in anderen Situationen
überprüfen.
Dateianhänge
B9.zip
(58.32 KiB) 1092-mal heruntergeladen

Antworten