Просмотр полной версии : [Мануал] Поднимающийся/Опускающийся лифт в SF.
Автор: Bady (Alberto Johnson)
Извините за качество видео! Что бы лифт поехал нажмите на клавишу Н. Что бы лифт опустился нажмите тоже на Н.
Видео:
http://www.youtube.com.s55.ru.wbprx.com/watch?v=4TMujxjFmSc&feature=youtu.be
Код:
Ко всем new:
new Lift; //для лифта
Ко всем объектам:
Lift = CreateObject(5837,-1813.0000,585.5000,35.9000,0.0,0.0,180.0, 200.0);//для лифта
В public OnPlayerKeyStateChange:
if(newkeys & KEY_CTRL_BACK)
{
if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,35.9000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт поднимается вверх");
MoveObject(Lift,-1813.0000,585.5000,236.1000,2.0);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,236.1000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт опускается вниз");
MoveObject(Lift,-1813.0000,585.5000,35.7000,2.0);
return 1;
}
}
Проще сделать так
if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,35.9000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт поднимается вверх");
MoveObject(Lift,-1813.0000,585.5000,236.1000,2.0);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,236.1000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт опускается вниз");
MoveObject(Lift,-1813.0000,585.5000,35.7000,2.0);
return 1;
}
И убрать ненужную переменную
Проще сделать так
if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,35.9000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт поднимается вверх");
MoveObject(Lift,-1813.0000,585.5000,236.1000,2.0);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,236.1000))
{
SendClientMessage(playerid, COLOR_LIGHTBLUE, "Лифт опускается вниз");
MoveObject(Lift,-1813.0000,585.5000,35.7000,2.0);
return 1;
}
И убрать ненужную переменную
Спасибо, исправил!
Поправить, вы поправили, но! Если игрок теперь нажмёт любую клавишу, которую можно отследить, лифт будет подниматься и опускаться.
underwoker
01.09.2014, 13:14
xD Да уж...
Я не мог пройти мимо комментария, который не несет никакой смысловой нагрузки. :to_take_umbrage:
TrezeLurese
01.09.2014, 16:00
Хз как работать будет, но предложу наверное вариант попроще
new booled = IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,35.9000);
new boolen = IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,236.1000);
SendClientMessage(playerid, COLOR_LIGHTBLUE, booled ? "Лифт поднимается вверх" : boolen ? "Лифт опускается вниз");
MoveObject(Lift,-1813,585.5000, booled ? 236.1000 : boolen ? 35.7000, 2.0);
return 1;
Хз как работать будет, но предложу наверное вариант попроще
new booled = IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,35.9000);
new boolen = IsPlayerInRangeOfPoint(playerid,10.0,-1813.0000,585.5000,236.1000);
SendClientMessage(playerid, COLOR_LIGHTBLUE, booled ? "Лифт поднимается вверх" : boolen ? "Лифт опускается вниз");
MoveObject(Lift,-1813,585.5000, booled ? 236.1000 : boolen ? 35.7000, 2.0);
return 1;
Такой же вариант хотел предложить вчера, но подумал не ладное, что если игрок не находится близко к лифту? На огромном расстоянии он сможет взаимодействовать с лифтом.
TrezeLurese
01.09.2014, 16:20
Такой же вариант хотел предложить вчера, но подумал не ладное, что если игрок не находится близко к лифту? На огромном расстоянии он сможет взаимодействовать с лифтом.
Не думаю, там в тернарке 2я проверка, она в случае "иначе" ничего не возвращает. Я подумал, что тут может быть ошибка, но яхз.
Не думаю, там в тернарке 2я проверка, она в случае "иначе" ничего не возвращает. Я подумал, что тут может быть ошибка, но яхз.
booled ? 236.1000 : boolen ? 35.7000
тогда так:
booled ? 236.1000 : boolen ? 35.7000 : 236.1000
TrezeLurese
02.09.2014, 12:01
booled ? 236.1000 : boolen ? 35.7000
тогда так:
booled ? 236.1000 : boolen ? 35.7000 : 236.1000
При нажатии на клавишу вне лифта его переместит на 236, а если ещё и подключить сообщения типа такого
SendClientMessage(playerid, COLOR_LIGHTBLUE, booled ? "Лифт поднимается вверх" : boolen ? "Лифт опускается вниз" : "");
То при нажатии на клавишу так-же будет отправляться пустое сообщение. А в случае без ': "" ' и без ": 236.1000", то функции будут возвращать false и не выполняться, или будет ошибка.
Настолько проще, что уже пятый пост обсуждаете...
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot