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

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

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

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

Сообщение AntiHok » 28 мар 2018, 17:29

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

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

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

Сообщение Incognito » 21 апр 2018, 17:22

Изменяя скрипты нужно ли новую игру начинать?

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

Автор темы

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

Сообщение LEOPARD » 21 апр 2018, 18:16

Incognito писал(а):
21 апр 2018, 17:22
Изменяя скрипты нужно ли новую игру начинать?
Смотря какие скрипты изменять.

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

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

Сообщение Incognito » 21 апр 2018, 19:43

LEOPARD писал(а):
21 апр 2018, 18:16
Смотря какие скрипты изменять
протяженность дня на глобалке, камера в море на широких мониторах

Отправлено спустя 1 минуту 25 секунд:
изменение ремонта корабля

Отправлено спустя 33 секунды:
И ещё вопрос, с какого уровня открываются корабли 3 класса?

Отправлено спустя 22 минуты :
и где меняется скорость корабля на глобалке? :-)

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

Автор темы

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

Сообщение LEOPARD » 21 апр 2018, 22:28

Incognito, наличия новой игры требую скрипты, которые инитятся со старта НИ, и которые жестко прописаны для каких либо условий.
В основном это шаблонные скрипты с суфиксом "init".

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

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

Сообщение xsenus » 11 май 2018, 22:18

Rasteador писал(а):
21 дек 2017, 12:08
Диалоги нужно доработать. В файле pgg_dialog.c заменить все фразы/слова мужского рода, относящиеся к ПГГ, на функцию NPCharSexPhrase(NPChar, "для man", "для woman"). Затем в функцию вносятся фразы, которые будут выбираться в зависимости от пола NPC. "для man" - это мужская фраза, "для woman" - женская.
В шипс паке диалогов нет ( вернее они не записываются после разговора с нпц.), что делать?

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

Автор темы

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

Сообщение LEOPARD » 11 май 2018, 23:40

xsenus писал(а):
11 май 2018, 22:18
В шипс паке диалогов нет ( вернее они не записываются после разговора с нпц.), что делать?
Если нет нужных файлов, то их можно добавлять из оригинальных скриптов. Найти скрипты можно в соседних темах.

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

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

Сообщение xsenus » 12 май 2018, 00:08

Правильно ли я понял, что можно взять диалоги и другие компоненты папки PROGRAMS ,с ранних версий игры, где эта папка открыта? Например, мне нужно отредактировать диалог с Йоко Диаз, я беру этот диалог с версии 1.2.8 и вставляю в шипс пак. Или мне надо сделать аналог уникально офицера, я беру диалог Йоко и дублирую файл, после переписываю под нпц, которго я уже поставил в заданном месте. Так ли это?

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

Автор темы

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

Сообщение LEOPARD » 12 май 2018, 00:27

xsenus писал(а):
12 май 2018, 00:08
Правильно ли я понял, что можно взять диалоги и другие компоненты папки PROGRAMS ,с ранних версий игры, где эта папка открыта?
LEOPARD писал(а):
11 май 2018, 23:40
Найти скрипты можно в соседних темах.
xsenus писал(а):
12 май 2018, 00:08
я беру этот диалог с версии 1.2.8 и вставляю в шипс пак.
Что это за версия 1.2.8 :sh_ok: ? Я такую не встречал ни разу.
Чтобы тебе отредактировать диалог Йоко Диаз, тебе нужно: из соседней темы скачать оригинальный пак скриптов из 1.3.2, выдернуть нужный файл с диалогами, закинуть его в CSP 1.2 по аналогичному пути, отредактировать, радоваться изменениям, внесенные тобою.

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

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

Сообщение xsenus » 12 май 2018, 00:45

Спасибо
LEOPARD писал(а):
12 май 2018, 00:27
Что это за версия 1.2.8 ? Я такую не встречал ни разу.
Имел ввиду версию 1.2.12 , точно не посмотрел, вот и написал такое.


Пользуясь случаем твоего присутствия, задам еще один вопрос. Можно ли стянуть модельки и текстуры из старых игр (zanzarah\пираты онлайн\Sid Meier's Pirates) и вставить их в корсары. Не правильно выразился. Стянуть то риперами можно, а вот получиться ли их вставить корректно и без проблем?

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

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

Сообщение Rasteador » 24 май 2018, 21:52

xsenus писал(а):
12 май 2018, 00:08
Правильно ли я понял, что можно взять диалоги и другие компоненты папки PROGRAMS ,с ранних версий игры, где эта папка открыта?
Я бы не рекомендовал целиком переносить скриптовые файлы из старой версии в более новую. В 1.2.12 могут отсутствовать определенные функции, необходимые для 1.3.2.
LEOPARD писал(а):
12 май 2018, 00:27
Чтобы тебе отредактировать диалог Йоко Диаз, тебе нужно: из соседней темы скачать оригинальный пак скриптов из 1.3.2, выдернуть нужный файл с диалогами, закинуть его в CSP 1.2 по аналогичному пути, отредактировать, радоваться изменениям, внесенные тобою.
Можно полностью распаковать весь архив со скриптами в папку с игрой, а затем поверх установить CSP. Тогда
все нужные файлы всегда будут под рукой. Если человек только-только начинает изучение кода, то так будет удобнее (особенно, когда используется поиск по файлам в Notepad++).
xsenus писал(а):
12 май 2018, 00:45
Пользуясь случаем твоего присутствия, задам еще один вопрос. Можно ли стянуть модельки и текстуры из старых игр (zanzarah\пираты онлайн\Sid Meier's Pirates) и вставить их в корсары. Не правильно выразился. Стянуть то риперами можно, а вот получиться ли их вставить корректно и без проблем?
Файлы моделей и текстур взаимозаменяемы в играх на движке Storm. Пираты Онлайн (Voyage Century Online) также построены на базе этого движка (на Storm версии 2.0, если быть точнее; грубо говоря, на той-же версии движка, что и Корсары 2). К слову, это единственная игра на Storm'e, которая не принадлежит серии "Корсаров" :)

Из Пиратов Онлайн можно вытаскивать модели для Корсаров. Какая-то дополнительная переконвертация им не нужна, т.к. форматы файлов одни и те же. Но есть пара нюансов:

1. Свободно использовать можно только статичные модели. То есть персонажей и животных перенести не получится, поскольку, хоть игры и на одном движке, в Пиратах внесли некоторые изменения в систему внутриигрового анимирования. Насколько я помню, там кости у анимированных моделей вынесены отдельно от них в файлы формата *.bon, в то время, как в Корсарах кости уже сразу "вшиты" в модели. Конечно, с этим можно повозиться, полностью с нуля выстраивая моделям скелет и, соответственно, новую анимацию, но если уж и есть такой навык, то лучше под эти цели выбрать модели по-качественные из других игр, т.к. в Пиратах они весьма угловатые.

2. Модели в Пиратах более крупные, чем в Корсарах. На самом деле, это весьма несущественная проблема: чтобы отмасштабировать модель до нужного размера, я использовал утилиту TOOL - там размер моделей изменяется с помощью одного ползунка. Масштаб уменьшается на N-ое кол-во пунктов (подбирается опытным путем, чтобы потом модель в игре выглядела корректно - не была слишком огромной, относительно других, но и не была также слишком мелкой) и экспортируется.

Насчет переноса кораблей ничего не могу подсказать, т.к. не пытался это делать. Но, полагаю, там тоже возникнут определенные трудности. Из этой игры я брал некоторые предметы (оружие, головные уборы) и элементы окружения (растения, модели рудных жил) для своего проекта "New Abilities". Разработчики ад-дона "Проклятые Судьбой" также позаимствовали из Пиратов некоторые модели. Видел скриншоты, где в Sea Dogs Absolum переносили локации (выглядит весьма посредственно, опять таки из-за низкополигональных моделей и текстур малого разрешения).

По поводу игр на других движках (по типу Sid Meier's Pirates): используется то же правило статичных моделей, как и в Пиратах, но за одним исключением - при переносе моделей, их нужно будет конвертировать в *.gm формат программой Maya 5.0 (и соответствующим плагином для экспорта), предварительно обработав.
Love and respect

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

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

Сообщение bierhofff » 25 май 2018, 19:23

Здравствуйте , джентльмены . Вопрос по мачтам мановара . Как сделать чтобы их не так сильно сбивали ? Я в курсе что у мановаров это слабое место но не до такой же степени . просто захватил мановар и решил протестировать его после того как сводил его на бермуды к Алексусу . Вообщем зачастую с первого же залпа даже люггер с 12 орудиями по 16 фунтов ломает мне одну или две мачты сразу ( причем без разницы - хоть носом стой к нему хоть бортом ). Как выправить такую беду ? Может мне мановар китайский попался ?а то реально неприкольно. Помогите если кто знает как . Версия 1.3.2 AT DEV

Версию с CSP 1.2 буду ставить в отдельную папку. Заранее благодарю :uch_tiv:

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

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

Сообщение Hokkins » 29 июн 2018, 13:04

Leo, привет! Увидел в твоем шип папе, который кстати крутой, одну фичу! При начале игры, вместо трёх типов ГГ (Корсар, авантюрист и торговец) их пять! Такой вопрос в каких файлах это приписывается?:) если это не секрет:))

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

Автор темы

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

Сообщение LEOPARD » 29 июн 2018, 15:18

Hokkins,
Файл: PROGRAM\characters\RPGUtilite.c

Функция:

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

void initNewMainCharacter()
И все, что ниже неё. Дальше сам разберешься.

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

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

Сообщение Lalkanik » 03 июл 2018, 04:12

У меня такой вопрос. Я вообщем то немного ломанул игру и теперь НПС обзываются и посылаюст далеко и надолго. Диалог я удалил. Где сам скрипт ума не приложу. Просьба помочь. :ups:

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

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

Сообщение Hokkins » 17 июл 2018, 14:42

Ребят такая проблема! Хочу прописать типу персонажа Торговцу, что бы в инвентаре при начале игры была французская торговая лицензия! Все прописал (смотреть скрин) Но при начале игры получается что срок лицензии бесконечный! Как приписать к этой лицензии действие срока?
 ! Сообщение от: LEOPARD
rules#5-3
Изображение
вот собственно скриншот кода, если конечно я все правильно залил:)
Можно было бы и 40-секундный ролик глянуть (как правильно заливать).

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

Автор темы

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

Сообщение LEOPARD » 18 июл 2018, 09:53

Hokkins, как точно прописать не подскажу, но копать стоит отсюда:
RelationAgent_dialog.c строка 193
QuestsUtilite.c строка 1814

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

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

Сообщение Hokkins » 18 июл 2018, 10:39

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

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

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

Сообщение Hokkins » 25 июл 2018, 11:11

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

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2

Сообщение Betrezen » 21 авг 2018, 17:04

У меня вопрос как изменить кол-во товаров в порте???Прост пипец даже торговать нечем с такими кораблями...

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

Автор темы

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2

Сообщение LEOPARD » 21 авг 2018, 17:20

Betrezen писал(а):
21 авг 2018, 17:04
У меня вопрос как изменить кол-во товаров в порте???
Вот тебе мануал Базовое руководство по скриптам движка Storm изучай, изменяй.
Betrezen писал(а):
21 авг 2018, 17:04
Прост пипец даже торговать нечем с такими кораблями...
Ну-ну)

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2

Сообщение Airelemental » 21 авг 2018, 18:45

О, тут скрипты обсуждают. А есть такая возможность подправить где-то формулу зависимости очей уровня и очей навыков от ИНТ? К примеру на 5инт надо 30 очей для поднятия уровня и 30+5 для получения очка навыка. Я бы их зделал одинаковыми, типа получил 1 ур, значит получил 1 очко навыка. А то щас парадоксально выходит, персонаж с инт10 быстрее набирает уровни, но на 40-х ур у него будет меньше очей навыков чем у персонажа с инт5. :du_ma_et:
П.С. может есть уже готовый микромод на такое?
 ! Сообщение от: LEOPARD
Пост выше Базовое руководство по скриптам движка Storm
Изучаем, меняем, тестируем.
На заказ никто и ничего делать не будет. И с вопросами по скриптам в ту же тему.

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

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

Сообщение AntiHok » 23 авг 2018, 06:47

Доброе утро, подскажите пожалуйста, где можно посмотреть параметры Traders hunter on map

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

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

Сообщение AntiHok » 25 авг 2018, 11:27

AntiHok писал(а):
23 авг 2018, 06:47
где можно посмотреть параметры Traders hunter on map
Интересует направление, в каких файлах стоит копать? Нужны параметры энкаунтера "TraderHunter". Джентльмены удачи, что возникают при квестах от ростовщика, магазина или доставка пассажира. Заранее благодарен за ответ..

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

Автор темы

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

Сообщение LEOPARD » 26 авг 2018, 00:17

AntiHok, самый простой способ найти эту функцию - "поиск по файлам из папки".
Изображение
Notepad ++

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

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

Сообщение Captain Beltrop » 31 авг 2018, 21:39

Всем здрям! Ребят, очень нужна ваша помощь. Я вот прописал один квест в 1.3.2, всё работает идеально: и нападение корабля на ГГ, и передача предмета, и генерация НПС. Но вот запись в СЖ не работает вот ни в какую! Код смотрите ниже:
case "Exit1": // Решил в другой кейс перенести на всякий случай))
SetQuestHeader("Rabota_quest"); // Объявил заголовок квеста
AddQuestRecord("Rabota_quest", "1"); // Добавил первую запись
DialogExit(); // Собственно, выход из диалога
NextDiag.CurrentNode = "RabotaNoDone1"; // Корректируем диалог
break; // Выход.
Запись в СЖ выглядит так:
#QUEST Rabota_quest
Тарам-парам
#TEXT 1
Парам-пампам.
Не удивляйтесь, это я для теста сделал)))
Прошу, помогите мне, пожалуйста, я уже две недели бьюсь над одной лишь записью. Если не больше. И не надо мне говорить мол посмотри примеры в скриптах и всё такое. Смотрел я их. Вот хоть убейте, а запись не делается. Точнее, звук записи есть, а в самом СЖ пустая строка со знаком вопроса.

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

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

Сообщение sc2 » 09 сен 2018, 17:43

Есть небольшая модификация "BloodStoryMod".
о BloodStoryMod
Даже название громкое дал: BloodStoryMod. А вот, собственно, список изменений в игре:
- Отредактированы некоторые диалоги в линейке Блада;
- Отредактированы характеристики Питта, Хагторпа, Дайка и Огла;
- Добавлен Волверстон;
- После окончания линейки в офицеры идут все персонажи.
http://forum.bestgamer.ru/showthread.php?t=4642&page=6
Блад после одноименной линейки заполучает не только превосходный корабль, но и 5 офицеров.
Хочу добавить Арабеллу Бишоп (модель Мэри) в этот коллектив. В конце фильма она присоединилась к капитану. В конце книги они тоже вместе. Можно сделать её отдельно(2), или заменить на нее какого либо офицера(1) (одного из трех новых добавляемых модификацией).
Имеется идея заменить даму убегающую от испанского насильника на Арабеллу и подправить ей диалог.

1. Заменить на Арабеллу нового офицера.
один из новых офицеров Волверстон(BloodStoryMod)
\PROGRAM\quests\reaction_functions.c
//==============//Волверстон//==============
sld = GetCharacter(NPC_GenerateCharacter("Volverston", "officer_3", "man", "man", 12, ENGLAND, -1,

false));
sld.name = "Волверстон";
sld.lastname = "";
sld.Dialog.CurrentNode = "First time";
sld.dialog.filename = "Quest\CapBloodLine\Bishop.c";
sld.greeting = "Gr_Officer";
sTemp = GetNationNameByType(ENGLAND) + "_citizens";
LAi_group_MoveCharacter(sld, sTemp);
LAi_SetCitizenType(sld);
SetRandSPECIAL(sld);
InitStartParam(sld);
sld.rank = 10;
sld.OfficerWantToGo.DontGo = true; //не пытаться уйти
sld.loyality = MAX_LOYALITY;
// P I E A T R S
SetSPECIAL(sld, 10, 7, 9, 8, 8, 4, 8);
// SetSPECIAL(sld, 5,9,7,5,10,7,4);
//int _fl, f, fh, p, fr
SetSelfSkill(sld, 20, 30, 45, 30, 40);//
//int ld, cr, ac, cn, sl, re, gr, de, sn
SetShipSkill(sld, 45, 30, 15, 15, 10, 40, 45, 30, 20)//;
SetCharacterPerk(sld, "AdvancedDefense");
SetCharacterPerk(sld, "CriticalHit");
SetCharacterPerk(sld, "Grus");
SetCharacterPerk(sld, "Rush");
SetCharacterPerk(sld, "Tireless");
SetCharacterPerk(sld, "HardHitter");
SetCharacterPerk(sld, "IronWill");
SetCharacterPerk(sld, "LongRangeGrappling");
SetCharacterPerk(sld, "GrapplingProfessional");
SetEnergyToCharacter(sld);
SetFantomHP(sld);
LAi_SetImmortal(sld, true);
ChangeCharacterAddressGroup(sld, "BridgeTown_Plantation", "officers", "houseF2_1");
Модель Мэри.
heroFace_44 {517}
heroModel_44 {PGG_Mary}
animation_44 {Milenace_ab}
(HeroDescribe.txt)

Как заменить Волверстона на Мэри?
Благодарю за внимание к сообщению.

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение xsenus » 18 июн 2019, 16:48

Заменил цены в ships_init , всем кораблям, а в игре они не поменялись. Может помимо "price" есть еще какие-то параметры цен?
Изображение
Изображение

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

Автор темы

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение LEOPARD » 18 июн 2019, 17:56

LEOPARD писал(а):
24 дек 2017, 20:59
Добавлена формула стоимости кораблей по ТТХ от Матвея aka Mett (разработчик КТБ)
> учитываются абсолютно все параметры: трюм, HP, SP, команда, скорость и т.д.
Отправлено спустя 4 минуты 32 секунды:
От себя: фиксированные цены на корабли меня не устраивали в принципе. Это не есть логичность, когда идентичные серии кораблей с разными комплектациями стоят одинаково.
По этому было решено сделать формулу, по которой (в сумме) рассчитывается цена.
Где её искать? Не помню уже.
Но выглядит она примерно так:

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

//Mett: --> формула стоимости кораблей по ТТХ
int GetShipPriceByTTH(int iType, ref rChar)
{
	ref rRealShip = GetRealShip(iType);
	ref rBaseShip = GetShipByType(sti(rRealShip.BaseType));
	int iSumm = 100;//базовая стоимость sti(rBaseShip.price);
	int shipClass = sti(rRealShip.class);
	//корпус
	int hp_price = 1;
	switch(shipClass)
	{
		case 7: hp_price = 10; break;
		case 6: hp_price = 20; break;
		
		case 5: hp_price = 30; break;
		case 4: hp_price = 40; break;
		case 3: hp_price = 50; break;
		case 2: hp_price = 60; break;
		case 1: hp_price = 70; break;
	}
	int SummHP = sti(rRealShip.HP) * hp_price;
 
	//трюм
	int capacity_price = 1;
	switch(shipClass)
	{
		case 7: capacity_price = 10; break;
		case 6: capacity_price = 20; break;
		case 5: capacity_price = 30; break;
		case 4: capacity_price = 40; break;
		case 3: capacity_price = 50; break;
		case 2: capacity_price = 60; break;
		case 1: capacity_price = 70; break;
	}
	int SummCapacity = sti(rRealShip.Capacity) * capacity_price;
 
	//команда
	int crew_price = 1;
	switch(shipClass)
	{
		case 7: crew_price = 20; break;
		case 6: crew_price = 40; break;
		case 5: crew_price = 60; break;
		case 4: crew_price = 80; break;
		case 3: crew_price = 120; break;
		case 2: crew_price = 140; break;
		case 1: crew_price = 160; break;
	}
	int SummCrew = sti(rRealShip.MaxCrew) * crew_price;
 
	//калибр
	int caliber_price = 5000;
	switch(sti(rRealShip.MaxCaliber))
	{
		case 8: caliber_price = 5000; break;
		case 12: caliber_price = 10000; break;
		case 16: caliber_price = 20000; break;
		case 24: caliber_price = 60000; break;
		case 32: caliber_price = 150000; break;
		case 42: caliber_price = 300000; break;
		case 48: caliber_price = 600000; break;
	}
	int SummMaxCaliber = caliber_price;
	
	/*//количество пушек
	int cannon_price = 0;
	int iCannonsQuantity = 0;
	bool isNull = false;
	if(CheckAttribute(rRealShip, "CannonsQuantity"))
	{
		if(CheckAttribute(rChar, "Ship.Cannons.Type"))
		{
			ref rCannon = GetCannonByType(sti(rChar.Ship.Cannons.Type));
			cannon_price = sti(rCannon.cost);
			iCannonsQuantity = GetCannonsNum(rChar);
		}
		else
		{
			isNull = true;
			cannon_price = 1500; //универсальное значение для NullCharacter
			iCannonsQuantity = sti(rRealShip.CannonsQuantity);
		}
	}
	else
	{
		trace("GetShipPriceByTTH: у " + rRealShip.BaseName + " отсутствует атрибут CannonsQuantity");
	}
	int SummCannons = iCannonsQuantity * cannon_price;*/ //4
 
	/*//количество пушек
	int cannon_price = 0;
	int iCannonsQuantity = 0;
	if(CheckAttribute(rRealShip, "CannonsQuantity"))
	{
		if(CheckAttribute(rChar, "Ship.Cannons.Type"))
		{
			if(GetCannonsNum(rChar) > 0)
			{
				ref rCannon = GetCannonByType(sti(rChar.Ship.Cannons.Type));
				cannon_price = sti(rCannon.cost);
			}
		}
		else
		{
			cannon_price = 1500; //универсальное значение для NullCharacter
		}
		iCannonsQuantity = sti(rRealShip.CannonsQuantity);
	}
	else
	{
		trace("GetShipPriceByTTH: у " + rRealShip.BaseName + " отсутствует атрибут CannonsQuantity");
	}
	int SummCannons = iCannonsQuantity * cannon_price;*/ //3
	
	//количество пушек
	int cannon_price = 100;
	int iCannonsQuantity = 0;
	if(CheckAttribute(rRealShip, "CannonsQuantity"))
	{
		if(sti(rRealShip.CannonsQuantity) > 0)
		{
			if(CheckAttribute(rChar, "Ship.Cannons.Type"))
			{
				ref rCannon = GetCannonByType(sti(rChar.Ship.Cannons.Type));
				cannon_price = sti(rCannon.cost);
			}
			else
			{
				cannon_price = 1500; //универсальное значение для NullCharacter
			}
			iCannonsQuantity = sti(rRealShip.CannonsQuantity);
		}
		else
		{
			cannon_price = 0;
		}
	}
	else
	{
		trace("GetShipPriceByTTH: у " + rRealShip.BaseName + " отсутствует атрибут CannonsQuantity");
	}
	int SummCannons = iCannonsQuantity * cannon_price; //2
	
	/*//количество пушек
	int cannon_price = 100;
	int iCannonsQuantity = sti(rRealShip.CannonsQuantity);
	if(sti(rRealShip.CannonsQuantity) > 0)
	{
		ref rCannon = GetCannonByType(sti(rRealShip.Cannon));
		cannon_price = sti(rCannon.cost);
	}
	else
	{
		cannon_price = 0;
	}
	int SummCannons = iCannonsQuantity * cannon_price;*/ //1
 
	//бейдевинд
	int was_price = 10;
	switch(shipClass)
	{
		case 7: was_price = 100; break;
		case 6: was_price = 500; break;
		case 5: was_price = 2500; break;
		case 4: was_price = 10000; break;
		case 3: was_price = 50000; break;
		case 2: was_price = 100000; break;
		case 1: was_price = 200000; break;
	}
	int SummWAS = stf(rRealShip.WindAgainstSpeed) * was_price;
 
	//скорость
	int speed_price = 10;
	switch(shipClass)
	{
		case 7: speed_price = 30; break;
		case 6: speed_price = 100; break;
		case 5: speed_price = 200; break;
		case 4: speed_price = 1000; break;
		case 3: speed_price = 3000; break;
		case 2: speed_price = 6000; break;
		case 1: speed_price = 10000; break;
	}
	int SummSpeed = stf(rRealShip.SpeedRate) * speed_price;
 
	//маневренность
	int turn_price = 10;
	switch(shipClass)
	{
		case 7: turn_price = 10; break;
		case 6: turn_price = 30; break;
		case 5: turn_price = 50; break;
		case 4: turn_price = 100; break;
		case 3: turn_price = 1000; break;
		case 2: turn_price = 5000; break;
		case 1: turn_price = 8000; break;
	}
	int SummTurn = stf(rRealShip.TurnRate) * turn_price;
 
	iSumm += SummHP + SummCapacity + SummCrew + SummMaxCaliber + SummCannons + SummWAS + SummSpeed + SummTurn;
	
	/* Log_TestInfo("SummHP " + SummHP); 
	Log_TestInfo("SummCapacity " + SummCapacity); 
	Log_TestInfo("SummCrew " + SummCrew); 
	Log_TestInfo("SummMaxCaliber " + SummMaxCaliber); 
	Log_TestInfo("SummCannons " + SummCannons); 
	Log_TestInfo("SummWAS " + SummWAS); 
	Log_TestInfo("SummSpeed " + SummSpeed); 
	Log_TestInfo("SummTurn " + SummTurn); 
	Log_TestInfo("iSumm " + iSumm); */
 
	return iSumm;
}
//Mett: <-- формула стоимости кораблей по ТТХ

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение talcore » 18 июн 2019, 21:27

Подскажите файл для смены цен ремонта кораблей.

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

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

Сообщение xsenus » 21 июн 2019, 20:13

NPChar.quest.meeting = true; что значит данная строчка (нашел ее в диалогах, в кейсе для просмотра навыков офицеров из таверны)?

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение Xinerubts » 25 июн 2019, 11:36

Подскажите пожалуйста, какой файл отвечает за генерацию статов кораблей в море? Т.е возможный рандом статов от базовых?

В ShipsUtilites.c нашел:

}
rRealShip.SpeedRate = stf(rRealShip.SpeedRate) + frandSmall(stf(rRealShip.SpeedRate) / 5.0) - stf(rRealShip.SpeedRate) / 10.0;
rRealShip.TurnRate = stf(rRealShip.TurnRate) + frandSmall(stf(rRealShip.TurnRate) / 5.0) - stf(rRealShip.TurnRate) / 10.0;
//rRealShip.Price = sti(rRealShip.Price) + rand(makeint(sti(rRealShip.Price)/2)) - makeint(sti(rRealShip.Price)/4);
rRealShip.HP = sti(rRealShip.HP) + rand(makeint(sti(rRealShip.HP)/5)) - makeint(sti(rRealShip.HP)/10);
rRealShip.WindAgainstSpeed = stf(rRealShip.WindAgainstSpeed) + frandSmall(stf(rRealShip.WindAgainstSpeed)/5.0) - stf(rRealShip.WindAgainstSpeed)/10.0;
}
rRealShip.Capacity = sti(rRealShip.Capacity) + rand(makeint(sti(rRealShip.Capacity)/4)) - makeint(sti(rRealShip.Capacity)/8);
rRealShip.OptCrew = makeint(sti(rRealShip.OptCrew) + rand(makeint(sti(rRealShip.OptCrew)/3)) - makeint(sti(rRealShip.OptCrew)/6));
rRealShip.MaxCrew = makeint(sti(rRealShip.OptCrew) * 1.25 + 0.5); // 25% перегруза
rRealShip.MinCrew = makeint(sti(rRealShip.MinCrew) + rand(makeint(sti(rRealShip.MinCrew)/3)) - makeint(sti(rRealShip.MinCrew)/6));

rRealShip.Weight = sti(rRealShip.Weight) + rand(sti(rRealShip.Weight)/20) - rand(sti(rRealShip.Weight)/20);
rRealShip.BaseHP = sti(rRealShip.HP);

Это оно? Спасибо.

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение Xinerubts » 25 июн 2019, 12:34

LEOPARD писал(а):
25 июн 2019, 12:05
Это именно то.
Спасибо за ответ.

Получается базовое значение корпуса +rand(makeint(sti(rRealShip.HP)/5)) отвечает за верхний предел корпуса, а базовое значение корпуса - makeint(sti(rRealShip.HP)/10); соответственно за нижнее возможное значение корпуса? Хотел уточнить, потому что для эксперимента считал по такому же принципу возможный верхний лимит команды на разных кораблях и сильно большие цифры получались, в игре таких не встречал почти. Или тут другая методика?

Отправлено спустя 35 минут 24 секунды:
Проще говоря, зная базовое значение корпуса судна, как рассчитать диапазон рандома при генерации?

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение IMS1969 » 30 июн 2019, 18:03

добрый день!
подскажите где в коде Корсары КС (ГПК) прописана генерация товаров в трюмах кораблей и магазинов?

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

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

Сообщение xsenus » 30 июн 2019, 23:05

Как проще всего передать какой-либо параметр. Например мне надо, чтобы тюремщик отпустил нпц за определенную плату. То есть надо, чтоб игра запомнила параметр (взнос денег) и передала его в диалог, разблокировав ветку, не используя запись в журнал и не создавая не какого квеста.

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

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение anb1911 » 03 июл 2019, 19:18

Саш, подскажи как можно увеличить место в ПУ для кораблей? заранее спасибо!

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

Автор темы

Корсары: ГПК 1.3.2 AT_R Corsairs Ship Pack v1.2.6

Сообщение LEOPARD » 03 июл 2019, 20:09

anb1911 писал(а):
03 июл 2019, 19:18
подскажи как можно увеличить место в ПУ для кораблей? заранее спасибо!
Я не помню уже в каком скрипте, но это сделать можно. Скинь мне папку program с шип-пака.

Отправлено спустя 42 минуты 55 секунд:
Уже не надо. Скачал свой репак, чекнул.

Отправлено спустя 29 секунд:
Вопросы по скриптам задавать в Базовое руководство по скриптам движка Storm

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

Автор темы

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

Сообщение LEOPARD » 03 июл 2019, 21:00

В файле Common_Portman.c найти:

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

if (sti(NPChar.Portman) >= 6)
Цифру 6 заменить на нужное
Далее находим кейс:

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

		case "ShipStockMan_7":
            NPChar.ShipToStoreIdx = GetCompanionIndex(PChar, 7);
			dialog.text = "Посмотрим что это за корабль.";
			Link.l1 = "Хорошо.";
			Link.l1.go = "ShipStock_2";
			Link.l2 = "Нет, я передумал"+ GetSexPhrase("","а") +".";
			Link.l2.go = "exit";
		break;
Смотрим на его структуру и добавляем эти кейсы столько, сколько указал в if (sti(NPChar.Portman) >= 6)
После добавленных кейсов, меняем нумерацию в названии кейсов case "ShipStockMan_7": и соответственно NPChar.ShipToStoreIdx = GetCompanionIndex(PChar, 7);
Кейсов должно быть на один больше, чем в строке

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

if (sti(NPChar.Portman) >= 6)

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

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

Сообщение Limbaugh » 11 авг 2019, 12:41

А можно ли как то перенести этот интерфейс на КГПК ? Я пробовал, но там в выборе персонажей начинаются проблемы, а дальше вроде норм все

Отправлено спустя 1 минуту 16 секунд:
Интерфейс "New Vision"

Отправлено спустя 1 час 16 минут 34 секунды:
Я просто хочу отдельно свою сборку сделать, на оригинал из GOG, есть проблема с растянутым интерфейсом и шрифтами, как это все сделать, как у вас в сборке Я пока не знаю

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