AndreY.eXe
Специалист
Привет!
Когда-то давным-давно (12.12.2017
) я делал "уникальную" систему посадки на диван/кресло. Тогда, это была моя первая работа на Pawno Info.
И вот, вспомнив про неё, я решил её переделать на MySQL, так сказатт, полностью ДИНАМИЧНА! Погнали:
З.Ы: Тут я использовал MySQl R39-5 (кто захочет - изменит, И НЕ ПИШИТЕ МНЕ ПО ПОВОДУ ЭТОГО - Я НЕ СТАНУ ПОДСТРАИВАТЬ СИСТЕМУ ПОД ВАШ MYSQL)
В начало мода:
В OnGameModeInit:
В конец мода:
В OnPlayerKeyStateChange:
MySQL запрос, чтобы создать таблицу seatdowns:
Вот и все! Надеюсь, Вы возьмете эту систему себе
З.Ы: Если нашли ошибку - напишите, исправлю!
Когда-то давным-давно (12.12.2017
И вот, вспомнив про неё, я решил её переделать на MySQL, так сказатт, полностью ДИНАМИЧНА! Погнали:
З.Ы: Тут я использовал MySQl R39-5 (кто захочет - изменит, И НЕ ПИШИТЕ МНЕ ПО ПОВОДУ ЭТОГО - Я НЕ СТАНУ ПОДСТРАИВАТЬ СИСТЕМУ ПОД ВАШ MYSQL)
В начало мода:
PHP:
#define MAX_DOWNS 100 // Максимальное кол-во кресел/диванов, на которые можно будет сесть
new
Float: SeatDownX[MAX_DOWNS],
Float: SeatDownY[MAX_DOWNS],
Float: SeatDownZ[MAX_DOWNS],
Float: SeatDownA[MAX_DOWNS],
TOTALDOWNS;
PHP:
LoadSeatDowns();
PHP:
LoadSeatDowns()
{
// переменную mysql меняете на свою
mysql_query(mysql, "select * from `seatdowns`");
TOTALDOWNS = cache_get_row_count(mysql);
if(!TOTALDOWNS)return print("Посадки на загружены!");
for(new i; i < TOTALDOWNS; i ++)
{
SeatDownX[i] = cache_get_row_float(i, 0, mysql);
SeatDownY[i] = cache_get_row_float(i, 1, mysql);
SeatDownZ[i] = cache_get_row_float(i, 2, mysql);
SeatDownA[i] = cache_get_row_float(i, 3, mysql);
Create3DTextLabel("Нажмите: ALT", -1, SeatDownX[i], SeatDownY[i], SeatDownZ[i], 2, -1);
}
printf("Всего посадок загружено: %d", TOTALDOWNS);
return true;
}
PHP:
CMD:addseatdown(playerid)
{
// переменную mysql меняете на свою
/* Ваши проверки на adm и пр. */
GetPlayerPos(playerid, SeatDownX[TOTALDOWNS], SeatDownY[TOTALDOWNS], SeatDownZ[TOTALDOWNS]);
GetPlayerFacingAngle(playerid, SeatDownA[TOTALDOWNS]);
static const mysql_str[] = "insert into `seatdowns` (`PosX`, `PosY`, `PosZ`, `PosA`) values ('%f', '%f', '%f', '%f')";
new str[sizeof(mysql_str) + (10*4)];
format(str, sizeof(str), mysql_str, SeatDownX[TOTALDOWNS], SeatDownY[TOTALDOWNS], SeatDownZ[TOTALDOWNS], SeatDownA[TOTALDOWNS]);
mysql_query(mysql, str, false);
SendClientMessage(playerid, -1, "Вы успешно создали новую посадку!");
Create3DTextLabel("Нажмите: ALT", -1, SeatDownX[TOTALDOWNS], SeatDownY[TOTALDOWNS], SeatDownZ[TOTALDOWNS], 2, -1);
TOTALDOWNS++;
return true;
}
PHP:
if(newkeys == KEY_WALK)
{
for(new i; i < TOTALDOWNS; i ++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, SeatDownX[i], SeatDownY[i], SeatDownZ[i]))
{
SetPlayerPos(playerid, SeatDownX[i], SeatDownY[i], SeatDownZ[i]);
SetPlayerFacingAngle(playerid, SeatDownA[i]);
ApplyAnimation(playerid, "PED", "SEAT_down", 4.1, 0, 0, 0, 1, 0, 1);
break;
}
}
}
if(newkeys == 16) // Если нажмешь - встанешь!
{
// Проверку сами добавите
ApplyAnimation(playerid, "PED", "IDLE_STANCE", 4.1, 0, 0, 0, 0, 0);
}
PHP:
CREATE TABLE `seatdowns` (`PosX` FLOAT NOT NULL, `PosY` FLOAT NOT NULL, `PosZ` FLOAT NOT NULL, `PosA` FLOAT NOT NULL);
Вот и все! Надеюсь, Вы возьмете эту систему себе
З.Ы: Если нашли ошибку - напишите, исправлю!
Последнее редактирование:
