Kosty66
Специалист
Мне зафлудили в скайпе, как выдать ключи к воротам в моде StrikeArena. Я щас не только объясню как давать ключи, но и как сделать такие ворота.
Автор: Kosty66.
Дата выполнения урока: 04.06.2012.
В поисковике на сайте Pawno-Info: Такой урок не найден.
Проверено на моде "StrikeArena v7.1 финальная версия (version 8.0)"
Спасибо За Внимание.
Автор: Kosty66.
Дата выполнения урока: 04.06.2012.
В поисковике на сайте Pawno-Info: Такой урок не найден.
Начнём.
Добавим к форвардам.
PHP:
forward VorotaName();
Добавим к New.
PHP:
new VorotaName,VorotaNametimer;
В public OnGameModeInit().
PHP:
VorotaName = CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ);
P.S.:
PHP:
modelid ИД модели объекта.
Float:X Координата X на карте.
Float:Y Координата Y на карте.
Float:Z Координата Z на карте.
Float:rX Угол поворота объекта по оси X.
Float:rY Угол поворота объекта по оси Y.
Float:rZ Угол поворота объекта по оси Z.
Возвращает ИД только что созданного объекта.
Команда /opengate должна выглядит, примерно так .
PHP:
if ((strcmp(cmd, "/opengate", true)==0) || (strcmp(cmd, "/openg", true)==0))
{
//================================================== ========== Проверка на авторизацию
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, "* Авторизуйся!");
return 1;
}
new redname[MAX_PLAYER_NAME];
GetPlayerName(playerid, redname, sizeof(redname));
//================================================== ============ По Нику.
else if(PlayerToPoint(дистанция,playerid,x,y,z)) // ПРИМЕР: else if(PlayerToPoint(25.0,playerid,320.074,-1186.506,77.109))
{
if (!strcmp(redname, "kosty66", true) || !strcmp(redname, "Pawno_Info", true) || !strcmp(redname, "Forest_Okda", true) || !strcmp(redname, "Хз ещё кто-нить", true)) // Ники для которых открываются ворота
{
MoveObject(VorotaName, 321.349609375, -1188.294921875, 68.127265930176,3); // Сами ворота
VorotaNametimer = SetTimer(VorotaName", 7000, 0); //VorotaName - Название вызываемой функции, 7000 - Время, через которая функция будет выполнена в миллисекундах, 0 Будет ли функция повторятся?.
}
else{SendClientMessage(playerid, COLOR_YELLOW, "* Вы не Kosty66 или не арендуете у него дом.");} // А если откроет другой? Не остаылять же это без действия, а то скажут БАГ!
}
//================================================== =========== Для Фракции.
else if(PlayerToPoint(дистанция,playerid,x,y,z))
{
if((PlayerInfo[playerid][pMember]>=1)) || (PlayerInfo[playerid][pAdmin]>=4)) // Могут открыть сотрудники, но не лидер ЛиСиПиДи и Админ выше 4 уровня.
{
MoveObject(lspdgate,1588.509521, -1637.965698, 9.261518,3); // lspdgate - это тоже самое что мы писали по Нику "VorotaName", только сделана другая переменная, так же как написано выше.)))
lspdgatetimer = SetTimer("lspdGate", 7000, 0); // Всё тоже самое, что написано выше.
}
else{SendClientMessage(playerid, COLOR_YELLOW, "* Вы не состоите в ЛиСиПиДи!");} // А если откроет другой? Не остаылять же это без действия, а то скажут БАГ!
}
return 1;
}
}
Создадим Паблик.
PHP:
public VorotaName()
{
MoveObject(mitgate,X, Y, Z); // Координаты
KillTimer(VorotaNametimer);
return 0;
}
Спасибо За Внимание.
