←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak wykryć użycie czatu głosowego?

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

Wydaje mi się, że kiedyś go instalowałem. Jak to sprawdzić?

Quote

  • +
  • -
PANDA_2zl's Photo PANDA_2zl 13.03.2023

W konsoli serwera game version
A z tym się bawiłeś? https://amxx.pl/topi...ces-management/
Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

Mam ReGameDLL version: 5.21.0.546-dev.

Tego pluginu nie próbowałem, ale ten VTC powinien działać przecież...

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

EDIT:
Znalazłem jeszcze coś takiego jak Revoice Plus i do niego voice utils. Tam jest forward VU_OnStartSpeak() którego mógłbym użyć. Jak zaintstalować to voice utils?

Quote

  • +
  • -
PANDA_2zl's Photo PANDA_2zl 13.03.2023

https://dev-cs.ru/resources/1172/ masz tam przykład użycia itd

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

Tak, widziałem. Chodzi mi bardziej o to, że muszę osobno do /addons/ wrzucić ten revoice plus, a potem jeszcze do /amxmodx/modules/voice_utils_amxx_i386.so? I jak mam to dopisać do pliku modules.ini?

Quote

  • +
  • -
PANDA_2zl's Photo PANDA_2zl 13.03.2023

Ładujesz revoice plus normalnie do metamoda, a moduł voice_utils do modules.ini amxx i do pluginu include użyć
Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

Tak też robiłem, ale wywala mi błąd jak wpisze amxx plugins:

 (6) Load fails: Module/Library "voice_utils" required for plugin.  Check modules.ini.

Wrzuciłem voice_utils_amxx_i386.so do folderu modules i dopisałem voice_utils do modules.ini

Za to w meta list wygląda chyba wporządku:

 [21] VoiceUtils             RUN   -    voice_utils_amxx_i386.so          v1.0.0           pl2  ANY   ANY  
Quote

  • +
  • -
Robiin's Photo Robiin 13.03.2023

Pytanie czy w ogóle potrzebujesz revoice? Nie napisałeś nigdzie co tak naprawdę próbujesz osiągnąć tym, że blokujesz komuś możliwość rozmawiania. To ma być jakiś system gagowania?

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

Coś w tym stylu. Mam swój własny system banowania i pomyślałem, że dodam taką funkcje, że jak ktoś dostanie bana to chce mu jednocześnie zablokować od razu możliwość pisania i mówienia przez mikro. I jednocześnie żeby mu się jakaś wesoła muzyczka na otarcie łez włączyła jak wciśnie "K" :D Z pisaniem nie było problemu, gorzej z tym czatem głosowym. 

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

No wszystko fajnie, tylko nadal potrzebuję wykryć kiedy gracz próbuje coś powiedzieć przez mikro...
Tego revoice i tak używałem wcześniej, więc bez większej różnicy.

Quote

  • +
  • -
PANDA_2zl's Photo PANDA_2zl 13.03.2023

No wszystko fajnie, tylko nadal potrzebuję wykryć kiedy gracz próbuje coś powiedzieć przez mikro...
Tego revoice i tak używałem wcześniej, więc bez większej różnicy.



No to wszystko jest w tym pluginie, nie rozumiem o co chodzi, skoro to plugin od gagów + jest API od razu
Quote

  • +
  • -
Robiin's Photo Robiin 13.03.2023

Dokładnie, masz wszystko czego potrzebujesz. Kwestia logiki w kodzie.

Po pierwszym użyciu mikro dajesz graczowi blokadę i włączasz mu muzyczke czy co tam chcesz. Jeśli event wykona się kolejny raz (za 0.3 sekundy), to już będzie zablokowane i returnujesz z supercede - a w efekcie masz jednorazowe wykonanie jakiejś tam funkcji, w twoim przypadku blokada mikro i włączenie muzyki.

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 13.03.2023

A, okej. Przyznam szczerze, że nie miałem czasu się zagłębić w kod. Dzięki, zobacze co da się zrobić ;)
Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 15.03.2023

W tym pluginie też jest to oparte na FM_Voice_SetClientListening. Więc wyciągnąłem to z kodu i mam coś takiego jak wcześniej:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

new bool:lock[33];

public plugin_init()
{
    register_plugin("test", "1.0", "sebxx");
    register_forward(FM_Voice_SetClientListening, "PlayerVoiceSpeak", 0);
}

public client_connect(id)
    lock[id] = false;

public PlayerVoiceSpeak(receiver, id)
{
    if ( receiver == id || !is_user_connected(id) || lock[id] )
        return FMRES_IGNORED;

    set_task(5.0, "unlock", id+4510);
    client_print(id, print_center, "SPEAKING!");

    return FMRES_IGNORED;
}

public unlock(id)
    lock[id-4510] = false;

Teraz po wciśnięciu przycisku K nic się przez jakiś czas nie dzieje, a potem cały czas wyświetla client_print()...

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 15.03.2023

EDIT: A dobra, widze. Zapomniałem ustawić lock na true :D
Ale teraz z kolei pokazuje się napis, znika, ale za chwile znowu się sam pokazuje, chociaż nie wciskam już "K". I tak w kółko :/

Quote

  • +
  • -
MocnyAmper's Photo MocnyAmper 06.05.2023

Odświeżam :D
Quote

  • +
  • -
Robiin's Photo Robiin 06.05.2023

Wypisz id w client_print. Jedyne co mi przychodzi do głowy to id == 0, dlatego ci się pokazuje wiadomość na czacie (a raczej nie tylko tobie, a całemu serwerowi). Przy okazji pokaż aktualny kod

Quote