RedBoxWhite
Известный
- 337
- 27
Хмм... И как исправить тогда? Не допер чёт.Для удаленных игроков 0B57 высчитывает из структуры onFoot, т.е. те ид анимаций, которые установил сервер
Хмм... И как исправить тогда? Не допер чёт.Для удаленных игроков 0B57 высчитывает из структуры onFoot, т.е. те ид анимаций, которые установил сервер
Что означает эта часть кода?Как-то так:
CLEO:{$CLEO .cs} 0000: while not Player.Defined($PLAYER_ACTOR) wait 100 end 0AA2: 30@ = load_library "kernel32.dll" // IF and SET 0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET 0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@ 0AA3: free_library 30@ if 31@ == 0 then 0A93: end_custom_thread end while not SAMP.Available wait 100 end while true wait 1000 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 0AB1: call @Convert 1 0@ to 0@ // X 1@ *= -1.0 0AB1: call @Convert 1 1@ to 1@ // Y 1@ -= 1 // 1..24 -> 0..23 0AC6: 2@ = label @Chars offset // получаем адрес массива букв 0C0C: 1@ = struct 2@ offset 1@ size 1 // выбираем букву по номеру и читаем в 1@ 0AF8: samp add_message_to_chat "%c-%d" color -1 1@ 0@ // Y-X end :Convert 0@ += 3000.0 0@ /= 250.0 0C0A: math 0@ = ceil 0@ 0092: 0@ = float 0@ to_integer if 0@ < 1 // Добавил пару проверок then 0@ = 1 end if 0@ > 24 then 0@ = 24 end 0AB2: ret 1 0@ :Chars hex "АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ" end
0AA2: 30@ = load_library "kernel32.dll" // IF and SET
0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET
0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@
0AA3: free_library 30@
if 31@ == 0
then
0A93: end_custom_thread
end
Проверка на загруженность сампа, чтобы скрипт не работал в сингле, ибо будет крашить.Что означает эта часть кода?
И почему после компилирования, при открытии скрипта пишет: Неизвестный опкод 41C0 по адресу 348?CLEO:0AA2: 30@ = load_library "kernel32.dll" // IF and SET 0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET 0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@ 0AA3: free_library 30@ if 31@ == 0 then 0A93: end_custom_thread end
:Noname_2
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 49
004D: jump_if_false @Noname_3
0AF9: samp say_msg "/r [Взвод]: 10-34 %c-%d" 1@ 0@
0001: wait 2000 ms
0002: jump @Noname_НАЧАЛО ЦИКЛА
:Noname_3
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 50
004D: jump_if_false @Noname_3
0AF9: samp say_msg "/r [Взвод]: 10-37 %c-%d" 1@ 0@
0001: wait 2000 ms
0002: jump @Noname_НАЧАЛО ЦИКЛА
:Noname_4
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 51
004D: jump_if_false @Noname_НАЧАЛО ЦИКЛА
0AF9: samp say_msg "/r [Взвод]: 10-99 %c-%d" 1@ 0@
0001: wait 2000 ms
0002: jump @Noname_НАЧАЛО ЦИКЛА
{$CLEO .cs}
0000:
while not Player.Defined($PLAYER_ACTOR)
wait 100
end
0AA2: 30@ = load_library "kernel32.dll" // IF and SET
0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET
0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@
0AA3: free_library 30@
if 31@ == 0
then
0A93: end_custom_thread
end
while not SAMP.Available
wait 100
end
while true
wait 1000
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AB1: call @Convert 1 0@ to 0@ // X
1@ *= -1.0
0AB1: call @Convert 1 1@ to 1@ // Y
1@ -= 1 // 1..24 -> 0..23
0AC6: 2@ = label @Chars offset // получаем адрес массива букв
0C0C: 1@ = struct 2@ offset 1@ size 1 // выбираем букву по номеру и читаем в 1@
0AF8: samp add_message_to_chat "%c-%d" color -1 1@ 0@ // Y-X
end
:Convert
0@ += 3000.0
0@ /= 250.0
0C0A: math 0@ = ceil 0@
0092: 0@ = float 0@ to_integer
if 0@ < 1 // Добавил пару проверок
then 0@ = 1
end
if 0@ > 24
then 0@ = 24
end
0AB2: ret 1 0@
:Chars
hex
"АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ"
end
Я ничего не понял.Вот мне надо добавить проверки на нажатые кнопки. три варианта добавить Вместо 0AF8: samp add_message_to_chat "%c-%d" color -11@0@// Y-X
Бред x2. FPS будет жрать опкод добавления сообщения, а не цикл.Не бред. Вот такой цикл без wait в for будет жрать фпс
пс вк зайдиCLEO:while true wait 0 for 0@ = 0 to 999 1 0af8: "pizda svinnaya" 0xffffff end end
Помоги вставить в твой код:Я ничего не понял.
{$CLEO .cs}
0000:
while not Player.Defined($PLAYER_ACTOR)
wait 100
end
0AA2: 30@ = load_library "kernel32.dll" // IF and SET
0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET
0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@
0AA3: free_library 30@
if 31@ == 0
then
0A93: end_custom_thread
end
while not SAMP.Available
wait 100
end
while true
wait 1000
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AB1: call @Convert 1 0@ to 0@ // X
1@ *= -1.0
0AB1: call @Convert 1 1@ to 1@ // Y
1@ -= 1 // 1..24 -> 0..23
0AC6: 2@ = label @Chars offset // получаем адрес массива букв
0C0C: 1@ = struct 2@ offset 1@ size 1 // выбираем букву по номеру и читаем в 1@
0AF8: samp add_message_to_chat "%c-%d" color -1 1@ 0@ // Y-X
end
:Convert
0@ += 3000.0
0@ /= 250.0
0C0A: math 0@ = ceil 0@
0092: 0@ = float 0@ to_integer
if 0@ < 1 // Добавил пару проверок
then 0@ = 1
end
if 0@ > 24
then 0@ = 24
end
0AB2: ret 1 0@
:Chars
hex
"АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ"
end
:Noname_4
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 49
004D: jump_if_false @Noname_5
0AF9: samp say_msg "/r [Взвод]: 10-34 %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_???
:Noname_5
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 50
004D: jump_if_false @Noname_6
0AF9: samp say_msg "/r [Взвод]: 10-37 %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_???
:Noname_6
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 51
004D: jump_if_false @Noname_???
0AF9: samp say_msg "/r [Взвод]: 10-99 %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_???
А не проще сразу написать "/r [Взвод]: 10-34" с нужным квадратом для каждой пары кнопок?Помоги вставить в твой код:
вместо: 0AF8: samp add_message_to_chat "%c-%d" color -11@0@CLEO:{$CLEO .cs} 0000: while not Player.Defined($PLAYER_ACTOR) wait 100 end 0AA2: 30@ = load_library "kernel32.dll" // IF and SET 0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET 0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@ 0AA3: free_library 30@ if 31@ == 0 then 0A93: end_custom_thread end while not SAMP.Available wait 100 end while true wait 1000 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 0AB1: call @Convert 1 0@ to 0@ // X 1@ *= -1.0 0AB1: call @Convert 1 1@ to 1@ // Y 1@ -= 1 // 1..24 -> 0..23 0AC6: 2@ = label @Chars offset // получаем адрес массива букв 0C0C: 1@ = struct 2@ offset 1@ size 1 // выбираем букву по номеру и читаем в 1@ 0AF8: samp add_message_to_chat "%c-%d" color -1 1@ 0@ // Y-X end :Convert 0@ += 3000.0 0@ /= 250.0 0C0A: math 0@ = ceil 0@ 0092: 0@ = float 0@ to_integer if 0@ < 1 // Добавил пару проверок then 0@ = 1 end if 0@ > 24 then 0@ = 24 end 0AB2: ret 1 0@ :Chars hex "АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ" end
Это. то есть при нажатии определённых кнопок. Писало по разному:
CLEO::Noname_4 00D6: if and 0AB0: key_pressed 16 0AB0: key_pressed 49 004D: jump_if_false @Noname_5 0AF9: samp say_msg "/r [Взвод]: 10-34 %c-%d" 11@ 0@ 0001: wait 2000 ms 0002: jump @Noname_??? :Noname_5 00D6: if and 0AB0: key_pressed 16 0AB0: key_pressed 50 004D: jump_if_false @Noname_6 0AF9: samp say_msg "/r [Взвод]: 10-37 %c-%d" 11@ 0@ 0001: wait 2000 ms 0002: jump @Noname_??? :Noname_6 00D6: if and 0AB0: key_pressed 16 0AB0: key_pressed 51 004D: jump_if_false @Noname_??? 0AF9: samp say_msg "/r [Взвод]: 10-99 %c-%d" 11@ 0@ 0001: wait 2000 ms 0002: jump @Noname_???
Квадраты всегда разные.А не проще сразу написать "/r [Взвод]: 10-34" с нужным квадратом для каждой пары кнопок?
Окей, от чего зависит квадрат? Может, проще будет его по метке на карте получать?Квадраты всегда разные.
Твой скрипт показывает квадрат в котором я нахожусь. Пишет раз в секунду в чат. А мне надо что бы не писало постоянно в чат, а только при нажатии на кнопки писало.Окей, от чего зависит квадрат? Может, проще будет его по метке на карте получать?
:Noname_4
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 49
004D: jump_if_false @Noname_5
0AF9: samp say_msg "/w [Взвод]: Требуется помощ в квадрат %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_3
:Noname_5
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 50
004D: jump_if_false @Noname_6
0AF9: samp say_msg "/w [Взвод]: Требуется эвакуация в квадрат %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_???
:Noname_6
00D6: if and
0AB0: key_pressed 16
0AB0: key_pressed 51
004D: jump_if_false @Noname_???
0AF9: samp say_msg "/w [Взвод]: Задание заиершено в квадрате %c-%d" 11@ 0@
0001: wait 2000 ms
0002: jump @Noname_???
Проверяй.Твой скрипт показывает квадрат в котором я нахожусь. Пишет раз в секунду в чат. А мне надо что бы не писало постоянно в чат, а только при нажатии на кнопки писало.
Мне надо. Что бы я нажимал Shift и 1 и выдавало в чат: Требуется помощь в квадрат %c-%d
Если нажимал shift и 2 писало: Требуется эвакуация в квадрат %c-%d
Если нажата кнопка shift и 3 писало: Задание завершено в квадрате %c-%d
То есть квадрат в котором я нахожусь. Походу я тебя тен-кодами запутал. 10-34 это требуется помощь. Короче ты на них внимания не обращай
{$CLEO .cs}
0000:
while not Player.Defined($PLAYER_ACTOR)
wait 100
end
0AA2: 30@ = load_library "kernel32.dll" // IF and SET
0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET
0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@
0AA3: free_library 30@
if 31@ == 0
then
0A93: end_custom_thread
end
while not SAMP.Available
wait 100
end
while true
wait 0
if and
8B21: not samp is_chat_opened
0AB0: key_pressed 16 // shift
then
if 0AB0: key_pressed 49 // 1
then
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@
0AF9: samp say_msg "/r [Взвод]: 10-34 %c-%d" 1@ 0@
0001: wait 2000 ms
end
if 0AB0: key_pressed 50 // 2
then
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@
0AF9: samp say_msg "/r [Взвод]: 10-37 %c-%d" 1@ 0@
0001: wait 2000 ms
end
if 0AB0: key_pressed 51 // 3
then
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@
0AF9: samp say_msg "/r [Взвод]: 10-99 %c-%d" 1@ 0@
0001: wait 2000 ms
end
end
end
:GetSquareByMapCoords
0AB1: call @Convert 1 0@ to 0@ // X
1@ *= -1.0
0AB1: call @Convert 1 1@ to 1@ // Y
1@ -= 1
0AC6: 2@ = label @Chars offset
0C0C: 1@ = struct 2@ offset 1@ size 1
0AB2: ret 2 0@ 1@
:Convert
0@ += 3000.0
0@ /= 250.0
0C0A: math 0@ = ceil 0@
0092: 0@ = float 0@ to_integer
if 0@ < 1
then 0@ = 1
end
if 0@ > 24
then 0@ = 24
end
0AB2: ret 1 0@
:Chars
hex
"АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ"
end
Всё шикарно работает! Спасибо тебе большое, что помог! Я уже думал у тебя терпения на меня не хватит. Красава!Проверяй.
CLEO:{$CLEO .cs} 0000: while not Player.Defined($PLAYER_ACTOR) wait 100 end 0AA2: 30@ = load_library "kernel32.dll" // IF and SET 0AA4: 31@ = get_proc_address "GetModuleHandleA" library 30@ // IF and SET 0AA7: call_function 31@ num_params 1 pop 0 "samp.dll" 31@ 0AA3: free_library 30@ if 31@ == 0 then 0A93: end_custom_thread end while not SAMP.Available wait 100 end while true wait 0 if and 8B21: not samp is_chat_opened 0AB0: key_pressed 16 // shift then if 0AB0: key_pressed 49 // 1 then 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@ 0AF9: samp say_msg "/r [Взвод]: 10-34 %c-%d" 1@ 0@ 0001: wait 2000 ms end if 0AB0: key_pressed 50 // 2 then 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@ 0AF9: samp say_msg "/r [Взвод]: 10-37 %c-%d" 1@ 0@ 0001: wait 2000 ms end if 0AB0: key_pressed 51 // 3 then 00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 0AB1: call @GetSquareByMapCoords 2 0@ 1@ to 0@ 1@ 0AF9: samp say_msg "/r [Взвод]: 10-99 %c-%d" 1@ 0@ 0001: wait 2000 ms end end end :GetSquareByMapCoords 0AB1: call @Convert 1 0@ to 0@ // X 1@ *= -1.0 0AB1: call @Convert 1 1@ to 1@ // Y 1@ -= 1 0AC6: 2@ = label @Chars offset 0C0C: 1@ = struct 2@ offset 1@ size 1 0AB2: ret 2 0@ 1@ :Convert 0@ += 3000.0 0@ /= 250.0 0C0A: math 0@ = ceil 0@ 0092: 0@ = float 0@ to_integer if 0@ < 1 then 0@ = 1 end if 0@ > 24 then 0@ = 24 end 0AB2: ret 1 0@ :Chars hex "АБВГДЖЗИКЛМНОПРСТУФХЦЧШЯ" end
Поддельный отчёт будешь делать?Нужно чтобы когда писал команду /fake_med
происходило следующее:
В чат пишет:{89ac7a}Вы отправили предложение о лечении.
{87ad7a}[Информация]{FFFFFF} Вы вылечили randomnick за $200
Где рандом ник мне нужно чтобы рандомно выбирало человека из таба и писало туда, чтобы я мог писать по много раз с разными никами.
Заранее спасибо, так как я уже 5 дней маюсь и не могу найти как так сделать.
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
0AC8: 2@ = allocate_memory_size 264
:Noname_18
0001: wait 0 ms
0AFA: is_samp_available
004D: jump_if_false @Noname_18
:Noname_31
0001: wait 0 ms
0A8E: 0@ = 0 + 0 // int
:Noname_44
0A8E: 0@ = 0@ + 1 // int
8039: not 0@ == 1000
004D: jump_if_false @Noname_31
0B23: samp is_player_connected 0@
004D: jump_if_false @Noname_44
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D: actor 1@ defined
0B36: samp 2@ = get_player_nickname 19@
:Noname_388
00D6: if and
0AB0: key_pressed 49
0AB0: key_pressed 50
8B21: not samp is_chat_opened
004D: jump_if_false @Noname_44
0AF8: samp add_message_to_chat "{89ac7a}Вы отправили предложение о лечении." color -1
0001: wait 10000 ms
0AF8: samp add_message_to_chat "{87ad7a}[Информация]{FFFFFF} Вы вылечили %s на $200" color -1 2@
0001: wait 2000 ms
0002: jump @Noname_44