You are not logged in.
чтобы машина приклеилась в том месте, где стояла?
Попробуйте так, если я правильно понял:
00AA: store_car 0@ position_to 2@ 3@ 4@ 00AA: store_car 1@ position_to 5@ 6@ 7@ 0063: 2@ -= 5@ // (float) 0063: 3@ -= 6@ // (float) 0063: 4@ -= 7@ // (float) 077D: 5@ = car 1@ x_angle 06BE: 6@ = car 1@ y_angle 0174: 7@ = car 1@ z_angle 0683: attach_car 1@ to_car 0@ with_offset 2@ 3@ 4@ rotation 5@ 6@ 7@
0A21: set_car 1@ not_affected_by_cheats 1
08F2: set_car 1@ targettable_by_heatseeker 0
Use before:
if 056E: car 1@ defined then // You'r code here end
If car created in other thread, then use a global variable. The Game don't save this properties. Need always check car and set properties if car exist.
То есть скрипт должен работать 3 секунды
wait в этом случае не гарантирует Вам, что пройдут реальные 3 секунды. Будет погрешность в любом случае ( часто колосальная ). Вообще для таких случаев лучше использовать переменные-таймеры ( хотя не обязательно ):
{$CLEO .cs}
32@ = 0 // чистим таймер
:Main_Loop
wait 0
if
32@ > 3000 // нужно примерно рассчитать когда будет 3 реальных секунды
then
jump @Main_Loop_end
end
// здесь мутим воду...
jump @Main_Loop
:Main_Loop_end
0A93: end_custom_threadТакое задавайте в общих вопросах, как Вы изначально сделали. Мне пришлось удалить пост из за этого )
красный маркер
Ждём скрин, а то описание не понятное )
И, как мне кажется, опкод 065B, и тем более 0A9F, не имеют отношения к заданому вопросу
на серверах
Вопрос нужно задавать на форумах SAMP, MTA и прочих многопользовательских сервисов. Здесь такое обычно не обсуждают.
Нет, это иконка CLEO4
Ахах ) А я уже фантазию включил )
Если создать актёра, который будет враждебно относиться к игроку, то когда ты подходишь к актёру близко, то он начинает по тебе стрелять, но если ты будешь стрелять в него будучи на дистанции, то, даже если он будет смотреть прямо тебе в душу, всё равно не отреагирует, эдакая близорукость.
Вот в чём состоит мой вопрос -- как можно увеличить или уменьшить дистанцию зора актёра, лично мне нужно эту дистанцию уменьшить.
Желательно делать это относительно каждого актёра, но если есть возможность изменить дальнозоркость только сразу всем, то не велика потёря
Решается (частично или полностью) с помощью моделей поведения актёров.
Seemann,вижу у тебя на аве небольшую цифру 4 на логотипе СБ. Это намёк на 4-ю версию? 
А разве выгружать модель из памяти не надо?
Я привёл только минимум того, чтобы смена успешно осуществилась. Удалять или нет уже зависит от кода. Если модель не будет использоваться в дальнейшем, тогда нужно.
Игроку можно как то поставить скин SWATа ? (SA, scm)
Да:
Model.Load(#SWAT) 038B: load_requested_models 09C7: change_player $PLAYER_CHAR model_to #SWAT
Функцию свою он выполняет, но появился побочный эффект
Так, как вы используете переменные 32@ и 33@ не как таймер, то это рано или поздно приведёт к вилету, или запишет не те данные куда-то.
и у меня стала очень медленно работать анимация персонажа
Не удивительно, раз Вы каждый цикл загружаете в память несколько внешних библиотек, где каждый раз происходит поиск методов. Плюс не понял для чего там форматирование строк с URL-адресом. Если там отправляется запрос, то не удивительно, что тормозит. Нужно отправлять его асинхронно, чтобы хоть как-то оптимизировать это "чудо".
мы тут не ассемблер изучаем.
Он не это имел ввиду )
То какой адрес памяти отвечает за максимальное количество брони?
Какой адрес не знаю, но через обычный скрипт всё решается
// Для игрока: 055F: set_player $PLAYER_CHAR max_armour += 50 // задать 0945: get_player $PLAYER_CHAR max_armour_to $9595 // получить // Для актёров: 035F: actor 98@ armour += 100 // задать 04DD: $9594 = actor $PLAYER_ACTOR armour // получить
Вы очень много сделали для скриптинга
Это очень скромный вклад )
К сожалению, не мог скачать ссылка не рабочая.
На форуме ссылки нужно поменять. Скачать учебник по скриптингу Sanny Builder Вы сможете с архива. Но они уже устарели. Я более двух месяцев обновлял все статьи + были добавлены новые уроки, так что лучше с сайта читать.
то переключения оружия не происходит
Я бы сделал так:
{$CLEO .cs}
0000: NOP
while true
wait 0
for 0@ = 48 to 57
if
0AB0: key_pressed 0@
then
0A8F: 1@ = 0@ - 48// int
04B8: get_weapon_data_from_actor $PLAYER_ACTOR slot 1@ weapon 2@ ammo 3@ model 4@
if
0491: actor $PLAYER_ACTOR has_weapon 2@
then
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 2@
end
end
end
endВ SA будет работать, а в Вайсе без понятия, не работал с ней.
В SA так:
:sab 0AB1: call_scm_func @fun 3 0@ 1@ 2@ // var_ret 0 wait 900 // задержка между переключениями оружия return :fun Model.Load(0@) repeat wait 0 until Model.Available(0@) 01B2: give_actor $PLAYER_ACTOR weapon 1@ ammo 2@ Model.Destroy(0@) 0AB2: ret 0
В VC не помню поддерживает ли она вообще SCM-функции
00E1: player 0 pressed_key 39
Нет такой клавиши 39. Лимит от 0 до 19 ( исключая 12 ). Возможно Вы хотели написать этот опкод:
0AB0: key_pressed 39
?
А я ведь был так близок к финалу!:(
Создаёшь копию и перезапускаешь SB. Тоже иногда такое окно выскакивает.
Ну, вы поняли
Поняли частично. Ну вот Вам кусок скрипта, который сохранит вам позицию камеры и её поинт:
if 0AB0: key_pressed 49 // 1 then 068D: get_camera_position_to 1@ 2@ 3@ 068E: get_camera_target_point_to 4@ 5@ 6@ 0AF3: write_float 1@ to_ini_file "config.ini" section "CAM_DATA" key "CamPosX" 0AF3: write_float 2@ to_ini_file "config.ini" section "CAM_DATA" key "CamPosY" 0AF3: write_float 3@ to_ini_file "config.ini" section "CAM_DATA" key "CamPosZ" 0AF3: write_float 4@ to_ini_file "config.ini" section "CAM_DATA" key "PointPosX" 0AF3: write_float 5@ to_ini_file "config.ini" section "CAM_DATA" key "PointPosY" 0AF3: write_float 6@ to_ini_file "config.ini" section "CAM_DATA" key "PointPosZ" end
Далее уще ищите себе Cam-Hack
Значит всё же стартер китайский:(
Да, подправить его не мешало б.
и как я понял, потому что иконки достигают лимита и больше ничего на карте появиться не может, так?
За иконки не знаю, но сферы точно имеют лимит на отрисовку.
У Вас слишком много таких иконок. Дело в том, что в стартере Вы создаёте в цикле бесчётное количество маркеров, соотвественно вы сможете удалить только последний.
:MyTrigger4 thread "MyTrigger4" 02A7: $TrigMarker4 = create_asset_radar_marker_with_icon 40 at 401.4604 2538.5925 16.5452 while $MyMission_Passed3 == 0 wait 250 if Player.Defined($PLAYER_CHAR) then //02A7: $TrigMarker4 = create_asset_radar_marker_with_icon 40 at 401.4604 2538.5925 16.5452 //$TrigMarker4 = Marker.CreateIconAndSphere(40, 401.4604, 2538.5925, 16.5452) Marker.Disable($TrigMarker3)
Если у Вас "вылазит" не тот перс, то скорее всего Вы используете не ту модель. Для 'KENDL' нужно использовать #SPECIAL03, соответственно для 'janitor' - #SPECIAL02 и для 'sweet' - #SPECIAL04.
но сама KENDL это бета перс, по крайней мере я так думаю. модель "той самой" - cskendl
В бета версии использовалась модель кажется #BFUST для KENDL, затем её заменили на ту, которую мы знаем сейчас.
вот только она находится в файле с кат сценами, следовательно в игру не добавить.
Специальных актёров можно добавить сколько влезет. Я об этом даже статью написал. Другое дело, что модели с "cutscene.img" не подойдут для создания актёров в скрипте. Нужно их конвертировать.
Как жить?
Я нашел сконвертированную модель KENDL. Можно скачать здесь.
Мне нужна модель Кендел (Которая сестра CJ) но при загрузке #KENDL вылазит не тот перс
Неправильно загружаете модель специального актёра. Нет такой модели #KENDL. Есть 'KENDL':
023C: load_special_actor 'KENDL' as 1 // models 290-299 038B: load_requested_models repeat wait 0 until 023D: special_actor 1 loaded 009A: 0@ = create_actor_pedtype 4 model #SPECIAL01 at 0.0 0.0 0.0 0296: unload_special_actor 1
Как заставить актёров, сидящих в транспорте атаковать врагов(ну или СЖ)? Не по опкоду, в которому актёр стреляет в координаты, а скажем как в миссии, где от Русских с BS на байке уходишь, в коде миссии ничего такого не нашёл, сделал тестовую миссию, но враги просто сидят.
А как Вы их заставляете атаковать? Возможно, этот опкод заставит:
0713: actor 50@ driveby_actor 41@ car -1 point 0.0 0.0 0.0 radius 100.0 0 0 firing_rate 90
судя по коду, у вас линк актёров в неактивный интерьер происходит
// перенос в интерьер 12 select_interior 12 // не 1 0860: link actor $PLAYER_ACTOR to interior 12 // 0860: link actor $rico to interior 12 // перенос в открытое пространство select_interior 0 0860: link actor $PLAYER_ACTOR to interior 0 0860: link actor $rico to interior 0
Подскажите, пожалуйста, хочу создать пачку денег на точке, а игра вылетает.
Попробуйте так:
{$CLEO .cs}
//-------------MAIN---------------
//004F: create_thread @Noname_12
:Noname_12
wait 0
00D6: if
0256: player $PLAYER_CHAR defined
jf @Noname_12
04A6: 3@ = create_asset_money_pickup_at 109.39 -808.28 10.46 money 1 1
:2
wait 0
if
0214: pickup 3@ picked_up
jf @2
0215: destroy_pickup 3@
0109: player $PLAYER_CHAR money += 1 // 4@
//jump @Noname_12
//004E: end_thread
0A93: end_custom_thread
То ли я, такой глупый, то ли ещё что-то. Но вариант от wmysterio не работает
(
Да работает он, тестировал с Вашим же TXD.
Вот, бросаю архив. Файлы я немного переделал, в частности добавил иконку кулака и добавил условия когда нужно отображать иконку телефона и Джетпака. Переименовал TXD-файл, потому, что имя архива не должно превышать 7 символов, опкод 0390 требует это сделать, так как s-строки не могут иметь длину больше 7 символов.
Исправленный вариант не работает.
Попробуйте это:
{$CLEO}
0826: enable_hud 0
0390: load_txd_dictionary 'icon_weapon'
for 4@ = 1 to 43
0AD3: 0@v = format "%d" 4@
038F: load_texture 0@v as 4@
end
while true
wait 0
if
Player.Defined($PLAYER_CHAR)
then
0470: 4@ = actor $PLAYER_ACTOR current_weapon
0085: 5@ = 4@ // (int)
if
4@ == 32
then
0A8F: 5@ = 4@ - 5 // int
jump @WEAPON_DRAW_ICON
end
if and
4@ > 29
33 > 4@
then
0A8F: 5@ = 4@ - 2 // int
jump @WEAPON_DRAW_ICON
end
if
4@ > 18
then
0A8F: 5@ = 4@ - 3 // int
end
:WEAPON_DRAW_ICON
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1
038D: draw_texture 5@ position 555.0 35.0 size 35.0 40.0 RGBA 255 255 255 255
end
endБыло бы намного проще, если имя текстуры соответствовало ID оружия. Цикл сократилбыся на 24 строчки. А так пришлось шаманить с переменными, чтобы ID текстуры выводился относительно ID оружия.
0633: AS_actor 31@ exit_car
0633: AS_actor 32@ exit_car
0633: AS_actor 33@ exit_car
Проблема ясна, как день - вы используете переменные 32@ и 33@ для актёров, при этом забывая, что эти переменные отвечают за теймеры. Следовательно их значения будут изменяться. По-этому ссылок на актёров 32@ и 33@ не будет существовать. Попробуйте изменить переменные на другие.