Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak zrobić skrypt na staty zabić i zginięć?


DanoneQ1337

Rekomendowane odpowiedzi

Opublikowano

Witam chciałbym tak jak w tytule zrobić pod komendą /statystyki tak aby wyświetlało się po wpisaniu ilość zabójstw i zginięć. Proszę o pomoc :)

Opublikowano

Do tego potrzebujesz gdzieś przechowywać te dane, może być plik yml, json lub jakikolwiek inny format plików, przechowujących dane.

Gracz zginie sprawdzasz czy istnieje jego id/nick zapisany w pliku - jeśli tak zwiekszasz wartość o 1 w przeciwnym wypadku dopisujesz go do pliku i dajesz 1.

 

W przypadku zabójstw ta sama zależność.

 

 

Aby wyświetlić pózniej te dane szukasz gracza, który wpisał te komende w tym pliku i wyświetlasz .

Opublikowano
variables:
    {kills.%player%} = 0
    {deaths.%player%} = 0
    
on death:
    if attacker is player:
        if victim is player:
            add 1 to {kills.%attacker%}
            add 1 to {deaths.%victim%}

command /statystyki [<text>]:
    trigger:
        if arg 1 is not set:
            send "Twoje statystyki"
            send "Zabojstwa: %{kills.%player%}%"
            send "Zgony: %{deaths.%player%}%"
        else:
            send "Statystyki gracza %arg 1%"
            send "Zabojstwa: %{kills.%arg 1%}%"
            send "Zgony: %{deaths.%arg 1%}%"

 

Opublikowano
21 minut temu, ninja12412 napisał:

variables:
    {kills.%player%} = 0
    {deaths.%player%} = 0
    
on death:
    if attacker is player:
        if victim is player:
            add 1 to {kills.%attacker%}
            add 1 to {deaths.%victim%}
command /statystyki [<text>]:
    trigger:
        if arg 1 is not set:
            send "Twoje statystyki"
            send "Zabojstwa: %{kills.%player%}%"
            send "Zgony: %{deaths.%player%}%"
        else:
            if {kills.%arg 1%} is not set:
                send "&cNie ma takiego gracza"
            else:
                send "Statystyki gracza %arg 1%"
                send "Zabojstwa: %{kills.%arg 1%}%"
                send "Zgony: %{deaths.%arg 1%}%"

 

Statystyki będzie miał tylko z bierzącej sesji serwera, więc lepiej te dane przechować w jsonie chociażby

a do tego lepiej jest użyć czegoś takiego 

if attacker is player and victim is player:
  add 1 to {kills.%attacker%}
  add 1 to {deaths.%victim%}

zamiast

if attacker is player:
        if victim is player:
            add 1 to {kills.%attacker%}
            add 1 to {deaths.%victim%}

 

Opublikowano
1 godzinę temu, _sectasy napisał:

Do tego potrzebujesz gdzieś przechowywać te dane, może być plim yml, json lub jakikolwiek inny format plików, przechowujących dane.

Gracz zginie sprawdzasz czy istnieje jego id/nick zapisany w pliku - jeśli tak zwiekszasz wartość o 1 w przeciwnym wypadku dopisujesz go do pliku i dajesz 1.

 

W przypadku zabójstw ta sama zależność.

 

 

Aby wyświetlić pózniej te dane szukasz gracza, który wpisał te komende w tym pliku i wyświetlasz .

Co to znaczy że mam gdzieś przechowywać te dane? To znaczy jak?

Opublikowano
29 minut temu, _sectasy napisał:

Tak, musisz te dane przechowywać gdzieś, ponieważ zostaną utracone po restarcie serwera, a to nie jest celem chyba.

 

Tutaj podsyłam przykład w skripcie jak pracować z plikami yml

https://forums.skunity.com/threads/player-data-system.10951/

Oki a mam pytanko jak ustawić żeby tylko osoba z określoną permisją mogła sprawdzać staty innych graczy?

Przed chwilą, DanoneQ1337 napisał:

Oki a mam pytanko jak ustawić żeby tylko osoba z określoną permisją mogła sprawdzać staty innych graczy?

Bo nie chce aby każdy miał dostęp do sprawdzania innych graczy statystyk

Opublikowano
6 minut temu, _sectasy napisał:

Dodajesz pod definicją komendy permission: nazwaskryptu.use

Tylko że ja chce dodać permisje tylko do statystyk gdy chcesz sprawdzić czyjeś, nie swoje

Przed chwilą, DanoneQ1337 napisał:

Tylko że ja chce dodać permisje tylko do statystyk gdy chcesz sprawdzić czyjeś, nie swoje

bo chyba jak dodam permission pod komendą /staty to zablokuje nawet sprawdzenie swoich.

Opublikowano
4 minuty temu, DanoneQ1337 napisał:

Tylko że ja chce dodać permisje tylko do statystyk gdy chcesz sprawdzić czyjeś, nie swoje

bo chyba jak dodam permission pod komendą /staty to zablokuje nawet sprawdzenie swoich.

Musisz sobie dopisać odpowiednią mechanike sprawdzania permisji, tam tylko je deklarujesz

 

if player has permission "permisja"

 

Opublikowano
4 minuty temu, _sectasy napisał:

Musisz sobie dopisać odpowiednią mechanike sprawdzania permisji, tam tylko je deklarujesz

 


if player has permission "permisja"

 

command /staty [<text>]:
    permission: sprawdzstaty.use
    trigger:
        if arg 1 is not set:
            send " &3Nagroda za: &4%{granica.%player%}-{wykopanebloki.%player%}%&3 bloków "
            send " &3Ilość zdobytych &5Mega Zdrapek&3: &5%{megazdrapki.%player%}%"
            send " &3Ilość zdobytych &6Zdrapek&3: &6%{zdrapki.%player%}%"
            send " &3Pamiętaj że co 5000 wykopanych bloków dostajesz &5Mega Zdrapke&3! "
        else:
            if player has permission "sprawdzstaty.use"
                if {wykopanebloki.%arg 1%} is not set:
                send "&cNie ma takiego gracza"
                else:
                send "&7[&6Gracz %arg 1%&7] &3Nagroda za: &4%5000-{wykopanebloki.%arg 1%}%&3 bloków "
                send "&7[&6Gracz %arg 1%&7] &3Ilość zdobytych &5Mega Zdrapek&3: &5%{megazdrapki.%arg 1%}%"
                send "&7[&6Gracz %arg 1%&7] &3Ilość zdobytych &6Zdrapek&3: &6%{zdrapki.%arg 1%}%"
                send "&7[&6Gracz %arg 1%&7] &3Pamiętaj że co 5000 wykopanych bloków dostajesz &5Mega Zdrapke&3! "
Pomożesz bo ciągle mam błąd 😞 Jak nie z ilością spacji to z czymś innym

Opublikowano

command /staty [<text>]:
    permission: staty.use
    trigger:
        if arg 1 is not set:
            send " &3Nagroda za: &4%{granica.%player%}-{wykopanebloki.%player%}%&3 bloków "
            send " &3Ilość zdobytych &5Mega Zdrapek&3: &5%{megazdrapki.%player%}%"
            send " &3Ilość zdobytych &6Zdrapek&3: &6%{zdrapki.%player%}%"
            send " &3Pamiętaj że co 5000 wykopanych bloków dostajesz &5Mega Zdrapke&3! "
        else:
            if {wykopanebloki.%arg 1%} is not set:
                send "&cNie ma takiego gracza"
            else:
                send "&7[&6Gracz %arg 1%&7] &3Nagroda za: &4%5000-{wykopanebloki.%arg 1%}%&3 bloków "
                send "&7[&6Gracz %arg 1%&7] &3Ilość zdobytych &5Mega Zdrapek&3: &5%{megazdrapki.%arg 1%}%"
                send "&7[&6Gracz %arg 1%&7] &3Ilość zdobytych &6Zdrapek&3: &6%{zdrapki.%arg 1%}%"
                send "&7[&6Gracz %arg 1%&7] &3Pamiętaj że co 5000 wykopanych bloków dostajesz &5Mega Zdrapke&3! "

Jak to zrobić żeby tylko osoby z odpowiednią permisją mogły sprawdzać staty innych graczy?

Opublikowano
variables:
	{kills.%player%} = 0
	{deaths.%player%} = 0
    
on death:
	if attacker is player and victim is player:
		add 1 to {kills.%attacker%}
		add 1 to {deaths.%victim%}
command /statystyki [<text>]:
	trigger:
		if arg 1 is not set:
			send "Twoje statystyki"
			send "Zabojstwa: %{kills.%player%}%"
			send "Zgony: %{deaths.%player%}%"
		else:
  			if player has permission "statystyki.*":
				if {kills.%arg 1%} is not set:
					send "&cNie ma takiego gracza"
				else:
					send "Statystyki gracza %arg 1%"
					send "Zabojstwa: %{kills.%arg 1%}%"
					send "Zgony: %{deaths.%arg 1%}%"
  			else:
  				send "&cNie mozesz sprawdzac statystyk innych graczy!"

Gotowe 😄

 


 

2 godziny temu, _sectasy napisał:

Do tego potrzebujesz gdzieś przechowywać te dane, może być plik yml, json lub jakikolwiek inny format plików, przechowujących dane.

Wydaje mi się, że nie ma potrzeby zapisywać do plików. Nie zapisze się w przypadku awarii, natomiast zwykły restart nie powinien wyczyścić zmiennej.

Jeśli ci pomogłem to daj lajka ❤️ 

 

Opublikowano
3 minuty temu, GamePL7 napisał:

variables:
	{kills.%player%} = 0
	{deaths.%player%} = 0
    
on death:
	if attacker is player and victim is player:
		add 1 to {kills.%attacker%}
		add 1 to {deaths.%victim%}
command /statystyki [<text>]:
	trigger:
		if arg 1 is not set:
			send "Twoje statystyki"
			send "Zabojstwa: %{kills.%player%}%"
			send "Zgony: %{deaths.%player%}%"
		else:
  			if player has permission "statystyki.*":
				if {kills.%arg 1%} is not set:
					send "&cNie ma takiego gracza"
				else:
					send "Statystyki gracza %arg 1%"
					send "Zabojstwa: %{kills.%arg 1%}%"
					send "Zgony: %{deaths.%arg 1%}%"
  			else:
  				send "&cNie mozesz sprawdzac statystyk innych graczy!"

Gotowe 😄

 


 

Wydaje mi się, że nie ma potrzeby zapisywać do plików. Nie zapisze się w przypadku awarii, natomiast zwykły restart nie powinien wyczyścić zmiennej.

Nie wiem zbytnio jak działą ten języka skryptowy, ale wydaje mi się, że restart wyczyści tę zmienną tak jak to mamy w przypadku innych języków czy java i pluginów minecraft

 

Nie pisze w skrypcie, aczkolwiek moja wiedza jest na tyle dostateczna aby pomagać innym.

Opublikowano
3 godziny temu, GamePL7 napisał:

Wydaje mi się, że nie ma potrzeby zapisywać do plików. Nie zapisze się w przypadku awarii, natomiast zwykły restart nie powinien wyczyścić zmiennej.

2 godziny temu, _sectasy napisał:

Nie wiem zbytnio jak działą ten języka skryptowy, ale wydaje mi się, że restart wyczyści tę zmienną tak jak to mamy w przypadku innych języków czy java i pluginów minecraft

 

Nie ma potrzeby zapisywania zmiennych w oddzielnym pliku. Dlaczego? Bo Skript domyślnie zapisuje wszystkie zmienne w lokalnym pliku variables.csv czyli robi za nas cała robotę, natomiast faktycznie w przypadku crasha serwera stracimy przynajmniej jedną zmienną 😕 Możemy jednak w konfiguracji Skript zmienić domyślny sposób zapisywania zmiennych z pliku csv na bazę danych, dzięki czemu unikniemy takiej sytuacji.  

Opublikowano
3 minuty temu, carbonx napisał:

Nie ma potrzeby zapisywania zmiennych w oddzielnym pliku. Dlaczego? Bo Skript domyślnie zapisuje wszystkie zmienne w lokalnym pliku variables.csv czyli robi za nas cała robotę, natomiast faktycznie w przypadku crasha serwera stracimy przynajmniej jedną zmienną 😕 Możemy jednak w konfiguracji Skript zmienić domyślny sposób zapisywania zmiennych z pliku csv na bazę danych, dzięki czemu unikniemy takiej sytuacji.  

To tego nie wiedziałem, sugerowałem się standardowym sposobem pisania pluginów w minecraft, Dzięki za doinformowanie!

Opublikowano
32 minuty temu, _sectasy napisał:

To tego nie wiedziałem, sugerowałem się standardowym sposobem pisania pluginów w minecraft, Dzięki za doinformowanie!

point, location, 8605776F726C6480FF0000000181046E616D65208005776F726C64017809408FB000000000000179094059C00000000000017A0900000000000000000570697463680800000000037961770800000000
schemat::map1, location, 8605776F726C6480FF0000000181046E616D652080046D617031017809403B8F31BEABCE150179094059800000000000017A09403B86B7263F9E660570697463680840CE65710379617708430D7ED7
schemat.map1, location, 8605776F726C6480FF0000000181046E616D652080046D6170310178093FE14BB7F41535480179094059400000000000017A093FDF16DDE75121C20570697463680841CE47F9037961770843B25260
spawn.loc, location, 8605776F726C6480FF0000000181046E616D65208005776F726C64017809BFE54B33B1343BD3017909405A800000000000017A09C00D9665B9728386057069746368083EE6541B0379617708439C5B9B

 

 

przykładowy wycinek z pliku variables.csv

Jeśli ci pomogłem to daj lajka ❤️ 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...