PDA

Просмотр полной версии : [Вопрос] фракции и подфракции



Batya_Montes
02.07.2017, 15:41
Привет, ребята. Сегодня я хотел бы уточнить насчет динамических фракций и подфракций.
Как себе я представляю есть основная таблица фракций, со структурой: frac_id, frac_name, другие параметры (склад, патроны и так далее)
А так же, таблица подфракций привязанных к фракции, со структурой: subfrac_id, frac_id, subfrac_name, другие параметры (склад, патроны и так далее)
Собственно вопрос в том, как все это распределить в моде. Ведь некоторые фракции могут не иметь подфракции.
Хотелось бы конкретно на примере, допустим основная фрака
frac_id = 1, frac_name = МВД
то, тогда подфракции будут - subfrac_id = 1, frac_id = 1, subfrac_name = ЛСПД
а так же например просто фракция без подфрак.. - frac_id = 2, frac_name = ГРУВ.
как все это правильно соединить в моде и сделать функционал для каждой фракции и подфракции?

- - - Добавлено - - -

Ах да, забыл упомянуть что еще будет таблица с званиями и это тоже как-то распределить нужно.
А так же, что у каждой фракции (с подфракциями) - министр.

DeimoS
02.07.2017, 20:36
Не совсем понятна идея фракций и подфракций. Какое предназначения у этих самых подфракций? Для чего такое разделение вообще?

$continue$
02.07.2017, 22:10
Типо как на ARP (Advance RP). Т.е фракция: МВД, под фракции: LSPD, LVPD, SFPP, так же типо: МЗ (Министерство здравоохранения). Под фракции: Hospital LS, Hospital SF, Hospital LV.

МВД - фракция. Может назначать лидеров на эти самые под фракции. Увольнять мемберов фракции и т.д

Не совсем понятна идея фракций и подфракций. Какое предназначения у этих самых подфракций? Для чего такое разделение вообще?

Автор: не понятно одно, что Вам конкретно не понятно?


const MAX_NAME_SUBFRACTION = 32;
const MAX_NAME_FRACTION = 32;
enum e_fraction_info
{
fraction_name[MAX_NAME_FRACTION],
subfraction1[MAX_NAME_SUBFRACTION],
subfraction2[MAX_NAME_SUBFRACTION],
subfraction3[MAX_NAME_SUBFRACTION],
subfraction_id1,
subfraction_id2,
subfraction_id3
}
static const fraction_name[2][e_fraction_info] =
{
{ "МВД", "LSPD", "SFPD", "LVPD", 1, 2, 3 },
{ "МЗ", "Hospital LS", "Hospital SF", "Hospital LV", 5, 6, 7 },
}


А, вообще если работать с базой, то создать связанную таблицу с fraction и subfraction. Если при ссылке на subfraction ключа не будет, то соответственно нет под фракции.

Batya_Montes
02.07.2017, 22:20
Типо как на ARP (Advance RP). Т.е фракция: МВД, под фракции: LSPD, LVPD, SFPP, так же типо: МЗ (Министерство здравоохранения). Под фракции: Hospital LS, Hospital SF, Hospital LV.

МВД - фракция. Может назначать лидеров на эти самые под фракции. Увольнять мемберов фракции и т.д


Автор: не понятно одно, что Вам конкретно не понятно?


const MAX_NAME_SUBFRACTION = 32;
const MAX_NAME_FRACTION = 32;
enum e_fraction_info
{
fraction_name[MAX_NAME_FRACTION],
subfraction1[MAX_NAME_SUBFRACTION],
subfraction2[MAX_NAME_SUBFRACTION],
subfraction3[MAX_NAME_SUBFRACTION],
subfraction_id1,
subfraction_id2,
subfraction_id3
}
static const fraction_name[2][e_fraction_info] =
{
{ "МВД", "LSPD", "SFPD", "LVPD", 1, 2, 3 },
{ "МЗ", "Hospital LS", "Hospital SF", "Hospital LV", 5, 6, 7 },
}


А, вообще если работать с базой, то создать связанную таблицу с fraction и subfraction. Если при ссылке на subfraction ключа не будет, то соответственно нет под фракции.

Как сделать при помощи массива - мне понятно. Суть в том, что мне не понятно как все связать в моде после выгрузки из БД, то бишь - динамическая система.

- - - Добавлено - - -


Не совсем понятна идея фракций и подфракций. Какое предназначения у этих самых подфракций? Для чего такое разделение вообще?

Аля система как на адванс рп. Есть допустим фрака МВД, у нее министр свой, который управляет подфраками которые относятся к фраке.

DeimoS
02.07.2017, 23:32
Это далеко не динамическая система, не обманывай себя :) То, что данные хранятся в БД, не означает ничего, ибо эти данные имеют прямую зависимость от информации из мода (уверен, что все проверки на фракционные пикапы и т.п. прописаны именно через мод, а не так же зависят от данных в БД). Система была бы динамичной лишь в том случае, если реализация в моде напрямую зависела бы от информации из таблицы (например, если бы можно было изменить ID фракции LSPD в таблице с 1 на 10 и всё, при этом, работало бы как раньше).

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



Так в чём проблема?
Создаёшь первую таблицу, в которой будут названия фракций со структурой:

fraction_id | fraction_name
/*
fraction_id - ID фракции (AUTO_INCREMENT)
fraction_name - название фракции
*/

Далее создаёшь таблицу, в которой будет хранится информация о том, какой у фракции тип и какие зависимости (фракция/подфракция).

Структура следующая:

id | fraction_id | parent_fraction
/*
id - AUTO_INCREMENT
fraction_id - ID (под)фракции, для которой устанавливаем зависимость
parent_fraction - ID фракции, которая является главенствующей (0 - главенствующей фракции нет)
*/

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


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

phpadmin
03.07.2017, 13:37
Лол все фракции это просто ограничения, запреты и доступы. Нет какой-то под фракции это все на защитах.

Там система у всех одна и таже, но просто запреты на командах, запреты запреты и т.д

DeimoS
03.07.2017, 17:12
Лол все фракции это просто ограничения, запреты и доступы. Нет какой-то под фракции это все на защитах.

Там система у всех одна и таже, но просто запреты на командах, запреты запреты и т.д

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

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

Batya_Montes
03.07.2017, 17:37
Речь идёт о реализации всего этого через базу данных, дабы не приходилось каждую новую фракцию прописывать везде вручную. Этот подход очень правильный.

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

Предполагалось что пикапы и машинки будут так же в базе. Но все равно я не могу допереть с этими фракциями до конца. Ибо без наглядного кода как-то вообще все запутанно становится.

DeimoS
03.07.2017, 18:07
Предполагалось что пикапы и машинки будут так же в базе. Но все равно я не могу допереть с этими фракциями до конца. Ибо без наглядного кода как-то вообще все запутанно становится.

Ну тогда возьми бумажку с ручкой и справа напиши исходное положение (фракция МВД и её подфракции), а слева результат, который тебя интересует. А в центре начинай накидывать промежуточные шаги для того, чтоб от изначального положения прийти к конечному. И уже если не будешь понимать каким должен быть один из следующих шагов, пиши сюда и подскажем.

А от готового кода толку мало, ибо:
1) Не совсем понятно что именно ты хочешь, поэтому и готовый код не написать
2) С готовым кодом ты не сможешь понять основных принципов, по которым работает система и из-за этого будешь работать с ней неправильно. Да и в случае багов не сможешь быстро всё исправить.