Skocz do zawartości
  • 0

Zapisywanie lokalizacji


MrWinex66

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 komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

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

https://forums.skunity.com/threads/creating-configuration-file-for-skripts.3548/

Poczytaj sobie o plikach configuracyjnych. Na gorze masz link

Odnośnik do komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/#findComment-258102
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 komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/#findComment-258106
Udostępnij na innych stronach

  • 0
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 komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/#findComment-258108
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 komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/#findComment-258131
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 komentarza
https://skript.pl/temat/41272-zapisywanie-lokalizacji/#findComment-258134
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ę...