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

Zmiana treści motd-a, tego standardowego.


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

#1 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 03.01.2009 13:24

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 ;)
  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

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 ;P
  • +
  • -
  • 0

#3 wizu

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

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?
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

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ą.
  • +
  • -
  • 0

#5 wizu

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

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:
new txt[61]
? Czy jak, bo już nie wiem sam ;) Dzięki jeszcze raz.
  • +
  • -
  • 0

#6 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 03.01.2009 14:56

może register_message(get_user_msgid("MOTD"),"Pokazalo")
  • +
  • -
  • 0

#7 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

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.
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

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 :P
  • +
  • -
  • 0

#9 wizu

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 03.01.2009 15:10

No dobra, no to można to zrobić tak:
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ć :/
  • +
  • -
  • 0

#10 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 03.01.2009 15:22

wizu przy evencie nie zmienisz parametrów zdażenia, do tego służy message. napisz na gg
  • +
  • -
  • 0

#11 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

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
  • +
  • -
  • 0

#12 wizu

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

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ść :/
  • +
  • -
  • 0

#13 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

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 O:)
  • +
  • -
  • 0

#14 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

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"))
  • +
  • -
  • 0




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

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