[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 126 из 128«12124125126127128»
Форум » Игры серии 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)

Dyabda
Пользователи
27.06.17 11:26
Offline
Доброго времени суток, господа скриптеры!
У меня возник вопрос, связанный с условием:
Код
//-------------MAIN---------------
thread 'GANGWAR'
wait 0
0746: set_acquaintance 3 of_actors_pedtype 15 to_actors_pedtype 0
0746: set_acquaintance 3 of_actors_pedtype 16 to_actors_pedtype 0
076C: set_zone 'DRAG' gang 6 density_to 90  // Kaœ¤o ‚et«pe špako¤a
076C: set_zone 'CALI1' gang 5 density_to 90
076C: set_zone 'CALI2' gang 5 density_to 90
076C: set_zone 'LDOC1A' gang 8 density_to 60
076C: set_zone 'LDOC1B' gang 8 density_to 60
076C: set_zone 'LDOC2' gang 8 density_to 60
076C: set_zone 'LDOC3A' gang 8 density_to 60
076C: set_zone 'LDOC3B' gang 8 density_to 60
076C: set_zone 'LDOC3C' gang 8 density_to 60
076C: set_zone 'LDOC4' gang 8 density_to 60
076C: set_zone 'BLUEB' gang 9 density_to 40  // ¡y˜epp
076C: set_zone 'DILLI' gang 9 density_to 60  // ƒ¡¡mop
076C: set_zone 'PROBE' gang 9 density_to 90  // ˆoct¤¨a Œo£po˜yž Š¡
076C: set_zone 'CARSO' gang 9 density_to 50  // opt Kapco¤
076C: set_zone 'ANGPI' gang 9 density_to 60  // ž¤š›e¡-Œaž¤
076C: set_zone 'BLUAC' gang 9 density_to 30  // Œomect¬e ¢ ¡y˜epp
076C: set_zone 'CREEK' gang 9 density_to 40  // Te¤ct«e py™¬
076C: set_zone 'DAM' gang 9 density_to 50  // šam˜a Žepma¤
076C: set_zone 'MONT1' gang 9 density_to 60  // Mo¤tŸomep
076C: set_zone 'MONT' gang 9 density_to 60  // Mo¤tŸomep
076C: set_zone 'HBARNS' gang 9 density_to 100  // X¦m£to¤ ap¤c
0237: set_gang 8 weapons_to 23 30 29
0237: set_gang 9 weapons_to 4 26 24
0879: enable_gang_wars 0
0879: enable_gang_wars 1
wait 0
end_thread

Данный скрипт активирует территории для новых банд, их оружие и поведение.
Как сделать, чтобы отношение банды к игроку станет дружелюбное, если он носит определённую одежду, и если он снимет эту одежду, то поведение станет вновь агрессивным?

Пример для тех кто не понял: По умолчанию банда 10 (Пусть это будут байкеры) будет агрессивны к СЖ, но если он купит байкерские шмотки (куртку, штаны, сапоги) то они перестанут его убивать. Они начнут трогать СЖ в том случае, если он на них нападёт. Если же СЖ снимет эти шмотки, байкеры вновь станут агрессивны к СЖ.
Отредактировал Dyabda - Вторник, 27.06.17, 12:17

wmysterio
Администраторы
Скриптер
27.06.17 14:07
Offline
Цитата Dyabda ()
Как сделать, чтобы отношение банды к игроку станет дружелюбное, если он носит определённую одежду, и если он снимет эту одежду, то поведение станет вновь агрессивным?
В Sanny Builder есть сразу 2 проверки на то, какую одержду носит Карл:
Код
0500:   player $PLAYER_CHAR skin == "GIMPLEG" on_bodypart 17
// ***
08F7: get_player $PLAYER_CHAR bodypart 0 textureCRC_to $9665 modelCRC_to $9666
if and
$9665 == ?
$9666 == ?
then
// ...
end
Примерно, условие можно написать так:
Код
:BIKER_RESPECT
wait 5000
if and
0500:   player $PLAYER_CHAR skin == "leather" on_bodypart 0 // торс
0500:   player $PLAYER_CHAR skin == "biker" on_bodypart 3 // обувь
0500:   player $PLAYER_CHAR skin == "leathertrchaps" on_bodypart 2 // брюки
then
0746: set_acquaintance 0 of_actors_pedtype 16 to_actors_pedtype 0
else
0746: set_acquaintance 3 of_actors_pedtype 16 to_actors_pedtype 0
end
jump @BIKER_RESPECT

Dyabda
Пользователи
29.06.17 07:36
Offline
Спасибо за ответ.
Тут появился ещё 2 вопроса: 1. Как сделать чтобы его не трогали если бы он носил либо те брюки, либо те.
Пример: Карл носит кожаные штаны, куртку, сапоги. Его не трогают. Карл одел кожаные кряги с той же курткой и теми же ботинками, его не трогают.
2. Как правильно добавить в код одежду с разными моделью и текстурой? ( И сделать это с первой проверкой )
Пример:
Код
0500: player $PLAYER_CHAR skin == "leathertrchaps" on_bodypart 2 // используется одна и та же модель с текстурой.
0500: player $PLAYER_CHAR skin == "leathertrchaps" "leathertr" on_bodypart 2 // используются разные модель и текстура. Если так написать, то игра ловит вылет.

А если поставить там запятые....
Код
0500: player $PLAYER_CHAR skin == "leathertrchaps", "leathertr", on_bodypart 2

В SB при компиляции выйдет ошибка: "Недостаточно параметров. Ожидалось 3 параметров."
Отредактировал Dyabda - Четверг, 29.06.17, 08:06

wmysterio
Администраторы
Скриптер
29.06.17 11:39
Offline
Цитата Dyabda ()
В SB при компиляции выйдет ошибка: "Недостаточно параметров. Ожидалось 3 параметров."
Потому, что нельзя просто так взять и добавить параметр в опкод с фиксированным количеством параметров.
Цитата Dyabda ()
Как правильно добавить в код одежду с разными моделью и текстурой?
Есть урок с использованием "if or", где решаются подобные вопросы. Вашу проблему можно решить так:
Код
:BIKER_RESPECT
wait 5000
if and
0500:   player $PLAYER_CHAR skin == "leather" on_bodypart 0 // торс
0500:   player $PLAYER_CHAR skin == "biker" on_bodypart 3 // обувь
then
    if or
    0500:   player $PLAYER_CHAR skin == "leathertrchaps" on_bodypart 2 // брюки
    0500:   player $PLAYER_CHAR skin == "leathertr" on_bodypart 2 // брюки
    then
    0746: set_acquaintance 0 of_actors_pedtype 16 to_actors_pedtype 0
    else
    0746: set_acquaintance 3 of_actors_pedtype 16 to_actors_pedtype 0
    end
else
0746: set_acquaintance 3 of_actors_pedtype 16 to_actors_pedtype 0
end
jump @BIKER_RESPECT

Dyabda
Пользователи
04.07.17 15:50
Offline
Доброго времени суток, господа скриптеры!
Появился сложный вопрос....
И так. Имеются 2 скрипта. Первый:
Код
//-------------MAIN---------------
0000: NOP

:NONAME_2
wait 0
if
8154:   not actor $PLAYER_ACTOR in_zone 'SF'  // Ca¤-ђќeppo
jf @NONAME_163
if
8154:   not actor $PLAYER_ACTOR in_zone 'VE'  // Љac-‹e¤typac
jf @NONAME_226
if
8154:   not actor $PLAYER_ACTOR in_zone 'LA'  // Љoc-Ca¤toc
jf @NONAME_289
if
8154:   not actor $PLAYER_ACTOR in_zone 'RED'  // Okpyџ Peљ
jf @NONAME_348
if
8154:   not actor $PLAYER_ACTOR in_zone 'FLINTC'  // Okpyџ ђЎќ¤t
jf @NONAME_407
if
8154:   not actor $PLAYER_ACTOR in_zone 'BONE'  // Okpyџ Ѓoy¤
jf @NONAME_470
jump @NONAME_2

:NONAME_163
023C: load_special_actor 'SFPDM1' as 1 // models 290-299
gosub @NONAME_606
0A8C: write_memory 6151558 size 2 value 290 virtual_protect 1
wait 0
0296: unload_special_actor 1
05AA: 1@s = 'SF' // @s = 'short'  // Ca¤-ђќeppo
jump @NONAME_529

:NONAME_226
023C: load_special_actor 'LVPDM1' as 1 // models 290-299
gosub @NONAME_606
0A8C: write_memory 6151558 size 2 value 290 virtual_protect 1
wait 0
0296: unload_special_actor 1
05AA: 1@s = 'VE' // @s = 'short'  // Љac-‹e¤typac
jump @NONAME_529

:NONAME_289
0@ = 284
gosub @NONAME_559
0A8C: write_memory 6151558 size 1 value 284 virtual_protect 1
wait 0
Model.Destroy(0@)
05AA: 1@s = 'LA' // @s = 'short'  // Љoc-Ca¤toc
jump @NONAME_529

:NONAME_348
0@ = 283
gosub @NONAME_559
0A8C: write_memory 9067168 size 1 value 283 virtual_protect 0
wait 0
Model.Destroy(0@)
05AA: 1@s = 'RED' // @s = 'short'  // Okpyџ Peљ
jump @NONAME_529

:NONAME_407
023C: load_special_actor 'CDEPUT' as 1 // models 290-299
gosub @NONAME_606
0A8C: write_memory 9067168 size 2 value 290 virtual_protect 0
wait 0
0296: unload_special_actor 4
05AA: 1@s = 'FLINTC' // @s = 'short'  // Okpyџ ђЎќ¤t
jump @NONAME_529

:NONAME_470
0@ = 288
gosub @NONAME_559
0A8C: write_memory 9067168 size 1 value 288 virtual_protect 0
wait 0
Model.Destroy(0@)
05AA: 1@s = 'BONE' // @s = 'short'  // Okpyџ Ѓoy¤
jump @NONAME_529

:NONAME_529
wait 0
if
   not Player.InZone($PLAYER_CHAR, 1@s)
jf @NONAME_529
jump @NONAME_2

:NONAME_559
if
   Model.Available(0@)
jf @NONAME_577
return

:NONAME_577
Model.Load(0@)
038B: load_requested_models

:NONAME_584
wait 0
if
   Model.Available(0@)
jf @NONAME_584
return

:NONAME_606
wait 0
if
023D:   special_actor 1 loaded
jf @NONAME_606
return

И второй:
Код
0A9F: 0@ = current_thread_pointer
000A: 0@ += 0x10
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0A8F: 3@ = 0@ - @_copBikerModelsByTown
        
0A8F: 2@ = 0@ - @CCopPed__getBikerModel
000A: 2@ += 0x8
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[eax*4]
000A: 2@ += 0x1A
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[ecx*4]
000A: 2@ += 0x1E
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[ecx*4]

0A8F: 2@ = 0@ - @_checkBikerModel
000A: 2@ += 0x3
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[ecx*4]
000A: 2@ += 0x10
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x407C8D - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // jnz loc_407C8D
000A: 2@ += 0x15
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x407CFE - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // jz loc_407CFE
000A: 2@ += 0x5
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x407CB3 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // jmp loc_407CB3

0A8F: 2@ = 0@ - @_reloadCopModels
000A: 2@ += 0x1B
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x56E230 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call _getPlayerCWanted
000A: 2@ += 0x12
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x56E230 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call _getPlayerCWanted
000A: 2@ += 0x45
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x407180 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call _random
000A: 2@ += 0x41
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[edi*4]
000A: 2@ += 0x45
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel  
000A: 2@ += 0x1E
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel
000A: 2@ += 0xA
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov edx, _copBikerModelsByTown[esi*4]
000A: 2@ += 0x6
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel
000A: 2@ += 0x7
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[esi*4]
000A: 2@ += 0x17
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel
000A: 2@ += 0x10
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel
000A: 2@ += 0x1E
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x409C10 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__releaseModel
000A: 2@ += 0x1C
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x4087E0 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__requestModel
000A: 2@ += 0x7
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // mov eax, _copBikerModelsByTown[edi*4]
000A: 2@ += 0x8
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x4087E0 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__requestModel
000A: 2@ += 0xF
0A8E: 1@ = 2@ + 0x4
0A8F: 1@ = 0x4087E0 - 1@
0A8C: write_memory 2@ size 4 value 1@ virtual_protect 0 // call CStreaming__requestModel

0A8F: 1@ = 0@ - @_checkBikerModel
000E: 1@ -= 0x407C70
0A8C: write_memory 0x407C6B size 1 value 0xE9 virtual_protect 1
0A8C: write_memory 0x407C6C size 4 value 1@ virtual_protect 1 // jmp _checkBikerModel

0A8F: 1@ = 0@ - @CCopPed__getBikerModel
000E: 1@ -= 0x5DDD8A
0A8C: write_memory 0x5DDD85 size 1 value 0xE8 virtual_protect 1
0A8C: write_memory 0x5DDD86 size 4 value 1@ virtual_protect 1 // call CCopPed__getBikerModel
0A8C: write_memory 0x5DDD8B size 1 value 0x1E virtual_protect 1 // jmp loc_5DDCAD

0A8F: 1@ = 0@ - @_reloadCopModels
000E: 1@ -= 0x40A155
0A8C: write_memory 0x40A150 size 1 value 0xE9 virtual_protect 1
0A8C: write_memory 0x40A151 size 4 value 1@ virtual_protect 1 // jmp _reloadCopModels

0A8F: 1@ = 0@ - @_patchCopModelIDSwitch
0A8C: write_memory 0x464F58 size 1 value 0xF0 virtual_protect 1 // add ecx, -272
0A8C: write_memory 0x464F5E size 1 value 0x10 virtual_protect 1 // cmp ecx, 10h
0A8C: write_memory 0x464F64 size 4 value 1@ virtual_protect 1 // jmp ds:_patchCopModelIDSwitch[ecx*4]

0A8C: write_memory 0x8A5AB0 size 4 value 0x0 virtual_protect 1
0A93: end_custom_thread

:_checkBikerModel
hex
8B048D00000000  // mov eax, _copBikerModelsByTown[ecx*4]
8D0480          // lea eax, [eax+eax*4]
381C85D04C8E00  // cmp _loadedObjectInfo.bLoaded[eax*4], bl
0F8500000000    // jnz loc_407C8D  
A19C5A8A00      // mov eax, _copBikeModel    
8D1480          // lea edx, [eax+eax*4]
381C95D04C8E00  // cmp _loadedObjectInfo.bLoaded[edx*4], bl   
0F8400000000    // jz loc_407CFE   
E900000000      // jmp loc_407CB3
end

:CCopPed__getBikerModel
hex
A11867BA00      // mov eax, _playerTownNumber
8B048500000000  // mov eax, _copBikerModelsByTown[eax*4]  
8D0C80          // lea ecx, [eax+eax*4]
53              // push ebx
8A1C8DD04C8E00  // mov bl, _loadedObjectInfo.bLoaded[ecx*4]
B201            // mov dl, 1
38D3            // cmp bl, dl
741E            // jz short CCopPed__getBikerModel+3C
33C9            // xor ecx, ecx   
    {CCopPed__getBikerModel+1F}     
8B048D00000000  // mov eax, _copBikerModelsByTown[ecx*4]
8D0480          // lea eax, [eax+eax*4]
381485D04C8E00  // cmp _loadedObjectInfo.bLoaded[eax*4], dl
740B            // jz short CCopPed__getBikerModel+3E
41              // inc ecx
83F904          // cmp ecx, 4                           
7CE7            // jl short CCopPed__getBikerModel+1F
83C8FF          // or eax, 0FFFFFFFFh  
    {CCopPed__getBikerModel+3C}  
5B              // pop ebx
C3              // ret  
    {CCopPed__getBikerModel+3E}
8B048D00000000  // mov eax, _copBikerModelsByTown[ecx*4]
5B              // pop ebx
C3              // ret   
end

:_reloadCopModels
hex
83FF04          // cmp edi, 4
0F8FAC010000    // jg _reloadCopModels+1B5
A11429B700      // mov eax, _activeInterior
85C0            // test eax, eax
0F859F010000    // jnz _reloadCopModels+1B5
56              // push esi
57              // push edi
6AFF            // push 0FFFFFFFFh
E800000000      // call _getPlayerCWanted
8B7C2410        // mov edi, [esp+0Ch+arg_0]
83C404          // add esp, 4
85C0            // test eax, eax
7466            // jz short _reloadCopModels+90
6AFF            // push 0FFFFFFFFh
E800000000      // call _getPlayerCWanted
8B482C          // mov ecx, [eax+CWanted.currentWantedLevel]
83C404          // add esp, 4
83F903          // cmp ecx, 3
7D54            // jge short _reloadCopModels+90
85FF            // test edi, edi
7450            // jz short _reloadCopModels+90
A0BF549600      // mov al, _disablePoliceBikes  
84C0            // test al, al
7547            // jnz short _reloadCopModels+90
8B3584CBB700    // mov esi, _currentTime
3935C0549600    // cmp dword_9654C0, esi
7329            // jnb short _reloadCopModels+80
8A15BE549600    // mov dl, byte_9654BE
84D2            // test dl, dl
0F94C0          // setz al
6850C30000      // push C350h
6830750000      // push 7530h
A2BE549600      // mov byte_9654BE, al
E800000000      // call _random
83C408          // add esp, 8
03C6            // add eax, esi
A3C0549600      // mov dword_9654C0, eax
    {_reloadCopModels+80}
A0BE549600      // mov al, byte_9654BE
84C0            // test al, al
740E            // jz short _reloadCopModels+97
BF04000000      // mov edi, 4
EB07            // jmp short _reloadCopModels+97
    {_reloadCopModels+90}
C605BE54960000  // mov byte_9654BE, 0
    {_reloadCopModels+97}
8B04BDA05A8A00  // mov eax, _copModelsByTown[edi*4]
8D1480          // lea edx, [eax+eax*4]
B101            // mov cl, 1
380C95D04C8E00  // cmp _loadedObjectInfo.bLoaded[edx*4], cl
0F85D3000000    // jnz _reloadCopModels+183
8B04BD00000000  // mov eax, _copBikerModelsByTown[edi*4]
8D1480          // lea edx, [eax+eax*4]
380C95D04C8E00  // cmp _loadedObjectInfo.bLoaded[edx*4], cl
0F85BC000000    // jnz _reloadCopModels+183
8B04BD8C5A8A00  // mov eax, _copcarModelsByTown[edi*4]
8D0480          // lea eax, [eax+eax*4]
380C85D04C8E00  // cmp _loadedObjectInfo.bLoaded[eax*4], cl
0F85A5000000    // jnz _reloadCopModels+183
33F6            // xor esi, esi
8BFF            // mov edi, edi
    {_reloadCopModels+E2}
3BF7            // cmp esi, edi    
0F848F000000    // jz _reloadCopModels+179
83FF04          // cmp edi, 4
745C            // jz short _reloadCopModels+14B
8B0CB5A05A8A00  // mov ecx, _copModelsByTown[esi*4]
51              // push ecx
E800000000      // call CStreaming__releaseModel   
8B14B5A05A8A00  // mov edx, _copModelsByTown[esi*4]  
8B0495C8B0A900  // mov eax, _modelPtrs[edx*4]
0FBF480A        // movsx ecx, word ptr [eax+0Ah]
81C1204E0000    // add ecx, 4E20h  
51              // push ecx
E800000000      // call CStreaming__releaseModel    
83C408          // add esp, 8
8B14B500000000  // mov edx, _copBikerModelsByTown[esi*4]
52              // push edx
E800000000      // call CStreaming__releaseModel  
8B04B500000000  // mov eax, _copBikerModelsByTown[esi*4]
8B0C85C8B0A900  // mov ecx, _modelPtrs[eax*4]
0FBF510A        // movsx edx, word ptr [ecx+0Ah]
81C2204E0000    // add edx, 4E20h
52              // push edx
E800000000      // call CStreaming__releaseModel    
83C408          // add esp, 8
    {_reloadCopModels+14B}
8B14B58C5A8A00  // mov edx, _copcarModelsByTown[esi*4]
52              // push edx
E800000000      // call CStreaming__releaseModel
8B04B58C5A8A00  // mov eax, _copcarModelsByTown[esi*4]
8B0C85C8B0A900  // mov ecx, _modelPtrs[eax*4]
0FBF510A        // movsx edx, word ptr [ecx+0Ah]
81C2204E0000    // add edx, 4E20h
52              // push edx
E800000000      // call CStreaming__releaseModel
83C408          // add esp, 8
    {_reloadCopModels+179}
46              // inc esi
83FE04          // cmp esi, 4
0F8C5FFFFFFF    // jl _reloadCopModels+E2
    {_reloadCopModels+183}
8B0CBDA05A8A00  // mov ecx, _copModelsByTown[edi*4]
6A02            // push 2
51              // push ecx
E800000000      // call CStreaming__requestModel
8B04BD00000000  // mov eax, _copBikerModelsByTown[edi*4]
6A02            // push 2
50              // push eax
E800000000      // call CStreaming__requestModel
8B0CBD8C5A8A00  // mov ecx, _copcarModelsByTown[edi*4]
6A02            // push 2
51              // push ecx
E800000000      // call CStreaming__requestModel        
83C418          // add esp, 18h
5F              // pop edi
5E              // pop esi
    {_reloadCopModels+1B5}
C3              // ret
end

:_patchCopModelIDSwitch
hex
684F4600        // loc_464F68
684F4600        // loc_464F68
B54F4600        // locret_464FB5
B54F4600        // locret_464FB5
B54F4600        // locret_464FB5
B54F4600        // locret_464FB5
B54F4600        // locret_464FB5
B54F4600        // locret_464FB5
684F4600        // loc_464F68
684F4600        // loc_464F68
684F4600        // loc_464F68
A84F4600        // loc_464FA8
684F4600        // loc_464F68
784F4600        // loc_464F78
884F4600        // loc_464F88
984F4600        // loc_464F98   
684F4600        // loc_464F68
end

:_copBikerModelsByTown
hex
20010000        // 288  Cop for countryside
1C010000        // 284  Cop for LS
10010000        // 272  Cop for SF
11010000        // 273  Cop for LV
00000000        // Align
end

Первый скрипт добавляет в ЛВ и СФ, а так же в некоторые участки сельской местности помощников шерифа (CDEPUT) и шерифов в пустынную местность (DSHER), но добавляет их он в качестве специальных актёров как показано в этом уроке: http://ru-script.3dn.ru/publ....1-0-259

Второй скрипт делает тоже самое, только это уже не специальные актёры, а полноценные педы, информация о которых идёт из файла peds.ide. Но там нету помощника шерифа (CDEPUT). Как его вернуть из первого скрипта во второй, (Чтоб он спавнился там, где спавнится в первом скрипте) имел голос и т.д. и данные брались о нём брались из peds.ide? (Как добавить его в peds.ide, добавить голос и вообще редактировать peds.ide Я знаю)

wmysterio
Администраторы
Скриптер
07.07.17 23:14
Offline
Цитата Dyabda ()
Как его вернуть из первого скрипта во второй
Второй код я не разберу. Много работы с адресами, которых я не знаю.
Цитата Dyabda ()
Второй скрипт делает тоже самое, только это уже не специальные актёры, а полноценные педы, информация о которых идёт из файла peds.ide
Ну раз CDEPUT не прописан в "peds.ide" как обычный пешеход, то как игра будет знать что загружать? Нужно либо заменить существующую модель и использовать её или взламывать лимиты на количество моделей.
Цитата Dyabda ()
(Как добавить его в peds.ide, добавить голос и вообще редактировать peds.ide Я знаю)
Так знаете или нет? Вопрос задан так, что не поймёшь как отвечать smile

Dyabda
Пользователи
13.07.17 12:24
Offline
Добрый вечер, уважаемые скриптеры.
Появился вопрос: Как прописать в аммунацию миниган или любое другое оружие?
Например: пришёл в аммунацию, нажимаю на вкладку гранаты (Ну или другую вкладку) и выбираю там миниган.
Пожалуйста, объясните всё подробно и укажите, какая строка за что отвечает. Это очень важно для меня.
Отредактировал Dyabda - Суббота, 15.07.17, 11:50

wmysterio
Администраторы
Скриптер
23.07.17 10:54
Offline
Цитата Dyabda ()
Появился вопрос: Как прописать в аммунацию миниган или любое другое оружие?
Попробуйте отредактировать файл "shopping.dat" секцию "section Weapons". Никаких гарантий конечно же нет, но вдруг поможет.

Dyabda
Пользователи
03.08.17 12:00
Offline
Цитата wmysterio ()
Попробуйте отредактировать файл "shopping.dat" секцию "section Weapons". Никаких гарантий конечно же нет, но вдруг поможет.

К сожалению, это не сработало. Насколько я знаю, тут как раз нужно редактировать Main.scm.
А именно "//-------------External script 60 (AMMU)---------------".
Если вы разбираетесь в данном скрипте Амму-Нации, пожалуйста отпишитесь.

vlad_slobodchikov_2002
Пользователи
05.08.17 01:53
Offline
Хочу создать миссию в Sanny Builder, но в main.scm вместо DEFINE MISSIONS 0 написано DEFINE MISSIONS 135. То есть если я начну писать миссии, то они буду доступны только после прохождения всех 134 миссий, а мне надо, чтобы в отдельном MPACK'е они были

wmysterio
Администраторы
Скриптер
05.08.17 22:23
Offline
Цитата Dyabda ()
Насколько я знаю, тут как раз нужно редактировать Main.scm.
В том скрипте используется опкоды 075F, 078C и 0761, которые читаются с файла "shopping.dat". Редактировать скомпилированный скрипт - это то ещё приключение. Других способов я не знаю.
Цитата vlad_slobodchikov_2002 ()
Хочу создать миссию в Sanny Builder, но в main.scm вместо DEFINE MISSIONS 0 написано DEFINE MISSIONS 135. То есть если я начну писать миссии, то они буду доступны только после прохождения всех 134 миссий, а мне надо, чтобы в отдельном MPACK'е они были
Если пишете миссии с нуля, то здесь несколько вариантов - использовать чистый, оригинальный или очищенный от стандартных миссий мейн. Во всех вариантах нужно написать миссию и добавить её в "DEFINE MISSION {NUMBER} AT {LABEL}" и увеличить значение "DEFINE MISSIONS" на 1. Нужно больше информации, так сходу не скажешь как решить проблему.

Dyabda
Пользователи
07.08.17 12:49
Offline
Как можно добавить машину в список машин, на которых выполняются миссии?
Например:
Как добавить cheetah в список такси машин, чтобы на cheetah`е можно было выполнять миссию такси?
И как добавить к примеру infernus в список полицейских машин?

wmysterio
Администраторы
Скриптер
07.08.17 14:25
Offline
Цитата Dyabda ()
Как можно добавить машину в список машин, на которых выполняются миссии?
В стартерах миссий заменить:
Код
056C:   actor $PLAYER_ACTOR driving_police_car
// и
0602:   actor $PLAYER_ACTOR driving_taxi

На
Код
00DD:   actor $PLAYER_ACTOR driving_car_with_model #CHEETAH
00DD:   actor $PLAYER_ACTOR driving_car_with_model #INFERNUS
Соответсвтенно.

В стартете миссии кода осуществляется дополнительная проверка на то, какой транспорт водит игрок. Нужно добавить или заменить модель транспорта на нужный.

Dyabda
Пользователи
07.08.17 22:44
Offline
Появился новый вопрос:
Как можно сделать, чтобы CHEETAH имел другой звук мигалки, можно ли сделать путь к этому звуку?
Например: GTA SA\AUDIO\MYMOD\SOUND.MP3
И ещё, я хочу добавить данные авто в список, а не заменять весь список, т.е. чтобы мисси можно было выполнять и на старых авто и на новых. Такси я добавить смог, а вот с полицейским авто проблемы.

------------------------------------------------------------------------------------------------------------------------------------------------
UPDATE.
Отредактировал Dyabda - Вторник, 08.08.17, 02:03

wmysterio
Администраторы
Скриптер
08.08.17 00:58
Offline
Цитата Dyabda ()
Искал данный код, так и не смог найти.
Я не буду Вам каждый раз искать такие мелочи. Запуск миссий находится в потоку "R3". Дальше уже сами.
Цитата Dyabda ()
Как можно сделать, чтобы CHEETAH имел другой звук мигалки, можно ли сделать путь к этому звуку?
Например: GTA SA\AUDIO\MYMOD\SOUND.MP3
Кажется через "Mod loader" можно менять звуки, не копаясь в архивах.

Dyabda
Пользователи
09.08.17 03:39
Offline
Здравствуйте, появился вопрос:
Как сделать, чтобы банда Грув имела 3-ий навык владения пистолетами?
И как осуществляется проверка условия, что определённая банда владеет определённым районом?
И ещё, как назначить полицейским другое оружие?
Отредактировал Dyabda - Среда, 09.08.17, 04:27

wmysterio
Администраторы
Скриптер
09.08.17 19:01
Offline
Цитата Dyabda ()
И как осуществляется проверка условия, что определённая банда владеет определённым районом?
Точно не знаю, но можете получить значения из опкодов ниже и проверить их:
Код
076D: get_zone 'GAN1' gang 1 density_to 35@
08D3: get_present_zone_popcycle_group_for_peds_and_cars_to 26@

Цитата Dyabda ()
И ещё, как назначить полицейским другое оружие?
Такого опкода нет. Возможно можно изменить как-то через память игры или панисать скрипт, де будет осуществлятся поиск копа и прозиводится замена/добавление нужного оружия
Цитата Dyabda ()
Как сделать, чтобы банда Грув имела 3-ий навык владения пистолетами?
Через память скорее всего. Хотя я не знаю есть ли способ вообще изменить этот навык.

Dyabda
Пользователи
10.08.17 03:41
Offline
Здравствуйте, уважаемый wmysterio.
Решил изменить один скрипт, он добавляет в пустынную местность своего шерифа (Т.е. в пустыне будет свой шериф, а в сельской местности свой.) Решил заменить строки с надписью #CSHER на ID нового педа 6013, но игра вылетает, что не так?
Вот код:
Код
{$CLEO}

0000:
goto @notdesert

:desertcop
wait 0
if
Model.Available(#DSHER) // Desert
then
0A8C: write_memory 0x8A5AA0 size 1 value 288 virtual_protect 0 //????? dsher
else
goto @loadcop
end

:notdesert
wait 0
if and // Country
8154: not actor $PLAYER_ACTOR in_zone 'RED' // red country
8154: not actor $PLAYER_ACTOR in_zone 'FLINTC' // flint country
8154: not actor $PLAYER_ACTOR in_zone 'ANGPI' // Angel Pine
8154: not actor $PLAYER_ACTOR in_zone 'SHACA' // Shady Cabin
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'BEACO' // Beacon Hill
8154: not actor $PLAYER_ACTOR in_zone 'BACKO'
8154: not actor $PLAYER_ACTOR in_zone 'FARM'
8154: not actor $PLAYER_ACTOR in_zone 'PALO'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'MONT'
8154: not actor $PLAYER_ACTOR in_zone 'MONT1'
8154: not actor $PLAYER_ACTOR in_zone 'HBARNS'
8154: not actor $PLAYER_ACTOR in_zone 'DILLI'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'TOPFA'
8154: not actor $PLAYER_ACTOR in_zone 'BLUEB'
8154: not actor $PLAYER_ACTOR in_zone 'BLUEB1'
8154: not actor $PLAYER_ACTOR in_zone 'PANOP'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'BLUAC'
8154: not actor $PLAYER_ACTOR in_zone 'CREEK'
8154: not actor $PLAYER_ACTOR in_zone 'CREEK1'
8154: not actor $PLAYER_ACTOR in_zone 'FERN'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'NROCK'
8154: not actor $PLAYER_ACTOR in_zone 'HANKY'
8154: not actor $PLAYER_ACTOR in_zone 'LEAFY'
8154: not actor $PLAYER_ACTOR in_zone 'WHET'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'FLINTI'
8154: not actor $PLAYER_ACTOR in_zone 'MONINT'
8154: not actor $PLAYER_ACTOR in_zone 'HAUL'
8154: not actor $PLAYER_ACTOR in_zone 'EBAY'
8154: not actor $PLAYER_ACTOR in_zone 'EBAY2'
jf @countrycop
if and // Desert
8154: not actor $PLAYER_ACTOR in_zone 'BONE' // bone country
8154: not actor $PLAYER_ACTOR in_zone 'SUNMA'
8154: not actor $PLAYER_ACTOR in_zone 'SUNNN'
8154: not actor $PLAYER_ACTOR in_zone 'BIGE'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ELQUE'
8154: not actor $PLAYER_ACTOR in_zone 'BARRA'
8154: not actor $PLAYER_ACTOR in_zone 'CARSO'
8154: not actor $PLAYER_ACTOR in_zone 'PAYAS'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'PROBE'
8154: not actor $PLAYER_ACTOR in_zone 'ELCA'
8154: not actor $PLAYER_ACTOR in_zone 'ARCO'
8154: not actor $PLAYER_ACTOR in_zone 'VALLE'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ROBINT'
8154: not actor $PLAYER_ACTOR in_zone 'TOM'
8154: not actor $PLAYER_ACTOR in_zone 'ALDEA'
8154: not actor $PLAYER_ACTOR in_zone 'BRUJA'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ROBAD'
8154: not actor $PLAYER_ACTOR in_zone 'QUARY'
8154: not actor $PLAYER_ACTOR in_zone 'OCTAN'
8154: not actor $PLAYER_ACTOR in_zone 'PALMS'
8154: not actor $PLAYER_ACTOR in_zone 'DAM'
jf @desertcop        
0249: release_model #DSHER
0249: release_model 6013
goto @desertcop

:countrycop
wait 0
if
Model.Available(6013) // Country
then
0A8C: write_memory 0x8A5AA0 size 1 value 6013 virtual_protect 0 //????? dsher
goto @notdesert
else
goto @loadcopcont
end

:loadcopcont
wait 0
Model.Load(6013)
038B: load_requested_models

:loadcopcont2
wait 0
if
Model.Available(6013)
jf @loadcopcont2
goto @countrycop

:loadcop
wait 0
Model.Load(#DSHER)
038B: load_requested_models

:loadcop2
wait 0
if
Model.Available(#DSHER)
jf @loadcop2
goto @desertcop     

Добавлено (10.08.17, 03:41)
---------------------------------------------
Здравствуйте, уважаемый wmysterio.
Решил изменить один скрипт, он добавляет в пустынную местность своего шерифа (Т.е. в пустыне будет свой шериф, а в сельской местности свой.) Решил заменить строки с надписью #CSHER на ID нового педа 6013, но игра вылетает, что не так?
Вот код:

Код
{$CLEO}

0000:
goto @notdesert

:desertcop
wait 0
if
Model.Available(#DSHER) // Desert
then
0A8C: write_memory 0x8A5AA0 size 1 value 288 virtual_protect 0 //????? dsher
else
goto @loadcop
end

:notdesert
wait 0
if and // Country
8154: not actor $PLAYER_ACTOR in_zone 'RED' // red country
8154: not actor $PLAYER_ACTOR in_zone 'FLINTC' // flint country
8154: not actor $PLAYER_ACTOR in_zone 'ANGPI' // Angel Pine
8154: not actor $PLAYER_ACTOR in_zone 'SHACA' // Shady Cabin
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'BEACO' // Beacon Hill
8154: not actor $PLAYER_ACTOR in_zone 'BACKO'
8154: not actor $PLAYER_ACTOR in_zone 'FARM'
8154: not actor $PLAYER_ACTOR in_zone 'PALO'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'MONT'
8154: not actor $PLAYER_ACTOR in_zone 'MONT1'
8154: not actor $PLAYER_ACTOR in_zone 'HBARNS'
8154: not actor $PLAYER_ACTOR in_zone 'DILLI'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'TOPFA'
8154: not actor $PLAYER_ACTOR in_zone 'BLUEB'
8154: not actor $PLAYER_ACTOR in_zone 'BLUEB1'
8154: not actor $PLAYER_ACTOR in_zone 'PANOP'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'BLUAC'
8154: not actor $PLAYER_ACTOR in_zone 'CREEK'
8154: not actor $PLAYER_ACTOR in_zone 'CREEK1'
8154: not actor $PLAYER_ACTOR in_zone 'FERN'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'NROCK'
8154: not actor $PLAYER_ACTOR in_zone 'HANKY'
8154: not actor $PLAYER_ACTOR in_zone 'LEAFY'
8154: not actor $PLAYER_ACTOR in_zone 'WHET'
jf @countrycop
if and
8154: not actor $PLAYER_ACTOR in_zone 'FLINTI'
8154: not actor $PLAYER_ACTOR in_zone 'MONINT'
8154: not actor $PLAYER_ACTOR in_zone 'HAUL'
8154: not actor $PLAYER_ACTOR in_zone 'EBAY'
8154: not actor $PLAYER_ACTOR in_zone 'EBAY2'
jf @countrycop
if and // Desert
8154: not actor $PLAYER_ACTOR in_zone 'BONE' // bone country
8154: not actor $PLAYER_ACTOR in_zone 'SUNMA'
8154: not actor $PLAYER_ACTOR in_zone 'SUNNN'
8154: not actor $PLAYER_ACTOR in_zone 'BIGE'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ELQUE'
8154: not actor $PLAYER_ACTOR in_zone 'BARRA'
8154: not actor $PLAYER_ACTOR in_zone 'CARSO'
8154: not actor $PLAYER_ACTOR in_zone 'PAYAS'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'PROBE'
8154: not actor $PLAYER_ACTOR in_zone 'ELCA'
8154: not actor $PLAYER_ACTOR in_zone 'ARCO'
8154: not actor $PLAYER_ACTOR in_zone 'VALLE'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ROBINT'
8154: not actor $PLAYER_ACTOR in_zone 'TOM'
8154: not actor $PLAYER_ACTOR in_zone 'ALDEA'
8154: not actor $PLAYER_ACTOR in_zone 'BRUJA'
jf @desertcop
if and
8154: not actor $PLAYER_ACTOR in_zone 'ROBAD'
8154: not actor $PLAYER_ACTOR in_zone 'QUARY'
8154: not actor $PLAYER_ACTOR in_zone 'OCTAN'
8154: not actor $PLAYER_ACTOR in_zone 'PALMS'
8154: not actor $PLAYER_ACTOR in_zone 'DAM'
jf @desertcop        
0249: release_model #DSHER
0249: release_model 6013
goto @desertcop

:countrycop
wait 0
if
Model.Available(6013) // Country
then
0A8C: write_memory 0x8A5AA0 size 1 value 6013 virtual_protect 0 //????? dsher
goto @notdesert
else
goto @loadcopcont
end

:loadcopcont
wait 0
Model.Load(6013)
038B: load_requested_models

:loadcopcont2
wait 0
if
Model.Available(6013)
jf @loadcopcont2
goto @countrycop

:loadcop
wait 0
Model.Load(#DSHER)
038B: load_requested_models

:loadcop2
wait 0
if
Model.Available(#DSHER)
jf @loadcop2
goto @desertcop     

wmysterio
Администраторы
Скриптер
10.08.17 05:36
Offline
Цитата Dyabda ()
нового педа 6013
Этот ID скорее всего закреплён за объеком.

Dyabda
Пользователи
10.08.17 15:02
Offline
Использовал ID 399, всё заработало.
Но всё же не хотелось бы нарушать свой список в Peds.ide.
Можно ли как-нибудь сделать, чтобы он всё же работал?
К примеру, данный ID (6013) я могу спокойно использовать в скрипте от Silent`а, "Cop Bikes Overhaul". Там это реализовано через HEX - коды. Можно ли так же сделать в данном скрипте? И как это реализовать?

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