Skocz do zawartości
  • 0

Osobny chat w każdym regionie


Cubixor
 Udostępnij

Pytanie

Hej,

Napisze mi ktoś skrypt aby w każdym regionie z world guard był osobny chat. Czyli jak jestem w regionie 1 to widzę tylko to co piszą osoby z regionu 1 a osoby z regionu 2 nie widzą tego. Chce także aby jeśli gracz nie jest w żadnym regionie z world guard aby wiadomość widzieli wszyscy. Chce też aby przed nickiem gracza wyświetlane było w jakim jest regionie czyli np. jak jest w regionie "lobby" aby przed nickiem wyświetlało [Lobby] Z góry wielkie dzięki za pomoc :)

Odnośnik do komentarza
Udostępnij na innych stronach

Rekomendowane odpowiedzi

  • 0
on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
		if %region at loop-player% is {_region}:
			send "&7[%{_region}%] %player%: &f%message%" to loop-player

Tylko pamiętaj o lajku...

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 godziny temu, KrejzolekPRO napisał:
on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
		if %region at loop-player% is {_region}:
			send "&7[%{_region}%] %player%: &f%message%" to loop-player

Tylko pamiętaj o lajku...

Niestety skrypt mi nie działa - gdy piszę coś na czacie nic się nie pojawia.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
		if %region at loop-player% is {_region}:
			send "&7[%{_region}%] %player%: &f%message%" to loop-player

ma być

on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
			if %region at loop-player% is {_region}:
				send "&7[%{_region}%] %player%: &f%message%" to loop-player

Pozdrawiam Czerwono :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
16 godzin temu, TheMolkaPL napisał:
on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
		if %region at loop-player% is {_region}:
			send "&7[%{_region}%] %player%: &f%message%" to loop-player

ma być

on chat:
	cancel event
	if %region at player% is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
			if %region at loop-player% is {_region}:
				send "&7[%{_region}%] %player%: &f%message%" to loop-player

Pozdrawiam Czerwono :)

 

Dalej nie działa - ten sam error co wcześniej.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 godzin temu, Cubixor napisał:

 

Dalej nie działa - ten sam error co wcześniej.

on chat:
	cancel event
	set {_region} to "%region at player%"
	if {_region} is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
			if %region at loop-player% is {_region}:
				send "&7[%{_region}%] %player%: &f%message%" to loop-player

Co do wcięć, to już błąd edytora niestety. Ten kod musi już działać! :D

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
10 godzin temu, KrejzolekPRO napisał:
on chat:
	cancel event
	set {_region} to "%region at player%"
	if {_region} is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
			if %region at loop-player% is {_region}:
				send "&7[%{_region}%] %player%: &f%message%" to loop-player

Co do wcięć, to już błąd edytora niestety. Ten kod musi już działać! :D

 

Niestety dalej jest ale już tylko jeden error.

aSQsrJT.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
on chat:
	cancel event
	set {_region} to "%region at player%"
	if {_region} is not set:
		broadcast "&7[BRAK REGIONU] %name of player%: &f%message%"
	else:
		set {_region} to "%region at player%"
		loop all players:
			if "%region at loop-player%" is {_region}:
				send "&7[%{_region}%] %player%: &f%message%" to loop-player

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Wydaje mi się, że takie coś powinno działać:

on region enter:
	wait 1 tick
	set {region.%player%} to "%region%"

on region leave:
	clear {region.%player%}

on chat:
	cancel event
	if {region.%sender%} is not set:
		broadcast "&3[Czat globalny] &7%sender% > &f%message%"
	else:
		loop all players:
			if {region.%loop-player%} is {region.%sender%}:
				send "&3[Czat terenu %{region.%sender%}%] &7%sender% > &f%message%" to loop-player

Nie wiem czy takie coś będzie działać, próbowałem przetestować, ale u mnie Skript był niekompatybilny z WorldGuardem (lub WorldEditem), więc nie przetestowałem tego do końca, ale jeżeli masz dobrą wersję WorldGuarda (lub WorldEdita) i Skripta wszystko powinno śmigać. Nie używałem tutaj "region at player" czy coś takiego tylko przy wejściu do regionu, zmienna gracza ustawia się na nazwę regionu, do którego wchodzi, a przy wyjściu czyści się. Te całe "region at" chyba jest po prostu popsute.

Mogą być pomyłki, za takie przepraszam :/, :-P.

(Edytowane)

Jeszcze coś, raczej nie możemy zrobić "if %region at player% is set:" (np.) tylko musimy zrobić "if region at player is set:". Te procenty na końcu i na początku dajemy raczej tylko, gdy wyrażenie jest umieszczone w cudzysłowiach. Tyczy się to także innych wyrażeń.

Edytowane przez xMarcinos
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 godziny temu, xMarcinos napisał:

Wydaje mi się, że takie coś powinno działać:

on region enter:
	wait 1 tick
	set {region.%player%} to "%region%"

on region leave:
	clear {region.%player%}

on chat:
	cancel event
	if {region.%sender%} is not set:
		broadcast "&3[Czat globalny] &7%sender% > &f%message%"
	else:
		loop all players:
			if {region.%loop-player%} is {region.%sender%}:
				send "&3[Czat terenu %{region.%sender%}%] &7%sender% > &f%message%" to loop-player

Nie wiem czy takie coś będzie działać, próbowałem przetestować, ale u mnie Skript był niekompatybilny z WorldGuardem (lub WorldEditem), więc nie przetestowałem tego do końca, ale jeżeli masz dobrą wersję WorldGuarda (lub WorldEdita) i Skripta wszystko powinno śmigać. Nie używałem tutaj "region at player" czy coś takiego tylko przy wejściu do regionu, zmienna gracza ustawia się na nazwę regionu, do którego wchodzi, a przy wyjściu czyści się. Te całe "region at" chyba jest po prostu popsute.

Mogą być pomyłki, za takie przepraszam :/, :-P.

(Edytowane)

Jeszcze coś, raczej nie możemy zrobić "if %region at player% is set:" (np.) tylko musimy zrobić "if region at player is set:". Te procenty na końcu i na początku dajemy raczej tylko, gdy wyrażenie jest umieszczone w cudzysłowiach. Tyczy się to także innych wyrażeń.

 

Wielkie dzięki ale jeszcze chciałbym aby w tym skrypcie było jeszcze kilka rzeczy o których pisałem. Pierwsza chcę aby nazwa regiony była pisana z wielkiej litery. Druga aby po nazwie regionu NIE wyświetlała się nazwa świata.  A trzecia aby mój nick wyświetlał się z prefixem z essentials i pex.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
on region enter:
	wait 1 tick
	set {region.%player%} to "%region%"

on region leave:
	clear {region.%player%}

on chat:
	cancel event
	if {region.%sender%} is not set:
		broadcast "&3[Czat globalny] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%"
	else:
		loop all players:
			if {region.%loop-player%} is {region.%sender%}:
				set {_duzaLitera} to first 1 character of {region.%sender%}
				set {_duza2} to convert string {_duzaLitera} to uppercase
				set {_reszta} to subtext of {region.%sender%} from characters 2 to (length of {region.%sender%})
				send "&3[Czat terenu %{_duza2}%%{_reszta}%] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%" to loop-player

Takie coś powinno spełniać twoje wymagania. Potrzebujesz do tego dodatku SkUtilities. (kod "convert string {_duzaLitera} to uppercase" tego wymaga) Żadna nazwa świata nie powinna się pokazywać. Powinno pokazywać tzw. "prefix", tzw. "suffix" i nazwę gracza, nawet taką którą nadało się komendą /nick. Nazwa regionu powinna wyświetlać się z dużej litery.

Nie testowane do końca, mogą być błędy, w razie takich, pisz co wyskoczyło Ci na czacie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Dnia 19.02.2017 o 17:25, xMarcinos napisał:
on region enter:
	wait 1 tick
	set {region.%player%} to "%region%"

on region leave:
	clear {region.%player%}

on chat:
	cancel event
	if {region.%sender%} is not set:
		broadcast "&3[Czat globalny] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%"
	else:
		loop all players:
			if {region.%loop-player%} is {region.%sender%}:
				set {_duzaLitera} to first 1 character of {region.%sender%}
				set {_duza2} to convert string {_duzaLitera} to uppercase
				set {_reszta} to subtext of {region.%sender%} from characters 2 to (length of {region.%sender%})
				send "&3[Czat terenu %{_duza2}%%{_reszta}%] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%" to loop-player

Takie coś powinno spełniać twoje wymagania. Potrzebujesz do tego dodatku SkUtilities. (kod "convert string {_duzaLitera} to uppercase" tego wymaga) Żadna nazwa świata nie powinna się pokazywać. Powinno pokazywać tzw. "prefix", tzw. "suffix" i nazwę gracza, nawet taką którą nadało się komendą /nick. Nazwa regionu powinna wyświetlać się z dużej litery.

Nie testowane do końca, mogą być błędy, w razie takich, pisz co wyskoczyło Ci na czacie.

Musiałem trochę przerobić bo po nazwie regionu wyświetlała się ranga z essentials/pex na biało następnie na kolorowo i dopiero nickname. Niestety nazwa świata dalej pokazuje się przy regionie który jest już z dużej litery. Pozostaje teraz tylko usunąć jakoś tą nazwę świata.

Oto edytowany przeze mnie skrypt:

 

on region enter:
    wait 1 tick
    set {region.%player%} to "%region%"

on region leave:
    clear {region.%player%}

on chat:
    cancel event
    if {region.%sender%} is not set:
        broadcast "&3[Global] &7%player's displayname%&7> &f%message%"
    else:
        loop all players:
            if {region.%loop-player%} is {region.%sender%}:
                set {_duzaLitera} to first 1 character of {region.%sender%}
                set {_duza2} to convert string {_duzaLitera} to uppercase
                set {_reszta} to subtext of {region.%sender%} from characters 2 to (length of {region.%sender%})
                send "&3[%{_duza2}%%{_reszta}%] &7%player's displayname%&7> &f%message%" to loop-player

 

 

 

 

EDIT: Mógłbym poprosić jeszcze o dodanie do tego skryptu dwóch rzeczy: jedna to aby jeśli w nazwie regionu jest _ aby zamiast tego wyświetlała się spacja i aby po tej spacji była wielka litera czyli jak mam region test_test to aby wyświetlał się Test Test. Byłbym bardzo wdzięczny gdybyś dodał to do tego skryptu.

Edytowane przez Cubixor
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Dobrze, że przerobiłeś sobie tak jak chciałeś.

Zapewne używasz pluginu Multiverse i to właśnie on powoduje wyświetlanie się nazwy świata. Musisz zmienić to w konfiguracji pluginu Multiverse. Wchodzisz w plik konfiguracyjny Multiverse i zmieniasz

	prefixchat: 'true'

na

	prefixchat: 'false'

. A z tą spacją zamiast _ i dużymi literami postaram się pomóc za jakiś czas. Teraz nie mam już czasu, żeby dalej pisać. (Zedytuję ten post)

Pomyłki mogą być, ale nie powinno. Jakby nie działało - przepraszam.

Edytowane przez xMarcinos
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
21 godzin temu, xMarcinos napisał:

Dobrze, że przerobiłeś sobie tak jak chciałeś.

Zapewne używasz pluginu Multiverse i to właśnie on powoduje wyświetlanie się nazwy świata. Musisz zmienić to w konfiguracji pluginu Multiverse. Wchodzisz w plik konfiguracyjny Multiverse i zmieniasz

	prefixchat: 'true'

na

	prefixchat: 'false'

. A z tą spacją zamiast _ i dużymi literami postaram się pomóc za jakiś czas. Teraz nie mam już czasu, żeby dalej pisać. (Zedytuję ten post)

Pomyłki mogą być, ale nie powinno. Jakby nie działało - przepraszam.

 

Niestety miałem tą opcje już od dawna wyłączoną - nie działa.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
 on region enter:
    wait 1 tick
    set {region.%player%} to "%region%"

on region leave:
    clear {region.%player%}

on chat:
    cancel event
    if {region.%sender%} is not set:
        broadcast "&3[Global] &7%player's displayname%&7> &f%message%"
    else:
        loop all players:
            if {region.%loop-player%} is {region.%sender%}:
            	set {_wyrazy::*} to {region.%sender%} split by " "
                loop {_wyrazy::*}:
                    set {_duzaLitera} to first 1 character of loop-value
                    set {_duzaL2} to convert string {_duzaLitera} to uppercase
                    set {_reszta} to subtext of loop-value from characters 2 to (length of loop-value)
                    add "%{_duzaL2}%%{_reszta}%" to {_wyrazy2::*}
                set {_pelnanazwa} to join {_wyrazy2::*} with " "
                set {_nazwagracza} to player's displayname
                replace all "[%world of player%]" in {_nazwagracza} with ""
                send "&3[%{_pelnanazwa}%] &7%{_nazwagracza}%&7> &f%message%" to loop-player 

Takie coś powinno wyświetlać wszystkie wyrazy z wielką literą na początku. Nie testowałem, więc nie wiem czy działa, ale powinno. Napisałem także, aby w wyświetlanej nazwie gracza w wiadomości "[world]" było zastępowane "" (niczym, usuwane), więc teraz chyba wszystko powinno działać tak jak chciałeś.

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...