|
|
|
Скиньте пожалуйста пару скриптов, ухожу в рейс хочу скачать ранку что бы убить время в рейсе |
|
|
kirill633 |
27.12.2015, 23:35
|
Neophyte
Сообщений: 36
Регистрация: 27.12.2015 Группа: Пользователи Наличность: 0
Пользователь №: 17.768
Возраст: 25
|
спасибо по 1 и 2 разобрался насчет цвета это клиент не подходил видимо зашел через другой все цвета нормальные на счет 3 буду что то смотреть сейчас
я так понимаю этой части? можешь пожалуйста обяснить примерно где что исправлять я прбовапо разному но так как хотелось бы не выходит
public virtual TimeSpan GetDelay( Mobile m ) { double speed = this.Speed;
if ( speed == 0 ) return TimeSpan.FromHours( 1.0 );
double delayInSeconds;
if ( Core.SE ) { /* * This is likely true for Core.AOS as well... both guides report the same * formula, and both are wrong. * The old formula left in for AOS for legacy & because we aren't quite 100% * Sure that AOS has THIS formula */ int bonus = AosAttributes.GetValue( m, AosAttribute.WeaponSpeed );
if ( Spells.Chivalry.DivineFurySpell.UnderEffect( m ) ) bonus += 10;
// Bonus granted by successful use of Honorable Execution. bonus += HonorableExecution.GetSwingBonus( m );
if( DualWield.Registry.Contains( m ) ) bonus += ((DualWield.DualWieldTimer)DualWield.Registry[m]).BonusSwingSpeed;
if( Feint.Registry.Contains( m ) ) bonus -= ((Feint.FeintTimer)Feint.Registry[m]).SwingSpeedReduction;
TransformContext context = TransformationSpellHelper.GetContext( m );
if( context != null && context.Spell is ReaperFormSpell ) bonus += ((ReaperFormSpell)context.Spell).SwingSpeedBonus;
int discordanceEffect = 0;
// Discordance gives a malus of -0/-28% to swing speed. if ( SkillHandlers.Discordance.GetEffect( m, ref discordanceEffect ) ) bonus -= discordanceEffect;
if( EssenceOfWindSpell.IsDebuffed( m ) ) bonus -= EssenceOfWindSpell.GetSSIMalus( m );
if ( bonus > 60 ) bonus = 60; double ticks;
if ( Core.ML ) { int stamTicks = m.Stam / 30;
ticks = speed * 4; ticks = Math.Floor( ( ticks - stamTicks ) * ( 100.0 / ( 100 + bonus ) ) ); } else { speed = Math.Floor( speed * ( bonus + 100.0 ) / 100.0 );
if ( speed <= 0 ) speed = 1;
ticks = Math.Floor( ( 80000.0 / ( ( m.Stam + 100 ) * speed ) ) - 2 ); } // Swing speed currently capped at one swing every 1.25 seconds (5 ticks). if ( ticks < 5 ) ticks = 5;
delayInSeconds = ticks * 0.25; } else if ( Core.AOS ) { int v = (m.Stam + 100) * (int) speed;
int bonus = AosAttributes.GetValue( m, AosAttribute.WeaponSpeed );
if ( Spells.Chivalry.DivineFurySpell.UnderEffect( m ) ) bonus += 10;
int discordanceEffect = 0;
// Discordance gives a malus of -0/-28% to swing speed. if ( SkillHandlers.Discordance.GetEffect( m, ref discordanceEffect ) ) bonus -= discordanceEffect;
v += AOS.Scale( v, bonus );
if ( v <= 0 ) v = 1;
delayInSeconds = Math.Floor( 40000.0 / v ) * 0.5;
// Maximum swing rate capped at one swing per second // OSI dev said that it has and is supposed to be 0.25 if ( delayInSeconds < 0.25 ) delayInSeconds = 0.25; } else { int v = (m.Stam + 100) * (int) speed;
if ( v <= 0 ) v = 1;
delayInSeconds = 15000.0 / v; }
return TimeSpan.FromSeconds( delayInSeconds ); }
public virtual void OnBeforeSwing( Mobile attacker, Mobile defender ) { WeaponAbility a = WeaponAbility.GetCurrentAbility( attacker );
if( a != null && !a.OnBeforeSwing( attacker, defender ) ) WeaponAbility.ClearCurrentAbility( attacker );
SpecialMove move = SpecialMove.GetCurrentMove( attacker );
if( move != null && !move.OnBeforeSwing( attacker, defender ) ) SpecialMove.ClearCurrentMove( attacker ); }
|
|
|
|
Juzzver |
28.12.2015, 0:24
|
Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008 Группа: Супермодераторы Наличность: 22569 Из: Северная Корея
Пользователь №: 11.273
|
Код if ( bonus > 60 ) bonus = 60; это кап на свинг, т.е. если одевать больше 60 свинга, то бонуса никакого уже не будет. Если это важно, можете поменять. Код if ( Core.ML ) { int stamTicks = m.Stam / 30;
ticks = speed * 4; ticks = Math.Floor( ( ticks - stamTicks ) * ( 100.0 / ( 100 + bonus ) ) ); } тут описан алгоритм расчета скорости. int stamTicks = 200 / 30; - будет равняться 6ти. ticks = скорость оружия(3секунды) * 4 = 12 ticks = (12 - 6) * (100 / (100 + 60) = 3 тика. дальше идет проверка на кап: Код if ( ticks < 5 ) // если тики у нас вышли меньше пяти, как в данном случае у нас 3 тика по расчету ticks = 5; // то тики все равно будут равняться пяти Чтобы убрать кап, достаточно просто убрать эту проверку или поменять значения проверки по своему усмотрению. ну и финал: Код delayInSeconds = ticks * 0.25; // каждый тик равен 0.25 секундам. Если не убрать кап, то получится что у нас при 200 стаме будет стрелять 5 * 0.25, т.е. один выстрел в 1.25 сек. Если кап был убран, то получится 3 * 0.25, т.е. один выстрел уже будет за 0,75сек. если мы тут хотим добавить бонус после 200 стамины, то добавляем проверку на место строки: delayInSeconds = ticks * 0.25. Пишем: if ( m.Stam > 200 && m.Stam <= 210 ) delayInSeconds = ticks * 0.2; а это значит, что у нас уже будет не 0,75сек, а 0,6 сек. else if( m.Stam > 210 && m.Stam <= 220) delayInSeconds = ticks * 0.15; // что значит, при 211-220 стамы у нас скорость будет уже 0,45сек else delayInSeconds = ticks * 0.25.
--------------------
|
|
|
|
kirill633 |
28.12.2015, 19:05
|
Neophyte
Сообщений: 36
Регистрация: 27.12.2015 Группа: Пользователи Наличность: 0
Пользователь №: 17.768
Возраст: 25
|
я в этом очень плохо понимаю я реально очень долго сидел пытался понять как настроить но нечего не понял ну вроде понял с тэгом как)) теперь осталось понять что мне делать со скоростью)) Код if ( bonus > 70 ) bonus = 70; double ticks;
if ( Core.ML ) { int stamTicks = 125 / 30;
ticks = 3 * 4; ticks = Math.Floor( ( 12 - 4 ) * ( 100.0 / ( 100 + 70 ) ) ); } else { speed = Math.Floor( speed * ( bonus + 100.0 ) / 100.0 );
if ( speed <= 0 ) speed = 1;
ticks = Math.Floor( ( 80000.0 / ( ( m.Stam + 100 ) * speed ) ) - 2 ); }
delayInSeconds = ticks * 0.25; } else if ( Core.AOS ) { int v = (m.Stam + 100) * (int) speed;
int bonus = AosAttributes.GetValue( m, AosAttribute.WeaponSpeed );
if ( Spells.Chivalry.DivineFurySpell.UnderEffect( m ) ) bonus += 10;
int discordanceEffect = 0;
// Discordance gives a malus of -0/-28% to swing speed. if ( SkillHandlers.Discordance.GetEffect( m, ref discordanceEffect ) ) bonus -= discordanceEffect;
v += AOS.Scale( v, bonus );
if ( v <= 0 ) v = 1;
delayInSeconds = Math.Floor( 40000.0 / v ) * 0.5;
if ( delayInSeconds < 1.25 ) delayInSeconds = 1.25; } else { int v = (m.Stam + 100) * (int) speed;
if ( v <= 0 ) v = 1;
delayInSeconds = 15000.0 / v; }
return TimeSpan.FromSeconds( delayInSeconds );
|
|
|
|
Juzzver |
28.12.2015, 21:13
|
Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008 Группа: Супермодераторы Наличность: 22569 Из: Северная Корея
Пользователь №: 11.273
|
Ничего и не будет меняться, потому что вы не исправили мои замечания: Цитата if ( Core.ML ) { int stamTicks = 200 / 30;
ticks = 3 * 4; ticks = Math.Floor( ( 12 - 6 ) * ( 100.0 / ( 100 + 60 ) ) ); } Этот блок по цифрам я раскладывал, чтобы вы понимали, какие цифры будут подставляться в расчет алгоритма и чему будет равен результат, вам не нужно было копировать это, а лишь поменять сам алгоритм. Т.к. вы скопировали эти расчеты, получилось что в игре у вас не зависимо от того сколько стамины и свинга на персе, формула остается неизменной, т.к. никакие параметры больше не подставляются, а отрабатывают лишь фиксированные значения. И так, верните как это было в самом начале: Цитата if ( Core.ML ) { int stamTicks = m.Stam / 30;
ticks = speed * 4; ticks = Math.Floor( ( ticks - stamTicks ) * ( 100.0 / ( 100 + bonus ) ) ); } дальше уберите кап: Цитата if ( ticks < 5 ) ticks = 5; и замените эту строчку: Код delayInSeconds = ticks * 0.25; на: Код if ( m.Stam > 200 && m.Stam <= 210 ) delayInSeconds = ticks * 0.2; else if( m.Stam > 210 && m.Stam <= 220) delayInSeconds = ticks * 0.15; else delayInSeconds = ticks * 0.25; Сообщение отредактировал Juzzver - 28.12.2015, 21:15
--------------------
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|