Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Голосовой чат

, Нужно переделать уже готовый плагин.
staff2517
сообщение 13.12.2014, 15:16
Сообщение #1
Стаж: 12 лет

Сообщений: 275
Благодарностей: 5
Полезность: 0

Здравствуйте форумчане, нужно переделать плагин голосового чата.
В плагине уже реализовано следующие:
живые СТ слышат живых СТ, Т
живые Т слышат живых Т, СТ
мертвые СТ слышат мертвых СТ, Т
мертвые Т слышат мертвых Т, СТ
И еще в плагине есть функция для того чтобы дать инфу. То-есть в момент смерти дается 5 сек для того чтобы сказать инфу, эти 5 сек вас еще продолжают слышать живые игроки. И после истечения 5 сек игроку пишется сообщение в чат "[VM] Время для инфы ИСТЕКЛО"

Нужно сделать чтобы:
живые СТ слышали только живых СТ
живые Т слышали только живых Т
мертвые СТ слышали мертвых СТ, Т
мертвые Т слышали мертвых Т, СТ
И при этом оставить функцию для инфы, То-есть чтобы в момент смерти первые 5 сек игрока слышали его живые тимейты.

Помогите реализовать, буду очень благодарен.
ps.gif Если не все так просто как я думаю:) я готов оплатить работу скриптеров.
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define client_print_color ColorChat
#define print_team_red RED
#endif

#define PLUGIN "Voice Manager"
#define VERSION "1.3 final"
#define AUTHOR "Stimul"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

new g_bIsConnected;
new g_bIsAlive;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", true);
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", true);

register_forward(FM_Voice_SetClientListening, "fw_Voice_SetClientListening");
}

public fw_PlayerSpawn_Post(id)
if(is_user_alive(id))
set_bit(g_bIsAlive, id);

public fw_PlayerKilled_Post(id)
set_task(5.0, "DelaySetDeath", id);

public DelaySetDeath(id)
{
if(!is_user_alive(id))
{
reset_bit(g_bIsAlive, id);
client_print_color(id, print_team_red, "^1[^4VM^1] ^4Время для инфы ^3ИСТЕКЛО.");
}
}

public client_putinserver(id)
set_bit(g_bIsConnected, id);

public client_disconnect(id)
{
reset_bit(g_bIsConnected, id);
reset_bit(g_bIsAlive, id);
}

public fw_Voice_SetClientListening(receiver, sender, listen)
{
if(get_bit(g_bIsConnected, receiver) && get_bit(g_bIsConnected, sender) && receiver != sender)
{
if((get_bit(g_bIsAlive, receiver) && !get_bit(g_bIsAlive, sender)) || (!get_bit(g_bIsAlive, receiver) && get_bit(g_bIsAlive, sender)))
{
engfunc(EngFunc_SetClientListening, receiver, sender, false);
return FMRES_SUPERCEDE;
}
}

return FMRES_IGNORED;
}

Прикрепленные файлы:
Прикрепленный файл  voice_manager.sma ( 1,8 килобайт ) Кол-во скачиваний: 31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя adva
сообщение 20.2.2015, 23:58
Сообщение #2


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

чё-то не получается локально скомпилить, виснет компилятор(((

на агхл такая тема, это норм?

Цитата
voice_manager.sma(9) : warning 201: redefinition of constant/macro (symbol "print_team_red")
Header size: 976 bytes
Code size: 5492 bytes
Data size: 876 bytes
Stack/heap size: 16384 bytes; estimated max. usage=339 cells (1356 bytes)
Total requirements: 23728 bytes

1 Warning.
Done.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lac
сообщение 21.2.2015, 0:34
Сообщение #3


Стаж: 15 лет

Сообщений: 34
Благодарностей: 41
Полезность: < 0

Было бы круто, если бы реализовали возможность говорить по микрафону при достигнутом Званий. Готов оплатить за реализацию.

Отредактировал: Lac, - 21.2.2015, 0:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя primm
сообщение 21.2.2015, 1:34
Сообщение #4


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

Цитата(adva @ 21.2.2015, 1:58) *
чё-то не получается локально скомпилить, виснет компилятор(((

на агхл такая тема, это норм?

Тут у тебя два варианта. Либо добавить в код сток колорчата, либо искать инклюд с которым скомпилит.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Dante's
сообщение 21.2.2015, 3:42
Сообщение #5
Стаж: 15 лет

Сообщений: 98
Благодарностей: 90
Полезность: 370

Цитата(Lac @ 21.2.2015, 1:34) *
Было бы круто, если бы реализовали возможность говорить по микрафону при достигнутом Званий. Готов оплатить за реализацию.


Плюсую.

Если кто-то опытный возметься за реализации такой гибкой системы, то можно вскладчину профинансировать наверное со всех понемногу, думаю что желающие найдуться. good.gif Или это идея для тех кто пишет плагины на продажу derisive.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lac
сообщение 21.2.2015, 21:14
Сообщение #6


Стаж: 15 лет

Сообщений: 34
Благодарностей: 41
Полезность: < 0

Цитата(Dante's @ 21.2.2015, 1:42) *
Плюсую.

Если кто-то опытный возметься за реализации такой гибкой системы, то можно вскладчину профинансировать наверное со всех понемногу, думаю что желающие найдуться. good.gif Или это идея для тех кто пишет плагины на продажу derisive.gif

Один человек отписал мне и готов был сделать за 100руб, но я в итоге отказался исключительно из его общения с заказчиком.

Выходит что не так уж сложная система там что бы такое реализовать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Landir163
сообщение 24.2.2015, 21:21
Сообщение #7


Стаж: 11 лет

Сообщений: 203
Благодарности: выкл.

А кто может взяться переделать плагин Voice Admin Only - https://forums.alliedmods.net/showthread.php?t=84335
Суть в том, чтобы все слышали друг друга, а у админов еще и свой был чат звуковой.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 24.2.2015, 21:24
Сообщение #8


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Landir163, такое есть в Voices Management
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 28.2.2015, 16:29
Сообщение #9


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

а реально ли допилить плагин, который выложен в 1 посту, чтобы админы могли слышать всех и говорить всем, независимо от состояния жизни/смерти ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 28.2.2015, 16:32
Сообщение #10


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

adva, проще эти правки интегрировать в Voises managment
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 28.2.2015, 17:07
Сообщение #11


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Цитата(Bloo @ 28.2.2015, 17:32) *
adva, проще эти правки интегрировать в Voises managment


Stimul'у лень)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 28.2.2015, 18:24
Сообщение #12


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Пробуйте:
Код:
/*
* Обновление 28.02.2015
* v1.4 - Добавлен иммунитет для админов
*
* Если ваша версия AMXX ниже 1.8.3, используйте colorchat.inc из архива
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define client_print_color ColorChat
#define print_team_red RED
#endif

#define PLUGIN "Voice Manager"
#define VERSION "1.4"
#define AUTHOR "Stimul"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

#define ACCESS_LEVEL ADMIN_IMMUNITY // Все флаги смотрите в amxconst.inc

new g_bIsConnected;
new g_bIsAlive;
new g_bIsAdmin;

new g_pImmunity;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

/*
Иммунитет для админов
* 1 - включен
* 0 - выключен
*/

g_pImmunity = register_cvar("vm_immunity", "1");

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", true);
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", true);

register_forward(FM_Voice_SetClientListening, "fw_Voice_SetClientListening");
}

public fw_PlayerSpawn_Post(id)
if(is_user_alive(id))
set_bit(g_bIsAlive, id);

public fw_PlayerKilled_Post(id)
set_task(5.0, "DelaySetDeath", id);

public DelaySetDeath(id)
{
if(!is_user_alive(id))
{
reset_bit(g_bIsAlive, id);
client_print_color(id, print_team_red, "^1[^4VM^1] ^4Время для инфы ^3ИСТЕКЛО.");
}
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);
get_user_flags(id) & ACCESS_LEVEL ? set_bit(g_bIsAdmin, id) : reset_bit(g_bIsAdmin, id);
}

public client_disconnect(id)
{
reset_bit(g_bIsConnected, id);
reset_bit(g_bIsAlive, id);
}

public fw_Voice_SetClientListening(receiver, sender, listen)
{
if(get_bit(g_bIsConnected, receiver)
&& get_bit(g_bIsConnected, sender)
&& receiver != sender
&& get_pcvar_num(g_pImmunity)
&& (!get_bit(g_bIsAdmin, receiver)
|| !get_bit(g_bIsAdmin, sender)))
{
if((get_bit(g_bIsAlive, receiver)
&& !get_bit(g_bIsAlive, sender))
|| (!get_bit(g_bIsAlive, receiver)
&& get_bit(g_bIsAlive, sender)))
{
engfunc(EngFunc_SetClientListening, receiver, sender, false);
return FMRES_SUPERCEDE;
}
}

return FMRES_IGNORED;
}

Прикрепленный файл  voice_manager.rar ( 2,44 килобайт ) Кол-во скачиваний: 28


Отредактировал: Stimul1, - 28.2.2015, 18:28
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя adva
сообщение 28.2.2015, 18:30
Сообщение #13


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Цитата(Stimul1 @ 28.2.2015, 19:24) *
Пробуйте:


аттачи не прикрепились(

а еще хотел спросить, что там реализовано?

Цитата
живые СТ слышат живых СТ, Т
живые Т слышат живых Т, СТ
мертвые СТ слышат мертвых СТ, Т
мертвые Т слышат мертвых Т, СТ
инфа 5 сек
админы слышата всех и могут говорить всем? если да, то использовать могут только админы с admin_immunity?


Отредактировал: adva, - 28.2.2015, 18:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kennybear
сообщение 28.2.2015, 18:33
Сообщение #14


Стаж: 12 лет

Сообщений: 1394
Благодарностей: 710
Полезность: 593

Меценат Меценат

Stimul1, спасибо за ваши плагины,очень нравится качество ваших работ)


АРЕНА ГЕЙМЕРОВ [21] 2014-2020
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 28.2.2015, 20:43
Сообщение #15


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Цитата
живые СТ слышат живых СТ, Т
живые Т слышат живых Т, СТ
мертвые СТ слышат мертвых СТ, Т
мертвые Т слышат мертвых Т, СТ

adva, ну это какая-то ерунда, у меня мозг разрывается, когда я пытаюсь сделать такую проверку.
В самом верху исходника прочитай, что я сегодня реализовал.

kennybear, пиши в тему, а не в ЛС.
Попробуй заменить:
Код:
if(!is_user_alive(id))
===>
Код:
if(get_bit(g_bIsConnected, id) && !is_user_alive(id))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 28.2.2015, 21:16
Сообщение #16


Иконка группы

Стаж: 12 лет

Сообщений: 2543
Благодарностей: 1676
Полезность: 819

Меценат Меценат

Цитата(Stimul1 @ 28.2.2015, 21:43) *


можешь для меня лично сделать так:
живые СТ слышат живых СТ, Т
живые Т слышат живых Т, СТ
мертвые СТ слышат всех
мертвые Т слышат всех
инфа 5 сек
админы слышат всех и могут говорить всем
флаг для админа ADMIN_BAN


денежкой помогу!

Отредактировал: adva, - 28.2.2015, 21:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 28.2.2015, 22:05
Сообщение #17


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

adva, не люблю делать плагины, которые не могу сам протестировать.
Что-то нагородил, тестируй, скажешь, кто с кем может говорить и есть ли время для инфы.
Код:
/*
* Обновление 28.02.2015
* v1.4 - Добавлен иммунитет для админов
* v1.5 - Исправлен выход индекса за пределы массива
* v1.6 - Сделано это:
* можешь для меня лично сделать так:
* живые СТ слышат живых СТ, Т
* живые Т слышат живых Т, СТ
* мертвые СТ слышат всех
* мертвые Т слышат всех
* инфа 5 сек
* админы слышат всех и могут говорить всем
* флаг для админа ADMIN_BAN
*
* Если ваша версия AMXX ниже 1.8.3, используйте colorchat.inc из архива
*/

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define client_print_color ColorChat
#define print_team_red RED
#endif

#define PLUGIN "Voice Manager"
#define VERSION "1.6"
#define AUTHOR "Stimul"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

#define m_iTeam 114
#define fm_cs_get_user_team_index(%1) get_pdata_int(%1, m_iTeam)

#define MAX_CLIENTS 32

#define ACCESS_LEVEL ADMIN_BAN // Все флаги смотрите в amxconst.inc

new g_bIsConnected;
new g_bIsAlive;
new g_bIsAdmin;
new g_bInfo;

new g_iTeam[MAX_CLIENTS+1];

new g_pImmunity;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

/*
Иммунитет для админов
* 1 - включен
* 0 - выключен
*/

g_pImmunity = register_cvar("vm_immunity", "1");

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", true);
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", true);

register_forward(FM_Voice_SetClientListening, "fw_Voice_SetClientListening");
}

public fw_PlayerSpawn_Post(id)
{
if(is_user_alive(id))
{
set_bit(g_bIsAlive, id);

g_iTeam[id] = fm_cs_get_user_team_index(id);
}
}

public fw_PlayerKilled_Post(id)
{
reset_bit(g_bIsAlive, id);
set_bit(g_bInfo, id);
set_task(5.0, "OffTimeInfo", id);
}

public OffTimeInfo(id)
{
if(get_bit(g_bIsConnected, id))
{
client_print_color(id, print_team_red, "^1[^4VM^1] ^4Время для инфы ^3ИСТЕКЛО.");
reset_bit(g_bInfo, id);
}
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);
get_user_flags(id) & ACCESS_LEVEL ? set_bit(g_bIsAdmin, id) : reset_bit(g_bIsAdmin, id);
reset_bit(g_bInfo, id);
}

public client_disconnect(id)
{
reset_bit(g_bIsConnected, id);
reset_bit(g_bIsAlive, id);
}

public fw_Voice_SetClientListening(receiver, sender, listen)
{
if(get_bit(g_bIsConnected, receiver) && get_bit(g_bIsConnected, sender) && receiver != sender && get_pcvar_num(g_pImmunity) && (!get_bit(g_bIsAdmin, receiver) || !get_bit(g_bIsAdmin, sender)))
{
if(get_bit(g_bInfo, sender))
return FMRES_IGNORED;

if(get_bit(g_bIsAlive, receiver) && g_iTeam[receiver] == 2 && ((get_bit(g_bIsAlive, sender) && g_iTeam[sender] == 2) || (get_bit(g_bIsAlive, sender) && g_iTeam[sender] == 1)))
return FMRES_IGNORED;

else if(get_bit(g_bIsAlive, receiver) && g_iTeam[receiver] == 1 && ((get_bit(g_bIsAlive, sender) && g_iTeam[sender] == 1) || (get_bit(g_bIsAlive, sender) && g_iTeam[sender] == 2)))
return FMRES_IGNORED;

else if((!get_bit(g_bIsAlive, receiver) && g_iTeam[receiver] == 1) || (!get_bit(g_bIsAlive, receiver) && g_iTeam[receiver] == 2))
return FMRES_IGNORED;

else
{
engfunc(EngFunc_SetClientListening, receiver, sender, false);
return FMRES_SUPERCEDE;
}
}

return FMRES_IGNORED;
}

Прикрепленный файл  voice_manager.sma ( 3,73 килобайт ) Кол-во скачиваний: 30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 28.2.2015, 22:09
Сообщение #18


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Stimul1, может слышимость флагами как в voices managment лучше сделать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kennybear
сообщение 2.3.2015, 16:58
Сообщение #19


Стаж: 12 лет

Сообщений: 1394
Благодарностей: 710
Полезность: 593

Меценат Меценат

Цитата(Stimul1 @ 28.2.2015, 21:43) *
adva, ну это какая-то ерунда, у меня мозг разрывается, когда я пытаюсь сделать такую проверку.
В самом верху исходника прочитай, что я сегодня реализовал.

kennybear, пиши в тему, а не в ЛС.
Попробуй заменить:
Код:
if(!is_user_alive(id))
===>
Код:
if(get_bit(g_bIsConnected, id) && !is_user_alive(id))

Заменил,теперь гораздо реже ошибки в логах возникают


АРЕНА ГЕЙМЕРОВ [21] 2014-2020
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя default1k
сообщение 7.3.2015, 8:56
Сообщение #20
Стаж: 12 лет

Сообщений: 718
Благодарностей: 180
Полезность: 153

Как изменить чтобы живые СТ слышали только живых СТ и живые Т слышали только живых Т? Я про версию 1.6 by Stimul
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: