Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Prographer

Страницы: 1 2 [3] 4 5 ... 7
31
Моды / Re: Radio Stations' Icons
« : Июль 24, 2016, 08:53:16 am »
Надо попробовать заменить их на те, которые находятся в меню настройки аудио.

32
Моды / Radio Stations' Icons
« : Июль 21, 2016, 07:23:01 pm »
Всем привет. На сегодня вот такая модификация. Кидаем файл "radio.txd" в папку "/models/", а "radioStation.cs" в "/cleo/".


33
Скриптинг / Re: Инкремент переменной
« : Июль 01, 2016, 06:38:59 pm »
Prographer> Короче, если нужна экономия переменных(если в функции должны быть какие-то дополнительные вычисления, связанные с использованием большого числа переменных) - используй scm функцию, как написал mfisto. Если нет, и функция нужна лишь для лаконичности кода - используй gosub:
{$CLEO}
0000:
thread 'func'
wait 0

0@ = 0
while true  // Правда, я не понимаю смысл вот этого - тут же нет условий
    wait 2000
    gosub @Marker
end
end_thread

:Marker
    wait 0
    0@ += 5
    01E3: text_1number_styled 'REWARD' number 0@ time 1000 style 6
return
Смысл просто в том, чтобы продемонстрировать, что функция не работает. Сейчас, когда mfisto объяснил почему так происходит, код конечно кажется бессмысленным.
По поводу функций также хотелось бы сказать, что они позволяют сделать скрипт не только лаконичным, но и функциональным. У меня, помнится, даже когда-то была идея сделать своеобразный фреймворк на Cleo, чтобы можно было заменить написание большого количества однотипных операций одной функцией. Допустим, рисования спрайтов или создание системы частиц.

34
Скриптинг / Re: Инкремент переменной
« : Июнь 30, 2016, 05:55:57 pm »
Оно выводит одно и тоже так как ты не передаешь это значение в функцию. Короче говоря значение переменной сбрасывается на 0 что и должно быть при использование не переданной переменной в функцию.
Странно. Обычно во всех языках программирования, в интерпретируемых, скриптовых как LUA, функции могут получить доступ к глобальным переменным, (имею в виду глобальную переменную относительно сценария) явно не обращаясь к ней.

Кстати, а в Cleo есть понятие области видимости? То есть, например, если объявить переменную внутри функции, то будет ли она доступна изнутри?

35
Скриптинг / Инкремент переменной
« : Июнь 30, 2016, 03:58:51 pm »
Всем привет! Есть такой код
{$CLEO}
0000:
thread 'func'
wait 0

0@ = 0
while true
    wait 2000
    05F5: call_scm_func @Marker params_count 0
end

:Marker
    wait 0
    0@ += 5
    01E3: text_1number_styled 'REWARD' number 0@ time 1000 style 6
05F6: ret 0

end_thread
Запустив игру мы увидим, что функция выводит постоянно одно и то же значение. Хотелось бы узнать почему?

36
Скриптинг / Re: Время выполнения цикла
« : Июнь 27, 2016, 05:33:46 pm »
Помимо двух таймеров, которые есть у каждого скрипта потока, можно пользоваться универсальным средством, который подходит когда эти таймеры заканчиваются.

01BD: 0@ = current_time_in_ms // используем вот этот опкод
...

//потом в цикле
01BD: 1@ = current_time_in_ms //и сравниваем его со старым значением 0@

0062: 1@ -= 0@  // (int)
if
    1@ >= 4200 // вот тут можно поставить свое время в миллисекундах 1 секунда = 1000
then
    break // это значит что после 4 с лишним секунд делаем выход
end
О! Интересный вариант. Спасибо, попробую :)

37
Скриптинг / Время выполнения цикла
« : Июнь 26, 2016, 12:05:20 am »
Всем привет. Сейчас работаю над скриптом рисования изображений радиостанций, и тут возник вопрос по поводу того, как заставить выполняться цикл "while" определённое время. Есть небольшой, повторяющийся участок кода, который рисует заданный спрайт:
while 2@ == 1   // цикл выполняется до того, пока игрок не переключит радиостанцию
wait 0
if Actor.Driving($PLAYER_ACTOR)
jf @draw   // перемещает на метку определения номера радиостанции
05E0: 2@ = read_memory 1@ size 1 virtual_protect 0   // 1@ = номер радиостанции (0x7E49C0 + 0x23C)
038D: draw_texture 2 position 3@ 75.0 scale 128.0 128.0 RGBA 255 255 255 255
end
Другими словами, спрайт должен рисоваться только определённое время, после завершения цикла рисования должен ждать смены радиостанции или выхода игрока из автомобиля.

P.S. Кому интересно, прикладываю весь скрипт.

38
Ну, типа такого:
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1

:Ololo
wait 0
if
04DA: has_object 5@ collided
jf @Ololo
код
и если снова понадобится чекать, то
04D9: object 5@ set_scripted_collision_check 0
wait 0
04D9: object 5@ set_scripted_collision_check 1
jump @Ololo
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.

39
Цитировать
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...
А как бы ты написал?

40
Если объект динамический(прописан в object.dat, имеет коллизию из шаров) - можно проверять, соприкоснулся ли объект с землей так:
Сначала, перед циклом проверки, нужно врубить это:
04D9: object $TELO set_scripted_collision_check 1 // тут, думаю, всё понятно - без включения этой опции нельзя будет проверить касание объекта $TELO до чего-либоВ цикле проверки проверять касание земли так:
04DA:   has_object $TELO collided Когда закончили - вырубить проверку(если в дальнейшем нам объект еще понадобится)
04D9: object $TELO set_scripted_collision_check 0
P.S. переменная у меня глобальная, т.к. код выдран из мэйна. Если работаешь с CLEO - юзай локальные.
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]

41
Всем привет! Недавно начал писать новый скрипт и появилась необходимость как-то исхитриться и проверить то, соприкоснулся объект с землёй или нет. Коли нет такого опкода, решил пойти по пути изменения координат, но почему-то тоже не вышло. Подскажите, как это сделать?

42
Идеи / Re: Рендер тени в Vice City
« : Апрель 27, 2016, 07:30:17 pm »
Дабы продолжить тему, решил написать небольшой плагин, с помощью которого вы сможете изменять силу окружающего освещения одной функцией SetAmbient(float). Кому, может быть, пригодится.
https://yadi.sk/d/PFzlrRnurLcZn

43
Моды / Новый интерьер химчистки
« : Апрель 17, 2016, 04:50:09 pm »
Всем привет! Надумал тут переделать интерьер химчистки в Вайсе. Конечно, он ещё не закончен, но хотелось бы почитать ваши замечания на текущий этап работы. Спасибо.


44
Разработка плагинов. / Запись одного байта
« : Апрель 11, 2016, 12:02:11 pm »
Всем привет. Решил написать функцию
Код: C
  1. unsigned char &hydraulics = *(unsigned char*)0x594611; // 1 byte size
  2.  
  3. int SetHydraulics(lua_State *l) {
  4.         unsigned char val = lua_tonumber(l, 1);
  5.         hydraulics = val;
  6.         return 0;
  7. }
При попытке вызвать созданную функцию, игра вылетает. Подскажите, что не так?

45
Скриптинг / Новые возможности Cleo 2.0.0.4
« : Апрель 11, 2016, 08:34:28 am »
Доброго времени суток. Уже достаточно давно на сайте Cleo появилась новая версия библиотеки. Открыв архив можно заметить, что в нём появилась папка "CLEO_PLUGINS", с файлами, аналогичными для GTA San Andreas. Как пользоваться этими файлами?

Страницы: 1 2 [3] 4 5 ... 7