Solved if player contais haste

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

Status
Not open for further replies.

Vxnku

Member
Nov 29, 2022
15
0
1
23
on block place:
set {BlockByPlayer::%event-location%} to player
on break of any log:
if {BlockByPlayer::%event-location%} is set:
stop
^
#In this place, all works fine |
if player contains hase:
stop
^
|
#As I didn't mock here, I couldn't get the script to stop
apply weakness 4 to player for 15 seconds
apply slow digging 4 to player for 15 seconds
apply slowness 4 to player for 4 seconds
chance of 6%:
apply weakness 1 to player for 99999 seconds
apply slow digging 1 to player for 99999 seconds
send "Ты повредил палец" to player
send "%player% повредил палец" to all players in radius 20 of player
stop
chance of 1%:
apply weakness 2 to player for 99999 seconds
apply slow digging 2 to player for 99999 seconds
send "Ты повредил руку" to player
send "%player% повредил руку" to all players in radius 20 of player
stop
on break of stone:
if {BlockByPlayer::%event-location%} is set:
stop
if player contains haste:
stop
if player has permission "group.[minerlvl1":
stop
chance of 50%:
apply weakness 1 to player for 2 seconds
apply slow digging 3 to player for 2 seconds
apply slowness 1 to player for 2 seconds
chance of 6%:
apply weakness 1 to player for 99999 seconds
apply slow digging 1 to player for 99999 seconds
send "Ты повредил палец" to player
send "%player% повредил палец" to all players in radius 20 of player
stop
chance of 1%:
apply weakness 2 to player for 99999 seconds
apply slow digging 2 to player for 99999 seconds
send "Ты повредил руку" to player
send "%player% повредил руку" to all players in radius 20 of player
stop
 
Привет.
Для записи блоков, которые были поставлены игроком лучше всего использовать лист переменных, а не сами переменные. С листом переменных можешь ознакомиться тут - https://skripthub.net/tutorials/31

Для примера:
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    remove location of event-block from {PlacedBlocks_%player%::*} #убирает координаты блока из листа

В твоем случае подойдет такой код:
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
        stop

Для проверки эффекта лучше всего использовать данный код:

Code:
    if "%player's potion effects%" contains "speed of tier 1": #проверка активных эффектов игрока на наличие скорости, ну или любого другого эффекта, который тебе нужен
        send "У тебя имеется эффект скорости первого уровня"
        
    if "%player's potion effects%" contains "haste of tier 1":
        send "У тебя имеется эффект сытости первого уровня"
        
    if "%player's potion effects%" contains "regeneration":
        send "У тебя имеется эффект регенерации"

Ставить везде stop не является обязательным.
Вот пример твоего скрипта в правильной форме:

Code:
on break stone:
    if location of event-block contains {PlacedBlocks_%player%::*}:
        if "%player's potion effects%" contains "haste of tier 1":
            stop
         else if "%player's potion effects%" doesn't contain "haste of tier 1":
            if player has permission "group.[minerlvl1]": #хотя я бы для обозначения уровня майнинга использовал бы переменные, которые затем привязал к плейсхолдеру и подключил к чату, если нужна помощь с этим, то можешь обратиться ко мне в лс
                stop
            else if player don't has permission "group.[minerlvl1]":
                chance of 50%: #конечно, для замедления игрока можно использовать эффект зелья, но лучше использовать само обозначение скорости игрока
                    apply weakness 1 to player for 2 seconds
                    apply slow digging 3 to player for 2 seconds
                    apply slowness 1 to player for 2 seconds
                chance of 6%:
                    apply weakness 1 to player for 99999 seconds
                    apply slow digging 1 to player for 99999 seconds
                    send "Ты повредил палец" to player
                    send "%player% повредил палец" to all players in radius 20 of player
                chance of 1%:
                    apply weakness 2 to player for 99999 seconds
                    apply slow digging 2 to player for 99999 seconds
                    send "Ты повредил руку" to player
                    send "%player% повредил руку" to all players in radius 20 of player

И пожалуйста, будь добр в следующий раз использовать отдельную рамку для кода (как это сделал я). Чтобы код был читаемым.
Если нет рамки для кода, то шанс того что твой запрос о помощи рассмотрят равен одному проценту.
Если у тебя остались вопросы, то можешь задать их прямо тут.
 
Привет.
Для записи блоков, которые были поставлены игроком лучше всего использовать лист переменных, а не сами переменные. С листом переменных можешь ознакомиться тут - https://skripthub.net/tutorials/31

Для примера:
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    remove location of event-block from {PlacedBlocks_%player%::*} #убирает координаты блока из листа

В твоем случае подойдет такой код:
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
        stop

Для проверки эффекта лучше всего использовать данный код:

Code:
    if "%player's potion effects%" contains "speed of tier 1": #проверка активных эффектов игрока на наличие скорости, ну или любого другого эффекта, который тебе нужен
        send "У тебя имеется эффект скорости первого уровня"
     
    if "%player's potion effects%" contains "haste of tier 1":
        send "У тебя имеется эффект сытости первого уровня"
     
    if "%player's potion effects%" contains "regeneration":
        send "У тебя имеется эффект регенерации"

Ставить везде stop не является обязательным.
Вот пример твоего скрипта в правильной форме:

Code:
on break stone:
    if location of event-block contains {PlacedBlocks_%player%::*}:
        if "%player's potion effects%" contains "haste of tier 1":
            stop
         else if "%player's potion effects%" doesn't contain "haste of tier 1":
            if player has permission "group.[minerlvl1]": #хотя я бы для обозначения уровня майнинга использовал бы переменные, которые затем привязал к плейсхолдеру и подключил к чату, если нужна помощь с этим, то можешь обратиться ко мне в лс
                stop
            else if player don't has permission "group.[minerlvl1]":
                chance of 50%: #конечно, для замедления игрока можно использовать эффект зелья, но лучше использовать само обозначение скорости игрока
                    apply weakness 1 to player for 2 seconds
                    apply slow digging 3 to player for 2 seconds
                    apply slowness 1 to player for 2 seconds
                chance of 6%:
                    apply weakness 1 to player for 99999 seconds
                    apply slow digging 1 to player for 99999 seconds
                    send "Ты повредил палец" to player
                    send "%player% повредил палец" to all players in radius 20 of player
                chance of 1%:
                    apply weakness 2 to player for 99999 seconds
                    apply slow digging 2 to player for 99999 seconds
                    send "Ты повредил руку" to player
                    send "%player% повредил руку" to all players in radius 20 of player

И пожалуйста, будь добр в следующий раз использовать отдельную рамку для кода (как это сделал я). Чтобы код был читаемым.
Если нет рамки для кода, то шанс того что твой запрос о помощи рассмотрят равен одному проценту.
Если у тебя остались вопросы, то можешь задать их прямо тут.


Привет, извини я попробую использовать вставки с кодом,
Я добавил втупую лист переменных что ты мне дал
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
        stop

[/CODE]
Она не работает, я все так-же от своих блоков получаю негативные эффекты, и мне надо бы сделать так, чтобы любой игрок что ломает блок поставленный игроком, не получал негативные эффекты

Насчет group.[minerlvl1 у меня это перм что даю я командой при обучении игроков для ломания глубинного сланца, для таких способностей я даю приставку [

Обозначение скорости игрока, и многие атрибуты я трогать не могу, так как они постоянно меняются
 
Last edited:
Привет, извини я попробую использовать вставки с кодом,
Я добавил втупую лист переменных что ты мне дал
Code:
on place:
    add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
on break any log:
    if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
        stop

[/CODE]
Она не работает, я все так-же от своих блоков получаю негативные эффекты, и мне надо бы сделать так, чтобы любой игрок что ломает блок поставленный игроком, не получал негативные эффекты

Насчет group.[minerlvl1 у меня это перм что даю я командой при обучении игроков для ломания глубинного сланца, для таких способностей я даю приставку [

Обозначение скорости игрока, и многие атрибуты я трогать не могу, так как они постоянно меняются
Попробуй этот код?

Code:
on place:
    add location of event-block to {PlacedBlocks::*} #добавляет координаты блока в лист
on break:
    if location of event-block contains {PlacedBlocks::*}: #проверяет наличие координатов блока в листе
        remove location of event-block from {PlacedBlocks::*}
    else if location of event-block doesn't contain {PlacedBlocks::*}: #если локация блока не содержится в листе
       (сюда вставь свой код накладывания эффектов)
 
Status
Not open for further replies.