Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

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

Сен
299
490
Активный
Система была слита разработчиком
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
 
никогда не поменяю аву
Ноя
2,662
5,533
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
куда пихать?
 
Авг
50
129
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
А я могу запихать в свой мод не Аризоны на свой лаунчер не Арз?
 
Мар
69
25
Пользователь
Система была слита разработчиком
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
и толку ? ну всунешь ты в мод это , ничего не изменится тебе надо его в моде вызывать и функции переписывать ну и тупизм
 
Окт
159
27
Пользователь
Бля нарти тупо берет все системы отсюда в вставляет в свой мод и продаёт это за 300 р mda каждый бомж без денег может зделать такой-же мод как у тебя
 
Сверху