Файл: speakbuy.php
Строк: 64
<?
                    if (!$game["loc"][$player["loc"]][$speak]["trader"]) msg("<p>Это не продавец");
                    $trader=split("|",$game["loc"][$player["loc"]][$speak]["trader"]);
                    // составим массив items и update
                    if (count($game["loc"][$player["loc"]][$speak]["bank"])==0) msg("<p>У меня нет товаров");
                    $items=array(); $update=array();
                    foreach(array_keys($game["loc"][$player["loc"]][$speak]["bank"]) as $i) {
                        $st=split("=",$game["loc"][$player["loc"]][$speak]["bank"][$i]);
                        $update[$i]=$st[0];
                        $items[$i]=$st[1];
                        }
                    // проверим время обновления товаров
                    if (time()>$game["loc"][$player["loc"]][$speak]["trader_time"]) {
                        foreach(array_keys($update) as $i) {
                            $upd=split("|",$update[$i]);
                            $item=split("|",$items[$i]);
                            if (rand(0,100)>$upd[0]) $item[1]=0; else $item[1]=rand($upd[1],$upd[2]);
                            $items[$i]=implode("|",$item);
                            }
                        $game["loc"][$player["loc"]][$speak]["trader_time"]=time()+$trader[2];
                        // т.к. изменили товары
                        foreach(array_keys($items) as $i) $game["loc"][$player["loc"]][$speak]["bank"][$i]=$update[$i]."=".$items[$i];
                        }
                    if (!$to) {        // список
                        $stmp="<p>На продажу:";
                        $ind=0;$count=0;if ($start<0 || !$start) $start=0;
                        foreach(array_keys($items) as $i) {
                            if ($ind>=$start) {
                            $k=split("|",$items[$i]);
                            if ($k[1]==0) continue;        // товары с кол-вом 0 пропускаем
                            if ($k[1]>1) $s=$k[0]." (".$k[1].")"; else $s=$k[0];
                            $s.=": ".round($k[2]*$trader[0]);
                            $stmp.="n<br/><a href="$PHP_SELF?sid=$sid&how=1&why=$speak&id=$id&to=$i">".$s."</a>";
                            $count++;
                            if ($count>=$count_show) break;    // след. страница, если слишком много человек или предметов
                            }
                            $ind++;
                            }
                        if ($start && $start-$count_show>=0) $stmp.="n<br/><a href="$PHP_SELF?sid=$sid&speak=$speak&id=$id">^ </a>";
                        if ($count+$start<count($items)) {if (!$start) $stmp.="n<br/>"; $stmp.= " <a href="$PHP_SELF?sid=$sid&speak=$speak&id=$id&start=".($count+$start)."">[+]</a>";}
                        msg($stmp);
                        } else {
                        if (!isset($items[$to])) msg("<p>Этого предмета нет");
                            $item=split("|",$items[$to]);
                            // проверим кол-во
                            if ($item[1]==0) msg("<p>Этого предмет закончился, зайдите в другой раз");
                            $num=intval($num);
                            if ($item[1]>1 && !$num) {        // запросим кол-во
                            if($player['style']=='0') {
                            $stmp="<p>Укажите количество:n<br/><input format="*N" maxlength="9" name="num" value="".$item[1].""/>n<br/><a href="$PHP_SELF?sid=$sid&speak=$speak&id=$id&to=$to&num=$(num)">Купить</a>";
                            }else{
                                $stmp="<form action="$PHP_SELF?sid=$sid&speak=$speak&id=$id&to=$to" method="post">Укажите количество:<br/><input format="*N" maxlength="9" name="num" value="".$item[1]."" class="inup"/>n<br/><input type="submit" value="Купить" class="btn"></form>";
                                }
                                msg($stmp);
                                }
                            if (!$num || $num<1) $num=1;
                            if ($num>$item[1]) $num=$item[1];
                            // считаем стоимость всех предметов с учетом коэфф продавца
                            $price=round($item[2]*$num*$trader[0]);
                            // проверяем, хватит ли денег
                            $b=0;
                            if (!isset($player["items"]["item.misc.money"])) $b=1; else {$m=split("|",$player["items"]["item.misc.money"]); if ($m[1]<$price) $b=1;}
                            if ($b) msg("<p>Недостаточно серебра (надо ".$price." серебра)");
                            // забираем деньги
                            $m=split("|",$player["items"]["item.misc.money"]);
                            $m[1]-=$price;
                            if ($m[1]==0) unset($player["items"]["item.misc.money"]); else $player["items"]["item.misc.money"]=implode("|",$m);
                            // удаляем из банка продавца
                            $item[1]-=$num;
                            if ($item[1]<0) $item[1]=0;
                            $items[$to]=implode("|",$item);
                            // добавляем игроку в items
                            if (isset($player["items"][$to])) $itemp=split("|",$player["items"][$to]); else {$itemp=$item; $itemp[1]=0;}
                            $itemp[1]+=$num;
                            $player["items"][$to]=implode("|",$itemp);
                            // т.к. изменили товары
                            calcparam($login);
                            foreach(array_keys($items) as $i) $game["loc"][$player["loc"]][$speak]["bank"][$i]=$update[$i]."=".$items[$i];
                            msg("Вы купили ".$num." ".$item[0]." за ".$price." Серебра");
            }    
?>