[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 25 из 128«122324252627127128»
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder и заказы (Вы можете получить ответы на вопросы по SB и сделать заказ)
Вопросы по скриптингу Sanny Builder и заказы
wmysterio
Администраторы
Скриптер
22.11.11 21:52
Offline
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему wink Это ещё не значит, что все прям бросятся решать во чтобы то не стало, но ответ вы сможете вы получить как вариант решения или как невозможность или сложность решения.
УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА:

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.

Внимание! От этого момента тема предназначена ещё и для заказов скриптов и миссий. Я это сделал по одной причине - пользователи постоянно путают/или не ищут темы и приводят заказ здесь. Теперь этой путаницы не будет. Здесь можно проводить заказы, но Вы должны указать в начале поста текст "НА ЗАКАЗ". Постарайтесь как можно детальнее объяснить суть скрипта.
Прикрепления: 0248203.png(1Kb) · 9085525.png(0Kb)

Slivkin-Sergey
Модераторы
20.06.12 11:20
Offline
Quote (Tom_Harison)
ок, но если нет то тогда простой бег

Чтобы актёр бегал по точкам, сначала запиши эти точки в память командой:
Code
05D7: add_point_to_scmpath координатаХ координатаY координатаZ

И затем примени scmpath к актёру:
Code
05D8: AS_assign_scmpath to_actor $PLAYER_ACTOR flags 4 0

Здесь 4 - флаг применения пути. Если поставишь 6 - будет идти, если оставишь 4 - будет бежать smile

wmysterio, можешь проверить кусок моего скрипта? Я хочу, чтобы если СЖ остановился в опред. точке, то к переменной прибавлялось рандомное число от 5 до 30.
Code
wait 0
if and
0102:   actor $PLAYER_ACTOR in_sphere 2463.9258 -1714.35 13.5004 radius 1.0 1.0 1.0 sphere 0 stopped_on_foot  
8A0C:   not player $PLAYER_CHAR on_jetpack  
    not Actor.Driving($PLAYER_ACTOR)  
    jf @имя_лейбла_засекречено_8
    0209: 17@ = random_int_in_ranges 5 30  
    03BD: destroy_sphere 32@  
    0812: AS_actor $PLAYER_ACTOR perform_animation "BOM_PLANT_LOOP" IFP_file "BOMBER" 4.0 loopA 1 lockX 0 lockY 0 lockF 0 time 3000 // versionB
    wait 3000
005E: $Cucumber_Size_Status += 17@
    0400: store_coords_to 20@ 21@ 22@ from_object 0@ with_offset 0.0 0.0 0.3  
    Object.PutAt(0@, 20@, 21@, 22@)

Tom_Harison
Друзья
SA:MP Scripter
20.06.12 11:45
Offline
Slivkin-Sergey, спасибо сейчас проверю

Slivkin-Sergey
Модераторы
22.06.12 17:40
Offline
Эмм, подскажите кто-нибудь рабочий опкод на аттач объекта к актёру. У меня что ни опкод, то зависон/вылет sad

wmysterio
Администраторы
Скриптер
22.06.12 22:25
Offline
Quote (Slivkin-Sergey)
Чтобы актёр бегал по точкам, сначала запиши эти точки в память командой:
Перед этим нужно выгрузить левые пути опкодом: 05D6: clear_scmpath

Quote (Slivkin-Sergey)
Эмм, подскажите кто-нибудь рабочий опкод на аттач объекта к актёру.
069B: attach_object 88@ to_actor 38@ with_offset 0.0 0.5 -1.0 rotation 0.0 0.0 0.0 // прислинить к актёру объект
09A0: actor $PLAYER_ACTOR attach_object 26@ with_offset 0.0 0.0 0.0 on_bone 5 16 perform_animation "NULL" IFP_file "NULL" time -1 // вцепить объект к определённой части тела актёра

Quote (Slivkin-Sergey)
можешь проверить кусок моего скрипта?
На моём опыте постоянно были проблемы при операциях с разными видами переменных: 005E: $Cucumber_Size_Status += 17@
Лучше, что бы обе переменные были либо глобальные, либо обе локальные.

Возможно генератор плохо работает, попробуй этот опкод:
0099: $8224 = random_int_in_ranges_5_to_30
А так, по идеи, этот кусок должен нормально работать

Slivkin-Sergey
Модераторы
23.06.12 08:15
Offline
Quote (wmysterio)
069B: attach_object 88@ to_actor 38@ with_offset 0.0 0.5 -1.0 rotation 0.0 0.0 0.0 // прислинить к актёру объект
09A0: actor $PLAYER_ACTOR attach_object 26@ with_offset 0.0 0.0 0.0 on_bone 5 16 perform_animation "NULL" IFP_file "NULL" time -1 // вцепить объект к определённой части тела актёра

Эти два опкода нужно использовать совместно?
Quote (wmysterio)
Перед этим нужно выгрузить левые пути опкодом: 05D6: clear_scmpath

Необязательно, если перед этим в скрипте не было временных путей. Кстати, на пути есть какой-нибудь лимит?
Quote (wmysterio)
На моём опыте постоянно были проблемы при операциях с разными видами переменных: 005E: $Cucumber_Size_Status += 17@ Лучше, что бы обе переменные были либо глобальные, либо обе локальные.

Не знаю, сейчас установил гташку, запустил, все норм.
Quote (wmysterio)
0099: $8224 = random_int_in_ranges_5_to_30

Переменная обязательно должна быть глобальной?
Отредактировал Slivkin-Sergey - Суббота, 23.06.12, 08:16

wmysterio
Администраторы
Скриптер
23.06.12 14:26
Offline
Quote (Slivkin-Sergey)
Переменная обязательно должна быть глобальной?
Нет, я поисковика SB скопировал и вставил

Quote (Slivkin-Sergey)
Эти два опкода нужно использовать совместно?
Нет, это те которые могут прицепить объект к актёру

Slivkin-Sergey
Модераторы
23.06.12 20:16
Offline
wmysterio, подскажи, что неправильно в этом коде?
Code
:MISSION_0_3648
wait 0
4@ = Marker.CreateAboveCar(0@)
07E0: set_marker 4@ type_to 1   
wait 1000   
00BC: show_text_highpriority GXT 'INTRO13' time 5000 flag 1   

:MISSION_0_3892
wait 0   
if   
     Actor.InCar($PLAYER_ACTOR, 0@)
jf @MISSION_0_3892   
Marker.Disable(4@)
jump @MISSION_0_3928   

:MISSION_0_3928
wait 0
018A: 6@ = create_checkpoint_at 2001.874 -1157.937 21.1277   
03BC: 5@ = create_sphere_at 2001.874 -1157.937 21.1277 radius 4.0   
00BC: show_text_highpriority GXT 'INTRO18' time 5000 flag 1   
wait 5000   

:MISSION_0_3929
if   
     not Actor.InCar($PLAYER_ACTOR, 0@)
jf @MISSION_0_1816   
wait 0   
if   
     not Car.Wrecked(0@)
jf @MISSION_0_5540   
if
not Actor.Dead($Actor_Sweet)
jf @MISSION_0_5540
wait 0   
03BD: destroy_sphere 5@   
Marker.Disable(6@)
jump @MISSION_0_3648

:MISSION_0_1816
wait 0   
252@ = 2001.874   
253@ = -1157.937   
if   
01AD:   car 0@ sphere 0 near_point 252@ 253@ radius 4.0 4.0   
jf @MISSION_0_3929
00BE: text_clear_all   
Car.LockInCurrentPosition(0@) = True
Player.CanMove($PLAYER_CHAR) = False
03BD: destroy_sphere 5@   
Marker.Disable(6@)

Тут все нормально, то есть, когда выхожу из машины меня зовут обратно. Но вот при гибели актёра $Actor_Sweet миссия НЕ засчитывается проваленной, даже после нескольких перезаходов в машину 0@. С чем это может быть связано?
Отредактировал Slivkin-Sergey - Суббота, 23.06.12, 20:18

Werewolf
Проверенные
23.06.12 23:00
Offline
Я почитал первый урок и узнал что в cleo все же можно использовать глобальные переменные
и вот вопрос, можно ли использовать такой тип
$komandor
$mutant
$enemymutant
что то подобного?

wmysterio
Администраторы
Скриптер
24.06.12 00:34
Offline
Quote (Optimus)
можно ли использовать такой тип
Не рекомендовано, но всё же можно smile Судя по названием переменных планируется что то типа сталкера или doom 3 wink
моя мечта, кстати, сделать игру в стиле Doom 3 - то есть тёмные коридоры и монстры в конце коридорчика )))

Quote (Slivkin-Sergey)
Но вот при гибели актёра $Actor_Sweet миссия НЕ засчитывается проваленной, даже после нескольких перезаходов в машину 0@. С чем это может быть связано?
Попробуй добавить условие
Code
if
Actor.Dead($Actor_Sweet)
then
jump @MISSION_FILED // здесь метка провала
end
после метки :MISSION_0_3892 и :MISSION_0_3929
В том коде, что ты скинул просто отсутствует проверка на гибель актёра $Actor_Sweet

Werewolf
Проверенные
24.06.12 09:52
Offline
wmysterio, Нет это я их придумал, раньше когда был совсем новичком и решил сделать stalker мод, вдохновил меня boiling point
получилась прекрасная зона в пустыне, сделано было 4 части и 5 была но я их все удалил
Я там использовать такие переменные как $stalker
И имена самих сталкеров типа $vital

Я в Doom 3 играл но удалил, а игра хорошая

Хотя будет Last Emission как последний мод на тему постапокалипсиса

А теперь по теме:
Каким способом можно сделать что бы за каждое убийство любого прохожего игроку давали деньги? Вне зависимо на каком расстояние был прохожий от игрока.

Slivkin-Sergey
Модераторы
24.06.12 11:26
Offline
Quote (wmysterio)
В том коде, что ты скинул просто отсутствует проверка на гибель актёра $Actor_Sweet

Да нет, как раз-таки есть.
Quote (Slivkin-Sergey)
if
not Actor.Dead($Actor_Sweet)
jf @MISSION_0_5540

MISSION_0_5540 - это у меня метка провала.
А твой код сейчас попробую.

Werewolf
Проверенные
24.06.12 14:24
Offline
И еще чем этот опкод отличается от других ?
0AB1: call_scm_func @SPAWN_ACTOR 4 spawn_at 2475.1167 -1674.4192 13.3368 angle 287.7152 $ACTOR
Расскажи подробно о нем
Может пригодиться в Deathmatch

wmysterio
Администраторы
Скриптер
24.06.12 14:39
Offline
Quote (Optimus)
И еще чем этот опкод отличается от других
Это scm-функция. Отличается всем. Он может быть проверкой, процедурой или свойством.

а это: "4 spawn_at 2475.1167 -1674.4192 13.3368 angle 287.7152 $ACTOR" - параметры функции, они могут быть любые. Я просто для примера написал
Передавать можно что угодно(или кого угодно) и возвращать тоже.

Например нужно переместить 2-х актёров в одну точку можно записать функцию так:
Code
0AB1: call_scm_func @PUT_ACT 6 put_actor 0@ and 1@  at 2475.1167 -1674.4192 13.3368 angle 287.7152
А затем написать тело функции.

Подробнее я уже написал в уроке, если что то уточни что именно тебя интересует smile

Quote (Optimus)
Каким способом можно сделать что бы за каждое убийство любого прохожего игроку давали деньги? Вне зависимо на каком расстояние был прохожий от игрока.
Для этого нужно проверить событие, который сделал актёр(скоро будет урок), но код должен быть примерно такой:
Code
{$CLEO}
0000:

var
1@: integer = 0
end

while true
      if
      074F:   actor $PLAYER_ACTOR ped_event == 11 // EVENT_DEAD_PED(Актёр убил кого-либо)
      then
      0209: 0@ = random_int_in_ranges 0 500  
      005A: 1@ += 0@ // (int)  
      player.Money($PLAYER_CHAR) += 1@
      end
wait 0
end

Werewolf
Проверенные
24.06.12 14:41
Offline
Как этот опкод можно использовать в cleo что он значит?
И вопрос по майн
если создать потоки, то почему они работают только при новой игре, а после загрузки сейве уже не работают?

wmysterio
Администраторы
Скриптер
24.06.12 14:52
Offline
Quote (Optimus)
если создать потоки, то почему они работают только при новой игре, а после загрузки сейве уже не работают?

При сохранении игры игра сохраняет первую метку активного потока, а при загрузке считывает её и начинает сначала поток.

Quote (Optimus)
ак этот опкод можно использовать в cleo что он значит?
Функции можно использовать где угодно: и в мейне и в Cleo. Ты смотри на 0AB1 как на функцию, а точнее как на собственный опкод. Мы сами делаем его(ка бы вызываем дополнительный поток)

Werewolf
Проверенные
24.06.12 14:56
Offline
Ни чего не понял, я в main.scm не пишу скрипты, так как после загрузки сейва они ни фига не работают и приходилось не раз все в cleo переписывать

Slivkin-Sergey
Модераторы
24.06.12 20:39
Offline
Блин, wmysterio, срочно нужна твоя помощь. У меня майн загнулся, при заходе недалеко от маркера первой миссии (в майне она значится 34ой) вылетает игра. А раньше все было нормально. Можешь разобраться? Код стартера миссии - STARTER, код самой миссии - MISSION_0 или Mission 34. Заранее выражаю благодарность.

Добавлено (24.06.2012, 18:39)
---------------------------------------------
Вот майн: http://narod.ru/disk....xt.html


wmysterio
Администраторы
Скриптер
24.06.12 22:31
Offline
Quote (Optimus)
Ни чего не понял, я в main.scm не пишу скрипты, так как после загрузки сейва они ни фига не работают и приходилось не раз все в cleo переписывать
Тогда скинь свой мейн, я посмотрю в чём проблема. Если не грузятся, значит есть какая то причина

Quote (Slivkin-Sergey)
срочно нужна твоя помощь. У меня майн загнулся, при заходе недалеко от маркера первой миссии (в майне она значится 34ой) вылетает игра. А раньше все было нормально. Можешь разобраться? Код стартера миссии - STARTER, код самой миссии - MISSION_0 или Mission 34. Заранее выражаю благодарность.
Окей. Посмотрю что к чему

Slivkin-Sergey
Модераторы
25.06.12 05:56
Offline
Quote (Optimus)
Ни чего не понял, я в main.scm не пишу скрипты, так как после загрузки сейва они ни фига не работают и приходилось не раз все в cleo переписывать

Это как бы не поддается объяснению. Даже если ты уберешь одну строчку в майне - все, начинай новую игру.
Quote (wmysterio)
Окей. Посмотрю что к чему

Thanks!

Werewolf
Проверенные
25.06.12 08:22
Offline
wmysterio,
Code
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
DEFINE OBJECTS 1
DEFINE OBJECT SANNY BUILDER 3.04       

DEFINE MISSIONS 0

DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0027}

//-------------MAIN---------------
03A4: name_thread 'DEATHMATCH'  
01F0: set_max_wanted_level_to 0  
0111: set_wasted_busted_check 0  
00C0: set_current_time_hours_to 8 minutes_to 0  
04E4: unknown_refresh_game_renderer_at -116.747 109.531  
03CB: set_rendering_origin_at -116.747 109.531 20.4  
0053: $PLAYER_CHAR = create_player #NULL at -116.747 109.531 20.4  
01F5: $PLAYER_ACTOR = get_player_actor $PLAYER_CHAR  
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group  
0373: set_camera_directly_behind_player  
0581: enable_radar 1  
01B6: set_weather 0  
0001: wait 0 ms  
087B: set_player $PLAYER_CHAR clothes_texture "PLAYER_FACE" model "HEAD" body_part 1  
087B: set_player $PLAYER_CHAR clothes_texture "TRACKTRERIS" model "TRACKTR" body_part 2  
087B: set_player $PLAYER_CHAR clothes_texture "SNEAKERHEATWHT" model "SNEAKER" body_part 3  
087B: set_player $PLAYER_CHAR clothes_texture "HOODYABASE5" model "HOODYA" body_part 0  
0627: update_integer_stat 23 to 1000.0  
070D: rebuild_player $PLAYER_CHAR  
01B4: set_player $PLAYER_CHAR can_move 1  
04BB: select_interior 0  
0629: change_integer_stat 181 to 4  
0627: update_integer_stat 24 to 1000.0  
0945: get_player $PLAYER_CHAR max_armour_to 1000  
055F: set_player $PLAYER_CHAR max_armour += 1000  
016C: restart_if_wasted_at -116.747 109.531 20.4 angle 137.0 town_number 0  
016D: restart_if_busted_at -116.747 109.531 20.4 angle 90.0 town_number 0  
0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here  
0004: $DEFAULT_WAIT_TIME = 250  
03E6: remove_text_box  
0247: load_model #MP5LNG  
0247: load_model #M4  
038B: load_requested_models  
01B2: give_actor $PLAYER_ACTOR weapon 29 ammo 9000 // Load the weapon model before using this  
01B2: give_actor $PLAYER_ACTOR weapon 31 ammo 9000 // Load the weapon model before using this  
0249: release_model #MP5LNG  
0249: release_model #M4  
create_thread @healt
004E: end_thread  

:healt
0226: $HEAL = actor $PLAYER_ACTOR health  
0008: $HEAL += 500  
0223: set_actor $PLAYER_ACTOR health_to $HEAL  
0001: wait 100 ms  
0226: $HEAL = actor $PLAYER_ACTOR health  
0008: $HEAL += 500  
0223: set_actor $PLAYER_ACTOR health_to $HEAL  
   jump @healt
    

    
   

Это примерный код, если создать несколько потоков у которых будет своя роль в игре, то работать они будут только при новой игре, при загрузке сейва уже не запускаются

Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder и заказы (Вы можете получить ответы на вопросы по SB и сделать заказ)
Страница 25 из 128«122324252627127128»
Поиск: