Witam.
Chciałbym zmienić treść standardowego motd-a, tego, który wyświetla się każdemu graczowi po wejściu na serwer. Wiem, że można edytować plik motd.txt, jednak nie o to mi chodzi. Mi zależy na tym, żebym mógł przy pomocy pluginu "w locie" zmieniać treść owego motda, lub wyłączyć go i wyświetlić swój. Dzięki za jakąkolwiek pomoc
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.
|
Guest Message by DevFuse
Zmiana treści motd-a, tego standardowego.
Temat rozp.
wizu
, 03.01.2009 13:24
13 odpowiedzi w tym temacie
#1
Napisano 03.01.2009 13:24
#2
Napisano 03.01.2009 14:25
Do operacji na plikach wykorzystać można te funkcje: http://www.amxmodx.o...php?go=inc&id=3
Podmienić na własny tekst można dopiero po zamknięciu standardowego motd. Czyli jakoś po client_putinserwer zamknąć u gracza okno i otworzyć własne, ale nie wiem jak
Podmienić na własny tekst można dopiero po zamknięciu standardowego motd. Czyli jakoś po client_putinserwer zamknąć u gracza okno i otworzyć własne, ale nie wiem jak
#3
Napisano 03.01.2009 14:34
Właśnie, nie chce edytować tego pliku... Hmm myślałem, że będzie można jakoś przechwycić przy pomocy message i tego:
http://wiki.amxmodx....ame_Events#MOTD
Ale nie wiem jak tego użyć
Może ktoś ma jeszcze jakieś pomysły?
http://wiki.amxmodx....ame_Events#MOTD
Ale nie wiem jak tego użyć
Może ktoś ma jeszcze jakieś pomysły?
#4
Napisano 03.01.2009 14:43
register_event("MOTD","fnPokazaloMotd","b"); .. public fnPokazaloMotd(id){ new flag=read_data(1); new txt[61]; read_data(2,txt,60); }Ale motd wysyłany jest w wielu wiadomościach o długości 60. Więc jedno wywołanie fnPokazloMotd nie oznacza jednego okna z informacją.
#5
Napisano 03.01.2009 14:51
Dzięki za odpowiedź, ale nie bardzo rozumiem
Czyli musiałbym pobrać ilość znaków z motd.txt / 60 i wtedy wiedziałbym ile razy będzie wykonana?
Ale w takim razie jak podmienić tekst w środku?
Przypisywać nowe wartości do:
Czyli musiałbym pobrać ilość znaków z motd.txt / 60 i wtedy wiedziałbym ile razy będzie wykonana?
Ale w takim razie jak podmienić tekst w środku?
Przypisywać nowe wartości do:
new txt[61]? Czy jak, bo już nie wiem sam Dzięki jeszcze raz.
#6
Napisano 03.01.2009 14:56
może register_message(get_user_msgid("MOTD"),"Pokazalo")
#7
Napisano 03.01.2009 15:00
Ale tak czy inaczej będzie max 60 znaków i podzieli na części.
Note: Max. Text length is 60. Large MOTD is sent in multiple messages. For the message that is send a last MOTD part the Flag will be set to 1 and 0 otherwise.Trzeba wziąć pod uwagę flagi.
#8
Napisano 03.01.2009 15:09
Czekaj aż dostaniesz flag = 1.
txt[] w zasadzie jest potrzebne tu, z uwagi na przechwycenie tylko motd.txt, inne okna zostawiając w spokoju; umieść w nim coś wyjątkowego np. /*wizu*/ w pierwszej linijce.
Tak można zweryfikować, ale jak zastąpić to już nie mam pojęcia
txt[] w zasadzie jest potrzebne tu, z uwagi na przechwycenie tylko motd.txt, inne okna zostawiając w spokoju; umieść w nim coś wyjątkowego np. /*wizu*/ w pierwszej linijce.
Tak można zweryfikować, ale jak zastąpić to już nie mam pojęcia
#9
Napisano 03.01.2009 15:10
No dobra, no to można to zrobić tak:
@EDIT R3X tak właśnie myślałem, ale jak to zmienić
new tresc[9999] ... register_event("MOTD","fnPokazaloMotd","b") .. public fnPokazaloMotd(id){ new flag = read_data(1) new txt[61] read_data(2,txt,60) format(tresc,9998,"%s%s",tresc,txt) if (flag) i tutaj zmiana tresci }Ale jak tą treść zmienić? I czy dobrze myślę?...
@EDIT R3X tak właśnie myślałem, ale jak to zmienić
#10
Napisano 03.01.2009 15:22
wizu przy evencie nie zmienisz parametrów zdażenia, do tego służy message. napisz na gg
#11
Napisano 03.01.2009 15:25
Jesli chcesz przechwycic tresc, to nie uzywaj format(), tylko add().
Format zawsze zaczyna od 1. znaku a add dodaje tresc na koniec (czyt. masz znak[100], pierwsze 40 uzywasz do add doda od 41 znaku).
[ Dodano: 03-01-2009, 15:27 ]
PS. Flaga "1" oznacza ze jest to ostatnia paczka danych z motd - czyli chyba po otrzymaniu tej paczki graczowi sie wyswietla motd
Format zawsze zaczyna od 1. znaku a add dodaje tresc na koniec (czyt. masz znak[100], pierwsze 40 uzywasz do add doda od 41 znaku).
[ Dodano: 03-01-2009, 15:27 ]
PS. Flaga "1" oznacza ze jest to ostatnia paczka danych z motd - czyli chyba po otrzymaniu tej paczki graczowi sie wyswietla motd
#12
Napisano 03.01.2009 15:28
No właśnie wiem, że mu się wyświetli. Ale chodzi o to, żeby wyświetlił mu się standardowy motd + kilka moich linijek na początku.
a co do add to dzięki, wypróbuję jak jakoś dojdziemy jak zmienić treść
a co do add to dzięki, wypróbuję jak jakoś dojdziemy jak zmienić treść
#13
Napisano 03.01.2009 15:38
Hmm... widze 2 mozliwosci:
Albo skopiowac all wiadomosc potem tylko dopisac do niej to co potrzebujesz od razu zamknac motd i wyswietlic swoj poprawiony.
Albo przechwytywac paczke po paczce, w odpowiednim miejscu wkleic swoje a potem niestety przesuwac w kolejnych paczkach (bo ponad 60 znakow raczej przeslac nie mozna) dane wypchniete przez nasze dane, a jak w ostatniej wiadomosci (z flaga 1) tez nie ma miejsca to trzeba by bylo zmienic flage na 0 i uzyc write_message czy jak to tam ma i wyslac dodatkowa paczke z flaga inicjujaca 1...
PS. jestem za 1 rozwiazaniem bo w 2 to duzo moze byc problemow
Albo skopiowac all wiadomosc potem tylko dopisac do niej to co potrzebujesz od razu zamknac motd i wyswietlic swoj poprawiony.
Albo przechwytywac paczke po paczce, w odpowiednim miejscu wkleic swoje a potem niestety przesuwac w kolejnych paczkach (bo ponad 60 znakow raczej przeslac nie mozna) dane wypchniete przez nasze dane, a jak w ostatniej wiadomosci (z flaga 1) tez nie ma miejsca to trzeba by bylo zmienic flage na 0 i uzyc write_message czy jak to tam ma i wyslac dodatkowa paczke z flaga inicjujaca 1...
PS. jestem za 1 rozwiazaniem bo w 2 to duzo moze byc problemow
#14
Napisano 03.01.2009 17:07
no dobrze, ale komu pokazać? Jak sprawdzić id gracza, któremu pokazał się motd? (poprzez register_message(get_user_msgid("MOTD"),"ble"))
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych