Новые бонусные характеристики и редактирование кораблей

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

    • Новые бонусные характеристики и редактирование кораблей

      Здравствуйте :) Интересует несколько вопросов:
      1. Знаю, что можно добавлять и менять характеристики корабля через БД, но можно ли прописать для кораблей функции, например такие как +1 планета (как за императора) или +10% к скорости строительсва...? И будут ли эти значения работать?
      2. Если такое возможно организовать, то второй вопрос - как добавить новые бонусные возможности, например к колонизатору, который прибыв на планету, расширяет ее поля, например на 10 единиц.

      И еще, пытался найти скрипт работы терраформера так как в vars даже намека нету на то, какие значения отвечают за добавление новых полей. По логике думаю, что в БД можно добавить структуру vars которая будет отвечать за бонус к количеству полей на планете, но как такое реализовать и что бы оно работало, мозгов не хватает.
      Надеюсь, кто то поможет советом, спасибо! :saint:
    • `bonusAttack`
      `bonusDefensive`
      `bonusShield`
      `bonusBuildTime`
      `bonusResearchTime`
      `bonusShipTime`
      `bonusDefensiveTime`
      `bonusResource`
      `bonusEnergy`
      `bonusResourceStorage`
      `bonusShipStorage`
      `bonusFlyTime`
      `bonusFleetSlots`
      `bonusPlanets`
      `bonusSpyPower`
      `bonusExpedition`
      `bonusGateCoolTime`
      `bonusMoreFound`
      `bonusAttackUnit`
      `bonusDefensiveUnit`
      `bonusShieldUnit`
      `bonusBuildTimeUnit`
      `bonusResearchTimeUnit`
      `bonusShipTimeUnit`
      `bonusDefensiveTimeUnit`
      `bonusResourceUnit`
      `bonusEnergyUnit`
      `bonusResourceStorageUnit`
      `bonusShipStorageUnit`
      `bonusFlyTimeUnit`
      `bonusFleetSlotsUnit`
      `bonusPlanetsUnit`
      `bonusSpyPowerUnit`
      `bonusExpeditionUnit`
      `bonusGateCoolTimeUnit`
      `bonusMoreFoundUnit`

      1.diese boni können in der uni1_vars eingestellt werden
      0.01 ist 1% bonus, 1 ist hundert prozent bonus (je stufe bzw einheit)

      beispiel baugeschwindigkeit.
      wenn man will das die metallmine pro stufe 10% mehr baugeschwindigkeit liefert, setzt man den wert von `bonusBuildTime`auf 0.1

      beispiel imperartor ist etwas anders hierzu muss man den wert für `bonusPlanets` setzten, 1 ist hier = +1 planet pro stufe oder einheit.


      2.(für bonus bei besiedelung)
      in includes\PlanetData.php findest du die definierten feldgrößen für die verschiedenen planetenpositionen

      in includes\classes\PlayerUtil.class.php findest du die funktion 'createPlanet'(zeile 223)
      in dieser funktion findest du die zeile (249)
      $maxFields = (int) floor($planetData[$dataIndex]['fields'] * $config->planet_factor);

      du kannst entweder in der mission includes\classes\missions\MissionCaseColonisation.class.php (zeile 77) ein parameter mehr übergeben für deinen bonus($USER['dein bonuselement'] oder $PLANET['dein bonuselement']) und die create planetfunktion erweitern
      oder
      du erweiterst die create planet funktion selbst, ohne ein wert zu übergeben
      in beiden fällen musst du $USER oder $PLANET als globale variablen defienieren, (unwichtig -> oder den wert direkt aus der db holen, anhand der userid, falls der prozess zb von einem cronjob/anderen user ausgeführt wird.)

      um auf das level bzw. die anzahl deiner neuen planetengröße verändernden elemente zuzugreifen.


      3.in der datei includes/generalfunctions.php findest du diese funktion(für grundsätzlichen felderbonus auch nach besiedelung)

      function CalculateMaxPlanetFields($planet)
      {
      global $resource;
      return $planet['field_max'] + ($planet[$resource[33]] * FIELDS_BY_TERRAFORMER) + ($planet[$resource[41]] * FIELDS_BY_MOONBASIS_LEVEL);
      }
      FIELDS_BY_TERRAFORMER wird in der datei includes\constants.php php definiert



      das ist die abstrakte form der erklärung, wenn das nicht reicht, nochmal nachfragen

      ps, du kannst deinen feldgrößenbonuns auch einfach nach der planetenerstellung hinzuaddieren.
    • Большое спасибо Вам за развернутый ответ!

      Попытался добавить к солнечным спутникам (как пример) -100% времени на строительство.
      Построил пару таких спутников ...
      Время в строительстве не уменьшилось. Я наверное, что то не так понимаю. Не могли бы Вы пояснить?





    • базовые не сложно изменить.. а вот дописать к примеру восстановление щитов в каждом раунде .. база уже не поможет одна так же нужны вмешательства и в код .. если хотите что бы корректно все работало одной базы мало и время чего спутников, или зданий, или флота ?


      к примеру тут кусочек кода (неполный) но сделан сразу массивом будет подхватывать все корабли мой код работает не много не так как в 2moons, так как я ее полностью переписываю, поэтому тут фрагмент примера

      if ( !empty ($PLANET['meflets'])){
      дальше тут пропускаю идет формирование массива
      ..................................................
      {
      $factor[$meflets['planet'][$id]['bonus'][0]] += $meflets['planet'][$id]['bonus'][1]; тут даем бонус по id это простой вариант и в дальнейшем если в корабле указать бонус он автоматом попадает сюда... массив который я пропустил и пару строк еще как раз формирует запрос и ответ
      }
      }

      вывод бонусов (можно создать свои) там где надо хоть отдельному кораблю
      foreach($result_logs as $varsRow) {
      $bonus[] = array(
      'id' => $varsRow['elementID'],
      'bonusAttack' => $varsRow['bonusAttack']*100,
      'bonusDefensive' => $varsRow['bonusDefensive']*100,
      'bonusShield' => $varsRow['bonusShield']*100,
      'bonusBuildTime' => $varsRow['bonusBuildTime']*100,
      'bonusResearchTime' => $varsRow['bonusResearchTime']*100,
      'bonusShipTime' => $varsRow['bonusShipTime']*100,
      'bonusDefensiveTime' => $varsRow['bonusDefensiveTime']*100,
      'bonusResource' => $varsRow['bonusResource']*100,
      'bonusEnergy' => $varsRow['bonusEnergy']*100,
      'bonusResourceStorage' => $varsRow['bonusResourceStorage']*100,
      'bonusShipStorage' => $varsRow['bonusShipStorage']*100,
      'bonusFlyTime' => $varsRow['bonusFlyTime']*100,
      'bonusFleetSlots' => $varsRow['bonusFleetSlots']*100,
      'bonusPlanets' => $varsRow['bonusPlanets']*100,
      );
      }
      и примерно таким образом на каждое можно написать свой бонус который будет работать как надо

      ставим условие ... если корабль построен то есть.... спутник == количество * умноженное на бонус который даем + фактор если нужен короче вариантов много смотря что Вам надо добиться

      по спутнику кстати у Вас отвечает в planet две ячейки

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

    • es funktioniert nicht mit schiffen und verteidigung, ich muss mal gucken, wahrscheinlich werden die beim erstellen des caches gar nicht mit eingerechnet, weiß grade auch nicht warum es bei denen nicht geht.
      wenn ich es weiß sag ich hier nochmal bescheid.