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

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

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

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Активный
Регистрация
14 Сен 2024
Сообщения
268
Система была слита разработчиком
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
 
777
Профессионал
Регистрация
2 Ноя 2024
Сообщения
724
куда пихать?
 
Активный
Регистрация
28 Авг 2024
Сообщения
199
OFFTOP

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

 
Заблокированный
Регистрация
19 Авг 2023
Сообщения
50
А я могу запихать в свой мод не Аризоны на свой лаунчер не Арз?
 
Пользователь
Регистрация
28 Мар 2024
Сообщения
58
Система была слита разработчиком
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
Сообщения
86
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
 
Активный
Регистрация
28 Авг 2024
Сообщения
199
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
OFFTOP

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

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

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

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