Школьные будни

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Школьные будни » Моды для РЗ » Гайды для мододелов РЗ


Гайды для мододелов РЗ

Сообщений 1 страница 27 из 27

1

Моды загружаются после основного файла игры, благодаря чему ими можно переписывать любые дефолтные данные. Данные из модификации имеют больший приоритет, чем данные из игры, так что при разработке будьте осторожны. Все данные в игре прокомментированы (Ха, блять, Ха. Пишите, буду комментить и объяснять, что надо). Благодаря изменениям вносимым подключаемыми модификациями можно расширять практически что угодно. Преимущество изменения и дополнения игры модами а не работой с основным файлом - это уверенность в поддержке вашей модификации новыми версиями, отсутствие необходимости что-то согласовывать с нами и полная независимость от основных разработчиков. Для изменения какой-то составляющей игры достаточно покопаться в коде основного файла и вынести нужные изменения в файл вашего мода.
Гайдов по qsp тут не будет, подразумевается что вы в нём чего-то смыслите. Гайды будут добавляться сугубо по внутриигровому коду чтобы вам в нём не разбираться мучительно и долго в режиме кодера одиночки.

Как избежать смещения добавляемых модами действий под кнопку назад: Гайды для мододелов РЗ

Основные переменные

mods/"имя файла модификации".qsp.info - имя для локации, содержимое которой будет выполнено один раз, при подключении модификации.
В неё стоит вставить увеличение счётчиков для отслеживая подключаемых модификаций, добавление динамиков и прочую одноразовую информацию вроде информационных окон.

$podrlmods['<<modkolvo>>_0'] - переменная, содержащая название вашей модификации, для отображения в информационной таблице.
Присваивать значение этой переменной нужно в локации mods/"имя файла модификации".qsp.info

$podrlmods['<<modkolvo>>_1'] - переменная, содержащая описание вашей модификации, для отображения в информационной таблице.
Присваивать значение этой переменной нужно в локации mods/"имя файла модификации".qsp.info

$podrlmods['<<modkolvo>>_2'] - переменная, содержащая ваше имя/ник, как автора модификации, для отображения в информационной таблице.
Присваивать значение этой переменной нужно в локации mods/"имя файла модификации".qsp.info

$action['имя_локации'] – счётчик, который используется для определения затрагивают модификации конкретную игровую локацию, или нет. Его необходимо увеличить на один, за каждый используемый вами динамик конкретной локации после его использования.

$podrlmods['имя_локации_<<$action[''имя_локации'']>>'] - динамик, исполняемый в конце каждой игровой локации. Добавление подобного динамика позволяет вам взаимодействовать с игровым миром, добавлять новые действия в локации, условия, ивнеты, задания, перки, предметы - что угодно, хоть переписывать всё с нуля. Добавлен такой динамик должен быть строго в локацию mods/"имя файла модификации".qsp.info

Добавление новых предметов

Для того, чтобы добавить в игру свой предмет, нужно разобраться в том, как вообще выглядят внутрикоровые предметы. Предметы в игре хранятся в массиве $inventar и имеют следующие параметры:

$inventar['id_0'] – id предмета

$inventar['id _1'] – название предмета

$inventar['id_2'] – тип предмета (Хлам, Двуручное оружие, Одноручное оружие, Щит, Доспех, Расходник)

$inventar['id_5'] – если равно 1 – одежда, если 2 – расходник, если 0 - хлам

Далее следует блок для одежды определяющий слоты надевания. Если параметр равен нулю, предмет не надевается на этот слот. 1- надевается. Для рук 2 – одноручное оружие, указывать слот только для левой руки.
$inventar['id_5_0'] - кольцо
$inventar['id_5_1'] - шлем
$inventar['id_5_2'] - амулет
$inventar['id_5_3'] – левая рука
$inventar['id_5_4'] - доспех
$inventar['id_5_5'] – правая рука
На этом блок одежды заканчивается.

$inventar['id_3'] – описание предмета

$inventar['id_6'] – лор часть описания предмета

$inventar['id_7'] – описание эффекта использования предмета

$inventar['id_4'] – редкость предмета (0-5)

$inventar['id_10'] – стоимость предмета

$inventar['id_11'] – количество получаемых материалов при разборе предмета

$inventar['id_12'] – количество получаемой еды при разборе предмета

$inventar['id_20'] – динамик, который обсчитается игрой при надевании предмета одежды либо при использовании расходника. Соответственно, быть в нём может что угодно. Для взаимодействия с активным героем используется переменная указатель heroid

$inventar['id_21'] – динамик, что обсчитается игрой при снятии предмета одежды. Желательно, чтобы он зеркалил динамик надевания, если иное не указано в описании предмета.

Помимо параметров предмета вам нужна переменная, которая определяет количество предметов в игре. Это переменная itemsmaxinthegame так же, вам нужна сама локация предметов, в которую ваш мод допишет свои изменения. Это локация русский.Предметы

Пример

https://yadi.sk/d/z3bgtAit3ai9sQ

Внутриигровые функции
izo.V

Эта функция используется для вывода изображений внутри игры. Все изображения выводятся именно чрез неё, для работы фильтрации тегов. Чтобы вывести вместо обычного изображения, открывающееся по клику, как в отчётах, используется следующая конструкция, например:
*nl '<center><a href="exec:gs (''izo.V'',''pic/mission/1/p0.jpg'',0,1)"><<$text[107]>></a>|||<a href="exec:view """><<$text[108]>></a></center>'

Сама функция использует следующие переменные:
args[0] – путь к изображению
args[1] – размер изображения (оставляйте равной 0, не используется сейчас)
args[2] - тип вывода где: 0 – классический вывод изображения в центре экрана, а 1 – вывод через окно изображения (view)

Дальше идут переменные тегов. Значение, равное 0 – изображение не имеет данный тег. 1 – имеет данный тег.

args[3] - тег геев
args[4] - тег лесбиянок
args[5] - тег футанари
args[6] - тег гуро
args[7] - тег писинга

В большинстве случаев, достаточно вызвать func ('izo.V','Путь'), если никакие дополнительные условия не актуальны.

f.createhero

Эта функция создаёт нового наёмника в соответствии в указанными параметрами. Индекс создаваемого героя – id. Все, указанные до генерации персонажа параметры не будут затронуты. Равные же пустой строке – сгенерируются в соответствии со стандартными параметрами генерации.

f.additems

эта функция добавляет на склад новый предмет. Она же проверяет есть ли на складе место для добавления предмета.
args[0] – это id добавляемого вами предмета.
args[1] – определяет, будет ли выведено сообщение о добавлении предмета, или нет. Если переменная равна 0 – то сообщение о добавлении предмета выведется в новом окне. Если равна 2 – сообщение будет добавлено в окно описания локации. Если равна 1 – информационных сообщений не будет вообще.

f.changepar

Функция изменения и вывода информации об изменении параметров персонажа и ресурсов гильдии. Она имеет следующие значения:
args[0]  - если равен 1, то изменяется параметр ГГ, если 0 – ресурс при гильдии
args[1]  - id изменяемого ресурса
args[2]  - значение, на которое будет изменён ресурс или параметр персонажа
Пример использования данной функции для потери гильдией 100 золотых: func ('f.changepar',0,0,-100)

f.iteminmission

Функция, которая генерирует случайные предметы для склада. Используется для получения наград на миссиях.
args[0] - количество предметов, которое нужно сгенерировать
args[1] - минимальная редкость генерируемых предметов
args[2] - максимальная редкость генерируемых предметов
args[3] - тип предметов для генерации (0 если без разницы, 1 – Хлам, 2 - Двуручное оружие, 3 - Одноручное оружие, 4 – Щит, 5 – Доспех, 6 – Расходник)
args[4] – id авантюриста, на основе параметров которого будут обсчитаны бонусы редкости и количества предметов (-1 если не важно)
Пример использования функции для получения редкого щита героем из второй комнаты: func ('f.iteminmission',1,1,1,4,2)

f.itembuy

То же самое, что функция выше, но используется для генерации предметов на торговлю у торгашей. Не используется args[4], всё остальное без изменений

f.delhero

Функция удаления героя из гильдии. При её применении персонаж исчезнет и будет либо добавлен в склеп, либо утерян окончательно.
args[0] – id героя для обработки
args[1] – если параметр равен 0, то погибший персонаж будет добавлен в склеп на кладбище.

f.sexpic

Это функция для вывода изображений в сценах стандартного секса. Она используется для определения наличия картинок для секса в принципе, и вывода либо чего-то персонального для расы и ситуации, либо абстрактного ню изображения.

rassex - массив картинок для расового секса. Первый индекс этого массива - раса, второй - тип секса, третий – пол. Этот массив расположен в локации Данные
Сама функция имеет следующие параметры:
args[0] - id авантюриста, участвующего в сексе
args[1] - тип секса
args[2] - пол героя (вроде как не обязательно)

f.naemendmission

Функция, отвечающая за завершение миссии наёмником. Фактически, она просто удаляет у авантюриста занятость после её окончания и стирает миссию из активных. Исполняется автоматически, не используется вручную.
args[0] – id авантюриста

f.infonaemotob

Функция, использующаяся для вывода информации о наёмнике. Отображает его аватар в окне изображений, и выводит информацию об авантюристе в окне доп описаний. Применяется в отчётах и в склепе, как правило в виде: <a href="exec:func (''f.infonaemotob'',<<id>>,0,1)"><<$hero[''<<id>>_1'']>> <<$hero[''<<id>>_2'']>></a> для живых, и <a href="exec:func (''f.infonaemotob'',<<id>>,0,1)"><<$deadhero[''<<id>>_1'']>> <<$deadhero[''<<i[5]>>_2'']>></a> для мёртвых героев.
args[0] – id персонажа.
args[1] – 0, если необходим вывод окна дополнительных описаний принудительно (отчёты о конце цикла), 1 – если это не требуется (любая игровая локация)
args[2] – тип героя (мёртвый или живой). 0 - для массива живых персонажей, 1 – для массива мёртвых.

f.navp

Функция, которая поднимает на единицу навык героя и выводи информацию об изменении в главный игровой экран. Используется при завершении миссий обучения.
args[0] – параметр героя
id – id героя.

f.chenper

Массив для изменения перков героя, роста либо падения на один уровень. Так же он используется ля удаления перков.
args[0] - id героя
args[1] – номер активного перка
args[2] – Тип действия. 1 - рост, -1 - падение, 0 – удаление

f.klk

Функция работы с кличками персонажей. Присваивает клички тем, у кого их нет в зависимости от нужного шанса получения клички. Также прививает причину поучения прозвища.
args[0] – id героя
args[1] – Тип действия. 1 - добавление клички, 0 - удаление клички
args[2] – Выбор клички. 1 - при генерации персонажа, 2 - кличка для конкретного перка
args[3] – Дополнительный шанс на получение клички (5+ args[3])
args[4] - номер перка для клички

Внутриигровые переменные
Массивы героев

Каждый игровой авантюрист имеет ряд параметров, которые хранятся в трёх массивах.

$hero – массив основных параметров персонажей
$perkhero – это массив перков персонажей
$itemuse – массив активного снаряжения персонажей

Все массивы в игре имеют одинаковую систему адресации. Рассмотрим её на примере массива $hero.
$hero['<<id>>_20']  где:
Id – идентификационный номер активного персонажа
20 – конкретная переменная, к которой вы обращаетесь. Список всех значений переменных для массивов ниже

Массив $hero

Это основной массив, хранящий большую часть информации об авантюристах.

0 – id персонажа
1 – Имя персонажа
2 – кличка персонажа
3 – Раса персонажа
4 – Пол персонажа (мужской, женский, футанари)
5 – ориентация персонажа (гетеро, гомо, би)
6 - Ссылка на внешность (Полная)
7 - Причина получения клички персонажем
8 – Биография персонажа (не реализовано на данном этапе)
9 – тип класса персонажа (сила, обаяние, ловкость, восприятие)
10 – уровень персонажа
11 – возраст персонажа (возможен абстрактный возраст ???)
12 – Родина персонажа
13 – Класс, название
14 – класс, описание
15 – беременность (не реализовано на данном этапе)

20 – Сила персонажа, основное значение
21 - Ловкость персонажа, основное значение
22 - Восприятие персонажа, основное значение
23 - Обаяние персонажа, основное значение
24 - Удача персонажа, основное значение

25 – стресс персонажа
26 – ранение, 0 если здоров. Иное число – циклов на лечение.

30 - Хороший/плохой персонажа (Значения от -100 до +100)

40 – Текущий опыт персонажа
41 - отношение к ГГ
42 - Мораль

50 - максимум силы
51 - максимум ловкости
52 - максимум восприятия
53 - максимум обаяния
54 - максимум удачи
55 - максимум параметров для основных значений
56 - рост максимума параметров за уровень

60 - сила от перков
61 - ловкости от перков
62 - восприятия от перков
63 - обаяния от перков
64 - удачи от перков

70 - сила от предметов
71 - ловкости от предметов
72 - восприятия от предметов
73 - обаяния от предметов
74 - удачи от предметов

80 - активная задача
81 - дата окончания активной задачи (номер конечного цикла)

90 – Бонус числа получаемых предметов
91 – Бонус редкости получаемых предметов
92 – Шанс выжить
93 - Возраст окончания службы в гильдии
94 – Цикл взросления

Массив $perkhero

Массив состоит из значений наличия или отсутствия того или иного перка у персонажей, а также конкретного уровня перка при его наличии. Пустое значение означит отсутствие перка, ноль – наличие первого уровня перка, 4 – наличие перка пятого уровня перка. Будьте бдительный, при использовании оператора val. Пустая строка автоматически получит значение ноль. Ниже будет список какие значения этого массива какие перки дают.

$perkhero ['<<id>>_0']=0 – перк Небольшие шрамы
$perkhero ['<<id>>_0']=1 – перк Шрамы на лице
$perkhero ['<<id>>_0']=2 – перк Безобразные шрамы
$perkhero ['<<id>>_0']=3 – перк Уродство
$perkhero ['<<id>>_0']=4 – перк Безликий

$perkhero ['<<id>>_1']=0 - перк Один глаз

$perkhero ['<<id>>_2']=0 - перк Невнимательность
$perkhero ['<<id>>_2']=1 - перк Проблемные глаза
$perkhero ['<<id>>_2']=2 - перк Слабое зрение
$perkhero ['<<id>>_2']=3 - перк Бельма на глазах
$perkhero ['<<id>>_2']=4 - перк Слепота

$perkhero ['<<id>>_3']=0 - перк Период восстановления
$perkhero ['<<id>>_3']=1 - перк Боль
$perkhero ['<<id>>_3']=2 - перк Старые раны
$perkhero ['<<id>>_3']=3 - перк Инвалид
$perkhero ['<<id>>_3']=4 - перк Калека

$perkhero ['<<id>>_4']=0 - перк 'Не прочь выпить'
$perkhero ['<<id>>_4']=1 - перк 'Любовь к пьянкам'
$perkhero ['<<id>>_4']=2 - перк 'Выпивоха'
$perkhero ['<<id>>_4']=3 - перк 'Алкоголизм'
$perkhero ['<<id>>_4']=4 - перк 'Запойный алкоголик'

$perkhero ['<<id>>_5']=0 - перк 'Знакомство с наркотиками'
$perkhero ['<<id>>_5']=1 - перк 'Употребление наркотиков'
$perkhero ['<<id>>_5']=2 - перк 'Лёгкая наркозависимость'
$perkhero ['<<id>>_5']=3 - перк 'Наркомания'
$perkhero ['<<id>>_5']=4 - перк 'Тяжёлая наркозависимость'

$perkhero ['<<id>>_6']=0 - перк 'Грубость'
$perkhero ['<<id>>_6']=1 - перк 'Агрессивность'
$perkhero ['<<id>>_6']=2 - перк 'Жестокость'
$perkhero ['<<id>>_6']=3 - перк 'Брутальность'
$perkhero ['<<id>>_6']=4 - перк 'Психопатия'

$perkhero ['<<id>>_7']=0 - перк 'Высокомерие'
$perkhero ['<<id>>_7']=1 - перк 'Доминантность'
$perkhero ['<<id>>_7']=2 - перк 'Безжалостность'
$perkhero ['<<id>>_7']=3 - перк 'Садизм'
$perkhero ['<<id>>_7']=4 - перк 'Маньяк'

$perkhero ['<<id>>_8']=0 - перк 'Мягкость'
$perkhero ['<<id>>_8']=1 - перк 'Осуждение насилия'
$perkhero ['<<id>>_8']=2 - перк 'Добродушие'
$perkhero ['<<id>>_8']=3 - перк 'Пацифизм'
$perkhero ['<<id>>_8']=4 - перк 'Страх крови'

$perkhero ['<<id>>_9']=0 - перк 'Любвеобильность'
$perkhero ['<<id>>_9']=1 - перк 'Развратность'
$perkhero ['<<id>>_9']=2 - перк 'Гедонизм'
$perkhero ['<<id>>_9']=3 - перк 'Секс зависимость'
$perkhero ['<<id>>_9']=4 - перк 'Нимфомания'

$perkhero ['<<id>>_10']=0 - перк 'Осторожность'
$perkhero ['<<id>>_10']=1 - перк 'Живучесть'
$perkhero ['<<id>>_10']=2 - перк 'Крепкая шкура'
$perkhero ['<<id>>_10']=3 - перк 'Неприкасаемость'
$perkhero ['<<id>>_10']=4 - перк 'Бессмертие'

$perkhero ['<<id>>_11']=0 - перк 'Неуверенность в себе'
$perkhero ['<<id>>_11']=1 - перк 'Подверженность чужому влиянию'
$perkhero ['<<id>>_11']=2 - перк 'Тяга к послушанию'
$perkhero ['<<id>>_11']=3 - перк 'Покорность'
$perkhero ['<<id>>_11']=4 - перк 'Безвольность'

$perkhero ['<<id>>_12']=0 - перк 'Полукровка'

$perkhero ['<<id>>_13']=0 - перк 'Каннибализм'

$perkhero ['<<id>>_14']=0 - перк 'Клеймо'

$perkhero ['<<id>>_15']=0 - перк 'Долги'
$perkhero ['<<id>>_15']=1 - перк 'Есть враги'
$perkhero ['<<id>>_15']=2 - перк 'В розыске'
$perkhero ['<<id>>_15']=3 - перк 'Живым или мёртвым'
$perkhero ['<<id>>_15']=4 - перк 'Награда за голову'

$perkhero ['<<id>>_16']=0 - перк 'Приятная внешность'
$perkhero ['<<id>>_16']=1 - перк 'Симпатичная внешность'
$perkhero ['<<id>>_16']=2 - перк 'Привлекательная внешность'
$perkhero ['<<id>>_16']=3 - перк 'Красота'
$perkhero ['<<id>>_16']=4 - перк 'Внешнее великолепие'

$perkhero ['<<id>>_17']=0 - перк 'Словоблудство'
$perkhero ['<<id>>_17']=1 - перк 'Умение говорить'
$perkhero ['<<id>>_17']=2 - перк 'Талант оратора'
$perkhero ['<<id>>_17']=3 - перк 'Природное обаяние'
$perkhero ['<<id>>_17']=4 - перк 'Харизматичность'

$perkhero ['<<id>>_18']=0 - перк 'Подтянутость'
$perkhero ['<<id>>_18']=1 - перк 'Крепкое тело'
$perkhero ['<<id>>_18']=2 - перк 'Недюжинная сила'
$perkhero ['<<id>>_18']=3 - перк 'Мощь'
$perkhero ['<<id>>_18']=4 - перк 'Сверхчеловек'

$perkhero ['<<id>>_19']=0 - перк 'Гибкость'
$perkhero ['<<id>>_19']=1 - перк 'Ловкач'
$perkhero ['<<id>>_19']=2 - перк 'Ниндзя'
$perkhero ['<<id>>_19']=3 - перк 'Обученный ассасин'
$perkhero ['<<id>>_19']=4 - перк 'Единство с тенью'

$perkhero ['<<id>>_20']=0 - перк 'Внимательность'
$perkhero ['<<id>>_20']=1 - перк 'Зоркий глаз'
$perkhero ['<<id>>_20']=2 - перк 'Цепкий взор'
$perkhero ['<<id>>_20']=3 - перк 'Шестое чувство'
$perkhero ['<<id>>_20']=4 - перк 'Ясновидение'

$perkhero ['<<id>>_21']=0 - перк 'Закономерность случайностей'
$perkhero ['<<id>>_21']=1 - перк 'Везучесть'
$perkhero ['<<id>>_21']=2 - перк 'Удачливость'
$perkhero ['<<id>>_21']=3 - перк 'Улыбка фортуны'
$perkhero ['<<id>>_21']=4 - перк 'Под опекой фортуны'

$perkhero ['<<id>>_22']=0 - перк 'Опасливость'
$perkhero ['<<id>>_22']=1 - перк 'Неуверенность'
$perkhero ['<<id>>_22']=2 - перк 'Пугливость'
$perkhero ['<<id>>_22']=3 - перк 'Трусость'
$perkhero ['<<id>>_22']=4 - перк 'Предательство'

$perkhero ['<<id>>_23']=0 - перк 'Смышлёныш'
$perkhero ['<<id>>_23']=1 - перк 'Сообразительность'
$perkhero ['<<id>>_23']=2 - перк 'Ум'
$perkhero ['<<id>>_23']=3 - перк 'Высокий интеллект'
$perkhero ['<<id>>_23']=4 - перк 'Гениальность'

$perkhero ['<<id>>_24']=0 - перк 'Доверие'
$perkhero ['<<id>>_24']=1 - перк 'Уважение к лидеру'
$perkhero ['<<id>>_24']=2 - перк 'Верность'
$perkhero ['<<id>>_24']=3 - перк 'Преданность'
$perkhero ['<<id>>_24']=4 - перк 'До последнего вздоха'

$perkhero ['<<id>>_25']=0 - перк 'Советчик'
$perkhero ['<<id>>_25']=1 - перк 'Авторитет'
$perkhero ['<<id>>_25']=2 - перк 'Неплохой командир'
$perkhero ['<<id>>_25']=3 - перк 'Лидер'
$perkhero ['<<id>>_25']=4 - перк 'Мастерство командования'

$perkhero ['<<id>>_26']=0 - перк 'Бережливость'
$perkhero ['<<id>>_26']=1 - перк 'Жадность'
$perkhero ['<<id>>_26']=2 - перк 'Златолюбие'
$perkhero ['<<id>>_26']=3 - перк 'Воровство'
$perkhero ['<<id>>_26']=4 - перк 'Крыса'

$perkhero ['<<id>>_27']=0 - перк 'Ребёнок'
$perkhero ['<<id>>_27']=1 - перк 'Сестра'
$perkhero ['<<id>>_27']=2 - перк 'Брат'
$perkhero ['<<id>>_27']=3 - перк 'Отец'
$perkhero ['<<id>>_27']=4 - перк 'Мать'

$perkhero ['<<id>>_28']=0 - перк 'Одарённый'
$perkhero ['<<id>>_28']=1 - перк 'Практик'
$perkhero ['<<id>>_28']=2 - перк 'Маг'
$perkhero ['<<id>>_28']=3 - перк 'Архимаг'
$perkhero ['<<id>>_28']=4 - перк 'Аватар бога'

$perkhero ['<<id>>_29']=0 - перк 'Утончённый'
$perkhero ['<<id>>_29']=1 - перк 'Элегантный'
$perkhero ['<<id>>_29']=2 - перк 'Женственный'
$perkhero ['<<id>>_29']=3 - перк 'Женоподобный'
$perkhero ['<<id>>_29']=4 - перк 'Шимейл'

Массив $itemuse

Массив $itemuse состоит из 6 ячеек. В них храниться только id надетого предмета
0 - кольцо
1 - Шлем
2 – Амулет
3 – левая рука
4 – корпус
5 – правая рука

Параметры гильдии

Массив параметров гильдии - это массив res. Он одномерный, и каждое его значение отвечает за конкретный параметр вашей гильдии

res[0] - деньги
res[1] – материалы
res[2] – провизия

res[5] – персонал
res[6] – репутация
res[7] -  благосостояние

Новые взаимодействия с авантюристами

Для добавления новых взаимодействий с наёмниками вы должны работать через моды с локацией Экран героя добавляя динамиками в неё действия или дополнительные информационные окна. Индекс авантюриста указан переменной id Массив авантюристов - $hero['<<id>>_номер_параметра']. Значение всех переменных этого массивы вы можете найти в коде основного игрового файла, в локации Экран героя.

Пример

https://yadi.sk/d/zHeKC77i3aj5HK

Новые предметы в кабинете

Чтобы добавить новый предмет в кабинет игрока, вы должны работать с двумя локациями. Сначала нужно добавить новый предмет в кабинет, для чего вам потребуется работать с одноимённой локацией (Кабинет). После добавления предмета, ему нужно приписать свойства при выборе. Для этого вам нужно работать с локацией Предметы через оператор selobj. В конце использовать unsel, он прописан в основном коде после выполнения действий из модов.

Пример

https://yadi.sk/d/zulZQX8dap_fEA

Новые локации в городе

Для добавления новых городских локаций вам нужно работать с динамиком $gorodgo. Всё, что нужно, это добавить к имеющемуся динамику ваши операторы с переходом в созданную локацию по принципу $gorodgo=$gorodgo+{ваши операторы} . Чтобы отредактировать этот динамик, вы должны в моде обратиться к локации Динамики.

Пример

https://yadi.sk/d/hgWEWEC379DtEw

Новые оповещения

За количество оповещений в игре отвечает переменная opovkolvoingame. Соответственно, первым вашим действием для добавления новых оповещений должно стать увеличение этой переменной на одну единицу, а также присвоение поучившегося значения какой-то удобной и уникальной переменной (для примера и наглядности далее будет использоваться myper. При добавлении кучи оповещений, используйте вместо переменной массив). Находится она в локации Данные, с ней вам и нужно работать. В нём же вы должны добавить название вашего оповещения. Оно хранится в переменной $opovesheniya[myper]

Так же вам необходимо установить требования для ваших оповещений, если таковые, конечно есть. Наличие персонала в гильдии для оповещений, связанных с персоналом, конкретный уровень репутации, какие-то особенности наёмников - в общем, всё что вы сочтёте нужным. Для этого вы должны изменить локацию динамики, добавив в неё новый под названием $opovesdin[myper]. В нём вы должны указать условия, при выполнении которых исполнить следующие операторы:

set op[kolop]=0
set i[5]=i[5]-1
set kolop=kolop-1
set i[6]=i[6]-1

Это не даст вашему оповещению случиться в игре при невыполнении условий для него. Если условий нет, то и добавлять в динамики вам ничего не нужно.

Сами оповещения выполняются в локации Оповещения. В ней вам нужно считать переменную op[idop], и если она равна myper – выполнить ваше оповещение.

Пример

https://yadi.sk/d/IWI1T58sccg-8Q

Новые сцены секса

Для добавления новых сцен секса в игру вам понадобится редактировать данные локации «Стандартный секс». Всё что вам нужно при работе – добавить через моды новое действие, и проверки при необходимости. Самые необходимые на мой взгляд переменные, что вам могут понадобиться приведены ниже. Проверка на совместимость ориентации, согласие или не согласие на секс проходят ДО входа в данную локацию, потому вам этими вопросами мучиться не надо. Только само действо.

$player[5] – пол главного героя. Может иметь три значения $text[27] (мужской), $text[28] (женский), $text[29] (футанари).

$hero['<<id>>_4'] – пол активного наёмника. Значения аналогичные полу главного героя.

$hero['<<id>>_3'] – раса активного наёмника. Может иметь следующие значения: $text[26] (Амаса), $text[30] (Демон), $text[31] (Эльф), $text[32] (Зверораса), $text[33] (Гном), $text[34] (Гоблин), $text[35] (Человек), $text[36] (Огр), $text[37] (Орк).

$perkhero['<<id>>_27'] – перки родственных связей. Имеет следующие значения: '' (перк отсутствует), 0 (Ребёнок), 1(Сестра), 2(Брат), 3(Отец), 4(Мать).

Пример

https://yadi.sk/d/9WJgCVvnmaLr7Q

Новые миссии

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

Для этого вы должны во первых увеличить переменную missioningame на один. Эта переменная отвечает за количество миссий в игре, и при добавлении новой, соответственно, должна наращиваться (set missioningame=missioningame+1). Если вы модом добавляете больше одной миссии, вы должны каждый раз совершать итерацию, увеличения именно на один, а не на 10 и т.д.. Ниже объясню почему.

Далее, вы должны работать с массивом $missionspisok. Данный массив содержит название внутриигровых локаций, которые обрабатывают каждую конкретную миссию. Индекс данного массива после наращивания переменной missioningame как раз ей и будет равен (set $missionspisok[missioningame]='Локация_вашей_миссии').

Далее, вы должны сохранить индекс вашей миссии в какую-то уникальную для вашей работы переменную. Не скупитесь на длину оной – если ваша переменная однажды совпадёт с переменной из другого мода или с какой-то из основного кода игры это вызовет баги. Данная переменная будет использоваться для обработки и обращения к вашей миссии (set ваша_уникальная_перменная=missioningame)

После всего этого как и при работе с другими модами, вы должны нарастить счётчик мод действий в локации данные. Итого, ваш код в mods/ваша_миссия.qsp.info будет выглядеть примерно так:
set i[16]=val($action['Данные'])
set $podrlmods['Данные_<<i[16]>>']={
set missioningame=missioningame+1
set $missionspisok[missioningame]= 'Локация_вашей_миссии'
set ваша_уникальная_перменная=missioningame
}
set $action['Данные']=val($action['Данные'])+1

После этого приходит пора работать с новой локацией вашей миссии.

Ваша локация должна иметь два основных подраздела.
if args[0]=2 – подраздел основной информации о миссии, которая нужна игре при выпадении данного задания в числе новых в начале цикла.
if args[0]=1 – подраздел локации с миссией, где происходит обсчёт всех результатов.

Начнём как ни странно с args[0]=2
Она имеет следующие параметры кода, которые вам необходимо установить для вашего уникального задания:

Во первых, первый индекс массива $missionday  должен быть равен i[33]. Такова структура внутри игрового кода, просто смиритесь. В самом массиве $missionday хранится вся актуальная информация по выпавшим в цикл заданиям.

$missionday['<<i[33]>>_1'] – название вашей миссии
$missionday['<<i[33]>>_2'] – финальная цель вашей миссии
$missionday['<<i[33]>>_3'] – сложность вашей миссии. Может варьироваться от 0 (очень лёгкая) до 20 (крайне тяжёлая).
$missionday['<<i[33]>>_4'] - длительность миссии в циклах
$missionday['<<i[33]>>_5'] – требующийся для успешного выполнения миссии навык (сила, ловкость, восприятие, обаяние)
$missionday['<<i[33]>>_6'] – не актуально, оставляйте пустым
$missionday['<<i[33]>>_17'] – опасность миссии для наёмника. Высчитывается самостоятельно, просто посчитайте процент смертельных для авантюриста концовок к общему количеству концовок.
$missionday['<<i[33]>>_7'] - Необходимое количество провизии для начала миссии. Можете использовать расчёт на основе её длительности ($missionday['<<i[33]>>_4']) или сложности ($missionday['<<i[33]>>_3']). При необходимости может быть равно пустой сроке.
$missionday['<<i[33]>>_8'] – необходимое количество золота для начала миссии. Актуально всё то же, что и для провизии.
$missionday['<<i[33]>>_9'] – аналогично, но для материалов.
Далее следует выполнить динамик $nagradazamissionnyudin. Он рассчитает количественную награду на основе сложности, длительности и потраченных на миссию ресурсов. Можете установить награду и вручную, но во имя баланса лучше пользоваться прописанным динамиком. В результате работы динамика вы получите переменную ockinagradi. Это эквивалент награды за миссию в золоте. Соответственно, если вы хотите выдать награду в провизии, данное число нужно разделить на два, на пять для материалов. Ну и варьировать половину на золото, остальное на материалы, или в любых других пропорциях это число так же никто не запрещает.
$missionday['<<i[33]>>_10'] – награда за успех в золоте
$missionday['<<i[33]>>_11'] – награда за успех в провизии
$missionday['<<i[33]>>_12'] – награда за успех в материалах.
$missionday['<<i[33]>>_13'] – название локации с вашей миссией. Хранится она тут $missionspisok[ваша_уникальная_перменная]
$missionday['<<i[33]>>_15'] – вводный текст вашей миссии
$missionday['<<i[33]>>_16'] – изображение, которое будет продемонстрировано при описании миссии во время изучения доступных на цикл заданий. Тут должен быть путь к файлу изображения, например: 'mods/мой_мод/0.jpg'

Это всё, что необходимо вам в первом блоке миссионной локации. Это вся предварительная информация по миссии. Тут доступно использования оператора rand в требованиях ресурсов или в сложности с длительностью – никаких багов это не вызовет.

Теперь перейдём ко второй части вашей локации с заданием.

if args[0]=1

Первое что вы должны сделать, это присвоить значение переменной args[1] переменной id, дабы все функции работали корректно (set id=args[1]).
Далее идёт подготовка окончаний миссий. В игре окончания могут быть по параметру (успех, неудача, провал и т.д.) и по перку (при наличии оного будет выпадать порой какое-то уникальное завершение). В первую очередь для подготовки концовок вы должны заполнить массив percactmiss. Этот массив отвечает за то, какие перковые концовки доступны для вашего задания. Его индекс отвечает за конкретный перк, а значение, которое вы ему присваиваете за то с какого уровня перка вообще будет срабатывать эта концовка (единица здесь равна нулевому уровню перка). Сами перки вы можете найти в локации русский.язык основного игрового файла. Они хранятся в массиве $perctest который имеет индексы ['число 1_число 2']
Число 1 - номер перка
Число 2 - уровень перка
То есть если вы хотите сделать уникальное окончание для перков Небольшие шрамы- Шрамы на лице-Безобразные шрамы-Уродство-Безликий, то вы должны вписать в код set percactmiss[0]=1
И это действие вы должны повторить для всех выбранных в качестве концовки перков. Далее, необходимо присвоить переменной trebnav значение того параметра, который необходим для данной миссии. 20 - сила, 21 - ловкость, 22 - восприятие, 23 – обаяние.
После этого, вы используете динамик $missionenddynamit, который на основе внесённых выше данных обсчитает результат для выбранного наёмника. Этот результат будет находится в переменной itog. Она принимает следующие значения:

От 0 до количества перков в игре – это перковые завершения. То есть если itog=0, то будет использоваться завершение по перку Небольшие шрамы- Шрамы на лице-Безобразные шрамы-Уродство-Безликий. И так далее для всех его значений.
Если же переменная меньше ноля, то её значения обозначают следующие итоги:

itog=-1 – успешное завершение миссии
itog=-2 – Критический успех при завершении миссии
itog=-3 – провал миссии
itog=-4 – критический провал миссии.
Соответственно, получив значение этой переменной, вы просто наполните тело миссии расшифровкой этого итога через оператор if.

Так же из важного, что вам может пригодится:

dynamic $missionplata – полностью обсчитывает награду за успех миссии, добавляет опыт, стресс, золото и прочее. Не добавляет только репутацию, которую нужно наращивать вручную.

func('f.changepar',0,0,val($activmission['<<$hero[''<<id>>_80'']>>_10'])) – добавляет награду золотом за активную миссию

func('f.changepar',0,2,val($activmission['<<$hero[''<<id>>_80'']>>_11'])) – добавляет награду провизией за активную миссию

func('f.changepar',0,1,val($activmission['<<$hero[''<<id>>_80'']>>_12'])) – добавляет награду материалами за активную миссию

set $hero['<<id>>_40']=val($hero['<<id>>_40'])+val($activmission['<<$hero[''<<id>>_80'']>>_3'])*val($activmission['<<$hero[''<<id>>_80'']>>_4']) – добавляет опыта за миссию на основе сложности умноженной на длительность.

func ('f.chenparhero',id,25,val($activmission['<<$hero[''<<id>>_80'']>>_3'])*val($activmission['<<$hero[''<<id>>_80'']>>_4'])) – рост стресса персонажа на основе перемноженных сложности и длительности. Соответственно, понижать стресс так же нужно через эту функцию.

dynamic $deadshans – динамик, обсчитывающий шанс погибнуть для авантюриста, в окончаниях где что-то угрожает его жизни. После использования он возвращает переменную deaditog. Её значения обозначают следующие результаты:
deaditog=0 – выживание
deaditog=1 - ранение
deaditog=2 – смерть

f.changepar – функция изменения параметров.
Её первое значение при равенстве 0 означает изменение параметров гильдии.
Второе – определяет то, какой конкретно параметр менять (0 – деньги, 1 – материалы, 2 – провизия, 5 – персонал, 6 – репутация, 7 - обстановка).
Ну и последний, третий параметр – определяет значение изменений. Соответственно отрицательное число уменьшит выбранный параметр, а положительное – увеличит. Для, например, уменьшения репутации гильдии на значение сложности миссии, в случае её провала эта функция будет выглядеть так: func ('f.changepar',0,6,-val($activmission['<<$hero[''<<id>>_80'']>>_3']))

func ('f.delhero',id) – функция для удаления активного персонажа

func ('f.chenper',1 значение,2 значение,3 значение) функция для изменения перков авантюриста.
1 значение - id персонажа с которым идёт работа. Собственное его порядковый номер. Во время просчёта результатов миссии висит в переменной id
2 значение - номер перка с которым нужно работать.
3 значение - что с перком делать. 1 - рост или добавление перка; -1 падение перка; 0 - удаление перка;

Пример

https://yadi.sk/d/jDe342aWEu9wew

+1

2

Добавил гайд на создание модами предметов.

0

3

Добавил гайд по добавлению взаимодействий с авантюристами в их комнатах.

0

4

Добавил гайд по добавлению предметов в кабинет и работе с ними.

0

5

Добавлен гайд по добавлению новых городских локаций

0

6

Добавлен гайд по всем внутриигровым функциям. Делать я его заебался, потому мож где-то не сильно понятно объяснил что к чему. Пишите вопросы и прочее - буду дорабатывать.

0

7

Добавлен гайд по внутриигровым переменным

0

8

Кто спрашивал про гайд по оповещениям? Прошу, добавлен в шапку. Выложил бы раньше, но при работе над ним вскрылись баги в структуре игры и в коде модсистемы. Собственно потому до выхода этой версии и ждал, в ней всё пофикшено.

0

9

В общем такая тема. Для гайда по своим миссиям, мне бы собсна пример этой миссии накидать.
https://yadi.sk/i/THn7V-3S3aF3EF
Инфа по созданию миссий и тому, какие тексты для неё нужны. Код с меня, после в виде мода миссия будет выложена на сайте, и разобрана в примере гайда.
Если кому интересно, свяжитесь с Сем через ЛС, или отпишитесь в этой теме.

0

10

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

0

11

Гайд по миссиям добавлен. В качестве примера в нём миссия "Подозрительные огоньки" от Shetto. Постарался максимально подробно разобрать что как и почему в стандартных структурах миссий.

+1

12

А нет, это просто я глупенький. Разобрался, все норм, извиняюсь хд

Отредактировано Norcross (2018-12-27 01:54:57)

0

13

Столкнулся с небольшой проблемой выдачи предметов созданных модами в награду. Назначить рандомное неиспользованное число не выходит, а если использовать переменную itemsmaxinthegame - то выдавать будет последнюю добавленную модами вещь.
Иногда помогало подобное:
http://s8.uploads.ru/t/cj58J.pnghttp://s3.uploads.ru/t/atSLw.png
Но не всегда. А остальные мои идеи и вовсе никакого результата не давали. В остальном любые попытки заканчиваются подобным
http://sg.uploads.ru/t/An1K3.png
Буду пытаться дальше найти стабильно работающий способ, но пока я все равно не понимаю почему тот не всегда работает -.-

0

14

Norcross
стоп а какого результата ты хочешь добиться?

0

15

Dogic написал(а):

Norcross
стоп а какого результата ты хочешь добиться?


Мне кажется, это очевидно. Нет ?
Что бы за выполнение моего задания можно было выдавать в награду созданный мной специально для этого задания предмет.

0

16

Norcross написал(а):

Мне кажется, это очевидно. Нет ?
Что бы за выполнение моего задания можно было выдавать в награду созданный мной специально для этого задания предмет.

а что за gs? я ее не знаю
я вещи при условии обязательной выучи через set команду давал
а при вероятности через func

0

17

Dogic, gs - это почти та же самая функция, что и func. Просто использую внутриигровые функции.

Ps1x написал(а):

f.additems
эта функция добавляет на склад новый предмет. Она же проверяет есть ли на складе место для добавления предмета.

Отредактировано Norcross (2018-12-28 18:26:38)

0

18

Norcross
Не понимаю почему присвоение уникальной переменной работает через раз. Через soulgem по идее должно работать стабильно. Что именно было не так в моменты, когда этот способ не работал? Выдавал пустую вещь или выдавал не то?

0

19

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

Отредактировано Norcross (2018-12-28 19:32:32)

0

20

Norcross
Скинь мне в лс мод, ща я потыкаюсь, попробую понять в чём проблема.

0

21

Если вас так же как и меня раздражает то, что ваша локация появляется ниже кнопки "Назад" - могу предложить подобное топорное решение:
http://s8.uploads.ru/t/RHZVb.png
В теории, это не должно вызывать какие-либо баги. Но если это не так, поправьте меня те, кто хоть что-то понимает в этом куспе хд Я уже ничему не удивлюсь

Код
Код:
set $gorodgo=$gorodgo+{
delact $acts[1]
end
}

---------------------
->Ваша локация--
---------------------


set $gorodgo=$gorodgo+{
act $acts[1]:
     goto curloc
     end
}

Отредактировано Norcross (2018-12-30 15:30:31)

+2

22

Norcross
Закрепил в мейнпосте инфу. Благодарствую.

+1

23

Хм... Не совсем понял про присвоение перков. Как оно происходит?

0

24

AveFix написал(а):

Хм... Не совсем понял про присвоение перков. Как оно происходит?

Проворонили вопрос, извините.
Перки хранятся в массиве $perkhero. Первый элемент массива - id героя, второй - id перка. Если элемент массива равен пустой строке, то этот перк у героя отсутствует. Если цифре - то цифра определяет уровень перка. (0 - первый уровень, 1 - второй уровень и т.д.)
Присвоение характеристик происходит выполнением динамика $perkherodinamicvvoad[id_перка]

0

25

f.navp - Кто подскажит переменная перков или характеристик героев?

0

26

Nitnelav написал(а):

f.navp - Кто подскажит переменная перков или характеристик героев?

Функция роста (!только роста!) параметров персонажей.
Работает только с переменной номера персонажа в параметре id
args[0] - Номер параметра

0

27

Ясно спасибо очень рад что проект не заброшен!!!

0


Вы здесь » Школьные будни » Моды для РЗ » Гайды для мододелов РЗ