CON STR DEX WIT MEN INT - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 01.07.2011, 00:52   #1
Пользователь

Автор темы (Топик Стартер) CON STR DEX WIT MEN INT

Такой вопрос, в формулах есть код
Код:
	private static final double[] STRCompute = new double[]{1, 30}; //{1.016, 28.515}; for C1
	private static final double[] INTCompute = new double[]{1, 30}; //{1.020, 31.375}; for C1
	private static final double[] DEXCompute = new double[]{1, 30}; //{1.009, 19.360}; for C1
	private static final double[] WITCompute = new double[]{1, 30}; //{1.050, 20.000}; for C1
	private static final double[] CONCompute = new double[]{1, 30}; //{1.015, 12.488}; for C1
	private static final double[] MENCompute = new double[]{1, 30}; //{1.010, -0.060}; for C1

	protected static final double[] WITbonus = new double[MAX_STAT_VALUE];
	protected static final double[] MENbonus = new double[MAX_STAT_VALUE];
	protected static final double[] INTbonus = new double[MAX_STAT_VALUE];
	protected static final double[] STRbonus = new double[MAX_STAT_VALUE];
	protected static final double[] DEXbonus = new double[MAX_STAT_VALUE];
	protected static final double[] CONbonus = new double[MAX_STAT_VALUE];

	// These values are 100% matching retail tables, no need to change and no need add
	// calculation into the stat bonus when accessing (not efficient),
	// better to have everything precalculated and use values directly (saves CPU)
	static
	{
		for (int i = 0; i < STRbonus.length; i++)
			STRbonus[i] = i/STRCompute[1];
		for (int i = 0; i < INTbonus.length; i++)
			INTbonus[i] = i/INTCompute[1];
		for (int i = 0; i < DEXbonus.length; i++)
			DEXbonus[i] = i/DEXCompute[1];
		for (int i = 0; i < WITbonus.length; i++)
			WITbonus[i] = i/WITCompute[1];
		for (int i = 0; i < CONbonus.length; i++)
			CONbonus[i] = i/CONCompute[1];
		for (int i = 0; i < MENbonus.length; i++)
			MENbonus[i] = i/MENCompute[1];
	}
Код:
	static class FuncPAtkMod extends Func
	{
		static final FuncPAtkMod _fpa_instance = new FuncPAtkMod();

		static Func getInstance()
		{
			return _fpa_instance;
		}

		private FuncPAtkMod()
		{
			super(Stats.POWER_ATTACK, 0x30, null);
		}

		@Override
		public void calc(Env env)
		{
			env.value *= STRbonus[env.player.getSTR()] * env.player.getLevelMod();
		}
	}
Вопрос такой. Я бы хотел что бы при стате в 30, модификатор был 0, а далее вверх или вниз шёл по 3.33(3)%.
Я пытался изменить на
Код:
		public void calc(Env env)
		{
			env.value *= (int)(env.player.getSTR()/30) * env.player.getLevelMod();
		}
Неполучилось. Пытался
Код:
for (int i = 0; i < STRbonus.length; i++)
			STRbonus[i] = i/30;
Неполучилось. Думаю надо добавить значения в
Код:
	private static final double[] STRCompute = new double[]{1, 30}; //{1.016, 28.515}; for C1
Но где то то уже должно быть это прописано. Кто знает где дайте наводочку ^^
__________________
nikitawasa вне форума Ответить с цитированием
Непрочитано 01.07.2011, 04:37   #2
Пользователь

По умолчанию Re: CON STR DEX WIT MEN INT

(в формулах шарю но) не хрена не понял что и как хотите, что бы выглядело
__________________
PaInKiLlEr вне форума Отправить сообщение для PaInKiLlEr с помощью ICQ Ответить с цитированием
Непрочитано 01.07.2011, 05:02   #3
Аватар для Ultimate
Герой

По умолчанию Re: CON STR DEX WIT MEN INT

Цитата:
Сообщение от PaInKiLlEr Посмотреть сообщение
(в формулах шарю но) не хрена не понял что и как хотите, что бы выглядело
есть такая игра как Vincitus. И там значения STR\DEX и т.д. идут огромные, от 100 до 2к. И там прибавка к динамичным параметрам идет исходя из этих показателей. дак вот, обьясню на примере.
STR<100 => 1str=2 p.atk
STR>100 => 1str=3 p.atk
имея больше 100 str, ты получаешь прибавку в 3 p.att за каждый str))
так понятно?)думаю ТС это и имел ввиду.
__________________
Если помог, ткни плюсеГ, это же так просто
Ultimate вне форума Отправить сообщение для Ultimate с помощью ICQ Ответить с цитированием
Непрочитано 01.07.2011, 12:14   #4
Пользователь

Автор темы (Топик Стартер) Re: CON STR DEX WIT MEN INT

Я имел ввиду что хотел в файле формул изменить прибавку от базовых статов. Тоесть если стат равен 30 прибавки нету. При стате в + или - 30 идёт прибавка\уменьшение на 3% за единицу стата
__________________
nikitawasa вне форума Ответить с цитированием
Непрочитано 01.07.2011, 12:17   #5
Аватар для Azagthtot
Эксперт

По умолчанию Re: CON STR DEX WIT MEN INT

Ключевой вопрос. 3% от чего? Потому что 3% от 0 будет примерно 0
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 01.07.2011, 13:23   #6
Пользователь

Автор темы (Топик Стартер) Re: CON STR DEX WIT MEN INT

3% от базового значения
__________________
nikitawasa вне форума Ответить с цитированием
Непрочитано 01.07.2011, 13:25   #7
Аватар для Azagthtot
Эксперт

По умолчанию Re: CON STR DEX WIT MEN INT

Вариант
Код:
for (int i = 0; i < STRbonus.length; i++)
			STRbonus[i] = i/30;
Правильный, и
Код:
public void calc(Env env)
		{
			env.value *= STRbonus[env.player.getSTR()];
                        env.value = env.value == 0 ? 1 : env.value;
		}
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 01.07.2011, 17:00   #8
Пользователь

Автор темы (Топик Стартер) Re: CON STR DEX WIT MEN INT

Неа не помогает становится 1 П атака... да кстати такая прабла же с откатом. Хочу сделать зависимость отката от каста
Код:
		else
		{
			if(skill.isMagic())
			{
				reuseDelay = (int)(skill.getReuseDelay() * getStat().getMReuseRate(skill));
			}
			else
			{
				reuseDelay = (int)(skill.getReuseDelay() * getStat().getPReuseRate(skill));
			}
		}
я изменил
Код:
				reuseDelay = (int)(skill.getReuseDelay() * getStat().getMReuseRate(skill))*(int)(getMAtkSpd()/1000));
При умножении на число(допустим 0,75) откат нормальный но если (int)(getMAtkSpd()/1000) становится меньше 1, то откат становится походу то же 1...

Добавлено через 10 часов 43 минуты
Вобщем прабла была в том что переменные должны были быть double, т.е. писать не \30 а \30.0
__________________

Последний раз редактировалось nikitawasa; 02.07.2011 в 03:44. Причина: Добавлено сообщение
nikitawasa вне форума Ответить с цитированием
Непрочитано 04.07.2011, 16:26   #9
Аватар для Astend
Пользователь

По умолчанию Re: CON STR DEX WIT MEN INT

ой как мне смешно ))

а зачем то сразу лесть в ядро? при том не зная явы

Если ты про l2
Есть у всех персов (Абсолютно у всех) скил common mastery (пассивный)
допиши в этот скил что то типа такого плана
<mul order="0x30" stat="DEX" val="1.03" />
где 1.03 и = 3%

даже если нету такого скила то сделать самому и выдать всем не пробелма

или вообще создать свой скил выдать всем и некто нечего не увидит!
Astend вне форума Ответить с цитированием
Непрочитано 07.07.2011, 17:43   #10
Аватар для Archiel
Пользователь

По умолчанию Re: CON STR DEX WIT MEN INT

Привет, Эрозек-конкурент=) Помогу немного чтоли.

Вот как бы что можно сделать (и я сделал), чтобы адекватно прибавлять (и отнимать) бонус.
Вот на примере рассчёта ХП, для п.атаки сделаешь себе сам думаю:

Код:
public void calc(Env env)
		{
			L2PcInstance p = (L2PcInstance) env.player;
			L2PcTemplate t = (L2PcTemplate) env.player.getTemplate();
			env.value *= (1 + (p.getCON() - t.baseCON) / 10 + p.getLevel() / 100);
		}
Нужное тебе я выделил.
Удачи.

Добавлено через 3 минуты
Цитата:
Сообщение от Astend Посмотреть сообщение
ой как мне смешно ))

а зачем то сразу лесть в ядро? при том не зная явы

Если ты про l2
Есть у всех персов (Абсолютно у всех) скил common mastery (пассивный)
допиши в этот скил что то типа такого плана
<mul order="0x30" stat="DEX" val="1.03" />
где 1.03 и = 3%

даже если нету такого скила то сделать самому и выдать всем не пробелма

или вообще создать свой скил выдать всем и некто нечего не увидит!
Вась, ты вообще понял что требуется и что сделал ты? Ты умножил параметр DEX на 3%. И зачем?
Автору требуется при прибавке +1 DEX от какого-нить шмота или оружия, добавлять 3% п.атаки персу. Не вообще давать бонус, а именно прибавлять и отнимать при изменении параметра. Думай что пишешь, если уж пытаешься советовать, да ещё в такой хамской форме.

Последний раз редактировалось Archiel; 07.07.2011 в 17:47. Причина: Добавлено сообщение
Archiel вне форума Отправить сообщение для Archiel с помощью ICQ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 11:36. Часовой пояс GMT +3.

Вверх