Просмотр файла f_speakbuy.dat

Размер файла: 4.04Kb
  1. if (!$game["loc"][$player["loc"]][$speak]["trader"]) msg("<p>Это не продавец");
  2. $trader=split("\|",$game["loc"][$player["loc"]][$speak]["trader"]);
  3. // составим массив items и update
  4. if (count($game["loc"][$player["loc"]][$speak]["bank"])==0) msg("<p>У меня нет товаров");
  5. $items=array(); $update=array();
  6. foreach(array_keys($game["loc"][$player["loc"]][$speak]["bank"]) as $i) {
  7. $st=split("=",$game["loc"][$player["loc"]][$speak]["bank"][$i]);
  8. $update[$i]=$st[0];
  9. $items[$i]=$st[1];
  10. }
  11. // проверим время обновления товаров
  12. if (time()>$game["loc"][$player["loc"]][$speak]["trader_time"]) {
  13. foreach(array_keys($update) as $i) {
  14. $upd=split("\|",$update[$i]);
  15. $item=split("\|",$items[$i]);
  16. if (rand(0,100)>$upd[0]) $item[1]=0; else $item[1]=rand($upd[1],$upd[2]);
  17. $items[$i]=implode("|",$item);
  18. }
  19. $game["loc"][$player["loc"]][$speak]["trader_time"]=time()+$trader[2];
  20. // т.к. изменили товары
  21. foreach(array_keys($items) as $i) $game["loc"][$player["loc"]][$speak]["bank"][$i]=$update[$i]."=".$items[$i];
  22. }
  23. if (!$to) { // список
  24. $stmp="<p>На продажу:";
  25. $ind=0;$count=0;if ($start<0 || !$start) $start=0;
  26. foreach(array_keys($items) as $i) {
  27. if ($ind>=$start) {
  28. $k=split("\|",$items[$i]);
  29. if ($k[1]==0) continue; // товары с кол-вом 0 пропускаем
  30. if ($k[1]>1) $s=$k[0]." (".$k[1].")"; else $s=$k[0];
  31. $s.=": ".round($k[2]*$trader[0]);
  32. $stmp.="\n<br/><anchor>".$s."<go href=\"#menu\"><setvar name=\"to\" value=\"".$i."\"/></go></anchor>";
  33. $count++;
  34. if ($count>=$count_show) break; // след. страница, если слишком много человек или предметов
  35. }
  36. $ind++;
  37. }
  38. if ($start && $start-$count_show>=0) $stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id\">^ </a>";
  39. 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>";}
  40. $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>";
  41. msg($stmp);
  42. }else { // передаем $to
  43. if (!isset($items[$to])) msg("<p>Этого предмета нет");
  44. $item=split("\|",$items[$to]);
  45. // проверим кол-во
  46. if ($item[1]==0) msg("<p>Этого предмет кончился, зайдите в другой раз");
  47. if ($item[1]>1 && !$num) { // запросим кол-во
  48. $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>";
  49. msg($stmp);
  50. }
  51. if (!$num || $num<1) $num=1;
  52. if ($num>$item[1]) $num=$item[1];
  53. // считаем стоимость всех предметов с учетом коэфф продавца
  54. $price=round($item[2]*$num*$trader[0]);
  55. // проверяем, хватит ли денег
  56. $b=0;
  57. if (!isset($player["items"]["item.misc.money"])) $b=1; else {$m=split("\|",$player["items"]["item.misc.money"]); if ($m[1]<$price) $b=1;}
  58. if ($b) msg("<p>Недостаточно денег (надо ".$price." монет)");
  59. // забираем деньги
  60. $m=split("\|",$player["items"]["item.misc.money"]);
  61. $m[1]-=$price;
  62. if ($m[1]==0) unset($player["items"]["item.misc.money"]); else $player["items"]["item.misc.money"]=implode("|",$m);
  63. // удаляем из банка продавца
  64. $item[1]-=$num;
  65. if ($item[1]<0) $item[1]=0;
  66. $items[$to]=implode("|",$item);
  67. // добавляем игроку в items
  68. if (isset($player["items"][$to])) $itemp=split("\|",$player["items"][$to]); else {$itemp=$item; $itemp[1]=0;}
  69. $itemp[1]+=$num;
  70. $player["items"][$to]=implode("|",$itemp);
  71. // т.к. изменили товары
  72. foreach(array_keys($items) as $i) $game["loc"][$player["loc"]][$speak]["bank"][$i]=$update[$i]."=".$items[$i];
  73. msg("Вы купили ".$num." ".$item[0]." за ".$price." монет");
  74. }
  75.  
  76.  
  77.