Expert
Умник
Накидал за несколько минут систему динамического создания скамеек.
Все очень легко и просто, для создания используем команду
Ставим скамейку в нужное место и пользуемся :bf:
И так начнем.
Ко всем переменным:
В OnGameModeInit:
Ко всем командам OnPlayerCommandText:
В OnPlayerEditObject:
В public OnPlayerKeyStateChange:
В Конец мода для загрузки скамеек из БД:
Сама таблица:
Изображения:
Ошибок быть не должно, если что пишите, исправим :dn:
Все очень легко и просто, для создания используем команду
PHP:
/addseat
И так начнем.
Ко всем переменным:
PHP:
#define TABLE_SKAMY "skameyki"
enum sInfo
{
sid,
Float:sCordX,
Float:sCordY,
Float:sCordZ,
Float:sCordR,
Text3D: sText
};
new SInfo[150][sInfo];
new TOTALSKAMEYKA;
new skameyka;
PHP:
mysql_function_query(PAWNO_INFO, "SELECT * FROM `"TABLE_SKAMY"`", true, "LoadSkameyki","");
PHP:
if(strcmp(cmd, "/addseat", true) == 0)
{
if(GetPVarInt(playerid, "Login") == 0) return 1;
new Float:xg, Float:yg,Float:zg,Float:rg;
GetPlayerPos(playerid, xg,yg,zg), GetPlayerFacingAngle(playerid,rg);
SetPVarInt(playerid, "addskm", 1);
TOTALSKAMEYKA++;
skameyka = CreateObject(1256, xg+1, yg+1, zg+1, 0.0,0.0,0.0);
EditObject(playerid, skameyka);
return 1;
}
PHP:
if(GetPVarInt(playerid, "addskm") == 1)
{
if(response == 1)
{
SInfo[TOTALSKAMEYKA][sid] = TOTALSKAMEYKA;
SInfo[TOTALSKAMEYKA][sCordX] = fX;
SInfo[TOTALSKAMEYKA][sCordY] = fY;
SInfo[TOTALSKAMEYKA][sCordZ] = fZ;
SInfo[TOTALSKAMEYKA][sCordR] = fRotZ;
f(query_mysql, "INSERT INTO `"TABLE_SKAMY"` (`id`, `X`, `Y`, `Z`, `R`) VALUE ('%i', '%f', '%f', '%f', '%f')", TOTALSKAMEYKA, fX, fY, fZ, fRotZ);
mysql_function_query(PAWNO_INFO, query_mysql, false, "","");
SInfo[TOTALSKAMEYKA][sText] = CreateDynamic3DTextLabel("{4682B4}Нажмите\n"W"H\n{4682B4}Чтобы присесть",0xFEFEFEFF,SInfo[TOTALSKAMEYKA][sCordX], SInfo[TOTALSKAMEYKA][sCordY], SInfo[TOTALSKAMEYKA][sCordZ]+1.0,10.0);
DestroyObject(skameyka);
CreateDynamicObject(1256,SInfo[TOTALSKAMEYKA][sCordX],SInfo[TOTALSKAMEYKA][sCordY],SInfo[TOTALSKAMEYKA][sCordZ],0.0,0.0,SInfo[TOTALSKAMEYKA][sCordR]);
DeletePVar(playerid, "addskm");
SendMes(playerid,color_grey,"{00CED1}Скамейка номер %i успешно создана и сохранена в базу данных.",TOTALSKAMEYKA);
return 1;
}
}
PHP:
if(newkeys & KEY_CTRL_BACK)
{
if(GetPVarInt(playerid, "player_seat") == 1)
{
ApplyAnimation(playerid,"ped","SEAT_up", 4, 0, 0, 0, 0, 0);
DeletePVar(playerid, "player_seat");
return 1;
}
for(new i = 1; i <= TOTALSKAMEYKA; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0,SInfo[i][sCordX],SInfo[i][sCordY],SInfo[i][sCordZ]))
{
SetPlayerFacingAngle(playerid, SInfo[i][sCordR]-80);
ApplyAnimation(playerid,"INT_HOUSE","LOU_In", 4, 0, 0, 0, 1, 0);
SetPVarInt(playerid,"player_seat",1);
return true;
}
}
}
PHP:
public LoadSkameyki()
{
new time = GetTickCount();
new rows,fields;
cache_get_data(rows,fields);
if(rows)
{
for(new idx = 1; idx <= rows; idx++)
{
SInfo[idx][sid] = cache_get_field_int(idx-1, "id", PAWNO_INFO);
SInfo[idx][sCordX] = cache_get_field_float(idx-1, "X", PAWNO_INFO);
SInfo[idx][sCordY] = cache_get_field_float(idx-1, "Y", PAWNO_INFO);
SInfo[idx][sCordZ] = cache_get_field_float(idx-1, "Z", PAWNO_INFO);
SInfo[idx][sCordR] = cache_get_field_float(idx-1, "R", PAWNO_INFO);
CreateDynamicObject(1256,SInfo[idx][sCordX],SInfo[idx][sCordY],SInfo[idx][sCordZ],0.0,0.0,SInfo[idx][sCordR]);
SInfo[idx][sText] = CreateDynamic3DTextLabel("{4682B4}Нажмите\n"W"H\n{4682B4}Чтобы присесть",0xFEFEFEFF,SInfo[idx][sCordX], SInfo[idx][sCordY], SInfo[idx][sCordZ]+1.0,10.0);
TOTALSKAMEYKA++;
}
}
printf("[Система скамеек]: загружено %i скамеек за %i мс.", TOTALSKAMEYKA, GetTickCount()-time);
return 1;
}
PHP:
CREATE TABLE IF NOT EXISTS `skameyki` (
`id` int(5) NOT NULL,
`X` varchar(12) NOT NULL DEFAULT '0.0',
`Y` varchar(12) NOT NULL DEFAULT '0.0',
`Z` varchar(12) NOT NULL DEFAULT '0.0',
`R` varchar(12) NOT NULL DEFAULT '0.0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ошибок быть не должно, если что пишите, исправим :dn:
