Четверг, 19 Декабря 2024, 00:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как на PHP сделать рандомно выпадение предметов
wInDxДата: Среда, 29 Июня 2011, 15:05 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброго времени суток!
Подскажите как в php сделать например выпадение рандомно Из базы предмета в зависимости от процента!Вот допустим есть вещь1 вещь2 вещь3.
У вещи1 шанс в поле chance равен 10, у вещи2 равен 40, и у вещи 3 равен 80.Допусм игрок нажимает на ссылку "испытать удачу" при нажатии из базы берется вещь в зависимости от поля chance, чем больше шанс тем больше будет падать вещь у которой шанс больше, и меньше будет падать вещь у которой шанс меньше!
Как сделат подскажите плз:))


Ubi Concordia Ibi Victoria
lvovandДата: Среда, 29 Июня 2011, 15:22 | Сообщение # 2
старожил
Сейчас нет на сайте
можно так сделать
выбираешь число через rand()

число = rand(1,100);
если 1<=число<10 - выпала вещь 1
иначе если 1<=число<40 - выпала вещь 2
иначе если 1<=число<80 - выпала вещь 3
иначе - не выпало ничего


Разработка и продвижение сайтов. Дизайн
wInDxДата: Среда, 29 Июня 2011, 16:05 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Я так же само сначала сделал!Но все таки может есть другой вариант

Ubi Concordia Ibi Victoria
lvovandДата: Среда, 29 Июня 2011, 16:10 | Сообщение # 4
старожил
Сейчас нет на сайте
с точки зрения высшей математики может и неправильно, но по сути то, чем не устраивает?

Разработка и продвижение сайтов. Дизайн
webstrict666Дата: Среда, 29 Июня 2011, 16:50 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
biggrin математика и формулы... думаю вы умете высчитывать процент?
допустим есть вещь 1 - в базе, она имеет 3 поля:
ID - int - целочисленное значение - авто инкрумент
Name - varchar10 - название вещи
dropproc - int11 - процент выпода

Теперь составим нашу формулу (она написана на скорую руку.)
$RandProc = mt_rand(10,100); //Вычесляем случайное число от 10 до 100
далее формула для вычисления выйграл человек или нет (зы так сказать игра в ящик):
($RandProc/$dropproc)*100

далее делаешь проверочку ... обычной логикой


http://GAMESKROL.RU
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
lvovandДата: Среда, 29 Июня 2011, 17:44 | Сообщение # 6
старожил
Сейчас нет на сайте
может такой еще вариант сойдет, если вещей не очень много

задаем массив
ключи
0 - ничего
1,2,3 - вещи

значения - вероятность выпадения

$ar = Array(0=>10,
1=>20,
2=>40,
3=>80);

//составляем и заполняем вспомогательный массив
foreach($ar as $key=>$val){
for($i=0; $i<$val; $i++){
$ar2[] = $key;
}
}

//перемешиваем вспомогательный массив и берем потом у него первое значение
shuffle($ar2);
echo $ar2[0];


Разработка и продвижение сайтов. Дизайн
wInDxДата: Среда, 29 Июня 2011, 18:37 | Сообщение # 7
почетный гость
Сейчас нет на сайте
webstrict666, и что ето будет?
Quote
($RandProc/$dropproc)*100

Допустим шанс что вещь выпадет 50!Рандомное чило выпало допустим 60! (60/50)*100=120!
И что ето...?


Ubi Concordia Ibi Victoria
AssasinДата: Среда, 29 Июня 2011, 19:30 | Сообщение # 8
web-coder
Сейчас нет на сайте
Получается % выпадения вещи 120%, значит вещь выпала. Все что выше 100 то вещь выпала.
wInDxДата: Четверг, 30 Июня 2011, 00:06 | Сообщение # 9
почетный гость
Сейчас нет на сайте
И еще вопросик!Как рандомно вытягивать из базы значения?Вот например есть две вещи 1 и 2 допустим сила у них (одинаковая) 100 и 100 когда я вытягиваю указываю WHERE сила=100, и оно вытягиваЕт ту которая первая в базе!А как зделать рандомно???

Ubi Concordia Ibi Victoria
lvovandДата: Четверг, 30 Июня 2011, 00:49 | Сообщение # 10
старожил
Сейчас нет на сайте
либо получай сначала id записей, из них рандомно выбирай id одной записи и по ней получай значение из базы, либо ORDER BY RAND() указывать в sql-запросе

Разработка и продвижение сайтов. Дизайн
AssasinДата: Четверг, 30 Июня 2011, 12:15 | Сообщение # 11
web-coder
Сейчас нет на сайте
RAND() лучше в БД не использовать, т.к. он создает временную таблицу и с нее рандомно выбирает значения, а это доп. нагрузка на сервер. При том если вещей много и пользователи одновременно сделают этот запрос, то нагрузка будет очень большая.
Можно попробовать так:
Code

$rnd = rand(1, mysql_result(count_query("SELECT MAX(id_item) FROM items"),0));
wInDxДата: Четверг, 30 Июня 2011, 17:01 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Fatal Error undefined function count-query!У меня на телефоне нету знака подчеркивание поетому я написал "-"!Не работает count-query

Ubi Concordia Ibi Victoria
AssasinДата: Четверг, 30 Июня 2011, 18:08 | Сообщение # 13
web-coder
Сейчас нет на сайте
Сорри, это моя функция, напиши вместо нее mysql_query smile
QWER56Дата: Среда, 06 Июля 2011, 21:19 | Сообщение # 14
старожил
Сейчас нет на сайте
$num=rand(10);

Используй на здоровье.


ConsMark - поисковик по интернет магазинам.
webstrict666Дата: Пятница, 08 Июля 2011, 21:06 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
незнания убивает мозг)
QWER56, почитайте о mt_rand и rand ... не надо распространять Аля 80)


http://GAMESKROL.RU
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально !
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг