Четверг, 28.03.2024, 14:20
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Вопросы по созданию КЛЕО-скриптов
CripZДата: Среда, 28.04.2010, 13:56 | Сообщение # 166
Группа: Проверенные
Сообщений: 23
Статус: Offline
а вот вопрос вот можно установить цвет маркера
Code
Marker.SetColor($CAR1, 1)

а где взять номера цветов?
по машинным номерам не подходит
 
Den_spbДата: Среда, 28.04.2010, 20:36 | Сообщение # 167
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Цветов всего несколько (их можно определить тестированием). 0 - красный, 1 - зелёный, 2 - белый, 3 - бледно-жёлтый (насколько помню). Ещё можно сделать маркер синим:
Code
07E0: set_marker 0@ type_to 1  
 
CripZДата: Четверг, 29.04.2010, 22:59 | Сообщение # 168
Группа: Проверенные
Сообщений: 23
Статус: Offline
Den_spb, ты прости что задёргал тебя,Но подскажи плиз,опять проблемы с концовкой скрипта
нужно что после смерти всех актёров миссия выполнялась,а при смерти Карла проваливалась,но у меня где то ошибки вот код:
Code
:NONAME_366  
wait 0  
if and  
    Actor.Dead($b1)
Actor.Dead($b2)
Actor.Dead($b3)
Actor.Dead($b4)
Actor.Dead($b5)
Actor.Dead($b6)
Actor.Dead($b7)
jf @NONAME_366  
  Actor.Dead($b8)
Actor.Dead($b9)
Actor.Dead($b10)
Actor.Dead($b11)
Actor.Dead($b12)
Actor.Dead($b13)
jf @NONAME_367  
01E3: show_text_1number_styled GXT 'mis4_u' number 2000 time 1000 style 1
Player.Money($PLAYER_CHAR) += 200000
jump @Metka  
:NONAME_367  
wait 0  
if  
   Actor.Dead($PLAYER_ACTOR)
jf @NONAME_366  
01E3: show_text_1number_styled GXT 'mis4_d' number 5000 time 1000 style 1
:Metka  
004E:
 
Den_spbДата: Четверг, 29.04.2010, 23:43 | Сообщение # 169
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Во-первых, если это КЛЕО, то глобальные переменные необходимо заменить локальными.
Не забывай писать if and или if or если условий несколько.
Во-вторых, как я говорил, составление схемы может облегчить написание скрипта (некоторые "освистывают" этот способ, однако он мне помог когда я осваивал кодинг). В данном случае схема будет выглядеть так:

Код пишем следующим образом (при записи метками):
Code
:NONAME_366      
wait 0      
if and      
        Actor.Dead($b1)     
        Actor.Dead($b2)     
        Actor.Dead($b3)     
        Actor.Dead($b4)     
        Actor.Dead( $b5)     
        A ctor.D ead($b6)     
        Actor.Dead($b7)     
jf @Metka_1
if and      
        Actor.Dead($b8)     
        Actor.Dead($b9)     
        Actor.Dead($b10)     
        Actor.Dead($b11)     
        Actor.Dea d($b12)     
        A cto r.Dead($b13)     
jf @Metka_1
01E3: show_text_1number_styled GXT 'mis4_u' number 2000 time 1000 style 1     
Player.Money($PLAYER_CHAR) += 200000     
jump @Metka_2      
:Metka_1     
       Actor.Dead($PLAYER_ACTOR)     
jf @NONAME_366      
01E3: show_text_1number_styled GXT 'mis4_d' number 5000 time 1000 style 1     
:Metka_2      
004E:
 
Den_spbДата: Четверг, 29.04.2010, 23:45 | Сообщение # 170
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
При записи высокоуровневыми конструкциями:
Code
while true
     wait 0
     if and
         Actor.Dead($b1)  
         Actor.Dead($b2)  
         Actor.Dead($b3)  
         Actor.Dead($b4)  
         Actor.Dead($b5)  
         Actor.Dead($b6)  
         Actor.Dead($b7)  
     then
         if and
             Actor.Dead($b8)  
             Actor.Dead($b9)  
             Actor.Dead($b10)  
             Actor.Dead($b11)  
             Actor.Dead($b12)  
             Actor.Dead($b13)
         then
             01E3: show_text_1number_styled GXT 'mis4_u' number 2000 time 1000 style 1  
             Player.Money($PLAYER_CHAR) += 200000    
             break           
         end
     end
     if
         Actor.Dead($PLAYER_ACTOR)
     then
         01E3: show_text_1number_styled GXT 'mis4_d' number 5000 time 1000 style 1
         break  
     end         
end
004e:
 
DK22PacДата: Пятница, 30.04.2010, 00:51 | Сообщение # 171
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Quote
Во-вторых, как я говорил, составление схемы может облегчить написание скрипта (некоторые "освистывают" этот способ, однако он мне помог когда я осваивал кодинг)

Эхх мы такие на информатике делали а потом писали на Excel и VBA
 
CripZДата: Пятница, 30.04.2010, 08:44 | Сообщение # 172
Группа: Проверенные
Сообщений: 23
Статус: Offline
Den_spb, спасибо!,буду разбираться со всеми этими делами=)
 
klm88Дата: Среда, 19.05.2010, 12:55 | Сообщение # 173
Группа: Пользователи
Сообщений: 21
Статус: Offline
Den_spb, что надо подправить чтоб поезд разгонялся раза в 3 быстрее (или без ускорения)?


как правильно расписать if or -ы для 12 и более остановок?


Сообщение отредактировал klm88 - Среда, 19.05.2010, 22:21
 
Den_spbДата: Среда, 19.05.2010, 22:23 | Сообщение # 174
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (klm88)
Den_spb, что надо подправить чтоб поезд разгонялся раза в 3 быстрее

Текущий вариант самый удобный, т.к. разгон осуществляется одной командой. Попробуй увеличить ускорение правкой handling.

Quote
(или без ускорения)?

Если нужен мгновенный разгон, то нужно просто присвоить поезду мгновенную скорость перед тем, как его разгонять:
Code
06DC: set_train 36@ acc 30.0   // сюда добавляем команду присвоения мгновенной скорости
06DD: set_train 36@ speed 30.0

Quote (klm88)
как правильно расписать if or -ы для 12 и более остановок?
В СБ-справке (раздел Кодинг-Условия) это подробно описано. После условий необходимо писать jf, jump или then (если используются конструкции if then end). Если не можешь написать условия конструкциями if..then..end, то пиши метками - будет проще.
 
klm88Дата: Четверг, 20.05.2010, 01:42 | Сообщение # 175
Группа: Пользователи
Сообщений: 21
Статус: Offline
А какой номер у клавишы " / " на нумпаде?
А откуда отсчитывается радиус до актёра у поездов: от локмотива или от любого вагона?


Сообщение отредактировал klm88 - Четверг, 20.05.2010, 01:50
 
Den_spbДата: Четверг, 20.05.2010, 02:25 | Сообщение # 176
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (klm88)
А какой номер у клавишы " / " на нумпаде?

111 (см. СБ-справку раздел КЛЕО 3 - Список номеров кнопок для 0AB0, столбик Decimal)

Quote (klm88)
А откуда отсчитывается радиус до актёра у поездов: от локмотива или от любого вагона?

При создании поезда командой:
Code
06D8: 0@ = create_train_at 2285.152 -1257.5 23.0 type 13 direction 1
в 0@ записывается хэндл локомотива. Поэтому, например, опкод:
Code
0202:   actor $PLAYER_ACTOR near_car 0@ radius 45.0 45.0 flag 0
будет проверять положение игрока относительно локомотива.
 
DK22PacДата: Суббота, 22.05.2010, 18:55 | Сообщение # 177
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Не мог бы ты обьяснит всё в подробностях... Об опрерациях над дробными и целыми числами...
У меня часто СБ выдает ошибку "Типы переменных несовместимы" когда я пишу 1@ = 2@
Вот например я хотел сделать код, в котором размер текстуры зависит от времени. ( от 0 до 4 сек)

//Начальный размер текстуры - 300, конечная - 512, отсюда число 212.
016A: fade 0 time 500
wait 1000
32@ = 0

:HELI
wait 0
if
not 32@ > 4000
then
1@ = 32@
2@ = 1@ //это чтобы потом разделить
2@ /= 212
1@ /= 2@
1@ += 300
1@ /= 2  // вот так я вывел нужный размер
0097: make 1@ absolute_float
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1
038D: draw_texture 40 position 320.0 224.0 size 1@ 1@ RGBA 255 255 255 255
jump @HELI
else
jump @RELEASE
end

:RELEASE
03F0: enable_text_draw 0
wait 1000
fade 1 time 500
0A93: end_custom_thread

Как это правильно записать?

Сообщение отредактировал DK22Pac - Суббота, 22.05.2010, 18:58
 
ivanДата: Суббота, 22.05.2010, 20:33 | Сообщение # 178
Группа: Проверенные
Сообщений: 23
Статус: Offline
ПРИВЕТ ВСЕМ.У МЕНЯ ЕСТЬ ДРУГОЙ ВОПРОС НЕ ПО ТЕМЕ.КАК УБРАТЬ ВСЕ ПАЛЬМЫ ИЗ ИГРЫ
 
Den_spbДата: Суббота, 22.05.2010, 22:01 | Сообщение # 179
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Не мог бы ты обьяснит всё в подробностях... Об опрерациях над дробными и целыми числами...
Во-первых, не имеет смысла, например, сложение дробного и целого числа. В подобных ситуациях нужно пользоваться опкодами 0093 (перевод из целого в дробное, например 3 -> 3.0) и
0092 (перевод из дробного в целое, например 3.2 -> 3).
То есть сделать надо так:
Code
0093: 3@ = integer 1@ to_float   
03F0: enable_text_draw 1  
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 40 position 320.0 224.0 size 3@ 3@ RGBA 255 255 255 255

Во-вторых, опкоды арифметических операций, сравнения и присваивания существуют обычно в двух вариантах - для целых и дробных чисел. Если один операнд является постоянной, то компилятор, в соответствии с её типом автоматически выберет нужный опкод при компиляции. Например,

Code
0@ += 3000
будет автоматически заменён на опкод для целых чисел
Code
000A: 3@ += 3000  
, а
Code
6@ += 0.1
будет заменён на опкод для дробных чисел
Code
000B: 6@ += 0.1  

В тех случаях, когда оба операнда являются переменными (например, 0@ += 1@ , 0@ = 1@ и т.д.), необходимо либо самостоятельно выбрать нужный опкод (005A: 3@ += 1@ // (int) - сложение переменных с целыми числами, 005B: 4@ += 17@ // (float) - сложение переменных с дробными числами), либо предварительно (например, в начале скрипта) указать типы переменных в конструкции var..end (см. справку Кодинг - Переменные), например:
Code
var
0@ : Integer
1@ : Float
end

Quote (ivan)
ПРИВЕТ ВСЕМ.У МЕНЯ ЕСТЬ ДРУГОЙ ВОПРОС НЕ ПО ТЕМЕ.КАК УБРАТЬ ВСЕ ПАЛЬМЫ ИЗ ИГРЫ
Map Editor-ом
 
DK22PacДата: Суббота, 22.05.2010, 23:15 | Сообщение # 180
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Я ещё хотел спросить, если я пишу
2@ /= 212
И получается дробное число, то оно будет переведено в целое или переменная поменяет тип на дробное?
И ещё - можно ли делить целое на дробное или наоборот?

Всё, спасибо, Ден, теперь я всё понял!
Вот так работает прекрасно!
(Но вот что я заметил - если включить фейд, то текстура не будет отображаться, т.е. будет отображаться на заднем плане, так скажем.)

Code

:HELI
wait 0
if    
not 32@ > 4000    
then    
0093: 1@ = integer 32@ to_float      
0087: 2@ = 1@
2@ /= 212.0    
0087: 1@ /= 2@    
1@ += 300.0    
1@ /= 2.0
03F0: enable_text_draw 1    
03E3: set_texture_to_be_drawn_antialiased 1    
038D: draw_texture 40 position 320.0 224.0 size 1@ 1@ RGBA 255 255 255 255    
jump @HELI
else
jump @RELEASE
end
jump @HELI

Я сделал лого "Рокстар", которое увеличивается (так наверное по-русски), наподобие заставки в гта4) Я очень рад что получилось) Также с помощью 32@ можно манипулировать прозрачностью, пригодиться, если надо, чтобы текстура плавно появлялась либо пропадала.
Вот, например, мой код, чтобы после 3 секунд текстуры испарялись
Code

if  
not  32@ > 3000  
then
6@ = 255
7@ = 80  
jump @CREATING
end  
if and
32@ >= 3000
not 32@ > 4000
then
jump @GET_NEW_TRANSPARENCE
end
jump @GLOBAL_CHECK

:GET_NEW_TRANSPARENCE
0093: 5@ = integer 32@ to_float  
5@ += -3000.0   
5@ /= 12.5  
5@ *= -1.0
5@ += 80.0
0092: 6@ = float 5@ to_integer  
0085: 7@ = 6@  

:CREATING
03F0: enable_text_draw 1  
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 0@ position 320.0 40.0 size 45.0 45.0 RGBA 255 255 255 6@
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 1@ position 254.0 40.0 size 45.0 45.0 RGBA 255 255 255 7@
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 2@ position 386.0 40.0 size 45.0 45.0 RGBA 255 255 255 7@
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 3@ position 179.0 40.0 size 45.0 45.0 RGBA 255 255 255 7@
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1  
038D: draw_texture 4@ position 461.0 40.0 size 45.0 45.0 RGBA 255 255 255 7@
jump @GLOBAL_CHECK


Сообщение отредактировал DK22Pac - Воскресенье, 23.05.2010, 11:53
 
Форум » Игры серии ГТА » Скриптинг » Вопросы по созданию КЛЕО-скриптов (Вопросы по опкодам, кодингу и др.)
Поиск: