You are not logged in.
Не так далеко до выпуска видео и скриншотов, ну и части игрового процесса в виде бетки.
Если всё пойдёт по плану, то это будет лучший зомби мод для SA! Решила использовать блог в форуме для публикации материалов относительно проекта, туда это всё и полетит, а здесь же останутся только проблемы.
Last edited by Ammy (11-12-2009 11:40)
Offline
Всё никак с массивами не протуплю(читал справку Санни), написано:
10@[0] = 1025
10@[1] = 1073
а можно проинициализировать массив значениями через запятую, типа
10@{1025, 1073..,1098}
хочу шины менять, сидя в машине
Offline
именно в паскале(да и в делфи вроде можно) так я и делал(только синтаксис не помню, эх, ностальгия...)
Хрен с этим, Саня ругается на
10@[0] = 1025
чё не так и где начальные значения прописывать? (между 0000: и while true ?)
Offline
Вобщем поставил глобальные переменные( $tirs[0] = 1025 ) и попёрло, а начальные значения могут потом изменяться, не в цикле же их...
Вот код, кому интересно посмотреть тюнинговые шины в игре, только не все добавлены, ещё тестирую...
{$CLEO} var $tirs: array 17 of Integer end $tirs[0] = 1025 $tirs[1] = 1073 $tirs[2] = 1074 $tirs[3] = 1075 $tirs[4] = 1076 $tirs[5] = 1077 $tirs[6] = 1078 $tirs[7] = 1079 $tirs[8] = 1080 4@ = 0 0000: while true wait 250 if and Player.Defined($PLAYER_CHAR) Actor.Driving($PLAYER_ACTOR) then if and 0AB0: key_pressed 0x37 // 7 80E1: not key_pressed 0 6 80E1: not key_pressed 0 1 then 03C0: 6@ = actor $PLAYER_ACTOR car 1@ = Car.model(6@) 06E9: load_car_component $tirs[4@] while 86EA: not car_component $tirs[4@] available wait 0 end 02FD: text_2numbers 'WIN_DX' 1@ $tirs[4@] 1500 ms 1 // id ~1~ st ~1~ 06E7: 2@ = add_car_component $tirs[4@] to_car 6@ 06EB: release_car_component $tirs[4@] Inc(4@) if 4@ > 8 then 4@ = 0 end end end end
ЗЫ Насчёт глобально-локальных переменных прикол:
Проверяю свой скрипт по смене колёс в одном из модов и замечаю, что спидометра нет, нифигасе, стал смотреть - исходники очень старые и не очень - с глобальными переменными, ну думаю, щас по всем правилам - запускаю сохранение - виснет, причём хреново, еле снимаю процесс - увеличил задержку времени, добавил проверку, что ГГ существует(я минималист, если ГГ едет в машине, значит ГГ существует - правильная логика и для Гта?!) - и решил поставить ещё старый спидометр, с глобальными - пошло! Переделал код ($15413 и без всякого Player.Defined($PLAYER_CHAR) !) всё ОК - наверное, из-за этого глобального мода...
Last edited by reute70 (24-12-2009 15:36)
Offline
Гм-м, не представляю себе такой ситуации!
Offline
Скрипты включаются в работу с самого начала игры, ещё до того как определён ГГ. Поэтому, если скрипт совершает какие-то действия над игроком, то код обычно начинается с проверки существования игрока. Эту проверку не рекомендуется объединять с другими, так как проверяются все приведённые условия. Проверка того, водит ли несуществующий игрок машину, приведёт к вылету.
Да, и почему используем в клео глобальные переменные?
Offline
В модах Gta3_LCSbeta3.1 и United такой код не катит (и я добавлял Player.Defined - пох):
{$CLEO} 0000: while true wait 50 if Actor.Driving($PLAYER_ACTOR) then 03C0: 1@ = actor $PLAYER_ACTOR car 02E3: 2@ = car 1@ speed 2@ *= 3.6 008C: 2@ = float 2@ to_integer 3@ = Car.Health(1@) 3@ /= 10 04F7: status_text 2@ type 0 line 1 GXT 'SPEEDO' // global_variable 04F7: status_text 3@ type 1 line 2 GXT 'SPEED2' // global_variable else 0151: remove_status_text 2@ 0151: remove_status_text 3@ end end
надо попробовать этот скрипт отмоденном Сане(чистого-то у меня нет!)...
кстати, что за оригин. комменты в строках status_text насчёт глобальных?
PSS И в отмоденном Сане не катит - при загрузке сэйва виснет(без окна)...
Last edited by reute70 (25-12-2009 10:03)
Offline
Q: Можно ли в CLEO-скриптах использовать опкоды set_status_text и set_timer?
A: http://sannybuilder.com/forums/viewtopic.php?id=255
Offline
Спасиб, буду смотреть! (не знал!)
PS Задолбался с этой альтернативщиной локальной, что не так?
$CLEO} 0000: while true wait 50 if Player.Defined($PLAYER_CHAR) then if Actor.Driving($PLAYER_ACTOR) then 03C0: 4@ = actor $PLAYER_ACTOR car 02E3: 5@ = car 4@ speed 5@ *= 3.6 008C: 5@ = float 5@ to_integer 6@ = Car.Health(4@) 6@ /= 10 //04F7: status_text 2@ type 0 line 1 GXT 'SPEEDO' // global_variable //04F7: status_text 3@ type 1 line 2 GXT 'SPEED2' // global_variable 0AB1: call_scm_func @AddStatusText 4 5@ 0 0 0 0AB1: call_scm_func @AddStatusText 4 6@ 1 0 0 else //0151: remove_status_text 2@ //0151: remove_status_text 3@ 0AB1: call_scm_func @RemoveStatusText 1 5@ 0AB1: call_scm_func @RemoveStatusText 1 6@ end end end :AddStatusText 0AB1: call_scm_func @__VarToOffset 1 0@ 0@ 0AB1: call_scm_func @__LabelToOffset 1 2@ 2@ 0AA6: call_method 0x0044CDA0 struct 0x00BA1788 num_params 4 pop 0 ( LINE = 3@ GXT = 2@ TYPE = 1@ VARNUMBER = 0@ ) 0AB2: ret 0 :RemoveStatusText 0AB1: call_scm_func @__VarToOffset 1 0@ 0@ 0AA6: call_method 0x0044CE80 struct 0x00BA1788 num_params 1 pop 0 ( VARNUMBER = 0@ ) 0AB2: ret 0 :__VarToOffset 0A9F: 1@ = current_thread_pointer 0A8E: 2@ = 1@ + 0xDC // mission Flag 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0 if 2@ == 1 then 1@ = 0x00A48960 // mission locals else 1@ += 0x3C end 0@ *= 4 005A: 1@ += 0@ // address of the local variable 1@ -= 0xA49960 0AB2: ret 1 1@ :__LabelToOffset if 0@ == 0 then 0AB2: ret 1 0 end 0A9F: 1@ = current_thread_pointer 1@ += 0x10 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 // baseIP 0062: 1@ -= 0@ // label address 1@ += 3 0AB2: ret 1 1@ //0900: unknown_set_object 'BB_19' //0000: NOP
И ещё такой давний маленький вопрос: сколько бы ни было строчек кода в исходнике - скрипт меньше 18 кБ не бывает? Может чё-то в настройках накрутить?
Last edited by reute70 (25-12-2009 15:11)
Offline
@reute70 -
И ещё такой давний маленький вопрос: сколько бы ни было строчек кода в исходнике - скрипт меньше 18 кБ не бывает? Может чё-то в настройках накрутить?
В настройках надо убрать галку "Добавлять доп. информацию в SCM".
[small][/small]
Offline
Да уже понял...
Я тут с выводом стринговых значений из массива офигеваю...
Offline