#51 11-12-2009 11:37

Ammy
Registered: 16-11-2009
Posts: 32
Website

Re: Массивы и актёры

Не так далеко до выпуска видео и скриншотов, ну и части игрового процесса в виде бетки. 
Если всё пойдёт по плану, то это будет лучший зомби мод для SA! Решила использовать блог в форуме для публикации материалов относительно проекта, туда это всё и полетит, а здесь же останутся только проблемы.

Last edited by Ammy (11-12-2009 11:40)

Offline

#52 24-12-2009 10:07

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

Всё никак с массивами не протуплю(читал справку Санни), написано:
10@[0] = 1025
10@[1] = 1073

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

10@{1025, 1073..,1098}
  хочу шины менять, сидя в машине  smile

Offline

#53 24-12-2009 11:10

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Массивы и актёры

скорее всего, нет))))это не си и не паскаль))да и там вроде тож нельзя


GIMS developer

Offline

#54 24-12-2009 11:20

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

именно в паскале(да и в делфи вроде можно) так я и делал(только синтаксис не помню, эх, ностальгия...)
Хрен с этим, Саня ругается на
   10@[0] = 1025
чё не так и где начальные значения прописывать? (между 0000: и while true ?)

Offline

#55 24-12-2009 11:33

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Массивы и актёры

прочитай ошибку, там вс написано%)

прописывать в любом месте перед использованием этих значений


GIMS developer

Offline

#56 24-12-2009 15:21

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

Вобщем поставил глобальные переменные( $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

#57 24-12-2009 17:40

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Массивы и актёры

если игрок не существует, проверка на нахождение в машине выховет вылет.EPIC FAIL


GIMS developer

Offline

#58 24-12-2009 21:18

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

Гм-м, не представляю себе такой ситуации!  wink

Offline

#59 24-12-2009 22:24

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Массивы и актёры

Скрипты включаются в работу с самого начала игры, ещё до того как определён ГГ. Поэтому, если скрипт совершает какие-то действия над игроком, то код обычно начинается с проверки существования игрока. Эту проверку не рекомендуется объединять с другими, так как проверяются все приведённые условия. Проверка того, водит ли несуществующий игрок машину, приведёт к вылету.
Да, и почему используем в клео глобальные переменные?

Offline

#60 25-12-2009 08:45

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

В модах 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

#61 25-12-2009 11:33

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Массивы и актёры

Q: Можно ли в CLEO-скриптах использовать опкоды set_status_text и set_timer?
A: http://sannybuilder.com/forums/viewtopic.php?id=255

Offline

#62 25-12-2009 12:52

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

Спасиб, буду смотреть! (не знал!)
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

#63 31-12-2009 04:52

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Массивы и актёры

@reute70 -

И ещё такой давний маленький вопрос: сколько бы ни было строчек кода в исходнике - скрипт меньше 18 кБ не бывает? Может чё-то в настройках накрутить?

В настройках надо убрать галку "Добавлять доп. информацию в SCM".


[small][/small]

Offline

#64 31-12-2009 17:59

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Массивы и актёры

Да уже понял... grin
Я тут с выводом стринговых значений из массива офигеваю...

Offline

Board footer

Powered by FluxBB