#1 Re: Вопросы по скриптингу » Массивы и актёры » 11-12-2009 11:37

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

#2 Re: Беседка » официальные локализации GTA в России » 11-12-2009 11:33

Alien wrote:
Ammy wrote:

San Andreas от 1С намечен как подарок на новый год. smile

на 2010 хоть?:D

Да, в этом, в новом, или под зиму 2011. grin

0sshot_1.png

Куплю себе одну такую..

#3 Re: Беседка » официальные локализации GTA в России » 10-12-2009 05:54

San Andreas от 1С намечен как подарок на новый год. smile

#5 Re: Вопросы по скриптингу » Массивы и актёры » 10-12-2009 03:56

Скажем, что так идеально, как в этой справке, выполнить слияние не выходит. Обязательно остаётся какой-то непоправимый косяк, лишняя выпуклость модели.

#6 Re: Вопросы по скриптингу » Массивы и актёры » 08-12-2009 12:19

Привет всем! У меня вопрос такой, не относящийся к скриптингу: есть модели актёров, один Mesh, текстуры, но без скилета. Есть скилет SA. Открываю модель SA, удаляю Mesh, подгоняю свою модель под стандартный скелет, сохраняю, но не могу экспортировать. Получается, что нужно скилет к мешу приделывать? Проще никак нельзя? :wow:

#7 Re: Вопросы по скриптингу » Массивы и актёры » 27-11-2009 09:04

Т.е. Alien писал, что нужно всё объединить в *.cm, которую нужно вызвать из отдельного *.cs потока командой start_mission 'same', и в этом случае будет 1024 локальных переменных в "потоке" миссии? Значит, миссия - это 1024@, а поток - 36@? Заранее извиняюсь за эти вопросы, в официальной справке было написано, что можно ограничения обойти, а вот как их обойти - написано не написано. grin

#8 Re: Вопросы по скриптингу » Массивы и актёры » 27-11-2009 01:33

GTASA wrote:

посмотрел твои скрипты взаимодействия. Почему ты очень часто в конце своих скриптов пишешь 0a93: ?

Какие скрипты? Я тут ничего не выкладывала, кроме базы. На компе моём успел пошарить? smile
Опкод на всякий случай, к месту стоит, а сам скрипт зациклен.

Alien wrote:

смысла выносить 2 реализации с одинаковым интерфейсом в разные потоки нет. Подумай, может можно объединить все в один поток? Если мало 32 переменных, можно оформить в виде custom mission. Будет 1024.

Именно в кол-ве переменных и их глобальности стояли проблемы.
А чем CM лучше S? Оба потоками являются, в один параметры передавать можно. Или нет? Во втором случае кол-во локальных переменных до тыщи возрастёт?

Alien wrote:

Я про него даже не знал. А для чего он?

Аааа, вынос мозга, ты издеваешься!:wow: Это што бы песать, а читали патом grincrazy

#9 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 22:51

Проблема решилась сменой битрейта в аудиофайле! :wow:
Всех благодарю и одновременно извиняюсь за всё, простите, мозгоёбство. Иного выражения я не нахожу.

[---]

Остался один важный вопрос: каким образом правильно настроить взаимодействие с постоянно изменяющимся массивом актёров в первом основном потоке? Метод var 1 = 8@(7@, 10i) в цикле записывает значения актёров (одного), работает, а как записать всех? Скажем, чтобы переменная (массив) была динамической, и к ней можно было обращаться точно так же, как и в первом потоке.

Вырезка из основного потока:
725f02cf21a69d07bd79efe0b7af30f6.png

Выражение var 1 = 8@, как мне показалось, вообще безрезультатно.

#10 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 22:07

Согласна, что актуальность мэйна с каждым днём всё менее-менее smile

Файлы пробовала разные, использовала и короткие секундные sfx's, рекодировала самостоятельно - нет положительной отдачи. Версия SA: 1.0, качала в лицензии с торрентов, целостность файлов 100%, про системные кодеки ничего сказать не могу, музыка в плеерах проигрывается нормально.

P.S: у вас здесь на форуме хак блогов самописный? Сделала себе один: http://sannybuilder.com/forums/blogs.php?bid=1332

#11 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 21:10

И вы извините, если у меня больной юмор выработался. Картинка значила то, что часть моего кода, отвечающая за mp3 - жук. Музыка, перекодированная в 192, длительность около 3 минут. Это амбиент, который должен присутствовать в игре. Скажем так, для атмосферы.

Один поток устанавливает значение, которое другой поток подхватывает, и если значение соответствует заложенному ранее mp3, то, как бы, начинается проигрывание. Мне не удалось справиться с этой задачей, придётся переносить в мэйн (с $CLEO установкой комплировать), и использовать глобальные переменные под эти цели.

P.S: http://smages.com/i/3a/72/3a72283674c90 … 498799.png

[---]

Одного понять не могу: судя по логу данные в переменную var 0 записываютcя, вторым потоком данные считываются, так какого же чёрта всё останавливается на загрузке mp3? Пробовала, кстати, создавать поток внутри основного потока, меняя расширение второго потока на s, и тем самым передать в него параметры, но это, как ни странно, тоже давало сбои, аналогичная картина вырисовывалась. Даже если бы и заработало, то о динамической передаче речи бы в дальнейшем не заходило - не создавать же несколько раз один и тот же поток?? smile

P.S: жаль, что всё это вынуждает отказаться от отдельных CLEO потоков в отдельных файлах.

Вынесла для себя следующее:

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

2. Остальные, не касающиеся актёров вещи, такие, как мертвецкий патруль вынести в *.cs
3. Миссии заложить в *.cm

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

P.S: скорее бы начать писать миссии, а не заниматься непосильными для себя самой вещами. Считаю эти клео переменные недостатком, как и глобальную область видимости в целом там. Огорчает такое.

#12 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 20:48

Обновила сообщение предыдущее, выложила злосчастные коды. Остальные условия, связанные с актёрами, удалила, оставив только самое необходимое - генерацию, проверки, и удаление.
Alien, а о что за ГС?

#13 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 20:27

Alien, лог проверяла, обрыв значится на загрузке *.mp3 (00000065: 0AAC). Метод, предложенный тобою, является для меня слишком сложным в данное время, плюс, я думаю, использоваться будет не одна такая переменная, а их (общее) количество скажется на общем объёме кода, и при моих практически нулевых познаниях в работе с памятью, возникнут, конечно же, трудности. В итоге ни к чему хорошему это привести не должно. Я воспользуюсь оригинальным мэйном, спасибо.

3Doomer wrote:

по-моему, это ГС!!!

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

3Doomer wrote:

на счёт кода: ошибок нет

3Doomer wrote:

подчёркиваю, у меня mp3 НИ РАЗУ не скосячило!!

Никто и не сомневается, что у вас прямые руки.

Alien wrote:

Виноваты кривые опкоды. Поэтому нужны прямые руки чтобы все воркало.

А вот, собственно, коды. Проверьте, если у вас есть сомнения, и если заработает звук - памятник поставлю!

[---]

// This file was decompiled using SASCM.INI published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//------------- MAIN ---------------

thread 'ZOMBIES'
wait 30

09BA: show_entered_zone_name 0  
09B9: show_entered_car_name 0 
01F0: set_max_wanted_level_to 0 
0111: set_wasted_busted_check 0  
03DE: set_pedestrians_density_multiplier_to 0.0
01EB: set_traffic_density_multiplier_to 0.0
00C0: set_current_time_hours_to 0 minutes_to 0
06D0: enable_emergency_traffic 0 
06D7: enable_train_traffic 0
0923: enable_air_traffic 0 
096A: enable_flying_helis 0 
099E: enable_police_patrols 0 
06C8: enable_riot 1  
0924: enable_screen_darkness 1 with_value -1
0826: enable_hud 0 

01B6: set_weather 8
01B7: release_weather 
01B5: force_weather 8 

0AB3: var 0 = 1

gosub @LOAD

wait 50 ms
 
var
    7@ : int = 0
    8@ : array 10 of actor
end

while true

    wait 250
    
    for 7@ = 0 to 9
        
        if
            8@(7@,10i) == 0
        then
        
            0208: 0@ = random_float_in_ranges -15.0 15.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: 8@[7@] = create_actor_pedtype 7 model #WMYBU at 1@ 2@ 3@                       
            0223: set_actor 8@(7@,10i) health_to 1000                                         
            02AB: set_actor 8@(7@,10i) immunities BP 0 FP 1 EP 0 CP 0 MP 0                       
            0446: set_actor 8@(7@,10i) immune_to_headshots 1                                     
            060B: set_actor 8@(7@,10i) decision_maker_to 32                        
            0332: set_actor 8@(7@,10i) bleeding 1                                                
            0489: set_actor 8@(7@,10i) muted 1                                                                                  
            04D8: set_actor 8@(7@,10i) drowns_in_water 0                                         
            0946: set_actor 8@(7@,10i) actions_uninterupted_by_weapon_fire 1
            03FE: set_actor 8@(7@,10i) money 0
            0245: set_actor 8@(7@,10i) walk_style_to "DRUNKMAN"
            
            wait 10 ms
            
            if 
                056D: actor 8@(7@,10i) defined 
            then 
                04C4: store_coords_to 4@ 5@ 6@ from_actor $PLAYER_ACTOR with_offset 0.0 0.9 0.0 
                05D3: AS_actor 8@(7@,10i) goto_point 4@ 5@ 6@ mode 4 99999 ms  
            end
                                                      
        end  
     
        if
            actor.Dead(8@(7@,10i))
        then
            actor.DestroyWithFade(8@(7@,10i))
            8@(7@,10i) = 0
        end
    
        if 
            056D: actor 8@(7@,10i) defined 
        then 
            if
                80F2: not actor $PLAYER_ACTOR near_actor 8@(7@,10i) radius 60.0 80.0 0 
            then
                actor.DestroyInstantly(8@(7@,10i))
                8@(7@,10i) = 0       
            end    
        end
        
        if 
            056D: actor 8@(7@,10i) defined 
        then 
            if
                00F2: actor $PLAYER_ACTOR near_actor 8@(7@,10i) radius 10.0 10.0 0  
            then
                05E2: AS_actor  8@(7@,10i) kill_actor $PLAYER_ACTOR   
            end    
        end
        

  end 
end

:LOAD
wait 30 ms

model.Load(#WMYBU)
038B: load_requested_models

if
    model.Available(#WMYBU)
jf @LOAD

return

0A93: end_custom_thread

Второй:

{$VERSION 3.1.0027}
{$CLEO .cs}

//------------- MAIN ---------------

thread 'SOUNDS'
wait 300 ms

:SOUNDS
wait 0

:SOUNDS2
wait 0

0AB4: 0@ = var 0

if
    player.Defined($PLAYER_CHAR)
then
    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    
end

jump @SOUNDS2

0A93: end_custom_thread

#14 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 16:57

Нет, ошибка сохранилась, а ожидание, пусть и небольшое, я добавила - тоже самое. Тяжёлый случай grin
Не из-за проигрывания ли музыки дело? Уж больно часто на эти опкоды жалуются. Я уж не знаю, к чему цепляться.

Если удалить строки:

7d7226c7df31d1a0e0f135e6ca5d3afd.png

...никаких вылетов и прочего не будет!

Так что, опкоды виноваты, или мои руки?

P.S: Неужели остаётся только main?

#15 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 15:49

3Doomer wrote:

так что лучше писать в мейн))

Вот, вероятно, лучшее решение, если не выйдет по средствам глобальных CLEO переменных.

#16 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 15:34

4c5646f9ca521d426fe2dff7bd8443b8.png

Den_spb wrote:

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

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

Den_spb wrote:

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

{$CLEO} ?

3Doomer wrote:

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

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

3Doomer wrote:

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

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

mfisto wrote:

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

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

#17 Re: Беседка » Остались люди играющие в SA? Скриптинг жив или мёртв? » 25-11-2009 12:47

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

#18 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 11:58

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

#19 Re: Вопросы по скриптингу » Массивы и актёры » 25-11-2009 10:52

Ammy wrote:

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

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

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

0AB3: var 0 = 10

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

0AB4: 0@= var 0

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

#20 Re: Модификации » San Andreas new opcodes project » 20-11-2009 14:21

Seemann, 3Doomer, спасибо огромное, гибкая штука для работы со звуком!
Alien, респект, очень удобный плагин, вчера пытала! smile

#21 Re: Вопросы по скриптингу » Массивы и актёры » 20-11-2009 14:16

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

#22 Re: Вопросы по скриптингу » Массивы и актёры » 20-11-2009 08:32

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

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

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

0AB3: var 0 = 10

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

0AB4: 0@= var 0

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


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

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

4c1f65d95ab9e5d627d973ae12747f8d.png

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

#24 Re: Модификации » San Andreas new opcodes project » 19-11-2009 07:53

Как насчёт доработки опкодов манипуляции со звуками? Для привязки к актёру, объекту, координатам, зоне в n
'ом радиусе и т. д.

Примеры (на основе стандартных):

link_mp3 $MyMP3 to_actor $Actor
link_mp3 $MyMP3 to_car $MyCAR
set_mp3  $MyMP3 location 1600.0 1200.0 32.0
attach_mp3 $MyMP3 to_object $MyOBJ

SA (стандартные):

0949: link_wav $MyWAV to_actor $Actor
0A16: link_wav $MyWAV to_car $MyCAR
03D7: set_wav $MyWAV location 1600.0 1200.0 32.0
097C: attach_wav $MyWAV to_object $MyOBJ

В том случае, конечно, если эти стандартные (SA) команды не работают с загруженными звуковыми файлами по средствам опкодов CLEO. Я говорю о:

0AAC: $hMP3 = load_mp3 "CLEO\playlist\01.mp3"
03D7: set_wav $hMP3 location 1600.0 1200.0 32.0
0AAD: set_mp3 $hMP3 perform_action 1

К основному вопросу: чем это должно упростить процесс работы?

Упростит коды вида (дословно): проверка, находится ли актёр в заданной координате, и если истина, то проигрывать звук. Так же и с объектами, транспортом, и прочим, что было ранее перечислено. Так что, думаю, сократит как и кол-во кода, так и времени на его написание, ну и по мелочи, ведь гораздо приятнее выполнить проверку или иное действие по средствам опкода, а не методом IF THEN ELSE END

P.S: Это моё предложение, которое можно как проигнорировать, так и нет. Я это к тем, кто, вдруг, соберётся писать, что это всё бредовая идея. Может и так, своё мнение держу при себе.

Alien, если я правильно поняла, то эти опкоды, предложенные тобою, позволяют выводить текст без использования GXT, FXT? Т. е. напрямую в коде набираешь буквы, а оно тебе их в игре выводит?

#25 Re: Sanny Builder и CLEO » Вопросы и предложения по Sanny Builder » 19-11-2009 07:06

А какие суммы необходимо внести, чтобы CLEO продолжал развиваться? Если, конечно, это денежный вопрос..

Board footer

Powered by FluxBB