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

или

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

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

wmysterio
Администраторы
Скриптер
08.05.12 19:21
Online
Quote (Slivkin-Sergey)
Можно ли какой-нибудь банальный пример, ибо мое "не очень скриптерское мышление" не позволяет мне полностью понять тот?
Ну вот простой пример цикла:
Code
:LABEL
wait 0
if
model.available(777)
jf @LABEL
Цикл будет выполняться до тех пор, пока не выполнится условие, то есть до тех, пор пока не загрузится модель 777.
Quote
Я что-то припоминаю... т.е. цикл выполняется до того, как условие не будет true?
Именно smile если условие не срабатывает, то цикл прерывается.
Когда я создам урок по циклах, там будет более понятно. Уже придумал даже пример из жизни wink

Slivkin-Sergey
Модераторы
08.05.12 19:24
Offline
А можно использовать такой код:
Code
while 0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car  
//тут всякие тексты показываются
end
?

wmysterio
Администраторы
Скриптер
08.05.12 19:28
Online
Quote (Slivkin-Sergey)
А можно использовать такой код:
Можно. Получается пока игрок в машине и в точке 2001.8743 -1157.9366 21.1277, то будет показывать текст. но если СЖ выйдет с тачки или покинет точку, то цикл прекратит работать и скрипт будет выполнять опкоды, написанные ниже.
Правда wait 0 нужно добавить в цикл:
Code
while 0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car     
       //тут всякие тексты показываются
wait 0
end
Просто задержка должна быть в таком цикле и обычно её пишут перед end smile

Slivkin-Sergey
Модераторы
08.05.12 19:31
Offline
Минутку... то есть если я хочу, чтобы цикл выполнялся, пока СЖ не в точке и в машине, то мне нужно ставить код
Code
while 80FE: not  actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0
      //тут всякие тексты показываются  
  wait 0  
  end

wmysterio
Администраторы
Скриптер
08.05.12 19:34
Online
Quote (Slivkin-Sergey)
Минутку... то есть если я хочу, чтобы цикл выполнялся, пока СЖ не в точке и в машине, то мне нужно ставить код

В яблочко!

Slivkin-Sergey
Модераторы
08.05.12 19:37
Offline
Ну тогда сразу последний вопрос по поводу циклов: может ли цикл принимать сразу несколько условий, и если может, то как?

wmysterio
Администраторы
Скриптер
08.05.12 19:42
Online
Quote (Slivkin-Sergey)
Ну тогда сразу последний вопрос по поводу циклов: может ли цикл принимать сразу несколько условий, и если может, то как?
Увы цикл может принять только одно условие, но никто не запрещает создать ещё один цикл в середине первого :)
Code
while 80EC:   not actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 2.0 radius 2.0     

        while not actor.Driving($PLAYER_ACTOR)
               //тут всякие тексты показываются     
        wait 0
        end

wait 0
end
Получается, пока игрок не в точке и пока игрок не водит авто, то будет показываться текст.

Slivkin-Sergey
Модераторы
08.05.12 20:54
Offline
У меня проблема с этой конструкцией.
Code
while 80FE:   not actor $PLAYER_ACTOR sphere 0 in_sphere 001.8743 -1157.9366 21.1277 radius 3.0 3.0 3.0    
wait 0
00BC: show_text_highpriority GXT 'DIALOG5' time 5000 flag 1
wait 5000
00BC: show_text_highpriority GXT 'DIALOG6' time 5000 flag 1
wait 5000
00BC: show_text_highpriority GXT 'DIALOG7' time 5000 flag 1
wait 5000
00BC: show_text_highpriority GXT 'DIALOG8' time 2000 flag 1
wait 2500
00BC: show_text_highpriority GXT 'DIALOG9' time 5000 flag 1
wait 5000
end

:DRUGRAID_1
wait 0
if   
0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car   
jf @DRUGRAID_1
03BD: destroy_sphere 5@
Marker.Disable(6@)
01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 4000 style 1  // ¯…CC…• ‹‘ŒO‡­E­A!~n~~w~$~1~

Тексты из цикла крутятся по-новой энное кол-во раз, и плевала игра, что я уже в сфере и болтовня должна быа прекратиться.
Отредактировал Slivkin-Sergey - Вторник, 08.05.12, 20:56

wmysterio
Администраторы
Скриптер
08.05.12 21:07
Online
Quote (Slivkin-Sergey)
Тексты из цикла крутятся по-новой энное кол-во раз, и плевала игра, что я уже в сфере и болтовня должна быа прекратиться
Попробуй внести дополнительную переменную, которая будет служить в качестве счетчика:
Code
14@ = 0.0

while 80FE:   not actor $PLAYER_ACTOR sphere 0 in_sphere 1.8743 -1157.9366 21.1277 radius 3.0 3.0 3.0      
      if
      14@ == 4.0
      then
      00BC: show_text_highpriority GXT 'DIALOG5' time 5000 flag 1
      end
      if
      14@ == 8.0
      then
      00BC: show_text_highpriority GXT 'DIALOG6' time 5000 flag 1
      end
      if
      14@ == 12.0
      then
      00BC: show_text_highpriority GXT 'DIALOG7' time 5000 flag 1
      end         
      if
      14@ == 16.0
      then
      00BC: show_text_highpriority GXT 'DIALOG8' time 2000 flag 1
      end          
      if
      14@ == 18.0
      then
      00BC: show_text_highpriority GXT 'DIALOG9' time 5000 flag 1
      end          
      14@ += 0.25      
wait 0
end

:DRUGRAID_1
wait 0
if     
0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car     
jf @DRUGRAID_1
00BE: text_clear_all  
03BD: destroy_sphere 5@
Marker.Disable(6@)
01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 4000 style 1  // ?…CC…• ‹‘OEO‡­E­A!~n~~w~$~1~

Slivkin-Sergey
Модераторы
08.05.12 21:20
Offline
Да, но теперь
Code
while 80FE:   not actor $PLAYER_ACTOR sphere 0 in_sphere 1.8743 -1157.9366 21.1277 radius 3.0 3.0 3.0       
       if  
       14@ == 4.0  
       then  
       00BC: show_text_highpriority GXT 'DIALOG5' time 5000 flag 1  
       end  
       if  
       14@ == 8.0  
       then
       wait 5000  
       00BC: show_text_highpriority GXT 'DIALOG6' time 5000 flag 1  
       end  
       if  
       14@ == 12.0  
       then  
       wait 5000
       00BC: show_text_highpriority GXT 'DIALOG7' time 5000 flag 1  
       end          
       if  
       14@ == 16.0  
       then  
       wait 5000
       00BC: show_text_highpriority GXT 'DIALOG8' time 2000 flag 1  
       end           
       if  
       14@ == 18.0  
       then  
       wait 2000
       00BC: show_text_highpriority GXT 'DIALOG9' time 5000 flag 1  
       end           
       14@ += 0.25       
  wait 0  
  end

:DRUGRAID_1
wait 0
if  
0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car  
jf @DRUGRAID_1
03BD: destroy_sphere 5@
Marker.Disable(6@)
01E3: show_text_1number_styled GXT 'M_PASS' number 5000 time 4000 style 1  // ¯…CC…• ‹‘ŒO‡­E­A!~n~~w~$~1~

Игра совершенно не реагирует на то что я остановился в сфере и давно бы уже пора выводить текст M_PASS.

wmysterio
Администраторы
Скриптер
08.05.12 21:24
Online
Quote (Slivkin-Sergey)
Игра совершенно не реагирует на то что я остановился в сфере и давно бы уже пора выводить текст M_PASS.

Я понял прикол, нужно убрать этот код:
Code
:DRUGRAID_1
wait 0
if   
0100:   actor $PLAYER_ACTOR in_sphere 2001.8743 -1157.9366 21.1277 radius 4.0 4.0 4.0 sphere 1 in_car   
jf @DRUGRAID_1

Slivkin-Sergey
Модераторы
08.05.12 21:30
Offline
Quote (wmysterio)
Я понял прикол, нужно убрать этот код:

Cтранно, у меня все заработало, когда я исправил эту координату:
Quote (Slivkin-Sergey)
1.8743 -1157.9366 21.1277

У меня вопрос касательно актеров - бывает так, что актер не воспроизводит свою анимацию, хотя в параметрах команды все верно. Как сделать так, чтоб он уж 100% воспроизводил анимацию? Меня всегда бесил этот баг в скриптах angry

wmysterio
Администраторы
Скриптер
08.05.12 22:15
Online
Quote (Slivkin-Sergey)
Как сделать так, чтоб он уж 100% воспроизводил анимацию?
Актёр не должен быть в воздухе или вводе - это главное условие. Так же есть разница в опкодах, которые воспроизводят анимации. Я например использую опкод:
Code
0812: AS_actor -1 perform_animation "LRGIRL_IDLELOOP" IFP_file "LOWRIDER" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time 10000 // versionB
Ни разу не замечал, что бы с этим опкодом актёр отказывался выполнять анимацию smile
но есть анимации которые выполняются только при некоторых условиях, например когда актёр в машине или лодке.

Slivkin-Sergey
Модераторы
08.05.12 22:34
Offline
Ммм, а что означают lockF lockX?

wmysterio
Администраторы
Скриптер
08.05.12 22:48
Online
Quote (Slivkin-Sergey)
Ммм, а что означают lockF lockX?
Не знаю smile я так их и оставляю.

Slivkin-Sergey
Модераторы
09.05.12 07:10
Offline
Забыл еще спросить про этот цикл. Как высчитывается следующее значение переменной 14@?

wmysterio
Администраторы
Скриптер
09.05.12 13:12
Online
Quote (Slivkin-Sergey)
Как высчитывается следующее значение переменной 14@?
Мы же в цикле добавляем 0.25 к переменной 14@
Code
     14@ += 0.25    

Tom_Harison
Друзья
SA:MP Scripter
09.05.12 14:05
Offline
wmysterio, у меня вопрос:
Вот я расставил по карте машины:
Code

014B: $MY_CAR = init_parked_car_generator #COPCARSF color -1 -1 0 alarm 0 door_lock 0 1 10000 at -2466.747 -119.2034 25.232 angle 180.5202  
014C: set_parked_car_generator $MY_CAR cars_to_generate_to 101  
014B: $MY_CAR1 = init_parked_car_generator #FBIRANCH color -1 -1 0 alarm 0 door_lock 0 1 10000 at -2462.937 -139.414 25.3183 angle 0.0543  
014C: set_parked_car_generator $MY_CAR1 cars_to_generate_to 101  
014B: $MY_CAR2 = init_parked_car_generator #COPBIKE color -1 -1 0 alarm 0 door_lock 0 1 10000 at -2457.088 -131.8956 25.6528 angle 1.6305  
014C: set_parked_car_generator $MY_CAR2 cars_to_generate_to 101  
014B: $MY_CAR3 = init_parked_car_generator #RHINO color -1 -1 0 alarm 0 door_lock 0 1 10000 at -2463.203 -101.0366 25.5015 angle 179.8092  
014C: set_parked_car_generator $MY_CAR3 cars_to_generate_to 101  

Подходил к ним и они появились
потом я расставил вертолёт
Code

014B: $MY_CAR4 = init_parked_car_generator #POLMAV color -1 -1 0 alarm 0 door_lock 0 1 10000 at -2485.499 -173.8668 25.4364 angle 358.4517  
014C: set_parked_car_generator $MY_CAR3 cars_to_generate_to 101  

Но он не появился, как же зделать чтобы появился и вертолёт?

wmysterio
Администраторы
Скриптер
09.05.12 14:35
Online
Quote (Tom_Harison)
014C: set_parked_car_generator $MY_CAR3 cars_to_generate_to 101
В место $MY_CAR3 поставь $MY_CAR4.

Tom_Harison
Друзья
SA:MP Scripter
09.05.12 14:41
Offline
вот оно, я упустил это зделать, спасибо

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