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

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.
Прикрепления: 0248203.png(0.9 Kb) · 9085525.png(0.2 Kb)

Sweeper
Проверенные
30.03.14 21:59
Offline
Код
// STARTER OF MISSIONS FARM
{$CLEO .cs}
0000:

:STARTER
thread 'STARTER'
wait 0
if
0AAB: file_exits "CLEO\MIS_FARM.ini"
jf @STARTER_END
if
$ONMISSION==0
jf @STARTER
if
075C: marker 0@ enabled
then
marker.Disable(0@)
end
0AF0: 5@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"  
if
5@ > 0 // Это число должно быть равно количеству пройденных миссий. В нашем случаи 1+1+1+1=4
then
jump @STARTER_END
end

:STARTER_1
wait 0
0AF0: 1@ = get_int_from_ini_file "CLEO\MIS_FARM.ini" section "MISSION_CJ" key "markerID"
0AF2: 2@ = get_float_from_ini_file "CLEO\MIS_FARM.ini" section "MISSION_CJ" key "MARKER_X_CJ"
0AF2: 3@ = get_float_from_ini_file "CLEO\MIS_FARM.ini" section "MISSION_CJ" key "MARKER_Y_CJ"
0AF2: 4@ = get_float_from_ini_file "CLEO\MIS_FARM.ini" section "MISSION_CJ" key "MARKER_Z_CJ"
0@=marker.CreateIconAndSphere(1@,2@,3@,4@)

:STARTER_2
0AF0: 5@ = get_int_from_ini_file "CLEO\MIS_FARM.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
if AND
not actor.Dead($PLAYER_ACTOR)
not actor.Driving($PLAYER_ACTOR)
8A0C: not actor $PLAYER_CHAR on_jetpack
8741: not_actor $PLAYER_ACTOR busted
then
     if AND
     $ONMISSION==0  
     0102: actor $PLAYER_ACTOR in_sphere 2@ 3@ 4@ radius 2.0 2.0 2.0 sphere 0 stopped_on_foot
     then
     00BE: text_clear_all
     03E6: remove_text_box
     fade 0 1000
         if
         5@==0
         then
         00BA: show_text_styled GXT 'MISS_01' time 1000 style 2
         wait 1000
         0A94: start_custom_mission "FARM_01"
         jump @STARTER
         end
     end
end

:STARTER_END
wait 0
0A93: end_custum_thread

это код стартера миссии, но когда я становлюсь на маркер, то миссия не начинается. В чем проблема?

wmysterio
Администраторы
Скриптер
30.03.14 22:29
Offline
Цитата Sweeper ()
В чем проблема?
Скорее всего отсутствует цикл, который проверяет условия. Добавьте
Код
wait 0
jump @STARTER_2
Перед меткой
Код
:STARTER_END

Cool_T
Пользователи
31.03.14 09:13
Offline
Wmysterio я видел в вкладке "уроки скриптинга" ваш урок по наземным и воздушным транспортам,я потренировался... Создал вертолёт неподалёку от моего дома и сделал чтоб на вертолёте была метка чтоб его можно было видеть на карте и вместо вертолёта мэверика за мной летает вертолёт хантер...
вопрос:как сделать чтобы вертолёт появлялся при наступании гг на метку и чтобы когда вертолёт уничтожали (взрывался,падал) метка пропадала и надо будет идти за новым вертолётом заново на метку:

Код
{$CLEO}
Model.Load(#HUNTER)
Model.Load(#WMYDRUG)
038B: load_requested_models
0@ = Car.Create(#HUNTER, 945.858, 253.3596, 29.1832)
Car.Angle(0@) = 222.5565
Model.Destroy(#HUNTER)
Model.Destroy(#WMYDRUG)
0129: 1@ = create_actor_pedtype 4 model #WMYDRUG in_car 0@ driverseat
0825: set_helicopter 0@ instant_rotor_start
0A1C: set_helicopter 0@ play_engine_sounds 1
0726: heli 0@ follow_actor $PLAYER_ACTOR follow_car  -1 radius 20.0
Marker.create_above_car($HELMARK,0@)
0A93: end_thread

Добавлено (31.03.14, 07:13)
---------------------------------------------
Ааа.... Извините в сайте плохо адаптируюсь... Wmusterio скинь ссылку в вк если ты там зареган

wmysterio
Администраторы
Скриптер
31.03.14 11:06
Offline
Цитата Cool_T ()
я видел в вкладке "уроки скриптинга" ваш урок по наземным и воздушным транспортам,я потренировался... Создал вертолёт неподалёку от моего дома и сделал чтоб на вертолёте была метка чтоб его можно было видеть на карте и вместо вертолёта мэверика за мной летает вертолёт хантер...вопрос:как сделать чтобы вертолёт появлялся при наступании гг на метку и чтобы когда вертолёт уничтожали (взрывался,падал) метка пропадала и надо будет идти за новым вертолётом заново на метку
Это проще реализовать с помощью цикла. Вот примерный код:

Код
{$CLEO}
Model.Load(#HUNTER)
Model.Load(#WMYDRUG)
038B: load_requested_models  

:L_1
0@ = Car.Create(#HUNTER, 945.858, 253.3596, 29.1832)
Car.Angle(0@) = 222.5565
0129: 1@ = create_actor_pedtype 4 model #WMYDRUG in_car 0@ driverseat
0825: set_helicopter 0@ instant_rotor_start
0A1C: set_helicopter 0@ play_engine_sounds 1
0726: heli 0@ follow_actor $PLAYER_ACTOR follow_car  -1 radius 20.0
Marker.CreateAboveCar($HELMARK, 0@)  
1@ = 0

while 1@ == 0
wait 0
     if
     056E:   car 0@ defined
     then
         if OR
         0119:   car 0@ wrecked
         02BF:   car 0@ sunk
         then
         1@ = -1
         end
     else
     1@ = -1
     end
end

Marker.Disable($HELMARK)
if
1@ == -1
then
jump @L_1
end
Model.Destroy(#HUNTER)
Model.Destroy(#WMYDRUG)
0A93: end_custom_thread
Цитата Cool_T ()
Wmusterio скинь ссылку в вк если ты там зареган
Я зареган вконтакте, но отвечаю только "Избранным" (Тем, кого уже более-менее знаю на сайте.) Посмотри в нашей группы вконтакте, раздел "Контакты".

Cool_T
Пользователи
31.03.14 13:52
Offline
Я пробовал сделать по своему но выходит ошибка

Добавлено (31.03.14, 11:46)
---------------------------------------------
Wmusterio ты забыл в коде добавить метку на которую надо наступить

Добавлено (31.03.14, 11:52)
---------------------------------------------
И кстати когда я опробывал твой метод результат был таков:над вертолётом нет иконки(его не видно на карте и радаре) и нету метки на которую надо встать гг чтобы вертолёт появился твой код надо дополнить...

Прикрепления: 6388555.jpg(166.0 Kb)

wmysterio
Администраторы
Скриптер
31.03.14 14:46
Offline
Цитата Cool_T ()
ты забыл в коде добавить метку на которую надо наступить
думаю, вы и из без моей помощи с этой меткой сможете разобраться. если нет, то луче почитайте основы скритинга.

Cool_T
Пользователи
31.03.14 19:08
Offline
А где найти основы скриптинга?

wmysterio
Администраторы
Скриптер
31.03.14 19:28
Offline
Цитата Cool_T ()
А где найти основы скриптинга?
уроки. Уроки отсортированы по дате добавления. На последних страницах первые уроки, в которых находятся все основы.

Cool_T
Пользователи
31.03.14 21:58
Offline
Дайте опкод на то что бы дать гг имунитет от огнестрела огня и падений  (т.е сделать гг бесмертным)

Sweeper
Проверенные
31.03.14 23:17
Offline
Снова обращаюсь за помощью.
Я создавал свою миссию, но когда становлюсь на маркер, затемняется экран и игра вылетает.
Вот код миссии:
Код
{$CLEO .cm}

:GR_ST
thread 'FARM_01'
model.Load(#LINERUN)
model.Load(#ARTICT1)
038B: load_requested_models

:GR_PR
wait 0
if and
model.Available(#LINERUN)
model.Available(#ARTICT1)
then
player.CanMove($PLAYER_CHAR) = false
1@ = car.Create(#LINERUN, -50.3035, 77.1073, 3.1096)
car.Angle(1@) = 340.0973
2@ = car.Create(#ARTICT1, -1030.8405, -671.4868, 32.0078)
car.Angle(2@) = 274.9235
10@ = marker.CreateAboveCar(2@)
model.Destroy(#ARTICT1)
model.Destroy(#LINERUN)
072A: put_actor $PLAYER_ACTOR into_car 1@ driverseat
player.CanMove($PLAYER_CHAR) = true
018A: 11@ = create_checkpoint_at -1030.8405 -671.4868 32.0078      
else
jump @GR_PR
end

:GR_PR_DIS
        if
        actor.Dead($PLAY_ACTOR)
        then
        marker.Disable(10@)
        marker.Disable(11@)
        //вывести текст, что игрок мертв
        jump @PROVAL
        else
            if
            car.Wrecked(1@)
            02BF: car 1@ sunk
            then
            marker.Disable(10@)
            marker.Disable(11@)
            // вывести сообщение, что грузовик уничтожен
            jump @PROVAL
            else
                if
                car.Wrecked(2@)
                02BF: car 2@ sunk
                then
                marker.Disable(10@)
                marker.Disable(11@)
                // вывести сообщение, что прицеп уничтожен
                jump @PROVAL
                else
                    if     
                    00DB: not actor $PLAYER_ACTOR in_car 1@
                    then
                    marker.Disable(10@)
                    marker.Disable(11@)
                    12@ = marker.CreateAboveCar(1@)
                    07E0: set_marker 12@ type_to 1
                    // вывести сообщение, что садись в машину
                    else
                        if
                        07AB: trailer 0@ attached_to_cab 1@
                        then
                        jump @HOD_2
                        else
                        jump @GR_PR_DIS
                        end
                    end
                end
            end
        end
            
:HOD_2 // действия, когда прицеп прицеплен
marker.Disable(10@)
marker.Disable(11@)
018A: 20@ = create_checkpoint_at -50.3035 77.1073 3.1096
03BC: 21@ = create_sphere_at -50.3035 77.1073 3.1096 radius 2.5
// сообщение, что отвези удобрение домой

:GR_PR_DIS_2
        if
        actor.Dead($PLAY_ACTOR)
        then
        marker.Disable(20@)
        03BD: destroy_sphere 21@
        //вывести текст, что игрок мертв
        jump @PROVAL
        else
            if
            car.Wrecked(1@)
            02BF: car 1@ sunk
            then
            marker.Disable(20@)
            03BD: destroy_sphere 21@
            // вывести сообщение, что грузовик уничтожен
            jump @PROVAL
            else
                if
                car.Wrecked(2@)
                02BF: car 2@ sunk
                then
                marker.Disable(20@)
                03BD: destroy_sphere 21@
                // вывести сообщение, что прицеп уничтожен
                jump @PROVAL
                else
                    if     
                    00DB: not actor $PLAYER_ACTOR in_car 1@
                    then
                    marker.Disable(20@)
                    03BD: destroy_sphere 21@
                    12@ = marker.CreateAboveCar(1@)
                    07E0: set_marker 12@ type_to 1
                    // вывести сообщение, что садись в машину
                    else
                        if
                        07AB: not trailer 0@ attached_to_cab 1@
                        then
                        marker.Disable(20@)
                        03BD: destroy_sphere 21@
                        25@ = marker.CreateAboveCar(2@)
                        07E0: set_marker 25@ type_to 1
                        else
                            if AND
                            01AE: car 1@ sphere 0 near_point -50.3035 77.1073 3.1096 radius 2.5 2.5 stopped     
                            07AB: trailer 2@ attached_to_cab 1@     
                            then
                            jump @PASSED_MIS
                            else
                            jump @GR_PR_DIS_2
                            end
                        end
                    end
                end
            end
        end
                  
                            
:PASSED_MIS
wait 0
player.Money($PLAYER_CHAR) += 15000
00BA: show_text_styled GXT 'M_PASS' time 5000 style 1
0AF0: 18@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
18@ += 1
0AF1: write_int 18@ to_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
jump @FARM_01_END

:PROVAL
wait 0
00BA: show_text_styled GXT 'M_FALL' time 5000 style 1
jump @FARM_01_END

:FARM_01_END
wait 0
0A93: end_custum_thread
Стартер к миссии я писал выше. Если надо могу еще раз скинуть.
Отредактировал Slivkin-Sergey - Вторник, 01.04.14, 11:54

Cool_T
Пользователи
01.04.14 12:10
Offline
Чувак проверь правильность всего кода у меня такоеже было

Михан500
Пользователи
01.04.14 13:55
Offline
actor.Dead($PLAY_ACTOR)  - 
Вот тут ошибка, исправь на  
actor.Dead($PLAYER_ACTOR)

wmysterio
Администраторы
Скриптер
01.04.14 14:16
Offline
Цитата Sweeper ()
Я создавал свою миссию
Главная ошибка - ты компилируешь Cleo-скрипт как Cleo-миссию. Нет структуры, которая правильно описывает миссию(выделяет память под миссию например). Циклы какие-то странные, а так же в нужных местах их нет, из этого они получаются линейными, из этого возникают ошибки.

Sweeper
Проверенные
01.04.14 18:56
Offline
Цитата wmysterio ()
Главная ошибка - ты компилируешь Cleo-скрипт как Cleo-миссию. Нет структуры, которая правильно описывает миссию(выделяет память под миссию например). Циклы какие-то странные, а так же в нужных местах их нет, из этого они получаются линейными, из этого возникают ошибки.
И что ж делать?

Добавлено (01.04.14, 16:56)
---------------------------------------------
wmysterio, а можно то, что ты сказал, написать стартере миссий?


wmysterio
Администраторы
Скриптер
01.04.14 19:32
Offline
Цитата Sweeper ()
И что ж делать?
Для начала используйте шаблон из этого урока. Там же и стартер есть.
Цитата Sweeper ()
а можно то, что ты сказал, написать стартере миссий?
В стартере нужно написать только тот код, который будет запускать миссию. Миссия пишется  в отдельном скрипте. Шаблон миссии указан в уроке выше.

Я немного подправил код:
Код
{$CLEO .cm}

:GR_ST
thread 'FARM_01'
model.Load(#LINERUN)
model.Load(#ARTICT1)
038B: load_requested_models

:GR_PR
wait 0
if and
model.Available(#LINERUN)
model.Available(#ARTICT1)
then
player.CanMove($PLAYER_CHAR) = false
1@ = car.Create(#LINERUN, -50.3035, 77.1073, 3.1096)
car.Angle(1@) = 340.0973
2@ = car.Create(#ARTICT1, -1030.8405, -671.4868, 32.0078)
car.Angle(2@) = 274.9235
10@ = marker.CreateAboveCar(2@)
model.Destroy(#ARTICT1)
model.Destroy(#LINERUN)
072A: put_actor $PLAYER_ACTOR into_car 1@ driverseat
player.CanMove($PLAYER_CHAR) = true
018A: 11@ = create_checkpoint_at -1030.8405 -671.4868 32.0078        
else
jump @GR_PR
end

:GR_PR_DIS
wait 0
if
actor.Dead($PLAY_ACTOR)
then
marker.Disable(10@)
marker.Disable(11@)
//âûâåñòè òåêñò, ÷òî èãðîê ìåðòâ
jump @PROVAL
else
      if or
      car.Wrecked(1@)
      02BF: car 1@ sunk
      then
      marker.Disable(10@)
      marker.Disable(11@)
      // âûâåñòè ñîîáùåíèå, ÷òî ãðóçîâèê óíè÷òîæåí
      jump @PROVAL
      else
          if       
          00DB: not actor $PLAYER_ACTOR in_car 1@
          then
          marker.Disable(10@)
          marker.Disable(11@)
              if
              875C:   not marker 12@ enabled
              then
              12@ = marker.CreateAboveCar(1@)
              07E0: set_marker 12@ type_to 1
              end
          // âûâåñòè ñîîáùåíèå, ÷òî ñàäèñü â ìàøèíó
          else
              if
              07AB: trailer 0@ attached_to_cab 1@
              then
              jump @HOD_2
              else
              jump @GR_PR_DIS
              end
          end
      end
end
                
:HOD_2 // äåéñòâèÿ, êîãäà ïðèöåï ïðèöåïëåí
wait 0
marker.Disable(10@)
marker.Disable(11@)
018A: 20@ = create_checkpoint_at -50.3035 77.1073 3.1096
03BC: 21@ = create_sphere_at -50.3035 77.1073 3.1096 radius 2.5
// ñîîáùåíèå, ÷òî îòâåçè óäîáðåíèå äîìîé

:GR_PR_DIS_2
wait 0
if
actor.Dead($PLAY_ACTOR)
then
marker.Disable(20@)
03BD: destroy_sphere 21@
//âûâåñòè òåêñò, ÷òî èãðîê ìåðòâ
jump @PROVAL
else
      if
      car.Wrecked(1@)
      02BF: car 1@ sunk
      then
      marker.Disable(20@)
      03BD: destroy_sphere 21@
      // âûâåñòè ñîîáùåíèå, ÷òî ãðóçîâèê óíè÷òîæåí
      jump @PROVAL
      else
          if       
          00DB: not actor $PLAYER_ACTOR in_car 1@
          then
          marker.Disable(20@)
          03BD: destroy_sphere 21@
              if
              875C:   not marker 12@ enabled
              then
              12@ = marker.CreateAboveCar(1@)
              07E0: set_marker 12@ type_to 1
              end
          // âûâåñòè ñîîáùåíèå, ÷òî ñàäèñü â ìàøèíó
          else
              if
              07AB: not trailer 0@ attached_to_cab 1@
              then
              marker.Disable(20@)
              03BD: destroy_sphere 21@
                  if
                  875C:   not marker 25@ enabled
                  then
                  25@ = marker.CreateAboveCar(2@)
                  07E0: set_marker 25@ type_to 1
                  end
              else
                  if AND
                  01AE: car 1@ sphere 0 near_point -50.3035 77.1073 3.1096 radius 2.5 2.5 stopped       
                  07AB: trailer 2@ attached_to_cab 1@       
                  then
                  jump @PASSED_MIS
                  else
                  jump @GR_PR_DIS_2
                  end
              end
          end
      end
end
                      
:PASSED_MIS
wait 0
player.Money($PLAYER_CHAR) += 15000
00BA: show_text_styled GXT 'M_PASS' time 5000 style 1
0AF0: 18@ = get_int_from_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
18@ += 1
0AF1: write_int 18@ to_ini_file "CLEO\MISSION.ini" section "MISSION_CJ" key "MISSION_CJ_TOTAL"
jump @FARM_01_END

:PROVAL
wait 0
00BA: show_text_styled GXT 'M_FALL' time 5000 style 1
jump @FARM_01_END

:FARM_01_END
wait 0
end_thread
Судя циклу, когда СЖ не в машине постоянно создаётся маркер, а нужно, чтобы был только один:               
Код
if
875C:   not marker МАРКЕР enabled
then
МАРКЕР = marker.CreateAboveCar(МАШИНА)
07E0: set_marker МАРКЕР type_to 1
end

Cool_T
Пользователи
01.04.14 19:35
Offline
3@ = Actor.Create(gang 2,#BALLAS2, 1@, 2@, 3@)  // вместа "gang 2" ставь тип актёра списоктипов актёров есть в справке сани билдера или найди в базе данных
3@ = Actor.Create(7,#BALLAS2, 1@, 2@, 3@) Помоему так надо писать

Sweeper
Проверенные
01.04.14 20:47
Offline
Цитата wmysterio ()
Судя циклу, когда СЖ не в машине постоянно создаётся маркер, а нужно, чтобы был только один:
Я так и не понял, что ты изменил,а точнее для чего ты это изменил.
Отредактировал Sweeper - Вторник, 01.04.14, 20:59

Михан500
Пользователи
02.04.14 13:38
Offline
Как изменить цвет выделенных элементов на красный?


Drs36
Проверенные
02.04.14 13:42
Offline

Михан500
Пользователи
02.04.14 14:12
Offline
А скриптом никак?

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