Приветствую Вас, Гость! Регистрация RSS
Понедельник, 29.04.2024
[ Главная страница · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Моды GTA SA, читы для samp » CLEO программирование » CLEO уроки » Урок №5 Самодельный таймер
Урок №5 Самодельный таймер
SAIFER-23RUSДата: Понедельник, 08.10.2012, 16:28 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 6

Итак, многие, кто начал изучать скриптинг, знают, что в cleo скриптах нельзя использовать глобальные переменные (точнее не рекомендуется, это не относится к общим, таким, как $PLAYER_ACTOR, $ONMISSION и т.п.). Но если попробовать использовать локальные переменные (1@, например) для создания таймера, игра вылетит, ведь этому опкоду нужна именно глобальная переменная. Поэтому приходится либо отказываться от таймера вовсе, либо рисковать и использовать глобальные переменные. Я (конечно, думаю, что я не первый) придумал новый способ создания таймера, простой и имеющий "гибкие" настройки. Ему не нужны глобальные переменные, он, так же, как и стандартный его собрат, выводится на экран, так же есть звуки, когда значения таймера малы, но все в нем можно изменить по собственному желанию. Итак, сначала приведу сам код, затем объясню все по порядку.

:Cicl
wait 0
if and
not actor.Dead($PLAYER_ACTOR)
not actor.Driving($PLAYER_ACTOR)
0AB0: key_pressed 0xD //проверки на то, что игрок жив, не в авто, и на нажатие клавиши "Enter"
jf @Cicl
actor.StorePos($PLAYER_ACTOR,2@,3@,4@) //сохраняем текущие координаты игрока в переменные
02CE: 4@ = ground_z_at 2@ 3@ 4@ //получаем координату поверхности, чтобы действие не происходило в воздухе
//начало самого таймера, то есть простого цикла, известного многим по школьному курсу программирования (в Turbo Pascal)
for 1@ = 15 downto 0 //берем downto, чтобы счет шел от большего к меньшему
01E5: show_text_1number_highpriority GXT 'VAR' number 1@ time 1000 flag 1 //выводим значение переменной (секунды), которая в цикле изменяется с 15 до 0
if //начало условия. эта часть необязательна, она нужна для звука, который будет проигрываться, когда время будет меньше 5 секунд
1@ <= 5 //если значение времени таймера меньше или равно 5, то...
then
018C: play_sound 1084 at 0.0 0.0 0.0 //...проигрываем звук №1084
end //конец условия. else не нужно в данном случае
wait 1000 //ждем 1 секунду, иначе таймер закончится сразу же, да и таймер в секундах
end //конец цикла, это и конец таймера
020C: create_explosion_with_radius 10 at 2@ 3@ 4@ //создаем два больших взрыва
020C: create_explosion_with_radius 6 at 2@ 3@ 4@
wait 750 //ждем 750 мс, чтобы игрок не сразу мог перезапустить скрипт
jump @Cicl //идем на начало

Суть скрипта в том, что спустя 15 секунд после нажатия Enter произойдет взрыв (в той точке, в которой игрок нажал клавишу). Как видите, сам код прост и мал по размеру. К тому же есть еще плюсы:

-Не нужно проверять, что время таймера равно нулю, цикл сам завершается

-Можно легко и быстро настроить абсолютно все: время, звук таймера, и при каких значениях он будет воспроизведен, текст.

Помимо того, что можно выводить разные варианты текста (как по стилям написания, так и по цвету, например, сделать текст красным, когда значение таймера меньше 5 секунд), Вы сможете вывести текст как текст-бокс (серый прямоугольник в верхнем левом углу экрана, примером будет сообщение о том, как сменить оружие на другое). Для этого понадобится команда 0513, только не забудьте применить команду 03E6 после цикла, чтобы текст-бокс не держался на экране все время и исчез (сам он не исчезает).

Единственная проблема состоит в том, что выводятся именно секунды,а не минуты, но это, конечно, можно исправить, немного поломав голову.

В целом можно сказать, что такой таймер гораздо проще создается, его можно изменить по своему желанию, так что, если Вам понравился этот способ, дерзайте, у Вас все получится, если подключить фантазию. Можно сделать разноцветный текст, "музыкальный" таймер (звук на каждой секунде) и т.д.
 
Форум » Моды GTA SA, читы для samp » CLEO программирование » CLEO уроки » Урок №5 Самодельный таймер
  • Страница 1 из 1
  • 1
Поиск:

Вверх