[MOD] Fast colonization (Быстрая колонизация)

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • [MOD] Fast colonization (Быстрая колонизация)

      Итак, друзья, сначала дисклеймер:
      сделано сие творения для меня и моих нужд, сделано потому что мне захотелось.Сделано на движке 1,7 версии, на 1,8 не делал и не буду за бесплатно. Выкладываю для ознакомления и с надеждой что кому то пригодится. Если Вам это не нужно, то просто пройдите мимо. Сделано все на русском и на другие языки переводите самостоятельно.

      Приступим :)

      Итак, что делает сей легкий мод - отправляет колонизатор по координатам по одному клику


      собственно скрин, больше просто скринить там нечего)

      Создаем файл class.ShowColoAjaxPage.php в директории /includes/pages/game

      PHP Source Code

      1. <?php
      2. require_once(ROOT_PATH . 'includes/classes/class.FleetFunctions.php');
      3. class ShowColoAjaxPage extends AbstractPage
      4. {
      5. public $returnData = array();
      6. public static $requireModule = 0;
      7. function __construct()
      8. {
      9. parent::__construct();
      10. $this->setWindow('ajax');
      11. }
      12. private function sendData($Code, $Message) {
      13. $this->returnData['code'] = $Code;
      14. $this->returnData['mess'] = $Message;
      15. $this->sendJSON($this->returnData);
      16. }
      17. public function show()
      18. {
      19. global $USER, $PLANET, $resource, $LNG, $CONF;
      20. $Usercolonizer = $PLANET[$resource[208]];
      21. $UserDeuterium = $PLANET['deuterium'];
      22. $galaxy = HTTP::_GP('galaxy', 0);
      23. $system = HTTP::_GP('system', 0);
      24. $planet = HTTP::_GP('planet', 0);
      25. $targetMission = HTTP::_GP('mission', 0);
      26. $activeSlots = FleetFunctions::GetCurrentFleets($USER['id']);
      27. $maxSlots = FleetFunctions::GetMaxFleetSlots($USER);
      28. $this->returnData['slots'] = $activeSlots;
      29. $this->returnData['ship'][208] = $Usercolonizer;
      30. if (IsVacationMode($USER)) {
      31. $this->sendData(620, $LNG['fa_vacation_mode_current']);
      32. }
      33. if ($maxSlots <= $activeSlots) {
      34. $this->sendData(612, $LNG['fa_no_more_slots']);
      35. }
      36. switch($targetMission)
      37. {
      38. case 7:
      39. $colonizer = (int) $_REQUEST['ship'][208];
      40. $colonizer = min($colonizer, $Usercolonizer);
      41. if(empty($colonizer)) {
      42. $this->sendData(611, "нет свободных колонизаторов");
      43. }
      44. $fleetArray = array(208 => $colonizer);
      45. break;
      46. }
      47. $fleetArray = array_filter($fleetArray);
      48. $FleetRoom = FleetFunctions::GetFleetRoom($fleetArray) * (1 + $USER['factor']['ShipStorage']); // размер трюма
      49. $SpeedFactor = FleetFunctions::GetGameSpeedFactor();
      50. $Distance = FleetFunctions::GetTargetDistance(array($PLANET['galaxy'], $PLANET['system'], $PLANET['planet']), array($galaxy, $system , $planet));
      51. $SpeedAllMin = FleetFunctions::GetFleetMaxSpeed($fleetArray, $USER);
      52. for($i = 10; $i > 0; $i--)
      53. {
      54. $Duration = FleetFunctions::GetMissionDuration(max(1, $i), $SpeedAllMin, $Distance, $SpeedFactor, $USER);
      55. $consumption = FleetFunctions::GetFleetConsumption($fleetArray, $Duration, $Distance, $SpeedAllMin, $USER, $SpeedFactor);
      56. if($consumption < $FleetRoom)
      57. break;
      58. }
      59. $Duration = $Duration * (1 - $USER['factor']['FlyTime']);
      60. $UserDeuterium -= $consumption;
      61. if($UserDeuterium < 0) {
      62. $this->sendData(613, $LNG['fa_not_enough_fuel']);
      63. }
      64. if($consumption > $FleetRoom) {
      65. $this->sendData(613, $LNG['fa_no_fleetroom']);
      66. }
      67. if(connection_aborted())
      68. exit();
      69. $this->returnData['slots']++;
      70. $fleetRessource = array(
      71. 901 => 0,
      72. 902 => 0,
      73. 903 => 0,
      74. );
      75. $fleetStartTime = $Duration + TIMESTAMP;
      76. $fleetStayTime = $fleetStartTime;
      77. $fleetEndTime = $fleetStayTime + $Duration;
      78. $shipID = array_keys($fleetArray);
      79. FleetFunctions::sendFleet($fleetArray, 7, $USER['id'], $PLANET['id'], $PLANET['galaxy'], $PLANET['system'], $PLANET['planet'], $PLANET['planet_type'],
      80. 0, 0, $galaxy , $system, $planet, 1, $fleetRessource, $fleetStartTime, $fleetStayTime, $fleetEndTime,
      81. 0, 0, $USER['ally_id']);
      82. $this->sendData(600, $LNG['fa_sending']." ".array_sum($fleetArray)." ". $LNG['tech'][$shipID[0]] ." ".$LNG['gl_to']." ".$galaxy .":".$system.":".$planet." ...");
      83. }
      84. }
      85. ?>
      Display All



      сохраняем, и открываем файл galaxy.js из директории scripts/game/ и вставляем в любом месте функцию:

      JavaScript Source Code: galaxy.js

      1. function colo(missionID, galaxy, system, planet, shipData) {
      2. var shipDetail = decodeURIComponent($.param({"ship": shipData}));
      3. $.getJSON("game.php?page=coloAjax&ajax=1&mission="+missionID+"&galaxy="+galaxy+"&system="+system+"&planet="+planet+"&"+shipDetail, function(data){
      4. $('#slots').text(data.slots);
      5. $('#colonizer').text(number_format(data.ship[208]));
      6. var statustable = $('#fleetstatusrow');
      7. var messages = statustable.find("~tr");
      8. if(messages.length == MaxFleetSetting) {
      9. console.log(messages.get(MaxFleetSetting - 1));
      10. messages.filter(':last').remove();
      11. }
      12. var element = $('<td />').attr('colspan', 8).attr('class', data.code == 600 ? "success" : "error").text(data.mess).wrap('<tr />').parent();
      13. statustable.removeAttr('style').after(element);
      14. });
      15. }
      Display All
      сохраняем, открываем page.galaxy.default.tpl из директории styles/templates/game/
      и ищем нумерацию планет к примеру, ну или где Вам удобней и вставляем и оформляем как Вам нужно ссылку подобного вида

      HTML Source Code

      1. <a href="javascript:colo(7,{$galaxy},{$system},{$planet},{$coloShips|json|escape:'html'});" title="Колонизировать" >{$LNG.type_mission.7}</a>
      открываем class.ShowGalaxyPage.php по пути /includes/pages/game/
      ищем строку $this->tplObj->assign_vars(array( и после нее добавляем 'coloShips'=> array(208 => "1"),


      забираем и пользуемся :)
      Кто к нам с чем зачем, тот от того и того! :D

      The post was edited 2 times, last by aurum79 ().

    • thanks for sharing..but i get this error

      Issue: Undefined index: coloShips
      File: /includes/libs/Smarty/sysplugins/smarty_internal_templatebase.php(252) : eval()'d code (Line 1117)
    • wrath wrote:

      thanks for sharing..but i get this error

      Issue: Undefined index: coloShips
      File: /includes/libs/Smarty/sysplugins/smarty_internal_templatebase.php(252) : eval()'d code (Line 1117)
      спасибо, забыл строчку добавить. Обновил, пользуйтесь)
      Кто к нам с чем зачем, тот от того и того! :D
    • Why not simply using the fleetAjax page and adapt code ? would have been done faster
    • Thisishowwedoit wrote:

      Why not simply using the fleetAjax page and adapt code ? would have been done faster
      сделал так, мне больше нравится когда функции разнесены по разным файлам, в случае дебагинга гораздо легче искать ошибку в одном файле на 100 строк, чем в сборнике функций где строк может быть от 1000
      Кто к нам с чем зачем, тот от того и того! :D
    • Everyone hes choice, no problem with that, even if for php it says you on wich line the error is :P so the size of the file doesnt really matter, good work.

      i will not try it as unneeded for me but good job