Перейти к содержанию
Авторизация  
UltrusAra

Зависимость Str

Рекомендуемые сообщения

Добрый день, и снова я обращаюсь к наимудрейшим).

В общем нам нужно сделать, так, чтобы например, если у игрока STR = 20, то у него выучивался скилл1, если у него STR = 22, то учился скилл2, если у него STR = 25, то учился скилл3, и тд. Вопрос, вообще как такое примерно можно сделать? Подскажите, кто знает плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас в шмотках бонусы STR и прочее, то при надевании вещи делать проверку, + 1 проверку при вставке тату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас в шмотках бонусы STR и прочее, то при надевании вещи делать проверку, + 1 проверку при вставке тату.

 

 

Не в шмотках, мне нужно общее изменение STR, то есть например у персонажа 40 стр стандартно есть да, то если у него 40 дать скилл 1, если у него 43 то дать скилл2 вот как.

Хотя в шмотках тоже идея интересная. Как такую проверку написать которая в шкоте бы проверяла??

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот например проверка чара по HP

 

<player hp="30"/>

 

То есть если вставлять в скилл, скилл будет работать только при 30% хп, как сделать похожую хрень но только чтоб проверял не хп, а скажем STR или силу атаки?

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужны исходники и знания явы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все есть и исходники и знание явы, но такой момент для нас загадка)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На ум приходит только пул, с проверкой STR через какое-то время.

 

void run()
{
int str = player.getStr();
switch(str)
{
case :
   player.addSkill();

}

}

 

Через жопеньку.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На ум приходит только пул, с проверкой STR через какое-то время.

 

void run()
{
int str = player.getStr();
switch(str)
{
case :
player.addSkill();

}

}

 

Через жопеньку.

 

 

 

Это будет занимать время много и у чара обновлять не так будет все равно. Но спасибо за мысль.

Вообще это для чего собственно, мы хотим на хф, сделать так как было на интерлюде. Ну то бишь откат скиллов зависящий от каста и хаста. Вдруг это можно сделать проще, просто мы не догоняем? Может где-то 1 строчку дописать и всего делов то.

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это будет занимать время много и у чара обновлять не так будет все равно. Но спасибо за мысль.

Вообще это для чего собственно, мы хотим на хф, сделать так как было на интерлюде. Ну то бишь откат скиллов зависящий от каста и хаста. Вдруг это можно сделать проще, просто мы не догоняем? Может где-то 1 строчку дописать и всего делов то.

 

Возможно для скилов реализован параметр статического реюза

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно для скилов реализован параметр статического реюза

 

 

 

Статический это наоборот не зависящий от бафов на откат, то есть откатываться будет так как ты укажешь в скилле, например:

<set name="staticReuse" val="true"/>

 

и скилл будет откатываться всегда столько сколько ты напишешь. А если "фолс", то будет откатываться с зависимостью от бафов на откат.

А вот как сделать так, чтобы зависел от хаста и каста бы))

 

Мы наверно первые, кому такая бредовая идея в голову пришла XD, но без нее хрен баланс получится.

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что бы понять где точно делать проверки, нужно знать когда будут и как прибавляться статы. Это будут вещи, скилы, тату ? зоны... ?

Лучше конечно делать через скилы, по аналогии как вы указали:

<player hp="30"/>

только переписать под статы, отследив в IDE где начало...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что бы понять где точно делать проверки, нужно знать когда будут и как прибавляться статы. Это будут вещи, скилы, тату ? зоны... ?

Лучше конечно делать через скилы, по аналогии как вы указали:

<player hp="30"/>

только переписать под статы, отследив в IDE где начало...

 

Ну вообще, в идеале скиллы, даже если вещи, то все равно к вещам же привязываются те же скиллы,, так что и вещи и скиллы подходят). Например человек имеет скилл, который будет с такой проверкой, как дать скилл и прочее мы умеем.

А вот где искать IDE в каком из файлов примерно, а то все исходы перерыли блин нифига не можем найти. Подскажите, если вам не трудно. То есть где эти проверки задаются?

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

смотря когда требуется вобще проверять возможность выдачи этих самых скиллов.

 

если скажем при снятии/одевании вещей - добавляем слушатель equip/unequip на это дело.

если надо чтобы какой-то конкретный бафф можно было наложить на цель с определенной базовой статой со значением не ниже заданного - condition в этот бафф.

 

ну и конечно самый извратный способ - при входе в игру игрока, у него активизируется таск с заданным периодом и при каждом срабатывании делает все нужные проверки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

смотря когда требуется вобще проверять возможность выдачи этих самых скиллов.

 

если скажем при снятии/одевании вещей - добавляем слушатель equip/unequip на это дело.

если надо чтобы какой-то конкретный бафф можно было наложить на цель с определенной базовой статой со значением не ниже заданного - condition в этот бафф.

 

ну и конечно самый извратный способ - при входе в игру игрока, у него активизируется таск с заданным периодом и при каждом срабатывании делает все нужные проверки.

 

Я про таск и говорил. Притом не на входе, а на restore-методе у игрока, с условием существования указанного игрока, допустим использовав getAllPlayersForIterate()

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а зачем приплетать тут еще и getAllPlayersForIterate()?

перебирать каждый раз для данной проверки всех игроков в онлайне? ну нафиг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я имел ввиду, чтобы игрок к которому применяется, входил в этот масссив.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы, при снятии или одевании не нужно, нам нужно чтоб проверка была постоянно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как же на интерлюде это сделано? Что откат зависит? Не знаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как же на интерлюде это сделано? Что откат зависит? Не знаете?

 

Проверять что-то с периодом времени - кошмар.

 

Для Acis'а можно попробовать сделать так:

 

Ищем класс ChatStat. Находим метод:

 

/**
* @return the CON of the L2Character (base+modifier).
*/
public final int getCON()
{
if (_activeChar == null)
{
return 1;
}


return (int) calcStat(Stats.STAT_CON, _activeChar.getTemplate().getBaseCON(), null, null);
}

 

Модифицируем:

 

/**
* @return the CON of the L2Character (base+modifier).
*/
public final int getCON()
{
if (_activeChar == null)
{
return 1;
}


       int currentConStat = (int) calcStat(Stats.STAT_CON, _activeChar.getTemplate().getBaseCON(), null, null);
       switch (currentConStat) {
           case 40:
               _activeChar.addSkill(SkillTable.getInstance().getInfo(SKILL_ID, SKILL_LEVEL));
               break;
       }
       return currentConStat;
}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверять что-то с периодом времени - кошмар.

 

Для Acis'а можно попробовать сделать так:

 

Ищем класс ChatStat. Находим метод:

 

/**
* @return the CON of the L2Character (base+modifier).
*/
public final int getCON()
{
if (_activeChar == null)
{
return 1;
}


return (int) calcStat(Stats.STAT_CON, _activeChar.getTemplate().getBaseCON(), null, null);
}

 

Модифицируем:

 

/**
* @return the CON of the L2Character (base+modifier).
*/
public final int getCON()
{
if (_activeChar == null)
{
return 1;
}


int currentConStat = (int) calcStat(Stats.STAT_CON, _activeChar.getTemplate().getBaseCON(), null, null);
switch (currentConStat) {
case 40:
_activeChar.addSkill(SkillTable.getInstance().getInfo(SKILL_ID, SKILL_LEVEL));
break;
}
return currentConStat;
}

 

Но это ведь единоразовый запрос стата, разве нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но это ведь единоразовый запрос стата, разве нет?

 

Я не уверен. Поставьте туда логгер и посмотрите когда вызывается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По логике, вызывается каждый раз при отсылке UserInfo, возвращая значение поля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

YuraAAA1, ваще написанно красиво, плюсанул, сегодня попробуем), только как сделать множественное "если" в правильном порядке. Если 40, если 41, если 42 и тд?

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

YuraAAA1, ваще написанно красиво, плюсанул, сегодня попробуем), только как сделать множественное "если" в правильном порядке. Если 40, если 41, если 42 и тд?

 

Почитайте про switch-case. Вот так:

switch (currentConStat) {
case 40:
_activeChar.addSkill(SkillTable.getInstance().getInfo(SKILL_ID, SKILL_LEVEL));
break;
case 41:
//Что-нибудь делаем
break;
case 42:
//Ещё что-нибудь
break;

}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...