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_TAKE
backwards >.>
-
ammo < MDSTRIKE_TAKE
backwards >.>
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_TAKE
backwards >.>
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?