View file f_speakbuy.dat

File size: 4.04Kb
					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/><anchor>".$s."<go href=\"#menu\"><setvar name=\"to\" value=\"".$i."\"/></go></anchor>";
							$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>";}
						$stmp.="\n</p>\n</card>\n<card id=\"menu\" title=\"Меню\">\n<p>\n<a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&to=$(to)\">Купить</a>\n<br/><a href=\"$PHP_SELF?sid=$sid&from=$speak&look=$(to)\">Инфо</a>";
						msg($stmp);
						}else {	// передаем $to
							if (!isset($items[$to])) msg("<p>Этого предмета нет");
							$item=split("\|",$items[$to]);
							// проверим кол-во
							if ($item[1]==0) msg("<p>Этого предмет кончился, зайдите в другой раз");
							if ($item[1]>1 && !$num) {		// запросим кол-во
								$stmp="<p>Укажите количество:\n<br/><input name=\"num\" value=\"".$item[1]."\"/>\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&to=$to&num=$(num)\">Отправить</a>";
								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);
							// т.к. изменили товары
							foreach(array_keys($items) as $i) $game["loc"][$player["loc"]][$speak]["bank"][$i]=$update[$i]."=".$items[$i];
							msg("Вы купили ".$num." ".$item[0]." за ".$price." монет");
							}