PHP: if (!$res) { if ($battle->module=='zver') { $tmp = rtrim($battle->side2,';'); $db->query("SELECT * FROM zver WHERE id = $tmp"); $r = $db->fetch_array(); $arr = explode(';',$r['vipad']); $razn = abs($r['level']-$user->level); $tmp2 = ceil($sk/(100+($razn*100))*100); if (rand(1,10000)<$tmp2*4) { $count = count($arr); $db->query("SELECT * FROM items WHERE id = ".$arr[rand(0,($count-1))].""); $r = $db->fetch_array(); $amount = ceil($r['iznos']*(rand(1,($sk+1))/($sk+1))); if (rand(1,100)==1) $amount = $r['iznos']; $db->query("insert into bag (owner,id,pid,iznos,srab,present,dressed) values('".$_SESSION["id"]."','".$r["id"]."','".(time()+$i)."','".$amount."','".$r["iznos"]."','n','n')"); $res = "Найдено: <b>$r[name]</b>"; } } } if (!$res) $res = "<b>Ничего не найдено.</b>"; break; } echo $res; exit; Часть скрипта, который выполняет дроп, хочется уточнить по поводу шанса, if (rand(1,10000)<$tmp2*4), я как понял, если выпало это число в рандомном диапазоне, дальше выполняется действие, а именно запись в БД вида:$db->query("insert into bag (owner,id,pid,iznos,srab,present,dressed) values('".$_SESSION["id"]."','".$r["id"]."','".(time()+$i)."','".$amount."','".$r["iznos"]."','n','n')"); так? и как можно сделать более-менее фиксированый рэндом или "шанс"?
Allen21 генерируется "рандомное" число в фиксированном диапазоне. Если полученное число меньше некоторого вычисляемого 4*$tmp2 - то персонаж получит какой-то итем. Что такое "фиксированный рэндом"? Например если 4*$tmp2 равно 5000, то шанс получить итем равен 50%.
спасибо за ответ) еще вопросик, этот диапазон можно сократить if (rand(1,10000) например поставить, if (rand(1,100) или только сама функция рэндома генерирует и не смотрит на этот диапазон?
то есть, вместо знака "<" поставить or ? а если меня первый диапазон смущает, так как этот диапазон от 1 до 10000, собственно в этом и загвоздка, смогу ли я этот диапазон уменьшить поставив rand(1,100)
нет вместо знака меньше нельзя- or это русским языком"или" смотри мануал пыха т е можно несмотря на рандом добиться 100% варианта при известном каком то условии тебе- на которое можеш влиять По поводу второй части твоего вопроса- да так можно
нет я то синтаксис пыхы знаю, меня то и смутило наличия ор вместо <. а вот на счет 100% результат, немного не понял, как его можно добиться? если логически подумать то rand(1,1), но я так понял такой диапазон и rand(1,2) нельзя ставить в рэндоме?
if ($tmp2 == $tmp2) вместо if (rand(1,10000)<$tmp2*4) или if (rand(1,10000)<$tmp2*4 or $id == "тут например твой айди") / но тут ты должен свой натуральный айди в системе получить в переменную и тогда только у твоего акка 100% шанс у остальных рандом