#3126 07-04-2011 06:47

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

1Можно ли сделать проверку на нахождение игрока в воде своего игрока   2 как сделать маркер чтоб когда заходишь в него он исчезал на 10 секунд

Offline

#3127 07-04-2011 09:26

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@444andrei444 - Opcode search tool - water.
Маркер видимо удалять и создавать новый.

Offline

#3128 07-04-2011 17:57

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Спасибо все получилось жаль там описания нет

Offline

#3129 08-04-2011 04:05

Daeman
From: }{абаровск
Registered: 08-05-2009
Posts: 70

Re: Один вопрос

Sergey81 wrote:

@Alien - Да, так действительно работает. Вобще интересно, можно реализовать к примеру бензин, но вместо того, чтоб выводить что-либо на экран, приаттачить корону к машине и регулировать её цвет/размер, что будет означать сколько бензина осталось, или, например, здоровье машины.

"приаттачить корону к машине ... что будет означать ... например, здоровье машины."
И в конечном итоге ты придёшь к выводу, что повреждения машины должны быть видимы на самой машине: побитость, помятость бампера, царапины и треснутые стёкла. smile

Offline

#3130 08-04-2011 12:44

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Подскажите пожалуйста ответ на такой вопрос:
При перекраски транспорта в покрасочных мастерских происходит считывание значений из файла carcols.dat.(или это заложено в структуре модели?) Каким образом можно считать эти значения? Есть опкод

097D: get_car $CARMOD_CAR number_of_color_indices_to $10084

который считывает количество вариантов покраски транспорта. А как прочитать значения каждого из вариантов для последующего использования этих значений в опкодах

0229: set_car $IMPORT_CAR primary_color_to 11 secondary_color_to 0
0A11: set_car 316@ tertiary_color_to 237@ quaternary_color_to 238@

?:rolleyes:

Last edited by kenking (08-04-2011 12:49)

Offline

#3131 08-04-2011 16:38

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Один вопрос

@kenking - насколько я понимаю эти значения хранятся в структуре CModelCars по смещениям

000002B0 primaryColors   db 16 dup(?)
000002C0 secondaryColors db 16 dup(?)

Адрес структуры требуемой модели находится функцией

.text:004C5940     ; void __cdecl getModelIndexByName(char *modelName, __int16 *pIndex)

параметры: имя модели и переменная для записи адреса.

Могу ошибаться, вывод сделал на основании беглого просмотра функции .text:005B6890     _readCarcolsDat

Offline

#3132 09-04-2011 09:31

d88
Registered: 15-12-2009
Posts: 254
Website

Re: Один вопрос

Я сделал так, чтобы катаны были в обоих руках.

0@ = 8
0@ += 0
0@ *= 0x70
0@ +=  0xC8AAB8 
0@ += 0x18
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
08BD: set 1@ bit 11
0A8C: write_memory 0@ size 4 value 1@ virtual_protect 0
01B2: give_actor $PLAYER_ACTOR weapon 8 ammo 1 // Load the weapon model before using this

Но так стало у каждого актёра. А можно сделать так, чтобы это было только у игрока или одного к-л актёра?

Offline

#3133 10-04-2011 02:54

hack_death
Registered: 15-07-2009
Posts: 10

Re: Один вопрос

Здравствуйте! У меня такой вопрос: В меню -> Настройки звука (GTA VC) есть выбор радиостанций (который с текстурками), можно перенести это как-нибудь в игру, заменив текстовый показ?


673028.gif

Offline

#3134 10-04-2011 11:23

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

@Seemann Спасибо за ответ, но я или, что-то не так делаю, или неправильно понял.

Model.Load(#LANDSTAL)
038B: load_requested_models
Car.Create(0@,#LANDSTAL,0.0,0.0,0.0)
Model.Destroy(#LANDSTAL)
//здесь какие действия писать, чтобы записать в переменные 1@-4@
//значения из файла carcols.dat для модели #LANDSTAL ?
0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ 
0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@

Offline

#3135 10-04-2011 11:37

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Один вопрос

проверку на загруженность модели забыл

while true
#LANDSTAL.Load
if
  #LANDSTAL.available
then
   0@ = car.create(#LANDSTAL, 0, 0, 0)
   1@ = 255 // первый цвет
   2@ = 128 // второй цвет
   3@ = 46 // третий...
   4@ = 56 // четвёртый цвета
   0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@
   0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@
   #LANDSTAL.Destroy
end
end

Offline

#3136 10-04-2011 13:01

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

kenking wrote:

//здесь какие действия писать, чтобы записать в переменные 1@-4@
//значения из файла carcols.dat для модели #LANDSTAL ?

Сначала нужно найти адрес начала структуры CModelCars для данной модели автомобиля:

0441: 1@ = car 0@ model
1@ *= 4
1@ += 0xA9B0C8
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 //CModel

К полученному началу структуры прибавляешь одно из смещений, озвученных выше - получаешь массив номеров цветов. Посмотрев на обозначения адресов, несложно понять, что может существовать максимум по 16 "первых" и "вторых" цветов. Пример чтения значения цвета:

1@ += 0x2B0 // CModel + primaryColors
1@ += X // где X - номер варианта цвета (0 - 15). Сложение чисел в два этапа приведено для наглядности.
0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0

проверку на загруженность модели забыл

Не забыл. Ознакомься с этой темой: http://sannybuilder.com/forums/viewtopic.php?id=1181

Last edited by Den_spb (10-04-2011 13:06)

Offline

#3137 10-04-2011 15:30

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Сразу возникает такой вопрос как по номерам цветов например 1, 2 прочитать их rgb? Это делать через чтение файла или это как то можно по другому?


I know everything and nothing...

Offline

#3138 11-04-2011 02:14

hack_death
Registered: 15-07-2009
Posts: 10

Re: Один вопрос

Подскажите пожалуйста, можно ли этот код спидометра (взял с этого форума) переделать под Вайс?

{$CLEO}
0000:

:NONAME_2
wait 250 
   Player.Defined($PLAYER_CHAR)
   jf @NONAME_2    
if and
   Actor.Driving($PLAYER_ACTOR)
84C8:   not actor $PLAYER_ACTOR driving_flying_vehicle 
84A7:   not actor $PLAYER_ACTOR driving_boat 
jf @NONAME_2   
wait 250
03C0: 10@ = actor $PLAYER_ACTOR car 
0390: load_txd_dictionary "SPEED" 
038F: load_texture "STRELK" as 15 // Load dictionary with 0390 first 
038F: load_texture "CIF" as 16 // Load dictionary with 0390 first 
038F: load_texture "CIFN" as 17 // Load dictionary with 0390 first 
038F: load_texture "STRELKN" as 18 // Load dictionary with 0390 first 
gosub @NONAME_122 
0391: release_txd_dictionary  
jump @NONAME_2 

:NONAME_122
wait 0 
   Actor.Driving($PLAYER_ACTOR)
jf @NONAME_2   
0AA1: return_if_false  
8495:   not car 10@ burning  
0AA1: return_if_false 
00BF: 12@ = current_time_hours, 13@ = current_time_minutes 
if and
  12@ >= 6 
  21 > 12@ 
jf @NONAME_194 
8@ = 16 
9@ = 15 
jump @NONAME_208 

:NONAME_194
8@ = 17 
9@ = 18 

:NONAME_208
02E3: 2@ = car 10@ speed 
2@ *= 4.0 
03F0: enable_text_draw 1 
03E3: set_texture_to_be_drawn_antialiased 1 
038D: draw_texture 8@ position 83.5 385.0 size 281.0 260.0 RGBA 255 255 255 255 
03E3: set_texture_to_be_drawn_antialiased 1 
074B: draw_texture 9@ position 83.5 385.0 scale 281.0 260.0 angle 2@ color_RGBA 255 255 255 255 
0AB8: get_vehicle 10@ current_gear_to 11@ 
0340: set_text_draw_RGBA 231 225 29 255 
045A: draw_text_1number 85.5 428.2 GXT 'BJ_0' number 11@  // ~1~
jump @NONAME_122

673028.gif

Offline

#3139 11-04-2011 08:41

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Sw[ee]t wrote:
1@ = 255 // первый цвет
2@ = 128 // второй цвет
3@ = 46 // третий...
4@ = 56 // четвёртый цвета
0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@
0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@

Это ты сам ставишь значения 1-го..... 4-го цветов, а мне надо, чтобы значения считывались из carcols.dat  в процессе выполнения кода скрипта.

Den_spb wrote:

Сначала нужно найти адрес начала структуры CModelCars для данной модели автомобиля.............

Денис, спасибо. Я опять, что-то не то делаю или там какая-то нестыковка. В общем первый цвет находится правильно, а второй почему-то считывается, как значение третьего (если 3-го нет, то 0).

{$CLEO .cs}
0000:
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if 
          0AB0: key_pressed 49 // 1
        then
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 5.0 0.0
            0395: clear_area 1 at 1@ 2@ 3@ radius 5.0
            Model.Load(#CAMPER)
            038B: load_requested_models
            Car.Create(0@,#CAMPER,1@, 2@, 3@)
            Model.Destroy(#CAMPER)
            0441: 1@ = car 0@ model
            1@ *= 4
            1@ += 0xA9B0C8
            0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 //CModel
            0087: 2@ = 1@ // (float)
            1@ += 0x2B0 // CModel + primaryColors
            1@ += 0 // где X - номер варианта цвета (0 - 15)
            0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0
            2@ += 0x2C0 // CModel + secondaryColors
            2@ += 0 // где X - номер варианта цвета (0 - 15)
            0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0
            //в carcols.dat первый вариант 1,31,1,0,
            0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ //ставим полученные значения
            0A11: set_car 0@ tertiary_color_to 1 quaternary_color_to 0 //ставим согласно carcols.dat 1,0,
            03F3: get_car 0@ primary_color_to 1@ secondary_color_to 2@ //проверим значения
            0A12: get_car 0@ tertiary_color_to 3@ quaternary_color_to 4@
            Car.RemoveReferences(0@)
            01E3: show_text_1number_styled GXT 'NUMBER' number 1@ time 500 style 5  // ~1~  значение совпадает с значением из carcols.dat
            01E3: show_text_1number_styled GXT 'NUMBER' number 2@ time 500 style 4  // ~1~  значение соответствует НЕ второму цвету, а третьему из carcols.dat
            wait 500
        end
    end
end

Что я не так сделал?

Offline

#3140 11-04-2011 13:50

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

В общем первый цвет находится правильно, а второй почему-то считывается, как значение третьего (если 3-го нет, то 0).

Возможно в описании структуры ошибка. Попробуй такой вариант:

000002B0 primaryColors ; 8 байт (8 вариантов цветов) 
000002B8 secondaryColors ; 8 байт (8 вариантов цветов)
000002C0 tertiaryColors ; 8 байт (8 вариантов цветов)
000002C8 quaternaryColors ; 8 байт (8 вариантов цветов)

Last edited by Den_spb (11-04-2011 13:53)

Offline

#3141 11-04-2011 14:44

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Немного почитал справку про лимиты в игре и хотел бы спросить как сделать маркер чтобы он появлялся когда игрок находится вблизи него и со значками также а то я решил некоторые возможности сделать не на клавиши а на маркер ну вообщем сделал пару таких штук и начала игра тупить не появляются значки на миссиях и подмиссиях
И еще как сделать проверку на нахождения игрока в радиусе к примеру 2м от указанной точки

Last edited by 444andrei444 (11-04-2011 18:08)

Offline

#3142 11-04-2011 20:24

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

444andrei444 wrote:

И еще как сделать проверку на нахождения игрока в радиусе к примеру 2м от указанной точки

Opcode Search Tool ещё никто не отменял...

00EC:   actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0
444andrei444 wrote:

как сделать маркер чтобы он появлялся когда игрок находится вблизи него и со значками также

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

:1
wait 0
if
00EC:   actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 10.0 10.0 
jf @1
marker.CreateIconAndSphere(1@, 15, 1812.369 -1929.922, 10.0)

:2
wait 0
if
00EC:   actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0
jf @3
// тут пишешь то, что хочешь сделать с игроком, если он войдёт в сферу (маркер) 
marker.Disable(1@)
while 00EC:   actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0
wait 0
end
jump @1

:3
wait 0
if
80EC:  not actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 10.0 10.0 
jf @3
marker.Disable(1@)
jump @1

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


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3143 12-04-2011 07:16

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Den_spb wrote:

Возможно в описании структуры ошибка. Попробуй такой вариант:

000002B0 primaryColors ; 8 байт (8 вариантов цветов) 
000002B8 secondaryColors ; 8 байт (8 вариантов цветов)
000002C0 tertiaryColors ; 8 байт (8 вариантов цветов)
000002C8 quaternaryColors ; 8 байт (8 вариантов цветов)

Спасибо, Денис. Теперь всё совпадает.:clap:

Offline

#3144 15-04-2011 06:29

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Подскажите пожалуйста ответ на такой вопрос:
Дело в следующем: когда я записываю значения 0-9 в буффер и потом считываю их оттуда и вывожу на экран, то значения такие же.

{$CLEO .cs}
0000:
var 
    0@:  Integer  
    10@: Integer            
end
const
    i = 10@
end

while true
    wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if
          0AB0: key_pressed 49 // 1
        then
            for i = 0 to 9
            0AC6: 0@ = label @HEX_BUFFER offset
            0@ += i 
            0A8C: write_memory 0@ size 1 value i virtual_protect 0
            0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
            03F0: enable_text_draw 1
            045A: draw_text_1number 5.0 20.0 GXT 'NUMBER' number 1@
            wait 25
            end
        end
    end
end 

:HEX_BUFFER
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
end

А если изначально записать в буффер эти же значения 0-9, то при чтении и выводе их на экран выводятся 48-57. Т.е. номера клавиш соответствующие 0-9.

{$CLEO .cs}
0000:
var 
    0@:  Integer  
    10@: Integer            
end
const
    i = 10@
end

while true
    wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if
          0AB0: key_pressed 49 // 1
        then
            for i = 0 to 9
            0AC6: 0@ = label @HEX_BUFFER offset
            0@ += i 
            0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
            03F0: enable_text_draw 1
            045A: draw_text_1number 55.0 20.0 GXT 'NUMBER' number 1@
            wait 25
            end
        end
    end
end 

:HEX_BUFFER
hex
 30 31 32 33 34 35 36 37 38 39 00 00 00 00 00 00  
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
end

Почему так? sad

Offline

#3145 15-04-2011 07:14

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@kenking - Так а почему ты записываешь 30-39?
http://home2.paulschou.net/tools/xlate/
Hex: 30 =  DEC / CHAR: 48
Hex: 39 =  DEC / CHAR: 57

Offline

#3146 15-04-2011 07:58

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

В блокноте Notepad++ есть просмотр в HEX виде. Оттуда и записал значения. Значит неправильно там пересчитывает. Странно, с буквами всё правильно получалось.
Спасибо.

Offline

#3147 15-04-2011 08:03

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Вот решил спросить еще несколько вопросов вообше я неумею пользоваться opcode search tools так как плохо знаю инглиш
можно ли записать ближайшего пешехода в переменую
и как его настроить против игроеа
продолжение следует
заранен благодарен
еще вопрос в скрипте выше текст кодируется через hex зачем это надо

Last edited by 444andrei444 (15-04-2011 11:04)

Offline

#3148 15-04-2011 13:41

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

444andrei444 wrote:

можно ли записать ближайшего пешехода в переменую

0AB5

и как его настроить против игроеа

05E2

еще вопрос в скрипте выше текст кодируется через hex зачем это надо

Это буфер для хранения данных.

Last edited by Den_spb (15-04-2011 13:54)

Offline

#3149 15-04-2011 13:43

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

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

Offline

#3150 15-04-2011 13:51

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Надо завести какую-нибудь глобальную переменную, значение которой будет увеличиваться на 1 с каждой пройденной миссией. Перед запуском очередной миссии надо проверять, достигло ли значение этой переменной нужного значения.

Offline

Board footer

Powered by FluxBB