Система Voice (Arizona/Rodina)

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Активный
Регистрация
14 Сен 2024
Сообщения
282
Система была слита разработчиком
below

Pawn:
#define GetPlayerLauncher(%0) LauncherState[%0][0]

new Iterator:AzVoiceZone<MAX_PLAYERS>;

#include <a_samp>
#include <Pawn.RakNet>
#include modules/raknet/bitstream

enum _temp_
{
    bool:pVoiceKeyPressed,
    bool:pVoiceInitied
}
new pTemp[MAX_PLAYERS][_temp_];

new
    LauncherState[MAX_PLAYERS][2];

new
    AzVoiceZoneType[2][MAX_PLAYERS + MAX_PLAYERS + MAX_PLAYERS];

stock TextFind(const text[],const findtext[])
    return strfind(text, findtext) != -1;

stock GetString(const param1[], const param2[])
    return !strcmp(param1, param2, false);

stock SetString(const param_1[], const param_2[], size = 300)
    return strmid(param_1, param_2, 0, strlen(param_2), size);

public OnIncomingRPC(playerid, rpcid, BitStream:bs)
{
    switch(rpcid)
    {
        case 25:
        {
            new JoinData[PR_JoinData];
            BS_ReadJoinServer(bs, JoinData);

            SetString(PlayerName[playerid], JoinData[PR_NickName]);
            LauncherState[playerid][0] = GetString(JoinData[PR_ClientVersion], "Arizona PC") ? 1 : GetString(JoinData[PR_ClientVersion], "arizona-mobile") ? 2 : 0;
        }
    }
    return true;
}

public: createZoneAZVoice(zoneId, zoneTypeId, attachedId, const attachText[] = "", textColor = 0xffffffff, forplayerid = INVALID_PLAYER_ID)
{   
    if(forplayerid != INVALID_PLAYER_ID && !pTemp[forplayerid][pVoiceInitied])
        return false;

    if(zoneId == -1)
    {
        zoneId = Iter_Free(AzVoiceZone);
        Iter_Add(AzVoiceZone, zoneId);
    }

    if(zoneId >= MAX_VEHICLES + MAX_PLAYERS + MAX_PLAYERS)
        return (forplayerid != INVALID_PLAYER_ID ? SCM(forplayerid, 0xff0000ff, !"[DEBUG] Для CreateZoneAZVoice закончились слоты, передайте разработчику.") : _:false);

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 10,
        PR_UINT16, zoneId + 1,
        PR_UINT16, strlen(attachText),
        PR_STRING, attachText,
        PR_UINT32, textColor,
        PR_UINT8, AzVoiceZoneType[0][zoneId] = zoneTypeId,
        PR_UINT16, AzVoiceZoneType[1][zoneId] = attachedId,
        PR_UINT32, 0);

    if(forplayerid == INVALID_PLAYER_ID)
    {
        if(zoneTypeId == 2)
            sendVoiceData(bs, attachedId, 2, 252, attachedId, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

        else if(zoneTypeId == 3)
            sendVoiceData(bs, attachedId, 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
    }
    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    return BS_Delete(bs);
}

public: playZoneAZVoice(zoneId, const audioLink[], audioPlayTime, forplayerid = INVALID_PLAYER_ID)
{
    if(!Iter_Contains(AzVoiceZone, zoneId))
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 17,
        PR_UINT16, zoneId + 1,
        PR_BOOL, true,
        PR_UINT16, strlen(audioLink),
        PR_STRING, audioLink,
        PR_FLOAT, 0.0,
        PR_FLOAT, 0.7);

    if(audioPlayTime)
        BS_WriteValue(bs,
            PR_BOOL, true,
            PR_UINT32, audioPlayTime);

    if(forplayerid == INVALID_PLAYER_ID && AzVoiceZoneType[0][zoneId] == 3)
        sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
    
    return BS_Delete(bs);
}

public: removeZoneAZVoice(zoneId, bool:destroy = false, forplayerid = INVALID_PLAYER_ID)
{
    if(zoneId == -1)
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, destroy ? 11 : 13,
        PR_UINT16, zoneId + 1);
        
    if(forplayerid == INVALID_PLAYER_ID)
    {
        if(AzVoiceZoneType[0][zoneId] == 2)
            sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 2, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 2, 252, AzVoiceZoneType[1][zoneId], PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

        else if(AzVoiceZoneType[0][zoneId] == 3)
            sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
    }
    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    return BS_Delete(bs);
}

public: searchAZVoiceZoneID(zone_type, zone_attachid)
{
    for(new i; i < Iter_Count(AzVoiceZone); i++)
        if(AzVoiceZoneType[0][i] == zone_type && AzVoiceZoneType[1][i] == zone_attachid)
            return i;

    return INVALID_DATA_ID;
}

public: sendPlayerVoiceKey(playerid, keyid, const name[])
{
    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 6,
        PR_UINT8, keyid,
        PR_UINT16, strlen(name),
        PR_STRING, name);

    return sendVoiceData(bs, playerid, 2, 252, playerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), BS_Delete(bs);
}

stock toggleVoiceState(playerid, bool:status = false)
{
    if(!pTemp[playerid][pVoiceInitied])
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 19,
        PR_UINT16, 0,
        PR_BOOL, status);

    return sendVoiceData(bs, playerid, 2, 252, playerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), BS_Delete(bs);
}

IPacket:252(playerid, BitStream:bs)
{
    if(!GetPlayerLauncher(playerid) || !pTemp[playerid][pVoiceKeyPressed])
        return false;

    if(PI[playerid][pMuteTime])
        return SendMuteMessage(playerid);

    new channel[2], bytesNum, BitStream:bsn = BS_New();

    BS_ReadValue(bs, PR_IGNORE_BITS, 8, PR_UINT8, channel[0], PR_UINT8, channel[1], PR_IGNORE_BITS, 8);

    BS_WriteValue(bsn, PR_UINT8, 252, PR_UINT16, playerid, PR_UINT8, channel[0], PR_UINT8, channel[1], PR_UINT16, 1, PR_UINT16, MAX_PLAYERS + MAX_VEHICLES + playerid + 1);

    BS_GetNumberOfBytesUsed(bs, bytesNum);

    for(new i = 4, id; i < bytesNum; i++)
        BS_ReadValue(bs, PR_UINT8, id), BS_WriteValue(bsn, PR_UINT8, id);

    sendVoiceData(bsn, playerid, 2, INVALID_DATA_ID, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_UNRELIABLE_SEQUENCED, 5), BS_Delete(bsn);

    return true;
}

ICustomRPC:252(playerid, BitStream:bs)
{
    if(!GetPlayerLauncher(playerid))
        return false;

    new customid;
    BS_ReadValue(bs, PR_UINT8, customid);

    if(customid == 3 && !pTemp[playerid][pVoiceInitied])
        pTemp[playerid][pVoiceInitied] = true;

    else if(customid == 5)
    {
        static bool:status;
        BS_ReadValue(bs, PR_IGNORE_BITS, 8, PR_BOOL, status);
        pTemp[playerid][pVoiceKeyPressed] = status;
    }

    return true;
}

stock sendVoiceData(BitStream:bs, sendId, typeId, rpcId = INVALID_DATA_ID, forplayerid = INVALID_PLAYER_ID, PR_PacketPriority:priority = PR_HIGH_PRIORITY, PR_PacketReliability:reliability = PR_RELIABLE_ORDERED, orderingchannel = 0)
{
    foreach (new i: Player)
    {
        new target = forplayerid != INVALID_PLAYER_ID ? forplayerid : i;

        if (!pTemp[target][pVoiceInitied]) continue;

        if (forplayerid == INVALID_PLAYER_ID && ((typeId == 1 && !IsVehicleStreamedIn(sendId, i)) || (typeId == 2 && !IsPlayerStreamedIn(i, sendId))))
            continue;

        if (rpcId == INVALID_DATA_ID)
            PR_SendPacket(bs, target, priority, reliability, orderingchannel);

        else
            PR_SendRPC(bs, target, rpcId, priority, reliability, orderingchannel);

        if(forplayerid != INVALID_PLAYER_ID)
            break;
    }
    return true;
}

#pragma warning disable 219
 
waiting for GTA VI day 543
Профессионал
Регистрация
2 Ноя 2024
Сообщения
1,981
куда пихать?
 
Активный
Регистрация
28 Авг 2024
Сообщения
224
OFFTOP

АХХАХАХААХАХАХАХХАХАХАХАХ

 
Заблокированный
Регистрация
19 Авг 2023
Сообщения
50
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
А я могу запихать в свой мод не Аризоны на свой лаунчер не Арз?
 
Пользователь
Регистрация
28 Мар 2024
Сообщения
68
Система была слита разработчиком
below

Pawn:
#define GetPlayerLauncher(%0) LauncherState[%0][0]

new Iterator:AzVoiceZone<MAX_PLAYERS>;

#include <a_samp>
#include <Pawn.RakNet>
#include modules/raknet/bitstream

enum _temp_
{
    bool:pVoiceKeyPressed,
    bool:pVoiceInitied
}
new pTemp[MAX_PLAYERS][_temp_];

new
    LauncherState[MAX_PLAYERS][2];

new
    AzVoiceZoneType[2][MAX_PLAYERS + MAX_PLAYERS + MAX_PLAYERS];

stock TextFind(const text[],const findtext[])
    return strfind(text, findtext) != -1;

stock GetString(const param1[], const param2[])
    return !strcmp(param1, param2, false);

stock SetString(const param_1[], const param_2[], size = 300)
    return strmid(param_1, param_2, 0, strlen(param_2), size);

public OnIncomingRPC(playerid, rpcid, BitStream:bs)
{
    switch(rpcid)
    {
        case 25:
        {
            new JoinData[PR_JoinData];
            BS_ReadJoinServer(bs, JoinData);

            SetString(PlayerName[playerid], JoinData[PR_NickName]);
            LauncherState[playerid][0] = GetString(JoinData[PR_ClientVersion], "Arizona PC") ? 1 : GetString(JoinData[PR_ClientVersion], "arizona-mobile") ? 2 : 0;
        }
    }
    return true;
}

public: createZoneAZVoice(zoneId, zoneTypeId, attachedId, const attachText[] = "", textColor = 0xffffffff, forplayerid = INVALID_PLAYER_ID)
{  
    if(forplayerid != INVALID_PLAYER_ID && !pTemp[forplayerid][pVoiceInitied])
        return false;

    if(zoneId == -1)
    {
        zoneId = Iter_Free(AzVoiceZone);
        Iter_Add(AzVoiceZone, zoneId);
    }

    if(zoneId >= MAX_VEHICLES + MAX_PLAYERS + MAX_PLAYERS)
        return (forplayerid != INVALID_PLAYER_ID ? SCM(forplayerid, 0xff0000ff, !"[DEBUG] Для CreateZoneAZVoice закончились слоты, передайте разработчику.") : _:false);

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 10,
        PR_UINT16, zoneId + 1,
        PR_UINT16, strlen(attachText),
        PR_STRING, attachText,
        PR_UINT32, textColor,
        PR_UINT8, AzVoiceZoneType[0][zoneId] = zoneTypeId,
        PR_UINT16, AzVoiceZoneType[1][zoneId] = attachedId,
        PR_UINT32, 0);

    if(forplayerid == INVALID_PLAYER_ID)
    {
        if(zoneTypeId == 2)
            sendVoiceData(bs, attachedId, 2, 252, attachedId, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

        else if(zoneTypeId == 3)
            sendVoiceData(bs, attachedId, 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
    }
    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    return BS_Delete(bs);
}

public: playZoneAZVoice(zoneId, const audioLink[], audioPlayTime, forplayerid = INVALID_PLAYER_ID)
{
    if(!Iter_Contains(AzVoiceZone, zoneId))
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 17,
        PR_UINT16, zoneId + 1,
        PR_BOOL, true,
        PR_UINT16, strlen(audioLink),
        PR_STRING, audioLink,
        PR_FLOAT, 0.0,
        PR_FLOAT, 0.7);

    if(audioPlayTime)
        BS_WriteValue(bs,
            PR_BOOL, true,
            PR_UINT32, audioPlayTime);

    if(forplayerid == INVALID_PLAYER_ID && AzVoiceZoneType[0][zoneId] == 3)
        sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
   
    return BS_Delete(bs);
}

public: removeZoneAZVoice(zoneId, bool:destroy = false, forplayerid = INVALID_PLAYER_ID)
{
    if(zoneId == -1)
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, destroy ? 11 : 13,
        PR_UINT16, zoneId + 1);
       
    if(forplayerid == INVALID_PLAYER_ID)
    {
        if(AzVoiceZoneType[0][zoneId] == 2)
            sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 2, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 2, 252, AzVoiceZoneType[1][zoneId], PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

        else if(AzVoiceZoneType[0][zoneId] == 3)
            sendVoiceData(bs, AzVoiceZoneType[1][zoneId], 1, 252, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);
    }
    else
        sendVoiceData(bs, forplayerid, 2, 252, forplayerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5);

    return BS_Delete(bs);
}

public: searchAZVoiceZoneID(zone_type, zone_attachid)
{
    for(new i; i < Iter_Count(AzVoiceZone); i++)
        if(AzVoiceZoneType[0][i] == zone_type && AzVoiceZoneType[1][i] == zone_attachid)
            return i;

    return INVALID_DATA_ID;
}

public: sendPlayerVoiceKey(playerid, keyid, const name[])
{
    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 6,
        PR_UINT8, keyid,
        PR_UINT16, strlen(name),
        PR_STRING, name);

    return sendVoiceData(bs, playerid, 2, 252, playerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), BS_Delete(bs);
}

stock toggleVoiceState(playerid, bool:status = false)
{
    if(!pTemp[playerid][pVoiceInitied])
        return false;

    new BitStream:bs = BS_New();

    BS_WriteValue(bs,
        PR_UINT8, 19,
        PR_UINT16, 0,
        PR_BOOL, status);

    return sendVoiceData(bs, playerid, 2, 252, playerid, PR_HIGH_PRIORITY, PR_RELIABLE_ORDERED, 5), BS_Delete(bs);
}

IPacket:252(playerid, BitStream:bs)
{
    if(!GetPlayerLauncher(playerid) || !pTemp[playerid][pVoiceKeyPressed])
        return false;

    if(PI[playerid][pMuteTime])
        return SendMuteMessage(playerid);

    new channel[2], bytesNum, BitStream:bsn = BS_New();

    BS_ReadValue(bs, PR_IGNORE_BITS, 8, PR_UINT8, channel[0], PR_UINT8, channel[1], PR_IGNORE_BITS, 8);

    BS_WriteValue(bsn, PR_UINT8, 252, PR_UINT16, playerid, PR_UINT8, channel[0], PR_UINT8, channel[1], PR_UINT16, 1, PR_UINT16, MAX_PLAYERS + MAX_VEHICLES + playerid + 1);

    BS_GetNumberOfBytesUsed(bs, bytesNum);

    for(new i = 4, id; i < bytesNum; i++)
        BS_ReadValue(bs, PR_UINT8, id), BS_WriteValue(bsn, PR_UINT8, id);

    sendVoiceData(bsn, playerid, 2, INVALID_DATA_ID, INVALID_PLAYER_ID, PR_HIGH_PRIORITY, PR_UNRELIABLE_SEQUENCED, 5), BS_Delete(bsn);

    return true;
}

ICustomRPC:252(playerid, BitStream:bs)
{
    if(!GetPlayerLauncher(playerid))
        return false;

    new customid;
    BS_ReadValue(bs, PR_UINT8, customid);

    if(customid == 3 && !pTemp[playerid][pVoiceInitied])
        pTemp[playerid][pVoiceInitied] = true;

    else if(customid == 5)
    {
        static bool:status;
        BS_ReadValue(bs, PR_IGNORE_BITS, 8, PR_BOOL, status);
        pTemp[playerid][pVoiceKeyPressed] = status;
    }

    return true;
}

stock sendVoiceData(BitStream:bs, sendId, typeId, rpcId = INVALID_DATA_ID, forplayerid = INVALID_PLAYER_ID, PR_PacketPriority:priority = PR_HIGH_PRIORITY, PR_PacketReliability:reliability = PR_RELIABLE_ORDERED, orderingchannel = 0)
{
    foreach (new i: Player)
    {
        new target = forplayerid != INVALID_PLAYER_ID ? forplayerid : i;

        if (!pTemp[target][pVoiceInitied]) continue;

        if (forplayerid == INVALID_PLAYER_ID && ((typeId == 1 && !IsVehicleStreamedIn(sendId, i)) || (typeId == 2 && !IsPlayerStreamedIn(i, sendId))))
            continue;

        if (rpcId == INVALID_DATA_ID)
            PR_SendPacket(bs, target, priority, reliability, orderingchannel);

        else
            PR_SendRPC(bs, target, rpcId, priority, reliability, orderingchannel);

        if(forplayerid != INVALID_PLAYER_ID)
            break;
    }
    return true;
}

#pragma warning disable 219
и толку ? ну всунешь ты в мод это , ничего не изменится тебе надо его в моде вызывать и функции переписывать ну и тупизм
 
Пользователь
Регистрация
28 Окт 2024
Сообщения
158
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
 
Активный
Регистрация
28 Авг 2024
Сообщения
224
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
OFFTOP

давай сделай, хули ты выебываешься

 
Пользователь
Регистрация
20 Дек 2023
Сообщения
165
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
OFFTOP

хмм, а чего же ты так не делаешь?

 
Пользователь
Регистрация
2 Фев 2025
Сообщения
4
100 error cannot read from file modules/raknet/bistream чо делать
 
Сверху