other akimbo fire effects, toggle-able prediction demo
This commit is contained in:
parent
3c1aad1559
commit
d8b003e23c
16 changed files with 157 additions and 40 deletions
|
@ -41,11 +41,33 @@ ClientGame_ConsoleCommand(void)
|
||||||
TS_playerChangeFiremode();
|
TS_playerChangeFiremode();
|
||||||
//pSeatLocal->m_bFireModeFreshPress = TRUE;
|
//pSeatLocal->m_bFireModeFreshPress = TRUE;
|
||||||
break;
|
break;
|
||||||
case "useitems":
|
|
||||||
|
#if USE_ITEMS_PREDICTION_TEST == 0
|
||||||
|
//case "useitems"
|
||||||
|
// TS_playerUseItems();
|
||||||
|
// break;
|
||||||
|
case "+useitems":
|
||||||
|
pl = (player)pSeat->m_ePlayer;
|
||||||
|
if( !(pl.gflags & GF_UNUSED3)){
|
||||||
TS_playerUseItems();
|
TS_playerUseItems();
|
||||||
|
}
|
||||||
|
pl.gflags |= GF_UNUSED3;
|
||||||
|
break;
|
||||||
|
case "-useitems":
|
||||||
|
pl = (player)pSeat->m_ePlayer;
|
||||||
|
pl.gflags &= ~GF_UNUSED3;
|
||||||
|
break;
|
||||||
|
#else
|
||||||
|
case "+useitems":
|
||||||
|
//TS_playerUseItems();
|
||||||
//pSeatLocal->m_bUseItemsFreshPress = TRUE;
|
//pSeatLocal->m_bUseItemsFreshPress = TRUE;
|
||||||
pSeatLocal->m_bUseItems = TRUE;
|
pSeatLocal->m_bUseItems = TRUE;
|
||||||
break;
|
break;
|
||||||
|
case "-useitems":
|
||||||
|
pSeatLocal->m_bUseItems = FALSE;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case "usepowerup":
|
case "usepowerup":
|
||||||
TS_playerUsePowerup();
|
TS_playerUsePowerup();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -78,7 +78,10 @@ ClientGame_Init(float apilevel, string enginename, float engineversion)
|
||||||
registercommand("getangle");
|
registercommand("getangle");
|
||||||
|
|
||||||
registercommand("firemode");
|
registercommand("firemode");
|
||||||
registercommand("useitems");
|
|
||||||
|
registercommand("+useitems");
|
||||||
|
registercommand("-useitems");
|
||||||
|
|
||||||
registercommand("usepowerup");
|
registercommand("usepowerup");
|
||||||
registercommand("+alt1");
|
registercommand("+alt1");
|
||||||
registercommand("-alt1");
|
registercommand("-alt1");
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
#pragma target fte
|
|
||||||
#pragma progs_dat "../../csprogs.dat"
|
// SHARED CONFIG SETTING - set this consistently between client/server progs!
|
||||||
|
// If 0, nothing special.
|
||||||
|
// If 1, Makes some changes to enable prediction for useitems.
|
||||||
|
// Spams the turn-on click noise though.
|
||||||
|
// Doubt this is worth further support as I don't know how to support this for
|
||||||
|
// more than one extra feature, the INPUT_BUTTON# list is exhausted after this.
|
||||||
|
#define USE_ITEMS_PREDICTION_TEST 0
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
//---WARNINGS DISABLED---
|
//---WARNINGS DISABLED---
|
||||||
#pragma warning disable Q302 /*uninitialised locals*/
|
#pragma warning disable Q302 /*uninitialised locals*/
|
||||||
|
@ -8,8 +17,10 @@
|
||||||
// No idea how to make warnings disabled only per file, in there
|
// No idea how to make warnings disabled only per file, in there
|
||||||
// would affect all files included in the compile after anyway
|
// would affect all files included in the compile after anyway
|
||||||
#pragma warning disable F314 /*implicit cast*/
|
#pragma warning disable F314 /*implicit cast*/
|
||||||
/////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma target fte
|
||||||
|
#pragma progs_dat "../../csprogs.dat"
|
||||||
|
|
||||||
#define CSQC
|
#define CSQC
|
||||||
#define CLIENT
|
#define CLIENT
|
||||||
|
|
|
@ -1,12 +1,23 @@
|
||||||
#pragma target fte
|
|
||||||
#pragma progs_dat "../../progs.dat"
|
// SHARED CONFIG SETTING - set this consistently between client/server progs!
|
||||||
|
// If 0, nothing special.
|
||||||
|
// If 1, Makes some changes to enable prediction for useitems.
|
||||||
|
// Spams the turn-on click noise though.
|
||||||
|
// Doubt this is worth further support as I don't know how to support this for
|
||||||
|
// more than one extra feature, the INPUT_BUTTON# list is exhausted after this.
|
||||||
|
#define USE_ITEMS_PREDICTION_TEST 0
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
//---WARNINGS DISABLED---
|
//---WARNINGS DISABLED---
|
||||||
// As of now, the only warnings left are for the server/gamerules.qc unused globals
|
// As of now, the only warnings left are for the server/gamerules.qc unused globals
|
||||||
// like sRule_TeamNames.
|
// like sRule_TeamNames.
|
||||||
#pragma warning disable Q302 /*uninitialised locals*/
|
#pragma warning disable Q302 /*uninitialised locals*/
|
||||||
/////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma target fte
|
||||||
|
#pragma progs_dat "../../progs.dat"
|
||||||
|
|
||||||
#define QWSSQC
|
#define QWSSQC
|
||||||
#define SERVER
|
#define SERVER
|
||||||
|
|
|
@ -16,7 +16,8 @@ enum TS_Team{
|
||||||
|
|
||||||
|
|
||||||
// Uhh. Please work?
|
// Uhh. Please work?
|
||||||
#define INPUT_BUTTON9 0x00000100
|
// nope. it does not.
|
||||||
|
//#define INPUT_BUTTON9 0x00000100
|
||||||
|
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
|
|
|
@ -623,8 +623,8 @@ TS_playerUseItems(void){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//_TS_playerUseItems();
|
|
||||||
|
|
||||||
|
#if USE_ITEMS_PREDICTION_TEST == 0
|
||||||
|
|
||||||
#ifdef CLIENT
|
#ifdef CLIENT
|
||||||
sendevent("TS_playerUseItems", "");
|
sendevent("TS_playerUseItems", "");
|
||||||
|
@ -635,6 +635,13 @@ TS_playerUseItems(void){
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
// always do this then
|
||||||
|
_TS_playerUseItems();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -335,14 +335,22 @@ Game_Input(void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if USE_ITEMS_PREDICTION_TEST == 1
|
||||||
if(input_buttons & INPUT_BUTTON9){
|
//INPUT_BUTTON2 reserved for jump...
|
||||||
|
//INPUT_BUTTON6
|
||||||
|
//INPUT_BUTTON7 (used for sneaking currently)
|
||||||
|
if(input_buttons & INPUT_BUTTON6){
|
||||||
//printfline("IM here what");
|
//printfline("IM here what");
|
||||||
//TS_playerUseItems();
|
|
||||||
|
if( !(pl.gflags & GF_UNUSED3)){
|
||||||
|
TS_playerUseItems();
|
||||||
}
|
}
|
||||||
|
pl.gflags |= GF_UNUSED3;
|
||||||
|
}else{
|
||||||
|
pl.gflags &= ~GF_UNUSED3;
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -502,7 +510,6 @@ void ClientGame_Input_Frame(void){
|
||||||
// unless there is some other way that I'm missing.
|
// unless there is some other way that I'm missing.
|
||||||
|
|
||||||
if (pSeatLocal->m_iInputSpeed == TRUE) {
|
if (pSeatLocal->m_iInputSpeed == TRUE) {
|
||||||
//input_buttons |= INPUT_BUTTON9;
|
|
||||||
input_buttons |= INPUT_BUTTON7;
|
input_buttons |= INPUT_BUTTON7;
|
||||||
//self.flags |= FL_SNEAK;
|
//self.flags |= FL_SNEAK;
|
||||||
}else{
|
}else{
|
||||||
|
@ -510,10 +517,15 @@ void ClientGame_Input_Frame(void){
|
||||||
}
|
}
|
||||||
//printfline("input_buttons: %d", (INPUT_BUTTON7 & input_buttons) );
|
//printfline("input_buttons: %d", (INPUT_BUTTON7 & input_buttons) );
|
||||||
|
|
||||||
|
|
||||||
|
#if USE_ITEMS_PREDICTION_TEST == 1
|
||||||
if(pSeatLocal->m_bUseItems){
|
if(pSeatLocal->m_bUseItems){
|
||||||
pSeatLocal->m_bUseItems = FALSE;
|
//pSeatLocal->m_bUseItems = FALSE;
|
||||||
input_buttons |= INPUT_BUTTON9;
|
input_buttons |= INPUT_BUTTON6;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1892,6 +1892,8 @@ player::preThinkShared(void){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//TAGGG - any use for input_angles here? Shared, predicted?
|
||||||
|
|
||||||
// TODO: make this view kickback properly predicted
|
// TODO: make this view kickback properly predicted
|
||||||
#ifdef CLIENT
|
#ifdef CLIENT
|
||||||
//printfline("So what is my view ang?? %.2f %.2f", view_angles[0], view_angles[1]);
|
//printfline("So what is my view ang?? %.2f %.2f", view_angles[0], view_angles[1]);
|
||||||
|
|
|
@ -11,15 +11,11 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
weapon_t w_null = {};
|
weapon_t w_null = {};
|
||||||
|
|
||||||
// Populate each slot with a member of the enum early on in runtime instead.
|
// Populate each slot with a member of the enum early on in runtime instead.
|
||||||
weapon_t g_weapons[WEAPON_ID::LAST_ID];
|
weapon_t g_weapons[WEAPON_ID::LAST_ID];
|
||||||
|
|
||||||
// Not needed here anymore?
|
|
||||||
//var int g_weapon_weights[g_weapons.lengdth];
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
weaponconfig_data_init(weaponconfig_data_t* arg_this)
|
weaponconfig_data_init(weaponconfig_data_t* arg_this)
|
||||||
|
@ -322,7 +318,12 @@ weapon_base_onAttack_multi(player pl, weapondata_basic_t* basePRef, weapondynami
|
||||||
{
|
{
|
||||||
|
|
||||||
weapondata_gun_t baseRef = *((weapondata_gun_t*)basePRef);
|
weapondata_gun_t baseRef = *((weapondata_gun_t*)basePRef);
|
||||||
|
|
||||||
|
//TAGGG - shared random test
|
||||||
float randoAngFactor = randomInRange_f(0, 1);
|
float randoAngFactor = randomInRange_f(0, 1);
|
||||||
|
//float randoAngFactor = 0.5;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//float finalAng = (40 + randoAngFactor*( (90-40)*2 ) ) *(M_PI/180);
|
//float finalAng = (40 + randoAngFactor*( (90-40)*2 ) ) *(M_PI/180);
|
||||||
|
|
||||||
|
@ -332,7 +333,7 @@ weapon_base_onAttack_multi(player pl, weapondata_basic_t* basePRef, weapondynami
|
||||||
float kickbackToApply = pl.fAccuracyKickback;
|
float kickbackToApply = pl.fAccuracyKickback;
|
||||||
|
|
||||||
if(baseAcc < 0.001){
|
if(baseAcc < 0.001){
|
||||||
//minimum enforced, per notes in wepon_official.txt
|
// minimum enforced, per notes in weapons_official.txt
|
||||||
baseAcc = 0.001;
|
baseAcc = 0.001;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,15 +388,17 @@ weapon_base_onAttack_multi(player pl, weapondata_basic_t* basePRef, weapondynami
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
//TAGGG - TODO! The last parameter of TraceAttack_FireBullets should use the Weapon ID,
|
//TAGGG - TODO! Re-picking the angle to kickback per hit may make more sense than varrying the intensity
|
||||||
// like "WEAPON_ID::Glock18". Consider sending that as a parameter to be available here
|
// of the exact same direction for both shots, just a thought
|
||||||
if(attackTypeUsed & BITS_AKIMBOCHOICE_LEFT){
|
if(attackTypeUsed & BITS_AKIMBOCHOICE_LEFT){
|
||||||
//left
|
//left
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
TraceAttack_FireBullets(shellCount, (pl.origin + pl.view_ofs), baseRef.fAttackDamage, [acc, acc], (int)pl.activeweapon);
|
TraceAttack_FireBullets(shellCount, (pl.origin + pl.view_ofs), baseRef.fAttackDamage, [acc, acc], (int)pl.activeweapon);
|
||||||
#endif
|
#endif
|
||||||
arg_thisWeapon.iClipLeft -= 1;
|
arg_thisWeapon.iClipLeft -= 1;
|
||||||
|
//TAGGG - shared random test
|
||||||
toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * randomInRange_f(miner, maxer);
|
toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * randomInRange_f(miner, maxer);
|
||||||
|
//toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * 0.7;
|
||||||
pl.vViewAngleOffsetTarget += toGo;
|
pl.vViewAngleOffsetTarget += toGo;
|
||||||
}
|
}
|
||||||
if(attackTypeUsed & BITS_AKIMBOCHOICE_RIGHT){
|
if(attackTypeUsed & BITS_AKIMBOCHOICE_RIGHT){
|
||||||
|
@ -405,7 +408,9 @@ weapon_base_onAttack_multi(player pl, weapondata_basic_t* basePRef, weapondynami
|
||||||
TraceAttack_FireBullets(shellCount, (pl.origin + pl.view_ofs), baseRef.fAttackDamage, [acc, acc], (int)pl.activeweapon);
|
TraceAttack_FireBullets(shellCount, (pl.origin + pl.view_ofs), baseRef.fAttackDamage, [acc, acc], (int)pl.activeweapon);
|
||||||
#endif
|
#endif
|
||||||
arg_thisWeapon.iClipAkimboLeft -= 1;
|
arg_thisWeapon.iClipAkimboLeft -= 1;
|
||||||
|
//TAGGG - shared random test
|
||||||
toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * randomInRange_f(miner, maxer);
|
toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * randomInRange_f(miner, maxer);
|
||||||
|
//toGo = [-sin(finalAng), cos(finalAng), 0] * baseRef.firestats.fViewKickback * 0.7;
|
||||||
pl.vViewAngleOffsetTarget += toGo;
|
pl.vViewAngleOffsetTarget += toGo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -940,7 +945,7 @@ weapon_akimbo_semiAttackChoice(
|
||||||
int finalAkimboChoice = BITS_AKIMBOCHOICE_NONE;
|
int finalAkimboChoice = BITS_AKIMBOCHOICE_NONE;
|
||||||
weapondata_basic_t baseRef = *basePRef;
|
weapondata_basic_t baseRef = *basePRef;
|
||||||
|
|
||||||
//printfline("PRE - EVERYBODY GET DOWN x - next:%d", pl.nextAkimboAttackPreference);
|
//printfline("PRE - weapon_akimbo_semiAttackChoice x - next:%d", pl.nextAkimboAttackPreference);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if(pl.akimboTest != 0){
|
if(pl.akimboTest != 0){
|
||||||
|
@ -948,6 +953,7 @@ weapon_akimbo_semiAttackChoice(
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
//if(pl.akimboTest == 0)
|
//if(pl.akimboTest == 0)
|
||||||
if(attackTypeUsed & BITS_AKIMBOCHOICE_LEFT){
|
if(attackTypeUsed & BITS_AKIMBOCHOICE_LEFT){
|
||||||
// only allow it if this is a fresh button press
|
// only allow it if this is a fresh button press
|
||||||
|
@ -1119,7 +1125,7 @@ weapon_akimbo_semiAttackChoice(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//printfline("EVERYBODY GET DOWN %i - next:%d", finalAkimboChoice, pl.nextAkimboAttackPreference);
|
//printfline("POST - weapon_akimbo_semiAttackChoice %i - next:%d", finalAkimboChoice, pl.nextAkimboAttackPreference);
|
||||||
|
|
||||||
return finalAkimboChoice;
|
return finalAkimboChoice;
|
||||||
}// weapon_akimbo_semiAttackChoice
|
}// weapon_akimbo_semiAttackChoice
|
||||||
|
@ -2345,6 +2351,10 @@ viewEv_weapon_EjectShell(void)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var int testCount1 = 0;
|
||||||
|
var int testCount2 = 0;
|
||||||
|
|
||||||
void
|
void
|
||||||
viewEv_weapon_ShowMuzzleFlash(void)
|
viewEv_weapon_ShowMuzzleFlash(void)
|
||||||
{
|
{
|
||||||
|
@ -2352,6 +2362,14 @@ viewEv_weapon_ShowMuzzleFlash(void)
|
||||||
if(pl.iMuzzleFlashType != MUZZLEFLASH_ID::NONE){
|
if(pl.iMuzzleFlashType != MUZZLEFLASH_ID::NONE){
|
||||||
muzzleflashdata_t* tempRef = ary_muzzleFlashData[pl.iMuzzleFlashType];
|
muzzleflashdata_t* tempRef = ary_muzzleFlashData[pl.iMuzzleFlashType];
|
||||||
TS_View_ShowMuzzleflash(tempRef->iSpritePrecacheID, pl.iMuzzleFlashAkimboChoice);
|
TS_View_ShowMuzzleflash(tempRef->iSpritePrecacheID, pl.iMuzzleFlashAkimboChoice);
|
||||||
|
|
||||||
|
if(pl.iMuzzleFlashAkimboChoice==BITS_AKIMBOCHOICE_LEFT){
|
||||||
|
testCount1++;
|
||||||
|
}else if(pl.iMuzzleFlashAkimboChoice==BITS_AKIMBOCHOICE_RIGHT){
|
||||||
|
testCount2++;
|
||||||
|
}
|
||||||
|
printf("Hello? %i %i\n", testCount1, testCount2);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,12 @@ void weapon_akimbocolts_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon,
|
||||||
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(arg_thisWeapon.iBitsUpgrade & BITS_WEAPONOPT_SILENCER) ){
|
||||||
|
weapon_ClientEffectsAkimbo(MUZZLEFLASH_ID::SMALL, SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
||||||
|
} else {
|
||||||
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
||||||
|
}
|
||||||
|
|
||||||
}// weapon_akimbocolts_akimbo_attack
|
}// weapon_akimbocolts_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
@ -278,8 +284,6 @@ w_akimbocolts_reload(void)
|
||||||
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
||||||
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::AKIMBOCOLTS], arg_thisWeapon);
|
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::AKIMBOCOLTS], arg_thisWeapon);
|
||||||
|
|
||||||
leftCount = 0;
|
|
||||||
rightCount = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
|
|
|
@ -310,6 +310,12 @@ void weapon_beretta_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, int
|
||||||
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(arg_thisWeapon.iBitsUpgrade & BITS_WEAPONOPT_SILENCER) ){
|
||||||
|
weapon_ClientEffectsAkimbo(MUZZLEFLASH_ID::SMALL, SHELLEJECT_ID::_9MM, finalAkimboChoice);
|
||||||
|
} else {
|
||||||
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::_9MM, finalAkimboChoice);
|
||||||
|
}
|
||||||
|
|
||||||
}// weapon_beretta_akimbo_attack
|
}// weapon_beretta_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
@ -333,8 +339,6 @@ w_beretta_akimbo_reload(void)
|
||||||
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
||||||
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::BERETTA_AKIMBO], arg_thisWeapon);
|
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::BERETTA_AKIMBO], arg_thisWeapon);
|
||||||
|
|
||||||
leftCount = 0;
|
|
||||||
rightCount = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
|
|
|
@ -253,6 +253,12 @@ void weapon_fiveseven_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, i
|
||||||
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(arg_thisWeapon.iBitsUpgrade & BITS_WEAPONOPT_SILENCER) ){
|
||||||
|
weapon_ClientEffectsAkimbo(MUZZLEFLASH_ID::SMALL, SHELLEJECT_ID::_56, finalAkimboChoice);
|
||||||
|
} else {
|
||||||
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::_56, finalAkimboChoice);
|
||||||
|
}
|
||||||
|
|
||||||
}// weapon_fiveseven_akimbo_attack
|
}// weapon_fiveseven_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
@ -276,8 +282,6 @@ w_fiveseven_akimbo_reload(void)
|
||||||
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
||||||
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::FIVESEVEN_AKIMBO], arg_thisWeapon);
|
weapon_gun_Reload(pl, (weapondata_gun_t*)ary_weaponData[WEAPON_ID::FIVESEVEN_AKIMBO], arg_thisWeapon);
|
||||||
|
|
||||||
leftCount = 0;
|
|
||||||
rightCount = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
|
|
|
@ -263,6 +263,12 @@ void weapon_miniuzi_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, int
|
||||||
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(arg_thisWeapon.iBitsUpgrade & BITS_WEAPONOPT_SILENCER) ){
|
||||||
|
weapon_ClientEffectsAkimbo(MUZZLEFLASH_ID::SMALL, SHELLEJECT_ID::_9MM, finalAkimboChoice);
|
||||||
|
} else {
|
||||||
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::_9MM, finalAkimboChoice);
|
||||||
|
}
|
||||||
|
|
||||||
}// weapon_miniuzi_akimbo_attack
|
}// weapon_miniuzi_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -222,6 +222,12 @@ void weapon_skorpion_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, in
|
||||||
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
weapon_base_setWholeAttackDelay(pl, (*ary_weaponData[pl.activeweapon]).fAttackDelay * 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(arg_thisWeapon.iBitsUpgrade & BITS_WEAPONOPT_SILENCER) ){
|
||||||
|
weapon_ClientEffectsAkimbo(MUZZLEFLASH_ID::SMALL, SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
||||||
|
} else {
|
||||||
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
||||||
|
}
|
||||||
|
|
||||||
}// weapon_skorpion_akimbo_attack
|
}// weapon_skorpion_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,11 @@ weapondata_ironsight_t weapon_socommk23_akimbo =
|
||||||
weaponseq_socommk23_akimbo::idle,
|
weaponseq_socommk23_akimbo::idle,
|
||||||
weaponseq_socommk23_akimbo::draw,
|
weaponseq_socommk23_akimbo::draw,
|
||||||
31.0f / 40.0f,
|
31.0f / 40.0f,
|
||||||
|
|
||||||
0.19f, //fire delay
|
0.19f, //fire delay
|
||||||
|
//0.03f,
|
||||||
|
//0.15f,
|
||||||
|
|
||||||
15.0f, //dmg
|
15.0f, //dmg
|
||||||
TRUE,
|
TRUE,
|
||||||
BITS_WEAPONOPT_SILENCER | BITS_WEAPONOPT_LASERSIGHT | BITS_WEAPONOPT_FLASHLIGHT | BITS_WEAPONOPT_AKIMBO,
|
BITS_WEAPONOPT_SILENCER | BITS_WEAPONOPT_LASERSIGHT | BITS_WEAPONOPT_FLASHLIGHT | BITS_WEAPONOPT_AKIMBO,
|
||||||
|
@ -143,9 +147,10 @@ w_socommk23_akimbo_holster(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
var int leftCount = 0;
|
var int leftCount = 0;
|
||||||
var int rightCount = 0;
|
var int rightCount = 0;
|
||||||
|
*/
|
||||||
|
|
||||||
// General attack method to be called by primary or secondary fire as needed.
|
// General attack method to be called by primary or secondary fire as needed.
|
||||||
// The firemode used determines whether only pressing primary fire works (alternate b/w
|
// The firemode used determines whether only pressing primary fire works (alternate b/w
|
||||||
|
@ -195,6 +200,7 @@ void weapon_socommk23_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, i
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// DEBUG!!!
|
// DEBUG!!!
|
||||||
if((finalAkimboChoice & BITS_AKIMBOCHOICE_LEFT)){
|
if((finalAkimboChoice & BITS_AKIMBOCHOICE_LEFT)){
|
||||||
leftCount++;
|
leftCount++;
|
||||||
|
@ -203,6 +209,7 @@ void weapon_socommk23_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, i
|
||||||
rightCount++;
|
rightCount++;
|
||||||
}
|
}
|
||||||
printfline("COUNTS! %i %i", leftCount, rightCount);
|
printfline("COUNTS! %i %i", leftCount, rightCount);
|
||||||
|
*/
|
||||||
|
|
||||||
// Use me for things the recent firing round already did to avoid redundancy.
|
// Use me for things the recent firing round already did to avoid redundancy.
|
||||||
// That is, if left-click was pressed a fraction of a second ago and then right-click
|
// That is, if left-click was pressed a fraction of a second ago and then right-click
|
||||||
|
@ -319,7 +326,6 @@ void weapon_socommk23_akimbo_attack(player pl, weapondynamic_t arg_thisWeapon, i
|
||||||
weapon_EjectShellAkimbo(SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
weapon_EjectShellAkimbo(SHELLEJECT_ID::GENERIC, finalAkimboChoice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}// weapon_socommk23_akimbo_attack
|
}// weapon_socommk23_akimbo_attack
|
||||||
|
|
||||||
|
|
||||||
|
@ -344,8 +350,8 @@ w_socommk23_akimbo_reload(void)
|
||||||
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
weapondynamic_t arg_thisWeapon = pl.ary_myWeapons[pl.inventoryEquippedIndex];
|
||||||
weapon_ironsight_Reload(pl, (weapondata_ironsight_t*)ary_weaponData[WEAPON_ID::SOCOMMK23_AKIMBO], arg_thisWeapon);
|
weapon_ironsight_Reload(pl, (weapondata_ironsight_t*)ary_weaponData[WEAPON_ID::SOCOMMK23_AKIMBO], arg_thisWeapon);
|
||||||
|
|
||||||
leftCount = 0;
|
//leftCount = 0;
|
||||||
rightCount = 0;
|
//rightCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
float
|
||||||
|
|
|
@ -44,7 +44,7 @@ bind "f2" "vote no"
|
||||||
bind "m" "chooseteam"
|
bind "m" "chooseteam"
|
||||||
bind "b" "buy"
|
bind "b" "buy"
|
||||||
bind "f" "firemode"
|
bind "f" "firemode"
|
||||||
bind "n" "useitems"
|
bind "n" "+useitems"
|
||||||
// stunt-related (TODO)
|
// stunt-related (TODO)
|
||||||
bind "MOUSE3" "+alt1"
|
bind "MOUSE3" "+alt1"
|
||||||
// coldcock (some gun's melee)
|
// coldcock (some gun's melee)
|
||||||
|
|
Loading…
Reference in a new issue