Tremulous Forum
		Mods => Modding Center => Topic started by: DarkEnix on March 08, 2008, 05:43:15 pm
		
			
			- 
				alrite , i've got a problem modding here
 
 im trying to make md do a charged shot which i called it massDriverStrike
 and the below are my sources
 
 bg_misc.c
     WP_MASS_DRIVER,       //int       weaponNum;
 MDRIVER_PRICE,        //int       price;
 ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int  stages
 SLOT_WEAPON,          //int       slots;
 "mdriver",            //char      *weaponName;
 "Mass Driver",        //char      *weaponHumanName;
 MDRIVER_CLIPSIZE,     //int       maxAmmo;
 MDRIVER_MAXCLIPS,     //int       maxClips;
 qfalse,               //int       infiniteAmmo;
 qtrue,                //int       usesEnergy;
 MDRIVER_REPEAT,       //int       repeatRate1;
 MDSTRIKE_REPEAT,                    //int       repeatRate2;
 0,                    //int       repeatRate3;
 MDRIVER_RELOAD,       //int       reloadTime;
 MDRIVER_K_SCALE,      //float     knockbackScale;
 qtrue,               //qboolean  hasAltMode;
 qfalse,               //qboolean  hasThirdMode;
 qtrue,                //qboolean  canZoom;
 20.0f,                //float     zoomFov;
 qtrue,                //qboolean  purchasable;
 qtrue,                //qboolean  longRanged;
 0,                    //int       buildDelay;
 WUT_HUMANS            //WUTeam_t  team;
 g_weapon.c
 void massDriverStrike( gentity_t *ent )
 {
 trace_t   tr;
 vec3_t    end;
 gentity_t *tent;
 gentity_t *traceEnt;
 
 if( traceEnt->takedamage )
 {
 G_Damage( traceEnt, ent, ent, forward, tr.endpos,
 MDSTRIKE_DMG, 0, MOD_MDRIVER );
 }
 }
 
 g_pmove.c
 else if( attack2 )
 {
 if( BG_WeaponHasAltMode( pm->ps->weapon ) )
 {
 if( pm->ps->weapon == WP_MASS_DRIVER && ammo < MDSTRIKE_TAKE )
 {
 PM_AddEvent( EV_NOAMMO );
 pm->ps->weaponTime += 200;
 return;
 }
 pm->ps->generic1 = WPM_SECONDARY;
 PM_AddEvent( EV_FIRE_WEAPON2 );
 addTime = BG_FindRepeatRate2ForWeapon( pm->ps->weapon );
 }
 below later
 //special case for mdstrike
 if( pm->ps->weapon == WP_MASS_DRIVER && attack2 )
 {
 ammo -= MDSTRIKE_TAKE;
 
 //stay on the safe side
 if( ammo < 0 )
 ammo = 0;
 }
 
 tremulous.h
 #define MDSTRIKE_DMG				HDM(100)
 #define MDSTRIKE_TAKE				5
 #define MDSTRIKE_REPEAT				3000
 
 Compiling
 make -C src/tools/lcc install
 install -s -m 0755 build-darwin-x86/q3lcc ../
 install -s -m 0755 build-darwin-x86/q3cpp ../
 install -s -m 0755 build-darwin-x86/q3rcc ../
 make -C src/tools/asm install
 install -s -m 0755 q3asm ../
 
 Building Tremulous in build/release-darwin-x86:
 CC: cc
 
 CFLAGS:
 -Wall
 -Wimplicit
 -Wstrict-prototypes
 -mstackrealign
 -fno-strict-aliasing
 -DMACOS_X
 -fno-common
 -pipe
 -gfull
 -DUSE_OPENAL=1
 -DUSE_CURL=1
 -DUSE_CURL_DLOPEN=1
 -DUSE_SDL_VIDEO=1
 -DUSE_SDL_SOUND=1
 -D_THREAD_SAFE=1
 -Isrc/SDL12/include
 -DUSE_LOCAL_HEADERS=1
 -MMD
 -DSVN_VERSION="1.1.0_SVN966M"
 -DNDEBUG
 -march=prescott
 -mfpmath=sse
 -ffast-math
 -falign-loops=16
 
 Output:
 build/release-darwin-x86/base/vm/cgame.qvm
 build/release-darwin-x86/base/vm/game.qvm
 build/release-darwin-x86/base/vm/ui.qvm
 
 Q3LCC src/cgame/cg_main.c
 Q3LCC src/game/bg_misc.c
 Q3LCC src/game/bg_pmove.c
 Q3LCC src/game/bg_slidemove.c
 Q3LCC src/cgame/cg_consolecmds.c
 Q3LCC src/cgame/cg_buildable.c
 Q3LCC src/cgame/cg_animation.c
 Q3LCC src/cgame/cg_animmapobj.c
 Q3LCC src/cgame/cg_draw.c
 Q3LCC src/cgame/cg_drawtools.c
 Q3LCC src/cgame/cg_ents.c
 Q3LCC src/cgame/cg_event.c
 Q3LCC src/cgame/cg_marks.c
 Q3LCC src/cgame/cg_players.c
 Q3LCC src/cgame/cg_playerstate.c
 Q3LCC src/cgame/cg_predict.c
 Q3LCC src/cgame/cg_servercmds.c
 Q3LCC src/cgame/cg_snapshot.c
 Q3LCC src/cgame/cg_view.c
 Q3LCC src/cgame/cg_weapons.c
 Q3LCC src/cgame/cg_mem.c
 Q3LCC src/cgame/cg_scanner.c
 Q3LCC src/cgame/cg_attachment.c
 Q3LCC src/cgame/cg_trails.c
 Q3LCC src/cgame/cg_particles.c
 Q3LCC src/cgame/cg_ptr.c
 Q3LCC src/cgame/cg_tutorial.c
 Q3LCC src/ui/ui_shared.c
 Q3LCC src/qcommon/q_math.c
 Q3LCC src/qcommon/q_shared.c
 Q3LCC src/game/bg_lib.c
 Q3ASM build/release-darwin-x86/base/vm/cgame.qvm
 Q3LCC src/game/g_main.c
 Q3LCC src/game/g_mem.c
 Q3LCC src/game/g_active.c
 Q3LCC src/game/g_client.c
 Q3LCC src/game/g_cmds.c
 Q3LCC src/game/g_combat.c
 Q3LCC src/game/g_physics.c
 Q3LCC src/game/g_buildable.c
 Q3LCC src/game/g_misc.c
 Q3LCC src/game/g_missile.c
 Q3LCC src/game/g_mover.c
 Q3LCC src/game/g_session.c
 Q3LCC src/game/g_spawn.c
 Q3LCC src/game/g_svcmds.c
 Q3LCC src/game/g_target.c
 Q3LCC src/game/g_team.c
 Q3LCC src/game/g_trigger.c
 Q3LCC src/game/g_utils.c
 Q3LCC src/game/g_maprotation.c
 Q3LCC src/game/g_ptr.c
 Q3LCC src/game/g_weapon.c
 Q3LCC src/game/g_admin.c
 Q3ASM build/release-darwin-x86/base/vm/game.qvm
 Q3LCC src/ui/ui_main.c
 Q3LCC src/ui/ui_atoms.c
 Q3LCC src/ui/ui_players.c
 Q3LCC src/ui/ui_gameinfo.c
 Q3ASM build/release-darwin-x86/base/vm/ui.qvm
 
 Server Started properly
 
 problem = when i press right click , seems that nothing have happened , not even a single bullet decreased
 help pls , thanks
 
 /- Exilment -\
- 
				ammo < MDSTRIKE_TAKEbackwards >.>
- 
				ammo < MDSTRIKE_TAKEbackwards >.>
 
 Nah, that's not the firing logic.
 DarkEnix: at least one of your problems is, traceEnt is not being initialised at all in massDriverStrike.
 Also, you need to actually *call* the damn function from somewhere for it to do anything :P
 
 Check FireWeapon2 (or whatever it's called) in g_weapon.c
- 
				done that , still same problem ><
 
 g_weapon.c
 /*
 ===============
 FireWeapon2
 ===============
 */
 void FireWeapon2( gentity_t *ent )
 {
 if( ent->client )
 {
 // set aiming directions
 AngleVectors( ent->client->ps.viewangles, forward, right, up );
 CalcMuzzlePoint( ent, forward, right, up, muzzle );
 }
 else
 {
 AngleVectors( ent->s.angles2, forward, right, up );
 VectorCopy( ent->s.pos.trBase, muzzle );
 }
 
 // fire the specific weapon
 switch( ent->s.weapon )
 {
 case WP_ALEVEL1_UPG:
 poisonCloud( ent );
 break;
 case WP_ALEVEL2_UPG:
 areaZapFire( ent );
 break;
 
 case WP_LUCIFER_CANNON:
 LCChargeFire( ent, qtrue );
 break;
 
 case WP_MASS_DRIVER:
 massDriverStrike( ent );
 break;
 
 case WP_ABUILD:
 case WP_ABUILD2:
 case WP_HBUILD:
 case WP_HBUILD2:
 cancelBuildFire( ent );
 break;
 default:
 break;
 }
 }
 
 and benmachine , whatcha mean by
 DarkEnix: at least one of your problems is, traceEnt is not being initialised at all in massDriverStrike.
 Also, you need to actually *call* the damn function from somewhere for it to do anything
 
 
 ammo < MDSTRIKE_TAKEbackwards >.>
 
 Kevlarman , seems that you got all these wrong
 
 tremx's g_pmove.c
 
 else if( attack2 )
 {
 if( BG_WeaponHasAltMode( pm->ps->weapon ) )
 {
 if( pm->ps->weapon == WP_SHOTGUN && ammo < SHOTGUN_NADE_TAKE )
 {
 PM_AddEvent( EV_NOAMMO );
 pm->ps->weaponTime += 200;
 return;
 }
 
 pm->ps->generic1 = WPM_SECONDARY;
 PM_AddEvent( EV_FIRE_WEAPON2 );
 addTime = BG_FindRepeatRate2ForWeapon( pm->ps->weapon );
 }
 
 i got it all correct , lol
- 
				common , someone? help?