SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.005080
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000616
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000509
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 2253
Run Time: 0.000556
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 7
Run Time: 0.000692
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT EWRporta2_articles.*, xf_thread.*, xf_post.*, xf_user.*, EWRporta2_authors.*
FROM EWRporta2_articles
INNER JOIN xf_thread ON (xf_thread.thread_id = EWRporta2_articles.thread_id)
INNER JOIN xf_post ON (xf_post.post_id = xf_thread.first_post_id)
LEFT JOIN xf_user ON (xf_user.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_authors ON (EWRporta2_authors.user_id = xf_thread.user_id)
WHERE EWRporta2_articles.thread_id = ?
Params: 2253
Run Time: 0.001057
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | | | | | | | | no matching row in const table |
SELECT EWRporta2_articles.*, EWRporta2_authors.*, xf_thread.*, xf_post.*, xf_user.*
FROM xf_thread
INNER JOIN xf_post ON (xf_post.post_id = xf_thread.first_post_id)
LEFT JOIN xf_user ON (xf_user.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_authors ON (EWRporta2_authors.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_articles ON (EWRporta2_articles.thread_id = xf_thread.thread_id)
WHERE xf_thread.thread_id = ?
Params: 2253
Run Time: 0.001012
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | xf_post | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | xf_user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | EWRporta2_authors | const | PRIMARY | PRIMARY | 4 | const | 0 | unique row not found |
SIMPLE | EWRporta2_articles | const | PRIMARY | PRIMARY | 4 | const | 0 | unique row not found |
SELECT post.*
,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE post.thread_id = ?
AND (post.position >= 0 AND post.position < 20)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 2253
Run Time: 0.002513
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 12 | Using index condition; Using where; Using filesort |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xen.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xen.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xen.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xen.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xen.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xen.post.user_id,func | 1 | Using where |
INSERT DELAYED INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 2253
Run Time: 0.000251
SELECT EWRporta2_articles.*, xf_thread.*, xf_post.*, xf_user.*, EWRporta2_authors.*
FROM EWRporta2_articles
INNER JOIN xf_thread ON (xf_thread.thread_id = EWRporta2_articles.thread_id)
INNER JOIN xf_post ON (xf_post.post_id = xf_thread.first_post_id)
LEFT JOIN xf_user ON (xf_user.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_authors ON (EWRporta2_authors.user_id = xf_thread.user_id)
WHERE EWRporta2_articles.thread_id = ?
Params: 2253
Run Time: 0.000956
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | | | | | | | | no matching row in const table |
SELECT EWRporta2_articles.*, EWRporta2_authors.*, xf_thread.*, xf_post.*, xf_user.*
FROM xf_thread
INNER JOIN xf_post ON (xf_post.post_id = xf_thread.first_post_id)
LEFT JOIN xf_user ON (xf_user.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_authors ON (EWRporta2_authors.user_id = xf_thread.user_id)
LEFT JOIN EWRporta2_articles ON (EWRporta2_articles.thread_id = xf_thread.thread_id)
WHERE xf_thread.thread_id = ?
Params: 2253
Run Time: 0.000988
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | xf_post | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | xf_user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | EWRporta2_authors | const | PRIMARY | PRIMARY | 4 | const | 0 | unique row not found |
SIMPLE | EWRporta2_articles | const | PRIMARY | PRIMARY | 4 | const | 0 | unique row not found |
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: fc58785173ad307e2edf9e0b85b43141, , 1711672034
Run Time: 0.000521
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, , , XenForo_ControllerPublic_Thread, Index, valid, thread_id=2253, 1711668434,
Run Time: 0.000294
SELECT *
FROM kingk_bbcm
ORDER BY tag
Run Time: 0.000475
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | kingk_bbcm | system | | | | | 1 | |
SELECT page_name FROM EWRcarta_pages WHERE page_slug = 'index'
Run Time: 0.000336
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | EWRcarta_pages | const | page_slug | page_slug | 302 | const | 1 | |
SELECT options.*, node.*,
permission.cache_value AS node_permission_cache
FROM nat_options AS options
INNER JOIN xf_node AS node
ON (node.node_id = options.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = ?
AND permission.content_type = 'node'
AND permission.content_id = options.node_id)
WHERE nat_display_tab = 1
ORDER BY options.nat_display_order
ASC
Params: 1
Run Time: 0.000950
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | options | ALL | node_id | | | | 24 | Using where; Using filesort |
SIMPLE | node | eq_ref | PRIMARY | PRIMARY | 4 | xen.options.node_id | 1 | |
SIMPLE | permission | eq_ref | PRIMARY | PRIMARY | 35 | const,const,xen.options.node_id | 1 | Using where |
SELECT title, phrase_text
FROM xf_phrase_compiled
WHERE language_id = ?
AND title IN ('trophy_1_title', 'trophy_1_description', 'trophy_40_title', 'trophy_40_description', 'trophy_5_title', 'trophy_5_description', 'trophy_2_title', 'trophy_2_description', 'trophy_12_title', 'trophy_12_description', 'trophy_27_title', 'trophy_27_description', 'trophy_28_title', 'trophy_28_description', 'trophy_29_title', 'trophy_29_description', 'trophy_30_title', 'trophy_30_description', 'trophy_31_title', 'trophy_31_description', 'trophy_32_title', 'trophy_32_description', 'trophy_39_title', 'trophy_39_description', 'trophy_41_title', 'trophy_41_description', 'trophy_3_title', 'trophy_3_description', 'trophy_6_title', 'trophy_6_description', 'trophy_11_title', 'trophy_11_description', 'trophy_33_title', 'trophy_33_description', 'trophy_34_title', 'trophy_34_description', 'trophy_7_title', 'trophy_7_description', 'trophy_10_title', 'trophy_10_description', 'trophy_13_title', 'trophy_13_description', 'trophy_35_title', 'trophy_35_description', 'trophy_36_title', 'trophy_36_description', 'trophy_4_title', 'trophy_4_description', 'trophy_8_title', 'trophy_8_description', 'trophy_17_title', 'trophy_17_description', 'trophy_22_title', 'trophy_22_description', 'trophy_26_title', 'trophy_26_description', 'trophy_37_title', 'trophy_37_description', 'trophy_44_title', 'trophy_44_description', 'trophy_9_title', 'trophy_9_description', 'trophy_20_title', 'trophy_20_description', 'trophy_18_title', 'trophy_18_description', 'trophy_38_title', 'trophy_38_description', 'trophy_21_title', 'trophy_21_description', 'trophy_23_title', 'trophy_23_description', 'trophy_25_title', 'trophy_25_description', 'trophy_24_title', 'trophy_24_description', 'trophy_42_title', 'trophy_42_description', 'trophy_43_title', 'trophy_43_description', 'BRSTS_support_tickets', 'media')
Params: 2
Run Time: 0.001122
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_phrase_compiled | range | PRIMARY | PRIMARY | 106 | | 82 | Using where |
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106807, a:29:{i:0;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:53:"http://st.minecraft-moscow.com/my-world-edit-scripts/";s:8:"original";a:2:{i:0;s:61:"[URL='http://st.minecraft-moscow.com/my-world-edit-scripts/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:21:"My World Edit Scripts";}}i:1;s:36:" - проект Harch'a, члена ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:31:"http://st.minecraft-moscow.com/";s:8:"original";a:2:{i:0;s:39:"[URL='http://st.minecraft-moscow.com/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:35:"Квадратной Команды";}}i:3;s:2:".
";i:4;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:53:"http://st.minecraft-moscow.com/my-world-edit-scripts/";s:8:"original";a:2:{i:0;s:61:"[URL='http://st.minecraft-moscow.com/my-world-edit-scripts/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:89:"http://s3.hostingkartinok.com/uploads/images/2013/11/758bebef5ed98eade3712e2014a5083d.png";}}}}i:5;s:206:"
Он разработал 4 скрипта для известного мода/плагина WorldEdit, которые добавляют в него новые возможности. А именно:
";i:6;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:9:{i:0;s:4:"
[*]";i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:15:"AdvancedReplace";}}i:2;s:242:" - расширенная замена. Позволяет заменять один или все блоки на массу разных других блоков, с указыванием процентного соотношения.
[*]";i:3;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:15:"AdvancedOverlay";}}i:4;s:251:" - расширенное покрытие. Позволяет покрыть блоки в выделенной зоне массой разных других блоков, с указыванием процентного соотношения.
[*]";i:5;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:10:"SkyGridGen";}}i:6;s:60:" - генератор летающих островов.
[*]";i:7;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:17:"UltraCommandBlock";}}i:8;s:198:" - Глобальный скрипт для работы с командными блоками. Как дополнительный бонус включает удобное стакование.
";}}i:7;s:42:"
Подробнее о скриптах: ";i:8;a:4:{s:3:"tag";s:3:"url";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[URL]";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:53:"http://st.minecraft-moscow.com/my-world-edit-scripts/";}}i:9;s:2:"
";i:10;a:4:{s:3:"tag";s:7:"spoiler";s:6:"option";s:34:"AdvancedReplace и AdvancedOverlay";s:8:"original";a:2:{i:0;s:44:"[spoiler=AdvancedReplace и AdvancedOverlay]";i:1;s:10:"[/spoiler]";}s:8:"children";a:18:{i:0;s:799:"Работают с любым типом выделения.
Функционал соответствует командам из WE (без Advanced), но есть дополнительная возможно выполнять это с неким процентным соотношением (как у команды set в стандартном WE). Так же, так как строка чата minecraftограничена в количестве символов, есть возможно чтения "маски" процентного соотношения из командного блока. Для этого необходимо внутрь выделения поместить командный блок и написать в него следующий текст:
";i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:11:"MASK:%mask%";}}i:2;s:8:"
Где ";i:3;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"%mask%";}}i:4;s:63:" и есть наша маска.
Формат команды:
";i:5;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:38:"//cs AdvancedReplace <block_id> <mask>";}}i:6;s:1:"
";i:7;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:38:"//cs AdvancedOverlay <block_id> <mask>";}}i:8;s:183:"
Маска пишется стандартно, как у команды set в WE.
Примеры использования команды:
Без командного блока: ";i:9;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:47:"//cs AdvancedReplace 35 50%35:1,20%35:3,30%35:4";}}i:10;s:44:"
Или с командным блоком: ";i:11;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:31:"//csAdvancedReplace 35 /getmask";}}i:12;s:103:"
В командном блоке внутри выделения написано следующее:
";i:13;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:28:"MASK:50%35:1,20%35:3,30%35:4";}}i:14;s:448:"
С overlay все команды аналогичны. Эти два скрипта практически идентичны. Если у вас сумма процентов будет меньше 100 - остаток будет дополнен воздухом. Если больше 100 - будет учитываться только то, что до 100%.
Чтобы прочитать помощь, написать следующее:
";i:15;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:23:"//cs AdvancedReplace /?";}}i:16;s:44:"
Чтобы узнать об авторе:
";i:17;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:28:"//cs AdvancedReplace /author";}}}}i:11;s:1:"
";i:12;a:4:{s:3:"tag";s:7:"spoiler";s:6:"option";s:10:"SkyGridGen";s:8:"original";a:2:{i:0;s:20:"[spoiler=SkyGridGen]";i:1;s:10:"[/spoiler]";}s:8:"children";a:11:{i:0;s:52:"Это тестовый скрипт.
Формат: ";i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:56:"//cs SkyGridGen <r1> <r2> <r3> <d1> <d2> <d3> [filemask]";}}i:2;s:1:"
";i:3;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:4:"r%i%";}}i:4;s:105:" - количество блоков в обе стороны по соответствующей оси
";i:5;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:4:"d%i%";}}i:6;s:723:" - расстояние между блоками по соответствующей оси
filemask - чтение маски генерации из файла
Маски генерации располагаются в папке WorldEdit/SkyGridMask
Формат у них очень простой: Сначала ID блока, потом через пробел вероятность появления (не обязательно от 1 до 100, любое число, потом всё будет суммироваться и смотреться процентное соотношение).
Со скриптом стандартно поставляется две маски - обычного мира (";i:7;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:12:"StandartMask";}}i:8;s:152:", читается по умолчанию, если файл не указан) и чисто из песка. Они находятся в папке ";i:9;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:11:"SkyGridMask";}}i:10;s:268:". Эту папку надо положить в папку WorldEdit. К сожалению, песок будет падать, потому что таковы особености WE.
Скрипт дописываться, скорее всего, не будет.";}}i:13;s:1:"
";i:14;a:4:{s:3:"tag";s:7:"spoiler";s:6:"option";s:17:"UltraCommandBlock";s:8:"original";a:2:{i:0;s:27:"[spoiler=UltraCommandBlock]";i:1;s:10:"[/spoiler]";}s:8:"children";a:141:{i:0;s:277:"Глобальный скрипт для работы с командными блоками. Как дополнительный бонус включает удобное стакование.
ВАЖНО: Он работает ТОЛЬКО с выделениями типа ";i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"cuboid";}}i:2;s:283:"! С остальными не работает (кроме одной команды, указано будет в её описании).
ОЧЕНЬ ВАЖНО: изменения текста внутри командных блоков не отменяются командой ";i:3;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"//undo";}}i:4;s:259:"! Это особенность WE, я её исправить не могу, поэтому думайте перед каким-либо глобальным действием, чтобы не сделать ошибки!
Команды в скрипте:
";i:5;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:47:"//cs UltraCommandBlock /fill <text> [space_str]";}}i:6;s:96:" - заполнить все командные блоки в выделении текстом ";i:7;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"<text>";}}i:8;s:264:". Важно: если в вашем тексте есть пробелы, то их НЕОБХОДИМО заменит на какую либо строку/символ (по вашему желанию, БЕЗ пробелов) и указать его как ";i:9;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:9:"space_str";}}i:10;s:18:".
Примеры:
";i:11;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:34:"//cs UltraCommandBlock /fill Hello";}}i:12;s:1:"
";i:13;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:70:"//cs UltraCommandBlock /fill /tp___@a[x=1,y=2,z=3,r=4]___5___6___7 ___";}}i:14;s:1:"
";i:15;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:110:"//cs UltraCommandBlock /fill /tpTHISISSPACE@a[x=1,y=2,z=3,r=4]THISISSPACE5THISISSPACE6THISISSPACE7 THISISSPACE";}}i:16;s:1:"
";i:17;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:59:"//cs UltraCommandBlock /replace <text1> <text2> [space_str]";}}i:18;s:20:" - заменить ";i:19;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:7:"<text1>";}}i:20;s:6:" на ";i:21;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:7:"<text2>";}}i:22;s:332:" во всех командных блоках в выделении. Важно: если в вашем тексте есть пробелы, то их НЕОБХОДИМО заменит на какую либо строку/символ (по вашему желанию, БЕЗ пробелов) и указать его как ";i:23;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:9:"space_str";}}i:24;s:18:".
Примеры:
";i:25;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:40:"//cs UltraCommandBlock /replace Hello Hi";}}i:26;s:1:"
";i:27;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:45:"//cs UltraCommandBlock /fill Hello Go$home! $";}}i:28;s:1:"
";i:29;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:73:"//cs UltraCommandBlock /fill Hello,_SPACE_friends! Go_SPACE_home! _SPACE_";}}i:30;s:1:"
";i:31;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:29:"//cs UltraCommandBlock /clear";}}i:32;s:196:" - очищает все командные блоки в выделении.
Примеров использования даже писать не буду, ибо он только один :)
";i:33;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:30:"//csUltraCommandBlock /version";}}i:34;s:45:" - узнать версию скрипта.
";i:35;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:29:"//csUltraCommandBlock /author";}}i:36;s:56:" - прочитать об авторе скрипта.
";i:37;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:32:"//csUltraCommandBlock /testerror";}}i:38;s:443:" - проверить наличие ошибок в командных блоках внутри выделения. Указывает саму ошибку и координаты командного блока с ошибкой. Так же предупреждает о пустых командных блоках.
Следующие команды и составляют главный функционал этого скрипта.
";i:39;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:29:"//cs UltraCommandBlock /stack";}}i:40;s:79:" - стакование выделения.
Подробная справка: ";i:41;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:32:"//cs UltraCommandBlock /stack /?";}}i:42;s:1:"
";i:43;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:61:"//cs UltraCommandBlock /stack <number_of_stack> <mask> [flag]";}}i:44;s:1:"
";i:45;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:15:"number_of_stack";}}i:46;s:68:" - сколько раз произвести стакование.
";i:47;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:4:"mask";}}i:48;s:322:" - маска стакования. Нужна для заполнения командных блоков при стаковании. Если мы не хотим трогать командные блоки, или же их в выделении нет - пишем /no.
Формат маски стакования: ";i:49;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:83:"NAME_PARAM_1=VALUE_PARAM_1!STEP_PARAM_1;NAME_PARAM_2=VALUE_PARAM_2!STEP_PARAM_2;...";}}i:50;s:47:"
Пример маски стакования: ";i:51;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:52:"SuperX=1!2;SuperXX=34!45;SuperXXX=56!89;Yahoo=45!23;";}}i:52;s:313:"
Теперь разберёмся, зачем нужна маска стакования и как она используется. Внутри командных блоков мы можем использовать переменные.
Пример командного блока с переменными: ";i:53;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:36:"/tp @a $SuperX$ $SuperXX$ $SuperXXX$";}}i:54;s:195:"
Как видим, переменная может иметь любое имя, но чтобы показать, что это переменная, мы заключаем её в знаки ";i:55;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:1:"$";}}i:56;s:41:". Т.е. выглядит это так: ";i:57;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"$NAME$";}}i:58;s:250:"
Причём скрипту не интересно, что именно там написано. Может быть любой текст, не обязательно команды. Например (текст в командном блоке): ";i:59;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:23:"Yalublugulyat $NNN$ raz";}}i:60;s:436:"
А маска нам указывает следующее: начальное значение переменной и её шаг при стаке.
Начальное значение - сама переменная в исходном выделении. Каждый этап стакования к этой переменной прибавляется указанное второе значение. То есть маска ";i:61;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"x=1!1;";}}i:62;s:760:" положит переменную x в исходном выделении 1, в первом этапе стака 2, во втором этапе стака 3 и так далее. Может быть сколько угодно переменных. Так же, разумеется, если переменная в маске не указана - она скопируется в исходном формате. Т.е. можно делать сначала стак в одну сторону, меняя только одну переменную, потом стак вверх, к примеру, меняя вторую переменную и так далее. Подробнее это можно увидеть в видео.
Пример:
";i:63;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:85:"//cs UltraCommandBlock /stack 58 SuperX=1!2;SuperXX=34!45;SuperXXX=56!89;Yahoo=45!23;";}}i:64;s:210:"
Но при таком стаковании в исходном выделении переменные не изменяются. Чтобы они изменялись - надо поставить флаг ";i:65;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/a";}}i:66;s:50:". Чтобы не изменялись - флаг ";i:67;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/f";}}i:68;s:360:". Это очень важно. Если поменять в исходном выделении переменные - вы их туда уже вернуть не сможете автоматически, только руками, так как //undo не отменяет изменения внутри командных блоков.
Примеры:
";i:69;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:42:"//cs UltraCommandBlock /stack 58 x=1!1; /a";}}i:70;s:1:"
";i:71;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:42:"//cs UltraCommandBlock /stack 58 x=1!1; /f";}}i:72;s:1:"
";i:73;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:39:"//cs UltraCommandBlock /stack 58 /no /a";}}i:74;s:1:"
";i:75;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:39:"//cs UltraCommandBlock /stack 58 /no /f";}}i:76;s:79:"
Если маска /no, то этот флаг не имеет смысла (";i:77;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/f";}}i:78;s:8:" или ";i:79;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/a";}}i:80;s:163:").
Так же после этого можно ставить флаг направления (если не ставить - туда, куда смотрим).
";i:81;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/n";}}i:82;s:14:" - север
";i:83;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/w";}}i:84;s:14:" - запад
";i:85;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:2:"/e";}}i:86;s:105:" - восток
и так далее, по первой букве направления.
Пример: ";i:87;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:42:"//cs UltraCommandBlock /stack 58 /no /f /u";}}i:88;s:63:" - стакуем вверх, маски нет.
Пример: ";i:89;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:44:"//csUltraCommandBlock /stack 58 x=1!4; /f /d";}}i:90;s:675:" - стакуем вниз, x от 1 с шагом 4, в исходном выделении ничего не меняется.
Но возникает вопрос - а зачем нам стак этот БЕЗ маски, если есть обычный стак WE?
Дело в том, что есть ещё два параметра.
Первый после направления - вектор сдвига при стаке. Каждый стак будет происходить сдвиг стакованного элемента по этому вектору. По умолчанию вектор сдвига 0,0,0.
Пример использования: ";i:91;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:52:"//cs UltraCommandBlock /stack 58 x=1!4; /f /d 0,-1,0";}}i:92;s:655:" - стакуем вниз, x от 1 с шагом 4, в исходном выделении ничего не меняется, при стаке каждый шаг идёт сдвиг на один блок вниз, т.е. между "большими" блоками, которые стакуются, будет расстояние в один блок. Подробнее показано в видео.
И второй параметр - блоки для стакования.
Есть две возможно - указать, какие блоки стаковать или же указать, какие блоки не стаковать.
";i:93;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:13:"+:id1,id2,...";}}i:94;s:63:" - стаковать ТОЛЬКО блоки с id1, id2, ...
";i:95;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:13:"-:id1,id2,...";}}i:96;s:797:" - стаковать ВСЕ блоки кроме тех, у которых id1, id2, ...
Поддерживается указание второго параметра id, т.е. 35:3 - шерсть определённого цвета.
Так же если мы хотим, к примеру, охватить сразу ВСЮ шерсть, пишем 35:-1, т.е. второй -1 означает, что мы берём все возможные модификации блока.
Если вы работаете с воздухом, настоятельно рекомендуется писать 0:-1 из-за ошибок генерации карты minecraft, я видел блоки воздуха с различными вторыми параметрами.
Примеры:
";i:97;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:59:"//cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35:-1";}}i:98;s:310:" - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО шерсть (ВСЮ).
";i:99;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:56:"//cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35";}}i:100;s:326:" - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО БЕЛУЮ шерсть (НЕ ВСЮ).
";i:101;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:59:"//cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 +:35,12";}}i:102;s:340:" - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем ТОЛЬКО БЕЛУЮ шерсть (НЕ ВСЮ) и песок.
";i:103;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:59:"//cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 -:35,12";}}i:104;s:377:" - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем всё, кроме БЕЛОЙ шерсти (а другие цвета стакуем!) и песка.
";i:105;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:59:"//cs UltraCommandBlock /stack 58 x=1!4; /a/s 0,-1,0 -:35,12";}}i:106;s:332:" - стакуем 58 раз на юг, маска введена, в исходном выделении переменные тоже меняются на их значения, вектор сдвига каждый раз вниз на один блок, стакуем всё, кроме ЛЮБОЙ шерсти и песка.
";i:107;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:60:"//cs UltraCommandBlock /fix и //cs UltraCommandBlock /unfix";}}i:108;s:127:"
Две команды для работы с абсолютными и относительными координатами.
";i:109;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:4:"/fix";}}i:110;s:267:" - выполняет "фиксацию" выделения в мире, т.е. все координаты (КРОМЕ тех, которые находятся внутри квадратных скобок!) преобразовывает в абсолютные.
";i:111;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:6:"/unfix";}}i:112;s:300:" - выполняет "разфиксацию" выделения в мире, т.е. все координаты (КРОМЕ тех, которые находятся внутри квадратных скобок!) преобразовывает в относительные.
Пример:
При ";i:113;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:7:"/unfix ";}}i:114;s:57:"команда в командном блоке вида ";i:115;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:29:"/tp @p[x=1,y=2,z=3,r=4] 1 2 3";}}i:116;s:31:" преобразуется в ";i:117;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:35:"/tp @p[x=1,y=2,z=3,r=4] <x> <y> <z>";}}i:118;s:122:", где то, что в <> скобках - относительные координаты (и наоборот, при ";i:119;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:5:"/fix ";}}i:120;s:630:"- в абсолютные)
При таких действиях будет сохранятся работоспособность конструкции. Но перемещать её всё-равно в большинстве случаев будет нельзя, потому что есть ещё квадратные скобки, в них координаты могут ссылаться на другие части внутри механизма, при перемещении эти координаты будут ссылаться всё на те же места МИРА. Для этого есть флаг";i:121;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:5:" /all";}}i:122;s:303:" (для обеих команд) - делает то же самое, но ещё и в квадратных скобках. Minecraft НЕ поддерживает относительные координаты в квадратных скобках, поэтому при использовании ";i:123;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:11:"/unfix /all";}}i:124;s:125:" для работы механизма после перемещения надо ОБЯЗАТЕЛЬНО выполнить ";i:125;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:9:"/fix /all";}}i:126;s:65:" на нём. Подробнее показано в видео.
";i:127;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:38:"//cs UltraCommandBlock /createtemplate";}}i:128;s:385:"
Ну и осталась последняя команда, которая пока в стадии разработки. Эта команда работает с любым типом выделения. Мы что-либо выделяем и нам создаётся набор командных блоков по маске (пока доступно 4 переменных - ";i:129;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:13:"$x$, $y$, $z$";}}i:130;s:4:" и ";i:131;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:11:"$block_id$,";}}i:132;s:431:" которые соответствуют координатам рассматриваемого блока из выделения и его id), которую мы записали в командный блок, на который встали. Всё подробно показано в видео. Описывать подробно не буду, так как команда не доработана.
Примеры:
";i:133;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:38:"//cs UltraCommandBlock /createtemplate";}}i:134;s:1:"
";i:135;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:49:"//cs UltraCommandBlock /createtemplate +:12,34,56";}}i:136;s:1:"
";i:137;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:49:"//cs UltraCommandBlock /createtemplate -:12,34,56";}}i:138;s:268:"
Так же в данном скрипте раз в сутки выводится реклама, которая указывает на создателей скрипта и даёт их координаты для связи.
В планах: доработка ";i:139;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:15:"/createtemplate";}}i:140;s:203:", на 1.7 версии создание функционала работы с вагонетками с командными блоками (их спавн, заполнение и так далее).";}}i:15;s:2:"
";i:16;a:4:{s:3:"tag";s:7:"spoiler";s:6:"option";s:32:"Полная установка:";s:8:"original";a:2:{i:0;s:42:"[spoiler=Полная установка:]";i:1;s:10:"[/spoiler]";}s:8:"children";a:1:{i:0;s:692:"Внимание! Для работы ЛЮБЫХ скриптов требуется наличие скриптового движка Rhino! Для сервера скопируйте файл js.jar из папки Rhino в папку: папка сервера/plugins/WorldEdit
Для одиночной игры скопируйте файлы из архива js.jar в Винрар архив Application Data\.minecraft\bin\WorldEdit с заменой файлов.
Чтобы установить скрипты нужно создать папку "craftscript" в папке "WorldEdit" и скопировать туда файлы скриптов с расширением .js";}}i:17;s:1:"
";i:18;a:4:{s:3:"tag";s:7:"spoiler";s:6:"option";s:15:"Скачать!";s:8:"original";a:2:{i:0;s:25:"[spoiler=Скачать!]";i:1;s:10:"[/spoiler]";}s:8:"children";a:12:{i:0;s:71:"Скачать скрипты можно по ссылкам ниже:
";i:1;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/equ3MpofD3osX";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/equ3MpofD3osX']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:39:"Скриптовый движок Rhino";}}i:2;s:1:"
";i:3;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/KzuJUy51D3cUD";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/KzuJUy51D3cUD']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:15:"AdvancedReplace";}}i:4;s:1:"
";i:5;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/0GwTLUc_D3cVt";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/0GwTLUc_D3cVt']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:15:"AdvancedOverlay";}}i:6;s:1:"
";i:7;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/Xz0FyQCwD3hRK";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/Xz0FyQCwD3hRK']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:10:"SkyGridGen";}}i:8;s:1:"
";i:9;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/qZw2HlWVD3ca5";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/qZw2HlWVD3ca5']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:17:"UltraCommandBlock";}}i:10;s:1:"
";i:11;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:30:"http://yadi.sk/d/AiMwJACID3che";s:8:"original";a:2:{i:0;s:38:"[URL='http://yadi.sk/d/AiMwJACID3che']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:39:"Или все скрипты сразу";}}}}i:19;s:34:"
Видео о скриптах:
";i:20;a:4:{s:3:"tag";s:5:"media";s:6:"option";s:7:"youtube";s:8:"original";a:2:{i:0;s:15:"[media=youtube]";i:1;s:8:"[/media]";}s:8:"children";a:1:{i:0;s:11:"EnELPA_6EgY";}}i:21;s:1:"
";i:22;a:4:{s:3:"tag";s:5:"media";s:6:"option";s:7:"youtube";s:8:"original";a:2:{i:0;s:15:"[media=youtube]";i:1;s:8:"[/media]";}s:8:"children";a:1:{i:0;s:11:"d1HT_PWahjA";}}i:23;s:1:"
";i:24;a:4:{s:3:"tag";s:5:"media";s:6:"option";s:7:"youtube";s:8:"original";a:2:{i:0;s:15:"[media=youtube]";i:1;s:8:"[/media]";}s:8:"children";a:1:{i:0;s:11:"NzEFOXveFos";}}i:25;s:1:"
";i:26;a:4:{s:3:"tag";s:5:"media";s:6:"option";s:7:"youtube";s:8:"original";a:2:{i:0;s:15:"[media=youtube]";i:1;s:8:"[/media]";}s:8:"children";a:1:{i:0;s:11:"SfnDoEy4-PM";}}i:27;s:1:"
";i:28;a:4:{s:3:"tag";s:5:"media";s:6:"option";s:7:"youtube";s:8:"original";a:2:{i:0;s:15:"[media=youtube]";i:1;s:8:"[/media]";}s:8:"children";a:1:{i:0;s:11:"Pwn8KXDEqtA";}}}, 1708502088, 1711668434
Run Time: 0.003927
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106811, a:1:{i:0;s:42:"классно, я подписался ))";}, 1708502088, 1711668434
Run Time: 0.002223
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106814, a:1:{i:0;s:264:"Идея крутая, спасибо Харч) Жаль только, что это только для одиночки и своих серверов (там где ты модератор или админ), но всё равно пригодится. [mail1]";}, 1708502088, 1711668434
Run Time: 0.002022
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106815, a:1:{i:0;s:130:"Почему только для одиночки то? Ставить можно на абсолютно любой сервер.";}, 1708502088, 1711668434
Run Time: 0.000822
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106820, a:2:{i:0;a:4:{s:3:"tag";s:5:"quote";s:6:"option";s:21:"Legolas, post: 106815";s:8:"original";a:2:{i:0;s:31:"[quote="Legolas, post: 106815"]";i:1;s:8:"[/quote]";}s:8:"children";a:1:{i:0;s:130:"Почему только для одиночки то? Ставить можно на абсолютно любой сервер.";}}i:1;s:133:"
Вроде же это только админам доступно? (командный блок и ввод команд туда)";}, 1708502088, 1711668434
Run Time: 0.001934
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106825, a:1:{i:0;s:120:"Эм... На своём сервере ты сам себе админ. А на ММ такого не поставят.";}, 1708502088, 1711668434
Run Time: 0.001082
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 106828, a:4:{i:0;a:4:{s:3:"tag";s:5:"quote";s:6:"option";s:21:"Legolas, post: 106825";s:8:"original";a:2:{i:0;s:31:"[quote="Legolas, post: 106825"]";i:1;s:8:"[/quote]";}s:8:"children";a:1:{i:0;s:120:"Эм... На своём сервере ты сам себе админ. А на ММ такого не поставят.";}}i:1;s:127:"
ну дак он вроде и пишет (или уже отредактировал) что для одиночки или ";i:2;a:4:{s:3:"tag";s:1:"u";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[U]";i:1;s:4:"[/U]";}s:8:"children";a:1:{i:0;s:27:"своих серверов";}}i:3;s:1:".";}, 1708502088, 1711668434
Run Time: 0.001937
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 187178, a:2:{i:0;s:73:"Теперь все скрипты можно скачать здесь: ";i:1;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:55:"https://github.com/Harchvertelol/WorldEdit-CraftScripts";s:8:"original";a:2:{i:0;s:63:"[URL="https://github.com/Harchvertelol/WorldEdit-CraftScripts"]";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:36:"Harchvertelol/WorldEdit-CraftScripts";}}}, 1708502088, 1711668434
Run Time: 0.001993
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 187205, a:1:{i:0;s:33:"legolas.. я помню 2012-2013";}, 1708502088, 1711668434
Run Time: 0.001099
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 187207, a:2:{i:0;a:4:{s:3:"tag";s:5:"quote";s:6:"option";s:38:"OOIIOOOO, post: 187205, member: 237349";s:8:"original";a:2:{i:0;s:48:"[QUOTE="OOIIOOOO, post: 187205, member: 237349"]";i:1;s:8:"[/QUOTE]";}s:8:"children";a:1:{i:0;s:33:"legolas.. я помню 2012-2013";}}i:1;s:238:"
Если что, квадратная команда есть и не развалилась даже, Леголас тоже имеется)) Более того, я потихоньку возвращаюсь на мм и в майн)";}, 1708502088, 1711668434
Run Time: 0.002143
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 187212, a:4:{i:0;a:4:{s:3:"tag";s:4:"user";s:6:"option";s:5:"14567";s:8:"original";a:2:{i:0;s:12:"[USER=14567]";i:1;s:7:"[/USER]";}s:8:"children";a:1:{i:0;s:5:"Harch";}}i:1;s:119:", Добре)
А не подскажешь кто состоит в Квадратной Команде?
вот эта ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:31:"http://st.minecraft-moscow.com/";s:8:"original";a:2:{i:0;s:39:"[URL='http://st.minecraft-moscow.com/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:13:"ссылка ";}}i:3;s:64:"битая из заглавного сообщения темы";}, 1708502088, 1711668434
Run Time: 0.001917
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 187248, a:2:{i:0;a:4:{s:3:"tag";s:5:"quote";s:6:"option";s:38:"OOIIOOOO, post: 187212, member: 237349";s:8:"original";a:2:{i:0;s:48:"[QUOTE="OOIIOOOO, post: 187212, member: 237349"]";i:1;s:8:"[/QUOTE]";}s:8:"children";a:4:{i:0;a:4:{s:3:"tag";s:4:"user";s:6:"option";s:5:"14567";s:8:"original";a:2:{i:0;s:12:"[USER=14567]";i:1;s:7:"[/USER]";}s:8:"children";a:1:{i:0;s:5:"Harch";}}i:1;s:119:", Добре)
А не подскажешь кто состоит в Квадратной Команде?
вот эта ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:31:"http://st.minecraft-moscow.com/";s:8:"original";a:2:{i:0;s:39:"[URL='http://st.minecraft-moscow.com/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:13:"ссылка ";}}i:3;s:64:"битая из заглавного сообщения темы";}}i:1;s:129:"
Pabloader, Legolas, Kyokata, WinChester, Harch. Вроде на настоящее время это полный состав.";}, 1708502088, 1711668434
Run Time: 0.001200