Базовое руководство по скриптам движка Storm

Корсары ГПК, Корсары КС

Скрипты на движке "Storm"
Аватара пользователя

Майор
Сообщения: 8
Зарегистрирован: 28 дек 2017, 20:51
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Базовое руководство по скриптам движка Storm

Сообщение Майор » 28 дек 2017, 20:58

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



Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 28 дек 2017, 21:21

Майор писал(а):
28 дек 2017, 20:58
Такой назрел вопрос, можно ли как-то изменить расположение камеры кораблей, потому что у некоторых кораблей она находится где-то наверху.
Эта проблема наблюдается, в основном, на широкоформатных мониторах 16:9. Если поставить соотношение 4:3, то такого не будет.

Аватара пользователя

Майор
Сообщения: 8
Зарегистрирован: 28 дек 2017, 20:51
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Базовое руководство по скриптам движка Storm

Сообщение Майор » 28 дек 2017, 23:52

LEOPARD писал(а):
28 дек 2017, 21:21
Эта проблема наблюдается, в основном, на широкоформатных мониторах 16:9. Если поставить соотношение 4:3, то такого не будет.
А при сохранении соотношения 16:9 можно как-то данную проблему исправить?

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 28 дек 2017, 23:53

Майор писал(а):
28 дек 2017, 23:52
А при сохранении соотношения 16:9 можно как-то данную проблему исправить?
Переработать модель корабля и опустить камеру ниже.


Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 29 дек 2017, 09:30

Капитан Джек воробей писал(а):
29 дек 2017, 09:18
Ну пожалуйста сделай в мод сабельку Я же не мододел как ты, нет таких навыков.
Ты же хвастался на весь форум, что у тебя есть своя "супер сборка". Значит навыки присутствуют?)

Аватара пользователя

Korsar1234
Сообщения: 57
Зарегистрирован: 12 ноя 2017, 07:05
Благодарил (а): 2 раза

Базовое руководство по скриптам движка Storm

Сообщение Korsar1234 » 29 дек 2017, 09:53

А что за сборка, Капитан?


Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 29 дек 2017, 19:52

Капитан Джек воробей писал(а):
29 дек 2017, 19:51
Можно будет если что загрузить к тебе на сайт свою сборку как доделаю?
Легко)
Я же тебе говорил, создавай тему и наполняй её.

Аватара пользователя

Korsar1234
Сообщения: 57
Зарегистрирован: 12 ноя 2017, 07:05
Благодарил (а): 2 раза

Базовое руководство по скриптам движка Storm

Сообщение Korsar1234 » 31 дек 2017, 17:45

Есть вопрос. Где изменить расположение кораблей своей эскадры, или же расстояние между ними на боевке?

Аватара пользователя

Korsar1234
Сообщения: 57
Зарегистрирован: 12 ноя 2017, 07:05
Благодарил (а): 2 раза

Базовое руководство по скриптам движка Storm

Сообщение Korsar1234 » 17 янв 2018, 05:18

Rasteador писал(а):
04 дек 2017, 23:40
Код
Rasteador, не мог бы ты помочь, ,пожалуйста? В каком файле находится цена найма матросов? А так же скрипт зарплаты.

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 17 янв 2018, 11:01

Korsar1234 писал(а):
17 янв 2018, 05:18
В каком файле находится цена найма матросов?
Файл \scripts\Crew.c, функция int GetCrewPriceForTavern(string sColony).
Korsar1234 писал(а):
17 янв 2018, 05:18
А так же скрипт зарплаты.
Аналогично, файл \scripts\Crew.c. Функция int GetSalaryForShip(ref chref) - расчет базового оклада команды корабля.
Функция void Partition_SetValue(string state) - расчет дележа добычи. Доли команды настраивается в файле PartitionSettings.txt.
Love and respect

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 21 янв 2018, 01:51

Обновил ссылку на рандомный генератор бермудилок для кораблей в этой теме [Корсары] Готовый код (scripts)
Теперь он работает адекватно и очень шикарно :)

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 21 янв 2018, 12:52

Ребят помогите пак кораблей(без модов) на New Abilities перенести, весь день мучаюсь, не выходит, на ГПК 1.2 12 даже поставить не могу, что то с program доделать что ли нужно хз, вроде и копипастил и редактировал файлы-толку 0.. Не хочет запускаться игра.

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 21 янв 2018, 20:26

Timoff102 писал(а):
21 янв 2018, 12:52
Ребят помогите пак кораблей(без модов) на New Abilities перенести, весь день мучаюсь, не выходит, на ГПК 1.2 12 даже поставить не могу, что то с program доделать что ли нужно хз, вроде и копипастил и редактировал файлы-толку 0.. Не хочет запускаться игра.
Ты напиши порядок своих действий. Что и из чего копировал, как и куда вставлял?
После выхода патча на CSP 1.2, я напишу несколько видео-уроков, но это будет не скоро.

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 22 янв 2018, 13:18

Korsar1234 писал(а):
07 дек 2017, 17:21
2. Возможна ли замена ЗП на долю добычи? ЗП отсутствует, есть только доля, которая выдается раз в месяц.
В случае невыдачи,и отсутствия добычи резко падает мораль, и лояльность офицеров.
3. Хотелось бы, чтобы перк "Спасение на шлюпке" был прописан у всех офицеров изначально. Но шанс того, что компаньон спасается, зависит от того, как был потоплен корабль - абордаж - 0,1 ; пушечный залп - 0,7 ; брандер - 1
2))) можно == делал себе в модаддон на ККС\SDv1.5.2 (пираты ток на добыче, доли менял... и кк в ИСТОРИИ/вкнижках прописано;) ) == вернул зарплату! нерентабельно))) из-за баланса игры (дефолт) - доход (расход на команду) от разбоя оч маленкий (ну на тестах ~ месяц-2 игры и бессмертность всех своих и все сдаютса! те - без расходов гг!) == те надо серьозно менять баланс "економик" -те перелопачивать скрипт/функшн основателно! (может и вернусь когда-нидь, когда займусь экономикой модаддона)
3))) Ты представляш где перки прописаны и кк раздаютса? нет - иши! и пиши псевдокод хотяб... и подставляй скрипт... и if( в игре не прокатит ) проси редактировать знаюших;)))

в шторме можно изобразить почти любые фантазии если детально понять кк их вписать в логику кода! (напр Я (ЯЯЯ неграмотный!))) когдато изобразил спасение на шлюпке ГГ - плыл к компаньону и менялся с ним - недожал ибо проблемы вылезали по мере их решений... и откатил взад - эфект впечатлил и даже забыл скрин сделать когда на баркасе плыл среди фонтанчиков от ядер)

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 22 янв 2018, 14:47

LEOPARD писал(а):
21 янв 2018, 20:26
Ты напиши порядок своих действий. Что и из чего копировал, как и куда вставлял?
После выхода патча на CSP 1.2, я напишу несколько видео-уроков, но это будет не скоро.
Вначале ставлю чистую ГПК 1.2 12, затем на нее New Abilities накатываю – проверяю, все работает. Потом из пака кораблей папку Resourse копирую в папку с игрой, а из папки Program аналогично переношу файлы ships.h , ships_init , ShipsUtilites , BattleInterface. Так же пробовал из этих файлов что то корректировать, что то удалять, уже не помню, но в один момент запустилось и даже заработало, но были глюки с интерфейсом и при выходе на глобалку вылетала.

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 22 янв 2018, 14:54

Timoff102 писал(а):
22 янв 2018, 14:47
Потом из пака кораблей папку Resourse копирую в папку с игрой, а из папки Program аналогично переношу файлы ships.h , ships_init , ShipsUtilites , BattleInterface.
Ууууу) Так не пойдет :ne_ne_ne:
Ты думаешь скопипастил целиковые файлы и все?) Это кропотливый труд. Нужно почти каждую строку кода из файла в файл переносить + соблюдать порядок и иерархию в нем. И это не только в одном файле, а в еще +5 штук, вроде :)
В общем, если есть нескончаемое терпение + время, подожди немного, я закончу с патчем 1.2 и сделаю видео-урок по переносу кораблей из мода в мод.

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 22 янв 2018, 15:05

уважаемной Rasteador!
прочол справку (руководство) и ешо немного понял в скрипте))) НО! "теряюс в догадках и остаюс в недоумении")))

чем отличаются - rand - Rand - drand - irand ==!?)))

напр. почему... irand = drand(9); if(irand == 3) ...
а не просто... if(rand(9) == 3) ...

напр квест официанки в таверне - кк-то надо было проверить чо-то и подряд кликал диалог нанадцать раз и не

выпадал квест! а написал вместо drand(х) rand(х) и сработало бес проблем - те шанс вышэ? почему-то

заодно === чем отличны - ok - Ok - bOk =!? )))

и ешо == можноль в одной функции применить 2 разных масива? (((у Мене НЕ получилось... в разных case или в разных

for/if (?)))
string model[ ??? ]; и затем model[5];... и model[10];...

скриплю интуитивно и стараюс не нарушать логику скрипта-дефолт (((музыкант может быть неграмотен а Я нет!?)))


Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 22 янв 2018, 15:30

усё идёт своим чередом ;))) просто хочу уточнить... кк это по-руски... синтахиз чшоль... )))

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 22 янв 2018, 16:34

Вобщем перенес пак из 40 кораблей, покопался в коде и удалось запустить игру и потестить минут 30, корабли новые плавают и вылетов нет. Но одна проблема, не отображается часть интерфейса ГГ и нет кораблей на верфи! Лео подскажи будь добр, какие комманды за это отвечают, что то затёр видать..

Отправлено спустя 22 минуты 54 секунды:
Проблему с верфью решил, но почему то 12фунтовые пушки у всех отображает..

Отправлено спустя 55 секунд:
когда в коде меняю на 8, игра не запускается

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 22 янв 2018, 17:25

Timoff102 писал(а):
22 янв 2018, 16:58
Но одна проблема, не отображается часть интерфейса ГГ и нет кораблей на верфи! Лео подскажи будь добр, какие комманды за это отвечают, что то затёр видать..
Ну во первых, я не телепат, чтобы понять конкретно, что ты делаешь. Мне нужно видеть, то, что ты делаешь и видеть, каков результат, а так же видеть, результат ошибок.
И на всякий случай http://devmods.ru/rules#5-3

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 22 янв 2018, 17:37

Изображение

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 22 янв 2018, 17:40

Timoff102, я вижу, что тут нет интерфейса) А что ты проделал с файлами?
Повторю, простое копирование скриптов с заменой не решит твою хотелку. Каждый корабль нужно переносить отдельно.

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 23 янв 2018, 01:35

LEOPARD писал(а):
22 янв 2018, 17:40
Timoff102, я вижу, что тут нет интерфейса) А что ты проделал с файлами?
Повторю, простое копирование скриптов с заменой не решит твою хотелку. Каждый корабль нужно переносить отдельно.
Вроде подружил, осталось потестить)

Отправлено спустя 30 секунд:
с 103-мя кораблями

Отправлено спустя 4 часа 5 минут 43 секунды:
Все нормально вроде, но есть одно НО, когда вмешиваешься в уже идущий бой, напр. пираты vs французы, то при переходе на боевую раздается 2-3хкратный писк и остаются пираты, а французов нет, т.е. всегда враг остается, а союзники исчезают)) и подлагивания идут, кароч хз уже, но если в бой не лезть вроде играть можно..

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 23 янв 2018, 10:05

kacatik писал(а):
22 янв 2018, 15:05
чем отличаются - rand - Rand - drand - irand
rand и Rand - ничем.
drand - генерирует случайное число (также, как и rand), но запоминает его и при последующем вызове выводит то же самое число до тех пор, пока не наступит новый игровой день. Шансы не выше. Просто эта функция - что-то типа защиты от сливания через save/load или через многократный перезапуск диалога.
irand - это не функция. Это просто название переменной.
kacatik писал(а):
22 янв 2018, 15:05
чем отличны - ok - Ok - bOk
Это все тоже обычные переменные. Чем они отличаются - это уже в зависимости от того, где и как они используются. Название переменной здесь не имеет значения. Переменные с одинаковым названием могут выполнять разную роль в разных функциях, какое название ей придумает разработчик - так и будет.
kacatik писал(а):
22 янв 2018, 15:05
и ешо == можноль в одной функции применить 2 разных масива? (((у Мене НЕ получилось... в разных case или в разных

for/if (?)))
string model[ ??? ]; и затем model[5];... и model[10];...
Размерность массива задается при объявлении переменной. Если размерность установлена, то изменить ее уже нельзя. Только если объявить новую переменную с новым массивом.

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

Код: Выделить всё

int arraySize = 10; // Размер массива по умолчанию

switch(sizeName)
{
	case "big":
		arraySize = 15;
	break;
	
	case "small":
		arraySize = 5;
	break;
	
	case "medium":
		arraySize = 10;
	break;
}

string model[arraySize]; // Объявляем переменную и устанавливаем размерность массива, которая будет равна переменной arraySize
Отправлено спустя 16 минут 43 секунды:
Для if/else аналогично

Код: Выделить всё

int arraySize = 10; // Размер массива по умолчанию
 
if(sizeName == "big") arraySize = 15;

string model[arraySize]; // Объявляем переменную и устанавливаем размерность массива, которая будет равна переменной arraySize
Love and respect

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 23 янв 2018, 10:25

Timoff102 писал(а):
23 янв 2018, 05:41
но есть одно НО, когда вмешиваешься в уже идущий бой, напр. пираты vs французы, то при переходе на боевую раздается 2-3хкратный писк и остаются пираты, а французов нет, т.е. всегда враг остается, а союзники исчезают)) и подлагивания идут, кароч хз уже, но если в бой не лезть вроде играть можно..
И ты думаешь, что это нормально? :-)
Это только начало. Дальше, возможно, будет крашить на каждом шагу.

Отправлено спустя 3 минуты 29 секунд:
В общем, лучше подожди чуток, пока я не сделаю видос по перенесу кораблей)
Ну или пытайся, набирайся опыта :)

Аватара пользователя

Korsar1234
Сообщения: 57
Зарегистрирован: 12 ноя 2017, 07:05
Благодарил (а): 2 раза

Базовое руководство по скриптам движка Storm

Сообщение Korsar1234 » 23 янв 2018, 11:45

Где изменить частоту появления офицеров в таверне?

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 23 янв 2018, 20:25

LEOPARD писал(а):
23 янв 2018, 10:28
В общем, лучше подожди чуток, пока я не сделаю видос по перенесу кораблей)
Ну или пытайся, набирайся опыта
Ну набираюсь как могу;-) А пока за неск часов игры словил баг при абордаже пинаса -оказался в море, тестю дальше)

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 24 янв 2018, 10:46

Korsar1234 писал(а):
23 янв 2018, 11:45
Где изменить частоту появления офицеров в таверне?
file (ККС152) --> LAi_utilites.c\Loc_ai\program
строки гдето 1000++? //комент читай...;
там код~~: iCitizensQuantity = rand(8)-6;
меняй на = rand((4)-2); //например ? те шанс болшэ вроди... если rand((8)-4); то будет до 4штук за раз появлятса
((вроди так! Rasteador поправит))

Отправлено спустя 16 минут 23 секунды:
ssory!!! = rand(4)-2; ... rand(8)-4; (((!!!)))

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 25 янв 2018, 10:19

Ребят подскажите как уменьшить дамаг бомбам, напр как в шип-паке, покопался, чет не нашел.

Отправлено спустя 3 минуты 53 секунды:
LEOPARD, будь добр, как ты сделал что б порты военные корабли охраняли? Я выставил 2 корабля, но скок играю, выше двух шлюпов "охранники" не попадались)))

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 25 янв 2018, 11:09

Файл PROGRAM\store\initGoods.c
Там найдешь.
Timoff102 писал(а):
25 янв 2018, 10:22
будь добр, как ты сделал что б порты военные корабли охраняли?
Это скрипт Rasteador'а.
Timoff102 писал(а):
25 янв 2018, 10:22
Я выставил 2 корабля, но скок играю, выше двух шлюпов "охранники" не попадались)))
Как и куда ты "выставил"? :-)

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 25 янв 2018, 14:16

С бомбами разобрался, а нс охранников в islandships прописывал 2 в defenderscount. Теперь в портах по 2 корабля стоит :-)

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 25 янв 2018, 14:35

Timoff102 писал(а):
25 янв 2018, 14:16
С бомбами разобрался, а нс охранников в islandships прописывал 2 в defenderscount.
Все правильно.
Timoff102 писал(а):
25 янв 2018, 14:16
Теперь в портах по 2 корабля стоит
Они там рандомятся. У меня бывало по 9 кораблей в порту стояли.

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 25 янв 2018, 14:44

LEOPARD писал(а):
25 янв 2018, 14:35
Они там рандомятся. У меня бывало по 9 кораблей в порту стояли
хз, наиграл часа 3, стабильно 2 корабля, но класс низкий шлюпы, флейты..

Аватара пользователя

Автор темы
LEOPARD
Сообщения: 1422
Зарегистрирован: 18 сен 2016, 19:48
Благодарил (а): 145 раз
Поблагодарили: 372 раза

Базовое руководство по скриптам движка Storm

Сообщение LEOPARD » 25 янв 2018, 14:50

Timoff102 писал(а):
25 янв 2018, 14:44
хз, наиграл часа 3, стабильно 2 корабля, но класс низкий шлюпы, флейты..
Ну ты же корабли перенес пачкой) А нужно ручками, по одному :)

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 25 янв 2018, 14:52

LEOPARD писал(а):
25 янв 2018, 14:50
Ну ты же корабли перенес пачкой) А нужно ручками, по одному
Ага, ржи ржи))

Отправлено спустя 2 минуты 46 секунд:
Я кстати не только корабли перенес, но и 30 героев, тоже пачкой :-)

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 25 янв 2018, 23:25

Timoff102 писал(а):
25 янв 2018, 14:16
а нс охранников в islandships прописывал 2 в defenderscount. Теперь в портах по 2 корабля стоит
Timoff102 писал(а):
25 янв 2018, 14:44
хз, наиграл часа 3, стабильно 2 корабля, но класс низкий шлюпы, флейты..
Полагаю, что есть проблема со скриптом генерации кораблей. В шип-паке Леопарда я делал такую логику: сначала генерируется первая партия кораблей - это охрана форта (у них свои корабли, более высокого класса). Затем второй партией генерируются обычные кораблики - торговцы и мелкий патруль. Суть в том, что их кол-во независимое друг от друга. Охрана форта есть всегда (за исключением, когда форт разрушен), а прочие корабли могут как появиться в n-ом кол-ве, так их может и не быть совсем. В твоем скрипте, как я думаю, код генерации охраны полностью блокирует генерацию обычных кораблей, поэтому их и нет в принципе никогда. Так быть не должно.

Еще мне пришлось дорабатывать ИИ этих самых охранных кораблей, чтобы они более-менее корректно реагировали на врагов и оборонялись.
Love and respect

Аватара пользователя

Timoff102
Сообщения: 12
Зарегистрирован: 21 янв 2018, 09:22
Благодарил (а): 3 раза

Базовое руководство по скриптам движка Storm

Сообщение Timoff102 » 26 янв 2018, 12:13

Rasteador писал(а):
25 янв 2018, 23:25
Еще мне пришлось дорабатывать ИИ этих самых охранных кораблей, чтобы они более-менее корректно реагировали на врагов и оборонялись.
Да кстати, работает у меня этот скрипт через одно место, они частенько вообще стоят на месте и не реагируют на врага, и да спавн разный-может появится например плот+фрегат, т.корвет+щебека, и тп. Короче играется вроде пока и хрен с ним, потому что я не знаю где это исправить)

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 08 фев 2018, 18:02

очень стрёмный вопрос! если в лом то прошу прочтений прошений! мучаю неделю!!!
кк нейтрализовать абордаж в ФОРТе!? if( isDEAD(pchar) ) ==?
у мене в модаддоне смерти нет и реинкорнации!
те -- при реинкорнации заблокированы F2, save + "продолжение"
в seadog.c & reaction_function.c игнорирует!
есть-ли кардинальный рецепт!? что реално фиксит форт-абордаж шоб нейтралазовать\отменить!?

Отправлено спустя 4 минуты 32 секунды:
те... при переходе в локу города всё в норме! == доступно=фурычит! == те... чо отвечает за разблокировку интерфеса!?

Отправлено спустя 2 минуты 46 секунд:
те -- при переходе по квесту абордаж!
а при переносе ГГ в другу локашн == блок интерфейса остаетса!

Отправлено спустя 1 минуту 44 секунды:
if( LAi_isDead(pchar) )

Отправлено спустя 13 минут 15 секунд:
F2 разблокироваетса == CreateAbordageEnvironment();
а кк == "save" & "продолжить" по "esc"!?
=== !? ;)))

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 08 фев 2018, 20:00

kacatik писал(а):
08 фев 2018, 18:24
кк нейтрализовать абордаж в ФОРТе!? if( isDEAD(pchar) ) ==?
у мене в модаддоне смерти нет и реинкорнации!
Что имеется в виду под "нейтрализовать"? В чем заключается проблема?

Отправлено спустя 2 минуты 35 секунд:
kacatik писал(а):
08 фев 2018, 18:24
у мене в модаддоне смерти нет и реинкорнации!
Насчет этого пункта подробнее, пожалуйста. Реинкарнации в игре и так нет.
Love and respect

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 09 фев 2018, 00:28

звиняюс! у меня в модаддоне реинкорнашн Е! и если реинк (те LAi_isDead(pchar)) из форта/локашн то блок по ESC = save + "продолжить" ( блок F2 снимаю CreateAbordageEnvironment(); - пишу в seadogs.c ) >>> реинкорнашн в Get_My_Cabin() !!! (лока кораблей в необитайку) тож видимо стрёмный вариант)))
проблема! = снять блок по ESC ! == игнорирует если просто пишу соответну функшн типа b... = false; или = true;! те видимо при заходе в абордаж-форт гдето чото отсекает кардинально! не могу понять чтоб перехватить или откатить при незавершонном абордаже (при переходе битвы в город всё разблокироваетса)
понимаю - сложно! но Я (((ЯЯЯ))) даже не понимаю логику-технику процесса! чтоб кк-то обхитрить/обойти движок (если это не код, кторый не могу опознать)))
(((конечно это вопрос к AlexusB... но где он? и за такие вопросы меня сразу забанят на их сайтах! где Я и был давно забанен... конечно снова зарегитса под новым ником могу но тщетно видимо при их отношэнии к аддоншикам)))

Отправлено спустя 11 часов 17 минут 11 секунд:
изменил скипт для ПГГ - чтоб они реинкарнировались и снова жили в игре
не знаю рабочий-ли скрипт!? на первый взгляд как!?
проверить муторно ибо в игре сработает за кадром... и снова встреча возможна будет случайна...

сначала мой скрип

Код: Выделить всё

//выжил или нет - DA! ;)
    if (sti(chr.PGGAi.IsPGG)) // && rand(100) > 50)
    {
  PGG_DebugLog(chr.id + " ВЫЖИЛ :)))"); // уходит из игры
  chr.PGGAi.Rebirth = true;
  if (CheckAttribute(chr, "PGGAi.location.town.back"))
  {
   chr.PGGAi.location.town = chr.PGGAi.location.town.back;
  }
  if (chr.PGGAi.location.town == "None")
  {
   chr.PGGAi.location.town = PGG_FindRandomTownByNation(sti(chr.nation));
  }
  DeleteAttribute(chr, "PGGAi.Task");
  DeleteAttribute(chr, "PGGAi.LockService");
  return;
    }
    else
    {
  if (IsOfficer(chr) || IsCompanion(chr))
  {
   PGG_DebugLog(chr.id + " ушол но обешял вернутьса ;)"); // уходит из игры
   Log_Info(GetFullName(chr) + " ушол из жизни но обешял вернуться :)");
   chr.PGGAi.IsPGG = true;
   chr.RebirthPhantom = true;
   chr.PGGAi.location.town = PGG_FindRandomTownByNation(sti(chr.nation));
   chr.Dialog.FileName = "PGG_Dialog.c";
   chr.Dialog.CurrentNode = "Second Time";
   PGG_ChangeRelation2MainCharacter(chr, -20);
   LAi_SetCurHPMax(chr);
   if (CheckAttribute(chr, "Ship")) DeleteAttribute(chr, "Ship");
   chr.Ship.Type = SHIP_NOTUSED;    
   return; 
тепер оригинал

Код: Выделить всё

  //выжил или нет
    if (sti(chr.PGGAi.IsPGG) && rand(100) > 50)
    {
  PGG_DebugLog(chr.id + " уходит из игры :(");
    }
    else
    {
  if (IsOfficer(chr) || IsCompanion(chr))
  {
   PGG_DebugLog(chr.id + " уходит из игры :(((");
  }
  else
  {
   chr.PGGAi.Rebirth = true;
   PGG_DebugLog(chr.id + " выжил :)))");
   if (CheckAttribute(chr, "PGGAi.location.town.back"))
   {
    chr.PGGAi.location.town = chr.PGGAi.location.town.back;
   }
   if (chr.PGGAi.location.town == "None")
   {
    chr.PGGAi.location.town = PGG_FindRandomTownByNation(sti(chr.nation));
   }
   DeleteAttribute(chr, "PGGAi.Task");
   DeleteAttribute(chr, "PGGAi.LockService");
   return;
Последний раз редактировалось LEOPARD 09 фев 2018, 12:05, всего редактировалось 1 раз.
Причина: Подправил код скриптов

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 09 фев 2018, 12:00

kacatik писал(а):
09 фев 2018, 00:28
даже не понимаю логику-технику процесса!
После нажатия на кнопку F2 идет вызов функции void ProcessInterfaceKey(). Дальше в ней идут различные проверки (условия в if. если какое-либо условие "истинно", то срабатывает return; и прекращается дальнейшее выполнение скрипта) и, в конце, если все проверки успешно пройдены, то вызывается функция LaunchSelectMenu();, которая уже и открывает F2-интерфейс.

То что ты снимаешь блокировку функцией CreateAbordageEnvironment(); - это не очень хорошо. Она для этого не предназначена. В ProcessInterfaceKey() можно заметить, что есть проверка на bAbordageStarted - это значит, что когда bAbordageStarted == true (т.е. установлен флаг "Абордаж начат"), то идет return. Так что вместо CreateAbordageEnvironment(); достаточно просто прописать bAbordageStarted = false; и блокировка должна быть снята.

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

Теперь, что насчет блокировки "Сохранения" в ESC. В этом случае, для проверки возможности сэйва, используется функция bool CheckSaveGameEnabled(). Как я описал выше, здесь также нужно посмотреть, какие в ней прописаны условия, которые могут блокировать, и уже отслеживать их.
Love and respect

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 09 фев 2018, 12:08

kacatik писал(а):
09 фев 2018, 11:52
изменил скипт для ПГГ - чтоб они реинкарнировались и снова жили в игре
не знаю рабочий-ли скрипт!? на первый взгляд как!?
проверить муторно ибо в игре сработает за кадром... и снова встреча возможна будет случайна...
Что ты изменил? Ты хочешь сделать, чтобы ПГГ реинкарнировались всегда?
Love and respect

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 09 фев 2018, 12:21

буду пробовать все эти проверки b...=true (или=false, по ситуации))) во всех моих вызовах воскресений ГГ! в других ситуациях (смерт=воскресение) всё ОК! вот токо форт завис!
в ESC еще "продолжить игру" блокировано... ну, пойду опять "всё гениально перепишу"!))) доложу кк если получитса!

дада! ПГГ бессмертны тож должны быть если ГГ бессмертен)))

Отправлено спустя 2 минуты 37 секунд:
вопшэм в моей игре смерти нет! ну не должно быть! Е смертельно ранение)))

Отправлено спустя 3 минуты 45 секунд:
в детстве понравилась логика в расказе Шэкли - вот это и внедряю)))

Отправлено спустя 8 минут 52 секунды:
возможно надо было написать установку при новой игре ГГ=minHP... и квесты по ситуации а я через GamOver() воскресаю...

Аватара пользователя

kacatik
Сообщения: 9
Зарегистрирован: 24 янв 2017, 16:08
Благодарил (а): 5 раз

Базовое руководство по скриптам движка Storm

Сообщение kacatik » 11 фев 2018, 17:19

для воскресений в форте 3 files:
LAi_events.c
void LAi_Character_Dead_Process(aref chr)
if(locType != BRDLT_FORT) PostEvent("LAi_event_GameOver", 5000, "s", "boarding");
else PostEvent("LAi_event_GameOver", 5000, "s", "fortshturm"); ///R
seadogs.c
case "fortshturm":
if(CheckAttribute(mc, "IsMushketer")) SetMainCharacterToMushketer("", false);
RemoveAllCharacterItems(mc, 0); //Удалить все обычные предметы из инвентаря
sTemp1 = GetCityNameByIsland(GetCharacterCurrentIslandId(mc));
if (CheckAttribute(mc, "GenQuestFort.StartAttack" )) DeleteAttribute(mc, "GenQuestFort.StartAttack");
Go2LocationAfterAbordage()
IsFort = false;
LAi_boarding_process = false;
break;
reaction_functions.c
void Survive_In_Fort_Go2Sea() //////=9
{
int iDay;
ref ch;
string sTemp, sTemp1, sTemp2;
DelEventHandler(EVENT_END_VIDEO,"Survive_In_Sea_Go2Land");
PChar.nation = GetBaseHeroNation(); //? sti(pchar.nation);
//получим пещеру
pchar.curIslandId = worldMap.island; // fix
sTemp = worldMap.island;
sTemp2 = SelectQuestShoreLocationFromSea(sTemp);
setCharacterShipLocation(pchar, sTemp2);
if(sTemp != "Mein")
{
sTemp = GetArealByCityName(GetCityNameByIsland(sTemp));
if (sTemp == "Cuba2") sTemp = "Cuba1";
if (sTemp == "Hispaniola2") sTemp = "Hispaniola1";
aref aPlace, aPlace_2;
makearef(aPlace, NullCharacter.TravelMap.Islands.(sTemp).Treasure);
int iQty = GetAttributesNum(aPlace)-1;
aPlace_2 = GetAttributeN(aPlace, rand(iQty));
pchar.locationId = GetAttributeName(aPlace_2); //Id целевой пещеры
}
else
{///////
sTemp = GetArealByCityName(sTemp1); //rCity);
sTemp = IslandGetLocationFromType(sTemp, "cave"); //(string _island, string _type)
pchar.locationId = GetAttributeName(sTemp); //Id целевой пещеры
}
ch = &locations[FindLocation(pchar.locationId)];
pchar.label = GetConvertStr(ch.id.label, "LocLables.txt"); //тип подземелья для диалогов
switch (pchar.label)
{
case "пещера": sTemp = "пещера!"; break;
case "грот": sTemp = "грот!"; break;
case "подземелье": sTemp = "подземелье!"; break;
}
pchar.location = pchar.locationId;
SetCrewQuantity(pchar, GetMinCrewQuantity(pchar));
if (GetCompanionQuantity(PChar) > 1)
{ //noka tak a nozzibem ybiqim
for(i = 0; i < COMPANION_MAX; i++)
{
int iTemp = GetCompanionIndex(PChar, i);
if(iTemp > 0)
{
sld = GetCharacter(iTemp);
SetCrewQuantity(sld, GetMinCrewQuantity(sld));
}
}//установили признак наличия кораблей в эскадре.
}
Survive_Continue();
iDay = 5+rand(17);
bQuestCheckProcessFreeze = true;
WaitDate("",0,0,iDay, rand(10), 1); // прошло время
bQuestCheckProcessFreeze = false;
AddSimpleRumourTip("Эх, капитан"+ GetSexPhrase("","...ша") +", угораздило же Тебя! И ведь не знаешь, печалиться или радоваться - жив"+ GetSexPhrase(" остался","а осталась") +"... А не лезь на рожон! Хе-хе.", 60, 4, "habitue", "");
SetLaunchFrameFormParam("Прошло " + iDay + " дней." + NewStr() +
"" + sTemp + "" + NewStr() +
"корабл стоит в " + GetConvertStr(sTemp2, "LocLables.txt") + "." + NewStr() +
". . . . . . ." + NewStr() +
"НУ ВОТ И ВОСКРЕСЕНИЕ" + NewStr() +
"О чудо! жив"+ GetSexPhrase("","а") +"!" + NewStr() +
"смерти нет! живём вечно!" + NewStr() +
"!но краток наш век! не ВЕК!","Reload_To_Location", 0.1, 7.0);
if (pchar.location == "Guadeloupe_Cave") SetLaunchFrameReloadLocationParam(pchar.location, "goto", "goto"+(rand(11)+8), "");
else SetLaunchFrameReloadLocationParam(pchar.location, "goto", "goto"+(rand(3)+1), "");
LaunchFrameForm();
RefreshLandTime(); //?
Statistic_AddValue(pchar, "SurviveOgane", 1);
PlaySound("MUSIC\011.ogg"); //203.mp3");
}
Но прёт реальна проблема!
после смерти=воскресеньа(уМене) в Town после захвата isFort и после WaitDate(многодней) локашн(town) пуста и губер ждет смешеньа!
те смерт=воскресенье(уМене) в town после isfort в LAi_event.c/seadogs.c определяетса кк "town"! НО с заначками "штурм форта"! те надо добавить case"townfort" в seadogs.c (?мне) и чото разблокировать...
= кк записать "локашн после форта" те "Town"! те другой вариант смерти в городе для LAi_events.c / if (loadedLocation.type == "town") ???

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 11 фев 2018, 17:33

kacatik, используй переменные, устанавливай атрибуты персонажу. Например, когда начинается осада города, ставь pchar.questTemp.citySiege = "1";. При гибели в городе, делай проверку на этот атрибут через if(CheckAttribute(pchar, "questTemp.citySiege")), чтобы вызывался именно "осадный" городской процесс. Когда осада закончена, удаляй этот атрибут: DeleteAttribute(pchar, "questTemp.citySiege");, чтобы при последующих гибелях в городе вызывался обычный скрипт, а не осадный.
Love and respect

Аватара пользователя

Rasteador
Сообщения: 30
Зарегистрирован: 13 ноя 2017, 21:28
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Базовое руководство по скриптам движка Storm

Сообщение Rasteador » 11 фев 2018, 18:42

 ! Сообщение от: Rasteador
Почистил тему от оффтопа
Love and respect

Аватара пользователя

Korsar1234
Сообщения: 57
Зарегистрирован: 12 ноя 2017, 07:05
Благодарил (а): 2 раза

Базовое руководство по скриптам движка Storm

Сообщение Korsar1234 » 13 мар 2018, 18:12

Подскажите пожалуйста,где находятся :
1.Формула расчета стоимости ремонта
2.Формула расчёта стоимости торговой лицензии
3.Расчёт повреждения корабля в шторме

Яндекс.Метрика