Синхронизация автомобилей

Ну погоди!

Активный
Автор темы
192
66
У меня имеется плагин на кастомные автомобили (снимает лимиты, всё с ним хорошо). В итоге, работает так: человек с плагином видит автомобиль, всё хорошо. Без плагина не видно автомобиль, в F5 нет. Как я могу сделать замену для игроков без лаунчера, условно, с 12500 -> 411
 
Решение
Как-то так примерно. Это для сервера, нужен Pawn.RakNet:
C:
const RAKNET_RPC_WORLDVEHICLEADD            = 164;
  
public OnOutgoingRPC(playerid, rpcid, BitStream:bs) // Сервер КЛИЕНТУ
{
    if(rpcid == RAKNET_RPC_WORLDVEHICLEADD)
    {
        /* проверка на то, играет ли игрок с лаунчера/имеет ли плагин/etc....... Играет - возвращаем просто true */
  
        new vehicleid;
        BS_ReadInt16(bs, vehicleid);

        if(!(400 <= GetVehicleModel(vehicleid) <= 611))
        {
            new offset;

            BS_GetWriteOffset(bs, offset);
            BS_SetWriteOffset(bs, 16);
            BS_WriteInt32(bs, 411); // 411 - infernus
            BS_SetWriteOffset(bs, offset);

            PR_SendRPC(bs, playerid...

вайега52

Налуашил состояние
Модератор
2,959
3,063
У меня имеется плагин на кастомные автомобили (снимает лимиты, всё с ним хорошо). В итоге, работает так: человек с плагином видит автомобиль, всё хорошо. Без плагина не видно автомобиль, в F5 нет. Как я могу сделать замену для игроков без лаунчера, условно, с 12500 -> 411
Такое обычно делается на стороне сервера. Создаются ассоциации для каждой кастомной модели на стандартную и при создании идет проверка играет чел с плагином для расширения тачек или без
 

Ну погоди!

Активный
Автор темы
192
66
Такое обычно делается на стороне сервера. Создаются ассоциации для каждой кастомной модели на стандартную и при создании идет проверка играет чел с плагином для расширения тачек или без
А вот за рулем условной BMW сидит 2 игрока. Как это показать то игроку без плагина?

Если что, r3
 

iogz

Известный
26
18
Как-то так примерно. Это для сервера, нужен Pawn.RakNet:
C:
const RAKNET_RPC_WORLDVEHICLEADD            = 164;
  
public OnOutgoingRPC(playerid, rpcid, BitStream:bs) // Сервер КЛИЕНТУ
{
    if(rpcid == RAKNET_RPC_WORLDVEHICLEADD)
    {
        /* проверка на то, играет ли игрок с лаунчера/имеет ли плагин/etc....... Играет - возвращаем просто true */
  
        new vehicleid;
        BS_ReadInt16(bs, vehicleid);

        if(!(400 <= GetVehicleModel(vehicleid) <= 611))
        {
            new offset;

            BS_GetWriteOffset(bs, offset);
            BS_SetWriteOffset(bs, 16);
            BS_WriteInt32(bs, 411); // 411 - infernus
            BS_SetWriteOffset(bs, offset);

            PR_SendRPC(bs, playerid, RAKNET_RPC_WORLDVEHICLEADD);
            return false;
        }
    }
    return true;
}

Но какой смысл от ваших плагинов на снятие лимитов со стороны сервера (если ты его имеешь в виду), когда можно обойтись работой с рпс WorldVehicleAdd?
Проще хранить в массиве список всех моделей машин, их модель со стороны обычного клиента и лаунчера, при создании машины создавать её в виде обычной модели гта са, а затем в OnOutgoingRPC заменять её на кастомную с лаунчера (с обычного клиента при этом ничего даже заменять не надо будет). Тогда код выше можно будет упростить
Ну разве что только с помощью какого-нибудь фастмана снимать лимиты на клиенте

Чем меньше зависимостей - тем лучше и меньше заморочек в будущем
 
Последнее редактирование:
  • Нравится
Реакции: Ну погоди!

madix1999

Новичок
1
0
Как-то так примерно. Это для сервера, нужен Pawn.RakNet:
C:
const RAKNET_RPC_WORLDVEHICLEADD            = 164;
 
public OnOutgoingRPC(playerid, rpcid, BitStream:bs) // Сервер КЛИЕНТУ
{
    if(rpcid == RAKNET_RPC_WORLDVEHICLEADD)
    {
        /* проверка на то, играет ли игрок с лаунчера/имеет ли плагин/etc....... Играет - возвращаем просто true */
 
        new vehicleid;
        BS_ReadInt16(bs, vehicleid);

        if(!(400 <= GetVehicleModel(vehicleid) <= 611))
        {
            new offset;

            BS_GetWriteOffset(bs, offset);
            BS_SetWriteOffset(bs, 16);
            BS_WriteInt32(bs, 411); // 411 - infernus
            BS_SetWriteOffset(bs, offset);

            PR_SendRPC(bs, playerid, RAKNET_RPC_WORLDVEHICLEADD);
            return false;
        }
    }
    return true;
}

Но какой смысл от ваших плагинов на снятие лимитов со стороны сервера (если ты его имеешь в виду), когда можно обойтись работой с рпс WorldVehicleAdd?
Проще хранить в массиве список всех моделей машин, их модель со стороны обычного клиента и лаунчера, при создании машины создавать её в виде обычной модели гта са, а затем в OnOutgoingRPC заменять её на кастомную с лаунчера (с обычного клиента при этом ничего даже заменять не надо будет). Тогда код выше можно будет упростить
Ну разве что только с помощью какого-нибудь фастмана снимать лимиты на клиенте

Чем меньше зависимостей - тем лучше и меньше заморочек в будущем
Дай контакты для свзязь стабой есть несколько вопросов)