Trying to fix the crazy shotgun bullets -.-"

This commit is contained in:
GreYFoXGTi 2010-08-26 19:55:22 +02:00
parent 31d6ed6292
commit 883e0f2222
3 changed files with 19 additions and 14 deletions

View file

@ -66,7 +66,7 @@ MACRO_CONFIG_INT(SvSqlPort, sv_sql_port, 3306, 0, 65535, CFGFLAG_SERVER, "SQL Da
MACRO_CONFIG_STR(SvSqlDatabase, sv_sql_database, 16, "teeworlds", CFGFLAG_SERVER, "SQL Database name") MACRO_CONFIG_STR(SvSqlDatabase, sv_sql_database, 16, "teeworlds", CFGFLAG_SERVER, "SQL Database name")
MACRO_CONFIG_STR(SvSqlPrefix, sv_sql_prefix, 16, "record", CFGFLAG_SERVER, "SQL Database table prefix") MACRO_CONFIG_STR(SvSqlPrefix, sv_sql_prefix, 16, "record", CFGFLAG_SERVER, "SQL Database table prefix")
//=============================== //===============================
MACRO_CONFIG_INT(SvShotgunReset, sv_shotgun_reset, 0,0,9999, CFGFLAG_SERVER, "Resets the shotgun bullets to start position")
MACRO_CONFIG_STR(PlayerName, player_name, 24, "nameless tee", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Name of the player") MACRO_CONFIG_STR(PlayerName, player_name, 24, "nameless tee", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Name of the player")
MACRO_CONFIG_STR(ClanName, clan_name, 32, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "(not used)") MACRO_CONFIG_STR(ClanName, clan_name, 32, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "(not used)")
MACRO_CONFIG_STR(Password, password, 32, "", CFGFLAG_CLIENT|CFGFLAG_SERVER, "Password to the server") MACRO_CONFIG_STR(Password, password, 32, "", CFGFLAG_CLIENT|CFGFLAG_SERVER, "Password to the server")

View file

@ -19,7 +19,9 @@ CProjectile::CProjectile(
{ {
m_Type = Type; m_Type = Type;
m_Pos = Pos; m_Pos = Pos;
m_StartPos = Pos;
m_Direction = Dir; m_Direction = Dir;
m_StartDir = Dir;
m_LifeSpan = Span; m_LifeSpan = Span;
m_Owner = Owner; m_Owner = Owner;
m_Force = Force; m_Force = Force;
@ -31,9 +33,9 @@ CProjectile::CProjectile(
m_Explosive = Explosive; m_Explosive = Explosive;
m_BouncePos=vec2(0,0); m_BouncePos=vec2(0,0);
m_ReBouncePos=vec2(0,0); m_ReBouncePos=vec2(0,0);
m_AvgPos=vec2(0,0);
m_LastBounce=vec2(0,0); m_LastBounce=vec2(0,0);
m_PrevLastBounce=vec2(0,0); m_PrevLastBounce=vec2(0,0);
m_LastRestart = 0;
GameWorld()->InsertEntity(this); GameWorld()->InsertEntity(this);
} }
@ -97,7 +99,6 @@ void CProjectile::Tick()
if(m_LifeSpan > -1) if(m_LifeSpan > -1)
m_LifeSpan--; m_LifeSpan--;
if( (TargetChr && (g_Config.m_SvHit || TargetChr == OwnerChar)) || Collide) if( (TargetChr && (g_Config.m_SvHit || TargetChr == OwnerChar)) || Collide)
{ {
if(m_Explosive/*??*/ && (!TargetChr || (TargetChr && !m_Freeze))) if(m_Explosive/*??*/ && (!TargetChr || (TargetChr && !m_Freeze)))
@ -111,6 +112,12 @@ void CProjectile::Tick()
{ {
m_StartTick = Server()->Tick(); m_StartTick = Server()->Tick();
m_Pos = NewPos; m_Pos = NewPos;
if(g_Config.m_SvShotgunReset > m_LastRestart)
{
m_Pos = m_StartPos;
m_Direction = m_StartDir;
m_StartTick = Server()->Tick();
}
if (m_Bouncing == 1) if (m_Bouncing == 1)
{ {
m_PrevLastBounce.x = m_LastBounce.x; m_PrevLastBounce.x = m_LastBounce.x;
@ -119,9 +126,7 @@ void CProjectile::Tick()
m_BouncePos.x=m_Pos.x; m_BouncePos.x=m_Pos.x;
else if (!m_ReBouncePos.x) else if (!m_ReBouncePos.x)
m_ReBouncePos.x=m_Pos.x; m_ReBouncePos.x=m_Pos.x;
else if(!m_AvgPos.x) m_Direction.x =- m_Direction.x;
m_AvgPos = vec2((m_BouncePos.x+m_ReBouncePos.x)/2,(m_BouncePos.y+m_ReBouncePos.y)/2);
if (m_AvgPos.x)
if(!((m_PrevLastBounce.x+1 == m_BouncePos.x || m_PrevLastBounce.x-1 == m_BouncePos.x || m_PrevLastBounce.x == m_BouncePos.x) && (m_LastBounce.x == m_ReBouncePos.x || m_LastBounce.x+1 == m_ReBouncePos.x || m_LastBounce.x-1 == m_ReBouncePos.x)) && !((m_LastBounce.x == m_BouncePos.x || m_LastBounce.x+1 == m_BouncePos.x || m_LastBounce.x-1 == m_BouncePos.x) && (m_PrevLastBounce.x+1 == m_ReBouncePos.x || m_PrevLastBounce.x-1 == m_ReBouncePos.x || m_PrevLastBounce.x == m_ReBouncePos.x))) if(!((m_PrevLastBounce.x+1 == m_BouncePos.x || m_PrevLastBounce.x-1 == m_BouncePos.x || m_PrevLastBounce.x == m_BouncePos.x) && (m_LastBounce.x == m_ReBouncePos.x || m_LastBounce.x+1 == m_ReBouncePos.x || m_LastBounce.x-1 == m_ReBouncePos.x)) && !((m_LastBounce.x == m_BouncePos.x || m_LastBounce.x+1 == m_BouncePos.x || m_LastBounce.x-1 == m_BouncePos.x) && (m_PrevLastBounce.x+1 == m_ReBouncePos.x || m_PrevLastBounce.x-1 == m_ReBouncePos.x || m_PrevLastBounce.x == m_ReBouncePos.x)))
{ {
/*int bx=(int)m_BouncePos.x; /*int bx=(int)m_BouncePos.x;
@ -133,11 +138,11 @@ void CProjectile::Tick()
dbg_msg("m_LastBounce","%d",lbx); dbg_msg("m_LastBounce","%d",lbx);
dbg_msg("m_PrevLastBounce","%d",plbx); dbg_msg("m_PrevLastBounce","%d",plbx);
m_Pos.x=m_AvgPos.x;*/ m_Pos.x=m_AvgPos.x;*/
g_Config.m_SvShotgunReset++;
dbg_msg("CrazyShotgun","Warning Horizontal Crazy Shotgun Out of bounds"); dbg_msg("CrazyShotgun","Warning Horizontal Crazy Shotgun Out of bounds");
/*int x=(int)m_Pos.x; /*int x=(int)m_Pos.x;
dbg_msg("RePos","%d",x);*/ dbg_msg("RePos","%d",x);*/
} }
m_Direction.x =- m_Direction.x;
} }
else if (m_Bouncing == 2) else if (m_Bouncing == 2)
{ {
@ -147,11 +152,8 @@ void CProjectile::Tick()
m_BouncePos.y=m_Pos.y; m_BouncePos.y=m_Pos.y;
else if (!m_ReBouncePos.y) else if (!m_ReBouncePos.y)
m_ReBouncePos.y=m_Pos.y; m_ReBouncePos.y=m_Pos.y;
else if(!m_AvgPos.y)
m_AvgPos = vec2((m_BouncePos.x+m_ReBouncePos.x)/2,(m_BouncePos.y+m_ReBouncePos.y)/2);
m_Direction.y =- m_Direction.y; m_Direction.y =- m_Direction.y;
if (m_AvgPos.y) if(!((m_PrevLastBounce.y+1 == m_BouncePos.y || m_PrevLastBounce.y-1 == m_BouncePos.y || m_PrevLastBounce.y == m_BouncePos.y) && (m_LastBounce.y == m_ReBouncePos.y || m_LastBounce.y+1 == m_ReBouncePos.y || m_LastBounce.y-1 == m_ReBouncePos.y)) && !((m_LastBounce.y == m_BouncePos.y || m_LastBounce.y+1 == m_BouncePos.y || m_LastBounce.y-1 == m_BouncePos.y) && (m_PrevLastBounce.y+1 == m_ReBouncePos.y || m_PrevLastBounce.y-1 == m_ReBouncePos.y || m_PrevLastBounce.y == m_ReBouncePos.y)))
if(!((m_PrevLastBounce.y+1 == m_BouncePos.y || m_PrevLastBounce.y-1 == m_BouncePos.y || m_PrevLastBounce.y == m_BouncePos.y) && (m_LastBounce.y == m_ReBouncePos.y || m_LastBounce.y+1 == m_ReBouncePos.y || m_LastBounce.y-1 == m_ReBouncePos.y)) && !((m_LastBounce.y == m_BouncePos.y || m_LastBounce.y+1 == m_BouncePos.y || m_LastBounce.y-1 == m_BouncePos.y) && (m_PrevLastBounce.y+1 == m_ReBouncePos.y || m_PrevLastBounce.y-1 == m_ReBouncePos.y || m_PrevLastBounce.y == m_ReBouncePos.y)))
{ {
/*int by=(int)m_BouncePos.y; /*int by=(int)m_BouncePos.y;
int rby=(int)m_ReBouncePos.y; int rby=(int)m_ReBouncePos.y;
@ -160,12 +162,12 @@ void CProjectile::Tick()
dbg_msg("m_BouncePos","%d",by); dbg_msg("m_BouncePos","%d",by);
dbg_msg("m_ReBouncePos","%d",rby); dbg_msg("m_ReBouncePos","%d",rby);
dbg_msg("m_LastBounce","%d",lby); dbg_msg("m_LastBounce","%d",lby);
dbg_msg("m_PrevLastBounce","%d",plby);*/ dbg_msg("m_PrevLastBounce","%d",plby);
m_Pos=m_AvgPos; m_Pos=m_AvgPos;*/
g_Config.m_SvShotgunReset++;
dbg_msg("CrazyShotgun","Warning Vertical Crazy Shotgun Out of bounds"); dbg_msg("CrazyShotgun","Warning Vertical Crazy Shotgun Out of bounds");
/*int y=(int)m_Pos.y; /*int y=(int)m_Pos.y;
dbg_msg("RePos","%d",y);*/ dbg_msg("RePos","%d",y);*/
} }
} }
m_Pos += m_Direction; m_Pos += m_Direction;

View file

@ -34,6 +34,9 @@ private:
vec2 m_ReBouncePos; vec2 m_ReBouncePos;
vec2 m_LastBounce; vec2 m_LastBounce;
vec2 m_PrevLastBounce; vec2 m_PrevLastBounce;
vec2 m_StartPos;
vec2 m_StartDir;
int m_LastRestart;
}; };
#endif #endif