Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
Как исправить баг рассы эльф ( конкретнее скилл Уклонение)?
Kartman
Дата: Воскресенье, 06.05.2012, 21:01 | Сообщение # 1
офлайн

  • Сообщения: 199
  • Награды: 3
  • Замечания:
 
Шаг 1)
В рассе race_elf.inl:

Code

NE_Evasion( idUser, iHitZone )
{
  static iSkillLevel;

  // Check to see if they should evade this shot?
  iSkillLevel = SM_GetSkillLevel( idUser, SKILL_EVASION );
    //Some random mechanism a bit changed when experimenting;
  if (!p_data_b[idUser][PB_HEXED] && iSkillLevel > 0 &&
  random_num( 1, 100 ) <= p_evasion[iSkillLevel-1]  )
  {
       
  // i made global var in constants.inl
  if (NE_lastshot[idUser] < 0.1 && NE_lastshot[idUser] > 0.0)        
  {
      
   //Message player about evasion         
   WC3_StatusText( idUser, TXT_SKILL, "You have evaded a shot!" );
     
   new iGlowIntensity = random_num( 20, 50 );
     
   // Head shot
     if ( iHitZone & (1 << HITGROUP_HEAD) )
     {
     iGlowIntensity += 250;
     }
     
     // Chest
     else if ( iHitZone & (1 << HITGROUP_CHEST) )
     {
     iGlowIntensity += 75;
     }
     
   // Make the user glow!
   SHARED_Glow( idUser, 0, 0, iGlowIntensity, 0 );
      
   Create_ScreenFade( idUser, (1<<10), (1<<10), (1<<12), 0, 0, 255, g_GlowLevel[idUser][2] );
  }
  return 1;
  }

return 0;
}


2 Шаг)
В файле constants.inl добавляем новую срочку

//This var is new and must go away when proc param tweaked
new Float: NE_lastshot[33];

3 Шаг)
В events.inl находим код подобный этому и заменяем его

Code

// Check to see if this user has night elf's evasion
if ( SM_GetSkillLevel( iVictim, SKILL_EVASION ) > 0 )
{
   // Do the check to see if we should "evade" this shot
   new Float:fTime = halflife_time();
   new Float:fDifference = fTime - fLastShotFired[iAttacker];

   //Here we save this value into var; but better would be to give it to NE_Evasion later
   NE_lastshot[iVictim] = fDifference;

   //Here we make to check every time now
   if ( SHARED_ValidPlayer( iAttacker ))
   {

   // Friendly fire is off! - This means we shouldn't evade since no damage will be done!
   if ( !get_pcvar_num( CVAR_mp_friendlyfire ) )
   {
    if ( g_iPlayerTeam[iAttacker] == g_iPlayerTeam[iVictim] )
    {
    return FMRES_IGNORED;
    }
   }

// Then we should evade this shot!
   if ( NE_Evasion( iVictim, iHitZone ) )
   {
    set_tr( TR_flFraction, 1.0 );

    return FMRES_SUPERCEDE;
   }
   }
}


http://war3ft-help.tk/ - форум поддержки war3ftmod

Сообщение отредактировал Kartman - Понедельник, 07.05.2012, 18:33
 
AlienRobben
Дата: Воскресенье, 06.05.2012, 23:37 | Сообщение # 2
офлайн

  • Сообщения: 72
  • Награды: 0
  • Замечания:
 
Kartman, а в чем заключается баг?
 
Kartman
Дата: Воскресенье, 06.05.2012, 23:44 | Сообщение # 3
офлайн

  • Сообщения: 199
  • Награды: 3
  • Замечания:
 
Не уклоняется эльф, т.е не полное уклонение

http://war3ft-help.tk/ - форум поддержки war3ftmod
 
AlienRobben
Дата: Понедельник, 07.05.2012, 00:28 | Сообщение # 4
офлайн

  • Сообщения: 72
  • Награды: 0
  • Замечания:
 
Kartman, 1 шаг, надо заменить?
 
KinD
Дата: Понедельник, 07.05.2012, 00:36 | Сообщение # 5
офлайн

  • Сообщения: 1148
  • Награды: 22
  • Замечания:
 
AlienRobben, Если не так,то заменять надо

Skype:daywerok
 
AlienRobben
Дата: Понедельник, 07.05.2012, 01:01 | Сообщение # 6
офлайн

  • Сообщения: 72
  • Награды: 0
  • Замечания:
 
Kartman, у меня ошибки
 
KinD
Дата: Понедельник, 07.05.2012, 01:11 | Сообщение # 7
офлайн

  • Сообщения: 1148
  • Награды: 22
  • Замечания:
 
AlienRobben, Мы экстрасенсы? вылаживай какие ошибки,и как вставлял

Skype:daywerok
 
AlienRobben
Дата: Понедельник, 07.05.2012, 01:28 | Сообщение # 8
офлайн

  • Сообщения: 72
  • Награды: 0
  • Замечания:
 
Как вставлял
1)

2) Было сказано добавить новую строчку

3)

Результат
 
KinD
Дата: Понедельник, 07.05.2012, 01:51 | Сообщение # 9
офлайн

  • Сообщения: 1148
  • Награды: 22
  • Замечания:
 
в race_elf ,не так зделал! смотри скрин!
Прикрепления: 5474174.jpg (50.4 Kb)


Skype:daywerok
 
AlienRobben
Дата: Понедельник, 07.05.2012, 11:26 | Сообщение # 10
офлайн

  • Сообщения: 72
  • Награды: 0
  • Замечания:
 
Kartman, спасибо :)

Сообщение отредактировал AlienRobben - Вторник, 08.05.2012, 09:38
 
Kartman
Дата: Понедельник, 07.05.2012, 12:51 | Сообщение # 11
офлайн

  • Сообщения: 199
  • Награды: 3
  • Замечания:
 
Сам рад что этот баг решен :)

http://war3ft-help.tk/ - форум поддержки war3ftmod
 
dancerek
Дата: Среда, 09.05.2012, 01:57 | Сообщение # 12
офлайн

  • Сообщения: 65
  • Награды: 0
  • Замечания:
 
Does it work on CSBB 1.5? I have errors when I am trying to compile.
 
KinD
Дата: Среда, 09.05.2012, 09:45 | Сообщение # 13
офлайн

  • Сообщения: 1148
  • Награды: 22
  • Замечания:
 
dancerek, you incorrectly inserted a code, what mistake?

Skype:daywerok
 
SMaster
Дата: Четверг, 17.05.2012, 05:13 | Сообщение # 14
офлайн

  • Сообщения: 2189
  • Награды: 46
  • Замечания:
 
Kartman, В чем фишка исправления?
Судя по коду я его абсолютно не увидел.
Шанс остался прежним.

Объясни разницу кода!
Code
if ( SHARED_ValidPlayer( iAttacker ) && fDifference < 0.1 && fDifference > 0.0 )

и
Code
if (NE_lastshot[idUser] < 0.1 && NE_lastshot[idUser] > 0.0)


Ты просто создал переменную в которую сохраняешь значение fDifference и вынес его в NE_Evasion( idUser,iAttacker, iHitZone )
Разницы нет абсолютно ни какой.

Сам баг которого просто нет, не исправлен.


Наша группа вконтакте http://vk.com/nano_world_cs

Контакты:
ICQ 607786179
Skype xonahead

 
SMaster
Дата: Четверг, 17.05.2012, 05:44 | Сообщение # 15
офлайн

  • Сообщения: 2189
  • Награды: 46
  • Замечания:
 
fDifference < 0.1

Это разность по времени между выстрелами.
Если это время больше 0.1 у вас уклонение не будет срабатывать.

Т.е. если вы стрельнули один раз и потом ждете, то значение fDifference будет расти,а следовательно уклонение уже не сработает.
Другими словами само уклонение зависит от частоты попадания да плюс еще шанс срабатывания самого скила.

Так что дорогие мои нет тут багов абсолютно ни каких!

---
Кому уж сильно хочется чтобы уклонение работало еще чаще,
достаточно сделать примерно так fDifference < 10.0


Наша группа вконтакте http://vk.com/nano_world_cs

Контакты:
ICQ 607786179
Skype xonahead

 
Kartman
Дата: Четверг, 17.05.2012, 11:38 | Сообщение # 16
офлайн

  • Сообщения: 199
  • Награды: 3
  • Замечания:
 
Смотрите сами у меня работало на ура все.

Добавлено (17.05.2012, 11:38)
---------------------------------------------
Слушайте SMaster'a он больше знает! :)


http://war3ft-help.tk/ - форум поддержки war3ftmod
 
  • Страница 1 из 1
  • 1
Поиск: