[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 17 из 127«121516171819126127»
Форум » Игры серии 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
Модераторы
06.05.12 18:42
Offline
Тогда еще пара вопросиков - что такое флаг и чем отличаются show_text_highpriority и show_text_lowpriority?
Отредактировал Slivkin-Sergey - Воскресенье, 06.05.12, 18:43

wmysterio
Администраторы
Скриптер
06.05.12 18:57
Offline
Quote (Slivkin-Sergey)
что такое флаг
Это параметр, который отвечает за какое то значение в памяти игры или влияет на события в скрипте. Например опкод
Code
03F0: enable_text_draw 1       
1 - является флагом. Он включает возможность рисования на экране. Флаг может иметь только два значения: включено(1) и выключено(0).

не знаю почему в программировании это называют флагами ))) но это можно обьяснить этой картинкой:

Галочка есть - значит флаг включен, нету - флаг выключен

Quote (Slivkin-Sergey)
чем отличаются show_text_highpriority и show_text_lowpriority?
Отличаются они в приоритетах: highpriority - высокий приоритет, lowpriority - низкий. На примере покажу:
Code
00BC: show_text_highpriority GXT 'TEXT_2' time 3000 flag 1        
wait 2000
00BB: show_text_lowpriority GXT 'TEXT_1' time 3000 flag 1

как видно срок действия текста(time) превышает задержку (wait), а дальше должен идти низкоприоритетный текст. Так вот высокоприоритетный текст будет отображатся все 3 секунды а потом уже появится низкоприоритетный текст и его время будет на одну секунду короче(3000-2000=1000 ms)
Если поменять опкоды местами, то низкоприоритетный текст будет отображатся только 2 секунды, так как дальше идёт высокоприоритетный текст

Сначала вроде непонятно, но со временем всё станет на свои места smile

Slivkin-Sergey
Модераторы
06.05.12 21:11
Offline
Еще вопрос, касательно сценки: я попробовал вставить миссию, автоматически запускающуюся в начале игры. Я передумал и удалил ее. Но теперь, после захода на маркер для начала моей сценки, СЖ телепортируется назад в центр Гроува, а в маркере появляется его двойник, повторяющий все его действия wacko
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 1
DEFINE MISSION 0 AT @MISSION_0         

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

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 3072

{$VERSION 3.1.0027}

//-------------MAIN---------------
thread 'MAIN'   
set_wb_check_to 0   
set_weather 0   
select_interior 0   
fade 1 0   
0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here   
00C0: set_current_time_hours_to 8 minutes_to 0   
04E4: unknown_refresh_game_renderer_at 2491.157 -1670.343   
Camera.SetAtPos(2491.157, -1670.343, 12.3359)
$PLAYER_CHAR = Player.Create(#NULL, 2491.157, -1670.343, 12.3359)
Player.SetClothes($PLAYER_CHAR, "trackytop2eris", "trackytop1", Torso)
Player.SetClothes($PLAYER_CHAR, "tracktrgang", "tracktr", Legs)
Player.SetClothes($PLAYER_CHAR, "sneakerbincgang", "sneaker", Shoes)
Player.SetClothes($PLAYER_CHAR, "bandblack", "bandana", 16)
Player.Build($PLAYER_CHAR)
062A: change_float_stat 23 to 500.0   
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Actor.Angle($PLAYER_ACTOR) = 66.3548
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group   
$SWEET_TOTAL_PASSED_MISSION = 0   
Camera.SetBehindPlayer
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
08DF: override_restart_if_wasted_at 2026.037 -1423.125 16.9922 within_radius 1500.0 angle 160.0   
08E0: override_restart_if_busted_at 1552.45 -1674.99 16.1953 within_radius 1500.0 angle 170.6194   
jump @MAIN_354   

:MAIN_354
06CF: NOP 0   
0746: set_acquaintance 1 of_actors_pedtype 8 to_actors_pedtype 0 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 8 to_actors_pedtype 7 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 8 to_actors_pedtype 9 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 8 to_actors_pedtype 14 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 7 to_actors_pedtype 0 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 7 to_actors_pedtype 8 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 7 to_actors_pedtype 9 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 7 to_actors_pedtype 14 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 9 to_actors_pedtype 0 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 9 to_actors_pedtype 8 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 9 to_actors_pedtype 7 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 9 to_actors_pedtype 14 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 14 to_actors_pedtype 0 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 14 to_actors_pedtype 8 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 14 to_actors_pedtype 7 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 14 to_actors_pedtype 9 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 10 to_actors_pedtype 11 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 10 to_actors_pedtype 13 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 11 to_actors_pedtype 10 // see ped.dat   
0746: set_acquaintance 3 of_actors_pedtype 13 to_actors_pedtype 10 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 13 to_actors_pedtype 11 // see ped.dat   
0746: set_acquaintance 4 of_actors_pedtype 11 to_actors_pedtype 13 // see ped.dat   

:STARTER
thread 'STARTER'   
wait 0   
$ICON = Marker.CreateIconAndSphere(38, 2515.609, -1674.567, 13.8272)

:STARTER_37
wait 0   
if
00EC:   actor $PLAYER_ACTOR 0 near_point 2515.6 -1674.567 radius 1.0 1.0 1.0
jf @STARTER_37
start_mission 1  // Initial 1
end_thread   

//-------------Mission 0---------------
// Originally: Lost Memory                     

:MISSION_0
wait 0
gosub @MISSION_0_57   
if   
wasted_or_busted   
else_jump @MISSION_0_46   
gosub @MISSION_0_1643   

:MISSION_0_46
$ONMISSION = 0   
mission_cleanup   
end_thread   

:MISSION_0_57
increment_mission_attempts   
$ONMISSION = 1   
gosub @MISSION_0_1673   
//код сценки
create_thread @STARTER   
return   

:MISSION_0_1643
wait 0   
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1  // ~r~–…CC…• ŒPO‹A‡E­A!
create_thread @STARTER   
return   

:MISSION_0_1673
wait 0   
Player.CanMove($PLAYER_CHAR) = False
02A3: enable_widescreen 1   
Camera.SetPosition(2515.609, -1674.567, 13.2272, 0.0, 0.0, 0.0)
Camera.PointAt(2520.684, -1678.696, 15.148, 2)
05D3: AS_actor $PLAYER_ACTOR goto_point 2523.268 -1679.431 15.497 mode 4 4000 ms // versionA   
return   
Отредактировал Slivkin-Sergey - Воскресенье, 06.05.12, 21:12

wmysterio
Администраторы
Скриптер
06.05.12 21:19
Offline
Quote (Slivkin-Sergey)
Еще вопрос, касательно сценки: я попробовал вставить миссию, автоматически запускающуюся в начале игры. Я передумал и удалил ее. Но теперь, после захода на маркер для начала моей сценки, СЖ телепортируется назад в центр Гроува, а в маркере появляется его двойник, повторяющий все его действия
1) После метки
Code
:MISSION_0
добавить
Code
thread 'MISSION_0'

2) Перед
Code
:STARTER
thread 'STARTER'
поставь
Code
create_thread @STARTER
end_thread

3) Нужно поменять номер миссии:
Code
start_mission 0
так как она объявлена как миссия 0:
Code
DEFINE MISSION 0 AT @MISSION_0

4) Там проверка немного не так написана, а точнее координата Z. Нужно её указывать, иначе условие не сработает:
Code
00EC:   actor $PLAYER_ACTOR 0 near_point 2515.6 -1674.567 13.8272 radius 1.0 1.0

Slivkin-Sergey
Модераторы
06.05.12 21:27
Offline
wmysterio, спасибо, теперь все работает.
Еще вопрос: каким опкодом можно объявить миссию, запускающуюся с начала игры? А то походу у меня там еще что-то неправильно было.

wmysterio
Администраторы
Скриптер
06.05.12 21:33
Offline
Quote (Slivkin-Sergey)
Еще вопрос: каким опкодом можно объявить миссию, запускающуюся с начала игры? А то походу у меня там еще что-то неправильно было.
Миссии объявляются командой:
Code
DEFINE MISSION 0 AT @MISSION_0
0 номер миссии, @MISSION_0 - метка миссии

а запускаются они где угодно. если нужно в начале, то создавать стартера не нужно, а запускать их прям из потока main(самый первый поток).

Slivkin-Sergey
Модераторы
06.05.12 21:35
Offline
То есть даже после Player.Build?

KiLLeR96
Модераторы
Модератор
06.05.12 21:38
Offline
Как создать массив и как его использовать?
МоДиРатОр)))000)))))

wmysterio
Администраторы
Скриптер
06.05.12 23:08
Offline
Quote (Slivkin-Sergey)
То есть даже после Player.Build?
главное, что бы переменные $ONMISSION, $PLAYER_CHAR и $PLAYER_ACTOR были объявлены

Quote (KiLLeR96)
Как создать массив и как его использовать?
Масив создаётся в блоке var-end:
Code
var
$PEREM: array 20 of integer
$PEREM: array 20 of float
end
$PEREM - переменная массив, 20 - размерность массива, integer(float) - тип данных, который будет хранить массив

Использование может быть любое, например хранить координаты. Вот пример скрипта:
Code
{$CLEO}
// -- main -----
0000:

var
$COORD: array 3 of float
end

:TEMP
thread 'TEMP'
wait 0
$COORD[0] = 1954.0
$COORD[1] = -1643.0
$COORD[2] = 13.445

:TEMP_1
wait 0
if
00FE:   actor $PLAYER_ACTOR sphere 0 in_sphere $COORD[0] $COORD[1] $COORD[2] radius 5.0 5.0 5.0
jf @TEMP_1
player.Money($PLAYER_CHAR) += 2000
0A93: end_custom_thread

[0], [1], [2] - индекс массива(или элемент массива). Индекс всегда начинаться с нуля.
$COORD[0] = 1954.0 - идёт заполнение элемента массива

KiLLeR96
Модераторы
Модератор
06.05.12 23:30
Offline
если 20 - размерность массива, то надо все 20 елементов заполнить или необязательно?
МоДиРатОр)))000)))))

wmysterio
Администраторы
Скриптер
06.05.12 23:33
Offline
Quote (KiLLeR96)
если 20 - размерность массива, то надо все 20 елементов заполнить или необязательно?
Не обязательно, но обычно указывают точное количество: для удобства и для экономии памяти скрипта

KiLLeR96
Модераторы
Модератор
06.05.12 23:41
Offline
А откуда берутся например 2i 5i и т.п?
Отредактировал KiLLeR96 - Воскресенье, 06.05.12, 23:41
МоДиРатОр)))000)))))

wmysterio
Администраторы
Скриптер
06.05.12 23:45
Offline
Quote (KiLLeR96)
А откуда берутся например 2i 5i и т.п?

2 - это элемент массива, то есть [2]
i - тип данных, который хранит массив. в данном случаи это i(integer - целое число)

просто в скрипте они декомпилируются как переменные с 2i, а в Санни Билдер нам упростили задачу и дали возможность писать их как в обычной среде программирования.

KiLLeR96
Модераторы
Модератор
07.05.12 00:01
Offline
Такое можно делать?
Code
1@ = 25
2@ = 1
$MASS[0] = 1@ * 2@
2@ += 1
$MASS[1] = 1@ * 2@
2@ += 1  
$MASS[2] = 1@ * 2@
2@ += 1  
$MASS[3] = 1@ * 2@
2@ += 1  
МоДиРатОр)))000)))))

wmysterio
Администраторы
Скриптер
07.05.12 00:09
Offline
Quote (KiLLeR96)
Такое можно делать?
Такие высокоуровние операции доступны только на Cleo 4, и то нашел только для целых чисел:
Code
0A8E: 0@ = 1@ + 2@ // int   
0A8F: 0@ = 1@ - 1 // int   
0A90: 0@ = 100 * 1@ // int   
0A91: 0@ = 1 / 5 // int

KiLLeR96
Модераторы
Модератор
07.05.12 09:07
Offline
Как сделать чтобы при сохранении игры переменная сохранялась?
МоДиРатОр)))000)))))

wmysterio
Администраторы
Скриптер
07.05.12 12:38
Offline
Quote (KiLLeR96)
Как сделать чтобы при сохранении игры переменная сохранялась?
Так они и так сохраняются biggrin
Только при сохранении новой игры переменные перезаписываются.

KiLLeR96
Модераторы
Модератор
07.05.12 15:48
Offline
Как сделать такую инфопанель как у тебя Черный список в DRAG RACE?
МоДиРатОр)))000)))))

Slivkin-Sergey
Модераторы
07.05.12 18:14
Offline
Забыл спросить - что такое массив, и можно ли сделать так, чтобы в СБ при компиляции названия лейблов сохранялись?

KiLLeR96
Модераторы
Модератор
07.05.12 18:29
Offline
Quote (Slivkin-Sergey)
Забыл спросить - что такое массив

Читай сообщение #329!
МоДиРатОр)))000)))))

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