Вопросы по CLEO-скриптингу

Dark_Knight

Me, me and me.
Друг
4,067
2,081
Создавай 3D текст над головой. Для этого тебе надо получить позицию игрока, увеличить высоту и создать его. После того как ты создал 3д текст, ты должен его изменять.
 

StefanWW

Новичок
93
11
Дарова всем, как сделать чтоб крутился текст вокруг головы по своей оси? Пример: http://i.imgur.com/NGi75jE.png. Скинь пожалуйста опкод для этого.
Опкода нет. Там функция. Я когда делал, у меня он так крутился (но это криворукость). Здесь в вопросах ищи функу.

 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.25 0.0 1.0
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
В CALL SCM FUNCS была функция от Opcode.eXe(автор не он, взято с GTAFORUMS, он что-т чутка добавил):
http://ugbase.eu/snippets/getboneposition-from-actor/
{
GET BONE POSITION:
0AB1: call_scm_func @GET_BONE_POS 2 FROM_ACTOR $PLAYER_ACTOR BONE 6 _STORE_TO 1@ 2@ 3@ // HEAD
}
:GET_BONE_POS
0085: 10@ = 0@ // (int)
0085: 15@ = 1@ // (int)
1@ = 0.0 // X offset
2@ = 0.0 // Y offset {THX TO: WESSER}
3@ = 0.0 // Z offset
0A96: 0@ = actor 10@ struct
0AC7: 4@ = var 1@ offset
0AA6: call_method 0x5E01C0 struct 0@ num_params 3 pop 0 bIncludeAnim 1 iBoneID 15@ vOffset 4@ // CPed__getBonePositionWithOffset
0AB2: retn 3 1@ 2@ 3@

Чуть переделал(хз, в лучшую или худшую сторону, будет тебе понятно или нет - не в моих интересах):
Код:
:GET_BONE_POS
// call @GET_BONE_POS 5 actor 0@ bone 1@ offsetYZX 2@ 3@ 4@ save_to 5@ 6@ 7@
0A96: 8@ = actor 0@ struct

// 0x5E01C0 - RwV3d *__thiscall CPed__getBonePositionWithOffset(RwV3d *vOffset, int iBoneID, bool bIncludeAnim)
// 2@v = 2@ & 3@ & 4@ pointers
0AA6: call_method 0x5E01C0 struct 8@ num_params 3 pop 0 bIncludeAnim true iBoneID 1@ *vOffset 2@v
0AB2: ret 3 2@ 3@ 4@
0@ -> игрок / $PLAYER_ACTOR
1@ -> ид кости / 6
2@ -> оффсет по оси Y / 0.0
3@ -> оффсет по оси Z / 0.0
4@ -> оффсет по оси X / 0.5
5@, 6@, 7@ -> игровая позиция(XYZ) кости
 
  • Нравится
Реакции: BUSHIDO32

DataIN

Новичок
9
0
Ребята , не пойму почему диалог не открывается второй раз после вода команды , помогите , если не сложно
Код:
{$CLEO}
{$INCLUDE SF}

const
EVENT_BUTTON_CLICKED                = 257
EVENT_COMBOBOX_SELECTION_CHANGED    = 513
EVENT_RADIOBUTTON_CHANGED           = 769
EVENT_CHECKBOX_CHANGED              = 1025
EVENT_SLIDER_VALUE_CHANGED          = 1281
EVENT_EDITBOX_STRING                = 1537
EVENT_EDITBOX_CHANGE                = 1538
EVENT_LISTBOX_ITEM_DBLCLK           = 1793
EVENT_LISTBOX_SELECTION             = 1794
end
0000:
repeat
wait 0
until samp.Available()


0B34: samp register_client_command "CL" to_label @KIG



repeat
wait 0
if 6@ == 1
then
0B80: dialog 0@ = create "User's dialog"
0B84: dialog 0@ set_pos_XY 500 500 size 300 225


0B82: dialog 0@ add_button id 1 text "ДА" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "НЕТ" pos_XY 0 50 size 100 30
0B87:  dialog 0@ is_visible
0B8D: samp set_cursor_mode 2


while true
    wait 0
    if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
    then
        if 1@ == EVENT_BUTTON_CLICKED
        then
            if 2@ == 1
            then
                0AF8: samp add_message_to_chat "Была нажата кнопка. Элемент №%d" color -1 params 2@
                0AC8: 3@ = allocate_memory_size 128
                0C11: memset destination 3@ value 0x0 size 128
                0B9B: dialog 0@ listbox 6 selected_element_to 0 elements_count_to 4@
                4@++
                0AD3: 3@ = format "Элемент №%d" 4@
                0B9A: dialog 0@ listbox 6 insert_element 3@ with_data 4@ after -1
                0AC9: free_allocated_memory 3@
                end
            end
           
       
if 1@ == EVENT_BUTTON_CLICKED
then
    if 2@ == 2
    then
        0AF8: samp add_message_to_chat "Ringo" color 0xff0000
        0B86: dialog 0@ set_visible false
        0B8D: samp set_cursor_mode 0
        6@ = 0
       
       

        end
    end
end
end
end
until false
         
                       


:KIG

if 6@ == 0
then
6@ = 1
end
samp.CmdRet()
 

StefanWW

Новичок
93
11
Ребята , не пойму почему диалог не открывается второй раз после вода команды , помогите , если не сложно
Код:
{$CLEO}
{$INCLUDE SF}

const
EVENT_BUTTON_CLICKED                = 257
EVENT_COMBOBOX_SELECTION_CHANGED    = 513
EVENT_RADIOBUTTON_CHANGED           = 769
EVENT_CHECKBOX_CHANGED              = 1025
EVENT_SLIDER_VALUE_CHANGED          = 1281
EVENT_EDITBOX_STRING                = 1537
EVENT_EDITBOX_CHANGE                = 1538
EVENT_LISTBOX_ITEM_DBLCLK           = 1793
EVENT_LISTBOX_SELECTION             = 1794
end
0000:
repeat
wait 0
until samp.Available()


0B34: samp register_client_command "CL" to_label @KIG



repeat
wait 0
if 6@ == 1
then
0B80: dialog 0@ = create "User's dialog"
0B84: dialog 0@ set_pos_XY 500 500 size 300 225


0B82: dialog 0@ add_button id 1 text "ДА" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "НЕТ" pos_XY 0 50 size 100 30
0B87:  dialog 0@ is_visible
0B8D: samp set_cursor_mode 2


while true
    wait 0
    if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
    then
        if 1@ == EVENT_BUTTON_CLICKED
        then
            if 2@ == 1
            then
                0AF8: samp add_message_to_chat "Была нажата кнопка. Элемент №%d" color -1 params 2@
                0AC8: 3@ = allocate_memory_size 128
                0C11: memset destination 3@ value 0x0 size 128
                0B9B: dialog 0@ listbox 6 selected_element_to 0 elements_count_to 4@
                4@++
                0AD3: 3@ = format "Элемент №%d" 4@
                0B9A: dialog 0@ listbox 6 insert_element 3@ with_data 4@ after -1
                0AC9: free_allocated_memory 3@
                end
            end
          
      
if 1@ == EVENT_BUTTON_CLICKED
then
    if 2@ == 2
    then
        0AF8: samp add_message_to_chat "Ringo" color 0xff0000
        0B86: dialog 0@ set_visible false
        0B8D: samp set_cursor_mode 0
        6@ = 0
      
      

        end
    end
end
end
end
until false
        
                      


:KIG

if 6@ == 0
then
6@ = 1
end
samp.CmdRet()
на
PHP:
{$CLEO}
{$INCLUDE SF}

const
EVENT_BUTTON_CLICKED                = 257
EVENT_COMBOBOX_SELECTION_CHANGED    = 513
EVENT_RADIOBUTTON_CHANGED           = 769
EVENT_CHECKBOX_CHANGED              = 1025
EVENT_SLIDER_VALUE_CHANGED          = 1281
EVENT_EDITBOX_STRING                = 1537
EVENT_EDITBOX_CHANGE                = 1538
EVENT_LISTBOX_ITEM_DBLCLK           = 1793
EVENT_LISTBOX_SELECTION             = 1794
end

0000:
repeat
wait 0
until samp.Available()


0B34: samp register_client_command "CL" to_label @KIG

{

//OLOLOLOLOL    easy bro
//repeat
//wait 500
//until 6@ == 1

repeat
wait 0
if 6@ == 1
then
}
0B80: dialog 0@ = create "User's dialog"
0B84: dialog 0@ set_pos_XY 500 500 size 300 225


0B82: dialog 0@ add_button id 1 text "ÄÀ" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "ÍÅÒ" pos_XY 0 50 size 100 30
dialog.SetVisible(0@, 0)


while true
    wait 0
    if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
    then
        if 1@ == EVENT_BUTTON_CLICKED
        then
            if 2@ == 1
            then
                0AF8: samp add_message_to_chat "Áûëà íàæàòà êíîïêà. Ýëåìåíò ¹%d" color -1 params 2@
               
                // eto tebe naxyu ? 4to ti delaew?
                0AC8: 3@ = allocate_memory_size 128
                0C11: memset destination 3@ value 0x0 size 128
                0B9B: dialog 0@ listbox 6 selected_element_to 0 elements_count_to 4@
                4@++
                0AD3: 3@ = format "Ýëåìåíò ¹%d" 4@
                0B9A: dialog 0@ listbox 6 insert_element 3@ with_data 4@ after -1
                0AC9: free_allocated_memory 3@
                end
            end
           
       
if 1@ == EVENT_BUTTON_CLICKED
then
    if 2@ == 2
    then
        0AF8: samp add_message_to_chat "Ringo" color 0xff0000
        0B86: dialog 0@ set_visible false
        0B8D: samp set_cursor_mode 0
        6@ = 0
       
       

        end
    end
end
end
end
until false
         
                       


:KIG
// OLOLOLOLOL
0B12: 6@ = 6@ XOR 1   // aktivacia

dialog.SetVisible(0@, 6@)
0B8D: samp set_cursor_mode 2 

samp.CmdRet()
 

DataIN

Новичок
9
0
Ребята , не пойму почему диалог не открывается второй раз после вода команды , помогите , если не сложно
Код:
{$CLEO}
{$INCLUDE SF}

const
EVENT_BUTTON_CLICKED                = 257
EVENT_COMBOBOX_SELECTION_CHANGED    = 513
EVENT_RADIOBUTTON_CHANGED           = 769
EVENT_CHECKBOX_CHANGED              = 1025
EVENT_SLIDER_VALUE_CHANGED          = 1281
EVENT_EDITBOX_STRING                = 1537
EVENT_EDITBOX_CHANGE                = 1538
EVENT_LISTBOX_ITEM_DBLCLK           = 1793
EVENT_LISTBOX_SELECTION             = 1794
end
0000:
repeat
wait 0
until samp.Available()


0B34: samp register_client_command "CL" to_label @KIG



repeat
wait 0
if 6@ == 1
then
0B80: dialog 0@ = create "User's dialog"
0B84: dialog 0@ set_pos_XY 500 500 size 300 225


0B82: dialog 0@ add_button id 1 text "ДА" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "НЕТ" pos_XY 0 50 size 100 30
0B87:  dialog 0@ is_visible
0B8D: samp set_cursor_mode 2


while true
    wait 0
    if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
    then
        if 1@ == EVENT_BUTTON_CLICKED
        then
            if 2@ == 1
            then
                0AF8: samp add_message_to_chat "Была нажата кнопка. Элемент №%d" color -1 params 2@
                0AC8: 3@ = allocate_memory_size 128
                0C11: memset destination 3@ value 0x0 size 128
                0B9B: dialog 0@ listbox 6 selected_element_to 0 elements_count_to 4@
                4@++
                0AD3: 3@ = format "Элемент №%d" 4@
                0B9A: dialog 0@ listbox 6 insert_element 3@ with_data 4@ after -1
                0AC9: free_allocated_memory 3@
                end
            end
          
      
if 1@ == EVENT_BUTTON_CLICKED
then
    if 2@ == 2
    then
        0AF8: samp add_message_to_chat "Ringo" color 0xff0000
        0B86: dialog 0@ set_visible false
        0B8D: samp set_cursor_mode 0
        6@ = 0
      
      

        end
    end
end
end
end
until false
        
                      


:KIG

if 6@ == 0
then
6@ = 1
end
samp.CmdRet()

Решил вопрос ,после 6@ = 0 прописал break :spiteful:
 

Sergey_Gray

Новичок
78
3
А ты 2 скрипт то удалил с клео? А то вдруг ты с ним вместе заходишь хд и он работает. Ты хекс где взял, открыл файл в хекс редакторе и скопировал?
мне хнусси помог, вот код и он работает (проверил)
PHP:
{$CLEO}
0000:

wait 1488

0B2B: samp 0@ = get_player_id_by_actor_handle $PLAYER_ACTOR // ???????? ???? ??
0B36: samp 1@ = get_player_nickname 0@ // ???????? ???? ???
if 8C18: 2@ = strstr string1 1@ string2 "Ivan_Pupkin" // ???? ??? ?????? ?? Ivan_Pupkin
then // ??
0A93: end_custom_thread // ????????? ?????, ?? ???? ?????? ??????????
end // ????? ???????


0B34: samp register_client_command "cmd1" to_label @1
0B34: samp register_client_command "cmd2" to_label @2
0B34: samp register_client_command "cmd3" to_label @3

while true
wait 0
end

:1
chatmsg "??????? ??????? /cmd1" 0xff0000
samp.CmdRet()

:2
chatmsg "??????? ??????? /cmd2" 0xff0000
samp.CmdRet()

:3
chatmsg "??????? ??????? /cmd3" 0xff0000
samp.CmdRet()
 

Sergey_Gray

Новичок
78
3
возможно вопрос не совсем по теме...
Но есть ли Синтаксис для блокнота или нотепада++ расцветки CLEO ?
 

StefanWW

Новичок
93
11
мне хнусси помог, вот код и он работает (проверил)
PHP:
{$CLEO}
0000:

wait 1488

0B2B: samp 0@ = get_player_id_by_actor_handle $PLAYER_ACTOR // ???????? ???? ??
0B36: samp 1@ = get_player_nickname 0@ // ???????? ???? ???
if 8C18: 2@ = strstr string1 1@ string2 "Ivan_Pupkin" // ???? ??? ?????? ?? Ivan_Pupkin
then // ??
0A93: end_custom_thread // ????????? ?????, ?? ???? ?????? ??????????
end // ????? ???????


0B34: samp register_client_command "cmd1" to_label @1
0B34: samp register_client_command "cmd2" to_label @2
0B34: samp register_client_command "cmd3" to_label @3

while true
wait 0
end

:1
chatmsg "??????? ??????? /cmd1" 0xff0000
samp.CmdRet()

:2
chatmsg "??????? ??????? /cmd2" 0xff0000
samp.CmdRet()

:3
chatmsg "??????? ??????? /cmd3" 0xff0000
samp.CmdRet()
там если ник совпадает, то он заканчивает поток, т.к. опкод 0a93: И ты просил подключать 2 скрипт внешне, а не регистрировать команды.
 

Sergey_Gray

Новичок
78
3
там если ник совпадает, то он заканчивает поток, т.к. опкод 0a93: И ты просил подключать 2 скрипт внешне, а не регистрировать команды.
http://blasthack.net/threads/34/page-94#post-56733, нет просил, у меня по твоему не работало, предложил записать чатмсг как отдельный.
 

StefanWW

Новичок
93
11
http://blasthack.net/threads/34/page-94#post-56733, нет просил, у меня по твоему не работало, предложил записать чатмсг как отдельный.
if 8C18: 2@ = strstr string1 1@ string2 "Ivan_Pupkin" это вставь в моем и заработает.
"Если сделать в одном скрипте проверку на ник, а в нём если удачная проверка - подключаем второй скрипт, и второй скрипт работал только после удачной проверки, возможно так?" Вот.