PDA

Просмотр полной версии : [Мануал] Поднимающийся/Опускающийся лифт в SF.



Bady
31.08.2014, 16:32
Автор: 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;
}
}

DeimoS
31.08.2014, 17:57
Проще сделать так

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;
}
И убрать ненужную переменную

Bady
31.08.2014, 22:13
Проще сделать так

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;
}
И убрать ненужную переменную
Спасибо, исправил!

L0ndl3m
31.08.2014, 22:16
Поправить, вы поправили, но! Если игрок теперь нажмёт любую клавишу, которую можно отследить, лифт будет подниматься и опускаться.

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;

L0ndl3m
01.09.2014, 16:13
Хз как работать будет, но предложу наверное вариант попроще

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я проверка, она в случае "иначе" ничего не возвращает. Я подумал, что тут может быть ошибка, но яхз.

L0ndl3m
01.09.2014, 16:24
Не думаю, там в тернарке 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 и не выполняться, или будет ошибка.

DeimoS
02.09.2014, 14:44
Настолько проще, что уже пятый пост обсуждаете...