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

wmysterio
Администраторы
Скриптер
02.03.14 19:35
Offline
Цитата Slivkin-Sergey ()
Разве нет?
Я не знаю. В описании говорится "выделяет блок памяти", где и как - известно разработчикам. ВОЗМОЖНО это вариант как с hex-буффером
Код
hex
00 00 00 00
end

Факт в том, что начинать читать нужно с того места, где был объявлен буффер
0AC8: 0@ = allocate_memory_size 4
0A8C: write_memory 0@ size 4 value 20 virtual_protect 0
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0

Этот процесс уже реализует Cleo.

DK22Pac
Друзья
TOP Скриптер
03.03.14 04:44
Offline
Yurko_UA, вот пример построчного чтения из файла:
Прикрепления: vehSetsReading.txt(3Kb)

SanKing
Друзья
05.03.14 17:52
Offline
Есть вопрос. При выполнении опкода
Actor.DestroyWithFade выполняется ли Actor.RemoveReferences, то есть, удаляется ли ссылка на него?

Slivkin-Sergey
Модераторы
05.03.14 18:36
Offline
Цитата SanKing ()
Actor.DestroyWithFade выполняется ли Actor.RemoveReferences, то есть, удаляется ли ссылка на него?

Хм-м, интересно, как ты себе представляешь уничтожение актёра без удаления ссылок?

wmysterio
Администраторы
Скриптер
05.03.14 18:55
Offline
Цитата SanKing ()
Actor.DestroyWithFade выполняется ли Actor.RemoveReferences, то есть, удаляется ли ссылка на него?
Вряд-ли. Под словом УдалениеСсылок подразумевается возвращение актёра к изначальным параметрам, установленных для конкретного типа, тем самым отдать его управление игре, но мы можем вновь обратится к нему по хэндлу. Я думаю, что нет смыла удалять сведения об актёре, если идёт удаление самого объекта, представляющего из себя этого педа. Возможно, процедура сброса сведений встроена в деструктор класса Ped.

JIEXAH949
Пользователи
08.03.14 17:38
Offline
Помогите сделать сохранение ГМ после смерти. А то умер и если он включен то ничего не работает:
Код
0@ = 0  

  :NONAME  
  wait 0  

  if and  
  0@ == 0
  0AB0:  key_pressed 17  
  0AB0:  key_pressed 67
  Player.Defined($PLAYER_ACTOR)   
  then  
  0ACD: show_text_highpriority "Melka ~g~TASHER" time 1500    
  018C: play_sound 1058 at 0 0 0  
  02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1   
  0@ = 1     
  wait 250  
  end  

  if and  
  0@ == 1
  0AB0:  key_pressed 17  
  0AB0:  key_pressed 67   
  then  
  0ACD: show_text_highpriority "Melka ~g~NE TASHER" time 1500    
  018C: play_sound 1058 at 0 0 0    
  02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0
  Actor.RemoveReferences($PLAYER_ACTOR)    
  0@ = 0    
  wait 250     
  end  

  jump @NONAME

Михан500
Пользователи
09.03.14 14:44
Offline
Есть одна проблема:Нужно заставить актера будучи заставленным убить игрока, залазить на препятсвия если они ему встретятся.Я сделал это таким способом - координаты между актером и координаты через 3 метра вперед заносил в переменную, одним оппкодом проверял, есть ли между этими точками коллизия, если есть то я заставлял актера прыгать.Все это работает, но из-за этой проверки игра вылетает примерно минут 10.И это еще зависит от количества потоков, в которых есть эта проверка (больше 10 потоков не выдерживает и вылетает).Почему она вылетает?
Может можно как-нибудь по другому заставить актера лазить по стенам кроме оппкода climb?Я вот что заметил, любой актер, добавленный в группу игрока умеет лазать по стенам за игрком.Ну так что, можно как-нибудь решить эту проблему?

JIEXAH949
Пользователи
09.03.14 18:20
Offline
например я не за вод местом и активировал его то меня тпшает на вод. место этого авто на котором я был пассажиром. Вот это я хотел исправить. Спасибо за внимание))
Вот скрипт:
Код
:OPCODEEXE_13
wait 0  
if and
0AB0:   key_pressed 105  
    Actor.Driving($PLAYER_ACTOR)
else_jump @OPCODEEXE_13  
wait 0  
25@ = Actor.CurrentCar($PLAYER_ACTOR)
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
Actor.StorePos($PLAYER_ACTOR, 29@, 28@, 27@)
3@ = 100000.0  
gosub @OPCODEEXE_284  
if  
056D:   actor 9@ defined  
else_jump @OPCODEEXE_13  
30@ = Actor.CurrentCar(9@)
036A: put_actor $PLAYER_ACTOR in_car 30@  
036A: put_actor $PLAYER_ACTOR in_car 30@  

:OPCODEEXE_134
wait 0  
07D5: set_car 30@ velocity_in_direction_XYZ 0.0 0.0 0.01 rotation_velocitiesXY 0.0 0.0 unk 0.0  
07DA: set_car 30@ rotation_velocity_XYZ 0.0 0.0 5.3 through_center_of_body  
if  
8AB0:   not key_pressed 105  
else_jump @OPCODEEXE_134  
if  
056E:   car 25@ defined  
else_jump @OPCODEEXE_259  
036A: put_actor $PLAYER_ACTOR in_car 25@  
018C: play_sound 1056 at 0.0 0.0 0.0  
jump @OPCODEEXE_13  

:OPCODEEXE_259
wait 0  
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 29@ 28@ 27@  
jump @OPCODEEXE_13  

:OPCODEEXE_284
0395: clear_area 1 at 0@ 1@ 2@ radius 100000.0  
16@ = 305868  
5@ = -686  
6@ = 1988  
jump @OPCODEEXE_439  
16@ = 305871  
17@ = -729  
20@ = 412  
16@ = 305869  
17@ = -741  
18@ = -1  
20@ = 2584  
    Player.Defined($PLAYER_CHAR)
else_jump @OPCODEEXE_439  
    Actor.Driving($PLAYER_ACTOR)
else_jump @OPCODEEXE_439  
18@ = Actor.CurrentCar($PLAYER_ACTOR)
jump @OPCODEEXE_439  

:OPCODEEXE_439
008B: 16@ = &0(16@,1i) // (int)  
0AB1: call_scm_func @OPCODEEXE_854 2 16@ 8 7@   
0A8D: 11@ = read_memory 16@ size 4 virtual_protect 0  
9@ = -1  
10@ = 0  

:OPCODEEXE_495
0AB1: call_scm_func @OPCODEEXE_854 2 11@ 20 4@   
    not 4@ == 0  
else_jump @OPCODEEXE_822  
0AB1: call_scm_func @OPCODEEXE_854 2 4@ 48 12@   
0AB1: call_scm_func @OPCODEEXE_854 2 4@ 52 13@   
0AB1: call_scm_func @OPCODEEXE_854 2 4@ 56 14@   
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@  
0025:   3@ > 15@ // (float)  
else_jump @OPCODEEXE_822  
0085: 9@ = 10@ // (int)  
0AB1: call_scm_func @OPCODEEXE_854 2 16@ 4 4@   
005A: 4@ += 9@ // (int)  
0A8D: 4@ = read_memory 4@ size 1 virtual_protect 0  
9@ *= 256  
005A: 9@ += 4@ // (int)  
jump 5@  
056D:   actor 9@ defined  
else_jump @OPCODEEXE_784  
if or
003C:   $PLAYER_ACTOR == 9@ // (int)  
    Actor.Dead(9@)
else_jump @OPCODEEXE_798  
jump @OPCODEEXE_784  
83CA:   not object 9@ exists  
else_jump @OPCODEEXE_798  
056E:   car 9@ defined  
else_jump @OPCODEEXE_784  
if or
003B:   18@ == 9@ // (int)  
    Car.Wrecked(9@)
else_jump @OPCODEEXE_798  
jump @OPCODEEXE_784  

:OPCODEEXE_784
9@ = -1  
jump @OPCODEEXE_822  

:OPCODEEXE_798
if  
    Actor.Driving(9@)
else_jump @OPCODEEXE_784  
0085: 3@ = 15@ // (int)  

:OPCODEEXE_822
005A: 11@ += 6@ // (int)  
10@ += 1  
002D:   10@ >= 7@ // (int)  
else_jump @OPCODEEXE_495  
return  

:OPCODEEXE_854
0A8E: 0@ = 0@ + 1@ // int  
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0  
0AB2: ret 1 0@

SHooZ
Друзья
10.03.14 00:02
Offline
JIEXAH949, вот пример попроще:
Код
{$CLEO}
0000:
const
     Car = 3@
     PrevDriver = 4@
end
while true
     wait 0
     if
         0AB0: key_pressed 105
     then
         04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
         if
             0AE2: Car = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 1
         then
             if and
                 not 1@ == FALSE
                 Actor.InCar($PLAYER_ACTOR,Car)
             then
                 046C: PrevDriver = car Car driver
                 0362: remove_actor PrevDriver from_car_and_place_at 0 0 0
                 072A: put_actor $PLAYER_ACTOR into_car Car driverseat
             end
         end
     end
end
0A93:
Отредактировал SHooZ - Понедельник, 10.03.14, 00:11

Михан500
Пользователи
10.03.14 20:09
Offline
Мне кто нибудь ответит?

SanKing
Друзья
11.03.14 19:39
Offline
Цитата Михан500 ()
Есть одна проблема:Нужно заставить актера будучи заставленным убить игрока, залазить на препятсвия если они ему встретятся.Я сделал это таким способом - координаты между актером и координаты через 3 метра вперед заносил в переменную, одним оппкодом проверял, есть ли между этими точками коллизия, если есть то я заставлял актера прыгать.Все это работает, но из-за этой проверки игра вылетает примерно минут 10.И это еще зависит от количества потоков, в которых есть эта проверка (больше 10 потоков не выдерживает и вылетает).Почему она вылетает? Может можно как-нибудь по другому заставить актера лазить по стенам кроме оппкода climb?Я вот что заметил, любой актер, добавленный в группу игрока умеет лазать по стенам за игрком.Ну так что, можно как-нибудь решить эту проблему?
078F: AS_actor $PLAYER_ACTOR climb 1 //попробуй это, у меня работает.

Михан500
Пользователи
12.03.14 07:14
Offline
Нет, оно я так и сделал!Просто почему-то из-за проверки вылетает через 10 минут.Код не могу написать... стойте, а можеь это быть из-за того что я ааждыц раз заставляю актера убивать главного героя будучи застааленным это делать?Хотя наврятли.Так есть способ заставить актера лазать, кроме 078F: AS_actor $PLAYER_ACTOR climb 1 ???

SanKing
Друзья
12.03.14 14:51
Offline
05BC: AS_actor -1 jump 1

Михан500
Пользователи
14.03.14 16:48
Offline
Значит нету да?Или сделать через последовательность.Ну ладно...

Добавлено (14.03.14, 14:48)
---------------------------------------------
Просто в игре некоторые актеры умеют лазать сами по себе.


Vital
Друзья
Скриптер
14.03.14 18:50
Offline
Я думаю, это часть ИИ, например, я делал охранника для игрока, и он умел (немного) преодолевать простые препятствия, тем не менее, сильно умнее он не стал. Но ничего дополнительного я не делал, чтобы он умел перепрыгивать препятствия. Враги, кстати, ни разу не пытались перелезть через заборы, скажем, лишь слегка прыгали, и только.

wmysterio
Администраторы
Скриптер
15.03.14 15:14
Offline
Цитата Михан500 ()
Просто в игре некоторые актеры умеют лазать сами по себе.
По-сути все актёры умеют выполнять практически всё, что и CJ. Игра выполняет нужные действия, если идёт целый ряд положительных обстоятельств.

Если писать всё вручную, то нужно:
1) Точно знать маршрут, по которому будет двигаться жертва эксперимента
2) Делать соответствующие проверки, получать время на анимации
3) Выполнять команды вручную при необходимости

Вот пример пример: актёр будет выскакивать на дом, бежать по зданию, перепрыгивать места, где есть преграды:
Код
0376: 0@ = create_random_actor_at 2422.1372 -1681.6096 13.7918
Actor.Angle(0@) = 95.3654
wait 4000

0615: define_AS_pack_begin 1@
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 830  // versionB
078F: AS_actor -1 climb 1
078F: AS_actor -1 climb 1
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 1050  // versionB
05D4: AS_actor -1 rotate_angle 179.0027
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 200  // versionB
05BC: AS_actor -1 jump 1
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 150  // versionB
0616: define_AS_pack_end 1@

0615: define_AS_pack_begin 2@
078F: AS_actor -1 climb 1
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 700  // versionB
078F: AS_actor -1 climb 1
05D4: AS_actor -1 rotate_angle 268.9302
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 400  // versionB
05D4: AS_actor -1 rotate_angle 181.5094
0812: AS_actor -1 perform_animation "run_gang1" IFP "PED" framedelta 4.0 loopA 0 lockX 1 lockY 1 lockF 0 time 6500  // versionB
0616: define_AS_pack_end 2@

0618: assign_actor 0@ to_AS_pack 1@
repeat
wait 0
until 00EC:   actor 0@ sphere 0 near_point 2408.7776 -1691.8906 radius 1.0 1.0
0618: assign_actor 0@ to_AS_pack 2@

Вот видео:


Минусы подхода:
1) Долго нужно вычислять время анимаций
2) Анимационные блоки не всегда выполняются долго, приходится разбивать их на несколько штук, как в моём примере.
3) Есть вероятность натолкнутся на другого актёра, машину, объект, что приводит к прекращению анимационного пакета или смещения траектории движения

Этот метод отлично подходит для видеороликов. По другому реализовать это очень очень очень сложно, хотя я не исключаю, что народные умельцы могут сделать такое.

Михан500
Пользователи
19.03.14 19:52
Offline
Люди, но вот в чем дело:я делаю зомби мод, и чтобы отличаться я сделал чтобы они лазали по препятствиям.Код устроен таким образом, что один скрипт управляет одним зомби.Я просто скопировал этот скрипт 30 раз.В папке клео 30 одинаковых копий
, все они работают одновременно, но вылет через 20 минут работы скриптов.Когда их 10, то все хорошо.Я выйснил из-за какой части вылет, эта часть где проверяется близость актера к игроку, если ее удалить, то вылета не происходит независимо от количества скриптов.Я не понимаю, может все засунуть в один скрипт, и пускай один скрипт руководит тремя зомби.Сложное это дело на движке са зомби мод хороший делать.Проект из-за этого вылета остановлен...

BoPoH
Друзья
23.03.14 20:59
Offline
Делать зомби мод с управлением каждым зомби отдельным скриптом это же.... такой непрофессионализм, мягко говоря...

Slivkin-Sergey
Модераторы
23.03.14 21:12
Offline
Есть вопросик для тех, кто разбирается в псевдокоде IDA (потому что это
Код
*(float *)((char *)&v40 + v24) = (flt_BA8308 * *(float *)((char *)&v50 + v24)

мне не говорит ни о чём, кроме того, что присваивается какое-то значение какому-то указателю), ну или в ассемблере. В общем, есть процедура 0x5853D0, которая принимает в качестве аргументов 2 числа и чар:
Код
void __cdecl sub_5853D0(int a1, int a2, char a3)

Известно, что она может всячески манипулировать территориями банд и их цветами в частности. Внимание, вопрос: как ей воспользоваться, чтобы инвертировать цвета территорий гроув и болла (т.е. у гроув пурпурный и соответственно)?

Если этот набор символов (по крайней мере, для меня он таковым является) может чем-то помочь, я очень рад:
Код
void __cdecl sub_5853D0(int a1, int a2, char a3)
{
     int v3; // eax@6
     int v4; // edi@6
     int v5; // eax@6
     int v6; // edx@6
     long double v7; // fst6@6
     long double v8; // fst7@6
     float v9; // edx@6
     float v10; // ST24_4@6
     float v11; // eax@6
     float v12; // ST28_4@6
     long double v13; // fst7@6
     long double v14; // fst6@6
     long double v15; // fst5@6
     float v16; // ST24_4@6
     long double v17; // fst6@6
     float v18; // ST24_4@6
     long double v19; // fst6@6
     float v20; // ST28_4@6
     float v21; // ST2C_4@6
     long double v22; // fst7@6
     long double v23; // fst6@6
     int v24; // edx@8
     char v25; // bl@8
     int v26; // ebp@8
     int v27; // edx@9
     char *v28; // esi@9
     long double v29; // fst7@10
     long double v30; // fst7@10
     float v31; // [sp+Ch] [bp-120h]@6
     float v32; // [sp+10h] [bp-11Ch]@6
     float v33; // [sp+14h] [bp-118h]@6
     float v34; // [sp+18h] [bp-114h]@6
     float v35; // [sp+1Ch] [bp-110h]@6
     float v36; // [sp+20h] [bp-10Ch]@6
     float v37; // [sp+24h] [bp-108h]@6
     float v38; // [sp+28h] [bp-104h]@6
     float v39; // [sp+2Ch] [bp-100h]@9
     float v40; // [sp+30h] [bp-FCh]@9
     float v41; // [sp+34h] [bp-F8h]@6
     float v42; // [sp+38h] [bp-F4h]@6
     float v43; // [sp+3Ch] [bp-F0h]@6
     float v44; // [sp+40h] [bp-ECh]@6
     float v45; // [sp+44h] [bp-E8h]@6
     float v46; // [sp+48h] [bp-E4h]@6
     float v47; // [sp+6Ch] [bp-C0h]@10
     float v48; // [sp+70h] [bp-BCh]@10
     int v49; // [sp+ACh] [bp-80h]@6
     float v50; // [sp+B0h] [bp-7Ch]@9
     int v51; // [sp+ECh] [bp-40h]@9
     float v52; // [sp+F0h] [bp-3Ch]@10

     if ( a3
       || *(float *)a1 <= (long double)flt_8D0928
       && *(float *)(a1 + 8) >= (long double)flt_8D0920
       && *(float *)(a1 + 12) <= (long double)flt_8D0924
       && *(float *)(a1 + 4) >= (long double)flt_8D092C )
     {
       v5 = *(_DWORD *)(a1 + 8);
       v6 = *(_DWORD *)(a1 + 12);
       v7 = *(float *)a1;
       v8 = *(float *)(a1 + 12);
       LODWORD(v41) = v5;
       LODWORD(v42) = v6;
       LODWORD(v9) = *(_DWORD *)(a1 + 4);
       LODWORD(v43) = v5;
       v10 = v7 - flt_BAA248;
       v44 = v9;
       LODWORD(v11) = *(_DWORD *)a1;
       v45 = v11;
       v12 = v8 - flt_BAA24C;
       v46 = v9;
       v13 = 1.0 / flt_BA8314;
       v14 = v10 * v13;
       v15 = v13 * v12;
       v31 = flt_BA830C * v15 + v14 * flt_BA8308;
       v32 = v15 * flt_BA8308 - v14 * flt_BA830C;
       v16 = v13 * (v41 - flt_BAA248);
       v17 = v13 * (v42 - flt_BAA24C);
       v33 = flt_BA830C * v17 + v16 * flt_BA8308;
       v34 = v17 * flt_BA8308 - v16 * flt_BA830C;
       v18 = v13 * (v43 - flt_BAA248);
       v19 = v13 * (v9 - flt_BAA24C);
       v35 = flt_BA830C * v19 + v18 * flt_BA8308;
       v36 = v19 * flt_BA8308 - v18 * flt_BA830C;
       v20 = v9 - flt_BAA24C;
       v21 = v13;
       v22 = (v11 - flt_BAA248) * v13;
       v23 = v21 * v20;
       v37 = flt_BA830C * v23 + v22 * flt_BA8308;
       v38 = v23 * flt_BA8308 - v22 * flt_BA830C;
       v3 = sub_585040(&v49, &v31);
       v4 = v3;
       if ( v3 )
       {
         if ( v3 > 0 )
         {
           v25 = menu.drawRadarOrMap;
           v24 = 0;
           v26 = v3;
           do
           {
             v28 = (char *)&v51 + v24;
             *(float *)((char *)&v39 + v24) = (flt_BA8308 * *(float *)((char *)&v49 + v24)
                      - flt_BA830C * *(float *)((char *)&v50 + v24))
                      * flt_BA8314
                      + flt_BAA248;
             *(float *)((char *)&v40 + v24) = (flt_BA8308 * *(float *)((char *)&v50 + v24)
                      + flt_BA830C * *(float *)((char *)&v49 + v24))
                      * flt_BA8314
                      + flt_BAA24C;
             _getRadarZoom((char *)&v51 + v24, (char *)&v49 + v24);
             if ( v25 )
             {
               v29 = (long double)(signed int)*(&RsGlobal + 1) * 0.001562500023283064;
               *(float *)v28 = v29 * *(float *)v28;
               *(float *)((char *)&v47 + v27) = v29 * *(float *)((char *)&v47 + v27);
               v30 = (long double)(signed int)*(&RsGlobal + 2) * 0.002232142956927419;
               *(float *)((char *)&v52 + v27) = v30 * *(float *)((char *)&v52 + v27);
               *(float *)((char *)&v48 + v27) = v30 * *(float *)((char *)&v48 + v27);
             }
             v24 = v27 + 8;
             --v26;
           }
           while ( v26 );
         }
         (*(void (__cdecl **)(signed int, signed int))(RwEngineInstance + 32))(12, 1);
         (*(void (__cdecl **)(signed int, _DWORD))(RwEngineInstance + 32))(1, 0);
         sub_727890(v4, &v51, &v47, a2);
         if ( v4 > 2 )
           im2DRenderPrimitive(rwPRIMTYPETRIFAN, &vertices, v4);
       }
     }
}


Кроме того, в комментариях к ассемблерному коду процедуры есть такая строка: CODE XREF: _?paintMapZones+20Bp , что, несомненно, свидетельствует о том, что перекрасить территорию той или иной банды - вполне в компетенции данной функции.
Отредактировал Slivkin-Sergey - Понедельник, 24.03.14, 06:19

BoPoH
Друзья
24.03.14 21:21
Offline
sub_5853D0 - это функция рендеринга прямоугольника на радаре.
Первый параметр - указатель на структуру CRect, которая, судя по всему, содержит координаты углов прямоугольника, который отрисовывается функцией.
Второй параметр - указатель на структуру RwRGBA, которая содержит цвет прямоугольника.
Третий параметр - это флаг, говорящий функции, нужно ли производить рендер прямоугольника, даже если он находится за пределами радара.

Цитата Slivkin-Sergey ()
Кроме того, в комментариях к ассемблерному коду процедуры есть такая строка: CODE XREF: _?paintMapZones+20Bp , что, несомненно, свидетельствует о том, что перекрасить территорию той или иной банды - вполне в компетенции данной функции.
Эта строка свидетельствует о том, что эта функция вызывается из функции paintMapZones. Вообще, тебе скорее всего нужна будет не эта функция, а другая, которая создаёт зоны банд. Её, вероятно, можно хукнуть и подменять цвет на нужный.
Отредактировал BoPoH - Понедельник, 24.03.14, 21:22

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