Softwаrе
Ученик
Система группировок[ALL]
Решил выложить свою систему группировок (банд).
Система написана на MySQL R7, динамическое создание группировок.
Функционал:
- создание банды из игры.
- смена спавна банды
- смена имени банды
- смена скина.
Ко всем переменным добавляем:
Ко всем дефайнам:
В public OnPlayerSpawn:
Ко всем диалогам в OnDialogResponse:
В конец мода, загрузка группировок из БД:
Таблица:
Автор: JoinT.
Если что-то забыл пишите, будет дополнено,жду ваших комментариев.
Решил выложить свою систему группировок (банд).
Система написана на MySQL R7, динамическое создание группировок.
Функционал:
- создание банды из игры.
- смена спавна банды
- смена имени банды
- смена скина.
Ко всем переменным добавляем:
PHP:
enum // Dialog's
{
d_creategangname,
d_gangname,
d_ganginfo,
d_gangskin,
d_gangstats
};
#define MAX_CLAN 200
enum cInfo
{
id,
Name[MAX_PLAYER_NAME],
Level,
Driftscore,
Money,
Maxplayer,
Skin,
Float: SpawnX,
Float: SpawnY,
Float: SpawnZ,
Float: SpawnA,
};
new CInfo[MAX_CLAN][cInfo];
new TOTALCLAN;
Ко всем дефайнам:
PHP:
#define PlayerName(%0) PlayerInfo[%0][Name]
#define TABLE_CLAN "clan"
#define f(%1, format(%1,sizeof(%1),
#define publics:%0(%1) forward %0(%1); public %0(%1)
PHP:
if(GetPVarInt(playerid, "ClanMember") == 0) SetPlayerSkin(playerid, GetPVarInt(playerid, "Skin"));
else SetPlayerSkin(playerid, CInfo[GetPVarInt(playerid, "ClanMember")][Skin]);
if(GetPVarInt(playerid, "ClanMember") != 0)
{
SetPlayerPos(playerid,CInfo[GetPVarInt(playerid, "ClanMember")][SpawnX],CInfo[GetPVarInt(playerid, "ClanMember")][SpawnY],CInfo[GetPVarInt(playerid, "ClanMember")][SpawnZ]);
SetPlayerFacingAngle(playerid, CInfo[GetPVarInt(playerid, "ClanMember")][SpawnA]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
PHP:
case d_gangstats:
{
switch(listitem)
{
case 0:
{
if(GetPVarInt(playerid, "ClanLeader") != 0) return SendMes(playerid, color_red, "Ты и так управляющий %s",CInfo[GetPVarInt(playerid, "ClanLeader")][Name]);
if(GetPVarInt(playerid, "ClanMember") != 0) return SendMes(playerid, color_red, "Ты и так уже в %s",CInfo[GetPVarInt(playerid, "ClanMember")][Name]);
if(GetPVarInt(playerid, "Money") < 200000) return SendClientMessage(playerid, color_grey, "У тебя нету денег для создания банды, нужно $200.000");
if(GetPVarInt(playerid, "Level") < 50) return SendClientMessage(playerid, color_grey, "У тебя не достаточно опыта для реководства бандой, нужен 50лвл.");
ShowPlayerDialog(playerid,d_creategangname,DIALOG_STYLE_INPUT,"{FF0000}Создание банды",
""W"Тебе доступна функция создания своей группировки.\n\
Для создания группировки необходимо иметь на руках "L"$"R"200"L" 000 и 50 уровень\n\
"W"Если вы не передумали в создании группировки, введите имя вашей будущей банды в поле ниже:\n\n\
"L"Возможности:\n"R"-"W" Смена названия банды, транспорта, места появления, одежды\n\
"R"-"W" Война за территории между кланами и многое другое..","Создать","Отмена");
}
case 1:
{
if(GetPVarInt(playerid, "ClanLeader") != 0)
{
new listitems[] = "Смена spawn'a\nСмена названия\nСмена одежды";
f(stringj,"{FF0000}Редактор %s", CInfo[GetPVarInt(playerid, "ClanLeader")][Name]);
ShowPlayerDialog(playerid, d_ganginfo, DIALOG_STYLE_LIST, stringj, listitems, "Принять", "Отмена");
}
else SendClientMessage(playerid, color_grey, "У тебя нет доступа к этому меню");
}
case 2: return 1;
}
return 1;
}
case d_ganginfo:
{
if(response == 1)
{
if(listitem == 0)
{
new str[250];
new leader = GetPVarInt(playerid, "ClanLeader");
if(GetPlayerInterior(playerid) != 0) return SendClientMessage(playerid, color_white,"Тут невозможно создать спавн!");
GetPlayerPos(playerid,CInfo[leader][SpawnX],CInfo[leader][SpawnY],CInfo[leader][SpawnZ]);
GetPlayerFacingAngle(playerid,CInfo[leader][SpawnA]);
f(str, "UPDATE `"TABLE_CLAN"` SET `SpawnX` = %f, `SpawnY` = %f, `SpawnZ` = %f, `SpawnA` = %f WHERE `id` = '%i'",
CInfo[leader][SpawnX], CInfo[leader][SpawnY], CInfo[leader][SpawnZ], CInfo[leader][SpawnA], leader), mysql_query(str, -1, -1, PAWNO_*****);
SendMes(playerid, color_red, "Спавн банды %s был изменён",CInfo[leader][Name]);
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,d_gangname,DIALOG_STYLE_INPUT,"{FF0000}Смена имени банды","{FFFFFF}Введите имя банды!","Сменить","Отмена");
}
if(listitem == 2)
{
ShowPlayerDialog(playerid,d_gangskin,DIALOG_STYLE_INPUT,"{FF0000}Смена скина банды","{FFFFFF}Введите id cкина для банды","Сменить","Отмена");
}
}
return 1;
}
case d_gangname:
{
if(response == 1)
{
strmid(CInfo[GetPVarInt(playerid, "ClanLeader")][Name], inputtext, 0, strlen(inputtext), MAX_PLAYER_NAME);
CInfo[GetPVarInt(playerid, "ClanLeader")][Name] = strval(inputtext);
format(CInfo[GetPVarInt(playerid, "ClanLeader")][Name],32,inputtext);
SetClanStr(GetPVarInt(playerid, "ClanLeader"), "Name", inputtext);
SendMes(playerid, color_red, "Новое имя банды : (ID:%d) %s",GetPVarInt(playerid, "ClanLeader"),inputtext);
}
return 1;
}
case d_gangskin:
{
if(response == 1)
{
new str[250];
CInfo[GetPVarInt(playerid, "ClanLeader")][Skin] = strval(inputtext);
f(str, "UPDATE `"TABLE_CLAN"` SET `Skin` = %i WHERE `id` = '%i'",
CInfo[GetPVarInt(playerid, "ClanLeader")][Skin], GetPVarInt(playerid, "ClanLeader")), mysql_query(str, -1, -1, PAWNO_*****);
SetPlayerSkin(playerid, CInfo[GetPVarInt(playerid, "ClanLeader")][Skin]);
SendMes(playerid, color_red, "Вы сменили скин банды на: %i",CInfo[GetPVarInt(playerid, "ClanLeader")][Skin]);
}
return 1;
}
case d_creategangname:
{
if(response == 1)
{
TOTALCLAN++;
static query_mysql[350];
CInfo[TOTALCLAN][id] = TOTALCLAN;
CInfo[TOTALCLAN][Level] = 0;
CInfo[TOTALCLAN][Driftscore] = 0;
CInfo[TOTALCLAN][Money] = 0;
CInfo[TOTALCLAN][Maxplayer] = 10;
CInfo[TOTALCLAN][SpawnX] = 1672.4862;
CInfo[TOTALCLAN][SpawnY] = -2275.4907;
CInfo[TOTALCLAN][SpawnZ] = -1.2467;
CInfo[TOTALCLAN][SpawnA] = 259.1288;
SetPVarInt(playerid, "ClanLeader", TOTALCLAN);
SetPVarInt(playerid, "ClanMember", TOTALCLAN);
strmid(CInfo[TOTALCLAN][Name], inputtext, 0, strlen(inputtext), MAX_PLAYER_NAME);
f(query_mysql, "INSERT INTO `"TABLE_CLAN"` (`id`, `Name`, `Level`, `Driftscore`, `Money`, `Maxplayer`, `Skin`, `SpawnX`, `SpawnY`, `SpawnZ`, `SpawnA`) VALUES ('%i', '%s', '0', '0', '0', '10', '%i', '1672.4862', '-2275.4907', '-1.2467', '259.1288')",
TOTALCLAN, inputtext, GetPlayerSkin(playerid)), mysql_function_query(PAWNO_*****, query_mysql, false, "","");
SendMes(playerid, color_red, "Ты успешно создал свою группировку! Её номер: "A"%i",TOTALCLAN);
SendMes(playerid, color_red, "Название твоей группировки: "A"%s",inputtext);
SendMes(playerid, color_red, "Для управления ею используй "A"'Главное меню "L">> "A"Разное "L">> "A"Группировка'");
}
return 1;
}
PHP:
publics: LoadClanInfo()
{
new time = GetTickCount();
new temp[32],rows,fields;
cache_get_data(rows,fields,PAWNO_*****);
if(rows)
{
for(new idx = 1; idx <= rows; idx++)
{
cache_get_field_content(0,"id",temp,PAWNO_*****), CInfo[idx][id] = strval(temp);
cache_get_field_content(0,"Name",CInfo[idx][Name],PAWNO_*****);
cache_get_field_content(0,"Level",temp,PAWNO_*****), CInfo[idx][Level] = strval(temp);
cache_get_field_content(0,"Driftscore",temp,PAWNO_*****), CInfo[idx][Driftscore] = strval(temp);
cache_get_field_content(0,"Money",temp,PAWNO_*****), CInfo[idx][Money] = strval(temp);
cache_get_field_content(0,"Maxplayer",temp,PAWNO_*****), CInfo[idx][Maxplayer] = strval(temp);
cache_get_field_content(0,"Skin",temp,PAWNO_*****), CInfo[idx][Skin] = strval(temp);
cache_get_field_content(0,"SpawnX",temp,PAWNO_*****), CInfo[idx][SpawnX] = floatstr(temp);
cache_get_field_content(0,"SpawnY",temp,PAWNO_*****), CInfo[idx][SpawnY] = floatstr(temp);
cache_get_field_content(0,"SpawnZ",temp,PAWNO_*****), CInfo[idx][SpawnZ] = floatstr(temp);
cache_get_field_content(0,"SpawnA",temp,PAWNO_*****), CInfo[idx][SpawnA] = floatstr(temp);
TOTALCLAN++;
}
}
printf(" [SMSG]: Успешная загрузка 'LoadClan' - загружено %d за %d м.с", TOTALCLAN,GetTickCount() - time);
}
stock SetClanInt(idx, stolb[], znach)
{
new query[128];
f(query, "UPDATE "TABLE_CLAN" SET %s = '%i' WHERE id = '%i' LIMIT 1", stolb, znach, idx);
return mysql_query(query, -1, -1, PAWNO_*****);
}
stock SetClanStr(idx, stolb[], znach[])
{
new query[128];
f(query, "UPDATE "TABLE_CLAN" SET %s = '%s' WHERE id = '%i' LIMIT 1", stolb, znach, idx);
return mysql_query(query, -1, -1, PAWNO_*****);
}
PHP:
CREATE TABLE `clan` (
`id` int(20) NOT NULL auto_increment,
`Name` varchar(32) character set utf8 NOT NULL default 'None',
`Level` int(11) NOT NULL default '0',
`Driftscore` int(11) NOT NULL default '0',
`Money` int(11) NOT NULL default '0',
`Maxplayer` int(11) NOT NULL default '10',
`Skin` int(11) NOT NULL default '0',
`SpawnX` varchar(32) character set utf8 NOT NULL default '0.0',
`SpawnY` varchar(32) character set utf8 NOT NULL default '0.0',
`SpawnZ` varchar(32) character set utf8 NOT NULL default '0.0',
`SpawnA` varchar(32) character set utf8 NOT NULL default '0.0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin AUTO_INCREMENT=16 ;
Если что-то забыл пишите, будет дополнено,жду ваших комментариев.
Последнее редактирование:
