Skocz do zawartości
  • 0

Osobny chat w każdym regionie


Cubixor

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.
  • Ostatnio przeglądający   0 użytkowników

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