[CLEO] Создание меню ( Подробный разбор ) - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Alowir, Sanoxxx  
[CLEO] Создание меню ( Подробный разбор )
Mayers Дата: Среда, 09.01.2013, 11:59 | Сообщение # 1
Новичок
Сообщений: 19
Статус: Offline
Всем доброго времени суток.
Много кто интересуется как создать меню в CLEO, но новички часто не понимают того что на самом деле легко. Если вы действительно хотите научится создавать нормальное меню, то я вам советую писать все в Sanny Builder, а не копировать простой код!
Ну что начнем.

Открываем Sanny Builder
И далее пишем:
Код

{$VERSION 3.1.0027}     
{$CLEO .cs} // Создаем CLEO в формате .cs

//-------------MAIN---------------
0000: NOP // Нулевой НОП, во избежания крашей.
thread 'Project' // Название всех дальнейших начинающих строк.


Создание строк меню:
Код
:Create_Menu // Начинаем поток.
wait 0 // Ждем 0 мс.
if and   // Если. Кому не понятно что, смотрим урок от Колеса про условия.
Actor.Defined($PLAYER_ACTOR) // Проверка на то создан ли персонаж.
0ab0: 121 // Активация меню на кнопку F11, коды клавиш узнаем в программе, ниже её выложу.     
else_jump @Create_Menu // Если 2 условия не выполнены, возвращаемся на поток @Create_Menu.      
01B4: toggle_player $PLAYER_CHAR can_move 0  // Данный опкод убирает управление персонажем.  can_move 0 если 0 это убираем управление, если 1 восстанавливаем управление.
0581: enable_radar 0 // Убираем радар. Так же и тут если 0 то убираем, если 1 восстанавливаем.     
gosub @0_629 // Переход на метку @0_629 ( Для перевода текста )       
08D4: 1@ = create_panel_with_title 'PROJECT DEVID' position 29.0 170.0 width 120.0 columns 1 interactive 1 background 1 alignment 0 // Создание меню на координатах указанных выше.
08DB: set_panel 1@ column 0 header 'DUMMY' data 'PLA_10' 'PLA_11' 'DUMMY' 'DUMMY 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  // Здесь название строчек меню. PLA_10 Название может быть любое, а ваш вкус, но и не забываем что его надо указывать тут :0      
0900: unknown_set_object 'PLA_10'      
0900: unknown_set_object "ColorCar"      
0000: NOP     
jump @0_248 // Прыгаем на поток @0_248


Пред объявление строк:
Код
:0_248 // начинаем поток.     
wait 0  // Ждем 0 мс.
if // Если
00E1: player 0 pressed_key 16 // Кнопка 16 - Это пробел, то есть нажимать на строчки нужно кнопкой пробел, вы можете её сменить на вашу.      
else_jump @0_342 // Если условие не выполнено, прыгаем на строчку @0_342     
08D7: 2@ = panel 1@ active_row // Здесь активная строка записывается в переменную 2@     
0871: init_jump_table 2@ total_jumps 6 default_jump 0 @0_342 jumps 0 @111 1 @222 2 @null @null 3 @null 4 @null 5 @null 6 @null // Здесь пред объявляем дальнейшие строчки. null это пустая строчка, она нужна для того чтобы не выбирало ошибки, минимум нужно 6 потоков.
return


Отключение меню:
Код
:0_342 // Создаем поток.     
wait 0 // Ждем 0 мс.     
if // Если.      
0ab0: 120 // Клавиша F10 нажата. Идем дальше.      
else_jump @0_248 // Если клавиша F10 не нажата, прыгаем на строчку 0_248. Тем самым оставляем меню.     
0581: enable_radar 1 // Включаем радар.     
08DA: remove_panel 1@ // Убираем меню.     
01B4: toggle_player $PLAYER_CHAR can_move 1 // Включаем управление персонажем.
jump @Create_Menu // Прыгаем на поток @Create_Menu.


Программирование строчки меню №1:
Код
:111 // Объявляем поток.
wait 0 // Ждем 0 мс.
Actor.Health($PLAYER_ACTOR) = 100 // Ваша функция, здесь пополнение ХП.
jump @0_248 // Прыгаем на строку @0_248.

Программирование строчки меню №2:
Код
:222
wait 0
Actor.Armour($PLAYER_ACTOR) = 100 // Ваша функция, здесь пополнение Брони.
jump @0_248 // Прыгаем на строку @0_248.


Перевод текста GTA на ваш:
Код
:0_629      
0A9F: 1@ = current_thread_pointer      
1@ += 16      
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0      
1@ -= @0 Перевод текста потока 0      
1@ += 3      
0AA8: call_function_method 6946896 12694336 num_params 1 pop 0 1@ 0@      
1@ += 12      
0AA5: call 7439872 2 pop 2 0@ 1@
0A9F: 1@ = current_thread_pointer      
1@ += 16      
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0      
1@ -= @1 Перевод текста потока 1      
1@ += 3      
0AA8: call_function_method 6946896 12694336 num_params 1 pop 0 1@ 0@      
1@ += 12      
0AA5: call 7439872 2 pop 2 0@ 1@        
return     

:0      
0900: unknown_set_object 'PLA_10' // Название вашей строки.     
0900: unknown_set_object "Actor Health" // Указываем на какой текст вы её хотите перевести.     
0000: NOP // Нулевой НОП.     

:1      
0900: unknown_set_object 'PLA_11' // Название вашей строки.     
0900: unknown_set_object "Actor Armour" // Указываем на какой текст вы её хотите перевести.      
0000: NOP // Нулевой НОП.


Вот полный код:

Код
{$VERSION 3.1.0027}     
{$CLEO .cs} // Создаем CLEO в формате .cs

//-------------MAIN---------------
0000: NOP // Нулевой НОП, во избежания крашей.
thread 'Project' // Название всех дальнейших начинающих строк.

:Create_Menu // Начинаем поток.
wait 0 // Ждем 0 мс.
if and   // Если. Кому не понятно что, смотрим урок от Колеса про условия.
Actor.Defined($PLAYER_ACTOR)  // Проверка на то создан ли персонаж.
0ab0: 121 // Активация меню на кнопку F11, коды клавиш узнаем в программе, ниже её выложу.     
else_jump @Create_Menu // Если 2 условия не выполнены, возвращаемся на поток @Create_Menu.      
01B4: toggle_player $PLAYER_CHAR can_move 0  // Данный опкод убирает управление персонажем.  can_move 0 если 0 это убираем управление, если 1 восстанавливаем управление.
0581: enable_radar 0 // Убираем радар. Так же и тут если 0 то убираем, если 1 восстанавливаем.     
gosub @0_629 // Переход на метку @0_629 ( Для перевода текста )       
08D4: 1@ = create_panel_with_title 'PROJECT DEVID' position 29.0 170.0 width 120.0 columns 1 interactive 1 background 1 alignment 0 // Создание меню на координатах указанных выше.
08DB: set_panel 1@ column 0 header 'DUMMY' data 'PLA_10' 'PLA_11' 'DUMMY' 'DUMMY 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  // Здесь название строчек меню. PLA_10 Название может быть любое, а ваш вкус, но и не забываем что его надо указывать тут :0      
0900: unknown_set_object 'PLA_10'      
0900: unknown_set_object "ColorCar"      
0000: NOP     
jump @0_248 // Прыгаем на поток @0_248     

:0_248 // начинаем поток.     
wait 0  // Ждем 0 мс.
if // Если
00E1: player 0 pressed_key 16 // Кнопка 16 - Это пробел, то есть нажимать на строчки нужно кнопкой пробел, вы можете её сменить на вашу.      
else_jump @0_342 // Если условие не выполнено, прыгаем на строчку @0_342     
08D7: 2@ = panel 1@ active_row // Здесь активная строка записывается в переменную 2@     
0871: init_jump_table 2@ total_jumps 6 default_jump 0 @0_342 jumps 0 @111 1 @222 2 @null @null 3 @null 4 @null 5 @null 6 @null // Здесь пред объявляем дальнейшие строчки. null это пустая строчка, она нужна для того чтобы не выбирало ошибки, минимум нужно 6 потоков.      
return

:0_342 // Создаем поток.     
wait 0 // Ждем 0 мс.     
if // Если.      
0ab0: 120 // Клавиша F10 нажата. Идем дальше.      
else_jump @0_248 // Если клавиша F10 не нажата, прыгаем на строчку 0_248. Тем самым оставляем меню.     
0581: enable_radar 1 // Включаем радар.     
08DA: remove_panel 1@ // Убираем меню.     
01B4: toggle_player $PLAYER_CHAR can_move 1 // Включаем управление персонажем.
jump @Create_Menu // Прыгаем на поток @Create_Menu.     

:111 // Объявляем поток.
wait 0 // Ждем 0 мс.
Actor.Health($PLAYER_ACTOR) = 100 // Ваша функция, здесь пополнение ХП.
jump @0_248 // Прыгаем на строку @0_248.

:222
wait 0
Actor.Armour($PLAYER_ACTOR) = 100 // Ваша функция, здесь пополнение Брони.
jump @0_248 // Прыгаем на строку @0_248.

:null
jump @null      

:0_629      
0A9F: 1@ = current_thread_pointer      
1@ += 16      
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0      
1@ -= @0 // Перевод текста потока 0      
1@ += 3      
0AA8: call_function_method 6946896 12694336 num_params 1 pop 0 1@ 0@      
1@ += 12      
0AA5: call 7439872 2 pop 2 0@ 1@
0A9F: 1@ = current_thread_pointer      
1@ += 16      
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0      
1@ -= @1 // Перевод текста потока 1      
1@ += 3      
0AA8: call_function_method 6946896 12694336 num_params 1 pop 0 1@ 0@      
1@ += 12      
0AA5: call 7439872 2 pop 2 0@ 1@        
return      

:0      
0900: unknown_set_object 'PLA_10' // Название вашей строки.     
0900: unknown_set_object "Actor Health" // Указываем на какой текст вы её хотите перевести.     
0000: NOP // Нулевой НОП.     

:1      
0900: unknown_set_object 'PLA_11' // Название вашей строки.     
0900: unknown_set_object "Actor Armour" // Указываем на какой текст вы её хотите перевести.      
0000: NOP // Нулевой НОП.


Программа для определения кода клавиш: http://cheat-master.ru/forum/116-13681-1
Пользуйтесь, я надеюсь кому-то помог.


Сообщение отредактировал Mayers - Среда, 09.01.2013, 17:16
MelomanCool Дата: Среда, 09.01.2013, 12:40 | Сообщение # 2
Советник
Сообщений: 757
Статус: Offline
Ну ты намудрил. Даже меня запутал. Надо будет написать свой урок с простым меню.

Ушел
Mayers Дата: Среда, 09.01.2013, 13:13 | Сообщение # 3
Новичок
Сообщений: 19
Статус: Offline
Цитата
Ну ты намудрил. Даже меня запутал. Надо будет написать свой урок с простым меню.


Что тут сложного ? Я все подробно рассказал, как создать нормальное меню!
Огонёк Дата: Среда, 09.01.2013, 13:49 | Сообщение # 4
Боец
Сообщений: 189
Статус: Offline
Actor.Defined($PLAYER_ACTOR). - пишет что не известно такое, что делать.
P.S Meloman у него попонятней чем у СУпера, если сделаеш ты буду благодарен smile
Mayers Дата: Среда, 09.01.2013, 13:52 | Сообщение # 5
Новичок
Сообщений: 19
Статус: Offline
Ну проверку на создан ли персонаж можно убрать!
Получится вот так. Полный код:
Огонёк Дата: Среда, 09.01.2013, 13:57 | Сообщение # 6
Боец
Сообщений: 189
Статус: Offline
Серовно упорно не хочет компилировать wink
Mayers Дата: Среда, 09.01.2013, 14:05 | Сообщение # 7
Новичок
Сообщений: 19
Статус: Offline
Цитата
Серовно упорно не хочет компилировать


Добавь в скайп ricci-cm помогу тебе.
Aztek Дата: Среда, 09.07.2014, 09:26 | Сообщение # 8
Новичок
Сообщений: 27
Статус: Offline
Чувак чет я понял, 2 урока посмотрел везде почему то вы делаете 2 строки, создал третью все сделал скрипт вставил, строчка показывается в панели, но в ней скрипт не работает, а в предедущих 2 строках он работает. Что делать?

Мирный юзер сайта
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума