Как зайти на Vice City с RakSamp Lite?

Статус
В этой теме нельзя размещать новые ответы.

Diqeey

Активный
Автор темы
444
61
Как зайти на Vice City с RakSamp Lite?
Куда копать хотя бы, чтобы найти ответ?
 
Решение
Есть одна проблема - у раксамп лайта нет отдельной функции в lua api для установки пароля от сервера.

Есть несколько способов как это решить:
1) Вызывать RakClient::SetPassword (Нужен указатель на pRakClient)
2) Менять значение через работу с памятью
3) В рантайме изменять и перезагружать конфиг (раньше, когда нужен был бот на ViceCity - делал именно так)

Ниже будет реализация с применение 2 способа
Этот код позволит подключиться к серверу ViceCity, но вас кикнет (Почему и как дальше - узнавайте сами)

Lua:
local ffi = require("ffi")

ffi.cdef[[
    int VirtualProtect(void* lpAddress, unsigned long dwSize, unsigned long flNewProtect, unsigned long* lpflOldProtect);
]]

local PAGE_EXECUTE_READWRITE = 0x40
local SERVER_PASSWORD_ADDRESS =...

minxty

Известный
911
749
ну, про перекинет на сервер, я написал что нужно спец скрипт мб есть такой

а про пароль, на сколько я знаю, там как то само чекается с лаунчера ты или нет и если да, то без пароля сервера заходит
та нет, как сервер может узнать с лаунчера ты или нет, когда ты даже не подключен к серверу?
 

Diqeey

Активный
Автор темы
444
61
легко, ставишь эмулятор лаунчера(луа скрипт), потом тпхаешься в аэропорт, берешь ботом пикапы, дальше нужное время и по пикапам опять

и нужен скрипт какой то, чтобы переподключало с ИП сервер арз на ИП вай сити

и считай ты на вс
ты пробовал?
 

atomlin

Известный
580
384
Есть одна проблема - у раксамп лайта нет отдельной функции в lua api для установки пароля от сервера.

Есть несколько способов как это решить:
1) Вызывать RakClient::SetPassword (Нужен указатель на pRakClient)
2) Менять значение через работу с памятью
3) В рантайме изменять и перезагружать конфиг (раньше, когда нужен был бот на ViceCity - делал именно так)

Ниже будет реализация с применение 2 способа
Этот код позволит подключиться к серверу ViceCity, но вас кикнет (Почему и как дальше - узнавайте сами)

Lua:
local ffi = require("ffi")

ffi.cdef[[
    int VirtualProtect(void* lpAddress, unsigned long dwSize, unsigned long flNewProtect, unsigned long* lpflOldProtect);
]]

local PAGE_EXECUTE_READWRITE = 0x40
local SERVER_PASSWORD_ADDRESS = 0x57A08A

function WRITE_MEMORY(ADDRESS, BYTES, SIZE)
    local NEW_PROTECTION = ffi.new('unsigned long[1]')
    local ADDRESS_IN_VOID = ffi.cast('void*', ADDRESS)
  
    ffi.C.VirtualProtect(ADDRESS_IN_VOID, SIZE, PAGE_EXECUTE_READWRITE, NEW_PROTECTION)
    ffi.copy(ADDRESS_IN_VOID, BYTES, SIZE)
    ffi.C.VirtualProtect(ADDRESS_IN_VOID, SIZE, NEW_PROTECTION[0], NEW_PROTECTION)
end


---

function onReceivePacket(ID, BS)
    if(ID == 220) then
        BS:ignoreBits(8)
        local SID = BS:readInt8()
        if(SID == 103) then
          
            local IP_LEN = BS:readInt8()
            BS:ignoreBits(24)
            IP = BS:readString(IP_LEN)
            BS:ignoreBits(32)
            local NICK_LEN = BS:readInt32()
            NICK = BS:readString(NICK_LEN)
          
            IP = IP..":7777"
          
            WRITE_MEMORY(SERVER_PASSWORD_ADDRESS, "uQTpBb27tJjAQM3R", string.len("uQTpBb27tJjAQM3R"))
            setServerAddress(tostring(IP))
            setBotNick(tostring(NICK))
        end
    end
end
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.