Удаление строки audio stream
#1

Задался вопросом, рыскаю ответ 0 вариантов)
В общем тема такая ребят. Строка Audio Stream: URL, как эту строчку можно удалить скриптово.

В общем строка клиентическая, которая дает в чат урл музыки, которая воспроизводится. Может кто то уже нашел вариантик). Прошу ваши варианты)
Reply
#2

Только очистить чат
Reply
#3

еще варианты)
Reply
#4

Больше нет
Reply
#5

а стримеров нет да?
Reply
#6

Клиентская команда /audiomsg, я, честно сказать, не знаю как её отследить, но на серверах SAMP Stories это как-то реализовано..
Reply
#7

Quote:
Originally Posted by ope
Посмотреть сообщение
Команда /audiomsg
скриптово а не клиентом
Reply
#8

Quote:
Originally Posted by Кирилл
Посмотреть сообщение
а стримеров нет да?
что?
Reply
#9

Quote:
Originally Posted by DartfoL
Посмотреть сообщение
что?
мб он имел ввиду плагин
Reply
#10

В общем, в блокноте набросал что-то такое... Не компилировал даже. При превышении MAX_MESSAGES надо переиндексировать массив - реализовал это быдлокодом, ну да ладно. Тестировать надо.
pawn Код:
#define MAX_MESSAGES 100
#define SendClientMessage SCM_SendClientMessage
#define SendClientMessageToAll SCM_SendClientMessageToAll
#define PlayAudioStreamForPlayer SCM_PlayAudioStreamForPlayer
enum SCM_Data = {
    SCM_Text[144 + MAX_PLAYER_NAME + 16],
    SCM_Color,
    SCM_Sender[MAX_PLAYER_NAME],
};
new SCM_Page[MAX_MESSAGES][SCM_Data], SCM_Counter;
public OnPlayerText(playerid, text[])
{
    GetPlayerName(playerid, SCM_Page[SCM_Counter][SCM_Sender], MAX_PLAYER_NAME);
    format(SCM_Page[SCM_Counter][SCM_Text], sizeof(SCM_Page[SCM_Counter][SCM_Text]), "%s: {FFFFFF}%s", SCM_Page[SCM_Counter][SCM_Sender], text);
    SCM_Page[SCM_Counter][SCM_Color] = GetPlayerColor(playerid) >>> 8;
    SCM_Counter++;
    if(SCM_Counter == MAX_MESSAGES)
    {
        for(new i = 1; i <= MAX_MESSAGES; i++)
        {
            SCM_Page[i - 1][SCM_Color] = SCM_Page[i][SCM_Color];
            SCM_Page[i - 1][SCM_Text] = SCM_Page[i][SCM_Text];
        }
        SCM_Counter--;
    }
    return 1;
}
stock SCM_SendClientMessage(playerid, color, text[])
{
    SCM_Page[SCM_Counter][SCM_Text][0] = EOS;
    strcat(SCM_Page[SCM_Counter][SCM_Text], text);
    SCM_Page[SCM_Counter][SCM_Color] = color;
    SendClientMessage(playerid, SCM_Page[SCM_Counter][SCM_Color], SCM_Page[SCM_Counter][SCM_Text]);
    SCM_Counter++;
    if(SCM_Counter == MAX_MESSAGES)
    {
        for(new i = 1; i <= MAX_MESSAGES; i++)
        {
            SCM_Page[i - 1][SCM_Color] = SCM_Page[i][SCM_Color];
            SCM_Page[i - 1][SCM_Text] = SCM_Page[i][SCM_Text];
        }
        SCM_Counter--;
    }
    return 1;
}
stock SCM_SendClientMessageToAll(color, text[])
{
    SCM_Page[SCM_Counter][SCM_Text][0] = EOS;
    strcat(SCM_Page[SCM_Counter][SCM_Text], text);
    SCM_Page[SCM_Counter][SCM_Color] = color;
    SendClientMessageToAll(SCM_Page[SCM_Counter][SCM_Color], SCM_Page[SCM_Counter][SCM_Text]);
    SCM_Counter++;
    if(SCM_Counter == MAX_MESSAGES)
    {
        for(new i = 1; i <= MAX_MESSAGES; i++)
        {
            SCM_Page[i - 1][SCM_Color] = SCM_Page[i][SCM_Color];
            SCM_Page[i - 1][SCM_Text] = SCM_Page[i][SCM_Text];
        }
        SCM_Counter--;
    }
    return 1;
}
stock SCM_PlayAudioStreamForPlayer(playerid, url[], Float:PosX = 0.0, Float:PosY = 0.0, Float:PosZ = 0.0, Float:Distance = 50.0, Usepos = 0)
{
    PlayAudioStreamForPlayer(playerid, url, PosX, PosY, PosZ, Distance, Usepos);
    for(new i = 0; i <= SCM_Counter; i++) SendClientMessage(playerid, SCM_Page[SCM_Counter][SCM_Color], SCM_Page[SCM_Counter][SCM_Text]);
    return 1;
}
UPDATE: Не работает, надо доделать.
Reply
#11

Честно сказать - затея не очень хорошая.
Исправил код, не много оптимизировал.
pawn Код:
//============================================================================//
//Include
#if !defined _SCM_
#define _SCM_

#include <a_samp>
#define MAX_MESSAGES 100
#define MAX_MESSAGE_LENGHT (144 + MAX_PLAYER_NAME + 16)

enum SCM_Data
{
    SCM_Text[MAX_MESSAGE_LENGHT],
    SCM_Color
};
new SCM_Page[MAX_PLAYERS + 1][MAX_MESSAGES][SCM_Data], SCM_Counter[MAX_PLAYERS];

stock SCM_SendClientMessage(playerid, color, text[])
{
    format( SCM_Page[playerid][SCM_Counter[playerid]][SCM_Text], MAX_MESSAGE_LENGHT, "%s", text);
    SendClientMessage(playerid, (SCM_Page[playerid][SCM_Counter[playerid]][SCM_Color] = color), SCM_Page[playerid][SCM_Counter[playerid]][SCM_Text] );
    if((++SCM_Counter[playerid]) == MAX_MESSAGES) SCM_Counter[playerid] = 0;
    return 1;
}

stock SCM_SendClientMessageToAll(color, text[])
{
    format( SCM_Page[MAX_PLAYERS][0][SCM_Text], MAX_MESSAGE_LENGHT, "%s", text);
    SCM_Page[MAX_PLAYERS][0][SCM_Color] = color;
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
        SCM_Page[playerid][SCM_Counter[playerid]] = SCM_Page[MAX_PLAYERS][0];
        if((++SCM_Counter[playerid]) == MAX_MESSAGES) SCM_Counter[playerid] = 0;
    }
    SendClientMessageToAll(color, text);
    return 1;
}

stock SCM_ClearChat(playerid, no_msg = 0)
{
    SCM_Page[playerid] = SCM_Page[MAX_PLAYERS];
    SCM_Counter[playerid] = 0;
    if(no_msg == 0)
    {
        for(new i = 0; i < MAX_MESSAGES; i++) SendClientMessage(playerid, SCM_Page[playerid][i][SCM_Color], SCM_Page[playerid][i][SCM_Text]);
    }
}

stock SCM_PlayAudioStreamForPlayer(playerid, url[], Float:PosX = 0.0, Float:PosY = 0.0, Float:PosZ = 0.0, Float:Distance = 50.0, Usepos = 0)
{
    PlayAudioStreamForPlayer(playerid, url, PosX, PosY, PosZ, Distance, Usepos);
    for(new i = SCM_Counter[playerid]; i < MAX_MESSAGES; i++) SendClientMessage(playerid, SCM_Page[playerid][SCM_Counter[playerid]][SCM_Color], SCM_Page[playerid][SCM_Counter[playerid]][SCM_Text]);
    for(new i = 0; i < SCM_Counter[playerid]; i++) SendClientMessage(playerid, SCM_Page[playerid][i][SCM_Color], SCM_Page[playerid][i][SCM_Text]);
    return 1;
}

#define ClearChat SCM_ClearChat
#define SendClientMessage SCM_SendClientMessage
#define SendClientMessageToAll SCM_SendClientMessageToAll
#define PlayAudioStreamForPlayer SCM_PlayAudioStreamForPlayer

#endif
//============================================================================//
//GameMode

public OnPlayerConnect(playerid)
{
    ClearChat(playerid, 1);
    return 1;
}

public OnPlayerText(playerid, text[])
{
    new p_Name[MAX_PLAYER_NAME], p_Text[MAX_MESSAGE_LENGHT];
    GetPlayerName(playerid, p_Name, MAX_PLAYER_NAME);
    format( p_Text, MAX_MESSAGE_LENGHT, "%s: {FFFFFF}%s", p_Name, text);
    SendClientMessageToAll((GetPlayerColor(playerid) >>> 8), p_Text);
    //------                        TEST                                ------//
    if(text[0] == '1')
    {
        SCM_PlayAudioStreamForPlayer(playerid, "http://is-team.clan.su/Update/Sub-Mass-Histerics.mp3");
    }
    if(text[0] == '2')
    {
        SCM_SendClientMessage(playerid, 0x00FF00FF, "ololo123");
        SCM_SendClientMessage(playerid, 0x00FF00FF, "ololo");
    }
    if(text[0] == '3')
    {
        SCM_SendClientMessageToAll(0xFF0000FF, "G_ololo123");
        SCM_SendClientMessageToAll(0xFF0000FF, "G_ololo");
    }
    //------------------------------------------------------------------------//
    return 0;
}
Reply
#12

Из этого можно сделать удаление отдельных строк из чата, если довести до ума. Интересная затея.
Reply
#13

Сизисоф труд. Не с тем вы боритесь.
Reply
#14

\Documents\GTA San Andreas User Files\SAMP\chatlog.txt

Привет всем строка.
Reply
#15

Интересно, а получит ли мод доступ в папку, путь которой указан в моде, если путь находится вне папки с сервером и не на web-хостинге.
Reply
#16

Смотря с какой целью вы скрыть его хотите. Если чтобы ссылку не узнали, то это все равно ничего не даст. Если чтобы глаза не мозолило, то проще игрока оповестить о /audiomsg.

P.S. Выложенный выше код не вернет сообщения клиента. Да и оно того не стоит.
Reply
#17

Quote:
Originally Posted by stabker
Посмотреть сообщение
P.S. Выложенный выше код не вернет сообщения клиента. Да и оно того не стоит.
А должен.
Reply
#18

Нет, серьезно. На SAMP Stories, если у тебя отключены /audiomsg, то ничего в чат не пишет, а иначе рекомендует ввести команду чтобы не видеть это зеленое сообщение.. Вот. Может здесь есть кто-то из их администраторов, подскажут хотя бы как отследить
Reply
#19

Может они пишут рекомендации ввести /audiomsg вместо URL на аудио файл ?
PHP код:
PlayAudioStreamForPlayer(playerid"[текст рекомендации /audiomsg]");
PlayAudioStreamForPlayer(playerid"[ссылка на аудио файл]"); 
Если сообщения включены, то покажет обе строки, иначе не покажет ничего)
Reply
#20

м?
http://pastebin.com/Gxm70ZPA
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)