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

Размер файла: 4.18Kb
  1. // диалог повышения скилла или аттрибута на 1
  2.  
  3. $arr_skills=array(
  4. "str"=>0,
  5. "dex"=>1,
  6. "int"=>2,
  7. "meditation"=>5,
  8. "steal"=>6,
  9. "animaltaming"=>7,
  10. "hand"=>8,
  11. "coldweapon"=>9,
  12. "ranged"=>10,
  13. "parring"=>11,
  14. "uklon"=>12,
  15. "magic"=>13,
  16. "magic_resist"=>14,
  17. "magic_uklon"=>15,
  18. "regeneration"=>16,
  19. "hiding"=>17,
  20. "look"=>18,
  21. "steallook"=>19,
  22. "animallore"=>20,
  23. "spirit"=>21,
  24. );
  25.  
  26. $arr_title=array(
  27. "str"=>"Сила",
  28. "dex"=>"Ловкость",
  29. "int"=>"Интеллект",
  30. "meditation"=>"Медитация",
  31. "steal"=>"Кража",
  32. "animaltaming"=>"Прир.животных",
  33. "hand"=>"Рукопашная",
  34. "coldweapon"=>"Холодн.оружие",
  35. "ranged"=>"Стрельба",
  36. "parring"=>"Парирование",
  37. "uklon"=>"Уклон",
  38. "magic"=>"Магия",
  39. "magic_resist"=>"Сопр.магии",
  40. "magic_uklon"=>"Уклон от магии",
  41. "regeneration"=>"Регенерация",
  42. "hiding"=>"Скрытность",
  43. "look"=>"Осторожность",
  44. "steallook"=>"Подглядывание",
  45. "animallore"=>"Изуч.животных",
  46. "spirit"=>"Спиритизм",
  47. );
  48. $skills=split("\|",$player["skills"]);
  49. // проверим, есть ли очки опыта
  50. if ($skills[4]<1) msg("<p>Недостаточно очков опыта");
  51. // проверим минимальный и макс. уровень
  52. if (!$dialog[3]) $dialog[3]=0;
  53. if (!$dialog[4]) $dialog[4]=5;
  54. if ($skills[$arr_skills[$dialog[1]]]<$dialog[3]) msg("<p>Вы должны иметь уровень навыка не ниже ".$dialog[3]);
  55. if ($skills[$arr_skills[$dialog[1]]]>$dialog[4]) msg("<p>Вы и так достаточно опытны, я учу только до уровня ".$dialog[4]);
  56.  
  57. if ($dialog[1]=='str' || $dialog[1]=='dex' || $dialog[1]=='int') {
  58. if ($skills[$arr_skills[$dialog[1]]]+1>$points_limit_attr_one) msg("<p>Невозможно повысить, т.к. аттрибут уже на максимальном уровне ".$points_limit_attr_one);
  59. if ($skilldown && $skills[$arr_skills[$skilldown]]-1<1) msg("<p>Невозможно понизить, т.к. аттрибут уже на минимальном уровне 1, выберите другой");
  60. if (!$skilldown) if ($skills[0]+$skills[0]+$skills[0]+1>$points_limit_attr) {
  61. $stmp.= "<p>Превышен предел суммы очков (".$points_limit_attr.") для аттрибутов, выберите что уменьшить: ";
  62. if ($dialog[1]!='str') $stmp.= "\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&skilldown=str\">Сила: ".$skills[0]."</a>";
  63. if ($dialog[1]!='dex') $stmp.= "\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&skilldown=dex\">Ловкость: ".$skills[1]."</a>";
  64. if ($dialog[1]!='int') $stmp.= "\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&skilldown=int\">Интеллект: ".$skills[2]."</a>";
  65. msg($stmp);
  66. }
  67. } else { //НАВЫКИ
  68. if ($skills[$arr_skills[$dialog[1]]]+1>$points_limit_skills_one) msg("<p>Невозможно повысить, т.к. навык уже на максимальном уровне ".$points_limit_skills_one);
  69. if ($skilldown && $skills[$arr_skills[$skilldown]]-1<0) msg("<p>Невозможно понизить, т.к. навык уже на минимальном уровне 0, выберите другой");
  70. $sum=1; // т.к. собираемся добавить
  71. foreach (array_keys($arr_skills) as $i) if ($i!='str' && $i!='dex' && $i!='int') $sum+=$skills[$arr_skills[$i]];
  72. if (!$skilldown) if ($sum+1>$points_limit_skills) {
  73. $stmp.= "<p>Превышен предел суммы очков (".$points_limit_skills.") для навыков, выберите что уменьшить: ";
  74. foreach (array_keys($arr_skills) as $i) if ($i!='str' && $i!='dex' && $i!='int') $stmp.= "\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=$id&skilldown=$i\">".$arr_title[$i].": ".$skills[$arr_skills[$i]]."</a>";
  75. msg($stmp);
  76. }
  77. }
  78.  
  79. // проверим, хватит ли денег
  80. $b=0;
  81. if ($player["items"]["item.misc.money"]) {
  82. $money=split("\|",$player["items"]["item.misc.money"]);
  83. $money[1]-=$dialog[2];
  84. if ($money[1]>=0) {$b=1; if ($money[1]==0) unset($player["items"]["item.misc.money"]); else $player["items"]["item.misc.money"]=implode("|",$money);}
  85. }
  86. if (!$b) msg("<p>У вас недостаточно денег (надо ".$dialog[2]." монет)");
  87.  
  88. // повышаем +1
  89. $skills[$arr_skills[$dialog[1]]]+=1;
  90. if ($skilldown) $skills[$arr_skills[$skilldown]]-=1;
  91. $skills[4]-=1; // очки опыта
  92. $player["skills"]=implode("|",$skills);
  93. calcparam($login); // пересчитаем основные параметры
  94. $stmp="<p>".$arr_title[$dialog[1]].": +1";
  95. if ($skilldown) $stmp.="<br/>".$arr_title[$skilldown].": -1";
  96. msg($stmp);