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

Рекомендации

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

Всем привет.

У меня к тебе вопрос.

Есть такое условие.

i


f (getStat().getLevel() < 20)
  {
   _recomLeft = 3;
   _recomHave--;
  }
  else if (getStat().getLevel() < 40)
  {
   _recomLeft = 6;
   _recomHave -= 2;
  }
  else
  {
   _recomLeft = 9;
   _recomHave -= 3;
  }
  
  if (_recomHave < 0)
   _recomHave = 0;

 

Т.е. если персонаж до 20 уровня то у него всего 3 рекомендации.

Если до 40 то у него 6 реков.

А далее после 40 - 9 реков.

Есть даже 2 вопроса. За что отвечает  _recomHave ?Что оно значит я так и не понял.

И еще вот такая фигня.

 

Если я делаю так:



if (getStat().getLevel() < 78)
  {
   _recomLeft = 1;
   _recomHave--;
  }
  else if (getStat().getLevel() < 79)
  {
   _recomLeft = 2;
   _recomHave -= 2;
  }
  else
  {
   _recomLeft = 3;
   _recomHave -= 3;
  }
  
  if (_recomHave < 0)
   _recomHave = 0;


То выходит так что если я даю персу 78 лвл у него после релога появляется 1 рек. Если с 78 апаю его на 79 то после релога и даже рестарта сервера у него нет 2 реков хотя должно быть.

Но если сразу апну с 0 на 79 то у него будет 2 река. В чем прикол не могу понять.

3 часа упорных занятий ничего не дало и ничего не поменяло. Буду очень благодарен за помощь и за то что ткнете носом на ошибку.

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


Ссылка на сообщение
Поделиться на другие сайты
Всем привет.
У меня к тебе вопрос.
Есть такое условие.
i
f (getStat().getLevel() < 20)
  {
   _recomLeft = 3;
   _recomHave--;
  }
  else if (getStat().getLevel() < 40)
  {
   _recomLeft = 6;
   _recomHave -= 2;
  }
  else
  {
   _recomLeft = 9;
   _recomHave -= 3;
  }
  
  if (_recomHave < 0)
   _recomHave = 0;
 
Т.е. если персонаж до 20 уровня то у него всего 3 рекомендации.
Если до 40 то у него 6 реков.
А далее после 40 - 9 реков.
Есть даже 2 вопроса. За что отвечает  _recomHave ?Что оно значит я так и не понял.
И еще вот такая фигня.
 
Если я делаю так:
if (getStat().getLevel() < 78)
  {
   _recomLeft = 1;
   _recomHave--;
  }
  else if (getStat().getLevel() < 79)
  {
   _recomLeft = 2;
   _recomHave -= 2;
  }
  else
  {
   _recomLeft = 3;
   _recomHave -= 3;
  }
  
  if (_recomHave < 0)
   _recomHave = 0;
То выходит так что если я даю персу 78 лвл у него после релога появляется 1 рек. Если с 78 апаю его на 79 то после релога и даже рестарта сервера у него нет 2 реков хотя должно быть.
Но если сразу апну с 0 на 79 то у него будет 2 река. В чем прикол не могу понять.
3 часа упорных занятий ничего не дало и ничего не поменяло. Буду очень благодарен за помощь и за то что ткнете носом на ошибку.

 

 

 

_recomHave - Кол-во рекомендаций, полученных игроками

_recomLeft -  Кол-во рекомендаций, которых может дать игрок

 

### 

Есть такой класс где запускается таск на обновление чтобы понимать когда это дело обновится.

public class TaskRecom extends Task
{
	private static final Logger	_log	= Logger.getLogger(TaskRecom.class.getName());
	private static final String	NAME	= "sp_recommendations";

	/* (non-Javadoc)
	 * @see ru.catssoftware.gameserver.taskmanager.Task#getName()
	 */
	@[member='override']
	public String getName()
	{
		return NAME;
	}

	/* (non-Javadoc)
	 * @see ru.catssoftware.gameserver.taskmanager.Task#onTimeElapsed(ru.catssoftware.gameserver.taskmanager.TaskManager.ExecutedTask)
	 */
	@[member='override']
	public void onTimeElapsed(ExecutedTask task)
	{
		for (L2PcInstance player : L2World.getInstance().getAllPlayers())
		{
			player.checkRecom(player.getRecomHave(), player.getRecomLeft()); // Вот тут срабатывает код который мы рассматриваем всем Pc(Игрокам)
			player.broadcastUserInfo();
		}
		_log.info("Recommendation Global Task: launched.");
	}

	@[member='override']
	public void initializate()
	{
		super.initializate();
		TaskManager.addUniqueTask(NAME, TaskTypes.TYPE_GLOBAL_TASK, "1", "13:00:00", "");
	}
} 

 

 

 

###

if (getStat().getLevel() < 20) //Если игрок меньше 20
{
	_recomLeft = 3; //Даем 3 река
	_recomHave--; //Снимаем 1 рек
}
else if (getStat().getLevel() < 40) //Если меньше 40 но больше 20
{
	_recomLeft = 6; //Даем 6 реков
	_recomHave -= 2; //Снимаем 2
}
else //В другом случае, а именно больше 40 лвл-а
{
	_recomLeft = 9; //Даем 9 реков
	_recomHave -= 3; //Снимаем 3
}
if (_recomHave < 0) //Если реков у персонажа полученных 0 или меньше
	_recomHave = 0; //Устанавливаем 0

В твоем случае 

 

if (getStat().getLevel() < 78) //Даем 1 и снимаем 1 если ты меньше 78
  {
   _recomLeft = 1;
   _recomHave--;
  }
  else if (getStat().getLevel() < 79) //Даем 2 и снимаем 2 если ты меньше 79
  {
   _recomLeft = 2;
   _recomHave -= 2;
  }
  else //В остальном даем 3 и снимаем 3
  {
   _recomLeft = 3;
   _recomHave -= 3;
  }
Изменено пользователем gvb
  • Upvote 2

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


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

ну как бы логично - ты же проверяешь во второй ветке на "меньше 79", а не "меньше или равно 79".

правда непонятно тогда почему у тебя на 78 идет 1 рек, т.к. должна отработать вторая ветка и дать 2 река. хотя может просто отображается на единицу меньшее значение или где-то дальше еще уменьшается на 1.

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


Ссылка на сообщение
Поделиться на другие сайты
if (_lastRecomUpdate==0) //Если заходим первый раз то обновляем по тем условиям
	restartRecom();
else //Если уже заходил просто берет с базы значения
{
	_recomHave = recsHave;
	_recomLeft = recsLeft;
}

Релог и рестарт не поможет

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

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


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

 

_recomHave - Кол-во рекомендаций, полученных игроками

_recomLeft -  Кол-во рекомендаций, которых может дать игрок

 

### 

Есть такой класс где запускается таск на обновление чтобы понимать когда это дело обновится.

public class TaskRecom extends Task
{
	private static final Logger	_log	= Logger.getLogger(TaskRecom.class.getName());
	private static final String	NAME	= "sp_recommendations";

	/* (non-Javadoc)
	 * @see ru.catssoftware.gameserver.taskmanager.Task#getName()
	 */
	@[member='override']
	public String getName()
	{
		return NAME;
	}

	/* (non-Javadoc)
	 * @see ru.catssoftware.gameserver.taskmanager.Task#onTimeElapsed(ru.catssoftware.gameserver.taskmanager.TaskManager.ExecutedTask)
	 */
	@[member='override']
	public void onTimeElapsed(ExecutedTask task)
	{
		for (L2PcInstance player : L2World.getInstance().getAllPlayers())
		{
			player.checkRecom(player.getRecomHave(), player.getRecomLeft()); // Вот тут срабатывает код который мы рассматриваем всем Pc(Игрокам)
			player.broadcastUserInfo();
		}
		_log.info("Recommendation Global Task: launched.");
	}

	@[member='override']
	public void initializate()
	{
		super.initializate();
		TaskManager.addUniqueTask(NAME, TaskTypes.TYPE_GLOBAL_TASK, "1", "13:00:00", "");
	}
} 

 

 

 

###

if (getStat().getLevel() < 20) //Если игрок меньше 20
{
	_recomLeft = 3; //Даем 3 река
	_recomHave--; //Снимаем 1 рек
}
else if (getStat().getLevel() < 40) //Если меньше 40 но больше 20
{
	_recomLeft = 6; //Даем 6 реков
	_recomHave -= 2; //Снимаем 2
}
else //В другом случае, а именно больше 40 лвл-а
{
	_recomLeft = 9; //Даем 9 реков
	_recomHave -= 3; //Снимаем 3
}
if (_recomHave < 0) //Если реков у персонажа полученных 0 или меньше
	_recomHave = 0; //Устанавливаем 0

В твоем случае 

 

if (getStat().getLevel() < 78) //Даем 1 и снимаем 1 если ты меньше 78
  {
   _recomLeft = 1;
   _recomHave--;
  }
  else if (getStat().getLevel() < 79) //Даем 2 и снимаем 2 если ты меньше 79
  {
   _recomLeft = 2;
   _recomHave -= 2;
  }
  else //В остальном даем 3 и снимаем 3
  {
   _recomLeft = 3;
   _recomHave -= 3;
  }

Вот сделал так:

if (getStat().getLevel() < 78)
  {
   _recomLeft = 1;
   _recomHave--;
  }
  else if (getStat().getLevel() < 79)
  {
   _recomLeft = 2;
   _recomHave -= 0;
  }
  else
  {
   _recomLeft = 3;
   _recomHave -= 0;
  }
  
  if (_recomHave < 0)
   _recomHave = 0;

Значит на 80 должно давать 3 река верно? 

Я просто не совсем точно понимаю как данная система работает. 

Должна ли она сразу обновлять рекомендации или же только в 13 дня каждый день.. Вот что интересно..

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

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


Ссылка на сообщение
Поделиться на другие сайты
if (_lastRecomUpdate==0) //Если заходим первый раз то обновляем по тем условиям
	restartRecom();
else //Если уже заходил просто берет с базы значения
{
	_recomHave = recsHave;
	_recomLeft = recsLeft;
}

Релог и рестарт не поможет

 

Да и вот кроме таска еще такое нашел..

К чему оно надо?

 

Calendar update = Calendar.getInstance();
if (update.get(Calendar.HOUR_OF_DAY) < 13)
update.add(Calendar.DAY_OF_MONTH,-1);


update.set(Calendar.HOUR_OF_DAY,13);
_lastRecomUpdate = update.getTimeInMillis();
}

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


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

В общем странно в таске поставил :

       TaskManager.addUniqueTask(NAME,TaskTypes.TYPE_GLOBAL_TASK, "1", "12:55:00", "");

Сделал релог в 12:55 ничего не изменилось реки не обновились.

 

// If we have to update last update time, but it's now before 13, we should set it to yesterday
Calendar update = Calendar.getInstance();
if (update.get(Calendar.HOUR_OF_DAY) < 13)
update.add(Calendar.DAY_OF_MONTH,-1);


update.set(Calendar.HOUR_OF_DAY,13);
_lastRecomUpdate = update.getTimeInMillis();

 

И так же в 13 01 так же сделал релог тоже ничего не обновилось.

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


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

если кое что сделать(без софта)    и потом просто когда меняешь саб будет начисляться по 9 реков везде работает но толку 0) 

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


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

 

Да и вот кроме таска еще такое нашел..

К чему оно надо?

 

Calendar update = Calendar.getInstance();
if (update.get(Calendar.HOUR_OF_DAY) < 13)
update.add(Calendar.DAY_OF_MONTH,-1);


update.set(Calendar.HOUR_OF_DAY,13);
_lastRecomUpdate = update.getTimeInMillis();
}

 

Ну оно записывает в _lastRecomUpdate же. Выше я показывал как оно работает.

Для чего это нужно? Для того чтобы условие (_lastRecomUpdate == 0) не срабатывало всегда, а только при первой загрузке, если у нас всегда будет 0, то при каждой загрузки Pc будет выдавать нам и снимать рекомендации.

 

Разжевал уже все, там и понимать то нечего.

 

если кое что сделать(без софта)    и потом просто когда меняешь саб будет начисляться по 9 реков везде работает но толку 0) 

Если ты зашел в игру после создания персонажа, ты никак не попадешь на условие (_lastRecomUpdate == 0)

И как не крути, все что ты будешь делать тебе не поможет для начисления реков :)

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

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


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

Ну оно записывает в _lastRecomUpdate же. Выше я показывал как оно работает.

Для чего это нужно? Для того чтобы условие (_lastRecomUpdate == 0) не срабатывало всегда, а только при первой загрузке, если у нас всегда будет 0, то при каждой загрузки Pc будет выдавать нам и снимать рекомендации.

 

Разжевал уже все, там и понимать то нечего.

 

Если ты зашел в игру после создания персонажа, ты никак не попадешь на условие (_lastRecomUpdate == 0)

И как не крути, все что ты будешь делать тебе не поможет для начисления реков :)

Так что сделать что бы они начислились не пойму...?

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


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

 

Если ты зашел в игру после создания персонажа, ты никак не попадешь на условие (_lastRecomUpdate == 0)

И как не крути, все что ты будешь делать тебе не поможет для начисления реков :)

давай скажи мне сборку я сейчас найду сервер, зайду и сделаю.

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

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

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