Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

[cssb war3ft] Не работает ульта камикадзе у нежити

Статус пользователя sot100
сообщение 13.10.2015, 17:22
Сообщение #1


Стаж: 18 лет

Сообщений: 1695
Благодарностей: 500
Полезность: 711

Мод CSSB 1.5
Build 6153-beta
AMX 1.8.2

Не работает ульта Камикадзе (Suicide Bomber) у рассы Нежить (Undead)
Мод после скачивания только разархивировал и скомпилировал.
Есть решение у кого?


race_undead.inl
CODE
/*
* Race: Undead Scourge Functions
*/

#define EXPLOSION_MAX_DAMAGE 50
#define EXPLOSION_RANGE 300
#define EXPLOSION_BLAST_RADIUS 250


UD_Suicide( idUser )
{

// Ultimate has been used, so we can't use it again!
if ( !ULT_Available( idUser ) )
{
return;
}

// If we ult while changing teams, you will kill your old teammates, we don't want that!!
if ( p_data_b[idUser][PB_CHANGINGTEAM] )
{
return;
}

// Play the undead explosion sound!!!
emit_sound( idUser, CHAN_STATIC, g_szSounds[SOUND_SUICIDE], 1.0, ATTN_NORM, 0, PITCH_NORM );

new parm[5], vOrigin[3];
get_user_origin( idUser, vOrigin );

parm[0] = idUser;
parm[1] = 6;
parm[2] = vOrigin[0];
parm[3] = vOrigin[1];
parm[4] = vOrigin[2];

// Set up the tasks to damage + draw effects
set_task( 0.5, "_UD_SuicideExplode", TASK_EXPLOSION + idUser, parm, 5 );
set_task( 0.5, "_UD_SuicideBlastCircles", TASK_BEAMCYLINDER + idUser, parm, 5 );

// Create an implosion effect where they died
Create_TE_IMPLOSION( vOrigin, 100, 20, 5 );

// Set up an ultimate delay (in case the user respawns)
ULT_ResetCooldown( idUser, get_pcvar_num( CVAR_wc3_ult_cooldown ) );
}


// This is only use in _UD_SuicideExplode so declaring it here should be fine
new bool:bIgnoreDmg[33] = false;

// Draw the explosions
public _UD_SuicideExplode( parm[5] )
{
new idUser = parm[0];

if ( get_pcvar_num( CVAR_wc3_psychostats ) )
{
new WEAPON = CSW_SUICIDE - CSW_WAR3_MIN;

iStatsShots[idUser][WEAPON]++;
}

new vOrigin[3], vPosition[3];
vOrigin[0] = parm[2];
vOrigin[1] = parm[3];
vOrigin[2] = parm[4];

vPosition[0] = vOrigin[0] + random_num( -100, 100 );
vPosition[1] = vOrigin[1] + random_num( -100, 100 );
vPosition[2] = vOrigin[2] + random_num( -50, 50 );

Create_TE_EXPLOSION( vOrigin, vPosition, g_iSprites[SPR_FIREBALL], (random_num(0,20) + 20), 12, TE_EXPLFLAG_NONE );

// This doesn't look correct in Day of Defeat, so lets only do it for CS/CZ
if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
{
Create_TE_Smoke( vOrigin, vPosition, g_iSprites[SPR_SMOKE], 60, 10 );
}

new players[32], numberofplayers;
get_players( players, numberofplayers, "a" );

new i, iTargetID, vTargetOrigin[3], iDamage, iDistance;
new iMultiplier = ( EXPLOSION_MAX_DAMAGE * EXPLOSION_MAX_DAMAGE ) / EXPLOSION_RANGE;
new iTeam = get_user_team( idUser );

// Check all players and see if they should be damaged
for ( i = 0; i < numberofplayers; i++ )
{
iTargetID = players[i];

// Get origin of target
get_user_origin( iTargetID, vTargetOrigin );

// Get distance in b/t target and caster
iDistance = get_distance( vOrigin, vTargetOrigin );

// Make sure this user is close enough to do damage + isn't immune + isn't on the same team + isn't already immune to all damage
if ( iDistance < EXPLOSION_RANGE && iTeam != get_user_team( iTargetID ) && !bIgnoreDmg[iTargetID] )
{

if ( ULT_CanUserBlockUlt( iTargetID ) )
{
ULT_RemoveCharge( iTargetID, 5 );

ULT_Blocked( idUser );

bIgnoreDmg[iTargetID] = true;
}

// The user isn't immune!
else
{

// Calculate the damage to be done
iDamage = ( EXPLOSION_RANGE - iDistance) * iMultiplier;
iDamage = sqroot( iDamage );

// Damage them!!!!
WC3_Damage( iTargetID, idUser, iDamage, CSW_SUICIDE, -1 );

// Lets shake up their screen a bit
Create_ScreenShake( iTargetID, (1<<14), (1<<13), (1<<14) );
}
}

// Reset the "don't damage" rule
if ( parm[1] - 1 <= 0 )
{
bIgnoreDmg[iTargetID] = false;
}
}

--parm[1];

// Lets keep going if we have some left!
if ( parm[1] > 0 )
{
set_task( 0.1, "_UD_SuicideExplode", TASK_EXPLOSION + idUser, parm, 5 );
}
}

// Draw the blast circles
public _UD_SuicideBlastCircles( parm[5] )
{
new vOrigin[3], vPosition[3];

vOrigin[0] = parm[2];
vOrigin[1] = parm[3];
vOrigin[2] = parm[4] - 16;

vPosition[0] = vOrigin[0];
vPosition[1] = vOrigin[1];
vPosition[2] = vOrigin[2] + EXPLOSION_BLAST_RADIUS;

Create_TE_BEAMCYLINDER( vOrigin, vOrigin, vPosition, g_iSprites[SPR_SHOCKWAVE], 0, 0, 6, 16, 0, 188, 220, 255, 255, 0 );

vOrigin[2] = ( vOrigin[2] - EXPLOSION_BLAST_RADIUS ) + ( EXPLOSION_BLAST_RADIUS / 2 );

Create_TE_BEAMCYLINDER( vOrigin, vOrigin, vPosition, g_iSprites[SPR_SHOCKWAVE], 0, 0, 6, 16, 0, 188, 220, 255, 255, 0 );
}


UD_SkillsOffensive( iAttacker, iDamage )
{
static iSkillLevel;

if ( !p_data_b[iAttacker][PB_ISCONNECTED] )
{
return;
}

// Vampiric Aura
iSkillLevel = SM_GetSkillLevel( iAttacker, SKILL_VAMPIRICAURA );
if ( iSkillLevel > 0 && p_data_b[iAttacker][PB_ISCONNECTED])
{
static iHealth, iMaxHealth, iBonusHealth;

iHealth = get_user_health( iAttacker );
iMaxHealth = get_user_maxhealth( iAttacker );
iBonusHealth = floatround( float( iDamage ) * p_vampiric[iSkillLevel-1] );

// Give the user health!
if ( iHealth < iMaxHealth )
{

// Then give the user his maximum health
if ( iHealth + iBonusHealth > iMaxHealth )
{
set_user_health( iAttacker, iMaxHealth );
}

// Otherwise just give iMaxHealth
else
{
set_user_health( iAttacker, iHealth + iBonusHealth );
}
}

// Make the attacker glow
SHARED_Glow( iAttacker, 0, ( 2 * iBonusHealth ), 0, 0 );
// Give the attacker a nice screen fade
Create_ScreenFade( iAttacker, (1<<10), (1<<10), (1<<12), 0, 255, 0, iBonusHealth );
}
}



Спрашивал у Smaster - его ответ:
я хз в чем там дело



Да, мод старый, и я обновлял до нового, НО игрокам обнова не нравится, и я решил залатать дыры и поставить 1.5


вот сам мод.. https://yadi.sk/d/ywrXW9Pvji7Rb


https://vk.com/club_megamozg
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: