Если очень хочется захватить какой-то редкий истребитель, а тот никак ...
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 86



 



Если очень хочется захватить какой-то редкий истребитель, а тот никак ...

Terran Conflict (X3TC) / Форум / Скрипты и моды для X3 Terran Conflict / Поиск кораблей в галактике с отображением морали пилотов

Поиск кораблей в галактике с отображением морали пилотов
(http://x3tc.net/x3_forum/?tid=922)
Автор: Алан
(11.09.2010 18:41:21)

Если очень хочется захватить какой-то редкий истребитель, а тот никак не сдается, имеет смысл сначала найти подобный корабль с самой низкой моралью пилота. Привожу текст скрипта, который я сделал для себя (в виде "как есть" и без комментариев - даже начинающий скриптописатель, к которым я причисляю и себя, разберется).
Сразу оговорюсь, что скрипт наверняка можно оптимизировать, сообщения выдавать на русском, подключить "горячую клавишу". Можно даже заранее сформировать список существующих в игре кораблей, и предлагать выбирать только из них (не включать в список для выбора Вотан и прочие корабли, которых нет в игре). Можно включать в поиск только захватываемые без абордажа классы кораблей (M5, M4, M3, M8, TS, TP). Все это могут сделать желающие, которых заинтересует эта тема. Может быть, я и сам займусь, только не в ближайшее время.

Только один комментарий:
 Код:
  1. $cr= read text: page=8551 id=50
 
Эта строка загружает в переменную $cr символ перевода строки. Используется файл  8551-L007.xml (из скрипта Vudu Pilot Info v2.0) - у вас его может и не быть. Наверняка можно сделать проще, но у меня во встроенном редакторе пока не получилось вбить \n или как-то еще. Делать свой текстовый ресурс пока не стал, да из-за одного символа перевода строки как-то и не рационально. Подскажите, пожалуйста, кто знает. Как только узнаю, отредактирую этот текст.

 Код:
  1. 001   if$type == null
  2. 002   |return null
  3. 003   end
  4. 004   $cr= read text: page=8551 id=50
  5. 005   $found=0
  6. 006   $text='Found: %s' + $cr
  7. 007   $race=Аргон
  8. 008   gosub checkrace
  9. 009   $race=Борон
  10. 010   gosub checkrace
  11. 011   $race=Сплит
  12. 012   gosub checkrace
  13. 013   $race=Паранид
  14. 014   gosub checkrace
  15. 015   $race=Телади
  16. 016   gosub checkrace
  17. 017   $race=Ксенон
  18. 018   gosub checkrace
  19. 019   $race=Хаак
  20. 020   gosub checkrace
  21. 021   $race=Пират
  22. 022   gosub checkrace
  23. 023   $race=Гонер
  24. 024   gosub checkrace
  25. 025   $race=Player
  26. 026   gosub checkrace
  27. 027   $race=АОГ
  28. 028   gosub checkrace
  29. 029   $race=Земляне
  30. 030   gosub checkrace
  31. 031   $race=Яки
  32. 032   gosub checkrace
  33. 033   $race=Неизвестно
  34. 034   gosub checkrace
  35. 035   $text=sprintf: fmt=$text, $found, null, null, null, null
  36. 036   *write to player logbook $text
  37. 037 @ =wait 200 ms
  38. 038   send incoming message $text to player: display it=[TRUE]
  39. 039   return null
  40. 040   
  41. 041   checkrace:
  42. 042   $ship.array= get ship array: of race $race class/type=$type
  43. 043   $n= size of array $ship.array
  44. 044   $count=0
  45. 045   while$n
  46. 046   |$ship=$ship.array[$count]
  47. 047   |inc $count=
  48. 048   |dec $n=
  49. 049   |$sector=$ship -> get sector
  50. 050   |$x=$sector -> get universe x index
  51. 051   |$y=$sector -> get universe y index
  52. 052   |$race=$ship -> get owner race
  53. 053   |$name=$ship -> get name
  54. 054   |$morale=$ship -> get pilot morale
  55. 055   |$temp=sprintf: fmt='(%s, %s)', $x, $y, null, null, null
  56. 056   |$msg=sprintf: fmt='%s %s, pilot morale %s, sector %s %s', $race, $name, $morale, $sector, $temp
  57. 057   |$text=$text + $msg + $cr
  58. 058   |inc $found=
  59. 059   end
  60. 060   endsub
 

Несколько слов по применению скрипта на практике. Можно поискать Хаакский истребитель с наиболее низкой моралью и попробовать захватить именно его. В моем случае захват получился без всяких проблем при морали пилота 13 (см. тут). У большинства мораль оказалась далеко за 20 - у многих даже 30. Проверял также на истребителях Яки, которые обычно сдаются не слишком часто - тактика также работает.
Однако не стоит надеяться захватить ряд кораблей, которые создаются в сюжетных миссиях (например, Фенриры в Альдрине, Эвр в Аргонском секторе M148 и т.д.). Насколько я смог понять, они не захватываются в принципе, независимо от морали пилота. Это уже ставится в Mission Director'е (флаг capturable), и как его наличие проверить в Script Editor, пока понять не удалось.
Буду рад принять любые поправки, уточнения.

дерево темы → Поиск кораблей в галактике с отображением морали пилотов Поиск кораблей в галактике с отображением морали пилотов »
Список игр