Гайд Пишем свой GM от пуль

Полезно?

  • Да

    Голосов: 3 60.0%
  • Нет(если нет напишите в коментарии почему?)

    Голосов: 2 40.0%

  • Всего проголосовало
    5
Забаненный
Статус
Оффлайн
Регистрация
18 Фев 2017
Сообщения
44
Реакции[?]
16
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Урок по разработке простенького гм от пуль.
Всяких фич типо настроек в .ini файле и прочей магии я не буду показывать, лень http://************.ru/.s/sm/2/smile.gif
Для разработки сиего чита вам понадобитсяsunny builder v3.2.2
Sunnybuilder link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

так же клео библиотека v4.1 и sampfuncs v5.3.3
CLEO link: cleo.li
SF link:
Пожалуйста, авторизуйтесь для просмотра ссылки.

открываем bin архив со скачаным sf и разархивируем папку sb data в такую же по пути //:диск/ваша директория/sunny builder/data/sa/
открываем sunny builder, тыкаем "создать" и в появившемся окне пишем следующее.

Начало:
{$cleo .cs}
{$include sf}
0000: godmode by ebuchiy garry
const // задаем имя нашей переменной чтобы не путатся в её номере
activestatus = 0@
end
repeat // делаем ни(мат) не делающий цикл с условием "долби пока самп не прогрузился"
wait 0 // ждём 0 мс, т.е ни(МАТ) не ждём)00 но циклу же нужно чем то занятся :d
until samp.avaible() // само условие
//
// блок реги команд и хуков
//
while true // общий цикл скрипта который будет работать постоянно
wait 0
// тело цикла
end

Это собственна и будет тело нашего будущего скрипта.
далее ебашим sf хук для перехвата входящих пакетов от сервера.
// пихаем регу хука в блок регистрации
0be4: raknet setup_incoming_packet_hook @packet_sync_hook
// ниже в том же блоке регаем нашу команду активации
0b34: samp register_client_command "pituh228" to_label @cmd_hook // где pituh228 имя вашей команды.

далее спускаемся в унитаз ниже нашего общего цикла и после end`a срём туда следующим говнокодом.
Код
:cmd_hook // метка срабатывающая при вводе нашей команды
if 0b61: samp is_local_player_spawned // если ты заспавнен то ныряем ниже
then
if activestatus == 0
then print "~b~gm ~w~by ~>~~y~ebuchiy garry~<~ - ~g~activated " time 3000
else print "~b~gm ~w~by ~>~~y~ebuchiy garry~<~ - ~r~deactivated" time 3000
end
0b12: activestatus = activestatus xor 1 // операция которая извращает байты наоборот :3
end
0b43: samp cmd_ret // объязательный возврат с команды чтоб не крашило
<img src="/.s/sm/2/tongue.gif" border="0" align="absmiddle" alt="tongue" /> acket_sync_hook // метка которую постоянно будет вызывать наш перехватчик(hook)
0001: wait 0
0be5: raknet 3@ = get_hook_param param_bitstream // получаем указатель на битстрим
0be5: raknet 2@ = get_hook_param param_packetid // получаем указатель на ид пакета
if 10@ == 206 // ловим пакет id_bullet_sync хранящий информацию о пулях
then
if activestatus == 1 // если гм активирован
then
7@ = samp.getsampplayeridbyactorhandle($player_actor) // получаем свой ид
0be9: raknet bit_stream 3@ reset_read_pointer // смещаем указатель чтения на начало
0be7: raknet 4@ = bit_stream_read 3@ type bs_type_short // читаем ид отправителя
0beb: raknet bit_stream 3@ ignore_bits 8 // не читаем ид пакета т.к он нам известен
0be7: raknet 5@ = bit_stream_read 3@ type bs_type_byte // читаем тип пуль
0be7: raknet 6@ = bit_stream_read 3@ type bs_type_short // читаем ид жертвы
// это неполная часть структуры пуль но информация дальше нам не нужна
if and // чекаем что эта пуля не в землю/воздух и она должна попасть именно у вас!
5@ == 1
003b: 6@ == 7@
then 0be0: raknet hook_ret false // блокируем пакет с пулей
end
end
end
0be0: raknet hook_ret true // разрешение на пропуск всех пакетов по умолчанию

жмякаем f6 для компиляций и вуаля, скрипт готов http://************.ru/.s/sm/2/smile.gif
если вы сделали всё правильно то в появишемся окошке не должно быть никаких ошибок.
если возникнут какие то вопросы либо проблемы обращайтесь.
 
Сверху Снизу