Skocz do zawartości
  • 0

Komenda na blokowanie określonych komend danego gracza.


DomosTM
 Udostępnij

Pytanie

Witajcie! potrzebuję skrypt na blokowanie danemu graczowi określonych komend. Globalnie na wszystkich graczy działało.. lecz jak chciałem jako zmienną z argumentu dodać działanie tylko na konkretną osobę.. no cóż.. wszystko się posypało xd. Nie jestem zbyt obeznany w temacie i dziaduje na różnych kodach i przykładach ale tutaj już nie mam pomysłu.. Nic podobnego nie znalazłem.. Więc jakby mógł ktoś rzucić okiem i podpowiedzieć to byłbym bardzo wdzięczny. Wiem, że pierwsza część kodu działa.. lecz nie wiem czy jest sposób bardziej zwięźle zapisać komendy do blokowania jak i nie mam pojęcia jak zapisać warunek.. "if {blokada.%player-arg%} is true:" Tam się pojawiają błędy.
 

variables:
    {blokada.%player-arg%} = false

command /blokada [<player>]:
    permission: admin.blokada
    permission message: &cNie posiadasz uprawnien do wykonania tej komendy (admin.blokada)
    trigger:
        if arg 1 is not set:
            send "&cPoprawne uzycie /blokada <gracz>"
        if arg 1 is set:
            if {blokada.%player-arg%} is false:
                set {blokada.%player-arg%} to true
                send "&cBlokada is close, kick, ban dla gracza %player-arg% zostala wlaczona"
            else:
                set {blokada.%player-arg%} to false
                send "&aBlokada is close, kick, ban dla gracza %player-arg% zostala wylaczona"

on command "is close":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "is kick":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "is ban":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "island close":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "island kick":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "island ban":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "island visitors":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "is visitors":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "is":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."
on command "island":
    if {blokada.%player-arg%} is true:
        if %player-arg% is not op:
            cancel event
            send "&4Administacja wylaczyla wykorzystanie tej komendy."

 

Edytowane przez xNightPower_
Nieaktywny

Naprawiam formatowanie na ciemnym stylu, umieszczam kod w code.

Odnośnik do komentarza
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Teraz, DomosTM napisał:

Witajcie! potrzebuję skrypt na blokowanie danemu graczowi określonych komend. Globalnie na wszystkich graczy działało.. lecz jak chciałem jako zmienną z argumentu dodać działanie tylko na konkretną osobę.. no cóż.. wszystko się posypało xd. Nie jestem zbyt obeznany w temacie i dziaduje na różnych kodach i przykładach ale tutaj już nie mam pomysłu.. Nic podobnego nie znalazłem.. Więc jakby mógł ktoś rzucić okiem i podpowiedzieć to byłbym bardzo wdzięczny. Wiem, że pierwsza część kodu działa.. lecz nie wiem czy jest sposób bardziej zwięźle zapisać komendy do blokowania jak i nie mam pojęcia jak zapisać warunek.. "if {blokada.%player-arg%} is true:" Tam się pojawiają błędy.

W twoim kodzie są łącznie 3 błędy:

1. Użyłeś %player-arg% w sekcji 'variables', co jest błędne. Należy tam użyć %player%.

2. W evencie 'on coomand' użyłeś %player-arg%. Jest to błędne, gdyż argumentów można użyć jedynie w definicji nowej komendy. Użyj %player%.

3. Procentów używamy jedynie w tekście i nazwach zmiennych gdy chcemy zamieścić (zagnieździć) wartość danego wyrażenia, bądź zmiennej w nich. oraz w 'chance of', nigdzie indziej. Wszystkie %player-arg% należy usunąć z procentów i zastąpić je 'player' tak samo jak w przypadku powyższych błędów.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
27 minut temu, Kormic napisał:

W twoim kodzie są łącznie 3 błędy:

1. Użyłeś %player-arg% w sekcji 'variables', co jest błędne. Należy tam użyć %player%.

2. W evencie 'on coomand' użyłeś %player-arg%. Jest to błędne, gdyż argumentów można użyć jedynie w definicji nowej komendy. Użyj %player%.

3. Procentów używamy jedynie w tekście i nazwach zmiennych gdy chcemy zamieścić (zagnieździć) wartość danego wyrażenia, bądź zmiennej w nich. oraz w 'chance of', nigdzie indziej. Wszystkie %player-arg% należy usunąć z procentów i zastąpić je 'player' tak samo jak w przypadku powyższych błędów.

Dobrze rozumiem, że w takim wypadku wystarczy zmienić:

on command "is close":
    if {blokada.%player-arg%} is true:
        if player-arg is not op:
            cancel event


na:

on command "is close":
    if {blokada.%player%} is true:
        if player is not op:
            cancel event


wtedy już blokada będzie działała tylko na tego gracza?

Edytowane przez xNightPower_
Nieaktywny

Umieszczam kod w code.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, DomosTM napisał:

Dobrze rozumiem, że w takim wypadku wystarczy zmienić:

on command "is close":
    if {blokada.%player-arg%} is true:
        if player-arg is not op:
            cancel event

na:

on command "is close":
    if {blokada.%player%} is true:
        if player is not op:
            cancel event



wtedy już blokada będzie działała tylko na tego gracza?

Otóż to, dobrze zrozumiałeś.

Na przyszłość zalecam korzystać z list zmiennych, aby móc łatwiej zarządzać zmiennymi.

W twoim przypadku zmienna zmieniłaby się na {blokada::%player%}.

A dlaczego powinieneś ich używać? Już tłumaczę.

# Listę zmiennych możesz w prosty sposób wyczyścić (gwiazdka w nazwie zmiennej oznacza dowolny element):
clear {blokada::*} 

# Listę zmiennych możesz zapętlić i wykonać na niej różne operacje (w tym przypadku loop-index to nazwa gracza, a loop-value to wartość true/false):
loop {blokada::*}:
	# Dalszy kod
    
# Możesz sprawdzić jej rozmiar:
size of {blokada::*}

Powyższych rzeczy nie zrobisz ze zwykłymi zmiennymi.

Gdybyś zapisywał te zmienne w sposób, że albo jest zapisana (gracz posiada blokadę), albo nie jest zapisana (gracz nie posiada blokady) zamiast zapisu true/false, mógłbyś z pomocą sprawdzenia rozmiaru od razu sprawdzić ilu graczy posiada blokadę.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Więc widzę, że na początku przekombinowałem.. To co wyżej napisałeś wygląda tak jak to sobie w początkowej fazie wyobrażałem ale brakło kompetencji xd Zamysł zrozumiałem choć wykonania się raczej nie podejmę. Mimo wszystko dziękuję za wyjaśnienia i rozwiązanie problemu. 😀

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

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

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