Forum posts

Posted 15 hours ago2020-01-19 22:33:38 UTC
in Post your screenshots! WIP thread Post #343647
That´s right!, MS3D. And that´s speed modelling. The model tooks me only one hour to finish it. :crowbar:
Posted 3 days ago2020-01-16 15:24:49 UTC
in Post your screenshots! WIP thread Post #343628
Nebuchadnezzar1Nebuchadnezzar1
Nebuchadnezzar2Nebuchadnezzar2
Nebuchadnezzar3Nebuchadnezzar3
Nebuchadnezzar4Nebuchadnezzar4
Nebuchadnezzar5Nebuchadnezzar5
Nebuchadnezzar6Nebuchadnezzar6
Nevermind. I kinda fixed it. Thanks tschumann :crowbar:
Aniway... Any ideas on how to solve this? I have surrender some hours ago... I mean: how can I make the gunners follow the trolley guy without crashing the whole game. My compile is Win32_release not debug, so I cannot debug a thing, also, I am not able to setup the projects correctly to be Win32_debug instead (each time I did it I find myself with a ton of errors and "thiscall", "unknown stuff" etc.

PS: I have tried the tracktarget method of the Hornet and, no, it still crashes the game. :)
THANKS so much Penguinboy, In the formatting options the code was enclosed in this singns code, and it look awful (sorry), but did not look into the Formatting Help link, moron me. :crowbar:
BTW: if I comment THIS part...
//=================================================
        if ( HasConditions (bits_COND_SEE_HATE ) )
        {
            return  GetScheduleOfType( SCHED_TARGET_CHASE );
        }
     //=================================================
...the game runs perfect. The gunners attack the Trolley guy, yes, but the game does not crash at all. :|
:crowbar: Done!!, but game crash each time the monster spawns... :pwned:

Here´s all the code. Forgive me if I did not rename the Islave monster from CIslave to CGunner :lol:

I have modified its relationship:
//=========================================================
// Classify - indicates this monster's place in the
// relationship table.
//=========================================================
int    CISlave :: Classify ( void )
{
    return    CLASS_PLAYER_ALLY;
}


int CISlave::IRelationship( CBaseEntity *pTarget )
{

    if ( FClassnameIs( pTarget->pev, "monster_sentinel" ) )
    {
        return R_NM;
    }
    if ( FClassnameIs( pTarget->pev, "player" ) )
    {
        return R_AL;
    }
    if ( FClassnameIs( pTarget->pev,  "monster_trolley" ) )
    {
        return R_HT;
    }


    return CBaseMonster::IRelationship( pTarget );
}
wrote the new code:
//=========================================================
// Codigo para seguir a los Trolley
//=========================================================

Task_t    tlFollow[] =
{
//    { TASK_SET_FAIL_SCHEDULE,    (float)SCHED_CANT_FOLLOW },    // If you fail
    { TASK_MOVE_TO_TARGET_RANGE,(float)640        },    // Move within 640 of target ent (monster_trolley)
//    { TASK_SET_SCHEDULE,        (float)SCHED_TARGET_FACE },
};

Schedule_t    slFollow[] =
{
    {

        tlFollow,
        ARRAYSIZE ( tlFollow ),
        bits_COND_NEW_ENEMY |
        bits_COND_LIGHT_DAMAGE |
        bits_COND_HEAVY_DAMAGE |
        bits_COND_HEAR_SOUND,
        bits_SOUND_COMBAT |
        bits_SOUND_DANGER,
        "Follow"
    },
};
Of course I have definded all...
DEFINE_CUSTOM_SCHEDULES( CISlave )
{
    slSlaveAttack1,
    slSlaveEstablishLineOfFire,
    slFollow,
};
And in:
Schedule_t *CISlave :: GetSchedule( void )
I placed:
//=================================================
// He follows who he hates...
//=================================================
    if ( HasConditions (bits_COND_SEE_HATE ) )
    {
        return  slFollow;
    }
 //=================================================
Also I put the "follow" thing in:
Schedule_t *CISlave :: GetScheduleOfType ( int Type )
{
    switch    ( Type )
    {
    case SCHED_FAIL:
        slSlaveEstablishLineOfFire;//ZWC
     case SCHED_RANGE_ATTACK1:
        return slSlaveAttack1;
    case SCHED_TARGET_CHASE:
        return slFollow;
    }
    return CSquadMonster :: GetScheduleOfType( Type );
}
Posted 2 weeks ago2020-01-05 21:02:40 UTC
in A Utopia At Stake Post #343558
I freak out with how you progress in coding, Admer. :nuts:
AIscripted sequence structureAIscripted sequence structure
First AIscripted sequenceFirst AIscripted sequence
Second AIscripted sequenceSecond AIscripted sequence
Multimanager setupMultimanager setup
Trigger Auto setupTrigger Auto setup
Monster setupMonster setup
Qc file in GuiStudioQc file in GuiStudio
It "works". It plays ok the animations but showing 0.5-1 sec of the idle animation just before the second aiscripted sequence is played. Oh. It seem to ignore the player or the bots, it does not attack them...

And, sorry for posting ALL the code...
/***
*
*	Copyright (c) 1996-2002, Valve LLC. All rights reserved.
*
*	This product contains software technology licensed from Id
*	Software, Inc. ("Id Technology").  Id Technology (c) 1996 Id Software, Inc.
*	All Rights Reserved.
*
*   This source code contains proprietary and confidential information of
*   Valve LLC and its suppliers.  Access to this code is restricted to
*   persons who have executed a written SDK license with Valve.  Any access,
*   use or distribution of this code by or to any unlicensed person is illegal.
*
****/
//=========================================================
// HandOfGod Monster (10-7-2015) First Attempt.
// Modificado 19/11/2019
//=========================================================

// UNDONE: Don't flinch every time you get hit

#include	"extdll.h"
#include	"util.h"
#include	"cbase.h"
#include	"monsters.h"
#include	"schedule.h"

// New Includes
#include    "weapons.h"
#include	"effects.h"


//=========================================================
// Monster's Anim Events Go Here
//=========================================================
#define	HOG_AE_ATTACK_RIGHT		0x01

class CHog : public CBaseMonster
{
public:
	void Spawn( void );
	void Precache( void );
	void SetYawSpeed( void );
	int  Classify ( void );
	void HandleAnimEvent( MonsterEvent_t *pEvent );
	int IgnoreConditions ( void );

		int  IRelationship( CBaseEntity *pTarget );

	void IdleSound( void );
	void AttackSound( void );

	static const char *pAttackSounds[];
	static const char *pIdleSounds[];
	static const char *pAttackHitSounds[];
	static const char *pAttackMissSounds[];


	int TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType );

    	void TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType );
   	void PrescheduleThink( void );

};

LINK_ENTITY_TO_CLASS( monster_hog, CHog );

const char *CHog::pAttackHitSounds[] =
{
	"sentinel/slash1.wav",
	"sentinel/slash2.wav",
};

const char *CHog::pAttackMissSounds[] =
{
	"drone/claw_miss1.wav",
	"drone/claw_miss2.wav",
};

const char *CHog::pAttackSounds[] =
{
	"drone/attack1.wav",
	"drone/attack2.wav",
};

const char *CHog::pIdleSounds[] =
{
	"drone/idle1.wav",
	"drone/idle2.wav",
	"drone/idle3.wav",
	"drone/idle4.wav",
};


//=========================================================
// Classify - indicates this monster's place in the
// relationship table.
//=========================================================
int	CHog :: Classify ( void )
{
	return	CLASS_ALIEN_MILITARY;

}

//=========================================================
// Relationship - El bichito tiene ahora muchas cosas
// a las que atacar.
//=========================================================
int CHog::IRelationship( CBaseEntity *pTarget )
{

	if ( FClassnameIs( pTarget->pev, "player" ) )
	{
		return R_HT; // Probar R_NM;
	}

	if ( FClassnameIs( pTarget->pev, "monster_crane" ) )
	{
		return R_NO;
	}


	return CBaseMonster::IRelationship( pTarget );
}

//=========================================================
// SetYawSpeed - allows each sequence to have a different
// turn rate associated with it.
//=========================================================
void CHog :: SetYawSpeed ( void )
{
	int ys;

	ys = 180;

#if 0
	switch ( m_Activity )
	{
	}
#endif

	pev->yaw_speed = ys;
}

int CHog :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType )
{
	// Take 10% damage from bullets
	if ( bitsDamageType == DMG_BULLET )
	{
		Vector vecDir = pev->origin - (pevInflictor->absmin + pevInflictor->absmax) * 0.5;
		vecDir = vecDir.Normalize();
		float flForce = DamageForce( flDamage );
		pev->velocity = pev->velocity + vecDir * flForce;
		flDamage *= 0.1;
	}

	return CBaseMonster::TakeDamage( pevInflictor, pevAttacker, flDamage, bitsDamageType );
}


void CHog :: IdleSound( void )
{
	int pitch = 95 + RANDOM_LONG(0,9);

	// Play a random idle sound
	EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pIdleSounds[ RANDOM_LONG(0,ARRAYSIZE(pIdleSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}

void CHog :: AttackSound( void )
{
	// Play a random attack sound
	EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pAttackSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}


//=========================================================
// HandleAnimEvent - catches the monster-specific messages
// that occur when tagged animation frames are played.
//=========================================================
void CHog :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
	switch( pEvent->event )
	{
		case HOG_AE_ATTACK_RIGHT:
		{
			CBaseEntity *pHurt = CheckTraceHullAttack( 70, RANDOM_LONG (2,10), DMG_SLASH );


		if ( pHurt )
			{
				if ( pHurt->pev->flags & (FL_FAKECLIENT|FL_CLIENT) )
				{
					pHurt->pev->punchangle.z = -300;
					pHurt->pev->punchangle.x = 300;
					pHurt->pev->velocity = pHurt->pev->velocity - gpGlobals->v_right * 550;
				}
				// Play a random attack hit sound
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackHitSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
			}
			else // Play a random attack miss sound
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackMissSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );

			if (RANDOM_LONG(0,1))
				AttackSound();
				pev->nextthink = gpGlobals->time + 10;//Tiempo de espera entre éste ataque y el siguiente
		}
		break;



		default:
			CBaseMonster::HandleAnimEvent( pEvent );
			break;
	}
}

//=========================================================
// Spawn
//=========================================================
void CHog :: Spawn()
{
	Precache( );

	SET_MODEL(ENT(pev), "models/monster_hog.mdl");
	//UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );//Buscar tamaño del tentacle
    UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) );

	pev->solid			= SOLID_SLIDEBOX;
	pev->movetype		= MOVETYPE_FLY;
	m_bloodColor		= DONT_BLEED;
	pev->health			= 10000;
	pev->view_ofs		= VEC_VIEW;// position of the eyes relative to monster's origin.
	m_flFieldOfView		= VIEW_FIELD_FULL;
	m_MonsterState		= MONSTERSTATE_COMBAT;
	//m_afCapability		= bits_CAP_DOORS_GROUP;

	MonsterInit();


}

//=========================================================
// Precache - precaches all resources this monster needs
//=========================================================
void CHog :: Precache()
{
	int i;

	PRECACHE_MODEL("models/monster_hog.mdl");

	for ( i = 0; i < ARRAYSIZE( pAttackHitSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackHitSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pAttackMissSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackMissSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pAttackSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pIdleSounds ); i++ )
		PRECACHE_SOUND((char *)pIdleSounds[i]);

}

//=========================================================
// AI Schedules Specific to this monster
//=========================================================



int CHog::IgnoreConditions ( void )
{
	int iIgnore = CBaseMonster::IgnoreConditions();

	if ((m_Activity == ACT_MELEE_ATTACK1))
	{
#if 0
		if (pev->health < 20)
			iIgnore |= (bits_COND_LIGHT_DAMAGE|bits_COND_HEAVY_DAMAGE);
		else
#endif

    }
	return iIgnore;

}


//====================================================
// Hog TraceAttack Definitions
//====================================================
void CHog::TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType )
{


	bitsDamageType &= DMG_GENERIC;

	if ( bitsDamageType == 0)
	{
		if ( pev->dmgtime != gpGlobals->time || (RANDOM_LONG(0,100) < 20) )
		{
			UTIL_Ricochet( ptr->vecEndPos, RANDOM_FLOAT(0.5,1.5) );
			pev->dmgtime = gpGlobals->time;

		}
		flDamage *= 0.1;
	}

	CBaseMonster::TraceAttack( pevAttacker, flDamage, vecDir, ptr, bitsDamageType );

}


void CHog :: PrescheduleThink( void )
{

}
Any ideas?.
Well...no avail. Now I cannot give you the aiscript setup, but the moster still do crazy things instead of what it should do...I will try to do a vídeo to show you what this monster is behaving.
It´s a copy of the zombie, with minor modifications: it´s a flying monster (if not, it fall to the ground) for the trace attack function ( it emits sparks if you shot at it) and the punch angle once it hits the player, which in this case is monstruous (300/500 while in the Ichtyosaur is 5 or 8).

Aniway, I did some tests last night (2:00 p.m... I´m tired) and the animations played ok, except that when finished the script, the idle animation returns to the idle-off animation by itself, I think is because the monster lacks of the attack animation yet (i am working on this animation right now).

I will do further tests and see what happen once the model is 100% finished. I can pass you the Mod for you to test it if you want with the map file so you can see what´s wrong in case it fails again.

Thanks Tschumann!!!
The monster must have not its AI activated because it start to attack even before finishing the scripted sequence :( , also there is the idle problem, it performs the idle between each scripted sequence. I am thinking about Quark be the culprit :/
Any solution ?, I'm still looking to remedy this problem.
PS: don't answer all at once, please!

:nya: :crowbar:
Posted 1 month ago2019-11-30 16:01:19 UTC
in Half-Life: Alyx Post #343418
Amen
Posted 1 month ago2019-11-30 10:04:56 UTC
in Half-Life: Alyx Post #343415
I see in the far distance a TOTAL FAILURE... It´s not normal to push people to spend 1500$ or more just to play an only game. It´s nuts. Bad is the situation for a game if it have to go VR just to make us be interested... Just my opinion.
Please. I tried the tuts and something is wrong because the idle anim still plays between each animation.Could someone give me a basic setup for this?.

1.Trigger Auto activates Multimanager
2.Multimanager starts each animation at a given time(aiscript or script), now I am not sure of what should I use, because I used those for generic monsters without problems, the problem came because of me using a monster with its own AI (the handofgod monster).
3.Once done the monster starts its own AI, idleing and attacking.

Help. :pwned: If you need files, or the Mod, or whatever thinng you say, just tell.
Posted 1 month ago2019-11-27 08:48:32 UTC
in Guess who's coming to dinner... Post #343410
I will do further tests and then I'll do a new post abought it. ;)
Theory:
User posted image
Sad but true :crowbar:
Posted 1 month ago2019-11-26 20:39:23 UTC
in Guess who's coming to dinner... Post #343408
Oh, the solution was nonsense, something basic that I forgot totally until I found it in my old archives of web pages on modification of Half-Life, pages of the year 1999 or 2001, I do not remember 100% well the date.
Well, this is weird. I did scripted sequences before but this time I am having troubles because the IDLE animation plays between each scripted sequence making all look wrong.
Here´s my multimager and scripted_sequences setup.
multimanagermultimanager
first scripted_sequencefirst scripted_sequence
Second to fourth are the same except the nameSecond to fourth are the same except the name
Just in case, this is the QC file of the model.
Qc fileQc file
What can you see that´s wrong?. I have used the same scripted sequence and multimanager setup of other sequence but with only the names changed.

Also. How can I do so the turrets will not shoot where Bip01 is and shoot to the center of mass of the model?
Posted 2 months ago2019-11-12 20:15:48 UTC
in half-life still updating with necessary features Post #343356
BG maps is a full fledged feature only a dozen mods would really take advantage of
I love how they look on my mod :(
I think this...
v 2.0 menuv 2.0 menu
Look far better than this...
v1.1 menuv1.1 menu
The background map has moving APUs patrolling the bridges, trolleys running here and there carrying ammo boxes, and the Neb hovercraft flying around. :)

And that map, the playable map, needs HW acceleration for all the models it has (VERY-high-poly models i´m afraid :( ) overall when it is full of npcs flying around and 32 bots and 8 turrets are firing their guns with the addition of all the tracers, explosions, debris, etc. you can imagine. :(
Posted 2 months ago2019-11-12 17:14:08 UTC
in Guess who's coming to dinner... Post #343354
EDIT: I have noticed after using the aiscripted sequence that 4 of the animations did a JUMP or suffer of HICCUPS along a certain number of frames. Could it be caused because of the high number of joints and the lenght of the animation?

The model has 100 joints with a total number of 50 frames with all keyframes SET, no frames generated by MS3D on those sequences.
The animations look right in MS3D, no jumps or hiccups whatsoever, the problem is shown in HLMV after they being exported as smd and then compiled (I did use MS3D and Guistudiomdl to do so).

That makes the full sequence look horrible!!!

Any help will be much apreciated. :)

BTW: Will it be compiled in Blender without all this problems?

Any ideas? :/

Edit: No problem!!: I have fixed it although with minor problems almost unnoticeable. :glad: :crowbar:
Posted 2 months ago2019-11-12 17:08:23 UTC
in half-life still updating with necessary features Post #343353
-Support for background menu maps.
-ed_alloc crash fix increasing number of entities.
-Full GPU rendering posibilities.
That´s no reinventing at all!!

It´s just:

Add a better background for Half-Life mods
Avoid frustrating crashes pushing you to reduce entities that you need
Avoid using the whole CPU horsepower for rendering the map and models

That´s no reinventing, it´s just updating!! erase the background map if you wish, but the other two things must have been done ages ago. Period.
Posted 2 months ago2019-11-12 13:10:38 UTC
in half-life still updating with necessary features Post #343351
Yes, you are right, but for Goldsource modders will help them to publish very demanding mods onn Steam, because I think Xash is not very welcome there. ;)

I don't care about bump mapping or other fancy things, with just the GPU part and the ed_alloc fix will be more than enough.
Posted 2 months ago2019-11-12 10:16:20 UTC
in half-life still updating with necessary features Post #343349
When will they add this?

-Support for background menu maps.
-ed_alloc crash fix increasing number of entities.
-Full GPU rendering posibilities.

Many Xash3D users will return to Goldsource...
Yet I know this is merely wishful thinking...
Posted 2 months ago2019-11-11 21:22:35 UTC
in Guess who's coming to dinner... Post #343348
Hand Of God monster test #1 SuccessfulHand Of God monster test #1 Successful
Hand Of God monster test #2 SuccessfulHand Of God monster test #2 Successful
Now I am working on the full animated sequence synchronizing the attack of the "hand of God" with the fall and destruction of the Hecatonquiro crane. That's why I stopped working on the design of the device for 3D games, but as soon as I finish this part of the Zion Warcry mod I go back to it !!
I hope you like it!!
Posted 3 months ago2019-10-19 18:23:41 UTC
in Half Life Remake Post #343226
You´re welcome. keep us updated!!! :)
Posted 3 months ago2019-10-15 22:14:15 UTC
in My npc (monster) wont move! Post #343222
Move bip01 joint in the z axis (if the animation consist of 30 frames set the keyframe on 1 at distance zero, 15, half the distance, and set keyframe 30 at distance goal), and, ta-dah!! of course it must be done in the animation program.
Posted 3 months ago2019-10-12 12:22:09 UTC
in Half Life Remake Post #343212
But, what will you do?, maybe mapping? it is hard to find people to join a project which only have a name and no other information.

Also: what you aer asking for is a full team of developers that have to make a mod (or a total conversion) just for the like of doing it!!. If you can give some work already done sometimes people will spoonfed you a bit as I was before (thanks eternally to Sheppard and Solokiller for spoonfed me with a showel :heart: ), but you give very few to others to make them be interested in your project.

What about a storyline?, it could be cool to see how the story will start, what are your goals, what amount of work you have already done, what assets you will need (let´s say you´ll need 4 monsters, 4 new weapons, and so on), what kind of maps you will need (remember that unless you use Xash3D open world maps are not very Goldsource friendly), if you will overpass engine limits (max_edicts crashes will occur), etc, etc.

Once that info is available, people will consider to join a team. In the meantime you SHOULD start to gather some skills in any of the areas of the mod: mapping, 2D editing, sound editing, modelling, etc.

Oh. And AVOID DOING THINGS LIKE THIS!!!

https://www.moddb.com/mods/half-life-aliens-vs-predator

You cannot take another game´s assets and then put them into your mod. (Gamebanana is your paradise, man).

It is better to use SKINS and modify them giving ALL credit to the creators and AFTER ALWAYS asking permission from them.

Unless you are doing a private and non distributable mod, of course. :)
Ok, Admer!! but remember that I struggle even with the "Hello World" program :walter: ha, ha!!! I will try to implement those parts into the infantry coder (monster_gunner.cpp).

Thanks! :crowbar:
I know scientists do, but, would not it be troublesome for monsters spawned by monstermakers?
Posted 3 months ago2019-09-29 08:16:01 UTC
in Half Life Weapon Sway Post #343178
Looks good. What´s the problem?, try to play with values to get the effect you want. ;)
Posted 3 months ago2019-09-28 09:17:33 UTC
in Half Life Remake Post #343172
Posted 3 months ago2019-09-28 09:15:27 UTC
in Half Life Weapon Sway Post #343170
What game is that?
Posted 4 months ago2019-09-19 20:33:59 UTC
in I have a problem with registering Milkshape Post #343143
I have lithunwrap, which´s free and you can do an UV map within seconds.

https://gamebanana.com/dl/163109

It´s free and legal. And donig things like this is easy as pie (even if it is the part I like the less when modelling... :nya: ) .
User posted image
Posted 4 months ago2019-09-14 22:14:19 UTC
in I have a problem with registering Milkshape Post #343128
Probably uninstalling it and reinstalling it will restart the trial period. It´s not illegal.
Mmmm, yes, you´re right, it´s a dance mat!! :lol: ( I mentioned that three replies before ^^ ), but on the last designs I did (remember, this is ONLY an idea, is not that I will start to produce anything!!) the device can be rolled because the very design of the touch area.

I am now porting the sketches to a 3D program and if all goes fine with my other project (I mean: if the animations of the HOG don´t give me any headache) I will finish the prototype images very soon. In fact, I think about it with the limits of what could be done at home with a 3D printer and very basic hardware that can be bought on any big hardware store. The software and behaviour will be explained in further posts.

For the limits of the device so you will not be granted with a head bump, the very design will avoid that, in fact, the way it works will tell you to stop before exiting its boundaries (no electroshock involved!!! :crowbar: ). The Jump sensors will take care of that too just in case (I´ll tell you how)

I haven´t a Bachelor of Industrial Engineering, so I cannot tell you with precission how much it will weight, but I think it will not be more of 4 Kg, less than a suitcase filled with documents and it´s only a bit more weight than many other VR devices.

:crowbar:
I have meditated about the goggles problem and I think that the structure is wrong in what FPS gaming is about, Imy designs are more similar to military helmets. I wear some copies done for airsoft and they are not as hard to wear as you can think, of course the real ones I am sure they are uncomfortable as hell, but for this device the final product must not weight so much and many accesories present in the military versions are not required to make them work as a platform for the VR visor. :)
Maybe it´s time to develop a prototype in 3D... :crowbar: I thought about the pressure in the jumping movements, but something similar was done for the dancing games almost a decade ago, so, I think the tecnology is already done for that part. :)

I know that Dancing Mats are already done, and it´s not a new device, but I have think about it to be a more "wearable" device to be used in 3D sports games, so its quality and toughness must be better.

Give me some days ;)
Haha, thanks!!! :P I have a newborn liver on a 6 foot and 225 lb body, I cannot stand a simple beeer without feel dizzy... ^^

The device is nothing but a big touchpad surface with some modifications. As accurate as that!! :)

Its mechanism is a s imple as:

2 feet on Stand surface = idle
1 feet on Stand 1 on Forward = advance
1 feet on Stand 1 on Backward = step back
1 feet on Stand 1 on Strafe surface = strafe on that direction
Both feet on air (you can configure this part too for long jump) = Jump

Crouch is detected by the 4 corner sensors .

For continuous strafe and aiming to a target (when you do a full circle around an enemy while you fire) you must only keep a feet on the Stand area and put the other feet along the outer circle while you aim to the target using the VR goggles and the stick. In the very moment you pot both feet on the Stand area you finish the strafe movement.

I thought in adding two kind of sticks, one in a shape of a smg and other in the shape of a normal pistol; I have played airsoft for some years and I usually passed from primary to secondary easily in the middle of combat, so I think this part will require some work, unless you use a single device with all functions for changing weapon and other stuff added. Even I designed a throwable device to simulate knives, grenades, and other stuff like that.

I have no idea of electronics apart of building my own PCs and a very little more, but i can define the way it should work.
The message was uncomplete... :( don't make fun of me please... :(
I have been seeing a lot of stuff about VR devices, but there´s only two or three companies creating devices to let you "move" while using VR goggles on FPS games, and, if so, they are SO expensive and bulky that are not affordable almost for anyone. I have designed a device and I want you to give me your thoughts about it.

It will use a regular USB connection and will coordinate its movement with the VR device, it will require some real movement for the player, and jumping and strafing will be available, the same goes for crouching and sprinting. I have highlighted some areas, of course all areas will be operative.

Its prize will be the one of a regular keyboard, and it wil lbe not more than 100 dollars, it will be designed so it can be stored and deployed in a few seconds. It will be cheap and be more accesible to people than oter devices more expensive and uncomfortable.

It could be customizable, as keyboards are through a very simple program, the pressure response can be regulated via software.
FPS MDD (Movement Detection Device)FPS MDD (Movement Detection Device)
Posted 4 months ago2019-08-21 07:51:42 UTC
in About " hud_color " Command Post #343055
In hud.h

#define RGB_WHITEISH 0x00FFFFFF//255,255,255

in ammo.cpp

UnpackRGB(r,g,b,RGB_WHITEISH);

over the line...

ScaleColors(r, g, b, a );

in battery.cpp over the line...

if (!(gHUD.m_iWeaponBits & (1<<(WEAPON_SUIT)) ))
return 1;

I put the same and worked. :)
I remember Solokiller pointed me to add console messages for a block of code that´s not working, I did that part the first (now I add a console printing part in every new code I try ;) ). And... well I find a "dirty" fix. Now it´s kind of solved, it is not perfect but solves all. Thanks for all the solutions!! :P
Posted 5 months ago2019-08-18 14:15:50 UTC
in About " hud_color " Command Post #343042
And binding a key to the "hud_color" order? like bind "c" hud_color whatever.... :|
If you need some of those models, just tell me, remember that I am quite good at modelling. ;)
Yes, I mean "delay", haha, my english sometime suck most than my coding!!

The code is executed right after when the primary or secondary fire is done, under the:

*m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;*

...part. So when a bullet is fired the code tells that if the player is a fake client (a bot) and ammo reaches zero, give it some little ammo applying some delay to preevnt the bot have "infinite" ammo (i did that part in a previous version of the bot simply adding that if its fakeclient just...

*m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]-=0;*

What I really want is to add a delay between the bot´s ammo reaches zero and the moment the code gives it some extra ammo.
This is the actual code.
It is located into the primary and secondary fire function of the weapon. It works!, but the reload is inmediate, which is not the purpose of the code as you can see because I put into it two retardants for both primary and secondary fire.

//=====================================================================
// Modulo para limitar la actividad de los Bots cuando se quedan sin munición y le regalamos un poco.
// Module to limit the activity of the Bots when they run out of ammunition and we give the a little ammo.
//=====================================================================
if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0))
{
m_flNextPrimaryAttack = 5.0;// Stop firing for a while
m_flNextSecondaryAttack = 5.0;// Stop firing for a while
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] += 25;//Don´t add so much ammo

}
//=========================================================================

Retardant works fine here:

if ((FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT))&&(m_iHeat>=200)){ m_flNextPrimaryAttack = 8.0f; }//Bots don´t fire for 5 secs if they overheat!!

Sure I am doing something wrong but again I´m lost.
Brilliant!!, I would like to see some swarm of cyber-bees in your mod, Admer!! or giant killer-wasps... :crowbar:
I put m_flFreeammotime = 0 in the spawn method of the weapon to see if it works, but with no avail :( Also, I have tried to put the if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_flFreeammotime && gpGlobals->time > m_flFreeammotime)) into the first "if" right under *m_flFreeammotime = gpGlobals->time + 8.0f; but it does not work either. :( . If I remove the m_flFreeammotime the Bots have this little ammount of ammo again available, but that´s not what I wanted, I want them to have that help after some time. I did this because sometimes the Bots don´t go close the reloader guys and remain helpless against the enemy because they are not reloaded, but without some handicap condition they last more than what´s intended to last.

This is my last version, don´t work either...


if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0))
{
m_flFreeammotime = gpGlobals->time + 8.0f;

{
if (m_flFreeammotime && gpGlobals->time > m_flFreeammotime)
{
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=25;
m_flFreeammotime = 0;
}
}
}

EDIT: I´m a moron. Sorry, I´ll try THIS on the RELOAD function instead.... :\

Tried:


if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0))
{
m_flNextPrimaryAttack = 5.0;
m_flNextSecondaryAttack = 5.0;
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=25;

}

Just to keep them from firing continuously after reload. But With no luck... No free ammo added...
This is the function I created to do this:

1. If Bot (m_pPlayer->pev->flags, FL_FAKECLIENT)...
2. Depletes its ammo (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0)
3. m_flFreeammotime (declered in weapons.h) increases its value 5 secs ( 8.0f )
4. Then if time (I think I wrote this right) is greater than m_flFreeammotime (m_flFreeammotime && gpGlobals->time > m_flFreeammotime)
5. Give some ammo to the bo (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=25;) , but not before 5 seconds have passed...

The function:
/================================================================================================ / Modulo para limitar la actividad de los Bots cuando se quedan sin munición y le regalamos un poco
//================================================================================================
if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0))
{
m_flFreeammotime = gpGlobals->time + 8.0f;

}
if (FBitSet(m_pPlayer->pev->flags, FL_FAKECLIENT) && (m_flFreeammotime && gpGlobals->time > m_flFreeammotime))
{
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]+=25;
}

//================================================================================================

It does not work. Bots deplete their ammo and remain that way, no ammo is given to them. The "m_flFreeammotime && gpGlobals->time > m_flFreeammotime" it´s the same code ( using m_flFreezeTime instead) used to detect if that time (5 secs) has passed and let the bots move after firing the weapons, and it works!, I thought that using the same code will work too but it does not.

What I am doing wrong? :(