Вторник, 23.04.2024, 20:18
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов 2
Вопросы по созданию КЛЕО-скриптов 2
EmilioDurhamCopДата: Четверг, 30.08.2012, 17:16 | Сообщение # 226
Группа: Пользователи
Сообщений: 33
Статус: Offline
Code
Actor.WeaponAccuracy(3@) = 50
Actor.WeaponAccuracy(4@) = 50
Actor.WeaponAccuracy(5@) = 50
Actor.WeaponAccuracy(6@) = 50

Скажите, вот эти опкоды устанавливают процентное содержание аима у актёра? Если да, то какой процент попадания высокий?


Сообщение отредактировал EmilioDurhamCop - Четверг, 30.08.2012, 17:17
 
VitalДата: Четверг, 30.08.2012, 18:10 | Сообщение # 227
Группа: Проверенные
Сообщений: 206
Статус: Offline
EmilioDurhamCop, это точность в процентах. 100 - наивысшая, снайперская точность, 50 - средняя (примерно на уровне товарищей по банде). Если хочешь игру потяжелее, ставь примерно 65-75, если выше, то, возможно, будет вообще невозможно увернуться от выстрелов.

SCRIPTER

Сообщение отредактировал Vital - Четверг, 30.08.2012, 18:35
 
EmilioDurhamCopДата: Четверг, 30.08.2012, 19:11 | Сообщение # 228
Группа: Пользователи
Сообщений: 33
Статус: Offline
Vital, спасибо тебе большое. Я точно такое же предполагал, только перестраховался этим вопросом.
 
VitalДата: Пятница, 31.08.2012, 16:22 | Сообщение # 229
Группа: Проверенные
Сообщений: 206
Статус: Offline
End_thread может остановить работу потока в любом его месте? Т.е. можно ли это использовать в проверках, находящихся в потоке?

SCRIPTER
 
Den_spbДата: Пятница, 31.08.2012, 18:11 | Сообщение # 230
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
При выполнении end_thread поток всегда завершается. Насчёт проверок не понял - приведи пример кода.
 
VitalДата: Пятница, 31.08.2012, 21:12 | Сообщение # 231
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, я имел в виду - вставить end_thread в проверку. Т.е. вот так:
Code

if
условие
then
...
else
end_thread
end


Я попробовал так со скриптом, который повторялся (шёл с конца на начало, как цикл), вылетала игра. Но если сделать так:
Code

if
...
then
...
else
jump @Finish
end
...
:Finish
end_thread

То вылетов нет.


SCRIPTER
 
Den_spbДата: Пятница, 31.08.2012, 21:45 | Сообщение # 232
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Vital, это не "проверка", а конструкция. При компиляции конструкция
Code
if
<проверка>
then
<команды 1>
else
<команды 2>
end
заменяется на:
Code
if
<проверка>
jf @Metka
<команды 1>
jump @Metka_1
:Metka
<команды 2>
:Metka_1

Подозреваю, что вылет произошёл из-за неожиданного обрыва скрипта. Любой скрипт должен или выполняться бесконечно, или завершаться командой завершения потока. А у тебя ситуация следующая: во втором коде команда завершения потока выполнится в любом случае, а в первом коде - только если условие ложно.
 
BoPoHДата: Суббота, 01.09.2012, 16:05 | Сообщение # 233
Группа: Проверенные
Сообщений: 53
Статус: Offline
Может быть дело в том, что в CLEO нужно использовать опкод 0A93, вместо end_thread?

First-Person mode 85% done
Добро всегда побеждает зло. Кто победил, тот и добрый!

 
VitalДата: Суббота, 01.09.2012, 16:28 | Сообщение # 234
Группа: Проверенные
Сообщений: 206
Статус: Offline
BoPoH, это не cleo, а .scm. Поэтому и странность.
Den_spb, во втором случае конец потока идёт, когда условие ложно. (после else стоит jump @Finish, а сам скрипт повторяется постоянно, т.е. так:
Code

:1
...
if
...
then
...
else
jump @2
end
jump @1

:2
end_thread
)


SCRIPTER
 
Den_spbДата: Суббота, 01.09.2012, 16:51 | Сообщение # 235
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Могу точно сказать, в чём причина проблемы, если предоставишь полный код (с которым вылетает игра).
 
VitalДата: Суббота, 01.09.2012, 21:27 | Сообщение # 236
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, я вылетающий код изменил, вот изменённый вариант (в нём в виде комментария есть пометка)
Code
:Text
wait 0
if
player.Defined(0)
jf @Text
if and
876F:   not text_priority_displayed
88FE:   not text_box_displayed
$DEAD == 0
$OFF == 0
then
      var       
      0@ : Array 10 of String       
      end   
      30@ = 0       
      0@[30@] = 'TX1'   
      30@ += 1       
      0@[30@] = 'TX2'   
      30@ += 1       
      0@[30@] = 'TX3'   
      0@ += 1       
      0@[30@] = 'TX4'   
      30@ += 1       
      0@[30@] = 'TX5'   
      30@ += 1       
      0@[30@] = 'TX6'   
      30@ += 1       
      0@[30@] = 'TX7'   
      30@ += 1       
      0@[30@] = 'TX8'   
      30@ += 1       
      0@[30@] = 'TX9'   
      30@ += 1       
      0@[30@] = 'TX10'   
      0209: $R1 = random_int_in_ranges 0 10
      00BC: show_text_highpriority GXT 0@[$R1] time 7000 flag 1
      0209: $RT = random_int_in_ranges 1 4   
      $RT *= 60000
      wait $RT
      jump @Text
else
      if or
      $DEAD == 1
      $OFF == 1
      then
      jump @Finish2 //здесь было end_thread вместо jump
      end
end
jump @Text
end_thread


Метка Finish2
:Finish2
end_thread

Вот и всё.


SCRIPTER

Сообщение отредактировал Vital - Суббота, 01.09.2012, 23:22
 
Den_spbДата: Воскресенье, 02.09.2012, 20:15 | Сообщение # 237
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Если правильно понял, первоначальный вариант был таким:
Code
:Text  
  wait 0  
  if  
  player.Defined(0)  
  jf @Text  
  if and  
  876F:   not text_priority_displayed  
  88FE:   not text_box_displayed  
  $DEAD == 0  
  $OFF == 0  
  then  
       var        
       0@ : Array 10 of String        
       end    
       30@ = 0        
       0@[30@] = 'TX1'    
       30@ += 1        
       0@[30@] = 'TX2'    
       30@ += 1        
       0@[30@] = 'TX3'    
       0@ += 1        
       0@[30@] = 'TX4'    
       30@ += 1        
       0@[30@] = 'TX5'    
       30@ += 1        
       0@[30@] = 'TX6'    
       30@ += 1        
       0@[30@] = 'TX7'    
       30@ += 1        
       0@[30@] = 'TX8'    
       30@ += 1        
       0@[30@] = 'TX9'    
       30@ += 1        
       0@[30@] = 'TX10'    
       0209: $R1 = random_int_in_ranges 0 10  
       00BC: show_text_highpriority GXT 0@[$R1] time 7000 flag 1  
       0209: $RT = random_int_in_ranges 1 4    
       $RT *= 60000  
       wait $RT  
       jump @Text  
  else  
       if or  
       $DEAD == 1  
       $OFF == 1  
       then  
        end_thread // jump @Finish2
       end  
  end  
  jump @Text  
  end_thread
Причин для вылета я здесь не вижу, возможно ошибка была вызвана другим скриптом (можно посмотреть scm-log).
П.С. Здесь видимо должно быть 30@, а не 0@:
Quote
0@[30@] = 'TX3'
0@ += 1
 
EmilioDurhamCopДата: Вторник, 04.09.2012, 15:12 | Сообщение # 238
Группа: Пользователи
Сообщений: 33
Статус: Offline
Наткнулся на скрипт на тему взлома машин, помимо этого скрипта, есть бонусные темки. Из них при жестком приземлении машина взрывается (чуть ли не обделался), за ментовские авто можно получить 2 звезды (у меня стоит скрипт погони за машинами) и только что поймал минус, это когда зайдешь в кафешку захавать и машины не видать. Такое я поймал 3 раза. С чего начать или прописать, чтобы без проблем можно было взломать все машины?

Сообщение отредактировал EmilioDurhamCop - Вторник, 04.09.2012, 15:13
 
Den_spbДата: Вторник, 04.09.2012, 15:30 | Сообщение # 239
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (EmilioDurhamCop)
это когда зайдешь в кафешку захавать и машины не видать.

Так данный скрипт тут не причём. Игра может удалять машины и актёров, если они какое-то время находятся вне поля видимости игрока - это относится к машинам и актёрам, созданным игрой. Если машина (или актёр) создана скриптом, то она имеет "уникальный" статус, благодаря которому игра сама удалить её не сможет. Отключить уникальный статус машины можно с помощью команды
Code
01C3: remove_references_to_car $IMPORT_CAR // Like turning a car into any random car

Включить уникальный статус машины можно так:
Code
0A97: 2@ = car 0@ struct
0AA6: call_method 0x6D5D70 struct 2@ num_params 1 pop 0 2    
 
EmilioDurhamCopДата: Вторник, 04.09.2012, 15:42 | Сообщение # 240
Группа: Пользователи
Сообщений: 33
Статус: Offline
Не, а как взломать любую машину? Вот что мне надо.
 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов 2
Поиск: