 |
Wolf Planet We want you here!
|
| View previous topic :: View next topic |
| Author |
Message |
Conner94 Moderator

Joined: 15 Jan 2005 Posts: 249 Location: ???
|
Posted: Sat Feb 12, 2005 12:55 am Post subject: HELP!!! |
|
|
When I compile my WL_Agent.C file, it comes up with the error:
Line 587: Decloration not allowed here.
It is "void DrawKeys (void)", so how do I fix it? Here is my file:
| Code: |
// WL_AGENT.C
#include "WL_DEF.H"
#pragma hdrstop
/*
=============================================================================
LOCAL CONSTANTS
=============================================================================
*/
#define MAXMOUSETURN 10
#define MOVESCALE 150l
#define BACKMOVESCALE 100l
#define ANGLESCALE 20
/*
=============================================================================
GLOBAL VARIABLES
=============================================================================
*/
//
// player state info
//
boolean running;
long thrustspeed;
unsigned plux,pluy; // player coordinates scaled to unsigned
int anglefrac;
int gotgatgun; // JR
objtype *LastAttacker;
/*
=============================================================================
LOCAL VARIABLES
=============================================================================
*/
void T_Player (objtype *ob);
void T_Attack (objtype *ob);
statetype s_player = {false,0,0,T_Player,NULL,NULL};
statetype s_attack = {false,0,0,T_Attack,NULL,NULL};
long playerxmove,playerymove;
struct atkinf
{
char tics,attack,frame; // attack is 1 for gun, 2 for knife
} attackinfo[5][14] =
{
{ {6,0,1},{6,2,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,0,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,3,3},{6,-1,4} },
{ {6,0,1},{6,1,2},{6,4,3},{6,-1,4} },
};
int strafeangle[9] = {0,90,180,270,45,135,225,315,0};
void DrawWeapon (void);
void GiveWeapon (int weapon);
void GiveAmmo (int ammo);
//===========================================================================
//----------
void Attack (void);
void Use (void);
void Search (objtype *ob);
void SelectWeapon (void);
void SelectItem (void);
//----------
boolean TryMove (objtype *ob);
void T_Player (objtype *ob);
void ClipMove (objtype *ob, long xmove, long ymove);
/*
=============================================================================
CONTROL STUFF
=============================================================================
*/
/*
======================
=
= CheckWeaponChange
=
= Keys 1-4 change weapons
=
======================
*/
void CheckWeaponChange (void)
{
{
if (Keyboard[sc_1] && gamestate.bestweapon >= wp_knife)
gamestate.weapon = gamestate.chosenweapon = wp_knife;
else if (Keyboard[sc_2] && gamestate.ammo > 0 && gamestate.bestweapon >= wp_pistol)
gamestate.weapon = gamestate.chosenweapon = wp_pistol;
else if (Keyboard[sc_3] && gamestate.pistol == 1 && gamestate.ammo > 0)
gamestate.weapon = gamestate.chosenweapon = wp_pistol2;
else if (Keyboard[sc_4] && gamestate.machinegun == 1 && gamestate.ammo > 0)
gamestate.weapon = gamestate.chosenweapon = wp_machinegun;
else if (Keyboard[sc_5] && gamestate.chaingun == 1 && gamestate.ammo > 0)
gamestate.weapon = gamestate.chosenweapon = wp_chaingun;
}
DrawWeapon();
DrawAmmo ();
}
/*
=======================
=
= ControlMovement
=
= Takes controlx,controly, and buttonstate[bt_strafe]
=
= Changes the player's angle and position
=
= There is an angle hack because when going 70 fps, the roundoff becomes
= significant
=
=======================
*/
void ControlMovement (objtype *ob)
{
long oldx,oldy;
int angle,maxxmove;
int angleunits;
long speed;
thrustspeed = 0;
oldx = player->x;
oldy = player->y;
//
// side to side move
//
if (buttonstate[bt_strafe])
{
//
// strafing
//
//
if (controlx > 0)
{
angle = ob->angle - ANGLES/4;
if (angle < 0)
angle += ANGLES;
Thrust (angle,controlx*MOVESCALE); // move to left
}
else if (controlx < 0)
{
angle = ob->angle + ANGLES/4;
if (angle >= ANGLES)
angle -= ANGLES;
Thrust (angle,-controlx*MOVESCALE); // move to right
}
}
else
{
//
// not strafing
//
anglefrac += controlx;
angleunits = anglefrac/ANGLESCALE;
anglefrac -= angleunits*ANGLESCALE;
ob->angle -= angleunits;
if (ob->angle >= ANGLES)
ob->angle -= ANGLES;
if (ob->angle < 0)
ob->angle += ANGLES;
}
//
// forward/backwards move
//
if (controly < 0)
{
Thrust (ob->angle,-controly*MOVESCALE); // move forwards
}
else if (controly > 0)
{
angle = ob->angle + ANGLES/2;
if (angle >= ANGLES)
angle -= ANGLES;
Thrust (angle,controly*BACKMOVESCALE); // move backwards
}
if (gamestate.victoryflag) // watching the BJ actor
return;
//
// calculate total move
//
playerxmove = player->x - oldx;
playerymove = player->y - oldy;
}
/*
=============================================================================
STATUS WINDOW STUFF
=============================================================================
*/
/*
==================
=
= StatusDrawPic
=
==================
*/
void StatusDrawPic (unsigned x, unsigned y, unsigned picnum)
{
unsigned temp;
temp = bufferofs;
bufferofs = 0;
bufferofs = PAGE1START+(200-STATUSLINES)*SCREENWIDTH;
LatchDrawPic (x,y,picnum);
bufferofs = PAGE2START+(200-STATUSLINES)*SCREENWIDTH;
LatchDrawPic (x,y,picnum);
bufferofs = PAGE3START+(200-STATUSLINES)*SCREENWIDTH;
LatchDrawPic (x,y,picnum);
bufferofs = temp;
}
/*
==================
=
= DrawFace
=
==================
*/
void DrawFace (void)
{
if (gamestate.health)
{
#ifdef SPEAR
if (godmode)
StatusDrawPic (17,4,GODMODEFACE1PIC+gamestate.faceframe);
else
#endif
StatusDrawPic (17,4,FACE1APIC+3*((100-gamestate.health)/16)+gamestate.faceframe);
}
else
{
#ifndef SPEAR
if (LastAttacker->obclass == needleobj)
StatusDrawPic (17,4,MUTANTBJPIC);
else
#endif
StatusDrawPic (17,4,FACE8APIC);
}
}
/*
===============
=
= UpdateFace
=
= Calls draw face if time to change
=
===============
*/
#define FACETICS 70
int facecount;
void UpdateFace (void)
{
if (SD_SoundPlaying() == GETGATLINGSND)
return;
facecount += tics;
if (facecount > US_RndT())
{
gamestate.faceframe = (US_RndT()>>6);
if (gamestate.faceframe==3)
gamestate.faceframe = 1;
facecount = 0;
DrawFace ();
}
}
/*
===============
=
= LatchNumber
=
= right justifies and pads with blanks
=
===============
*/
void LatchNumber (int x, int y, int width, long number)
{
unsigned length,c;
char str[20];
ltoa (number,str,10);
length = strlen (str);
while (length<width)
{
StatusDrawPic (x,y,N_BLANKPIC);
x++;
width--;
}
c= length <= width ? 0 : length-width;
while (c<length)
{
StatusDrawPic (x,y,str[c]-'0'+ N_0PIC);
x++;
c++;
}
}
/*
===============
=
= DrawHealth
=
===============
*/
void DrawHealth (void)
{
LatchNumber (21,16,3,gamestate.health);
}
/*
===============
=
= TakeDamage
=
===============
*/
void TakeDamage (int points,objtype *attacker)
{
LastAttacker = attacker;
if (gamestate.victoryflag)
return;
if (gamestate.difficulty==gd_baby)
points>>=2;
if (!godmode)
gamestate.health -= points;
if (gamestate.health<=0)
{
gamestate.health = 0;
playstate = ex_died;
killerobj = attacker;
}
StartDamageFlash (points);
gotgatgun=0;
DrawHealth ();
DrawFace ();
//
// MAKE BJ'S EYES BUG IF MAJOR DAMAGE!
//
#ifdef SPEAR
if (points > 30 && gamestate.health!=0 && !godmode)
{
StatusDrawPic (17,4,BJOUCHPIC);
facecount = 0;
}
#endif
}
/*
===============
=
= HealSelf
=
===============
*/
void HealSelf (int points)
{
gamestate.health += points;
if (gamestate.health>100)
gamestate.health = 100;
DrawHealth ();
gotgatgun = 0; // JR
DrawFace ();
}
//===========================================================================
/*
===============
=
= DrawLevel
=
===============
*/
void DrawLevel (void)
{
#ifdef SPEAR
if (gamestate.mapon == 20)
LatchNumber (2,16,2,18);
else
#endif
LatchNumber (2,16,2,gamestate.mapon+1);
}
//===========================================================================
/*
===============
=
= DrawLives
=
===============
*/
void DrawLives (void)
{
LatchNumber (14,16,1,gamestate.lives);
}
/*
===============
=
= GiveExtraMan
=
===============
*/
void GiveExtraMan (void)
{
if (gamestate.lives<9)
gamestate.lives++;
DrawLives ();
SD_PlaySound (BONUS1UPSND);
}
//===========================================================================
/*
===============
=
= DrawScore
=
===============
*/
void DrawScore (void)
{
LatchNumber (6,16,6,gamestate.score);
}
/*
===============
=
= GivePoints
=
===============
*/
void GivePoints (long points)
{
gamestate.score += points;
while (gamestate.score >= gamestate.nextextra)
{
gamestate.nextextra += EXTRAPOINTS;
GiveExtraMan ();
}
DrawScore ();
}
//===========================================================================
/*
==================
=
= DrawWeapon
=
==================
*/
void DrawWeapon (void)
{
switch (gamestate.chosenweapon)
{
default:
LatchNumber (26,16,3,gamestate.ammo);
}
/*
==================
=
= DrawKeys
=
==================
*/
void DrawKeys (void)
{
if (gamestate.keys & 1)
StatusDrawPic (30,4,GOLDKEYPIC);
else
StatusDrawPic (30,4,NOKEYPIC);
if (gamestate.keys & 2)
StatusDrawPic (30,20,SILVERKEYPIC);
else
StatusDrawPic (30,20,NOKEYPIC);
}
/*
==================
=
= GiveWeapon
=
==================
*/
void GiveWeapon (int weapon)
{
switch(weapon)
{
case wp_machinegun:
GiveAmmo (16);
if (gamestate.machinegun == 0)
gamestate.weapon = gamestate.chosenweapon = wp_machinegun;
gamestate.machinegun = 1;
break;
case wp_pistol2:
GiveAmmo (8);
if (gamestate.pistol == 0)
gamestate.weapon = gamestate.chosenweapon = wp_pistol2;
gamestate.pistol = 1;
break;
case wp_chaingun:
GiveAmmo (20);
if (gamestate.chaingun == 0)
gamestate.weapon = gamestate.chosenweapon = wp_chaingun;
gamestate.chaingun = 1;
break;
}
DrawWeapon ();
}
//===========================================================================
/*
===============
=
= DrawAmmo
=
===============
*/
void DrawAmmo (void)
{
LatchNumber (27,16,2,gamestate.ammo);
}
/*
===============
=
= GiveAmmo
=
===============
*/
void GiveAmmo (int ammo)
{
if (!gamestate.ammo) // knife was out
{
if (!gamestate.attackframe)
{
gamestate.weapon = gamestate.chosenweapon;
DrawWeapon ();
}
}
gamestate.ammo += ammo;
if (gamestate.backp == 1)
{
if (gamestate.ammo > 99)
gamestate.ammo = 99;
DrawAmmo ();
}
else
if (gamestate.ammo > 50)
gamestate.ammo = 50;
DrawAmmo ();
}
//===========================================================================
/*
==================
=
= GiveKey
=
==================
*/
void GiveKey (int key)
{
gamestate.keys |= (1<<key);
DrawKeys ();
}
/*
=============================================================================
MOVEMENT
=============================================================================
*/
/*
===================
=
= GetBonus
=
===================
*/
void GetBonus (statobj_t *check)
{
switch (check->itemnumber)
{
case bo_firstaid:
if (gamestate.health == 100)
return;
SD_PlaySound (HEALTH2SND);
HealSelf (25);
break;
case bo_key1:
case bo_key2:
case bo_key3:
case bo_key4:
GiveKey (check->itemnumber - bo_key1);
SD_PlaySound (GETKEYSND);
GetMessage("You got a key!");
break;
case bo_cross:
SD_PlaySound (BONUS1SND);
GivePoints (100);
gamestate.treasurecount++;
break;
case bo_chalice:
gamestate.backp = 1;
SD_PlaySound (BONUS2SND);
break;
case bo_bible:
SD_PlaySound (BONUS3SND);
GivePoints (1000);
gamestate.treasurecount++;
break;
case bo_crown:
SD_PlaySound (BONUS4SND);
GivePoints (5000);
gamestate.treasurecount++;
break;
case bo_clip:
if (gamestate.backp == 1)
{
if (gamestate.ammo == 99)
return;
}
else
if (gamestate.ammo == 50)
return;
SD_PlaySound (GETAMMOSND);
GiveAmmo (8);
GetMessage("You got 9mm Ammo!");
break;
case bo_clip2:
if (gamestate.backp == 1)
{
if (gamestate.ammo == 99)
return;
}
else
if (gamestate.ammo == 50)
return;
SD_PlaySound (GETAMMOSND);
GiveAmmo (4);
GetMessage("You got 9mm Ammo!");
break;
#ifdef SPEAR
case bo_25clip:
if (gamestate.ammo == 99)
return;
SD_PlaySound (GETAMMOBOXSND);
GiveAmmo (25);
GetMessage("You got 9mm Ammo!");
break;
#endif
case bo_machinegun:
SD_PlaySound (KEINSND);
GiveWeapon (wp_machinegun);
GetMessage("You got a machinegun!");
break;
case bo_pistol:
SD_PlaySound (KEINSND);
GiveWeapon (wp_pistol2);
GetMessage("You got a P38!");
break;
case bo_chaingun:
SD_PlaySound (KEINSND);
GiveWeapon (wp_chaingun);
StatusDrawPic (17,4,GOTGATLINGPIC);
facecount = 0;
gotgatgun = 1;
GetMessage("You got a Venom MK3!");
break;
case bo_fullheal:
SD_PlaySound (BONUS1UPSND);
HealSelf (99);
GiveAmmo (25);
GiveExtraMan ();
gamestate.treasurecount++;
break;
case bo_food:
if (gamestate.health == 100)
return;
SD_PlaySound (HEALTH1SND);
HealSelf (10);
GetMessage("You ate some food!");
break;
case bo_alpo:
if (gamestate.health == 100)
return;
SD_PlaySound (HEALTH1SND);
HealSelf (4);
GetMessage("You ate dog food - WOOF!!!");
break;
case bo_gibs:
if (gamestate.health >10)
return;
SD_PlaySound (SLURPIESND);
HealSelf (1);
GetMessage("You drank some blood, yuk!");
break;
case bo_mess1:
GetMessage("What the hell?");
SD_PlaySound (GUTENTAGSND);
break;
case bo_landmine:
GetMessage("Landmine!");
SD_PlaySound (SLURPIESND);
break;
case bo_spear:
spearflag = true;
spearx = player->x;
speary = player->y;
spearangle = player->angle;
playstate = ex_completed;
}
StartBonusFlash ();
check->shapenum = -1; // remove from list
}
/*
===================
=
= TryMove
=
= returns true if move ok
= debug: use pointers to optimize
===================
*/
boolean TryMove (objtype *ob)
{
int xl,yl,xh,yh,x,y;
objtype *check;
long deltax,deltay;
xl = (ob->x-PLAYERSIZE) >>TILESHIFT;
yl = (ob->y-PLAYERSIZE) >>TILESHIFT;
xh = (ob->x+PLAYERSIZE) >>TILESHIFT;
yh = (ob->y+PLAYERSIZE) >>TILESHIFT;
//
// check for solid walls
//
for (y=yl;y<=yh;y++)
for (x=xl;x<=xh;x++)
{
check = actorat[x][y];
if (check && check<objlist)
return false;
}
//
// check for actors
//
if (yl>0)
yl--;
if (yh<MAPSIZE-1)
yh++;
if (xl>0)
xl--;
if (xh<MAPSIZE-1)
xh++;
for (y=yl;y<=yh;y++)
for (x=xl;x<=xh;x++)
{
check = actorat[x][y];
if (check > objlist
&& (check->flags & FL_SHOOTABLE) )
{
deltax = ob->x - check->x;
if (deltax < -MINACTORDIST || deltax > MINACTORDIST)
continue;
deltay = ob->y - check->y;
if (deltay < -MINACTORDIST || deltay > MINACTORDIST)
continue;
return false;
}
}
return true;
}
/*
===================
=
= ClipMove
=
===================
*/
void ClipMove (objtype *ob, long xmove, long ymove)
{
long basex,basey;
basex = ob->x;
basey = ob->y;
ob->x = basex+xmove;
ob->y = basey+ymove;
if (TryMove (ob))
return;
if (noclip && ob->x > 2*TILEGLOBAL && ob->y > 2*TILEGLOBAL &&
ob->x < (((long)(mapwidth-1))<<TILESHIFT)
&& ob->y < (((long)(mapheight-1))<<TILESHIFT) )
return; // walk through walls
if (!SD_SoundPlaying())
SD_PlaySound (HITWALLSND);
ob->x = basex+xmove;
ob->y = basey;
if (TryMove (ob))
return;
ob->x = basex;
ob->y = basey+ymove;
if (TryMove (ob))
return;
ob->x = basex;
ob->y = basey;
}
//==========================================================================
/*
===================
=
= VictoryTile
=
===================
*/
void VictoryTile (void)
{
#ifndef SPEAR
SpawnBJVictory ();
#endif
gamestate.victoryflag = true;
}
/*
===================
=
= Thrust
=
===================
*/
void Thrust (int angle, long speed)
{
long xmove,ymove;
long slowmax;
unsigned offset;
//
// ZERO FUNNY COUNTER IF MOVED!
//
#ifdef SPEAR
if (speed)
funnyticount = 0;
#endif
thrustspeed += speed;
//
// moving bounds speed
//
if (speed >= MINDIST*2)
speed = MINDIST*2-1;
xmove = FixedByFrac(speed,costable[angle]);
ymove = -FixedByFrac(speed,sintable[angle]);
ClipMove(player,xmove,ymove);
player->tilex = player->x >> TILESHIFT; // scale to tile values
player->tiley = player->y >> TILESHIFT;
offset = farmapylookup[player->tiley]+player->tilex;
player->areanumber = *(mapsegs[0] + offset) -AREATILE;
if (*(mapsegs[1] + offset) == EXITTILE)
VictoryTile ();
if (*(mapsegs[1] + offset) == EXITLEVEL)
playstate = ex_completed;
}
/*
=============================================================================
ACTIONS
=============================================================================
*/
/*
===============
=
= Cmd_Fire
=
===============
*/
void Cmd_Fire (void)
{
buttonheld[bt_attack] = true;
gamestate.weaponframe = 0;
player->state = &s_attack;
gamestate.attackframe = 0;
gamestate.attackcount =
attackinfo[gamestate.weapon][gamestate.attackframe].tics;
gamestate.weaponframe =
attackinfo[gamestate.weapon][gamestate.attackframe].frame;
}
//===========================================================================
/*
===============
=
= Cmd_Use
=
===============
*/
void Cmd_Use (void)
{
objtype *check;
int checkx,checky,doornum,dir;
boolean elevatorok;
//
// find which cardinal direction the player is facing
//
if (player->angle < ANGLES/8 || player->angle > 7*ANGLES/8)
{
checkx = player->tilex + 1;
checky = player->tiley;
dir = di_east;
elevatorok = true;
}
else if (player->angle < 3*ANGLES/8)
{
checkx = player->tilex;
checky = player->tiley-1;
dir = di_north;
elevatorok = false;
}
else if (player->angle < 5*ANGLES/8)
{
checkx = player->tilex - 1;
checky = player->tiley;
dir = di_west;
elevatorok = true;
}
else
{
checkx = player->tilex;
checky = player->tiley + 1;
dir = di_south;
elevatorok = false;
}
doornum = tilemap[checkx][checky];
if (*(mapsegs[1]+farmapylookup[checky]+checkx) == PUSHABLETILE)
{
//
// pushable wall
//
PushWall (checkx,checky,dir);
return;
}
if (!buttonheld[bt_use] && doornum == ELEVATORTILE && elevatorok)
{
//
// use elevator
//
buttonheld[bt_use] = true;
tilemap[checkx][checky]++; // flip switch
if (*(mapsegs[0]+farmapylookup[player->tiley]+player->tilex) == ALTELEVATORTILE)
playstate = ex_secretlevel;
else
playstate = ex_completed;
SD_PlaySound (LEVELDONESND);
SD_WaitSoundDone();
}
else if (!buttonheld[bt_use] && doornum & 0x80)
{
buttonheld[bt_use] = true;
OperateDoor (doornum & ~0x80);
}
else
SD_PlaySound (DONOTHINGSND);
}
/*
=============================================================================
PLAYER CONTROL
=============================================================================
*/
/*
===============
=
= SpawnPlayer
=
===============
*/
void SpawnPlayer (int tilex, int tiley, int dir)
{
player->obclass = playerobj;
player->active = true;
player->tilex = tilex;
player->tiley = tiley;
player->areanumber =
*(mapsegs[0] + farmapylookup[player->tiley]+player->tilex);
player->x = ((long)tilex<<TILESHIFT)+TILEGLOBAL/2;
player->y = ((long)tiley<<TILESHIFT)+TILEGLOBAL/2;
player->state = &s_player;
player->angle = (1-dir)*90;
if (player->angle<0)
player->angle += ANGLES;
player->flags = FL_NEVERMARK;
Thrust (0,0); // set some variables
InitAreas ();
}
//===========================================================================
/*
===============
=
= T_KnifeAttack
=
= Update player hands, and try to do damage when the proper frame is reached
=
===============
*/
void KnifeAttack (objtype *ob)
{
objtype *check,*closest;
long dist;
SD_PlaySound (ATKKNIFESND);
// actually fire
dist = 0x7fffffff;
closest = NULL;
for (check=ob->next ; check ; check=check->next)
if ( (check->flags & FL_SHOOTABLE)
&& (check->flags & FL_VISABLE)
&& abs (check->viewx-centerx) < shootdelta
)
{
if (check->transx < dist)
{
dist = check->transx;
closest = check;
}
}
if (!closest || dist> 0x18000l)
{
// missed
return;
}
// hit something
DamageActor (closest,US_RndT() >> 4);
}
void GunAttack (objtype *ob)
{
objtype *check,*closest,*oldclosest;
int damage;
int dx,dy,dist;
long viewdist;
switch (gamestate.weapon)
{
case wp_pistol:
SD_PlaySound (ATKPISTOLSND);
break;
case wp_pistol2:
SD_PlaySound (MEINSND);
break;
case wp_machinegun:
SD_PlaySound (ATKMACHINEGUNSND);
break;
case wp_chaingun:
SD_PlaySound (ATKGATLINGSND);
break;
}
madenoise = true;
//
// find potential targets
//
viewdist = 0x7fffffffl;
closest = NULL;
while (1)
{
oldclosest = closest;
for (check=ob->next ; check ; check=check->next)
if ( (check->flags & FL_SHOOTABLE)
&& (check->flags & FL_VISABLE)
&& abs (check->viewx-centerx) < shootdelta
)
{
if (check->transx < viewdist)
{
viewdist = check->transx;
closest = check;
}
}
if (closest == oldclosest)
return; // no more targets, all missed
//
// trace a line from player to enemey
//
if (CheckLine(closest))
break;
}
//
// hit something
//
dx = abs(closest->tilex - player->tilex);
dy = abs(closest->tiley - player->tiley);
dist = dx>dy ? dx:dy;
if (dist<2)
damage = US_RndT() / 4;
else if (dist<4)
damage = US_RndT() / 6;
else
{
if ( (US_RndT() / 12) < dist) // missed
return;
damage = US_RndT() / 6;
}
switch (gamestate.weapon)
{
case wp_pistol:
damage = damage * 0.50;
break;
case wp_pistol2:
break;
case wp_machinegun:
damage = damage * 1.00;
break;
case wp_chaingun:
damage = damage * 3.50;
}
DamageActor (closest,damage);
}
//===========================================================================
/*
===============
=
= VictorySpin
=
===============
*/
void VictorySpin (void)
{
long desty;
if (player->angle > 270)
{
player->angle -= tics * 3;
if (player->angle < 270)
player->angle = 270;
}
else if (player->angle < 270)
{
player->angle += tics * 3;
if (player->angle > 270)
player->angle = 270;
}
desty = (((long)player->tiley-5)<<TILESHIFT)-0x3000;
if (player->y > desty)
{
player->y -= tics*4096;
if (player->y < desty)
player->y = desty;
}
}
//===========================================================================
/*
===============
=
= T_Attack
=
===============
*/
void T_Attack (objtype *ob)
{
struct atkinf *cur;
UpdateFace ();
if (gamestate.victoryflag) // watching the BJ actor
{
VictorySpin ();
return;
}
if ( buttonstate[bt_use] && !buttonheld[bt_use] )
buttonstate[bt_use] = false;
if ( buttonstate[bt_attack] && !buttonheld[bt_attack])
buttonstate[bt_attack] = false;
ControlMovement (ob);
if (gamestate.victoryflag) // watching the BJ actor
return;
plux = player->x >> UNSIGNEDSHIFT; // scale to fit in unsigned
pluy = player->y >> UNSIGNEDSHIFT;
player->tilex = player->x >> TILESHIFT; // scale to tile values
player->tiley = player->y >> TILESHIFT;
//
// change frame and fire
//
gamestate.attackcount -= tics;
while (gamestate.attackcount <= 0)
{
cur = &attackinfo[gamestate.weapon][gamestate.attackframe];
switch (cur->attack)
{
case -1:
ob->state = &s_player;
if (!gamestate.ammo)
{
gamestate.weapon = wp_knife;
DrawWeapon ();
}
else
{
if (gamestate.weapon != gamestate.chosenweapon)
{
gamestate.weapon = gamestate.chosenweapon;
DrawWeapon ();
}
};
gamestate.attackframe = gamestate.weaponframe = 0;
return;
case 4:
if (!gamestate.ammo)
break;
if (buttonstate[bt_attack])
gamestate.attackframe -= 2;
case 1:
if (!gamestate.ammo)
{ // can only happen with chain gun
gamestate.attackframe++;
break;
}
GunAttack (ob);
if (gamestate.weapon == wp_pistol)
gamestate.ammo--;
DrawAmmo ();
break;
case 2:
KnifeAttack (ob);
break;
case 3:
if (gamestate.ammo && buttonstate[bt_attack])
gamestate.attackframe -= 2;
break;
}
gamestate.attackcount += cur->tics;
gamestate.attackframe++;
gamestate.weaponframe =
attackinfo[gamestate.weapon][gamestate.attackframe].frame;
}
}
//===========================================================================
/*
===============
=
= T_Player
=
===============
*/
void T_Player (objtype *ob)
{
if (gamestate.victoryflag) // watching the BJ actor
{
VictorySpin ();
return;
}
UpdateFace ();
CheckWeaponChange ();
if ( buttonstate[bt_use] )
Cmd_Use ();
if ( buttonstate[bt_attack] && !buttonheld[bt_attack])
Cmd_Fire ();
ControlMovement (ob);
if (gamestate.victoryflag) // watching the BJ actor
return;
plux = player->x >> UNSIGNEDSHIFT; // scale to fit in unsigned
pluy = player->y >> UNSIGNEDSHIFT;
player->tilex = player->x >> TILESHIFT; // scale to tile values
player->tiley = player->y >> TILESHIFT;
}
|
Help? _________________ My Wolfenstein Website:
http://www.wolf94.cjb.net
Status: Falling apart over a product I ordered that is taking forever to arrive. |
|
| Back to top |
|
 |
Mega Luigi Site Admin

Joined: 12 Jan 2005 Posts: 127 Location: Brazil
|
Posted: Sat Feb 12, 2005 3:02 am Post subject: |
|
|
You get this error just now, or in the pass you had it? And, if you have a backup, maybe you should try to compile it, if works, do you (r) latest (s) code (s). There are a lot of problems in Wolfenstein 3d Engine that the people don't know how to solve it (I am not saying your problem can't be solved). A friend tip:
-Do your do you (r) latest (s) code (s) because will be faster than you wait to someone answer you.
BTW: I know that this is not a good tip, but in my opinions is the best thing to do.  _________________ Mega Luigi
Site Admin
Forums Admin |
|
| Back to top |
|
 |
Conner94 Moderator

Joined: 15 Jan 2005 Posts: 249 Location: ???
|
Posted: Sat Feb 12, 2005 3:24 am Post subject: |
|
|
I'll look through my backup, but they are the same I think so I will use the old one. I'll tell you guys later if I figure it out. _________________ My Wolfenstein Website:
http://www.wolf94.cjb.net
Status: Falling apart over a product I ordered that is taking forever to arrive. |
|
| Back to top |
|
 |
Mega Luigi Site Admin

Joined: 12 Jan 2005 Posts: 127 Location: Brazil
|
Posted: Sat Feb 12, 2005 3:34 am Post subject: |
|
|
Ok. Hope your backup is a few older than the file you've posted!  _________________ Mega Luigi
Site Admin
Forums Admin |
|
| Back to top |
|
 |
Mario Maniac Site Admin

Joined: 13 Jan 2005 Posts: 47 Location: Brazil,RS,POA
|
Posted: Sat Feb 12, 2005 3:51 pm Post subject: |
|
|
Everytime I get this error, normally, it's because of some statement missing, like a {. Borland will not say the it is missing because BC may thing that the place where you find the "declaration not allowed" is part of other code, like if you missing a { in the SpawnPlayer function BC may things that the T_KnifeAttack routine is part of SpawnPlayer.
So I suggest you to check changes you have made in your code in this file, looking for any missing statements. _________________ -Mario Maniac |
|
| Back to top |
|
 |
Conner94 Moderator

Joined: 15 Jan 2005 Posts: 249 Location: ???
|
Posted: Sat Feb 12, 2005 5:04 pm Post subject: |
|
|
I figured that was the reason...I'll go through carefully and slowly.
EDIT: Ok I figured it out, when I added to the DrawWeapon function I forgot a "}". _________________ My Wolfenstein Website:
http://www.wolf94.cjb.net
Status: Falling apart over a product I ordered that is taking forever to arrive. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|