- Регистрация
- 4 Янв 2018
- Сообщения
- 19
- Лучшие ответы
- 0
- Репутация
- 5
Командный процессор: DC_CMD
Что в себя включает данная система:
Смена названия фракции: ✓
Смена рангов: ✓
Первым делом,заходим в нашу базу данных,затем создаём таблицу,к примеру с названием `ORGS`
Вписываем поля:
ID - Integer
NAME - Varchar [64]
RANK1- Varchar [32]
RANK2- Varchar [32]
RANK3- Varchar [32]
RANK4- Varchar [32]
RANK5- Varchar [32]
Дальше можете вставить и бюджет,и всё что угодно.
Не обращайте внимание на количество рангов,лично я поставил для своего мода столько,вы можете сделать по-другому.
Далее,нажимаем нажимаем `вставить` и вставляем вручную ваши ID и имена,ранги фракций и тд.
Идём в мод,объявляем трехмерный массив
PHP:
new F_RANKS[количество фракций][количество рангов][размер];
Итого получилось:
new F_RANKS[7][5][32]; // 7 фракций,5 рангов
PHP:
enum Orgs {
ID,
NAME[64]
};
new Org[7][Orgs];
В OnGameModeInit:
PHP:
mysql_tquery(ваша база данных,"SELECT * FROM `ORGS`", "LOAD_ORG");
PHP:
forward LOAD_ORG();
public LOAD_ORG()
{
new time = GetTickCount(); // это делается для того,чтобы узнать время загрузки фракций
new row_counts;
cache_get_row_count(row_counts); // узнаем сколько в таблице строк
for(new i = 0; i < row_counts; i++)
{
new tt; // это делается для определения ID фракции
cache_get_value_name_int(i, "ID", tt);
cache_get_value_name(i, "NAME", Org[tt][NAME]);
cache_get_value_name(i, "RANK1", F_RANKS[tt][0]);
cache_get_value_name(i, "RANK2", F_RANKS[tt][1]);
cache_get_value_name(i, "RANK3", F_RANKS[tt][2]);
cache_get_value_name(i, "RANK4", F_RANKS[tt][3]);
cache_get_value_name(i, "RANK5", F_RANKS[tt][4]);
}
return printf("MYSQL: Фракции загружены за %d мс.",GetTickCount() - time);
}
PHP:
CMD:frcontrol(playerid)
{
ShowPlayerDialog(playerid, ид диалога,у меня D_LEADER+1, DIALOG_STYLE_LIST, "Лид-меню", "{FFFFFF}[•] Изменить название фракции\n[•] Изменить название рангов\n[•] Изменить бюджет фракции\n[•] Оффлайн состав\n[•] Расформировать состав", "Выбрать", "Отмена");
return 1;
}
PHP:
case D_LEADER+1:
{
if(response)
{
switch(listitem)
{
case 0:
{
ShowPlayerDialog(playerid,D_LEADER+2,DIALOG_STYLE_INPUT,"Лид-меню","{3366FF}•{FFFFFF} Введите новое название организации,длиною 64 символа","Ввод","Назад");
}
case 1:
{
new string[1024];
new frac = АккаунтДата[playerid][Фракция]; // Это делается для того,чтобы не писать длинную штуковину типо Org[АккаунтДата[playerid][ФРАКЦИЯ]][NAME]; , в этом можно запутаться
for(new i; i < 5; i++) // указываем количество рангов
{
format(string,sizeof(string),"%s[№ %d]: %s\n",string,i+1,F_RANKS[frac][i]);
}
ShowPlayerDialog(playerid,D_LEADER+3,DIALOG_STYLE_LIST,"Лид-меню",string,"Изменить","Назад");
case D_LEADER+3:
{
if(response)
{
SetPVarInt(playerid,"SETNAMERANK",listitem); // можно также и использовать массив
ShowPlayerDialog(playerid,D_LEADER+4,DIALOG_STYLE_INPUT,"Лид-меню","{3366FF}•{FFFFFF} Введите название ранга,длиною 32 символа.\n{3366FF}•{FFFFFF} Не советуем ставить ранги с нецензурной бранью,за это выдается выговор","Ввод","Назад");
}
else cmd::frcontrol(playerid); // Возвращаем команду лид-панели игроку,если он нажал на escape или 'назад'
}
case D_LEADER+4:
{
if(response)
{
if(strlen(inputtext) < 3 || strlen(inputtext) > 32) return ShowPlayerDialog(playerid,D_LEADER+4,DIALOG_STYLE_INPUT,"Лид-меню","{3366FF}•{FFFFFF} Введите название ранга,длиною 32 символа.\n{3366FF}•{FFFFFF} Не советуем ставить ранги с нецензурной бранью,за это выдается выговор","Ввод","Назад");
new query[256];
new frac = АккаунтДата[playerid][Фракция];
new sl = GetPVarInt(playerid,"SETNAMERANK");
strmid(F_RANKS[frac][sl],inputtext,0,32,32);
сфкм(playerid,-1,"Ранг №%d изменен на %s", sl+1,inputtext);
format(query, sizeof(query), "UPDATE `ORGS` SET `RANK%d` = '%s' WHERE `id` = '%d'",sl+1,inputtext, frac);
mysql_tquery(база данных, query, "", "");
DeletePVarInt(playerid,"SETNAMERANK");
}
}
}
case D_LEADER+2:
{
if(response)
{
if(strlen(inputtext) < 3 || strlen(inputtext) > 64) return ShowPlayerDialog(playerid,D_LEADER+2,DIALOG_STYLE_INPUT,"Лид-меню","{3366FF}•{FFFFFF} Введите новое название организации,длиною 32 символа","Ввод","Назад");
new query[256];
new frac = Аккаунта[playerid][pFrac];
strmid(Org[frac][NAME],inputtext,0,64,64);
сфкм(playerid,-1,"- Название фракции переименовано в %s",inputtext);
format(query, sizeof(query), "UPDATE `ORGS` SET `NAME` = '%s' WHERE ID = '%d'",inputtext, frac);
mysql_tquery(база данных, query, "", "");
}
}
PHP:
CMD:radio(playerid,params[])
{
if(sscanf(params, "s[128]", params[0])) return SendClientMessage(playerid, -1, "/r [текст]");
new frac = АккаунтДата[playerid][Фракция];
new string[144];
format(string,sizeof(string),"{1c9ce4}[R][%d][%s] %s: {FFFFFF}%s",АккаунтДата[playerid][Ранг],F_RANKS[frac][АккаунтДата[playerid][Ранг] - 1],АккаунтДата[playerid][Имя],params[0]);
Отправка Сообщения фракции(playerid,-1,string);
return 1;
}
PHP:
new frac = Аккаунта[playerid][pFrac];
format(string,sizeof(string),"{FFFFFF}имя: {3366FF}%s{FFFFFF}\n", Org[frac][NAME]);
Скриншоты:
Обратите внимание,что на скрине другое количество рангов,здесь я просто сменил все по-другому
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование: