Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Определение, есть ли на стволе гевеи источники латекса, на какой они высоте и с какой стороны.
- Полезно для серверов HiTech 1.7.10, если вы сажаете деревья вплотную и не знаете, есть ли источники на закрытых сторонах.
- 1) Создаёте в текстовом редакторе MKB файл "script_latex.data.txt".
- 2) Пишете в него следующее:
- If(%HITID%=="IC2:blockRubWood")
- #x=%HITX%
- #y=%HITY%
- #z=%HITZ%
- // max rubber tree height is 8
- #y_max=#y+8
- #latex_count=0
- &info="Latex not found."
- For(#y_index,%#y%,%#y_max%)
- GetID(%#x%,%#y_index%,%#z%,&id,#data)
- If(%&id%=="IC2:blockRubWood")
- Dec(#data,1)
- If(%#data%>0)
- Inc(#latex_count,1)
- // get latex state
- If(%#data%>6)
- Dec(#data,6)
- &info="Empty latex"
- Else
- &info="Full latex"
- EndIf
- // get relative height
- #block_pos=#y_index
- Dec(#block_pos,%#y%)
- Inc(#block_pos,1)
- &info="%&info% on the block %#block_pos%"
- // get latex side
- If(%#data%==1)
- &info="%&info%, north."
- ElseIf(%#data%==2)
- &info="%&info%, south."
- ElseIf(%#data%==3)
- &info="%&info%, west."
- ElseIf(%#data%==4)
- &info="%&info%, east."
- EndIf
- Log(%&info%)
- EndIf
- EndIf
- Next
- If(%#latex_count%>0)
- &info="%#latex_count% latex found."
- EndIf
- Log(%&info%)
- EndIf
- 3) Сохраняете, идёте в меню бинда клавиш, выбираете клавишу.
- 4) Вписываете в неё $${Exec("script_latex.data.txt","latex.data.task")}$$.
- 5) Берёте нижний блок гевеи в прицел (чтобы появилось название) и нажимаете клавишу.
- Будет выведена относительная высота каждого блока гевеи с латексом, а также сторона света, куда смотрит источник.
- Затем будет выведено общее число источников или "Latex not found", если их вообще нет.
- ------------
- Вывод в чат всех игроков, которые входят и выходят с сервера.
- У меня скрипт работает постоянно и запускается со входом на сервер, так что я всегда вижу, кто входит и выходит.
- 1) Создаёте в текстовом редакторе MKB файл "script_leave.check.txt".
- 2) Пишете в него следующее:
- &color_online_name="§b"
- &color_online_text="§a"
- &color_offline_name="§b"
- &color_offline_text="§c"
- UnSafe()
- UnSet(@&players[])
- ForEach(players)
- Push(@&players[],%PLAYERNAME%)
- Next
- Do()
- Wait(5)
- UnSet(&players_new[])
- ForEach(players)
- Push(&players_new[],%PLAYERNAME%)
- Next
- #players_index=ArraySize(@&players[])
- Dec(#players_index,1)
- For(#index,0,%#players_index%)
- &name=%@&players[%#index%]%
- IndexOf(&players_new[],#index_temp,%&name%)
- If((%#index_temp%==-1)&&(%&name%!=""))
- Log("§r%&color_offline_name%%&name%§r %&color_offline_text%is offline.§r")
- @&players[%#index%]=""
- EndIf
- Next
- #players_index=ArraySize(&players_new[])
- Dec(#players_index,1)
- For(#index,0,%#players_index%)
- &name=%&players_new[%#index%]%
- IndexOf(@&players[],#index_temp,%&name%)
- If(%#index_temp%==-1)
- Log("§r%&color_online_name%%&name%§r %&color_online_text%is online.§r")
- IndexOf(@&players[],#index_temp,"")
- If(%#index_temp%==-1)
- Push(@&players[],%&name%)
- Else
- @&players[%#index_temp%]=%&name%
- EndIf
- EndIf
- Next
- Loop
- EndUnSafe
- 3) Сохраняете, идёте в меню бинда событий, выбираете событие onJoinGame.
- 4) Добавляете в него новую команду: $${Exec("script_leave.check.txt","leave.check.task")}$$.
- 4.Bonus) Если у вас уже есть команды в onJoinGame, используйте разделитель "|", например так: /god|/fly|$${Exec("script_leave.check.txt","leave.check.task")}$$.
- 5) Перезаходите на сервер, чтобы запустить событие onJoinGame и скрипт.
- Каждый раз при обновлении массива игроков на сервере идёт сравнение его с предыдущей версией. Если игрок был, но его не стало, будет выведено сообщение "имя_игрока is offline". Если игрока не было, но он появился, будет выведено сообщение "имя_игрока is online".
- ------------
- Счётчик TPS с дробной частью и постоянным обновлением.
- MKB поддерживает только целые числа, так что все счётчики TPS с делением будут выводить неточное значение, округлённое в меньшую сторону. Это можно обойти.
- 1) Создаёте в текстовом редакторе MKB файл "script_tps.label.txt".
- 2) Пишете в него следующее:
- Set(@tps_label_active,1)
- SetLabel("tps.label","Starting...")
- UnSafe()
- Do()
- #tick_1=%TICKS%
- Wait(10)
- #tick_2=%TICKS%
- &result="T1 = %#tick_1% / T2 = %#tick_2%\n"
- #tick_delta=#tick_2-#tick_1
- If(%#tick_delta%<0)
- Inc(#tick_delta,24000)
- EndIf
- If(%#tick_delta%>20000)
- &result="%&result%Heavy TPS Lag"
- Else
- &tps_array[]=Split("",%#tick_delta%)
- #tps_array_size=ArraySize(&tps_array[])
- If(%#tps_array_size%==1)
- &tps="0.%#tick_delta%"
- Else
- Pop(&tps_array[],&tps_array_last_digit)
- Push(&tps_array[],".%&tps_array_last_digit%")
- &tps=Join("",&tps_array[])
- EndIf
- &result="%&result%Current TPS = %&tps%"
- EndIf
- SetLabel("tps.label",%&result%)
- Loop
- EndUnSafe
- 3) Сохраняете, идёте в меню бинда событий, выбираете событие onJoinGame.
- 4) Добавляете в него новую команду: $${Exec("script_tps.label.txt","tps.label.task")}$$.
- 4.Bonus) Если у вас уже есть команды в onJoinGame, используйте разделитель "|", например так: /god|/fly|$${Exec("script_tps.label.txt","tps.label.task")}$$.
- 5) Идёте в меню редактирования GUI MKB, выбираете нужный вам экран, создаёте ярлык.
- 6) Задаёте имя ярлыка "tps.label" без кавычек. Визуальные параметры по желанию.
- 7) Перезаходите на сервер, чтобы запустить событие onJoinGame и скрипт.
- Сразу после захода ярлык будет иметь текст "Starting...", но после 10 секунд сменится данными о тиках сервера и TPS, например 15.3. Для более быстрой работы команд (и точного измерения) использован блок UnSafe()/EndUnSafe. Погрешность всё ещё есть, но теперь она находится в намного меньших пределах (до 0.3 TPS по моим ощущениям) и работает только в бо́льшую сторону.
Add Comment
Please, Sign In to add comment