Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

czat log, moja wersja


  • Zamknięty Temat jest zamknięty
16 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 30.09.2010 16:31

Na początku dodam, że nie jestem jakiś pro ogarem w pisaniu pluginów (i raczej nie będę, bo to nie dla mnie, za duzo nauki), ale postanowiłem napisać na podstawie tego Czat log - Czat to file - logowanie rozmow w czacie - Nieoficjalny polski support AMX Mod X tak jakby swoją wersję pluginu, autora nie zmieniałem, bo nawet nie wiem czy mogę (żeby nie było, że będzie mnie ktoś oskarżał o przywłaszczenie), dlatego też początek skopiowałem z tego starego, no i wygląda to tak
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Czat log"
#define VERSION "0.1"
#define AUTHOR "Miczu"


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[32], Name[32], Data[9], Say_t[32], File[32];

read_args(Say, 32);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Say_t, 31);
format(File, 31, "Say_%s.log", Data);

log_to_file(File, "%s: %s - %s", Name, Say, Say_t);
return PLUGIN_CONTINUE;
}

Jak dla mnie o wiele bardziej estetyczne są teraz te logi, ale mam jeszcze parę pomysłów co do zmian. Chciałbym usunąć "" (cudzysłów z tekstu na say), ale nie wiem jak tego -> Dokumentacja AMXX.pl > Core > amxmodx >> remove_quotes użyć. Druga sprawa to można by zrobić jeszcze jakąś zmienną, że gdy wiadomość jest "say", to nie ma żadnego info, typu "say" czy "say_team", tylko po prostu sam nick i tekst, a jakby wiadomość była na "say_team" to wtedy zależnie od tego w jakim teamie by gracz był, to wyświetliło by się TT, albo CT, np.
Gdy jestem w TT, to jak coś napiszę na say_team, wtedy log wyglądał by tak
{Terrorist} nick: lalala
Gdy jestem w CT, to log byłby taki
{Counter-terrorist} nick: lalala
Oczywiście tak dokładnie nie ma znaczenia, czy to będzie "(Counter-terrorist)" czy np. "(CT)", to można łatwo edytować. Do tego pewnie trzeba użyć tego Dokumentacja AMXX.pl > Core > amxmodx >> get_user_team ale też nie wiem jak to zastosować. Może ktoś dokończy za mnie te parę rzeczy? Albo napisze jak to zrobić?

Użytkownik sebul edytował ten post 30.09.2010 16:59

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 434
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 30.09.2010 18:34

Fajnie, że zapisuje tylko do 31 znaków. : ]
Na pewno się komuś przyda...

I czas chyba jednak jest lepiej wiedzieć jak patrzysz do logu.

remove_quotes(Say)
...


// Nie ważne

Użytkownik camilost edytował ten post 30.09.2010 18:38

  • +
  • -
  • 0

#3 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 30.09.2010 19:33

Fajnie, że zapisuje tylko do 31 znaków. : ]
Na pewno się komuś przyda...

No to teraz będzie dobrze
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Czat log"
#define VERSION "0.1"
#define AUTHOR "Miczu"


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Say_t[32], File[32];

read_args(Say, 192);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Say_t, 31);
format(File, 31, "Say_%s.log", Data);

log_to_file(File, "%s: %s - %s", Name, Say, Say_t);
return PLUGIN_CONTINUE;
}

I czas chyba jednak jest lepiej wiedzieć jak patrzysz do logu.

A to akurat jest...

remove_quotes(Say)
...

Robiłem tak, znaczy coś takiego miałem...
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Czat log"
#define VERSION "0.1"
#define AUTHOR "Miczu"


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Say_t[32], File[32];

read_args(remove_quotes(Say), 192);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Say_t, 31);
format(File, 31, "Say_%s.log", Data);

log_to_file(File, "%s: %s - %s", Name, Say, Say_t);
return PLUGIN_CONTINUE;
}

I nie dało radę skompilować.

Użytkownik sebul edytował ten post 30.09.2010 19:42

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 434
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 30.09.2010 19:45

I czemu w read_args?
Nie pojmuję. ;P

read_args(Say, 192);
remove_quotes(Say);
  • +
  • -
  • 1

#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 30.09.2010 20:01

No teraz działa... dzięki.
To teraz może ktoś wie jak zrobić, żeby odróżniało czy to "say", czy "say_team", jak "say" to byłby tylko sam nick z tekstem, a jak "say_team" to najpierw prefiks (np. CT, albo TT, zależy w którym teamie by się było), później nick, a potem tekst?? Oczywiście kolejność nie ma znaczenia, to już sam umiem bez problemu ;]
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 434
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 30.09.2010 20:43

Hmmm... nie wiem czy tak będzie good. Spróbuj np. osobne komendy (funkcje) i jedna dla wszystkich, która zapisuje do pliku.
W tych osobnych to zmieniasz tylko team (say_team).
  • +
  • -
  • 0

#7 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 30.09.2010 20:56

można by chociażby coś takiego :
new zeroarg[10];
read_argv(0, zeroarg, 9);
new bool:isSay = (strlen(zeroarg) == 3) ? true : false;

Wtedy
if(isSay)
//Wiadomosc z saya
else
//Wiadomosc z team_say'a


I masz wszystko w jednej funkcji. :)
  • +
  • -
  • 1

#8 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 30.09.2010 21:28

No to teraz mam takie coś...
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Czat log"
#define VERSION "0.1"
#define AUTHOR "Miczu"


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Type[12], File[32];

read_args(Say, 192);
remove_quotes(Say);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Type, 11);
new bool:isSay = (strlen(Type) == 3) ? true : false;
format(File, 31, "Say_%s.log", Data);

if(isSay)
log_to_file(File, "%s: %s", Name, Say);
else
log_to_file(File, "%s: %s - %s", Name, Say, Type);
return PLUGIN_CONTINUE;
}

Ale za cholerę nie wiem jak to zrobić z tym odróżnianiem teamów... jaka funkcja ma być, to ja wiem, ale jak to zastosować... Na pewno dodać coś w stylu
new Team[32]
get_user_team(0, Team, 32)

A teraz to chyba wzorować się tam tym wcześniejszej zmiennej? Tylko też za bardzo nie wiem jak. Zanim jeszcze Knopers z tą zmienną napisał posta, to zrobiłem
    register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log2");

i wtedy po prostu całą funkcję do say_log2 dałem inną, ale te drugie rozwiązanie będzie lepsze, a tym bardziej, że działa ;]
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 434
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 30.09.2010 21:32

Knopers Ci dał gotowca jak sprawdzić czy say czy say_team... ;]
W else dajesz get_user_team ; )
  • +
  • -
  • 0

#10 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 30.09.2010 21:37

Knopers Ci dał gotowca jak sprawdzić czy say czy say_team... ;]

No to już zrobiłem, wszystko działa, ale teraz chodzi mi o tą zmienną, jak gracz jest w tt, to będzie "tak", a jak będzie w ct, to będzie "tak". Czyli tak jak w pierwszym poście napisałem
Gdy jestem w TT, to jak coś napiszę na say_team, wtedy log wyglądał by tak
{Terrorist} nick: lalala

Gdy jestem w CT, to log byłby taki
{Counter-terrorist} nick: lalala

Bo teraz jest dopisane samo say_team, bez tej zmiennej.

W else dajesz get_user_team ; )

A zaraz jeszcze pokombinuje...

Dodano 30 wrzesień 2010 - 23:04:
Jednak nic nie wykombinuje... czegoś nie dodałem, wydaje mi się, że pewnie jakąś nową funkcję, ale nie bardzo wiem jaką...

Użytkownik sebul edytował ten post 30.09.2010 21:38

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#11 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 30.09.2010 22:23

Try:
Kompilator pluginów AMXX - Nieoficjalny polski support AMX Mod X

Śpię już na siedząco więc nie wiem xD
  • +
  • -
  • 0

#12 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 30.09.2010 22:29

Przykład :

new UserTeam = get_user_team(id);
if(UserTeam == 1)
//Terrorysta Pisze
else if(UserTeam == 2)
//CT Pisze
else
//Pisze Spect

  • +
  • -
  • 1

#13 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.10.2010 07:21

No i teraz wszystko śmiga ^^ Kod wygląda tak
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Czat log"
#define VERSION "0.1"
#define AUTHOR "Miczu"


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Type[12], File[32];

read_args(Say, 192);
remove_quotes(Say);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Type, 11);
new bool:isSay = (strlen(Type) == 3) ? true : false;
format(File, 31, "Say_%s.log", Data);

if(isSay)
log_to_file(File, "%s: %s", Name, Say);
else {
new UserTeam = get_user_team(id);

if(UserTeam == 1)
log_to_file(File, "(Terrorist) %s: %s", Name, Say);
else if(UserTeam == 2)
log_to_file(File, "(Counter-Terrorist) %s: %s", Name, Say);
else
log_to_file(File, "(Spectator) %s: %s", Name, Say);
}

return PLUGIN_CONTINUE;
}

Mam jeszcze inny pomysł, ale to już jak dla mnie wypłynięcie na dalekie wody... Dobrze by było, żeby i chat adminów zapisywało, wtedy w jednym pliku wszystko by było, ale tak jak pisałem, to już jest tylko pomysł na spontanie, nawet nic nie myślałem nad tym, dzisiaj później może najpierw coś sam pokombinuje, ale nie wiem.

Dodano 01 październik 2010 - 13:32:
Jednak to już naprawdę nie dla mnie... nie wiem nawet jaki kod wpisać, żeby odczytywało wpisy z amx_chat, czy amx_say ;/ Myślę, że można zamknąć.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#14 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 01.10.2010 12:49

Czat Adminów masz zapisywany z pluginu adminchat, logi są w addons->amxmodx->logs
no ale jeśli chcesz..
#include <amxmodx>
#include <cstrike>



public plugin_init() {
register_plugin("Plugin","versja","autor");

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Type[5], Time[11] ,File[32];

read_argv(1,Say, 191);
remove_quotes(Say);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 10);
get_time("%H:%M:%S",Time,8)
read_argv(0, Type, 4);
format(File, 31, "Chat_logs/Say_%s.log", Data);//Raczej nie będzie estetycznie jak główny katalog cs'a zasypiesz logami
if(Type[0]=='a')
{
log_to_file(File, "(%s)(ADMINS)%s%s: %s",Time,is_user_alive(id)?"*DEAD*":"", Name, Say);
return PLUGIN_CONTINUE
}
if(strlen(Type) == 3)
log_to_file(File, "(%s)%s%s: %s",Time,is_user_alive(id)?"*DEAD*":"", Name, Say);
else {
if(Say[0]=='@')
{
log_to_file(File, "(%s)(ADMINS)%s%s: %s",Time,is_user_alive(id)?"*DEAD*":"", Name, Say);
}
else
{
new CsTeams:UserTeam = cs_get_user_team(id);

if(UserTeam == CS_TEAM_T)
log_to_file(File, "(%s)(Terrorist) %s%s: %s",Time,is_user_alive(id)?"*DEAD*":"", Name, Say);
else if(UserTeam == CS_TEAM_CT)
log_to_file(File, "(%s)(Counter-Terrorist) %s%s: %s",is_user_alive(id)?"*DEAD*":"",Time, Name, Say);
else
log_to_file(File, "(%s)(Spectator) %s: %s",Time, Name, Say);
}
}

return PLUGIN_CONTINUE;
}

  • +
  • -
  • 0

#15 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.10.2010 12:56

Czat Adminów masz zapisywany z pluginu adminchat, logi są w addons->amxmodx->logs

No ja wiem... ale skoro logi z czatu, to fajnie to by wyglądało, jeśli było by to wszystko razem. Zaraz przetestuje ten kod co mi podałeś.

//Raczej nie będzie estetycznie jak główny katalog cs'a zasypiesz logami

To się zapisuje w logach serwera ;] Nie trzeba tworzyć jakichś nowych folderów.

get_time("%H:%M:%S",Time,8)

To też zbędne, bo czas w logach zawsze się tworzy, nie trzeba samemu nic dopisywać.

Dodano 01 październik 2010 - 14:33:
Czat adminów nie działa, ale za to sprawdzanie czy ktoś żyje tak ;]

Dodano 01 październik 2010 - 15:34:
Teraz mam tak
#include <amxmodx>


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

register_clcmd("say", "say_log");
register_clcmd("say_team", "say_log");
}

public say_log(id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE;

new Say[192], Name[32], Data[9], Type[12], File[32];

read_args(Say, 192);
remove_quotes(Say);
get_user_name(id, Name, 31);
get_time("%Y%m%d", Data, 8);
read_argv(0, Type, 11);
format(File, 31, "Say_%s.log", Data);

new bool:isSay = (strlen(Type) == 3) ? true : false;

if(isSay)
log_to_file(File, "%s%s : %s", is_user_alive(id) ? "" : "*DEAD* ", Name, Say);
else {
new UserTeam = get_user_team(id);

if(UserTeam == 1) // TT
log_to_file(File, "%s(Terrorist) %s : %s", is_user_alive(id) ? "" : "*DEAD*", Name, Say);
else if(UserTeam == 2) // CT
log_to_file(File, "%s(Counter-Terrorist) %s : %s", is_user_alive(id) ? "" : "*DEAD*", Name, Say);
else // SPEC
log_to_file(File, "%s(Spectator) %s : %s", is_user_alive(id) ? "" : "*DEAD*", Name, Say);
}

return PLUGIN_CONTINUE;
}

Musiałem z UserTeam i get_user_team i wtedy zmienne 1 i 2, bo z tym drugim, czyli z CS_TEAM_T i CS_TEAM_CT przy kompilacji wyskakiwały jakieś błędy (już nawet nie zapisywałem). Kolejność "*DEAD*" jeszcze musiałem zamienić. Próbowałem jakoś zrobić, żeby ten czat adminów też się zapisywał, ale nie udało się, zapisywały się same te zwykłe "czaty"...

Użytkownik sebul edytował ten post 01.10.2010 12:59

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#16 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 02.10.2010 03:49

Celowo zmieniłem na cs_get_user_team, ponieważ jeśli zginiesz i zmienisz team to get_user_team pokaże Ci stary team (jakby aktualizuje się po starcie rundy).
Błędów nie było bo kompilowałem u siebie.
Jak napiszesz say_team @tresc to wylapie a jak amx_chat tresc to juz nie, zgadlem?
Jeśli tak to spodziewałem się tego, ponieważ jest już taka komenda zarejestrowana...
Moją wersję skompiluj online ( ze swoimi zmianami DEAD oraz wyeliminowaniem czasu, ale nic więcej) kompilatorem na tej stronie, sprawdzałem, błędów nie pluje.

Co do admin_chat, to trzeba edytować adminchat.sma
  • +
  • -
  • 0

#17 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.10.2010 16:37

Celowo zmieniłem na cs_get_user_team, ponieważ jeśli zginiesz i zmienisz team to get_user_team pokaże Ci stary team (jakby aktualizuje się po starcie rundy).
Błędów nie było bo kompilowałem u siebie.

No z tym już sobie poradziłem, coś chyba źle wpisałem, bardzo możliwe, że od tego
read_argv(1, Say, 191);

a ja miałem
read_args(1, Say, 191);

niedopatrzenie ;]

Jak napiszesz say_team @tresc to wylapie a jak amx_chat tresc to juz nie, zgadlem?
Jeśli tak to spodziewałem się tego, ponieważ jest już taka komenda zarejestrowana...

Nawet przy wpisaniu say_team @treść, nie działa...

Co do admin_chat, to trzeba edytować adminchat.sma

To może później spróbuje się coś z tym zrobić.

Dodano 05 październik 2010 - 00:06:
Nic więcej nie wykombinowałem, temat można zamknąć. Wszystkim dzięki za pomoc.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych