Skocz do zawartości
  • 0

Problem z Full Inventory - Komunikat


Pytanie

Witam, potrzebuje napisać skript, który będzie pokazywał komunikat w zależności od tego, czy mamy pełen ekwipunek. W pierwszej kolejności:
1) Jeżeli ekwipunek jest pełny - pokazuje komunikat "blablabla"
2) Jeżeli ekwipunek jest NADAL pełen - nie spamuje tym komunikatem na okrągło, tylko pokazuje go raz na 2 MINUTY
3) Jezeli mamy wyłożone itemy do grindowania ich (dla przykładu - wyłożyliśmy po 1 cobblestone na caly ekwipunek, by tylko go zbierać) - to wtedy nie wyskakuje komunikat, CHYBA ŻE podnosimy inny item, niż ten, na którego mamy miejsce (stackowanie się)
Wstępnie mam napisane coś takiego i względnie działa, jednak nie tak jak opisałem to wyżej.

Prosiłbym o pomoc, z góry bardzo dziękuję i pozdrawiam!

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/
Udostępnij na innych stronach

16 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, kiroxtv napisał:

Witam, potrzebuje napisać skript, który będzie pokazywał komunikat w zależności od tego, czy mamy pełen ekwipunek. W pierwszej kolejności:
1) Jeżeli ekwipunek jest pełny - pokazuje komunikat "blablabla"
2) Jeżeli ekwipunek jest NADAL pełen - nie spamuje tym komunikatem na okrągło, tylko pokazuje go raz na 2 MINUTY
3) Jezeli mamy wyłożone itemy do grindowania ich (dla przykładu - wyłożyliśmy po 1 cobblestone na caly ekwipunek, by tylko go zbierać) - to wtedy nie wyskakuje komunikat, CHYBA ŻE podnosimy inny item, niż ten, na którego mamy miejsce (stackowanie się)
Wstępnie mam napisane coś takiego i względnie działa, jednak nie tak jak opisałem to wyżej.

Prosiłbym o pomoc, z góry bardzo dziękuję i pozdrawiam!

Po pierwsze to nie napisać skript tylko skrypt

1) if player's inventory is full:

2) every 2 minutes:

loop all players:

if loop-player's inventory is full:

send "wiadomosc" to loop-player

3) Nie rozumiem

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237498
Udostępnij na innych stronach

  • 0
command /pelny [<text>]:
	trigger:
		while player's inventory is full:
			send "blablabla"
			wait 2 minutes
on pickup:
	if player can hold event-item:
		send "&7Nie masz miejsca aby podniesc &6%event-item%"

 

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237514
Udostępnij na innych stronach

  • 0
8 godzin temu, xAxee napisał:

command /pelny [<text>]:
	trigger:
		while player's inventory is full:
			send "blablabla"
			wait 2 minutes
on pickup:
	if player can hold event-item:
		send "&7Nie masz miejsca aby podniesc &6%event-item%"

 

Na jakiej zasadzie ta komenda dziala? Tzn czemu ona służy jesli chodzi o takie zastosowanie praktyczne

Edytowane przez kiroxtv
Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237574
Udostępnij na innych stronach

  • 0

Wpisujesz /pelny i co dwie minuty wysyła Ci wiadomość, jeśli masz pełny ekwipunek. Swoją drogą nie używaj every timepan: , tylko zamiast tego użyj while'a.

Przykładowy kod z użyciem while'a jako cooldownu. Być może jest źle wytabowany, bo pisałem z telefonu.

command /cooldown [<text>]:
   trigger:
        if {zmienna::%player%} is not set:
            set {zmienna::%player%} to 0
        if {zmienna::%player%} = 0:
            send "nagroda!"
            set {zmienna::%player%} to 20
            while {zmienna::%player%} > 0:
                remove 1 from {zmienna::%player%}
                wait 1 second
         else if {zmienna::%player%} > 0:
             send "musisz poczekać jeszcze %{zmienna::%player%}% sekund."

 

Edytowane przez LjayPL789
Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237576
Udostępnij na innych stronach

  • 0
7 godzin temu, kiroxtv napisał:

Na jakiej zasadzie ta komenda dziala? Tzn czemu ona służy jesli chodzi o takie zastosowanie praktyczne

No nie powiedziałes gdzie to ma być to dałem do komendy. 

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237580
Udostępnij na innych stronach

  • 0
W dniu 5.03.2020 o 09:26, xAxee napisał:

No nie powiedziałes gdzie to ma być to dałem do komendy. 

W tym sęk, żeby to dzialało - to ja sam nie wiem jakiego eventu trezba użyć, po prostu - chodzi mi o zwykłe full inventory jak na hypixel skyblocku, jak ktoś gral to wie, to jest bardzo zblizone do tego co wysyłacie tutaj, tylko trzeba to jeszcze jakoś ubrać w cały skrypt zautomatyzowany thats it, a ja za bardzo nie wiem gdzie xD

Refresh, dalej potrzebuję pomocy z tym, bo nie działa mi tak jak chciałem.
Powtórze:
Chcę zrobić KOMUNIKAT NA EKRANIE, że GRACZ MA PEŁNE INVENTORY, tyle
Nie wiem jakiego eventu użyć, czy on pick up, czy on inventory open, czy close czy jak?
 

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-237584
Udostępnij na innych stronach

  • 0
function bCheckInventory(p: player, t: text, i: itemtype):
    if {_t} is "while":
        if {_p} doesn't have enough space for any item:
            send player title "miejsce" with subtitle "nie masz miejsca w eq"
    else if {_t} is "event":
         if {_p} doesn't have enough space for {_i}:
            send player title "miejsce" with subtitle "nie masz miejsca w eq"       
on join:
    while player is online:
        bCheckInventory(player, "while", stone)
        wait 2 minutes

on pick up:
    bCheckInventory(player, "event", event-item)

wiem, że trochę nieudolna ta funkcja, ale powinno działać 👍

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-238582
Udostępnij na innych stronach

  • 0

Witam, pozmieniałem trochę funkcję, potrzebuję mieć warunek jeżeli variable jest włączony, tj.

function bCheckInventory(p: player, t: text, i: itemtype):
	if {alerty::player::{_p}::ekwipunek} is true:
		if {_t} is "while":
			if {_p} doesn't have enough space for any item:
				send {_p} title "&c&lPELNY EKWIPUNEK" with subtitle "&fTwoj ekwipunek jest pelny" for 2 second
				play sound "ENTITY_VILLAGER_NO" with volume 0.5 to {_p}
		else if {_t} is "event":
			if {_p} doesn't have enough space for {_i}:
				send {_p} title "&c&lPELNY EKWIPUNEK" with subtitle "&fTwoj ekwipunek jest pelny" for 2 second      
				play sound "ENTITY_VILLAGER_NO" with volume 0.5 to {_p}
on join:
	while player is online:
		bCheckInventory(player, "while", stone)
		wait 2 minutes

on pick up:
	bCheckInventory(player, "event", event-item)

Poza tym wyskakuje problem z "if {_p} doesn't have enough space for any item:" - nie rozumie tego "for any item"

btw. czemu jest (player, "while", stone) - czemu tutaj jest stone? Ma to jakieś znaczenie? Bo bardziej chodzi mi o KAŻDY item, wiesz o co chodzi :P
Okej, wystarczyło zmienić {_p} na %{_p}% - ale co dalej? Bo coś nie chce wciąż działać te "for any item"

Edytowane przez kiroxtv
Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-238588
Udostępnij na innych stronach

  • 0
11 minut temu, LjayPL789 napisał:

A jak byś wywalił tą co dwuminutową pętle?


on pick up:
    if player doesn't have enough space for event-item:
        send "nie masz miejsca w eq"

 

Powiem tak, nie działa to.. Jakby w ogóle event się w ogóle nie włączał, nie ma żadnego komunikatu, niczego

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-238593
Udostępnij na innych stronach

  • 0

Podbijam post, wciąż nie wiem jakiego eventu uzyc by sprawnie to działało, nawet przy pomocy @LjayPL789 za bardzo nie chce działać, jakby skript jest dobrze napisany, ale event coś łapać nie chce. Mam wrazenie, że event on pick up ignoruje się wtedy, kiedy gracz nie ma miejsca w ekwipunku, bo przecież go nie ma więc jak ma się odpalać, skoro rzeczy podnieść nie moze? Ma ktoś pomysł?

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-240013
Udostępnij na innych stronach

  • 0

Nie widzę innego rozwiązania jak pobranie inventory gracza, stackowanie wszystkich itemków ręcznie i sprawdzanie czy łącznie zajmują mniej slotów niż gracz ma w ekwipunku:

function checkFullEq(p: player) :: boolean:
	if size of all items in the inventory of {_p} < 41:
		return false
	loop all items in the inventory of {_p}:
		if {_liczenie::%type of loop-item%} is not set:
			set {_liczenie::%type of loop-item%} to 0
		add item amount of loop-item to {_liczenie::%type of loop-item%}
		set {_liczenieMax::%type of loop-item%} to max stack size of loop-item
	set {_zajetesloty} to 0
	loop {_liczenie::*}:
		add (rounded up (loop-value / {_liczenieMax::%loop-index%})) to {_zajetesloty}

	if {_zajetesloty} < 41:
		return false #niepełne
	return true #pełne

rightclick:
	checkFullEq(player):
		send "twój ekwipunek jest pełny"
	else:
		send "niepełny"

 

Edytowane przez PanMaruda
Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-240021
Udostępnij na innych stronach

  • 0

Identyko rozwiązania dostałem od gościa, poprawiłem wszystko i tak działa, chyba nawet tak jakbym chciał. Dzięki wielkie za pomoc! :P

on mine:
	CheckInventory(player)
	
on pickup:
	CheckInventory(player)	

every 2 minutes:
	loop all players:
		CheckInventory(loop-player)
	
function CheckInventory(p: player):
	if {alerty::player::%{_p}%::inventory} is true:
		loop all items in {_p}'s inventory:
			add 1 to {_inv}
		if {_p}'s offhand is not air:
			remove 1 from {_inv}
		if {_p}'s boots is not air:
			remove 1 from {_inv}
		if {_p}'s leggings is not air:
			remove 1 from {_inv}
		if {_p}'s chestplate is not air:
			remove 1 from {_inv}
		if {_p}'s helmet is not air:
			remove 1 from {_inv}
		if {_inv} is 36:
			send {_p} title "&c&lPELNY EKWIPUNEK" with subtitle "&fTwoj ekwipunek jest pelny" for 2 second
			send "&7Jesli chcesz wylaczyc te powiadomienie wejdz w &6MENU Ustawienia Gry" to {_p}
			play sound "ENTITY_VILLAGER_NO" with volume 0.5 to {_p}

 

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-240022
Udostępnij na innych stronach

  • 0
W dniu 16.03.2020 o 16:01, kiroxtv napisał:

Nie wyświetla

ma wysłać wiadomość do gracza czy do itemu który jest podnoszony????

on pick up:
	send "blablabla" TO PLAYER

 

Odnośnik do komentarza
https://skript.pl/temat/37318-problem-z-full-inventory-komunikat/#findComment-297826
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

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