Суббота, 20.04.2024, 06:56
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Вопросы по созданию КЛЕО-скриптов
ILYALIONДата: Понедельник, 07.11.2011, 17:03 | Сообщение # 841
Группа: Проверенные
Сообщений: 325
Статус: Offline
Den_spb, к сожалению, и этот скрипт не работает, что делать?

Сообщение отредактировал ILYALION - Понедельник, 07.11.2011, 17:31
 
Den_spbДата: Понедельник, 07.11.2011, 17:56 | Сообщение # 842
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Если скрипт не работает, то надо искать причину и исправлять её smile
В данном случае не работает проверка 8431.
Действующий вариант:
Code
{$CLEO}  
wait 0  
while true  
     wait 0  
     if  
         0AE2: 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 0 pass_wrecked 1 //IF and SET  
     then  
         repeat  
             0441: 1@ = car 0@ model       
             0AA7: call_function 0x4C5AA0 num_params 1 pop 1 1@ 1@ // isModelCar
             046C: 2@ = car 0@ driver   
             if and  
                 1@ == True
                 2@ > 0       
             then  
                 020A: set_car 0@ door_status_to 2   
             end  
         until 8AE2: not 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 1 pass_wrecked 1 //IF and SE  
     end           
end
 
ILYALIONДата: Понедельник, 07.11.2011, 19:09 | Сообщение # 843
Группа: Проверенные
Сообщений: 325
Статус: Offline
Den_spb, большое спасибо, но есть ещё одна просьба: таким образом попасть в машину не получится. Я подумал: что если в закрытой машине ещё и прописывать какое-либо значение в неиспользуемом или малоиспользуемом смещении? И при повторном цикле проверять у случайно пойманной машины это смещение? Если значение совпадает, то начинать поиск заново. Я совершенно не умею работать с памятью, поэтому прошу Вас помочь мне.
 
Den_spbДата: Понедельник, 07.11.2011, 19:30 | Сообщение # 844
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Если в машине сидит водитель, то блокировка включена. Если водителя нет, то блокировка отключена:
Code
{$CLEO}  
wait 0  
while true  
     wait 0  
     if  
         0AE2: 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 0 pass_wrecked 1 //IF and SET  
     then  
         repeat  
             0441: 1@ = car 0@ model       
             0AA7: call_function 0x4C5AA0 num_params 1 pop 1 1@ 1@ // isModelCar   
             if  
                 1@ == False
             then
                 continue
             end
             046C: 2@ = car 0@ driver
             if
                 2@ > 0       
             then  
                 020A: set_car 0@ door_status_to 2
             else
                 020A: set_car 0@ door_status_to 0   
             end  
         until 8AE2: not 0@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 10000.0 find_next 1 pass_wrecked 1 //IF and SE  
     end           
end
 
ILYALIONДата: Понедельник, 07.11.2011, 20:05 | Сообщение # 845
Группа: Проверенные
Сообщений: 325
Статус: Offline
Den_spb, этот способ для меня не подходит, нельзя ли через память?
 
Den_spbДата: Понедельник, 07.11.2011, 20:09 | Сообщение # 846
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Сформулируй чётко вопрос, я не понял, что тебе нужно.
 
ILYALIONДата: Понедельник, 07.11.2011, 20:18 | Сообщение # 847
Группа: Проверенные
Сообщений: 325
Статус: Offline
Для машины, которую нашёл генератор, прописывать в памяти определённое значение в смещении, которое мало используется (как макс. здоровье у педов), потом при повторном поиске проверять у найденной машины это значение, если совпадает-искать снова, если не совпадает-проводить нужные действия над машиной

Добавлено (07.11.2011, 20:18)
---------------------------------------------
Ну или есть ещё вариант: устанавливать машине цену, а потом проверять её на найденных машинах. Вы знаете опкоды для присваивания цены машине и для проверки цены машины?

 
Den_spbДата: Понедельник, 07.11.2011, 20:24 | Сообщение # 848
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
У машин максимального здоровья вроде нет, а других надёжных вариантов я не знаю.

Quote (ILYALION)
Вы знаете опкоды для присваивания цены машине и для проверки цены машины?
В разделе Транспорт СБ справки вроде были.
 
ILYALIONДата: Понедельник, 07.11.2011, 20:29 | Сообщение # 849
Группа: Проверенные
Сообщений: 325
Статус: Offline
Quote (Den_spb)
В разделе Транспорт СБ справки вроде были.
Я искал-нашёл только
09E1: get_vehicle_model $Model monetary_value $Money - выбирает машину с опред. моделью и определённой ценой.


Сообщение отредактировал ILYALION - Понедельник, 07.11.2011, 20:32
 
Den_spbДата: Понедельник, 07.11.2011, 20:32 | Сообщение # 850
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Нашёл в поиске опкодов. Цена относится к модели, а не к конкретному транспортному средству.
Code
09E1: get_car_model $IMPORT_CARS_MODEL(4@,6i) price_to $IMPORT_CAR_PRICE
 
ILYALIONДата: Вторник, 08.11.2011, 05:22 | Сообщение # 851
Группа: Проверенные
Сообщений: 325
Статус: Offline
Можно ли проверить только часть числа? Например
Code
if
     0@ == *.**4
then
Ни или как то по другому
 
Den_spbДата: Вторник, 08.11.2011, 13:42 | Сообщение # 852
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Шестнадцатиричные целые числа проверяются просто - тестированием соответствующих битов.
Десятичные целые числа проверять сложнее. Пример: проверим, равен ли младший разряд трёхзначного десятичного числа четырём.
Code
0@ = XXX // 000 - 999
0085: 1@ = 0@ // (int)      
if
      0@ > 99
then
      1@ /= 100
      1@ *= 100
      0A8F: 1@ = 0@ - 1@
end
0085: 2@ = 1@ // (int)
if
      0@ > 9
then
      2@ /= 10
      2@ *= 10
      0A8F: 2@ = 1@ - 2@
end
if
      2@ == 4
then
      ...
end
 
ILYALIONДата: Вторник, 08.11.2011, 18:13 | Сообщение # 853
Группа: Проверенные
Сообщений: 325
Статус: Offline
А можно ли проверять десятетысячный разрад в десятичной дроби?
 
KaZySДата: Вторник, 08.11.2011, 20:05 | Сообщение # 854
Группа: Пользователи
Сообщений: 8
Статус: Offline
не пойму, почему не работает скрипт...(мне от него надо, чтобы был ГМ на оружие) он же действует как полный...
Code
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP   

$PLAYER.DEFINED($PLAYER_CHAR)_53
wait 500   
if   
0AB0:   key_pressed 71   
jf @$PLAYER.DEFINED($PLAYER_CHAR)_53   
jump @$PLAYER.DEFINED($PLAYER_CHAR)_80   

$PLAYER.DEFINED($PLAYER_CHAR)_80
wait 100   
if   
0AB0:   key_pressed 77   
jf @$PLAYER.DEFINED($PLAYER_CHAR)_53   
00BC: show_text_highpriority GXT 'CHEAT1' time 2000 flag 1  // Cheat activated
018C: play_sound 1085 at 0.0 0.0 0.0   
jump @$PLAYER.DEFINED($PLAYER_CHAR)_142   

$PLAYER.DEFINED($PLAYER_CHAR)_142
wait 0   
0@ = 362035   
&0(0@,1i) = -16711696   
if   
     not Actor.Driving($PLAYER_ACTOR)
jf @$PLAYER.DEFINED($PLAYER_CHAR)_263   
Actor.SetImmunities($PLAYER_ACTOR, 0, 1, 0, 0, 0)
0A8C: write_memory 9867630 size 1 value 1 virtual_protect 1   
if and
0818:   actor $PLAYER_ACTOR in_air   
02D8:   actor $PLAYER_ACTOR current_weapon == 46   
gosub @$PLAYER.DEFINED($PLAYER_CHAR)_436   
wait 10   
if   
0AB0:   key_pressed 35   
jf @$PLAYER.DEFINED($PLAYER_CHAR)_142   
jump @$PLAYER.DEFINED($PLAYER_CHAR)_337   

$PLAYER.DEFINED($PLAYER_CHAR)_263
wait 0   
03C0: 29@ = actor $PLAYER_ACTOR car   
if   
8185:   not car 29@ health >= 0   
jf @$PLAYER.DEFINED($PLAYER_CHAR)_142   
Actor.StorePos($PLAYER_ACTOR, 12@, 13@, 24@)
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 12@ 13@ 24@   
wait 1   
Car.RemoveReferences(29@)
jump @$PLAYER.DEFINED($PLAYER_CHAR)_142   

$PLAYER.DEFINED($PLAYER_CHAR)_337
wait 0   
0@ = 362035   
&0(0@,1i) = -14870092   
Actor.SetImmunities($PLAYER_ACTOR, 0, 0, 0, 0, 0)
0A8C: write_memory 9867630 size 0 value 0 virtual_protect 0   
00BC: show_text_highpriority GXT 'CHEAT8' time 2000 flag 1  // Cheat deactivated
018C: play_sound 1084 at 0.0 0.0 0.0   
jump @$PLAYER.DEFINED($PLAYER_CHAR)_53   

$PLAYER.DEFINED($PLAYER_CHAR)_436
wait 0   
0555: remove_weapon 46 from_actor $PLAYER_ACTOR   
return   


Сообщение отредактировал KaZyS - Вторник, 08.11.2011, 20:06
 
Den_spbДата: Вторник, 08.11.2011, 20:20 | Сообщение # 855
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (ILYALION)
А можно ли проверять десятетысячный разрад в десятичной дроби?
Можно. Один из способов - умножить на 10.0 (100.0, 1000.0 ... ), затем перевести в целое и воспользоваться методом для целых чисел.

Quote (KaZyS)
не пойму, почему не работает скрипт...(мне от него надо, чтобы был ГМ на оружие) он же действует как полный...

Ничего не понял. Какой полный? Что за ГМ?
 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Поиск: