Elite Games - Свобода среди звезд!
.
  » [СКРИПТЫ] Вторжение | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал X2: The Threat: «[СКРИПТЫ] Вторжение»
Zeron-MK7
 315 EGP


Рейтинг канала: 8(773)
Репутация: 38
Сообщения: 473
Откуда: Latvia
Зарегистрирован: 14.09.2008
Скрипты генерирует в случайных секторов случайную групу кораблей.
Пираты:
======
Каждые 10 минут в случайный сектор генерирует случайную группу кораблей из 1 - 5 кораблей M3, M4, M5, TS класса.
Каждые 18 минут в случайном Пиратском секторе генерируется случайная группа из 1 - 5 кораблей M3, M4, M5, TS класса - и они летят из Пиратского сектора в случайный сектор через врата.
Ксеноны:
=======
Каждые 15 минут в случайный сектор генерирует случайную группу кораблей из 1 - 3 кораблей M3, M4, M5 класса.
Каждые 20 минут в случайном Ксенонском секторе генерируется случайная группа из 1 - 3 кораблей M3, M4, M5 класса - и они летят из Ксенонского сектора в случайный сектор через врата.
Хааки:
=======
Каждый 1 час в случайном секторе генерируется случайный кластер корабля Хааков.

Важно - скрипты будут работать только в том случае, если в вашей карте галактики есть сектор в координатах: x = 1, y = 3 (местоположение сектора Аргон Прайм).

Установка:
В архиве есть папки - Xenon, Pirates, Khaak - вы можете выбрать, какие вражеские вторжения вы хотите больше или скопировать все - просто скопируйте необходимые скрипты из папки в каталог игры в папку scripts.

Очень важно - на всякий случай, прежде чем устанавливать скрипты, сделайте резервную копию вашей сохраненной игры (если у вас есть такая).
Если вы сохраните игру с установленными скриптами, вы больше не сможете удалить скрипты из вашей сохраненной игры - даже если вы удаляете скрипты из игры - ваша сохраненная игра после времени будет зависает из-за отсутствии скриптов.

Invasion V1.rar
 Описание:
В архиве есть папки - Xenon, Pirates, Khaak
 Имя файла:  Invasion V1.rar
 Размер файла:  16.07 KB
 Скачано:  118 раз(а)

_________________
Веб-сайт http://thexgalaxy.ucoz.com/

Последний раз редактировалось: Zeron-MK7 (14:56 03-12-2017), всего редактировалось 1 раз
    Добавлено: 14:48 03-12-2017   
Non
 800 EGP


Модератор
Рейтинг канала: 6(353)
Репутация: 237
Сообщения: 800

Зарегистрирован: 27.06.2006
Поглядел я твои скрипты. Напомнило мне мои попытки писать скрипты в далёком 2006-ом. Хы... Намудрил короче. Улыбка

Отвязываемся от x = 1, y = 3

 Самый простой вариант   (кликните здесь для просмотра)
Код:
while 1

  $sec = [PLAYERSHIP]->get sector
  $sector = find a random sector: startsector=$sec, jumps=null, owner=null
  $race = $sector -> get owner race
 
  if $race != {Pirates} AND $race != {Khaak} AND $race != {Unknown} AND $race != {Xenon}
    break
  end
 
end

... $sector ...


 Намудрение   (кликните здесь для просмотра)
Маленький скрипт, получающий все доступные на текущей карте сектора в массив и сохраняющий этот массив для последующего использования. Сэкономит игре ресурсов.

 Получаем все сектора на карте   (кликните здесь для просмотра)
Код:
$all.sectors = get global variable: name= 'all.sectors'

if not $all.sectors
   
  $all.sectors = array alloc: size=0
 
  $x = 20
  while $x
    dec $x =
    $y = 15
    while $y
      dec $y =
      $sector = get sector from universe index: x=$x, y=$y
      if $sector
        append $sector to array $all.sectors
      end
    end
  end
 
  set global variable: name= 'all.sectors' value= $all.sectors

end

return $all.sectors

Теперь можно запустить этот скрипт из другого скрипта, чтобы получить в любой нужный момент все сектора на текущей карте. Улыбка

 Выбираем случайный сектор   (кликните здесь для просмотра)
Код:
$all.sectors = [THIS] -> call script 'non.get.all.sectors':
$all.sectors.size = size of array $all.sectors

while 1
 
  $random = random value from zero to $all.sectors.size - 1
  $sector = $all.sectors[$random]
  $race = $sector -> get owner race
 
  if $race != {Pirates} AND $race != {Khaak} AND $race != {Unknown} AND $race != {Xenon}
    break
  end
 
end

* Используем случайный не Пиратский, не Хаакский, не Неизвестный и не Ксенонский сектор для своих задумок.



Генерируем корабли красиво

При генерации нескольких кораблей нужно использовать упрощающие код уловки, мне очень понравился подход, замеченный в скриптах Grey Wolf'a. Улыбка

 Подход   (кликните здесь для просмотра)
Код:
* Создаем два массива для перебора
* Один содержит количество каждого корабля, другой корабли
* Количество кораблей случайно
* М5-ых будет от 1 до 4, M4-ых от 1 до 3, М3-их или 1 или не будет.

$m5c = random value from 2 to 5 - 1
$m4c = random value from 2 to 4 - 1
$m3c = random value from 1 to 2 - 1

$ships.amount = array alloc: size=3
$ships.class = array alloc: size=3

$ships.amount[0] = $m5c
$ships.amount[1] = $m4c
$ships.amount[2] = $m3c
$ships.class[0] = {Xenon N}
$ships.class[1] = {Xenon M}
$ships.class[2] = {Xenon L}

* Перебираем классы кораблей в цикле

$current.class = 3

while $current.class

  dec $current.class =

  $current.amount = $ships.amount[$current.class]
  $current.ship = $ships.class[$current.class]

* Перебираем количество кораблей в цикле, их создастся столько, сколько укажешь вверху

  while $current.amount
    dec $current.amount =
    $x = random value from -40000 to 40000 - 1
    $y = random value from -20000 to 20000 - 1
    $z = random value from -40000 to 40000 - 1
   
    $ship = create ship: type=$current.ship owner={Xenon} addto=$sector x=$x y=$y z=$z
    $ship -> add default items to ship
    @ START = $ship -> call script '!fight.invasion' : the sector to invade=$random.sector

  end

end


Заботимся о пользователях своих скриптов

Вместо вешающих игру вечных циклов, застревающих в сохранёнках лучше используй AL Engine. Смотри мою болванку. Улыбка
Самое большое преимущество - можно вырубить в любой момент прямо в игре, если не нравится что происходит. Или если что-то вдруг начало происходить не так как ты задумал. Подозрение.
Так что если быть в меру аккуратным, можно даже тестить на текущей сохранёнке. Подмигиваю

Этот скрипт регистрирует другой скрипт как плагин в AL Engine.

 al.plugin.khaak.agression   (кликните здесь для просмотра)
Код:
al engine: register script='al.khaak.aggression'
return null

А это другой скрипт, который будет запускаться игрой периодически, как настроишь.

 al.khaak.agression   (кликните здесь для просмотра)
Код:
* Попытка получить уже существующие параметры AL плагина по глобальной переменной
$plugin.Vars = get global variable: name=$plugin.ID

if not $plugin.Vars
  * Создание массива параметров AL плагина
  $plugin.Vars = array alloc: size=2
  set global variable: name=$plugin.ID value=$plugin.Vars
 
  * Версия скрипта, как по мне пофиг что ставить
  $plugin.Vars[0] = 0
 
  * Запущен ли плагин изначально, или нужно включить его в настройках вручную
  $plugin.Vars[1] = [FALSE]
end

if $plugin.Event == 'init' OR $plugin.Event == 'reinit'
  * При первом запуске или загрузке игры устанавливает текстовое описание, что будет видно в настройках
  $desc = sprintf: pageid=2023 textid=300, null, null, null, null, null
  al engine: set plugin $plugin.ID description to $desc
 
  * Устанавливает таймер (как часто будет происходить событие скрипта, например создание вражеских кораблей в случайном секторе)
  al engine: set plugin $plugin.ID timer interval to 120 s
 
else if $plugin.Event == 'isenabled'
  * Возвращает статус включен/выключен каждый раз, когда открываются настройки AL плагинов в игре
  $isenabled = $plugin.Vars[1]
  return $isenabled
 
else if $plugin.Event == 'start'
  * Устанавливает статус "Включено" в параметрах плагина
  $plugin.Vars[1] = [TRUE]
 
else if $plugin.Event == 'stop'
  * Устанавливает статус "Выключено" в параметрах плагина
  $plugin.Vars[1] = [FALSE]
 
else if $plugin.Event == 'timer'
  * Когда время таймера подходит, проверяет включен ли плагин в настройках, и если включен - запускает твоё событие
  $plugin.Enabled = $plugin.Vars[1]
 
  if $plugin.Enabled
    * Проверяет время игры
    $pltime = playing time
    * Каждые полчаса добавляет по 1 единице Хаакской агрессии
    $agrlevel = $pltime / 1800 + 50
   
    * Устанавливает агрессию в 100, если получаемое значение больше 99.
    skip if $agrlevel < 100
      $agrlevel = 100
    set Kha'ak aggression level to $agrlevel
  else
    * Если плагин не включен, устанавливает агрессию в 0 (Хааки перестают прыгать)
    set Kha'ak aggression level to 0
  end
 
end
return null


 Болванка для желающих как можно быстрее что-то сделать   (кликните здесь для просмотра)
Код:
$plugin.Vars = get global variable: name=$plugin.ID

if not $plugin.Vars
  $plugin.Vars = array alloc: size=2
  set global variable: name=$plugin.ID value=$plugin.Vars
  $plugin.Vars[0] = 0
 
  * Запущен ли плагин изначально, или нужно включить его в настройках вручную
  $plugin.Vars[1] = [FALSE]
end

if $plugin.Event == 'init' OR $plugin.Event == 'reinit'
  * Где искать текст, который будет показываться в настройках
  $desc = sprintf: pageid=2023 textid=300, null, null, null, null, null
  al engine: set plugin $plugin.ID description to $desc
 
  * Таймер (интвервал происхождения твоего события в секундах)
  al engine: set plugin $plugin.ID timer interval to 120 s
 
else if $plugin.Event == 'isenabled'
  $isenabled = $plugin.Vars[1]
  return $isenabled
 
else if $plugin.Event == 'start'
  $plugin.Vars[1] = [TRUE]
 
else if $plugin.Event == 'stop'
  $plugin.Vars[1] = [FALSE]
 
else if $plugin.Event == 'timer'
  $plugin.Enabled = $plugin.Vars[1]
 
  if $plugin.Enabled
    * <<< Сюда пихать свой код, который будет происходить если плагин включен в настройках и таймер посчитал
  end
 
end
return null


Надеюсь что-то окажется полезным. Улыбка

Приложил архив со скриптами и комментариями, с подсветкой в браузере читается явно легче, чем здесь.

x2_scripts_educational.7z
 Описание:
 Имя файла:  x2_scripts_educational.7z
 Размер файла:  5.68 KB
 Скачано:  113 раз(а)


Последний раз редактировалось: Non (04:53 04-12-2017), всего редактировалось 1 раз
    Добавлено: 02:45 04-12-2017   
Zeron-MK7
 315 EGP


Рейтинг канала: 8(773)
Репутация: 38
Сообщения: 473
Откуда: Latvia
Зарегистрирован: 14.09.2008
Я в скриптах понимаю не очень много поэтому смотрю на скрипты другых авторов как на примери и по кускам делаю свои скрипты Ламер .
Твои заметки очень помогут Супер! , теперь придется все мои скрипты переписать Арбайтен. .
_________________
Веб-сайт http://thexgalaxy.ucoz.com/
    Добавлено: 18:35 04-12-2017   
inoplanet
 10 EGP

Репутация: 0
Сообщения: 1

Зарегистрирован: 15.07.2019
Zeron-MK7, есть ли свежие переписанные скрипты?
    Добавлено: 14:04 15-07-2019   
Zeron-MK7
 315 EGP


Рейтинг канала: 8(773)
Репутация: 38
Сообщения: 473
Откуда: Latvia
Зарегистрирован: 14.09.2008
inoplanet :
есть ли свежие переписанные скрипты?

Нету, сожалению вряд ли у меня будет время чтобы скрипты переписать Расстроен .
_________________
Веб-сайт http://thexgalaxy.ucoz.com/
    Добавлено: 18:46 28-07-2019   
Канал X2: The Threat: «[СКРИПТЫ] Вторжение»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: с удовольствием поставлю на свой Фалкон пулемет Максим, и хана всему Ксенону. (мечтал Radick)

  » [СКРИПТЫ] Вторжение | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18