- 12
- 14
- Версия MoonLoader
- .027.0-preview
Пытаюсь написать скрипт, который эмулирует урон от падения
Не очень хорошо знаком с серверной частью и что в таком случае нужно слать на сервак, чтобы он считал урон легетимным и не кикал античит
Пробовал отправлять инфу о получении урона от падения, отправлять синхру с нужным мне уменьшенным хп, но сервак всё равно кикает
Более того, если я получаю урон будучи афк (эмулирую афк тем что не отправляю пакеты) - при падении с высоты сервер регает урон без проблем
Конечные цели:
1. на клиенте не должно быть падения/слапа, хочу ограничиться манипуляциями с пакетами, со стороны так же движений быть не должно
2. возможность задавать урон самому (что при падении с высоты не получается сделать адекватно)
это точно возможно, так как при афк персонаж не двигается, а дамаг проходит
Что-то точно упускаю
Не очень хорошо знаком с серверной частью и что в таком случае нужно слать на сервак, чтобы он считал урон легетимным и не кикал античит
Пробовал отправлять инфу о получении урона от падения, отправлять синхру с нужным мне уменьшенным хп, но сервак всё равно кикает
Более того, если я получаю урон будучи афк (эмулирую афк тем что не отправляю пакеты) - при падении с высоты сервер регает урон без проблем
Конечные цели:
1. на клиенте не должно быть падения/слапа, хочу ограничиться манипуляциями с пакетами, со стороны так же движений быть не должно
2. возможность задавать урон самому (что при падении с высоты не получается сделать адекватно)
это точно возможно, так как при афк персонаж не двигается, а дамаг проходит
Что-то точно упускаю
afk nop:
function onSendPacket()
return not nop
end
lua:
require "lib.moonloader"
local sampev = require "lib.samp.events"
local encoding = require "encoding"
encoding.default = "CP1251"
local needEditHealth = false
local damage = 0
local function sendGiveTakeDamage(damage)
local bs = raknetNewBitStream()
if not bs then return false end
raknetBitStreamWriteBool(bs, true)
raknetBitStreamWriteInt16(bs, 65535)
raknetBitStreamWriteFloat(bs, damage)
raknetBitStreamWriteInt8(bs, 54)
raknetBitStreamWriteInt8(bs, 3)
raknetSendRpc(115, bs)
raknetDeleteBitStream(bs)
return true
end
function sampev.onSendPlayerSync(data)
if needEditHealth then
sendGiveTakeDamage(damage)
data.health = data.health-damage
needEditHealth = false
return data
end
end
function sampev.onSendCommand(cmd)
local _, _, damageStr = cmd:find("^/damage%s+(%d+)")
if damageStr then
damage = tonumber(damageStr)
if damage and damage > 0 then
needEditHealth = true
else
sampAddChatMessage("Использование: /damage [положительное число]", -1)
return false
end
end
end
Последнее редактирование: