#1 16-11-2009 13:43

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

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

Здравствуйте! Скажите, пожалуйста, можно ли создать актёра, и хранить его данные в массиве под определённым ключём, по которому можно в дальнейшем обращаться, например, для проверки чего-либо?

Допустим, вот так:

...объявление переменной для ведения подсчёта var $count : float end
...объявление переменной как массива var $actor : array 10 of string end

...тело цикла while $count < 10

$count += 1
009A: $actor[$count] = create_actor_pedtype 7 model #WMYBU at $X $Y $Z

...end

В дальнейшем необходимо использовать эти данные, и обращаться к ним по числовым ключам.
Это возможно?

---
Дело в том, что я хочу сократить более длинную имеющуюся у меня в коде запись генерации актёров.

P.S: Пример выше неработоспособен, и приведён в качестве примера, чтобы как можно лучше выразить мысли.

Last edited by Ammy (16-11-2009 13:51)

Offline

#2 16-11-2009 13:51

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

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

var
$actor : array 10 of actor
end


GIMS developer

Offline

#3 16-11-2009 13:55

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

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

Благодарю Вас! И ещё один вопрос для более полного понимания: где можно посмотреть полный список имеющихся типов (кроме общедоступных) под разные, скажем так, задачи? Честно, не знала, и даже представить не могла, что есть тип, именуемый как actor.. Спасибо ещё раз!  smile

Last edited by Ammy (16-11-2009 13:59)

Offline

#4 16-11-2009 14:04

Alien
Registered: 12-10-2008
Posts: 564

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

В скриптинге СБ всего 4 типа данных: float, integer и строка (2 типа строк, кажется).
Запись

var
$actor : array 10 of actor
end

Эквивалентна

var
$actor : array 10 of integer
end

Но на самом деле можно писать и

var
$actor : array 10 of float
end

Жесткого контроля типа не существует, лишь бы размер совпадал (4 байта).

Про массивы обсуждалось вот тут немножко.

Offline

#5 16-11-2009 14:12

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

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

Важные (мелкие) детали, многое проясняют! На деле всё корректно и работоспособно, уже проверила. Тему обязательно прочитаю, много полезной информации содержит.. Большое Вам спасибо!

Offline

#6 17-11-2009 10:38

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

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

Возникли проблемы с проверкой и удалением мёртвых актёров из памяти. Кто-нибудь поможет проанализировать код? В ряду своего малого опыта работы в SCM скриптинге, мне пришлось отказаться от CLEO, и разделить один поток на два, а затем перенести в main.scm. Очень жаль..

Вот скрипт сам скрипт (два потока):

:ZOMBIES 
thread 'ZOMBIES'
0001: wait 30 ms 

var 
$main  : int = 0
$cnt   : int = 0
$count : int = 0
$DEAD  : array 30 of actor 
end

:ZOMBIES_START
wait 50 ms
while $count < 10
$count += 1
0208: $RAND = random_float_in_ranges -5.0 5.0 
04C4: store_coords_to $X $Y $Z from_actor $PLAYER_ACTOR with_offset $RAND 60.0 0.0 
02CE: $Z = ground_z_at $X $Y 50.0 
009A: $DEAD[$count] = create_actor_pedtype 7 model #WMYBU at $X $Y $Z 
0223: set_actor $DEAD[$count] health_to 1000000 
02AB: set_actor $DEAD[$count] immunities BP 0 FP 1 EP 0 CP 0 MP 0 
0446: set_actor $DEAD[$count] immune_to_headshots 1 
07DD: set_actor $DEAD[$count] temper_to 100 // see pedstats.dat 
0332: set_actor $DEAD[$count] bleeding 1
0489: set_actor $DEAD[$count] muted 1  
0245: set_actor $DEAD[$count] walk_style_to "DRUNKMAN" 
04D8: set_actor $DEAD[$count] drowns_in_water 0 
0946: set_actor $DEAD[$count] actions_uninterupted_by_weapon_fire 1 
0619: enable_actor $DEAD[$count] collision_detection 1 
02E0:   actor $DEAD[$count] aggressive
05E2: AS_actor $DEAD[$count] kill_actor $PLAYER_ACTOR
wait 1000 ms
end

$main = 1

:ZOMBIES_END
wait 250 ms

if $count < 10
then
jump @ZOMBIES_START
end

jump @ZOMBIES_END
end_thread

// --------------

:CONDITION 
thread 'CONDITION'
wait 30 ms

if $main == 1
then
    jump @CONDITION_2
end

jump @CONDITION


:CONDITION_2
wait 50 ms

if $cnt == 10
then
$cnt = 0
end

$cnt += 1 

if
0118: actor $DEAD[$cnt] dead 
then
wait 200 ms
034F: destroy_actor_with_fade $DEAD[$cnt]
$count -= 1
end

jump @CONDITION_2

end_thread

Проблема: создаются актёры, переваливающие за установленную плотность в 10 человек. Они должны появляться, они должны умирать, и удаляться из памяти, когда актёр их уничтожает. Сейчас же, если использовать в данном слое :ZOMBIES_END проверку и прыжок на слой, в котором создаются зомби, они (актёры / зомби) начинают беспорядочно сыпаться. Если же эту проверку с переходом убрать, то всё будет нормально, зомби будут исчезать, когда ГГ их убивает, однако новые на замену старым появляться не будут.

Вопросы:
1. Можно ли упростить код :CONDITION части, или вовсе вывести всё в единый поток, чтобы в дальнейшем использовать один *.cs файл?
2. Опкодов для работы с массивами (на замену высокоуровневым функциям), полагаю, совcем нету?

P.S: Глаза уже сломала, запутавшись в собственном коде. Прошу помощи.

Last edited by Ammy (17-11-2009 11:07)

Offline

#7 17-11-2009 12:17

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Смотри:
Во втором потоке ты проверяешь, что умер актер, но он то помечен определенным индексом
т.е, например, умер у тебя $DEAD[1] и что? а в первом потоке будет создан $DEAD[10], потому что ты $count просто вычел 1 = 9, это пойдет в первый поток и будет 10. Далее, у тебя там снова во втором потоке проверится что $DEAD[1] умер и еще раз в первом потоке создатся $DEAD[10] и т.д.
Надеюсь объяснил.

:ZOMBIES 
thread 'ZOMBIES'
wait 250

var 
$main  : int = 0
$cnt   : int = 0
$count : int = 0
$DEAD  : array 10 of actor 
end

:ZOMBIES_START
while $count < 10
      if   Actor.Dead($DEAD[$count])
      then
           034F: destroy_actor_with_fade $DEAD[$count]
           wait 1000
           0208: $RAND = random_float_in_ranges -5.0 5.0 
           04C4: store_coords_to $X $Y $Z from_actor $PLAYER_ACTOR with_offset $RAND 60.0 0.0 
           02CE: $Z = ground_z_at $X $Y 50.0 
           009A: $DEAD[$count] = create_actor_pedtype 7 model #WMYBU at $X $Y $Z 
           0223: set_actor $DEAD[$count] health_to 1000000 
           02AB: set_actor $DEAD[$count] immunities BP 0 FP 1 EP 0 CP 0 MP 0 
           0446: set_actor $DEAD[$count] immune_to_headshots 1 
           07DD: set_actor $DEAD[$count] temper_to 100 // see pedstats.dat 
           0332: set_actor $DEAD[$count] bleeding 1
           0489: set_actor $DEAD[$count] muted 1  
           0245: set_actor $DEAD[$count] walk_style_to "DRUNKMAN" 
           04D8: set_actor $DEAD[$count] drowns_in_water 0 
           0946: set_actor $DEAD[$count] actions_uninterupted_by_weapon_fire 1 
           0619: enable_actor $DEAD[$count] collision_detection 1 
           05E2: AS_actor $DEAD[$count] kill_actor $PLAYER_ACTOR
      end
      $count += 1
end
$count = 0
jump @ZOMBIES_START

Last edited by mfisto (17-11-2009 12:38)


I know everything and nothing...

Offline

#8 17-11-2009 12:26

Alien
Registered: 12-10-2008
Posts: 564

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

А если так?

thread 'ZOMBIES'

wait 30

while true
    wait 250
    //в этом цикле будут перебираться актеры
    for $count = 0 to 9
        //если актера с текущим индексом не существует, создать его
        if
            $DEAD($count,10i) == 0
        then
            0208: 0@ = random_float_in_ranges -5.0 5.0                                                  
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0@ 60.0 0.0             
            02CE: 3@ = ground_z_at 1@ 2@ 50.0                                                           
            009A: $DEAD[$count] = create_actor_pedtype 7 model #WMYBU at 1@ 2@ 3@                       
            0223: set_actor $DEAD($count,10i) health_to 1000000                                         
            02AB: set_actor $DEAD($count,10i) immunities BP 0 FP 1 EP 0 CP 0 MP 0                       
            0446: set_actor $DEAD($count,10i) immune_to_headshots 1                                     
            07DD: set_actor $DEAD($count,10i) temper_to 100 // see pedstats.dat                         
            0332: set_actor $DEAD($count,10i) bleeding 1                                                
            0489: set_actor $DEAD($count,10i) muted 1                                                   
            0245: set_actor $DEAD($count,10i) walk_style_to "DRUNKMAN"                                  
            04D8: set_actor $DEAD($count,10i) drowns_in_water 0                                         
            0946: set_actor $DEAD($count,10i) actions_uninterupted_by_weapon_fire 1                     
            05E2: AS_actor $DEAD($count,10i) kill_actor $PLAYER_ACTOR                                   
        end    
        
        //если актер умер, удалить его и обнулить переменную
        if
            actor.Dead($DEAD($count,10i))
        then
            actor.DestroyWithFade($DEAD($count,10i))
            $DEAD($count,10i) = 0
        end
end

end_thread

И не забывай, что индексация массива всегда начинается с 0, а не с 1.

Offline

#9 17-11-2009 12:49

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

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

Сразу, конечно, использовать я ничего не буду, а постараюсь вникнуть как можно лучше в то, что вы (mfisto, Alien) мне написали. Чуть позже, если возникнут вопросы, я оставлю сообщение.. smile

Спасибо вам! smile

Offline

#10 17-11-2009 14:45

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

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

Alien, несколько вопросов:

1. Почему цикл FOR в Вашем примере не имеет заключения (END)?
2. Пробовала пример в действии, и заметила, что если перед циклом не поставить произвольной метки, на которую уже после цикла установить прыжок, то зомби исчезать не будут. Я имею ввиду:

thread 'ZOMBIES'
wait 30 ms

:ZOMBIES

while true

....
.........
....

end

jump @ZOMBIES

end_thread

3. Помимо проверки 'смерти' и высвобождения памяти, можно ли корректно в этом же цикле использовать другие проверки, но уже перед/после имеющейся?

//если актер умер, удалить его и обнулить переменную

        if
            actor.Dead($DEAD($count,10i))
        then
            actor.DestroyWithFade($DEAD($count,10i))
            $DEAD($count,10i) = 0
        end

        // если зомби вне радиуса, уничтожить его (пример)
       
        if
            80F2: not actor $PLAYER_ACTOR near_actor $DEAD($count,10i) radius 40.0 80.0 0
        then
            actor.DestroyWithFade($DEAD($count,10i))
            $DEAD($count,10i) = 0
        end

----------

И не забывай, что индексация массива всегда начинается с 0, а не с 1.

Да, моя ошибка. Дело в том, что в других языках привыкла не использовать нулевой ключ. blush

mfisto wrote:

потому что ты $count просто вычел 1 = 9

:wow:

mfisto wrote:

Надеюсь объяснил.

Да, поняла свои ошибки. Всё никак синтаксис написания не уложится, и путаюсь постоянно..

Last edited by Ammy (17-11-2009 14:57)

Offline

#11 17-11-2009 15:02

Alien
Registered: 12-10-2008
Posts: 564

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

Ammy wrote:

Alien, несколько вопросов:

1. Почему цикл FOR в Вашем примере не имеет заключения (END)?
2. Пробовала пример в действии, и заметила, что если перед циклом не поставить произвольной метки, на которую уже после цикла установить прыжок, то зомби исчезать не будут.

Ага, моя ошибка. Надо так:

thread 'ZOMBIES'

wait 30

while true
    wait 250
    //в этом цикле будут перебираться актеры
    for $count = 0 to 9
        //если актера с текущим индексом не существует, создать его
        if
            $DEAD($count,10i) == 0
        then
            0208: 0@ = random_float_in_ranges -5.0 5.0                                                  
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0@ 60.0 0.0             
            02CE: 3@ = ground_z_at 1@ 2@ 50.0                                                           
            009A: $DEAD[$count] = create_actor_pedtype 7 model #WMYBU at 1@ 2@ 3@                       
            0223: set_actor $DEAD($count,10i) health_to 1000000                                         
            02AB: set_actor $DEAD($count,10i) immunities BP 0 FP 1 EP 0 CP 0 MP 0                       
            0446: set_actor $DEAD($count,10i) immune_to_headshots 1                                     
            07DD: set_actor $DEAD($count,10i) temper_to 100 // see pedstats.dat                         
            0332: set_actor $DEAD($count,10i) bleeding 1                                                
            0489: set_actor $DEAD($count,10i) muted 1                                                   
            0245: set_actor $DEAD($count,10i) walk_style_to "DRUNKMAN"                                  
            04D8: set_actor $DEAD($count,10i) drowns_in_water 0                                         
            0946: set_actor $DEAD($count,10i) actions_uninterupted_by_weapon_fire 1                     
            05E2: AS_actor $DEAD($count,10i) kill_actor $PLAYER_ACTOR                                   
        end  
    end  
    
    //если актер умер, удалить его и обнулить переменную
    if
        actor.Dead($DEAD($count,10i))
    then
        actor.DestroyWithFade($DEAD($count,10i))
        $DEAD($count,10i) = 0
    end
end

end_thread

Второй вопрос решается автоматически.:cool:

Ammy wrote:

3. Помимо проверки 'смерти' и высвобождения памяти, можно ли корректно в этом же цикле использовать другие проверки, но уже перед/после имеющейся?

А почему нет?;-)

Last edited by Alien (17-11-2009 15:08)

Offline

#12 17-11-2009 15:40

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

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

Чуть-чуть ошиблись, а правильнее будет у Вас вот так:

b2f58018d41a80e8266527c111bc066d.png


Ведь проверка тоже требует перебора, а без него (перебора) никуда бы они (актёры) не выгрузились, соответственно и не появились бы новые smile

Спасибо Вам огромное! wink

Last edited by Ammy (17-11-2009 15:49)

Offline

#13 20-11-2009 08:32

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

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

Первый вопрос:

Возникла одна маленькая проблема с глобальной областью видимости переменных взаимодействия с CLEO скриптами. Так как нельзя использовать переменные вида $VAR, был предложен (в оф. мануале) иной выход - использование новых CLEO опкодов.

Существует у меня два (CLEO) скрипта, один из которых устанавливает значение одной глобальной переменной методом:

0AB3: var 0 = 10

Второй CLEO скрипт взаимодействует с этой переменной в существующем цикле, записывая постоянно её значение вот так:

0AB4: 0@= var 0

При применении данного метода игра отказывается работать.
Вопрос: какие могут быть причины?


Второй вопрос:

Позволяется ли использовать модели существующего в игре оружия в качестве объектов, которые можно attach'ить к моделям автотранспорта, при этом сохраняя их работоспособность в качестве оружия? Пробовала цеплять к машине автомат - игра вылетает, как только доходит до места, где я указываю модель оружия как объект, т. е. :

4c1f65d95ab9e5d627d973ae12747f8d.png

Естественно, что если бы даже и не вылетело, свойства оружия бы были уже утрачены, потому что игра бы инициализировала это (пушку) как объект, без надлежащих свойств, а сами свойства нужно было бы описывать.

Last edited by Ammy (20-11-2009 08:42)

Offline

#14 20-11-2009 12:38

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

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

сначала надо загрузить модель и поставить проверку на загруженность...
да, модели оружия можно использовать как обычные объекты, но работать как оружие они не будут)) придётся выстрельно-визуальную часть самому писать

Last edited by 3Doomer (20-11-2009 12:39)


GIMS developer

Offline

#15 20-11-2009 14:16

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

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

Спасибо! А если оружие - это оружие ближнего боя? Например, катана, бензопила, резиновая пиписька. 
Полагаю, придётся возиться с анимацией, и цеплять её к объекту, а уже самому объекту описывать его свойства.. smile

Offline

#16 20-11-2009 14:23

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

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

проще дать как обыное оружие)
физическое воздействие скриптом сложно реализовать, а вот выстрел/взрыв-запросто))

Last edited by 3Doomer (20-11-2009 14:23)


GIMS developer

Offline

#17 20-11-2009 14:24

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

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

Вчера кстати написал небольшой код, цепляющий миниган к платформе поезда.

{$CLEO}
wait 0
model.Load(537)
model.Load(569)
model.Load(362)
repeat
    wait 0
until model.Available(537)
repeat
    wait 0
until model.Available(569)
repeat
    wait 0
until model.Available(362)
06D8: 0@ = create_train_at 2225.5078 -1621.9421 15.8675 type 10 direction 0
model.Destroy(537)
model.Destroy(569) 
object.Create(3@ 362 0.0 0.0 0.0)
model.Destroy(362)
078A: 4@ = get_train 0@ carriage 1 handle
0681: attach_object 3@ to_car 4@ with_offset 0.0 -8.0 -0.7 rotation 0.0 30.0 270.0
while true
    repeat
        wait 0
    until 00E1:   player 0 pressed_key 11 
    while 056E:   car 4@ defined 
        wait 0
        if
            00E1:   player 0 pressed_key 10
        then
            break
        end
        0174: 5@ = car 4@ Z_angle 
        02F6: 6@ = cosine 5@ // (float) 
        02F7: 7@ = sine 5@ // (float)
        object.StorePos(3@ 8@ 9@ 1@)
        car.StorePos(4@ 8@ 9@ 5@)
        0087: 10@ = 8@ // (float) 
        0087: 11@ = 9@ // (float)
        0087: 12@ = 8@ // (float) 
        0087: 2@ = 9@ // (float)
        1@ += -0.25  
        6@ *= 9.2
        7@ *= -9.2
        005B: 10@ += 6@ // (float) 
        005B: 11@ += 7@ // (float)
        6@ *= 100.0
        7@ *= 100.0
        005B: 12@ += 6@ // (float) 
        005B: 2@ += 7@ // (float) 
        058A: create_gun_flash_from 10@ 11@ 1@ to 12@ 2@ 1@
        06BC: create_M4_shoot_from 10@ 11@ 1@ target 12@ 2@ 1@ energy 1000
    end
end

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

Last edited by Den_spb (20-11-2009 14:26)

Offline

#18 25-11-2009 10:52

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

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

Ammy wrote:

Первый вопрос:

Возникла одна маленькая проблема с глобальной областью видимости переменных взаимодействия с CLEO скриптами. Так как нельзя использовать переменные вида $VAR, был предложен (в оф. мануале) иной выход - использование новых CLEO опкодов.

Существует у меня два (CLEO) скрипта, один из которых устанавливает значение одной глобальной переменной методом:

0AB3: var 0 = 10

Второй CLEO скрипт взаимодействует с этой переменной в существующем цикле, записывая постоянно её значение вот так:

0AB4: 0@= var 0

При применении данного метода игра отказывается работать.
Вопрос: какие могут быть причины?

Offline

#19 25-11-2009 11:07

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Ну ка выложи эти скрипты здесь в форуме, раберем.


I know everything and nothing...

Offline

#20 25-11-2009 11:58

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

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

8f5ed6da34c6c46e623fe8bd002f14b8.png


Первый скрипт - это доработанный вариант того, в котором вы мне помогали понять ошибку ранее. Там в цикле при определённом условии, что актёр был создан, и дефайнед, у меня записывается значение в глобальную переменную var 0, которая равна единице.

Второй скрипт - это по сути аудио плеер, который должен воспроизводить музыку (получая нужное значение глобальной переменной), поэтому лежит отдельно, в отдельном потоке, потому что если бы он использовался в первом, то это бы проигрование музыки тормозило весь цикл, так как на ожидание между стартом и концом нужно отводить время командой wait. Итак, второй скрипт в цикле записывает, и проверяет значение var 0, вот так:

thread 'SOUNDS'
wait 30 ms

:SOUNDS
0000: FKKENEMPTY

:SOUNDS2

0AB4: 0@= var 0

if
    0@ == 1
then
   
    0AAC: 0@ = load_mp3 "CLEO\AUDIO\01.mp3"
    0AAD: set_mp3 0@ perform_action 1
    wait 100000 ms
    0AAD: set_mp3 0@ perform_action 0
    0AAE: release_mp3 0@   
end

jump @SOUNDS2

И опять же, это всё CLEO скрипты, находящиеся в отдельных *.cs файлах. Мне нужно как-то настроить плотное взаимодействие между ними.

Например, мне раньше (как, впрочем, и сейчас) было нужно засунуть в глобальную переменную весь массив $DEAD($count, 10i), но так ничего и не вышло, кроме как реакция на одно актёра из этого массива. То есть записывался (удачно) только один актёр: var 0 = $DEAD($count, 10i), и это при взаимодействии *.cs и *.scm скриптов. При тех же *.cs на *.cs никакого даже в этом случае взаимодействия не было, а при попытке засунуть весь массив, и в дальнейшем с ним работать, игра просто не пускала за границы экрана загрузки, а то и вовсе вылетала, ну а записывалось вот так: var 0 = $DEAD

В целом мне нужна помощь по части глобальной области видимости. Имея работающую структуру, я могла бы решить проблемы, описанные выше. Вот, Вы, например, как налаживаете взаимодействия между скриптами?

И ещё вопрос: видела скрипты, где CLEO опкоды используются в обычном мэйне. Это правильно? Получается, что я могу запросто решить все эти проблемы, используя эти два потока в одном файле, наладив взаимодействие при помощи глобальных переменных ($var), и не мучаясь с CLEO?

Зачем мне всё это:
Делаю мод, налаживаю модель поведения зомби, различные взаимодействия, многое сделано, но такие вот тонкие моменты, как эти, просто необходимы, иначе я так никогда и не дойду до создания миссий, cutscene, и прочего, а так уже хочется, с ума сойти grin

Last edited by Ammy (25-11-2009 12:36)

Offline

#21 25-11-2009 13:52

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

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

Ammy wrote:

Вот, Вы, например, как налаживаете взаимодействия между скриптами?

Вопрос адресован не мне, но отвечу - я, например, записываю значения в неиспользуемые общедоступные ячейки памяти. Такое решение возможно не самое верное, но поскольку вероятность того, что кто-то тоже решит использовать конкретно эти адреса, мала, то конфликтов своих скриптов с чужими я не опасаюсь.

И ещё вопрос: видела скрипты, где CLEO опкоды используются в обычном мэйне. Это правильно? Получается, что я могу запросто решить все эти проблемы, используя эти два потока в одном файле, наладив взаимодействие при помощи глобальных переменных ($var), и не мучаясь с CLEO?

Насколько я понимаю, использовать КЛЕО опкоды в мэйне можно, но при этом должна быть установлена КЛЕО.

Last edited by Den_spb (25-11-2009 13:56)

Offline

#22 25-11-2009 14:47

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

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

опкоды использовать можно в мейне ПОЧТИ без ограничений

я делал обмен данными между скриптами через запись-чтение в файл, но это ацки нагружает жёсткий диск)))


GIMS developer

Offline

#23 25-11-2009 15:00

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

после метки :SOUNDS2
поставь wait 0
иначе будет или зависать или вылетать


I know everything and nothing...

Offline

#24 25-11-2009 15:34

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

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

4c5646f9ca521d426fe2dff7bd8443b8.png

Den_spb wrote:

Вопрос адресован не мне, но отвечу - я, например, записываю значения в неиспользуемые общедоступные ячейки памяти. Такое решение возможно не самое верное, но поскольку вероятность того, что кто-то тоже решит использовать конкретно эти адреса, мала, то конфликтов своих скриптов с чужими я не опасаюсь.

Глобальные переменные типа $30, $56?

Den_spb wrote:

Насколько я понимаю, использовать КЛЕО опкоды в мэйне можно, но при этом должна быть установлена КЛЕО.

{$CLEO} ?

3Doomer wrote:

опкоды использовать можно в мейне ПОЧТИ без ограничений

Клео опкоды, да? smile

3Doomer wrote:

я делал обмен данными между скриптами через запись-чтение в файл, но это ацки нагружает жёсткий диск)))

Да, подобные методы действительно осуществляют вовсе не нужную нагрузку, однако как выход можно использовать в подобного рода случаях (числа, строки передавать). Но ведь динамически данные массива туда не запишешь, это не мой выход из положения..

mfisto wrote:

после метки :SOUNDS2
поставь wait 0
иначе будет или зависать или вылетать

Возможно, стоит попробовать. Сейчас поэкспериментирую, спасибо! smile

Last edited by Ammy (25-11-2009 15:47)

Offline

#25 25-11-2009 15:44

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

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

Ammy wrote:

Да, подобные методы действительно осуществляют вовсе не нужную нагрузку, однако как выход можно использовать в подобного рода случаях (числа, строки передавать). Но ведь динамически данные массива туда не запишешь, это не мой выход из положения...

запишешь:cool:
но нагрузка будет ппц, особенно, если обращаться чаще, чем раз в секунду...:rolleyes:
так что лучше писать в мейн))


GIMS developer

Offline

Board footer

Powered by FluxBB