The_North_Fake
Новичок
- 15
- 0
Спасибо, за строки не знал, вообще как по мне лучше работать с SF диалогами, они удобнее)) Это лично мое мнение.0 - первая строка чата, 99 последняя. Всего 100.
Проверку на ответ диалога надо ставить в цикле
Спасибо, за строки не знал, вообще как по мне лучше работать с SF диалогами, они удобнее)) Это лично мое мнение.0 - первая строка чата, 99 последняя. Всего 100.
Проверку на ответ диалога надо ставить в цикле
0B87: dialog 15 is_visible попробую. СпасибоДиалог появляется повторно потому, что идет флуд, попробуй поставить id строки чата 0, а не 99 (это помоему весь скан чата, а 0 - текущей строки) и по сути должно работать. И добавь проверку не открыт ли этот диалог уже 0B87: dialog 15 is_visible , если открыт то пропускаем.
CLEO:{$CLEO .cs} //-------------MAIN--------------- 0000: NOP 0AC8: 1@ = allocate_memory_size 64 0AC8: 2@ = allocate_memory_size 64 :Noname_16 0001: wait 0 ms 00D6: if 0AFA: is_samp_available 004D: jump_if_false @Noname_16 :Noname_33 0001: wait 0 ms 0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@ 00D6: if 0C18: 6@ = strstr string1 1@ string2 "Здравия желаю" 004D: jump_if_false @Noname_33 [B]00D6: if[/B] [B]0B87: dialog 15 is_visible[/B] [B][B]004D: jump_if_false @Noname_888[/B][/B] 0B3B: samp show_dialog id 15 caption "Здравия" text "{ff0000}Ваш ответ" button_1 "Ответ" button_2 "Нет" style 0 [B]:Noname_888[/B] 0001: wait 0 ms 00D6: if 0B3C: samp is_dialog_responded id 15 button 7@ list_item 0 input_text 0 004D: jump_if_false @Noname_213 00D6: if 0039: 7@ == 1 004D: jump_if_false @Noname_202 0AF9: samp say_msg "Здраия желаю!" 0002: jump @Noname_213 :Noname_202 0AF9: samp say_msg "/w кхм" :Noname_203 0AC9: free_allocated_memory 1@ 0AC9: free_allocated_memory 2@ :Noname_213 0002: jump @Noname_33
Качай локальный сервер, чекай там. Не еби мозги.Вы меня наверное опять не поняли.
Данная конструкция клео скрипта, у меня работала 3 дня назад, ну уже 4 дня назад, без всяких на то проблем, уже вечером мне сообщили, что скрипт обьявление о начале мероприятия не работает.
2@ - переменная для обработки Лист Итема работает, при выборе первых двух пунктов, текст успешно отправляется, начиная с 3 пункта все что написано опкодом 0af9 не отправляется, если написать опкодом 0af8 (для себя, мне это не нужно) работает, так я проверил, что пункты меню работают, не работает только опкод 0af9 в них.
анти флуд тут не причем, ибо отправился бы в таком случае ХОТЯ БЫ одна строка, но не отправляется ни единой строки в 0af9 опкоде.
Как это делается? Никогда с таким даже не сталкивался.обрезать строку до первого символа переноса
указатель на поток передаётся тудаИ второй вопросик. Как правильно использовать опкод 0C6E: destroy_custom_thread 0@? У меня при его использовании кидает exception.
Просто странно, ведь я переменную 25@ после создания потока не перезаписывал. Получается, нужно получить указатель на поток.Это значит то, что в переменной хранится указатель на недействительный поток(уже завершен/перезаписано значение переменной).
0C6A: 0@ = create_custom_thread_at_label @test
while true
if and
0C89: key_just_pressed 45
8B21: not samp is_chat_opened
then
0AF1: write_int 1 to_ini_file "cleo\temp" section "main" key "destroy-thread"
end
end
:test
while true
0AF0: 0@ = get_int_from_ini_file "cleo\temp" section "main" key "destroy-thread"
if 0@ == 1
then
0AF1: write_int 0 to_ini_file "cleo\temp" section "main" key "destroy-thread"
0A9F: 0@ = current_thread_pointer
0C6E: destroy_custom_thread 0@
end
end
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
0AC8: 1@ = allocate_memory_size 64
0AC8: 2@ = allocate_memory_size 64
:Noname_16
0001: wait 0 ms
00D6: if
0AFA: is_samp_available
004D: jump_if_false @Noname_16
:Noname_33
0001: wait 0 ms
0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
00D6: if
0C18: 6@ = strstr string1 1@ string2 "Здравия желаю"
004D: jump_if_false @Noname_33
0B3B: samp show_dialog id 16 caption "Здравия" text "{ff0000}Ваш ответ" button_1 "Ответ" button_2 "Нет" style 0
0001: wait 0 ms
00D6: if
0B3C: samp is_dialog_responded id 16 button 7@ list_item 0 input_text 0
004D: jump_if_false @Noname_227
00D6: if and
0039: 7@ == 1
0B87: dialog 16 is_visible
004D: jump_if_false @Noname_206
0AF9: samp say_msg "Здраия желаю!"
0002: jump @Noname_227
:Noname_206
0AF9: samp say_msg "/w кхм"
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 2@
:Noname_227
0002: jump @Noname_33
0B87: dialog 15 is_visible .
Добавил поверку:
Проблема осталась
0AC9: free_allocated_memory 1@
Добавил освобождение памяти:
0AC9: free_allocated_memory 2@
Начали сыпаться варнинги после появления ответа.
Проблема осталась.
При появлении в чате выражения: Здравия желаю.
Как должно работать:
Выводится диалог. При нажатии "ответ"- в чат пишется "Здравия желаю!".
А при нажатии "Нет"- шепчет "/w кхм"
Видит в чате выражение "Здравия желаю".
Однако работает неправильно:
Выводится диалог. При нажатии "ответ" или "нет". Пишет "Здравия желаю". Выдаёт варнинг. Диалог не исчезает. Нажимаешь снова ответ. Диалог закрывается.
Но если снова видит "Здравия желаю" в чате, то выдаётся ответ сразу , а за тем выводится диалог. После нажатия "ответ" ничего не происходит
Большая просьба к вам найдите ошибку в коде. За ранее благодарен
Код:{$CLEO .cs} //-------------MAIN--------------- 0000: NOP 0AC8: 1@ = allocate_memory_size 64 0AC8: 2@ = allocate_memory_size 64 :Noname_16 0001: wait 0 ms 00D6: if 0AFA: is_samp_available 004D: jump_if_false @Noname_16 :Noname_33 0001: wait 0 ms 0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@ 00D6: if 0C18: 6@ = strstr string1 1@ string2 "Здравия желаю" 004D: jump_if_false @Noname_33 0B3B: samp show_dialog id 16 caption "Здравия" text "{ff0000}Ваш ответ" button_1 "Ответ" button_2 "Нет" style 0 0001: wait 0 ms 00D6: if 0B3C: samp is_dialog_responded id 16 button 7@ list_item 0 input_text 0 004D: jump_if_false @Noname_227 00D6: if and 0039: 7@ == 1 0B87: dialog 16 is_visible 004D: jump_if_false @Noname_206 0AF9: samp say_msg "Здраия желаю!" 0002: jump @Noname_227 :Noname_206 0AF9: samp say_msg "/w кхм" 0AC9: free_allocated_memory 1@ 0AC9: free_allocated_memory 2@ :Noname_227 0002: jump @Noname_33
Я понимаю код простой. Несерьёзный. Но я хочу просто научиться считывать строку и через диалог выводить результат. Что бы потом запилить что то лучше
{$CLEO}
{$NOSOURCE}
{$INCLUDE SF}
0000:
thread " "
wait 2000
alloc 4@ 256
memset 4@ 256 0
0BE3: raknet setup_incoming_rpc_hook @ClientMessage
while true
wait 0
if 0B3C: samp dialog_respond 16 button 11@ list_item 12@ input_text 0
then
if 11@ == 1
then
0af9: "Здравия"
else
if 11@ == 2
then
0af9: "/w Кхм"
end
end
end
end
:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
//0BEF: raknet 5@ = bit_stream 0@ get_number_of_bytes_used
if
1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
0C11: memset destination 4@ value 0 size 256
0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
0C0F: array 4@ element 3@ = 0x00
if and
0C18: 5@ = strstr string1 4@ string2 "Здравия желаю"
then
0B3B: samp show_dialog id 16 caption "Здравия" text "{ff0000}Ваш ответ" button_1 "Ответ" button_2 "Нет" style 0
end
end
0BE0: raknet hook_ret true
Так поток ты не закроешь. Так его только из другого потока закрыть можно. Чтобы закрыть текущий поток, нужно использовать 0A93: end_custom_threadПросто странно, ведь я переменную 25@ после создания потока не перезаписывал. Получается, нужно получить указатель на поток.
Набросал пример кода, можно ли так делать?
Код:0C6A: 0@ = create_custom_thread_at_label @test while true if and 0C89: key_just_pressed 45 8B21: not samp is_chat_opened then 0AF1: write_int 1 to_ini_file "cleo\temp" section "main" key "destroy-thread" end end :test while true 0AF0: 0@ = get_int_from_ini_file "cleo\temp" section "main" key "destroy-thread" if 0@ == 1 then 0AF1: write_int 0 to_ini_file "cleo\temp" section "main" key "destroy-thread" 0A9F: 0@ = current_thread_pointer 0C6E: destroy_custom_thread 0@ end end
memset 4@ 256 0 это 0C11: memset destination 4@ value 256 size 0 ?CLEO:{$CLEO} {$NOSOURCE} {$INCLUDE SF} 0000: thread " " wait 2000 alloc 4@ 256 memset 4@ 256 0 0BE3: raknet setup_incoming_rpc_hook @ClientMessage while true wait 0 if 0B3C: samp dialog_respond 16 button 11@ list_item 12@ input_text 0 then if 11@ == 1 then 0af9: "Здравия" else if 11@ == 2 then 0af9: "/w Кхм" end end end end :ClientMessage 0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM 0BE5: raknet 1@ = get_hook_param PARAM_PACKETID //0BEF: raknet 5@ = bit_stream 0@ get_number_of_bytes_used if 1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg then 0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color 0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen 0C11: memset destination 4@ value 0 size 256 0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text 0C0F: array 4@ element 3@ = 0x00 if and 0C18: 5@ = strstr string1 4@ string2 "Здравия желаю" then 0B3B: samp show_dialog id 16 caption "Здравия" text "{ff0000}Ваш ответ" button_1 "Ответ" button_2 "Нет" style 0 end end 0BE0: raknet hook_ret true