Marvellous 271 Опубликовано 26 августа, 2017 Всем привет,а точнее доброй ночи! Сегодня мне в соц.сеть написал пользователь с данного портала и попросил помочь сделать ему ворота! Но ворота нужны ему были что бы на кнопку Y и не сидя в машине! Посмотрел я данный портал и не нашел этого решения,есть решение только в машине,а пешком нет! И так думаю начнем: Ко всем new new GateCop; new GateMove = 0; В public OnPlayerKeyStateChange добавим(для тех кто в авто) if(newkeys == 65536 && !IsPlayerInAnyVehicle(playerid) || newkeys == 2 && IsPlayerInAnyVehicle(playerid)) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//ID фракции пишем свой if(IsPlayerInRangeOfPoint( playerid, 15.0, 2579.8472, -2435.3928, 23.5669))//координаты закрытых ворот { if(GateMove == 0) { MoveObject(GateCop, 2579.8472, -2435.3928, 17.9227, 2.0);//координаты открытых GateMove = 1; } else if(GateMove == 1) { MoveObject(GateCop, 2579.8472, -2435.3928, 23.5669, 2.0);//координаты закрытых GateMove = 0; } } } В public OnGameModeInit добавим: GateCop = CreateObject(980, 2579.85, -2435.39, 23.57, 0.00, 0.00, 90.00);//закрытые Ну и: В public OnPlayerKeyStateChange добавим(для тех кто в пешком "Y") if(newkeys & 65536 || newkeys & 2) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//ID фракции пишем свой if(IsPlayerInRangeOfPoint( playerid, 15.0, 2579.8472, -2435.3928, 23.5669))//координаты закрытых ворот { if(GateMove == 0) { MoveObject(GateCop, 2579.8472, -2435.3928, 17.9227, 2.0);//координаты открытых GateMove = 1; } else if(GateMove == 1) { MoveObject(GateCop, 2579.8472, -2435.3928, 23.5669, 2.0);//координаты закрытых GateMove = 0; } } } Ну вот и все! Спасибо за внимание! Автор: Carl 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Серый Дождь 1 Опубликовано 27 августа, 2017 Полезная функция, кстати, на некоторых серверах можно открывать ворота/шлагбаумы пешком, например полицейские на посту. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Marvellous 271 Опубликовано 27 августа, 2017 @Серый Дождь, Пешком,но водя команду,к примеру "open", а тут просто нажали "Y" и они открылись,не нужно писать ни что уже! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SCRIPTMAN 358 Опубликовано 27 августа, 2017 @Marvellous, лучше так new bool: GateMove = false; и тогда GateMove == true/false Потому что ты приравниваешь её к нулю, если ворота откроешь, не закроешь и выйдешь с сервера, они будут открываться, потому что переменная будет обнулена. А вообще, лучше так: if(newkeys == 65536 && !IsPlayerInAnyVehicle(playerid) || newkeys == 2 && IsPlayerInAnyVehicle(playerid)) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//если так оставить, то это бессмысленная проверка, так нужно: if(PlayerInfo[playerid][pLeader] != 1 || PlayerInfo[playerid][pMember] != 1) return SCM(playerid, цвет, "Вы не состоите во фракции 1!");//ну или: if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//если во фраке 1 { if(IsPlayerInRangeOfPoint( playerid, 15.0, 2579.8472, -2435.3928, 23.5669))//координаты закрытых ворот { if(GateMove == false) { MoveObject(GateCop, 2579.8472, -2435.3928, 17.9227, 2.0);//координаты открытых GateMove = 1; } else { MoveObject(GateCop, 2579.8472, -2435.3928, 23.5669, 2.0);//координаты закрытых GateMove = 0; } } } } if(newkeys & 65536 || newkeys & 2) { if(PlayerInfo[playerid][pLeader] != 1 || PlayerInfo[playerid][pMember] != 1) return SCM(playerid, цвет, "Вы не состоите во фракции 1!");//ID фракции пишем свой if(IsPlayerInRangeOfPoint( playerid, 15.0, 2579.8472, -2435.3928, 23.5669))//координаты закрытых ворот { if(GateMove == false) { MoveObject(GateCop, 2579.8472, -2435.3928, 17.9227, 2.0);//координаты открытых GateMove = 1; } else { MoveObject(GateCop, 2579.8472, -2435.3928, 23.5669, 2.0);//координаты закрытых GateMove = 0; } } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты