Skocz do zawartości
  • 0

Zapisywanie lokalizacji


MrWinex66
Przejdź do rozwiązania Rozwiązane przez Kormic,

Pytanie

Witajcie, próbuję stworzyć skrypt na bardzo prosty system zgłoszeń, gdzie gracz będzie mógł wysłać zgłoszenie, np. /zglos <tresc>, a administrator będzie mógł później te zgłoszenia przejrzeć.

Przy wysyłaniu zgłoszenia musi zapisywać się nick zgłaszającego, wiadomość w <tresci> oraz lokalizacja, z jakiej zostało wysłane zgłoszenie.

Gdy gracz wyśle zgłoszenie na koordynatach 10/20/80 (przykladowo) /zglos Niedzialajacy spawner - to administrator będzie mógł zobaczyć to zgłoszenie (np. pod komendą /zgloszenia) jako (przykładowo): #1 nickname | Niedzalajacy spawner | x: 10 y: 20 z:80

Komendy na samo wysyłanie zgłoszenia z grubsza mam - zgłoszenie wyświetla się administratorowi (osobie z permisją), ale tylko w momencie wysłania... nie zachowuje się nigdzie, nie można go później przejrzeć.

W jaki sposób "przechować" na dłużej te wartości - aby zgłoszenie nie wyświetlało się administratorowi tylko w momencie wysłania, ale również pozniej (tak, aby te zgłoszenia zachowywały się do momentu, aż ręcznie je usunie)? Rozumiem, że aby przechować te wartości dłużej, niż do następnego restartu serwera, wypadałoby je zapisać do jakiegoś pliku, czy niekoniecznie?

Dziekuję bardzo za pomoc :)

Odnośnik do odpowiedzi
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
  • Rozwiązanie
7 godzin temu, MrWinex66 napisał:

Witajcie, próbuję stworzyć skrypt na bardzo prosty system zgłoszeń, gdzie gracz będzie mógł wysłać zgłoszenie, np. /zglos <tresc>, a administrator będzie mógł później te zgłoszenia przejrzeć.

Przy wysyłaniu zgłoszenia musi zapisywać się nick zgłaszającego, wiadomość w <tresci> oraz lokalizacja, z jakiej zostało wysłane zgłoszenie.

Gdy gracz wyśle zgłoszenie na koordynatach 10/20/80 (przykladowo) /zglos Niedzialajacy spawner - to administrator będzie mógł zobaczyć to zgłoszenie (np. pod komendą /zgloszenia) jako (przykładowo): #1 nickname | Niedzalajacy spawner | x: 10 y: 20 z:80

Komendy na samo wysyłanie zgłoszenia z grubsza mam - zgłoszenie wyświetla się administratorowi (osobie z permisją), ale tylko w momencie wysłania... nie zachowuje się nigdzie, nie można go później przejrzeć.

W jaki sposób "przechować" na dłużej te wartości - aby zgłoszenie nie wyświetlało się administratorowi tylko w momencie wysłania, ale również pozniej (tak, aby te zgłoszenia zachowywały się do momentu, aż ręcznie je usunie)? Rozumiem, że aby przechować te wartości dłużej, niż do następnego restartu serwera, wypadałoby je zapisać do jakiegoś pliku, czy niekoniecznie?

Dziekuję bardzo za pomoc :)

Myślę, że najlepszą metodą będzie tutaj użyć efektu 'log' oraz wysyłania do administracji:

command /zglos [<text>]:
	trigger:
		if arg 1 is not set:
			send "&cMusisz podac co lub kogo chcesz zglosic!" to player
			stop
		if {cooldown::zgloszenia::%player%} is not set:
			set {cooldown::zgloszenia::%player%} to now
			subtract 1 minute from {cooldown::zgloszenia::%player%}
		if difference between {cooldown::zgloszenia::%player%} and now is less than 1 minute:
			send "&cNie uzywaj tak czesto tej komendy!" to player
			stop
		loop {administracja::lista::*}:
			send "&7[&cZgloszenia&7] &6%player% &7zglosil &e-> &b%arg%" to loop-value
		log "%now% - %player% zglosil -> %arg%  - mialo to miejsce w %location of the player%" to "zgloszenia/ogolne"
		
command /adm [<text>] [<offline player>]:
	trigger:
		if player is not op:
			stop
		if arg 1 is "dodaj":
			add arg 1 to {administracja::lista::*}
			send "&aPomyslnie dodano gracza &6%arg 2% &ado listy administracji!" to player
		if arg 1 is "usun":
			remove arg 1 from {administracja::lista::*}
			send "&aPomyslnie usunieto gracza &6%arg 2% &az listy administracji!" to player

Proszę. W linijce nr 14 musisz sobie podać miejsce przechowywania logów. Obecnie ustalone to zgloszenia/ogolne.

Edytowane przez Kormic
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0

Najlepiej tworzyć własny plik config i tam zrobic np

Zgloszenie:
  UUID lub Nick gracza:
    lokalizacja: lokacja gracza
    powod: powód
  UUID lub Nick gracza:
    lokalizacja: lokacja gracza
    powod: powód
  UUID lub Nick gracza:
    lokalizacja: lokacja gracza
    powod: powód

taki format configu mozesz zrobic

ze nastepny gracz i nastepny i nastepny

Potem mozesz jakos zloopować wartość tekstową i wartość lokalizacji i zapisac np w komendzie.

w Javie byłoby lepiej bo tam juz petle mozesz zrobic i zloopowac jako jeden string i int.

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Poczytaj sobie o plikach configuracyjnych. Na gorze masz link

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0
command /zglos [<text>]:
    trigger:
        if arg-1 is "sprawdz":
            loop {Zgloszenia::*}:
                send "&4[Zgloszenie nr: %loop-index%] %loop-value%"
            stop
        if arg-1 is "usun":
            delete {Zgloszenia::*}
            stop
        add "&fGracz: &4%player% &fLokalizacja: &4%location of player% &fZgloszenie: &4%arg-1%" to {Zgloszenia::*}
        send "Wyslales zgloszenie"

I mozesz sobie to rozwinac jak chcesz 

Edytowane przez Cinu2421
Literowka
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0

Okej, dziękuję bardzo :) Właśnie tego potrzebowałem - nie wiedziałem do końca od czego zacząć...

Dodałem do kodu kilka rzeczy i generalnie wysyłanie zgłoszeń działa, jednak mam jeszcze problem: wysyłając kilka zgłoszeń, pod /zglos list wyświetla się tylko jedno. Dopiero po jego usunięciu wyświetla się kolejne, ale wciąż tylko jedno. Numerowane są dziwnie, bo pierwsze zgłoszenie ma numer 1., drugie również, trzecie i czwarte mają 3., piąte i szóste mają numer 5, siódme i ósme numer 7 itd. W jaki sposób to naprawić, aby zarówno numeracja była normalna, jak i aby zgłoszenia wyświetlały się wszystkie, a nie pojedynczo?

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 0
17 minut temu, MrWinex66 napisał:

Okej, dziękuję bardzo :) Właśnie tego potrzebowałem - nie wiedziałem do końca od czego zacząć...

Dodałem do kodu kilka rzeczy i generalnie wysyłanie zgłoszeń działa, jednak mam jeszcze problem: wysyłając kilka zgłoszeń, pod /zglos list wyświetla się tylko jedno. Dopiero po jego usunięciu wyświetla się kolejne, ale wciąż tylko jedno. Numerowane są dziwnie, bo pierwsze zgłoszenie ma numer 1., drugie również, trzecie i czwarte mają 3., piąte i szóste mają numer 5, siódme i ósme numer 7 itd. W jaki sposób to naprawić, aby zarówno numeracja była normalna, jak i aby zgłoszenia wyświetlały się wszystkie, a nie pojedynczo?

 

Jeśli chcesz wysłać całą listę jednocześnie, to zrób to w ten sposób:

send "%{zgloszenia::*}%"

A jeśli chcesz mieć odpowiednią numerację, to zrób to w ten sposób:

set {_int} to 1
loop {zgloszenia::*}:
	send "&6&8%{_int}%. &b%loop-value%"
	add 1 to {_int}

Twój sposób z %loop-index% nie działał poprawnie, gdyż loop-index to nazwa "pudełka" zawierającego wartość. Jeśli dodajesz coś do listy i będzie to 5 element, to otrzyma na zawsze %loop-index% jako 5. Jeśli wyczyścisz {lista::1}, to będzie się wyświetlało nie 1, 2 ,3 itd. tylko 2, 3, 4 itd.

Przykładowo, jeśli zrobisz taki prosty kod:

on load:
	set {_lista::cos} to "Witaj!"
	loop {_lista::*}:
		send "%loop-index% - %loop-value%" to console

To wyśle 'cos - Witaj!'.

Edytowane przez Kormic
Odnośnik do odpowiedzi
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ę...