MrJunior
Компетентный
Здравствуйте. Этот мануал содержит систему дома на колёсах. Сейчас на её опишу:
1. Возможность выдачи/удаление дома на колёсах администратором.
2. Возможность оставить дом на колёсах в месте(он появится там).
3. Возможность войти/выйти из дома на колёсах.
4. Возможность закрыть дом на колёсах.
Ко всему этому говорю что переменные как всегда нужно менять под свои. Всё переменные опишу.
Начнём с создания нужных переменных. Так как при сохранении дома и его координат простые переменные не пойдут то мы будет использовать enum pInfo.
Сперва обычные переменные:
Теперь enum pInfo:
В OnPlayerConnect, OnPlayerDeath, OnPlayerDisconnect:
Идём дальше. Данная система держится на командах. Вот код всех команд. Также присутствует команда /domhelp. Там же и описание всех команд:
OnPlayerCommandText:
Теперь в OnPlayerSpawn:
Основную переменную которую нужно заменить [pAdmin]. Переменная отвечает за админку. Но как правило такая переменная в многих модах и используется.
За основу был взял filtescript Motorhome by Xe0n1X.
Я мог и сам написать но уже был установлен и решил уже взять его за основу.
Всё было написано давно я только решил выложить.
---------- Сообщение добавлено в 17:21 ---------- Предыдущее сообщение добавлено в 17:18 ----------
Совсем забыл:
Есть переменная
IsLocked[carid].
Отвечает за закрытие или открытие дома.
Заменить на свою(можно найти в команде /lock).
Используется в /domlock
----------------------------------------------------------------------------------------------
Вот интерьер: [в OnGameModeInit]
1. Возможность выдачи/удаление дома на колёсах администратором.
2. Возможность оставить дом на колёсах в месте(он появится там).
3. Возможность войти/выйти из дома на колёсах.
4. Возможность закрыть дом на колёсах.
Ко всему этому говорю что переменные как всегда нужно менять под свои. Всё переменные опишу.
Начнём с создания нужных переменных. Так как при сохранении дома и его координат простые переменные не пойдут то мы будет использовать enum pInfo.
Сперва обычные переменные:
PHP:
new Intropic[MAX_PLAYERS], Watching[MAX_PLAYERS], Goto[MAX_PLAYERS], spdomk[MAX_PLAYERS];
PHP:
pPosX,
pPosY,
pPosZ,
pDomK,
PHP:
Intropic[playerid] = 0;
Watching[playerid] = 0;
Goto[playerid] = 0;
OnPlayerCommandText:
PHP:
if(strcmp(cmd, "/park", true) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 508)
{
if(PlayerInfo[playerid][pDomK] != 1) return SCM(playerid, COLOR_RED, "У игрока есть дом на колёсах");
new Float:x, Float:y, Float:z, string[156], playerveh = GetPlayerVehicleID(playerid);
GetVehiclePos(playerveh, x, y, z);
format(string, sizeof(string), "Вы оставили дом на колёсах на координатах: x:%d, y:%d, z:%d", x, y, z);
PlayerInfo[playerid][pPosX] += x;
PlayerInfo[playerid][pPosY] += y;
PlayerInfo[playerid][pPosZ] += z;
SCM(playerid, COLOR_GREEN, string);
}
else
{
SCM(playerid, COLOR_RED, "Вы не пассажир или водитель дома на колёсах.");
}
return 1;
}
if(strcmp(cmd, "/dom", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 5)
{
new giveplayer[MAX_PLAYER_NAME],giveplayerid,sendername[MAX_PLAYER_NAME],string[256], Float:x, Float:y, Float:z;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /dom [id]");
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(PlayerInfo[giveplayerid][pDomK] == 1) return SCM(playerid, COLOR_LIGHTRED, "У человека уже есть дом на колёсах");
if(giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Человек не найден!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerPos(giveplayerid, x, y, z);
format(string, sizeof(string), "Вы выдали %s дом на колесах.", giveplayer);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "Администратор %s выдал вам дом на колёсах.", sendername);
SendClientMessage(giveplayerid, COLOR_YELLOW, string);
SendClientMessage(giveplayerid, COLOR_GREEN, "Введите: /domhelp. Данная команда покажет вам все возможные команды с домом на колёсах");
PlayerInfo[giveplayerid][pDomK] += 1;
CreateVehicle(508, x+5, y+1, z+1, 0, 1, 1, -1, 0);
}
}
return 1;
}
if(strcmp(cmd, "/domenter", true) == 0)
{
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 508 || GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 508)
{
SetPlayerPos(playerid, 2531.9512, -1031.5807, 54.0299);
SetPlayerFacingAngle(playerid, 0);
SetCameraBehindPlayer(playerid);
SetPlayerInterior(playerid, 1);
Intropic[playerid] = GetPlayerVehicleID(playerid);
SendClientMessage(playerid, COLOR_BLUE, "Вы вошли в дом на колёсах. Для выхода введите: /domexit");
}
return 1;
}
if(strcmp(cmd, "/domexit", true) == 0)
{
if(Intropic[playerid] > 0)
{
new Float:x, Float:y, Float:z;
GetVehiclePos(Intropic[playerid],x,y,z);
SetPlayerPos(playerid, x+4, y, z);
SetPlayerInterior(playerid, 0);
Intropic[playerid] = 0;
}
return 1;
}
if(strcmp(cmd, "/domlock", true) == 0)
{
new carid = GetPlayerVehicleID(playerid);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 508)
{
if(IsLocked[carid] == 1)
{
SendClientMessage(playerid, COLOR_GREEN, "Вы открыли дом на колёсах");
IsLocked[carid] = 0;
OnPlayerCommandText(playerid, "/me открыл дом на колёсах.");
}
if(IsLocked[carid] == 0)
{
SendClientMessage(playerid, COLOR_GREEN, "Вы закрыли дом на колёсах");
IsLocked[carid] = 1;
OnPlayerCommandText(playerid, "/me закрыл дом на колёсах.");
}
}
return 1;
}
if(strcmp(cmd, "/domdel", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 5) return SCM(playerid, COLOR_LIGHTRED, "Вы не администратор 5+ уровня");
tmp = strtok(cmdtext, idx), new giveplayerid, giveplayername[MAX_PLAYER_NAME], sendername[MAX_PLAYER_NAME], string[256];
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /domdel [id]");
giveplayerid = ReturnUser(tmp), GetPlayerName(playerid, sendername, sizeof(sendername)), GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
if(PlayerInfo[giveplayerid][pDomK] == 0) return SCM(playerid, COLOR_LIGHTRED, "У игрока нету дома на колёсах. Что-бы выдать ему введите: /dom [id]");
PlayerInfo[giveplayerid][pDomK] = 0;
PlayerInfo[giveplayerid][pPosX] = 0;
PlayerInfo[giveplayerid][pPosY] = 0;
PlayerInfo[giveplayerid][pPosZ] = 0;
format(string, sizeof(string), "Вы удалили у %s дом на колёсах", giveplayername);
SCM(playerid, COLOR_LIGHTGREEN, string);
format(string, sizeof(string), "%s удалил у вас дом на колёсах", sendername);
SCM(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
if(strcmp(cmd, "/domhelp", true) == 0)
{
SendClientMessage(playerid, COLOR_BLUE, "/domhelp - Помощь по командам.");
SendClientMessage(playerid, COLOR_BLUE, "/dom [Для администратора] - Выдать дом игроку, /domdel - Удалить дом у игрока.");
SendClientMessage(playerid, COLOR_BLUE, "/park - Припарковать дом на колёсах.");
SendClientMessage(playerid, COLOR_BLUE, "/domenter - ввойти в дом(Нужно быть пассажиром или водителём дома).");
SendClientMessage(playerid, COLOR_BLUE, "/domexit - выйти из дома(Нужно быть в нём).");
SendClientMessage(playerid, COLOR_BLUE, "/domlock - закрыть дом(Нужно быть в доме за рулём).");
return 1;
}
PHP:
if(PlayerInfo[playerid][pDomK] == 1)
{
if(spdomk[playerid] == 1) return 1;
CreateVehicle(508, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], 0, 1, 1, -1, 0);
spdomk[playerid] = 1;
}
За основу был взял filtescript Motorhome by Xe0n1X.
Я мог и сам написать но уже был установлен и решил уже взять его за основу.
Всё было написано давно я только решил выложить.
---------- Сообщение добавлено в 17:21 ---------- Предыдущее сообщение добавлено в 17:18 ----------
Совсем забыл:
Есть переменная
IsLocked[carid].
Отвечает за закрытие или открытие дома.
Заменить на свою(можно найти в команде /lock).
Используется в /domlock
----------------------------------------------------------------------------------------------
Вот интерьер: [в OnGameModeInit]
PHP:
CreateObject(14385,2530.67553711,-1027.89440918,54.60150909,0.00000000,0.00000000,0.00000000);
CreateObject(2933,2531.25341797,-1020.92291260,54.74554825,0.00000000,0.00000000,0.00000000);
CreateObject(2933,2531.28027344,-1034.87976074,54.74554825,0.00000000,0.00000000,0.00000000);
CreateObject(2933,2532.95117188,-1030.85021973,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2532.94091797,-1022.09344482,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2529.51000977,-1021.40264893,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2531.20898438,-1031.68420410,52.94545364,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2531.18847656,-1025.24841309,52.94545364,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2528.55102539,-1036.16259766,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2528.36547852,-1031.51403809,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2528.34106445,-1026.03588867,54.74554825,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2529.16967773,-1031.40917969,52.92055893,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2528.47314453,-1022.95819092,52.93734360,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2525.23022461,-1025.71997070,54.74554825,0.00000000,0.00000000,0.00000000);
CreateObject(1794,2533.14135742,-1022.39886475,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2531.05029297,-1034.04296875,51.93857193,0.00000000,0.00000000,0.00000000);
CreateObject(2933,2531.14550781,-1034.65258789,52.44554520,0.00000000,0.00000000,0.00000000);
CreateObject(2933,2532.75366211,-1037.10717773,52.44557571,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2532.14990234,-1037.08435059,51.92054367,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2529.33129883,-1037.09753418,51.92054367,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2528.72656250,-1037.08666992,52.44556046,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2530.19360352,-1035.68481445,53.57050705,90.00000000,90.00000000,90.00000000);
CreateObject(2933,2533.78735352,-1037.08166504,53.57477188,90.00000000,90.00000000,180.00000000);
CreateObject(2933,2527.67504883,-1037.08349609,53.57047653,90.00000000,90.00000000,179.99450684);
CreateObject(2933,2532.14501953,-1028.75000000,49.27038193,0.00000000,90.00000000,90.00000000);
CreateObject(2933,2532.73632812,-1028.73999023,49.69539261,0.00000000,90.00000000,90.00000000);
CreateObject(2933,2532.53808594,-1028.44555664,49.82053757,0.00000000,90.00000000,180.00000000);
CreateObject(2933,2532.51074219,-1029.09643555,49.27051926,0.00000000,90.00000000,180.00000000);
CreateObject(2933,2536.45483398,-1028.78076172,53.57050705,90.00000000,90.00000000,90.00000000);
CreateObject(2236,2530.26464844,-1033.59094238,53.05493546,0.00000000,0.00000000,0.00000000);
CreateObject(1433,2531.26562500,-1029.86877441,53.40963364,0.00000000,0.00000000,0.00000000);
CreateObject(1433,2531.29711914,-1029.86804199,53.05961227,0.00000000,180.00000000,0.00000000);
CreateObject(3498,2531.28515625,-1029.88000488,49.36687469,0.00000000,0.00000000,0.00000000);
CreateObject(2133,2532.04809570,-1024.60229492,53.02000046,0.00000000,0.00000000,270.00000000);
CreateObject(2134,2532.04809570,-1025.58801270,53.02000046,0.00000000,0.00000000,270.00000000);
CreateObject(2134,2532.04809570,-1026.58447266,53.02000046,0.00000000,0.00000000,270.00000000);
CreateObject(2133,2531.28686523,-1027.33825684,53.02000046,0.00000000,0.00000000,180.00000000);
CreateObject(2134,2531.93554688,-1027.12622070,53.02000046,0.00000000,0.00000000,230.00000000);
CreateObject(2141,2529.39184570,-1028.29162598,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(2141,2528.39721680,-1028.27893066,53.02993393,0.00000000,0.00000000,270.00000000);
CreateObject(2141,2529.39184570,-1026.30310059,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(2141,2528.38305664,-1026.26110840,53.01482010,0.00000000,0.00000000,270.00000000);
CreateObject(2141,2529.39184570,-1027.31066895,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(989,2534.66259766,-1023.08361816,54.15093994,0.00000000,0.00000000,286.25000000);
CreateObject(989,2528.02099609,-1023.06951904,54.55073547,0.00000000,0.00000000,287.25000000);
CreateObject(1538,2529.08007812,-1031.16210938,51.65485001,0.00000000,0.00000000,270.00000000);
CreateObject(1538,2529.07836914,-1029.66748047,51.57998276,0.00000000,0.00000000,270.00000000);
CreateObject(1538,2529.09326172,-1029.16381836,51.65485001,0.00000000,0.00000000,270.00000000);
CreateObject(1538,2529.84667969,-1029.22412109,51.65778732,0.00000000,0.00000000,180.00000000);
CreateObject(8661,2530.97265625,-1034.77844238,54.23719406,0.00000000,90.00000000,90.00000000);
CreateObject(8661,2532.87353516,-1038.42993164,53.44306183,0.00000000,90.00000000,180.00000000);
CreateObject(8661,2528.61865234,-1042.20947266,54.19131088,0.00000000,90.00000000,0.00000000);
CreateObject(1649,2532.84252930,-1030.51269531,54.69567490,0.00000000,0.00000000,270.00000000);
CreateObject(1649,2532.86010742,-1034.87939453,55.22616959,0.00000000,0.00000000,270.00000000);
CreateObject(1649,2530.75000000,-1034.77307129,55.31372452,0.00000000,0.00000000,180.00000000);
CreateObject(1649,2528.62451172,-1034.96411133,55.31372452,0.00000000,0.00000000,90.00000000);
CreateObject(1498,2532.86254883,-1030.83801270,53.02993393,0.00000000,0.00000000,270.00000000);
CreateObject(2911,2529.58544922,-1025.12622070,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(2933,2531.09887695,-1027.45715332,56.27935028,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2527.71777344,-1027.45788574,56.27909088,90.00000000,90.00000000,0.00000000);
CreateObject(2933,2530.38769531,-1033.46655273,56.27233124,90.00000000,90.00000000,90.00000000);
CreateObject(2933,2532.91186523,-1021.36553955,55.75210571,90.00000000,90.00000000,90.00000000);
CreateObject(2303,2529.00952148,-1031.19226074,53.02993393,0.00000000,0.00000000,90.00000000);
CreateObject(8661,2529.58496094,-1015.38922119,56.46629715,0.00000000,90.00000000,0.00000000);
Последнее редактирование:
