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

Предметы, Извлекаемые Из Предметов.

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

Сабж. Интересует метод реализации данной вещи, а именно "Сундук Энергии Карли" т.е. при клике по сундуку выпадет обязательно один из трёх возможных талисманов.

Спасибо.

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


Ссылка на сообщение
Поделиться на другие сайты
  В 07.10.2013 в 06:58, exspertxd сказал:

Сабж. Интересует метод реализации данной вещи, а именно "Сундук Энергии Карли" т.е. при клике по сундуку выпадет обязательно один из трёх возможных талисманов.

Спасибо.

Смотря какая у тебя сборка, на некоторых сборках есть файл extractable_items.csv , в котором вот допустим я зашел и вот строчки выдернул

# Greater Compressed BSpS

5262;3947,1000,10

 

5262- это ID вещи с которой при клике два раза мы чтото получаем

3947- это ID предмета котый будет выпадать

1000- это количество получаемых предметов (не знаю сколько максимум,учитывай то , что если поставишь много а у тебя в базе будут предметы не stackbate (или как то так) тоесть не в стопку, то у тебя выпадет допустим 1000 арок, и залагает )

10 - шанс получения предмета, после клика (максимум 100)

  • Upvote 1

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


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

Выбираешь рандомно один из нужных предметов. в вашем случае 3.

Считаешь для него шанс = 100%/3 - выпал - выдал, нет - идем дальше

 

Выбираешь рандомно один из нужных предметов. в вашем случае уже 2.

Считаешь для него шанс = 100%/2 - выпал - выдал, нет - идем дальше

 

Если выше не выпал, для последнего считаешь шанс в 100% - он то выпадет в любом случае.

 

 

Все это оформляешь в цикле из нужного кол-ва предметов - вот и все.

  • Upvote 1

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


Ссылка на сообщение
Поделиться на другие сайты
  В 07.10.2013 в 06:58, exspertxd сказал:

Сабж. Интересует метод реализации данной вещи, а именно "Сундук Энергии Карли" т.е. при клике по сундуку выпадет обязательно один из трёх возможных талисманов.

Спасибо.

 

В принципе, стандартный хендлер extractable_items, в котором ставится метод:

 

public static boolean extractRandomOneItem(Player player, int[][] items, double[] chances)
{
 if(items.length != chances.length)
 {
  return false;
 }
 double extractChance = 0;
 for(double c : chances)
 {
  extractChance += c;
 }
 if(Rnd.chance(extractChance))
 {
  int[] successfulItems = new int[0];
  while(successfulItems.length == 0)
  {
   for(int i = 0; i < items.length; i++)
   {
 if(Rnd.chance(chances[i]))
 {
  successfulItems = ArrayUtils.add(successfulItems, i);
 }
   }
  }
  int[] item = items[successfulItems[Rnd.get(successfulItems.length)]];
  if(item.length < 2)
  {
   return false;
  }
  Functions.addItem(player, item[0], item[1]);
 }
 return true;
}

 

В нём, высчитываться должен, по идее, среднестатистический шанс для массива ID итемов.

 

То есть, в зависимости от количества итемов, шанс для каждого будет уменьшаться, однако оставаться для каждого равным.

  • Upvote 1

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


Ссылка на сообщение
Поделиться на другие сайты
  В 07.10.2013 в 09:03, DevGoD сказал:

 

 

В принципе, стандартный хендлер extractable_items, в котором ставится метод:

 

многа букаф

 

В нём, высчитываться должен, по идее, среднестатистический шанс для массива ID итемов.

 

То есть, в зависимости от количества итемов, шанс для каждого будет уменьшаться, однако оставаться для каждого равным.

по мне дак что этот способ, что способ с extractable_items.csv - та еще извратность. первый в силу того что для каждого распаковываемого предмета надо писать отдельный метод, внутри которого перечислены ид предметов и шансы + вызов extractRandomOneItem, а потом регистрировать эти методы в хэндлерах. ну а второй в силу своей достаточной примитивности и посему сложности описания каких-то особенных распаковок.

 

лично мой выбор давно уже - уинверсальный хэндлер для всех подобных вещей + xml'ка, в которой все эти вещи расписаны с деталями, как конкретно их распаковывать и данные из которой этот хэндлер использует.

 

что-то типа такого:

 

  Показать контент

 

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

 

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
  В 07.10.2013 в 22:55, Gaikotsu сказал:

по мне дак что этот способ, что способ с extractable_items.csv - та еще извратность. первый в силу того что для каждого распаковываемого предмета надо писать отдельный метод, внутри которого перечислены ид предметов и шансы + вызов extractRandomOneItem, а потом регистрировать эти методы в хэндлерах. ну а второй в силу своей достаточной примитивности и посему сложности описания каких-то особенных распаковок.

 

лично мой выбор давно уже - уинверсальный хэндлер для всех подобных вещей + xml'ка, в которой все эти вещи расписаны с деталями, как конкретно их распаковывать и данные из которой этот хэндлер использует.

 

что-то типа такого:

 

  Показать контент

 

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

 

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

 

Думал о таком способе, парсер/хранилище/xml написал, но потом подзабил, т.к. всё же хендлер показался удобнее.

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


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

ну-ну... учитывая еще что у тебя в сборке и скрипты датапака скомпилены и собраны в jar (и наверняка java-файлы из датапака сервером при загрузке уже не подхватываются) всем страждущим, для добавления любой новой распаковываемой вещи придется искать тебя и просить чтобы ты добавил хэндлер для данной вещи - это да, конечно, очень "удобно".

 

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

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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