Как я понял,ты прописываешь команду /weapons, у тебя прописывается автоматом СЕРВЕРНАЯ команда /buyweapons,и дальше условие,типа если активен диалог,то выделяем 1 строку(вроде как 1 строка выделяется автоматом при открытии диалога подобного типа,поэтому можно эту строчку убрать),и закрываем диалог нажав кнопку true .В командах работают условия?
PHP:0B34: samp register_client_command "weapons" to_label @weapons :weapons say "/buyweapons" wait 150 if 0B4C: samp is_dialog_active 63 then 0B49: samp set_current_dialog_list_item 1 wait 50 0B47: samp close_current_dialog_with_button 1 end SAMP.CmdRet
0B34: samp register_client_command "weapons" to_label @weapons
:weapons
say "/buyweapons" // отправляем серверу /buyweapons
wait 250
0B47: samp close_current_dialog_with_button 1 // закрываем диалог нажав кнопку true
end
SAMP.CmdRet
Как отправить фейковые пакеты о попадании пуль ?
Пример отправки синхронизации пули в игрока.Вызов функции: 0AB1: call @SendFakeBulletShot 1 HitID 1@ Функция:
:SendFakeBulletShot
0B20: samp 9@ = actor_handle_by_samp_player_id 0@ // Получаем хендл игрока
Actor.StorePos($PLAYER_ACTOR, 10@ 11@ 12@) // Находим наши координаты
Actor.StorePos(9@, 13@ 14@ 15@) // Находим координаты игрока
0AC8: 5@ = allocate_memory_size 39 // Выделяем память для bitstream
0C0D: struct 5@ offset 0 size 1 = 1 //type - тип пули. 0 - попадает в воздух. 1 - в игрока. 2 - в машину. 3 - в объект.
0C0D: struct 5@ offset 1 size 2 = 0@ //id - id того, в зависимости, что вы написали выше (игрока, машины, объекта). Если type = 0, то id = 0.
//Позиции XYZ, откуда мы стреляем.
0C0D: struct 5@ offset 3 size 4 = 10@
0C0D: struct 5@ offset 7 size 4 = 11@
0C0D: struct 5@ offset 11 size 4 = 12@
//Позиции XYZ, куда попадает пуля. Если вы стреляете в объект, игрока или машину, то независимо, от того,
//что вы здесь написали, пуля попадет в тело, с смещением от центра тела, которое будет указано ниже.
0C0D: struct 5@ offset 15 size 4 = 13@
0C0D: struct 5@ offset 19 size 4 = 14@
0C0D: struct 5@ offset 23 size 4 = 15@
//Если вы стреляете в игрока, объект или машину, то это смещение от центра тела.
//То есть, координаты 0 0 0 это середина тела, а координаты 0.0 0.0 0.5, координаты головы игрока, и тд.
//Если стреляете в воздух, то ставьте их всегда 0 0 0.
0C0D: struct 5@ offset 27 size 4 = 0.0
0C0D: struct 5@ offset 31 size 4 = 0.0
0C0D: struct 5@ offset 35 size 4 = 0.0
0B3D: raknet 6@ = new_bit_stream
0B40: raknet bit_stream 6@ write 224 type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 6@ write 5@ type BS_TYPE_ARRAY size 39
0B8B: raknet send bit_stream 6@
0B3E: raknet delete_bit_stream 6@
0AC9: free_allocated_memory 5@
0AB2: ret 0
Где ещё один end?Почему при открытом диалоге 63 (серверный) ничего не происходит?
PHP:while true wait 0 if 0B4C: samp is_dialog_active 63 then 0B49: samp set_current_dialog_list_item 1 wait 100 0B47: samp close_current_dialog_with_button 1 end
{$CLEO .cs}
//-------------MAIN---------------
03A4: name_thread "ackid"
0662: printstring "BY MISTER_GONWIK"
0662: printstring "FOR BlastHack.Net"
03F0: enable_text_draw 1
0000: NOP
:ackid_56
8AFA: not is_samp_available
004D: jump_if_false @ackid_76
0001: wait 100 ms
0002: jump @ackid_56
:ackid_76
0AF7: samp 0@ = get_base
0AF8: samp add_message_to_chat "AdminsChecker: {FFFFFF}by {0081FF}voditel_autobusa." color 16729344
0AF8: samp add_message_to_chat "AdminsChecker: {0081FF}/ac{FFFFFF} - [включить чекер] | {0081FF}/acr{FFFFFF} - [перезагрузить список админов]." color 16729344
0B63: samp unregister_client_command "acr"
0B63: samp unregister_client_command "ac"
0B34: samp register_client_command "ac" to_label @ackid_715
0B34: samp register_client_command "acr" to_label @ackid_727
0006: 22@ = 0
0050: gosub @ackid_819
0050: gosub @ackid_921
:ackid_319
0001: wait 0 ms
00D6: if
0039: 22@ == 1
004D: jump_if_false @ackid_708
0AB1: call_scm_func @ackid_1141 0
0007: 15@ = 10.0
0007: 18@ = 10.0
0007: 16@ = 420.0
0007: 19@ = 434.0
0006: 4@ = 0
:ackid_398
00D6: if
0B23: samp is_player_connected 4@
004D: jump_if_false @ackid_686
0B36: samp 2@ = get_player_nickname 4@
0AD3: 3@ = format " %s " 2@
0C18: 12@ = strstr string1 10@ string2 3@
00D6: if
8039: not 12@ == 0
004D: jump_if_false @ackid_686
0B65: samp 20@ = player 4@ score
00D6: if
8019: not 20@ > 0
004D: jump_if_false @ackid_528
0AB1: call_scm_func @ackid_1276 7 18@ 19@ 255 0 0 225 4@
0002: jump @ackid_559
:ackid_528
0AB1: call_scm_func @ackid_1276 7 18@ 19@ 255 255 255 225 4@
:ackid_559
000B: 18@ += 24.0
0B20: samp 21@ = actor_handle_by_samp_player_id 4@
00D6: if
056D: actor 21@ defined
004D: jump_if_false @ackid_686
00D6: if
0B5C: samp is_player 4@ paused
004D: jump_if_false @ackid_646
0AB1: call_scm_func @ackid_1276 7 15@ 16@ 0 129 255 225 4@
0002: jump @ackid_676
:ackid_646
0AB1: call_scm_func @ackid_1276 7 15@ 16@ 239 129 0 225 4@
:ackid_676
000B: 15@ += 24.0
:ackid_686
000A: 4@ += 1
0019: 4@ > 999
004D: jump_if_false @ackid_398
:ackid_708
0002: jump @ackid_319
:ackid_715
0B12: 22@ = 22@ XOR 1
0B43: samp cmd_ret
:ackid_727
0050: gosub @ackid_882
0050: gosub @ackid_819
0050: gosub @ackid_921
0AF8: samp add_message_to_chat "AdminsChecker: {FFFFFF}список админов успешно перезагружен." color 16729344
0B43: samp cmd_ret
:ackid_819
0AC8: 1@ = allocate_memory_size 30
0AC8: 12@ = allocate_memory_size 30
0AC8: 2@ = allocate_memory_size 24
0AC8: 3@ = allocate_memory_size 24
0AC8: 10@ = allocate_memory_size 7200
0AC8: 9@ = allocate_memory_size 64
0C11: memset destination 10@ value 0 size 7200
0085: 13@ = 10@ // (int)
0051: return
:ackid_882
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 12@
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 10@
0AC9: free_allocated_memory 9@
0006: 13@ = 0
0051: return
:ackid_921
00D6: if
0AAB: file_exists "CLEO\admins.txt"
004D: jump_if_false @ackid_1137
0A9A: 30@ = openfile "CLEO\admins.txt" mode "rt" // IF and SET
0A8C: write_memory 10@ size 1 value 32 virtual_protect 1
000A: 10@ += 1
:ackid_995
0001: wait 0 ms
00D6: if
0AD7: read_string_from_file 30@ to 1@ size 24 // IF and SET
004D: jump_if_false @ackid_1070
0C17: 7@ = strlen 1@
0AB1: call_scm_func @ackid_1200 2 1@ 7@
0C10: memcpy destination 10@ source 1@ size 7@
005A: 10@ += 7@ // (int)
000A: 8@ += 1
:ackid_1070
0AB1: call_scm_func @ackid_1344 3 1@ 0 24
0AD6: end_of_file 30@ reached
004D: jump_if_false @ackid_995
0A8C: write_memory 10@ size 1 value 32 virtual_protect 1
0A9B: closefile 30@
0085: 10@ = 13@ // (int)
000E: 8@ -= 1
0002: jump @ackid_1139
:ackid_1137
0A93: end_custom_thread
:ackid_1139
0051: return
:ackid_1141
0AF7: samp 0@ = get_base
0A8E: 1@ = 0@ + 32016 // int
0A8E: 2@ = 0@ + 2173568 // int
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
0AA6: call_method 1@ struct 2@ num_params 0 pop 0
0AB2: ret 0
:ackid_1200
000E: 1@ -= 1
005A: 0@ += 1@ // (int)
0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
00D6: if
0039: 2@ == 10
004D: jump_if_false @ackid_1256
0A8C: write_memory 0@ size 1 value 32 virtual_protect 0
:ackid_1256
0062: 0@ -= 1@ // (int)
000A: 1@ += 1
0AB2: ret 0
:ackid_1276
0340: set_text_draw_RGBA 2@ 3@ 4@ 5@
0349: set_text_draw_font 3
081C: draw_text_outline 1 RGBA 0 0 0 255
033F: set_text_draw_letter_size 0.35 1.27
045A: draw_text_1number 0@ 1@ GXT 'NUMBER' number 6@
0AB2: ret 0
:ackid_1344
000E: 2@ -= 1
0006: 3@ = 0
:ackid_1358
0A8C: write_memory 0@ size 1 value 1@ virtual_protect 0
000A: 0@ += 1
000A: 3@ += 1
001D: 3@ > 2@ // (int)
004D: jump_if_false @ackid_1358
0AB2: ret 0
000E: 2@ -= 1
0006: 3@ = 0
:ackid_1418
0A8D: 4@ = read_memory 1@ size 1 virtual_protect 0
0A8C: write_memory 0@ size 1 value 4@ virtual_protect 0
000A: 1@ += 1
000A: 0@ += 1
000A: 3@ += 1
001D: 3@ > 2@ // (int)
004D: jump_if_false @ackid_1418
0AB2: ret 0
потому что тут должно быть MISTER_GONWIK, и потому что не обновлены оффсеты на 0.3.7{0081FF}voditel_autobusa.
я не приписывал свое имя, водитель автобуса уже был там приписан, могу даже ссылку дать откуда качал, чужие копирайты не нарушаю:buba:потому что тут должно быть MISTER_GONWIK, и потому что не обновлены оффсеты на 0.3.7
{$CLEO}
0000: 'AW_Rage'
repeat
wait 400
until samp.available
0B34: samp register_client_command "setweather" to_label @SetWeather
0BDE: pause_thread 0
:SetWeather
0B35: 0@ = get_last_command_params
0C17: 1@ = strlen 0@
if 1@ > 0
then
0C1A: 0@ = atoi 0@
0BAC: 1@ = get_server_settings_ptr
005C: 1@ += 46 // оффсет погоды, или как это называется, я не знаю точно :)
0A8C: write_memory 1@ size 1 value 0@ virtual_protect 1
else
0AF8: samp add_message_to_chat "/setweather" color 0xFFFFFF
end
cmd_retКрашит когда ввожу /setweather :c
CLEO:{$CLEO} 0000: 'AW_Rage' repeat wait 400 until samp.available 0B34: samp register_client_command "setweather" to_label @SetWeather 0BDE: pause_thread 0 :SetWeather 0B35: 0@ = get_last_command_params 0C17: 1@ = strlen 0@ if 1@ > 0 then 0C1A: 0@ = atoi 0@ 0BAC: 1@ = get_server_settings_ptr 005C: 1@ += 46 0A8C: write_memory 1@ size 1 value 0@ virtual_protect 1 else 0AF8: samp add_message_to_chat "/setweather" color 0xFFFFFF end
Крашит когда ввожу /setweather :c
CLEO:{$CLEO} 0000: 'AW_Rage' repeat wait 400 until samp.available 0B34: samp register_client_command "setweather" to_label @SetWeather 0BDE: pause_thread 0 :SetWeather 0B35: 0@ = get_last_command_params 0C17: 1@ = strlen 0@ if 1@ > 0 then 0C1A: 0@ = atoi 0@ 0BAC: 1@ = get_server_settings_ptr 005C: 1@ += 46 // оффсет погоды, или как это называется, я не знаю точно :) 0A8C: write_memory 1@ size 1 value 0@ virtual_protect 1 else 0AF8: samp add_message_to_chat "/setweather" color 0xFFFFFF end
:SetWeather
SAMP.IsCommandTyped(0@)
if and
0AD4: 0@ = scan_string 0@ format "%d" 2@ // ID погоды
2@ > 0
then
0A8C: write_memory 0xC81320 size 2 value 2@ virtual_protect 1
else
0AF8: samp add_message_to_chat "/setweather" color 0xFFFFFF
end
cmdret
{$CLEO}
0000: 'AW_Rage'
repeat
wait 400
until samp.available
0B34: samp register_client_command "setweather" to_label @SetWeather
0BDE: pause_thread 0
:SetWeather
0B35: 0@ = get_last_command_params
0C17: 1@ = strlen 0@
if 1@ > 0
then
0C1A: 0@ = atoi 0@
0BAC: 1@ = get_server_settings_ptr
005C: 1@ += 46
0A8C: write_memory 1@ size 1 value 0@ virtual_protect 1
else
0AF8: samp add_message_to_chat "/setweather" color 0xFFFFFF
end
0B43: samp cmd_ret
005C предназначен для прибавления значения глобальной переменной к локальной.Когда пишу /setweather 1, крашит самп, в чем проблема?
0B56 записывает в память игры определенное значение, оно потом очищается => используй опкод с задержкой, к примеру, в 100 ms.Пожскажите как реализовать ускорение на велосипеде, (но не эмуляцию нажатия клавиши W ) может можно через опкод 0B56: set_game_key 0@ state 1@ ? но незнаю что там прописать, чтобы вообще хотябы велик ехал вперёд (без W)
Вроде разобрался за ускорение отвечает 0B56: set_game_key 16 state 128 а можно ли так зделать чтобы держа клавишу W тыкался опкод "0B56: set_game_key 16 state 128" (при удержании шифта всё норм, актёр начинает ускорятся на велике, а когда ставлю кнопку W то едит как обычно, получается что она перекрывает действие опкода, а мне нужна именно W)
Ты нигде в коде не задействуешь содержимое инклуда, так смысл его подключать?{$INCLUDE SF}
Это клео и число переменных ограничено, в вызовах команд в отличие от SCM вызовов используются переменные из основного цикла, по этому если дальше не обрабатываешь параметры команды можно юзать одну и ту же переменную на процитированном мной выше участке.18@ = scan_string 17@
Это лишняя проверкаplayer.Defined($PLAYER_ACTOR)