Forum

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Forum » Файловый архив » VMobile


VMobile

Сообщений 1 страница 6 из 6

1


Временно заморожен.

Версия 1.0 не стабильна, устранение проблем.

Обновление 09.12.23
1.Исправлен краш при спавне персонажа
2.Исправлены вылеты игры
3.Переведено на платформу выше
4.Полное подключение к миру(планируется загрузка камеры)
5.Убраны педы

apk и кеш будут доступны скорее всего в следующем году

0

2

Свернутый текст

0

3

Выделяется среди других

Свернутый текст

0

4


Delete

0

5

Небольшие изменения в клиенте.

Формат загрузки изменился даже очень, собран под новую платформу android.

Первый набросок лаунчер accurate rp с полной загрузку без выбора раздела.
Не как в мобильном samp. Лаунчер будет полностью готов к марту или апрелю следующего года.

За это время планируется реализовать api часть и версию(скорее всего будет браться исходный код samp 0.3d)
Но это не точно, проблем куча но первые релизы уже есть и это хорошо.

Скоро приобрету планшет для тестов, возможно буду включать демонстрацию экрана и транслировать на ютуб - https://www.youtube.com/channel/UCOjbCb … DHizgNeKtA все тесты.

0

6

Клиент не выйдет на андроид, нету мотивации нету желания.
Так же не вижу смысла выкладывать исходник приложения и кеш так же исходник клиента.
Ранее слитый исходник удален, оставлю исходник Богдана - https://github.com/fet1sov/VCMP-Android/tree/master дерзайте умники реализовывайте.


Оставлю варианты подключения RakNet

Вариант №1
Этот вариант без рандомного ник нейма

Код
Код:
#include <iostream>
#include "RakNet\RakPeerInterface.h"
#include "RakNet\MessageIdentifiers.h"
#include "RakNet\BitStream.h"

int main()
{
    RakNet::RakPeerInterface *peer = RakNet::RakPeerInterface::GetInstance();

    RakNet::SocketDescriptor sd;
    peer->Startup(1, &sd, 1);

    RakNet::ConnectionAttemptResult res = peer->Connect("127.0.0.1", 60000, 0, 0);

    switch (res)
    {
    case RakNet::CONNECTION_ATTEMPT_STARTED:
        std::cout << "Connection attempt started" << std::endl;
        break;
    case RakNet::CONNECTION_ATTEMPT_ALREADY_IN_PROGRESS:
        std::cout << "Connection attempt already in progress" << std::endl;
        break;
    case RakNet::ALREADY_CONNECTED_TO_ENDPOINT:
        std::cout << "Already connected to endpoint" << std::endl;
        break;
    }

    RakNet::Packet *packet;
    while (1)
    {
        for (packet = peer->Receive(); packet; peer->DeallocatePacket(packet), packet = peer->Receive())
        {
            switch (packet->data[0])
            {
            case ID_CONNECTION_REQUEST_ACCEPTED:
                std::cout << "Connected to server" << std::endl;
                break;
            case ID_CONNECTION_ATTEMPT_FAILED:
                std::cout << "Connection attempt failed" << std::endl;
                break;
            }
        }
    }

    RakNet::RakPeerInterface::DestroyInstance(peer);

    return 0;
}

Вариант №2
Этот вариант создает игрока с рандомным ник неймом как в билде 69

Код
Код:
#include "RakNet\RakPeerInterface.h"
#include <iostream>
#include <random>

int main()
{
    RakNet::RakPeerInterface *peer = RakNet::RakPeerInterface::GetInstance();

    RakNet::SocketDescriptor sd;
    peer->Startup(1, &sd, 1);

    peer->SetMaximumIncomingConnections(1);

    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1000, 9999);
    std::string randomNick = "Player" + std::to_string(dis(gen));

    std::cout << "Player connected with nick: " << randomNick << std::endl;

    while (true)
    {
        RakNet::Packet *packet = peer->Receive();
        if (packet)
        {
            switch (packet->data[0])
            {
            // Обработка данных
            }

            peer->DeallocatePacket(packet);
        }
    }

    RakNet::RakPeerInterface::DestroyInstance(peer);

    return 0;
}

Вариант на сокетах

Код
Код:
#include <iostream>
#include <string>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

int main() {
    WSADATA wsaData;
    DWORD dwRes = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (dwRes != 0) {
        std::cerr << "WSAStartup failed: " << dwRes << std::endl;
        return 1;
    }

    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == INVALID_SOCKET) {
        std::cerr << "Socket creation failed: " << WSAGetLastError() << std::endl;
        WSACleanup();
        return 1;
    }

    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(5555); // Порт сервера
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // IP адрес сервера

    if (connect(sock, (sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
        std::cerr << "Connection failed: " << WSAGetLastError() << std::endl;
        closesocket(sock);
        WSACleanup();
        return 1;
    }

    std::cout << "Connected to server!" << std::endl;

    // Ваш код для общения с сервером

    closesocket(sock);
    WSACleanup();

    return 0;
}

Вариант от моей библиотеки
Библиотеку сливать не буду, но код предоставлю как пример.
В обновлении используется данный вариант.
Библиотека в связке с RakNet

Код
Код:
#include <iostream>
#include "vicemp.h"

int main() {
    // Адрес сервера и порт
    const char* serverAddr = "127.0.0.1";
    const int serverPort = 5555;

    // Имя игрока и пароль
    const char* playerName = "__Player_" + std::to_string(rand() % 1000) + std::to_string(rand() % 1000);
    const char* password = "";

    // Подключение к сервер
    if (!vicemp::ConnectRPC(serverAddr, serverPort, playerName, password)) {
        std::cout << "Ошибка подключения к серверу!" << std::endl;
        return 1;
    }
	std::cout << "Connected to server" << std::endl;

    // Дальнейшие действия на стороне клиента

    return 0;
}
Методы и классы, на случай ошибок.
Код:
class rakpeerinterface {
public:
    // Метод для создания экземпляра rakpeerinterface
    static rakpeerinterface* CreateInstance();

    // Метод для установки максимального количества подключений
    virtual void SetMaximumIncomingConnections(unsigned short number) = 0;

    // Метод для установки порта для прослушивания входящих подключений
    virtual bool Startup(unsigned short maxConnections, int _threadSleepTimer, unsigned short port, int _socketFamily) = 0;

    // Метод для отправки данных
    virtual void Send(const char *data, int length, int priority, int reliability, char orderingChannel, PacketReliability redundancy) = 0;
};

// Реализация класса rakpeerinterface
class RakPeerInterfaceImpl : public rakpeerinterface {
public:
    // Реализация метода для создания экземпляра rakpeerinterface
    static rakpeerinterface* CreateInstance() {
        return new RakPeerInterfaceImpl();
    }

    // Реализация метода для установки максимального количества подключений
    void SetMaximumIncomingConnections(unsigned short number) override {
        // Реализация
    }

    // Реализация метода для установки порта для прослушивания входящих подключений
    bool Startup(unsigned short maxConnections, int _threadSleepTimer, unsigned short port, int _socketFamily) override {
        // Реализация
        return true;
    }

    // Реализация метода для отправки данных
    void Send(const char *data, int length, int priority, int reliability, char orderingChannel, PacketReliability redundancy) override {
        // Реализация
    }
};

Исходники переданы другим лицам, всем удачи.

Закрыто!

0


Вы здесь » Forum » Файловый архив » VMobile