|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Помогите разобраться с уроном в моде Ultimate war
|
|
oberon47 | Дата: Воскресенье, 24.01.2010, 20:53:50 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 4
Статус: Не в сети
| Есть в этом моде такой скил Значение new const Float:p_critical[10] = { 0.04, 0.06, 0.08, 0.10, 0.13, 0.16, 0.19, 0.21, 0.24, 0.28 }; // Critical Strike Quote // Critical Strike public SKILL_CriticalStrike( iAttacker, iVictim, iDamage, iHitPlace, iWeapon ) { new iSkillLevel = p_data_skill[iAttacker][SKILL_SHADOWSTRIKE]; // Has this player critical strike? if ( iSkillLevel ) { // Will this hit a critical hit? if ( random_float( 0.0, 1.0 ) <= p_critical[iSkillLevel-1] ) { // Calculate the bonus dmg new iBonusDamage = floatround( float( iDamage ) * p_critical[iSkillLevel-1] ); // Add the default damage to the bonus damage iBonusDamage += iDamage; // Damage our victim UWC3NG_DoDamage( iVictim, iAttacker, iBonusDamage, iWeapon, iHitPlace ); // Make the user glow SHARED_Glow( iVictim, iBonusDamage, 0, 0, 0 ); // Lets make a screenfade Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, g_GlowLevel[iVictim][0] ); } } return; } Так сам вопрос правильно ли я понимаю iBonusDamage = floatround( float( iDamage ) * p_critical[iSkillLevel-1] это урон помноженный на значение из константы. т.е урон * 0.04 (пример на 1 уровне) почему только пишется iSkillLevel-1 ? iBonusDamage += iDamage; это полученный бонус прибавляется к урону ? UWC3NG_DoDamage( iVictim, iAttacker, iBonusDamage, iWeapon, iHitPlace ); это жертве наносит урон атакующий со значением iBonusDamage ? SHARED_Glow( iVictim, iBonusDamage, 0, 0, 0 ); Что ето такое ? Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, g_GlowLevel[iVictim][0] ); а это что? подсветка жертвы ? И floatround это что такое? Почему нельзя просто брать формулу iDamage * p_critical
|
|
| |
PomanoB | Дата: Вторник, 26.01.2010, 13:51:14 | Сообщение # 2 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (oberon47) это урон помноженный на значение из константы. т.е урон * 0.04 (пример на 1 уровне) почему только пишется iSkillLevel-1 ? Да, правильно, константа берётся из массива, где они начинаются с нуля, тогда как уровни с 1, поэтому -1 Quote (oberon47) iBonusDamage += iDamage; это полученный бонус прибавляется к урону ? UWC3NG_DoDamage( iVictim, iAttacker, iBonusDamage, iWeapon, iHitPlace ); это жертве наносит урон атакующий со значением iBonusDamage ? Да, всё верно Quote (oberon47) SHARED_Glow( iVictim, iBonusDamage, 0, 0, 0 ); Что ето такое ? Можно предположить, что это что-то связанное с сиянием) Quote (oberon47) Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, g_GlowLevel[iVictim][0] ); а это что? подсветка жертвы ? Это, судя по названию, затемнение экрана жертве Quote (oberon47) И floatround это что такое? floatround приводит число с точкой к целому числу, то есть урон 25,1 округляется до 25
http://romanov4400.mybrute.com
|
|
| |
oberon47 | Дата: Вторник, 26.01.2010, 21:09:39 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 4
Статус: Не в сети
| Спасибо, PomanoB Дело в том, что во всех описаниях к данному мода идет - этот skill как удвоенный урон А судя по скрипту если нанес жертве 100 dmg то бонусом прибавится еще 4 dmg (на первом уровне) И конечный результат будет 104 dmg Неужели играя в этот мод ( я 2 года гамаю на разных серверах, описание читал на 16 серверах (даже на украинском)) никто не обратил на это внимание ?! Вот етот skill в описаниях рекламируется как увеличение урона при каждом попадании Quote new const Float:p_trueshot[10] = { 0.04, 0.06, 0.08, 0.10, 0.13, 0.16, 0.19, 0.21, 0.24, 0.28 }; // Trueshot Aura #define INTELLECT_TRUESHOT_BONUS 0.10 public SKILL_TrueShotAura( iAttacker, iVictim, iWeapon, iDamage, iHitPlace ) { static iSkillLevel; static Float:iTrueshotBonus; iSkillLevel = p_data_skill[iAttacker][SKILL_TRUESHOTAURA]; if ( iSkillLevel > 0 ) { // Add the bonus from the const iTrueshotBonus = p_trueshot[iSkillLevel-1]; // The player has intellect skilled, add the bonus if ( p_data_attrib[iAttacker][ATTRIB_INTELLECT] >= INTELLECT_TRUESHOT ) { iTrueshotBonus += INTELLECT_TRUESHOT_BONUS; } static iTempDamage; iTempDamage = floatround( float( iDamage ) * iTrueshotBonus ); // Damage the user UWC3NG_DoDamage( iVictim, iAttacker, iTempDamage, iWeapon, iHitPlace ); // Make the user glow! SHARED_Glow( iVictim, ( 2 * iTempDamage ), 0, 0, 0 ); // Create a screen fade Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 0, 0, iTempDamage ); } return; А по скрипту выходит, что урон уменьшится Может всетаки, чего то упустил из этого скрипта - не могли же полмира обуть с описанием ?!
|
|
| |
PomanoB | Дата: Вторник, 26.01.2010, 21:46:39 | Сообщение # 4 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (oberon47) А по скрипту выходит, что урон уменьшится Везде же прибавляется только, пусть немного, не удвоенный, но прибавляется
http://romanov4400.mybrute.com
|
|
| |
oberon47 | Дата: Вторник, 26.01.2010, 22:31:14 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 4
Статус: Не в сети
| Нее Посчитаем iTrueshotBonus = p_trueshot[iSkillLevel-1]; возьмем по мах 0,28 iTrueshotBonus += INTELLECT_TRUESHOT_BONUS; интелект у нас тоже есть 0,28+0,1=0,38 iTempDamage = floatround( float( iDamage ) * iTrueshotBonus ); нанесли 100 dmg это значит 100*0,38=38 dmg UWC3NG_DoDamage( iVictim, iAttacker, iTempDamage, iWeapon, iHitPlace ); окончательный вариант, врагу нанесли 38 dmg ( вместо 100) Или тут надо еще учитывать изначальный dmg = 100 ? В формулах это не светится, но может 100+38 надо ?! Тогда мир спасен будет от вранья
Сообщение отредактировал oberon47 - Вторник, 26.01.2010, 22:32:56 |
|
| |
PomanoB | Дата: Вторник, 26.01.2010, 23:12:03 | Сообщение # 6 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Если эта функция зарегистрирована как register_event("Damage"...) То да, остается ещё первоначальный урон Тут надо смотреть как как вызывается эта функция
http://romanov4400.mybrute.com
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |