Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Динамическая система создания скамеек [MySQL]

Статус
В этой теме нельзя размещать новые ответы.

Expert

Умник
Накидал за несколько минут систему динамического создания скамеек.
Все очень легко и просто, для создания используем команду
PHP:
/addseat
Ставим скамейку в нужное место и пользуемся :bf:

И так начнем.
Ко всем переменным:

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;
В OnGameModeInit:

PHP:
mysql_function_query(PAWNO_INFO, "SELECT * FROM `"TABLE_SKAMY"`", true, "LoadSkameyki","");
Ко всем командам OnPlayerCommandText:

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;
	}
В OnPlayerEditObject:

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;
		}
	}
В public OnPlayerKeyStateChange:

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:
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу