Author Topic: 2nd shot help  (Read 5198 times)

DarkEnix

  • Posts: 67
  • Turrets: +10/-22
2nd shot help
« 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

Code: [Select]
    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
Code: [Select]
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
Code: [Select]
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
Code: [Select]
//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
Code: [Select]
#define MDSTRIKE_DMG HDM(100)
#define MDSTRIKE_TAKE 5
#define MDSTRIKE_REPEAT 3000

Compiling
Code: [Select]
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 -\

kevlarman

  • Posts: 2737
  • Turrets: +291/-295
Re: 2nd shot help
« Reply #1 on: March 08, 2008, 05:57:19 pm »
Code: [Select]
ammo < MDSTRIKE_TAKE backwards >.>
Quote from: Asvarox link=topic=8622.msg169333#msg169333
Ok let's plan it out. Asva, you are nub, go sit on rets, I will build, you two go feed like hell, you go pwn their asses, and everyone else camp in the hallway, roger?
the dretch bites.
-----
|..d| #
|.@.-##
-----

benmachine

  • Posts: 915
  • Turrets: +99/-76
    • ben's machinery
Re: 2nd shot help
« Reply #2 on: March 08, 2008, 08:38:24 pm »
Code: [Select]
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
benmachine

DarkEnix

  • Posts: 67
  • Turrets: +10/-22
Re: 2nd shot help
« Reply #3 on: March 09, 2008, 04:24:51 am »
done that , still same problem ><

g_weapon.c

Code: [Select]
/*
===============
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
Quote
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

Code: [Select]
ammo < MDSTRIKE_TAKE backwards >.>
Kevlarman , seems that you got all these wrong

tremx's g_pmove.c


Code: [Select]
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
« Last Edit: March 09, 2008, 07:17:35 am by DarkEnix »

DarkEnix

  • Posts: 67
  • Turrets: +10/-22
Re: 2nd shot help
« Reply #4 on: March 10, 2008, 05:14:03 am »
common , someone? help?