Как отправлять данные на сервер с самп и получать их?

Bene //

Участник
Автор темы
128
6
Версия MoonLoader
.026-beta
Всем привет.
Например есть свой сайт(сервер) и в нем есть таблица
["Name"] = "01.12.2022".
И заходит любой игрок с этим скриптом и чтобы при каждом заходе скрипт изменял данные "01.12.2022" на сайте(сервере) на дату которая сейчас актуальная. Так можно сделать?
 

neverlane

t.me/neverlane00
Друг
1,010
1,163
1 способ: http
изучай любой яп(можно и на луа так-то но там норм либу сам ищи) и пиши на нем сервак, в луа можно requests(синхронно) для запросов или обертку с effil для асинхронных

2 способ: snet
снет это круто и модно, можешь даже на луа сервак сделать
 
  • Вау
  • Нравится
Реакции: YarikVL, de_clain и sat0ry

sat0ry

Известный
1,092
296
1 способ: http
изучай любой яп(можно и на луа так-то но там норм либу сам ищи) и пиши на нем сервак, в луа можно requests(синхронно) для запросов или обертку с effil для асинхронных

2 способ: snet
снет это круто и модно, можешь даже на луа сервак сделать
Можно по подробнее об snet?
 

chapo

чопа сребдс // @moujeek
Модератор
8,868
11,577
Lua:
local snet = require('snet')
local SNetClient, bstream = snet.client('127.0.0.1', 11321), snet.bstream

function main()
    while not isSampAvailable() do wait(0) end
    send()
    sampAddChatMessage('sended', -1)
    while true do
        wait(0)
        SNetClient:process()
    end
end

function send()
    local name = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))
    local bs = bstream.new()
    bs:write(BS_INT16, #name)
    bs:write(BS_STRING, name)
    SNetClient:send(0, bs, SNET_SYSTEM_PRIORITY)
end
TypeScript:
import { SNetServer, BitStream, SNET_PRIORITES } from './snet';
const server = new SNetServer({ port: 11321 });
const users = {};
enum Packet {
    UpdateUser
}

server.on('ready', () => {
    console.log('Server started');
});

server.on('onReceivePacket', async (id, bs, ip, port) => {
    if (id == Packet.UpdateUser) {
        const name = bs.readString(bs.readInt16());
        users[name] = Date.now();
        console.log(`User: ${name}, date: ${users[name]} = ${new Date(users[name])}`);
    };
});

server.listen();
1682786068849.png
 

chapo

чопа сребдс // @moujeek
Модератор
8,868
11,577
Еще один пример с использованием Express.js
Lua:
local requests = require('requests')

function main()
    while not isSampAvailable() do wait(0) end
    requests.post('http://127.0.0.1:3000/', {
        headers = {
            ['Content-Type'] = 'application/json'
        },
        data = {
            name = 'chapo'
        }
    })
    sampAddChatMessage('sended', -1)
    wait(-1)
end
JavaScript:
const express = require("express");
const app = express();
app.use(express.json());

const users = {};

app.post("/", (request, response) => {
    if(!request.body.name) return response.sendStatus(400);
    const name = request.body.name;
    users[name] = new Date();
    console.log(`User: ${name}, date: ${users[name]}`);
    return response.sendStatus(200);
});

app.listen(3000);
1682787436716.png