Там моментально ведь. Задержки нет.
Ты это моему скрипту скажи. За 5 секунд определил кто мне в ПМ написал.
Там моментально ведь. Задержки нет.
У меня в скрипте идёт схожий принцип. При получении ПМ определяет отправителя и заменяет строку чата на новую. Всё происходит моментально, само ПМ не успеваю углядеть даже.Ты это моему скрипту скажи. За 5 секунд определил кто мне в ПМ написал.
У меня в скрипте идёт схожий принцип. При получении ПМ определяет отправителя и заменяет строку чата на новую. Всё происходит моментально, само ПМ не успеваю углядеть даже.
Нужно указывать, для какого типа диалогов.как получить содержание диалога в переменную?
0B3C: samp is_dialog_responded id 1@ button 2@ list_item 3@ input_text 4@
0B89: dialog 1@ get_control 2@ text_to 3@
Мне не локальный диалог нужен,а от сервера
:GetDlgText
0@ = SAMP.Base()
0@ += 0x212A40 // DialogClient
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0@ += 0x34 // *dlg_text
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
0AC8: 2@ 1024
memset 2@ 0 1024
0C13: strcpy destination 2@ source 1@
ret 1 2@
call @GetDlgText 0 text_to 0@
0@++ // делаем что-нибудь с диалогом, в данном случае "удаляем" 1 символ с начала строки.
0AC9: 0@ // очищаем выделенную память
Сохраняется не весь текст, а если применить к "большому"диалогу, то вовсе крашит.Код::GetDlgText 0@ = SAMP.Base() 0@ += 0x212A40 // DialogClient 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x34 // *dlg_text 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 0AC8: 2@ 1024 memset 2@ 0 1024 0C13: strcpy destination 2@ source 1@ ret 1 2@
По идее, без выделения памяти, должен возвращать указатель, но...
Используй так:
Код:call @GetDlgText 0 text_to 0@ 0@++ // делаем что-нибудь с диалогом, в данном случае "удаляем" 1 символ с начала строки. 0AC9: 0@ // очищаем выделенную память
Сохраняется не весь текст, а если применить к "большому"диалогу, то вовсе крашит.
Так трудно же пройтись по форуму / посмтореть уже готовые сурсыКак сделать так, что бы вводишь команду /testdialog и диалог появляется еще раз вводишь и он пропадает
Помогите
:lesson
if
0B87: samp dialog 29@ is_visible
then
0B86: samp dialog 29@ set_visible false
0B5D: samp toggle_cursor false
0AF8: samp add_message_to_chat "Диалог с идом 29@ {00FF00} видим, сы сделали его невидимым" color 0x61269E
else
0B86: samp dialog 29@ set_visible true
0B5D: samp toggle_cursor true
0AF8: samp add_message_to_chat "Диалог с идом 29@ {FF0000}НЕ видим, но мы сдулали его видимым" color 0x61269E
end
Samp.CmdRet()
0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@ Функция:Как отправлять "фейк" координаты с ног,сколько ищу,не могу найти ( вроде SCM-функа была )
:SendOnfootFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока
3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру
3@ += 55 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data.
0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета.
0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции.
0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта.
0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10
0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14
0B3D: raknet 5@ = new_bit_stream // Создаем битстрим.
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета.
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями.
0B8B: raknet send bit_stream 5@ // Отправляем битстрим в котором содержится пакет.
0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим.
0AC9: free_allocated_memory 4@ // Освобождаем память.
0ab2: 0 // Заканчиваем Call функцию.
0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@ Функция:
Код::SendOnfootFakePosition 3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока 3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру 3@ += 55 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data. 0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета. 0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции. 0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта. 0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10 0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14 0B3D: raknet 5@ = new_bit_stream // Создаем битстрим. 0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета. 0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями. 0B8B: raknet send bit_stream 5@ // Отправляем битстрим в котором содержится пакет. 0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим. 0AC9: free_allocated_memory 4@ // Освобождаем память. 0ab2: 0 // Заканчиваем Call функцию.