You are not logged in.
Не так далеко до выпуска видео и скриншотов, ну и части игрового процесса в виде бетки.
Если всё пойдёт по плану, то это будет лучший зомби мод для SA! Решила использовать блог в форуме для публикации материалов относительно проекта, туда это всё и полетит, а здесь же останутся только проблемы.
Ammy wrote:San Andreas от 1С намечен как подарок на новый год.
на 2010 хоть?:D
Да, в этом, в новом, или под зиму 2011.
Куплю себе одну такую..
San Andreas от 1С намечен как подарок на новый год.
Однозначно Delphi.
Скажем, что так идеально, как в этой справке, выполнить слияние не выходит. Обязательно остаётся какой-то непоправимый косяк, лишняя выпуклость модели.
Привет всем! У меня вопрос такой, не относящийся к скриптингу: есть модели актёров, один Mesh, текстуры, но без скилета. Есть скилет SA. Открываю модель SA, удаляю Mesh, подгоняю свою модель под стандартный скелет, сохраняю, но не могу экспортировать. Получается, что нужно скилет к мешу приделывать? Проще никак нельзя? :wow:
Т.е. Alien писал, что нужно всё объединить в *.cm, которую нужно вызвать из отдельного *.cs потока командой start_mission 'same', и в этом случае будет 1024 локальных переменных в "потоке" миссии? Значит, миссия - это 1024@, а поток - 36@? Заранее извиняюсь за эти вопросы, в официальной справке было написано, что можно ограничения обойти, а вот как их обойти - написано не написано.
посмотрел твои скрипты взаимодействия. Почему ты очень часто в конце своих скриптов пишешь 0a93: ?
Какие скрипты? Я тут ничего не выкладывала, кроме базы. На компе моём успел пошарить?
Опкод на всякий случай, к месту стоит, а сам скрипт зациклен.
смысла выносить 2 реализации с одинаковым интерфейсом в разные потоки нет. Подумай, может можно объединить все в один поток? Если мало 32 переменных, можно оформить в виде custom mission. Будет 1024.
Именно в кол-ве переменных и их глобальности стояли проблемы.
А чем CM лучше S? Оба потоками являются, в один параметры передавать можно. Или нет? Во втором случае кол-во локальных переменных до тыщи возрастёт?
Я про него даже не знал. А для чего он?
Аааа, вынос мозга, ты издеваешься!:wow: Это што бы песать, а читали патом
Проблема решилась сменой битрейта в аудиофайле! :wow:
Всех благодарю и одновременно извиняюсь за всё, простите, мозгоёбство. Иного выражения я не нахожу.
[---]
Остался один важный вопрос: каким образом правильно настроить взаимодействие с постоянно изменяющимся массивом актёров в первом основном потоке? Метод var 1 = 8@(7@, 10i) в цикле записывает значения актёров (одного), работает, а как записать всех? Скажем, чтобы переменная (массив) была динамической, и к ней можно было обращаться точно так же, как и в первом потоке.
Вырезка из основного потока:
Выражение var 1 = 8@, как мне показалось, вообще безрезультатно.
Согласна, что актуальность мэйна с каждым днём всё менее-менее
Файлы пробовала разные, использовала и короткие секундные sfx's, рекодировала самостоятельно - нет положительной отдачи. Версия SA: 1.0, качала в лицензии с торрентов, целостность файлов 100%, про системные кодеки ничего сказать не могу, музыка в плеерах проигрывается нормально.
P.S: у вас здесь на форуме хак блогов самописный? Сделала себе один: http://sannybuilder.com/forums/blogs.php?bid=1332
И вы извините, если у меня больной юмор выработался. Картинка значила то, что часть моего кода, отвечающая за mp3 - жук. Музыка, перекодированная в 192, длительность около 3 минут. Это амбиент, который должен присутствовать в игре. Скажем так, для атмосферы.
Один поток устанавливает значение, которое другой поток подхватывает, и если значение соответствует заложенному ранее mp3, то, как бы, начинается проигрывание. Мне не удалось справиться с этой задачей, придётся переносить в мэйн (с $CLEO установкой комплировать), и использовать глобальные переменные под эти цели.
P.S: http://smages.com/i/3a/72/3a72283674c90 … 498799.png
[---]
Одного понять не могу: судя по логу данные в переменную var 0 записываютcя, вторым потоком данные считываются, так какого же чёрта всё останавливается на загрузке mp3? Пробовала, кстати, создавать поток внутри основного потока, меняя расширение второго потока на s, и тем самым передать в него параметры, но это, как ни странно, тоже давало сбои, аналогичная картина вырисовывалась. Даже если бы и заработало, то о динамической передаче речи бы в дальнейшем не заходило - не создавать же несколько раз один и тот же поток??
P.S: жаль, что всё это вынуждает отказаться от отдельных CLEO потоков в отдельных файлах.
Вынесла для себя следующее:
1. Всё то, что касается актёров (зомби) и взаимодействия с ними - положить в мэйне, включая посох с бензопилами, анимации (взаимодействующие скрипты) отрывания руками головы, заталкивание дистанционной бомбы им в горло, и прочее.
2. Остальные, не касающиеся актёров вещи, такие, как мертвецкий патруль вынести в *.cs
3. Миссии заложить в *.cm
В основном потоке, который я привела, используются лишь части, отвечающие за генерацию, удаление из памяти, а остальные части находятся в потоках, который создаёт этот основной скрипт. Они не могли повлиять на проигрывание музыки, в этом я уже разобралась.
P.S: скорее бы начать писать миссии, а не заниматься непосильными для себя самой вещами. Считаю эти клео переменные недостатком, как и глобальную область видимости в целом там. Огорчает такое.
Обновила сообщение предыдущее, выложила злосчастные коды. Остальные условия, связанные с актёрами, удалила, оставив только самое необходимое - генерацию, проверки, и удаление.
Alien, а о что за ГС?
Alien, лог проверяла, обрыв значится на загрузке *.mp3 (00000065: 0AAC). Метод, предложенный тобою, является для меня слишком сложным в данное время, плюс, я думаю, использоваться будет не одна такая переменная, а их (общее) количество скажется на общем объёме кода, и при моих практически нулевых познаниях в работе с памятью, возникнут, конечно же, трудности. В итоге ни к чему хорошему это привести не должно. Я воспользуюсь оригинальным мэйном, спасибо.
по-моему, это ГС!!!
Объясните, о чём речь? Если по поводу изображения, то смысла вами явно воспринято не было (извиняюсь за юмор), сразу кинулись в чём-то кого-то обвинять (если я правильно поняла). Если в вашем случае работает, - это значит, что у других должно работать при любых условиях корректно?
на счёт кода: ошибок нет
подчёркиваю, у меня mp3 НИ РАЗУ не скосячило!!
Никто и не сомневается, что у вас прямые руки.
Виноваты кривые опкоды. Поэтому нужны прямые руки чтобы все воркало.
А вот, собственно, коды. Проверьте, если у вас есть сомнения, и если заработает звук - памятник поставлю!
[---]
// 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
Нет, ошибка сохранилась, а ожидание, пусть и небольшое, я добавила - тоже самое. Тяжёлый случай
Не из-за проигрывания ли музыки дело? Уж больно часто на эти опкоды жалуются. Я уж не знаю, к чему цепляться.
Если удалить строки:
...никаких вылетов и прочего не будет!
Так что, опкоды виноваты, или мои руки?
P.S: Неужели остаётся только main?
так что лучше писать в мейн))
Вот, вероятно, лучшее решение, если не выйдет по средствам глобальных CLEO переменных.
Вопрос адресован не мне, но отвечу - я, например, записываю значения в неиспользуемые общедоступные ячейки памяти. Такое решение возможно не самое верное, но поскольку вероятность того, что кто-то тоже решит использовать конкретно эти адреса, мала, то конфликтов своих скриптов с чужими я не опасаюсь.
Глобальные переменные типа $30, $56?
Насколько я понимаю, использовать КЛЕО опкоды в мэйне можно, но при этом должна быть установлена КЛЕО.
{$CLEO} ?
опкоды использовать можно в мейне ПОЧТИ без ограничений
Клео опкоды, да?
я делал обмен данными между скриптами через запись-чтение в файл, но это ацки нагружает жёсткий диск)))
Да, подобные методы действительно осуществляют вовсе не нужную нагрузку, однако как выход можно использовать в подобного рода случаях (числа, строки передавать). Но ведь динамически данные массива туда не запишешь, это не мой выход из положения..
после метки :SOUNDS2
поставь wait 0
иначе будет или зависать или вылетать
Возможно, стоит попробовать. Сейчас поэкспериментирую, спасибо!
А зачем гнаться новыми GTA? Выбрал одну - делай, мод не останется незамеченным, ведь далеко не все люди гонятся за более новыми играми, играют и в старые, или имеют и те, и те, или вовсе, как сказали ранее, не имеют возможности за неимением лучшего компьютера играть во что-то новое, или просто фаны, допустим, старых частей. Почему мод не может быть востребован из-за "старости" игры, почему это впечатление так сильно влияет на модеров? Тем более для нового ещё ничего не разжёвано, может проблематичным сделать что-то, что с лёгкостью можешь сделать здесь. Вон, на SA, бери, да делай что хочешь )
Первый скрипт - это доработанный вариант того, в котором вы мне помогали понять ошибку ранее. Там в цикле при определённом условии, что актёр был создан, и дефайнед, у меня записывается значение в глобальную переменную 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@
endjump @SOUNDS2
И опять же, это всё CLEO скрипты, находящиеся в отдельных *.cs файлах. Мне нужно как-то настроить плотное взаимодействие между ними.
Например, мне раньше (как, впрочем, и сейчас) было нужно засунуть в глобальную переменную весь массив $DEAD($count, 10i), но так ничего и не вышло, кроме как реакция на одно актёра из этого массива. То есть записывался (удачно) только один актёр: var 0 = $DEAD($count, 10i), и это при взаимодействии *.cs и *.scm скриптов. При тех же *.cs на *.cs никакого даже в этом случае взаимодействия не было, а при попытке засунуть весь массив, и в дальнейшем с ним работать, игра просто не пускала за границы экрана загрузки, а то и вовсе вылетала, ну а записывалось вот так: var 0 = $DEAD
В целом мне нужна помощь по части глобальной области видимости. Имея работающую структуру, я могла бы решить проблемы, описанные выше. Вот, Вы, например, как налаживаете взаимодействия между скриптами?
И ещё вопрос: видела скрипты, где CLEO опкоды используются в обычном мэйне. Это правильно? Получается, что я могу запросто решить все эти проблемы, используя эти два потока в одном файле, наладив взаимодействие при помощи глобальных переменных ($var), и не мучаясь с CLEO?
Зачем мне всё это:
Делаю мод, налаживаю модель поведения зомби, различные взаимодействия, многое сделано, но такие вот тонкие моменты, как эти, просто необходимы, иначе я так никогда и не дойду до создания миссий, cutscene, и прочего, а так уже хочется, с ума сойти
Первый вопрос:
Возникла одна маленькая проблема с глобальной областью видимости переменных взаимодействия с CLEO скриптами. Так как нельзя использовать переменные вида $VAR, был предложен (в оф. мануале) иной выход - использование новых CLEO опкодов.
Существует у меня два (CLEO) скрипта, один из которых устанавливает значение одной глобальной переменной методом:
0AB3: var 0 = 10
Второй CLEO скрипт взаимодействует с этой переменной в существующем цикле, записывая постоянно её значение вот так:
0AB4: 0@= var 0
При применении данного метода игра отказывается работать.
Вопрос: какие могут быть причины?
Seemann, 3Doomer, спасибо огромное, гибкая штука для работы со звуком!
Alien, респект, очень удобный плагин, вчера пытала!
Спасибо! А если оружие - это оружие ближнего боя? Например, катана, бензопила, резиновая пиписька.
Полагаю, придётся возиться с анимацией, и цеплять её к объекту, а уже самому объекту описывать его свойства..
Первый вопрос:
Возникла одна маленькая проблема с глобальной областью видимости переменных взаимодействия с CLEO скриптами. Так как нельзя использовать переменные вида $VAR, был предложен (в оф. мануале) иной выход - использование новых CLEO опкодов.
Существует у меня два (CLEO) скрипта, один из которых устанавливает значение одной глобальной переменной методом:
0AB3: var 0 = 10
Второй CLEO скрипт взаимодействует с этой переменной в существующем цикле, записывая постоянно её значение вот так:
0AB4: 0@= var 0
При применении данного метода игра отказывается работать.
Вопрос: какие могут быть причины?
Второй вопрос:
Позволяется ли использовать модели существующего в игре оружия в качестве объектов, которые можно attach'ить к моделям автотранспорта, при этом сохраняя их работоспособность в качестве оружия? Пробовала цеплять к машине автомат - игра вылетает, как только доходит до места, где я указываю модель оружия как объект, т. е. :
Естественно, что если бы даже и не вылетело, свойства оружия бы были уже утрачены, потому что игра бы инициализировала это (пушку) как объект, без надлежащих свойств, а сами свойства нужно было бы описывать.
Спасибо!
Как насчёт доработки опкодов манипуляции со звуками? Для привязки к актёру, объекту, координатам, зоне в 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? Т. е. напрямую в коде набираешь буквы, а оно тебе их в игре выводит?
А какие суммы необходимо внести, чтобы CLEO продолжал развиваться? Если, конечно, это денежный вопрос..