czat log, moja wersja
sebul
30.09.2010
#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: lalalaGdy jestem w CT, to log byłby taki
{Counter-terrorist} nick: lalalaOczywiś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
camilost
30.09.2010
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
sebul
30.09.2010
No to teraz będzie dobrzeFajnie, że zapisuje tylko do 31 znaków. : ]
Na pewno się komuś przyda...
#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;
}
A to akurat jest...I czas chyba jednak jest lepiej wiedzieć jak patrzysz do logu.
Robiłem tak, znaczy coś takiego miałem...remove_quotes(Say)
...
#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
camilost
30.09.2010
Nie pojmuję.
read_args(Say, 192);
remove_quotes(Say);
sebul
30.09.2010
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 ;]
camilost
30.09.2010
W tych osobnych to zmieniasz tylko team (say_team).
Knopers
30.09.2010
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.
sebul
30.09.2010
#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 ;]
camilost
30.09.2010
W else dajesz get_user_team ; )
sebul
30.09.2010
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łemKnopers Ci dał gotowca jak sprawdzić czy say czy say_team... ;]
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.
A zaraz jeszcze pokombinuje...W else dajesz get_user_team ; )
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
Vertricus
30.09.2010
Kompilator pluginów AMXX - Nieoficjalny polski support AMX Mod X
Śpię już na siedząco więc nie wiem
Knopers
30.09.2010
new UserTeam = get_user_team(id);
if(UserTeam == 1)
//Terrorysta Pisze
else if(UserTeam == 2)
//CT Pisze
else
//Pisze Spect
sebul
01.10.2010
#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ąć.
grankee
01.10.2010
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;
}
sebul
01.10.2010
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ś.Czat Adminów masz zapisywany z pluginu adminchat, logi są w addons->amxmodx->logs
To się zapisuje w logach serwera ;] Nie trzeba tworzyć jakichś nowych folderów.//Raczej nie będzie estetycznie jak główny katalog cs'a zasypiesz logami
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
grankee
02.10.2010
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
sebul
02.10.2010
No z tym już sobie poradziłem, coś chyba źle wpisałem, bardzo możliwe, że od tegoCelowo 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.
read_argv(1, Say, 191);
a ja miałem
read_args(1, Say, 191);
niedopatrzenie ;]
Nawet przy wpisaniu say_team @treść, nie działa...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...
To może później spróbuje się coś z tym zrobić.Co do admin_chat, to trzeba edytować adminchat.sma
Dodano 05 październik 2010 - 00:06:
Nic więcej nie wykombinowałem, temat można zamknąć. Wszystkim dzięki za pomoc.