1. 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!

  2. LOOKING FOR A VERSION OF SKRIPT?

    You can always check out our Wiki for downloads and any other information about Skript!

Dismiss Notice
This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Solved if player contais haste

Discussion in 'Skript' started by Vxnku, Nov 30, 2022.

Thread Status:
Not open for further replies.
  1. Vxnku

    Vxnku Member

    Joined:
    Nov 29, 2022
    Messages:
    14
    Likes Received:
    0
    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
     
  2. Best Answer:
    Post #2 by gangula, Nov 30, 2022
  3. gangula

    gangula Member

    Joined:
    Jul 28, 2021
    Messages:
    15
    Likes Received:
    0
    Привет.
    Для записи блоков, которые были поставлены игроком лучше всего использовать лист переменных, а не сами переменные. С листом переменных можешь ознакомиться тут - https://skripthub.net/tutorials/31

    Для примера:
    Code (Text):
    1. on place:
    2.     add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
    3. on break any log:
    4.     remove location of event-block from {PlacedBlocks_%player%::*} #убирает координаты блока из листа
    В твоем случае подойдет такой код:
    Code (Text):
    1. on place:
    2.     add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
    3. on break any log:
    4.     if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
    5.         stop
    Для проверки эффекта лучше всего использовать данный код:

    Code (Text):
    1.     if "%player's potion effects%" contains "speed of tier 1": #проверка активных эффектов игрока на наличие скорости, ну или любого другого эффекта, который тебе нужен
    2.         send "У тебя имеется эффект скорости первого уровня"
    3.        
    4.     if "%player's potion effects%" contains "haste of tier 1":
    5.         send "У тебя имеется эффект сытости первого уровня"
    6.        
    7.     if "%player's potion effects%" contains "regeneration":
    8.         send "У тебя имеется эффект регенерации"
    Ставить везде stop не является обязательным.
    Вот пример твоего скрипта в правильной форме:

    Code (Text):
    1. on break stone:
    2.     if location of event-block contains {PlacedBlocks_%player%::*}:
    3.         if "%player's potion effects%" contains "haste of tier 1":
    4.             stop
    5.          else if "%player's potion effects%" doesn't contain "haste of tier 1":
    6.             if player has permission "group.[minerlvl1]": #хотя я бы для обозначения уровня майнинга использовал бы переменные, которые затем привязал к плейсхолдеру и подключил к чату, если нужна помощь с этим, то можешь обратиться ко мне в лс
    7.                 stop
    8.             else if player don't has permission "group.[minerlvl1]":
    9.                 chance of 50%: #конечно, для замедления игрока можно использовать эффект зелья, но лучше использовать само обозначение скорости игрока
    10.                     apply weakness 1 to player for 2 seconds
    11.                     apply slow digging 3 to player for 2 seconds
    12.                     apply slowness 1 to player for 2 seconds
    13.                 chance of 6%:
    14.                     apply weakness 1 to player for 99999 seconds
    15.                     apply slow digging 1 to player for 99999 seconds
    16.                     send "Ты повредил палец" to player
    17.                     send "%player% повредил палец" to all players in radius 20 of player
    18.                 chance of 1%:
    19.                     apply weakness 2 to player for 99999 seconds
    20.                     apply slow digging 2 to player for 99999 seconds
    21.                     send "Ты повредил руку" to player
    22.                     send "%player% повредил руку" to all players in radius 20 of player
    И пожалуйста, будь добр в следующий раз использовать отдельную рамку для кода (как это сделал я). Чтобы код был читаемым.
    Если нет рамки для кода, то шанс того что твой запрос о помощи рассмотрят равен одному проценту.
    Если у тебя остались вопросы, то можешь задать их прямо тут.
     
  4. Vxnku

    Vxnku Member

    Joined:
    Nov 29, 2022
    Messages:
    14
    Likes Received:
    0

    Привет, извини я попробую использовать вставки с кодом,
    Я добавил втупую лист переменных что ты мне дал
    Code (Text):
    1.  
    2. on place:
    3.     add location of event-block to {PlacedBlocks_%player%::*} #добавляет координаты блока в лист
    4. on break any log:
    5.     if location of event-block contains {PlacedBlocks_%player%::*}: #проверяет наличие координатов блока в листе
    6.         stop
    [/CODE]
    Она не работает, я все так-же от своих блоков получаю негативные эффекты, и мне надо бы сделать так, чтобы любой игрок что ломает блок поставленный игроком, не получал негативные эффекты

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

    Обозначение скорости игрока, и многие атрибуты я трогать не могу, так как они постоянно меняются
     
    #3 Vxnku, Nov 30, 2022
    Last edited: Nov 30, 2022
  5. gangula

    gangula Member

    Joined:
    Jul 28, 2021
    Messages:
    15
    Likes Received:
    0
    Попробуй этот код?

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

Share This Page

Loading...