Skocz do zawartości
  • 0
Bartusiak

Wirtualna skrzynia - kosz i kopiowanie itemków

Pytanie

Użytkownik

Witam !

Moim problemem jest skrypt (podany niżej), który odpowiada za wirtualną skrzynie zwaną koszem. Tam wszyscy gracze mogą brać / wyrzucać rzeczy.
Wszystko działa pięknie, ale jest drobny problem, albo nawet krytyczny :D - gracze mogą kopiować itemy.

Napisze przebieg jak bugować:
 

1. Wchodzę w /kosz i daje np. diaxy
2. Potem wychodzę i ponownie wchodzę (dalej są diaxy, bo nikt nie zabrał)
3. Potem wchodzi druga osoba, która także widzi diaxy i je bierze
4. Pomimo, że druga osoba zabrała już diaxy, pierwsza osoba dalej je widzi i też je zabiera - skopiowane !

Szczerze problem do rozwiązania teoretycznie prosty, ale jest sporo zabawy.

Ta wirtualna skrzynia - kosz powinna działać jak zwykła skrzynia, czyli jeśli do skrzyni patrzą dwie osoby to jeśli jedna zabierze przedmiot to skrzynia się odświeża w czasie rzeczywistym i tej drugiej znika ten przedmiot.


SKRYPT:

 

command /kosz:	permission: skrypt.kosz.used	permission message: &c[&bMMO24&c] &a NIE MASZ UPRAWNIEN !	trigger:		open chest with 6 rows named "                 &1KOSZ" to player 		wait 1 tick		set {_} to 6 * 9		loop {_} times:			set slot loop-number - 1 of current inventory of player to {kosz::Items::%loop-number%}on inventory close:	if inventory name of current inventory of player is "                 &1KOSZ":		clear {kosz::Items::*}		set {_} to 6 * 9		loop {_} times:			set {kosz::Items::%loop-number%} to slot "%loop-number - 1%" parsed as an integer of current inventory of player

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Użytkownik
  • 0

command /ustawkosz:

trigger:

if targeted block is chest block:

set {kosz} to location of targeted block

send "&aUstawiles kosz!"

else:

send "&cMusisz patrzec na skrzynie!"

command /kosz:

trigger:

if {kosz} is set:

open inventory of block at {kosz} to player

else:

send "&cKosz nie zostal ustawiony!"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

to daj może on inventory click i sprawdz czy inv to KOSZ i w tedy zabiera graczowi i dodaje do kosza.

A może dać "on inventory click" i "on inventory close" ?

Wtedy przy otwieraniu i zamykaniu będzie odświeżał, bo tak mi się wydaje (logicznie myśląc) , że jest to samo co było tylko w drugą stronę .

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

to daj może on inventory click i sprawdz czy inv to KOSZ i w tedy zabiera graczowi i dodaje do kosza.

Dalej nie działa (dodałem tak jak napisałem)

 

 

command /ustawkosz:	trigger:		if targeted block is chest block:			set {kosz} to location of targeted block			send "&aUstawiles kosz!"		else:			send "&cMusisz patrzec na skrzynie!"command /kosz:	trigger:		if {kosz} is set:			open inventory of block at {kosz} to player		else:			send "&cKosz nie zostal ustawiony!"

Na takiej zasadzie nie ma działać ten skrypt - po prostu komenda /kosz i ma być kosz, bo ktoś będzie spam robił potem tym /ustawkosz i lipa

Aktualny skrypt:

 

command /kosz:	permission: skrypt.kosz.used	permission message: &c[&bMMO24&c] &a NIE MASZ UPRAWNIEN !	trigger:		open chest with 6 rows named "                 &1KOSZ" to player 		wait 1 tick		set {_} to 6 * 9		loop {_} times:			set slot loop-number - 1 of current inventory of player to {kosz::Items::%loop-number%}on inventory close:	if inventory name of current inventory of player is "                 &1KOSZ":		clear {kosz::Items::*}		set {_} to 6 * 9		loop {_} times:			set {kosz::Items::%loop-number%} to slot "%loop-number - 1%" parsed as an integer of current inventory of playeron inventory close:	if inventory name of current inventory of player is "                 &1KOSZ":		clear {kosz::Items::*}		set {_} to 6 * 9		loop {_} times:			set {kosz::Items::%loop-number%} to slot "%loop-number - 1%" parsed as an integer of current inventory of player
Edytowane przez Bartusiak

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

refresh 

 

 

Shooterowy podał najlepsze rozwiązanie - też bym tak zrobił.

Możesz zrobić tak, że tylko Ty możesz ustawić kosz i po problemie :)

Wcale nie praktyczne. Według mnie nie jest najlepszym rozwiązaniem. Proszę o pomoc !

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

Nie praktyczne?



command /ustawkosz:
    trigger:
        if player has permission "kosz.use":
            if target block is chest:
                set {kosz.loc} to location of target block
                send "&aUstawiles kosz!"
            else:
                send "&cTo nie jest skrzynia!"
        else:
            send "&cNie masz do tego uprawnien!"

command /kosz:
    trigger:
        open inventory of block at {kosz.loc} to player
        send "&aOtworzyles kosz!"

To tylko 15 linijek i jedna zmienna :)


PS. Możesz postawić większą skrzynie i masz duży kosz :)


Edytowane przez astranaar

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

Nie praktyczne?

command /ustawkosz:    trigger:        if player has permission "kosz.use":            if target block is chest:                set {kosz.loc} to location of target block                send "&aUstawiles kosz!"            else:                send "&cTo nie jest skrzynia!"        else:            send "&cNie masz do tego uprawnien!"command /kosz:    trigger:        open inventory of block at {kosz.loc} to player        send "&aOtworzyles kosz!"

To tylko 15 linijek i jedna zmienna :)

PS. Możesz postawić większą skrzynie i masz duży kosz :)

Sorki nie wiedziałem , że to tak działa . No spoko nawet ;D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Losowy awatar
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×