@amxts/core 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/README.ru.md +5 -5
- package/as/amxts.d.ts +13 -3
- package/as/entities.ts +571 -501
- package/as/events.ts +3323 -557
- package/as/facade.ts +3079 -718
- package/as/fetch.ts +2 -2
- package/as/fs.ts +352 -59
- package/as/hlds.ts +121 -120
- package/as/hooks.ts +10585 -5177
- package/as/lib/check.ts +3 -2
- package/as/natives.ts +856 -1272
- package/as/promise.ts +37 -27
- package/as/vector.ts +94 -14
- package/includes/order.txt +17 -19
- package/node_modules/assemblyscript/std/assembly/index.d.ts +1 -1
- package/package.json +9 -6
- package/runtime/deps/assemblyscript/dist/asc.js +136 -42
- package/runtime/deps/assemblyscript/dist/assemblyscript.js +141 -141
- package/runtime/licenses/README.md +9 -7
- package/runtime/licenses/ReGameDLL-LICENSE +21 -0
- package/runtime/licenses/ReHLDS-LICENSE +21 -0
- package/runtime/licenses/zlib-LICENSE +22 -0
- package/runtime/natives.txt +618 -523
- package/runtime/patches/README.md +87 -1
- package/runtime/patches/assemblyscript-0.28.20-amxts.patch +4838 -416
- package/runtime/patches/wamr-2.4.5-amxts.patch +417 -5
- package/scripts/auto-imports.ts +1 -1
- package/scripts/build-identity.ts +102 -65
- package/scripts/build-wasm.ts +12 -12
- package/scripts/check.ts +4 -1
- package/scripts/client-messages.ts +73 -1
- package/scripts/compile-cache.ts +11 -8
- package/scripts/compile-pool.ts +6 -3
- package/scripts/compile-worker.ts +23 -23
- package/scripts/compile.ts +142 -19
- package/scripts/docs/as/amxts.ts +10 -4
- package/scripts/docs/as/facade.ts +1779 -275
- package/scripts/docs/as/fetch.ts +2 -2
- package/scripts/docs/as/fs.ts +190 -6
- package/scripts/docs/as/vector.ts +81 -0
- package/scripts/docs/entities.ts +12 -0
- package/scripts/docs/events.ts +49 -13
- package/scripts/docs/game.ts +6 -0
- package/scripts/docs/messages.ts +10 -1
- package/scripts/hlds-events.ts +11 -11
- package/scripts/includes.ts +3 -4
- package/scripts/leaf-natives.ts +84 -0
- package/scripts/player-fields.ts +1 -1
- package/scripts/plugin-natives.ts +1 -1
- package/scripts/prebuilt.ts +41 -10
- package/scripts/project.ts +2 -3
- package/scripts/reapi-events.ts +9 -9
- package/scripts/server-env.ts +145 -0
- package/scripts/shared-modules.ts +23 -7
- package/scripts/system.ts +1 -1
- package/scripts/tracked-fs.ts +11 -2
- package/scripts/typed-commands.ts +153 -15
- package/scripts/upgrade-calls.ts +225 -0
- package/scripts/upgrade-names.ts +1 -4
- package/scripts/upgrade.ts +26 -11
- package/src/cli-api.mjs +3 -2
- package/src/system.mjs +21 -11
- package/src/testing/compile.ts +31 -8
- package/src/testing/coroutines.ts +0 -10
- package/src/testing/memory.ts +89 -2
- package/src/testing/natives.ts +67 -30
- package/src/testing/server.ts +1094 -155
- package/src/testing/tables.ts +23 -6
- package/src/typecheck.mjs +110 -0
- package/runtime/licenses/Bun-LICENSE.md +0 -84
|
@@ -88,12 +88,13 @@ export default {
|
|
|
88
88
|
},
|
|
89
89
|
'publicFor': {
|
|
90
90
|
en: `
|
|
91
|
-
A public name that calls \`handler\`, for
|
|
92
|
-
|
|
91
|
+
A public name that calls \`handler\`, for what takes a callback by a public's
|
|
92
|
+
name: \`register_menucmd\`, and a plugin's native that calls it back with a
|
|
93
|
+
\`PawnFunction\` (menu-core's \`mc_register_placeholder\`).
|
|
93
94
|
|
|
94
95
|
\`\`\`ts
|
|
95
|
-
const pub = publicFor(
|
|
96
|
-
if (pub.length > 0)
|
|
96
|
+
const pub = publicFor(onKey, "menu:myplugin");
|
|
97
|
+
if (pub.length > 0) register_menucmd(register_menuid("myplugin"), 1023, pub);
|
|
97
98
|
\`\`\`
|
|
98
99
|
|
|
99
100
|
An empty name means “already registered”: such a registration cannot be
|
|
@@ -102,17 +103,18 @@ export default {
|
|
|
102
103
|
unique within the plugin. \`fallback\` is the answer when the handler returns
|
|
103
104
|
nothing: \`0\` for most natives, \`1\` where the native expects the event handled.
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
A native of AMX Mod X that finds the public in the calling plugin
|
|
107
|
+
(\`register_think\`, \`set_task\`) cannot take it: a TypeScript plugin's call
|
|
108
|
+
has no Pawn plugin behind it.
|
|
108
109
|
`,
|
|
109
110
|
ru: `
|
|
110
|
-
Имя паблика, который вызывает \`handler\`, — для
|
|
111
|
-
|
|
111
|
+
Имя паблика, который вызывает \`handler\`, — для того, что принимает колбэк
|
|
112
|
+
по имени паблика: \`register_menucmd\` и натив плагина, который вызывает его
|
|
113
|
+
обратно через \`PawnFunction\` (\`mc_register_placeholder\` модуля menu-core).
|
|
112
114
|
|
|
113
115
|
\`\`\`ts
|
|
114
|
-
const pub = publicFor(
|
|
115
|
-
if (pub.length > 0)
|
|
116
|
+
const pub = publicFor(onKey, "menu:myplugin");
|
|
117
|
+
if (pub.length > 0) register_menucmd(register_menuid("myplugin"), 1023, pub);
|
|
116
118
|
\`\`\`
|
|
117
119
|
|
|
118
120
|
Пустое имя значит «уже зарегистрировано»: такую регистрацию нельзя
|
|
@@ -121,9 +123,8 @@ export default {
|
|
|
121
123
|
имя, уникальное в пределах плагина. \`fallback\` — ответ, если обработчик
|
|
122
124
|
ничего не вернул: \`0\` почти везде, \`1\` там, где натив ждёт обработанное событие.
|
|
123
125
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
роняет сервер, когда её вводят.
|
|
126
|
+
Натив AMX Mod X, который ищет паблик в вызвавшем плагине (\`register_think\`,
|
|
127
|
+
\`set_task\`), его не примет: за вызовом TypeScript-плагина нет Pawn-плагина.
|
|
127
128
|
`,
|
|
128
129
|
},
|
|
129
130
|
'nativeFn': {
|
|
@@ -602,7 +603,7 @@ export default {
|
|
|
602
603
|
|
|
603
604
|
\`\`\`ts
|
|
604
605
|
server.addEventListener("putInServer", (event) => {
|
|
605
|
-
|
|
606
|
+
event.player.print(\`Welcome, \${event.player.name}!\`);
|
|
606
607
|
});
|
|
607
608
|
\`\`\`
|
|
608
609
|
`,
|
|
@@ -613,7 +614,7 @@ export default {
|
|
|
613
614
|
|
|
614
615
|
\`\`\`ts
|
|
615
616
|
server.addEventListener("putInServer", (event) => {
|
|
616
|
-
|
|
617
|
+
event.player.print(\`Welcome, \${event.player.name}!\`);
|
|
617
618
|
});
|
|
618
619
|
\`\`\`
|
|
619
620
|
`,
|
|
@@ -690,6 +691,10 @@ export default {
|
|
|
690
691
|
en: `A signal that aborts when the player leaves the server: \`fetch(url, { signal: client.signal })\`.`,
|
|
691
692
|
ru: `Сигнал, который срабатывает, когда игрок уходит с сервера: \`fetch(url, { signal: client.signal })\`.`,
|
|
692
693
|
},
|
|
694
|
+
'Client.print': {
|
|
695
|
+
en: `Sends the player a message, in the chat unless \`variant\` says another place: \`client.print("Welcome!")\`. Colour tags work as in \`player.print\`.`,
|
|
696
|
+
ru: `Отправляет игроку сообщение — в чат, если \`variant\` не называет другое место: \`client.print("Welcome!")\`. Цветовые метки — как в \`player.print\`.`,
|
|
697
|
+
},
|
|
693
698
|
'Client.command': {
|
|
694
699
|
en: `Runs a command in the player's console, as if he had typed it: \`client.command("stop")\`.`,
|
|
695
700
|
ru: `Выполняет команду в консоли игрока, будто он сам её набрал: \`client.command("stop")\`.`,
|
|
@@ -1045,27 +1050,29 @@ export default {
|
|
|
1045
1050
|
'Player.give': {
|
|
1046
1051
|
en: `
|
|
1047
1052
|
Gives the player a weapon or an item: \`player.give("weapon_flashbang")\`.
|
|
1048
|
-
\`false\` if the game did not give it.
|
|
1053
|
+
\`false\` if the game did not give it. A name read from a config goes
|
|
1054
|
+
as it is; one the game has no item of is said once in the console.
|
|
1049
1055
|
|
|
1050
1056
|
Pawn: \`rg_give_item\`, \`give_item\`
|
|
1051
1057
|
`,
|
|
1052
1058
|
ru: `
|
|
1053
1059
|
Выдаёт игроку оружие или предмет: \`player.give("weapon_flashbang")\`.
|
|
1054
|
-
\`false\`, если игра его не выдала.
|
|
1060
|
+
\`false\`, если игра его не выдала. Имя, прочитанное из конфига, передаётся как
|
|
1061
|
+
есть; о таком, для которого в игре нет предмета, один раз скажет консоль.
|
|
1055
1062
|
|
|
1056
1063
|
Pawn: \`rg_give_item\`, \`give_item\`
|
|
1057
1064
|
`,
|
|
1058
1065
|
},
|
|
1059
1066
|
'Player.removeAllItems': {
|
|
1060
1067
|
en: `
|
|
1061
|
-
Takes all the player's weapons away.
|
|
1062
|
-
\`
|
|
1068
|
+
Takes all the player's weapons away: \`player.removeAllItems()\`. The
|
|
1069
|
+
suit - armour and the HUD - stays, unless \`{ suit: true }\`.
|
|
1063
1070
|
|
|
1064
1071
|
Pawn: \`rg_remove_all_items\`, \`strip_user_weapons\`
|
|
1065
1072
|
`,
|
|
1066
1073
|
ru: `
|
|
1067
|
-
|
|
1068
|
-
|
|
1074
|
+
Забирает у игрока всё оружие: \`player.removeAllItems()\`. Костюм — броня и
|
|
1075
|
+
HUD — остаётся, если не указано \`{ suit: true }\`.
|
|
1069
1076
|
|
|
1070
1077
|
Pawn: \`rg_remove_all_items\`, \`strip_user_weapons\`
|
|
1071
1078
|
`,
|
|
@@ -1164,18 +1171,68 @@ export default {
|
|
|
1164
1171
|
Pawn: \`rg_reset_maxspeed\`
|
|
1165
1172
|
`,
|
|
1166
1173
|
},
|
|
1174
|
+
'Player.print': {
|
|
1175
|
+
en: `
|
|
1176
|
+
Sends the player a message; to everyone, \`server.print\`.
|
|
1177
|
+
|
|
1178
|
+
\`\`\`ts
|
|
1179
|
+
player.print("Health restored!"); // the player's chat
|
|
1180
|
+
player.print("Health restored!", "center"); // the middle of the player's screen
|
|
1181
|
+
server.print("Round starts in 5 seconds"); // everyone's chat
|
|
1182
|
+
\`\`\`
|
|
1183
|
+
|
|
1184
|
+
\`variant\` is where the message shows, one of \`"chat"\` (the default),
|
|
1185
|
+
\`"center"\` - the middle of the screen, \`"console"\` - the player's
|
|
1186
|
+
console, \`"notify"\` - the console too; CS shows it on screen only with
|
|
1187
|
+
\`developer 1\`.
|
|
1188
|
+
|
|
1189
|
+
Colour tags work in chat only, and a letter is the same colour as in a menu:
|
|
1190
|
+
- \`!y\` yellow (the usual chat colour), \`!g\` green
|
|
1191
|
+
- \`!r\` red, \`!b\` blue, \`!d\` grey, \`!t\` the colour of the reader's team
|
|
1192
|
+
|
|
1193
|
+
A menu's own tags (\`!w\`, \`!R\`) are dropped from a chat line. Red, blue,
|
|
1194
|
+
grey and \`!t\` share the message's one team colour: the first one used wins.
|
|
1195
|
+
|
|
1196
|
+
Pawn: \`client_print\`, \`client_print_color\`
|
|
1197
|
+
`,
|
|
1198
|
+
ru: `
|
|
1199
|
+
Отправляет игроку сообщение; всем — \`server.print\`.
|
|
1200
|
+
|
|
1201
|
+
\`\`\`ts
|
|
1202
|
+
player.print("Health restored!"); // чат игрока
|
|
1203
|
+
player.print("Health restored!", "center"); // посередине экрана игрока
|
|
1204
|
+
server.print("Round starts in 5 seconds"); // чат всех игроков
|
|
1205
|
+
\`\`\`
|
|
1206
|
+
|
|
1207
|
+
\`variant\` — где показать сообщение, одно из \`"chat"\` (по умолчанию),
|
|
1208
|
+
\`"center"\` — посередине экрана, \`"console"\` — в консоли игрока,
|
|
1209
|
+
\`"notify"\` — тоже в консоли; на экране CS показывает его только при
|
|
1210
|
+
\`developer 1\`.
|
|
1211
|
+
|
|
1212
|
+
Цветовые метки работают только в чате, и буква — тот же цвет, что в меню:
|
|
1213
|
+
- \`!y\` жёлтый (обычный цвет чата), \`!g\` зелёный
|
|
1214
|
+
- \`!r\` красный, \`!b\` синий, \`!d\` серый, \`!t\` цвет команды читающего
|
|
1215
|
+
|
|
1216
|
+
Метки только для меню (\`!w\`, \`!R\`) из строки чата убираются. Красный, синий,
|
|
1217
|
+
серый и \`!t\` делят один цвет команды на сообщение: побеждает первый.
|
|
1218
|
+
|
|
1219
|
+
Pawn: \`client_print\`, \`client_print_color\`
|
|
1220
|
+
`,
|
|
1221
|
+
},
|
|
1167
1222
|
'Player.command': {
|
|
1168
1223
|
en: `
|
|
1169
1224
|
Runs a command in the player's own console, as if he had typed it:
|
|
1170
1225
|
\`player.command("messagemode say_team")\`, \`player.command("stop")\`.
|
|
1171
|
-
The player's game runs it, not the server.
|
|
1226
|
+
The player's game runs it, not the server. A bot has no game: its
|
|
1227
|
+
command goes to the server as one it sent, \`bot.command("say /hp")\`.
|
|
1172
1228
|
|
|
1173
1229
|
Pawn: \`client_cmd\`
|
|
1174
1230
|
`,
|
|
1175
1231
|
ru: `
|
|
1176
1232
|
Выполняет команду в консоли самого игрока, будто он набрал её сам:
|
|
1177
1233
|
\`player.command("messagemode say_team")\`, \`player.command("stop")\`.
|
|
1178
|
-
Выполняет её игра игрока, а не сервер.
|
|
1234
|
+
Выполняет её игра игрока, а не сервер. У бота игры нет: его команда
|
|
1235
|
+
приходит на сервер, будто он её прислал, \`bot.command("say /hp")\`.
|
|
1179
1236
|
|
|
1180
1237
|
Pawn: \`client_cmd\`
|
|
1181
1238
|
`,
|
|
@@ -1213,16 +1270,20 @@ export default {
|
|
|
1213
1270
|
`,
|
|
1214
1271
|
},
|
|
1215
1272
|
'CommandOptions': {
|
|
1216
|
-
en: `The options of a command: who may use it
|
|
1217
|
-
ru: `Параметры команды: кому она
|
|
1273
|
+
en: `The options of a command: who may use it, its description in a listing, the chat it is heard in.`,
|
|
1274
|
+
ru: `Параметры команды: кому она доступна, её описание в списке, чат, в котором её слышно.`,
|
|
1275
|
+
},
|
|
1276
|
+
'CommandOptions.chat': {
|
|
1277
|
+
en: `The chat a chat command is heard in, one of: \`"say"\` the common chat, \`"team"\` the team's, \`"both"\` either (the default).`,
|
|
1278
|
+
ru: `Чат, в котором слышно команду чата, одно из: \`"say"\` — общий, \`"team"\` — командный, \`"both"\` — любой (по умолчанию).`,
|
|
1218
1279
|
},
|
|
1219
1280
|
'CommandOptions.access': {
|
|
1220
1281
|
en: `The admin right a player needs to use the command; left out, everyone may.`,
|
|
1221
1282
|
ru: `Право админа, которое нужно игроку для команды; если не указано, команда доступна всем.`,
|
|
1222
1283
|
},
|
|
1223
1284
|
'CommandOptions.description': {
|
|
1224
|
-
en: `The command's description,
|
|
1225
|
-
ru: `Описание
|
|
1285
|
+
en: `The command's description, for \`server.commands\` - what a \`/help\` prints.`,
|
|
1286
|
+
ru: `Описание команды для \`server.commands\` - то, что печатает \`/help\`.`,
|
|
1226
1287
|
},
|
|
1227
1288
|
'accessOf': {
|
|
1228
1289
|
en: `
|
|
@@ -1737,6 +1798,24 @@ export default {
|
|
|
1737
1798
|
Pawn: \`BarTime\`, \`BarTime2\`, \`rg_send_bartime\`, \`rg_send_bartime2\`
|
|
1738
1799
|
`,
|
|
1739
1800
|
},
|
|
1801
|
+
'Screen.lightStyle': {
|
|
1802
|
+
en: `
|
|
1803
|
+
The light the player sees, \`"a"\` the darkest to \`"z"\` the brightest, as
|
|
1804
|
+
\`server.lightStyle\` sets it for everyone; \`""\` gives him the server's
|
|
1805
|
+
again: \`player.screen.lightStyle("z")\` for night vision. The server's
|
|
1806
|
+
next light and the next map reach him too.
|
|
1807
|
+
|
|
1808
|
+
Pawn: \`message_begin(MSG_ONE, SVC_LIGHTSTYLE, ...)\`
|
|
1809
|
+
`,
|
|
1810
|
+
ru: `
|
|
1811
|
+
Свет, который видит игрок, от \`"a"\` — самого тёмного — до \`"z"\` — самого
|
|
1812
|
+
яркого, как \`server.lightStyle\` ставит его всем; \`""\` возвращает ему свет
|
|
1813
|
+
сервера: \`player.screen.lightStyle("z")\` для ночного зрения. Следующий свет
|
|
1814
|
+
сервера и следующая карта доходят и до него.
|
|
1815
|
+
|
|
1816
|
+
Pawn: \`message_begin(MSG_ONE, SVC_LIGHTSTYLE, ...)\`
|
|
1817
|
+
`,
|
|
1818
|
+
},
|
|
1740
1819
|
'PlayerChangeEvent': {
|
|
1741
1820
|
en: `
|
|
1742
1821
|
A field plugins added to \`Player\` changed on a player - written by any
|
|
@@ -1744,7 +1823,7 @@ export default {
|
|
|
1744
1823
|
|
|
1745
1824
|
\`\`\`ts
|
|
1746
1825
|
server.addEventListener("playerChange", (event) => {
|
|
1747
|
-
|
|
1826
|
+
event.player.print(event.value ? "You are protected" : "Your spawn protection is over");
|
|
1748
1827
|
}, { field: "spawnProtected" });
|
|
1749
1828
|
\`\`\`
|
|
1750
1829
|
|
|
@@ -1758,7 +1837,7 @@ export default {
|
|
|
1758
1837
|
|
|
1759
1838
|
\`\`\`ts
|
|
1760
1839
|
server.addEventListener("playerChange", (event) => {
|
|
1761
|
-
|
|
1840
|
+
event.player.print(event.value ? "You are protected" : "Your spawn protection is over");
|
|
1762
1841
|
}, { field: "spawnProtected" });
|
|
1763
1842
|
\`\`\`
|
|
1764
1843
|
|
|
@@ -1899,6 +1978,85 @@ export default {
|
|
|
1899
1978
|
en: `@internal Calls the change listeners; the server does it when the cvar changes. A plugin listens with \`addEventListener\`.`,
|
|
1900
1979
|
ru: `@internal Вызывает обработчики изменения; это делает сервер, когда квар меняется. Плагин слушает через \`addEventListener\`.`,
|
|
1901
1980
|
},
|
|
1981
|
+
'env': {
|
|
1982
|
+
en: `
|
|
1983
|
+
A setting of the server kept out of the plugin's code - a token, a password,
|
|
1984
|
+
a key in a URL: a line of the server's \`addons/amxts/.env\`, or a variable of
|
|
1985
|
+
its environment, which wins over the file. Without a default it is
|
|
1986
|
+
required: a plugin that reads it does not start while the server has it
|
|
1987
|
+
nowhere.
|
|
1988
|
+
|
|
1989
|
+
\`\`\`ts
|
|
1990
|
+
const token = env("MYPLUGIN_TOKEN");
|
|
1991
|
+
\`\`\`
|
|
1992
|
+
`,
|
|
1993
|
+
ru: `
|
|
1994
|
+
Настройка сервера, которой не место в коде плагина, — токен, пароль, ключ в
|
|
1995
|
+
URL: строка \`addons/amxts/.env\` на сервере или переменная его окружения,
|
|
1996
|
+
которая перекрывает файл. Без значения по умолчанию она обязательна: плагин,
|
|
1997
|
+
который её читает, не запускается, пока её нет ни там, ни там.
|
|
1998
|
+
|
|
1999
|
+
\`\`\`ts
|
|
2000
|
+
const token = env("MYPLUGIN_TOKEN");
|
|
2001
|
+
\`\`\`
|
|
2002
|
+
`,
|
|
2003
|
+
},
|
|
2004
|
+
'env#2': {
|
|
2005
|
+
en: `
|
|
2006
|
+
A setting of the server, as text: \`defaultValue\` when the server has it
|
|
2007
|
+
nowhere.
|
|
2008
|
+
|
|
2009
|
+
\`\`\`ts
|
|
2010
|
+
const mirror = env("MYPLUGIN_MIRROR", "https://example.com/maps");
|
|
2011
|
+
\`\`\`
|
|
2012
|
+
`,
|
|
2013
|
+
ru: `
|
|
2014
|
+
Настройка сервера текстом: \`defaultValue\`, если её нет ни в окружении,
|
|
2015
|
+
ни в файле.
|
|
2016
|
+
|
|
2017
|
+
\`\`\`ts
|
|
2018
|
+
const mirror = env("MYPLUGIN_MIRROR", "https://example.com/maps");
|
|
2019
|
+
\`\`\`
|
|
2020
|
+
`,
|
|
2021
|
+
},
|
|
2022
|
+
'env#3': {
|
|
2023
|
+
en: `
|
|
2024
|
+
A setting of the server, as a number: \`defaultValue\` when the server has it
|
|
2025
|
+
nowhere. A plugin does not start while it is there and no number.
|
|
2026
|
+
|
|
2027
|
+
\`\`\`ts
|
|
2028
|
+
const maxRecords = env("MYPLUGIN_MAX_RECORDS", 100);
|
|
2029
|
+
\`\`\`
|
|
2030
|
+
`,
|
|
2031
|
+
ru: `
|
|
2032
|
+
Настройка сервера числом: \`defaultValue\`, если её нет ни в окружении, ни в
|
|
2033
|
+
файле. Плагин не запускается, пока она есть, но это не число.
|
|
2034
|
+
|
|
2035
|
+
\`\`\`ts
|
|
2036
|
+
const maxRecords = env("MYPLUGIN_MAX_RECORDS", 100);
|
|
2037
|
+
\`\`\`
|
|
2038
|
+
`,
|
|
2039
|
+
},
|
|
2040
|
+
'env#4': {
|
|
2041
|
+
en: `
|
|
2042
|
+
A setting of the server, as an on/off switch - \`1\`/\`0\`, \`true\`/\`false\`,
|
|
2043
|
+
\`yes\`/\`no\` or \`on\`/\`off\`, in any case: \`defaultValue\` when the server has it
|
|
2044
|
+
nowhere. A plugin does not start while it is there and none of these.
|
|
2045
|
+
|
|
2046
|
+
\`\`\`ts
|
|
2047
|
+
const debug = env("MYPLUGIN_DEBUG", false);
|
|
2048
|
+
\`\`\`
|
|
2049
|
+
`,
|
|
2050
|
+
ru: `
|
|
2051
|
+
Настройка сервера как переключатель — \`1\`/\`0\`, \`true\`/\`false\`, \`yes\`/\`no\`
|
|
2052
|
+
или \`on\`/\`off\`, в любом регистре: \`defaultValue\`, если её нет ни в окружении,
|
|
2053
|
+
ни в файле. Плагин не запускается, пока она есть, но это ни одно из этих слов.
|
|
2054
|
+
|
|
2055
|
+
\`\`\`ts
|
|
2056
|
+
const debug = env("MYPLUGIN_DEBUG", false);
|
|
2057
|
+
\`\`\`
|
|
2058
|
+
`,
|
|
2059
|
+
},
|
|
1902
2060
|
'Server': {
|
|
1903
2061
|
en: `
|
|
1904
2062
|
The server, an event target like the DOM's: its events, commands, map and
|
|
@@ -1906,7 +2064,7 @@ export default {
|
|
|
1906
2064
|
|
|
1907
2065
|
\`\`\`ts
|
|
1908
2066
|
server.addEventListener("putInServer", (event) => {
|
|
1909
|
-
|
|
2067
|
+
event.player.print("Welcome!"); // event is a PutinserverEvent
|
|
1910
2068
|
});
|
|
1911
2069
|
server.map; // "de_dust2"
|
|
1912
2070
|
server.maxPlayers; // 32
|
|
@@ -1923,7 +2081,7 @@ export default {
|
|
|
1923
2081
|
|
|
1924
2082
|
\`\`\`ts
|
|
1925
2083
|
server.addEventListener("putInServer", (event) => {
|
|
1926
|
-
|
|
2084
|
+
event.player.print("Welcome!"); // event — это PutinserverEvent
|
|
1927
2085
|
});
|
|
1928
2086
|
server.map; // "de_dust2"
|
|
1929
2087
|
server.maxPlayers; // 32
|
|
@@ -2091,6 +2249,18 @@ export default {
|
|
|
2091
2249
|
Pawn: \`get_configsdir\`
|
|
2092
2250
|
`,
|
|
2093
2251
|
},
|
|
2252
|
+
'Server.logsDir': {
|
|
2253
|
+
en: `
|
|
2254
|
+
The AMX Mod X folder for logs: \`addons/amxmodx/logs\` unless the server moved it.
|
|
2255
|
+
|
|
2256
|
+
Pawn: \`get_localinfo("amxx_logs")\`
|
|
2257
|
+
`,
|
|
2258
|
+
ru: `
|
|
2259
|
+
Папка AMX Mod X для логов: \`addons/amxmodx/logs\`, если сервер её не перенёс.
|
|
2260
|
+
|
|
2261
|
+
Pawn: \`get_localinfo("amxx_logs")\`
|
|
2262
|
+
`,
|
|
2263
|
+
},
|
|
2094
2264
|
'Server.dataDir': {
|
|
2095
2265
|
en: `
|
|
2096
2266
|
The AMX Mod X folder for plugins' data files: \`addons/amxmodx/data\` unless the server moved it.
|
|
@@ -2248,11 +2418,12 @@ export default {
|
|
|
2248
2418
|
\`\`\`ts
|
|
2249
2419
|
game.endRound({ winner: "TERRORIST" }); // terrorists win, next round in 5 s
|
|
2250
2420
|
game.endRound({ winner: "draw", delay: 3 }); // a draw, next round in 3 s
|
|
2251
|
-
game.endRound({ winner: "none", message: "" }); //
|
|
2421
|
+
game.endRound({ winner: "none", message: "" }); // nobody scores, no message
|
|
2252
2422
|
\`\`\`
|
|
2253
2423
|
|
|
2254
2424
|
The winner sets the score, the message and the sound (\`"Terrorists Win!"\`);
|
|
2255
|
-
\`message\` and \`sound\` replace them, \`""\` turns them off.
|
|
2425
|
+
\`message\` and \`sound\` replace them, \`""\` turns them off. The next
|
|
2426
|
+
round starts after \`delay\`; to start it over at once, \`game.restartRound()\`.
|
|
2256
2427
|
|
|
2257
2428
|
Pawn: \`rg_round_end\`
|
|
2258
2429
|
`,
|
|
@@ -2262,171 +2433,1459 @@ export default {
|
|
|
2262
2433
|
\`\`\`ts
|
|
2263
2434
|
game.endRound({ winner: "TERRORIST" }); // победа террористов, следующий раунд через 5 с
|
|
2264
2435
|
game.endRound({ winner: "draw", delay: 3 }); // ничья, следующий раунд через 3 с
|
|
2265
|
-
game.endRound({ winner: "none", message: "" }); //
|
|
2436
|
+
game.endRound({ winner: "none", message: "" }); // никто не получает очко, без сообщения
|
|
2266
2437
|
\`\`\`
|
|
2267
2438
|
|
|
2268
2439
|
Победитель определяет счёт, сообщение и звук (\`"Terrorists Win!"\`);
|
|
2269
|
-
\`message\` и \`sound\` заменяют их, \`""\` — выключает.
|
|
2440
|
+
\`message\` и \`sound\` заменяют их, \`""\` — выключает. Следующий раунд
|
|
2441
|
+
начинается через \`delay\`; начать раунд заново сразу — \`game.restartRound()\`.
|
|
2270
2442
|
|
|
2271
2443
|
Pawn: \`rg_round_end\`
|
|
2272
2444
|
`,
|
|
2273
2445
|
},
|
|
2274
|
-
'
|
|
2446
|
+
'Game.restartRound': {
|
|
2275
2447
|
en: `
|
|
2276
|
-
|
|
2277
|
-
|
|
2448
|
+
Starts the round over at once, as the game does when it restarts one:
|
|
2449
|
+
everyone back at a spawn point with the round's money and weapons, the
|
|
2450
|
+
map cleaned up. The score stays; with \`game.completeReset = true\` first
|
|
2451
|
+
it starts from zero, as after \`sv_restart\`. Every plugin's \`newRound\`
|
|
2452
|
+
listeners hear it.
|
|
2453
|
+
|
|
2454
|
+
Pawn: \`rg_restart_round\`
|
|
2278
2455
|
`,
|
|
2279
2456
|
ru: `
|
|
2280
|
-
|
|
2281
|
-
|
|
2457
|
+
Начинает раунд заново сразу, как это делает игра при перезапуске раунда:
|
|
2458
|
+
все на точках появления с деньгами и оружием раунда, карта очищена. Счёт
|
|
2459
|
+
остаётся; если сначала поставить \`game.completeReset = true\`, он
|
|
2460
|
+
начинается с нуля, как после \`sv_restart\`. Это слышат обработчики
|
|
2461
|
+
\`newRound\` всех плагинов.
|
|
2462
|
+
|
|
2463
|
+
Pawn: \`rg_restart_round\`
|
|
2282
2464
|
`,
|
|
2283
2465
|
},
|
|
2284
|
-
'
|
|
2285
|
-
en: `Runs the listener after the game has acted, with its answer in \`event.result\`.`,
|
|
2286
|
-
ru: `Вызывает обработчик после того, как игра сделала своё, с её ответом в \`event.result\`.`,
|
|
2287
|
-
},
|
|
2288
|
-
'GameListenerOptions.classname': {
|
|
2289
|
-
en: `The class of entity the event is listened for on, e.g. \`"weapon_knife"\`: only its entities reach the listener.`,
|
|
2290
|
-
ru: `Класс сущностей, на котором слушается событие, например \`"weapon_knife"\`: до обработчика доходят только его сущности.`,
|
|
2291
|
-
},
|
|
2292
|
-
'UseType': {
|
|
2466
|
+
'Game.checkWinConditions': {
|
|
2293
2467
|
en: `
|
|
2294
|
-
|
|
2295
|
-
|
|
2468
|
+
Has the game check now whether the round is won - after players were
|
|
2469
|
+
moved between sides or killed by a plugin - and end it if it is, as it
|
|
2470
|
+
checks after a death.
|
|
2296
2471
|
|
|
2297
|
-
Pawn: \`
|
|
2472
|
+
Pawn: \`rg_check_win_conditions\`
|
|
2298
2473
|
`,
|
|
2299
2474
|
ru: `
|
|
2300
|
-
|
|
2301
|
-
|
|
2475
|
+
Просит игру сейчас проверить, не выигран ли раунд, - после того как
|
|
2476
|
+
плагин перевёл игроков между сторонами или убил их, - и завершить его,
|
|
2477
|
+
если выигран, как игра проверяет после смерти.
|
|
2302
2478
|
|
|
2303
|
-
Pawn: \`
|
|
2479
|
+
Pawn: \`rg_check_win_conditions\`
|
|
2304
2480
|
`,
|
|
2305
2481
|
},
|
|
2306
|
-
'
|
|
2307
|
-
en: `
|
|
2308
|
-
|
|
2482
|
+
'ItemSlot': {
|
|
2483
|
+
en: `
|
|
2484
|
+
A player's item slot, one of \`"primary"\` (a rifle, a shotgun, a sniper
|
|
2485
|
+
rifle, the shield), \`"secondary"\` (the pistol), \`"knife"\`, \`"grenades"\` or
|
|
2486
|
+
\`"c4"\`.
|
|
2487
|
+
`,
|
|
2488
|
+
ru: `
|
|
2489
|
+
Слот предметов игрока, одно из \`"primary"\` (винтовка, дробовик,
|
|
2490
|
+
снайперская винтовка, щит), \`"secondary"\` (пистолет), \`"knife"\`,
|
|
2491
|
+
\`"grenades"\` или \`"c4"\`.
|
|
2492
|
+
`,
|
|
2309
2493
|
},
|
|
2310
|
-
'
|
|
2494
|
+
'UserInfo': {
|
|
2311
2495
|
en: `
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2496
|
+
The settings a player's game tells the server, his userinfo: keys such as
|
|
2497
|
+
\`"model"\`, \`"cl_righthand"\`, \`"_vgui_menus"\`, each a text.
|
|
2498
|
+
`,
|
|
2499
|
+
ru: `
|
|
2500
|
+
Настройки, которые игра игрока сообщает серверу, — его userinfo: ключи
|
|
2501
|
+
вроде \`"model"\`, \`"cl_righthand"\`, \`"_vgui_menus"\`, каждый — текст.
|
|
2502
|
+
`,
|
|
2503
|
+
},
|
|
2504
|
+
'UserInfo.get': {
|
|
2505
|
+
en: `
|
|
2506
|
+
A key's value: \`player.info.get("cl_righthand")\` is \`"1"\`; \`""\` for a key
|
|
2507
|
+
his game did not send.
|
|
2315
2508
|
|
|
2316
|
-
Pawn: \`
|
|
2509
|
+
Pawn: \`get_user_info\`
|
|
2317
2510
|
`,
|
|
2318
2511
|
ru: `
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
собственную функцию игры.
|
|
2512
|
+
Значение ключа: \`player.info.get("cl_righthand")\` — это \`"1"\`; \`""\` для
|
|
2513
|
+
ключа, которого его игра не прислала.
|
|
2322
2514
|
|
|
2323
|
-
Pawn: \`
|
|
2515
|
+
Pawn: \`get_user_info\`
|
|
2324
2516
|
`,
|
|
2325
2517
|
},
|
|
2326
|
-
'
|
|
2327
|
-
en: `For \`"touch"\`: the class of the entity that moves into the other, e.g. \`"player"\`; left out, any.`,
|
|
2328
|
-
ru: `Для \`"touch"\`: класс сущности, которая входит в другую, например \`"player"\`; если не задан — любой.`,
|
|
2329
|
-
},
|
|
2330
|
-
'GameListenerOptions.touched': {
|
|
2331
|
-
en: `For \`"touch"\`: the class of the entity touched, e.g. \`"func_door"\`; left out, any.`,
|
|
2332
|
-
ru: `Для \`"touch"\`: класс сущности, которой коснулись, например \`"func_door"\`; если не задан — любой.`,
|
|
2333
|
-
},
|
|
2334
|
-
'TouchEvent': {
|
|
2518
|
+
'UserInfo.set': {
|
|
2335
2519
|
en: `
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
\`\`\`ts
|
|
2340
|
-
game.addEventListener("touch", onTouch, { toucher: "player", touched: "player" });
|
|
2341
|
-
\`\`\`
|
|
2520
|
+
Writes a key: the server and his game take the new value, as when his
|
|
2521
|
+
game changes it itself.
|
|
2342
2522
|
|
|
2343
|
-
Pawn: \`
|
|
2523
|
+
Pawn: \`set_user_info\`
|
|
2344
2524
|
`,
|
|
2345
2525
|
ru: `
|
|
2346
|
-
|
|
2347
|
-
|
|
2526
|
+
Записывает ключ: сервер и его игра принимают новое значение, как когда
|
|
2527
|
+
его игра меняет его сама.
|
|
2348
2528
|
|
|
2349
|
-
|
|
2350
|
-
game.addEventListener("touch", onTouch, { toucher: "player", touched: "player" });
|
|
2351
|
-
\`\`\`
|
|
2352
|
-
|
|
2353
|
-
Pawn: \`register_touch\`
|
|
2529
|
+
Pawn: \`set_user_info\`
|
|
2354
2530
|
`,
|
|
2355
2531
|
},
|
|
2356
|
-
'
|
|
2357
|
-
en: `
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
en: `Blocks the touch: the game does not act on it.`,
|
|
2366
|
-
ru: `Блокирует касание: игра на него не реагирует.`,
|
|
2367
|
-
},
|
|
2368
|
-
'RoundWinner': {
|
|
2369
|
-
en: `The winner of a round, one of \`"TERRORIST"\`, \`"CT"\`, \`"draw"\`, or \`"none"\` - a restart without a winner.`,
|
|
2370
|
-
ru: `Победитель раунда, одно из \`"TERRORIST"\`, \`"CT"\`, \`"draw"\` или \`"none"\` — рестарт без победителя.`,
|
|
2532
|
+
'Client.isHltv': {
|
|
2533
|
+
en: `
|
|
2534
|
+
\`true\` for an HLTV proxy: a spectator's relay, which \`server.players\`
|
|
2535
|
+
leaves out.
|
|
2536
|
+
`,
|
|
2537
|
+
ru: `
|
|
2538
|
+
\`true\` для прокси HLTV — ретранслятора для зрителей, которого
|
|
2539
|
+
\`server.players\` не включает.
|
|
2540
|
+
`,
|
|
2371
2541
|
},
|
|
2372
|
-
'
|
|
2373
|
-
en: `
|
|
2374
|
-
|
|
2542
|
+
'Player.isHltv': {
|
|
2543
|
+
en: `
|
|
2544
|
+
\`true\` for an HLTV proxy: a spectator's relay, which \`server.players\`
|
|
2545
|
+
leaves out.
|
|
2546
|
+
|
|
2547
|
+
Pawn: \`is_user_hltv\`
|
|
2548
|
+
`,
|
|
2549
|
+
ru: `
|
|
2550
|
+
\`true\` для прокси HLTV — ретранслятора для зрителей, которого
|
|
2551
|
+
\`server.players\` не включает.
|
|
2552
|
+
|
|
2553
|
+
Pawn: \`is_user_hltv\`
|
|
2554
|
+
`,
|
|
2375
2555
|
},
|
|
2376
|
-
'
|
|
2377
|
-
en: `
|
|
2378
|
-
|
|
2556
|
+
'Player.removeItems': {
|
|
2557
|
+
en: `
|
|
2558
|
+
Takes every item of one of the player's slots, with its ammo:
|
|
2559
|
+
\`player.removeItems("primary")\`. \`false\` when one stayed.
|
|
2560
|
+
|
|
2561
|
+
Pawn: \`rg_remove_items_by_slot\`
|
|
2562
|
+
`,
|
|
2563
|
+
ru: `
|
|
2564
|
+
Забирает все предметы одного из слотов игрока вместе с их патронами:
|
|
2565
|
+
\`player.removeItems("primary")\`. \`false\`, если какой-то остался.
|
|
2566
|
+
|
|
2567
|
+
Pawn: \`rg_remove_items_by_slot\`
|
|
2568
|
+
`,
|
|
2379
2569
|
},
|
|
2380
|
-
'
|
|
2381
|
-
en: `
|
|
2382
|
-
|
|
2570
|
+
'Player.dropItem': {
|
|
2571
|
+
en: `
|
|
2572
|
+
Drops a weapon the player carries, as the game's \`drop\` does:
|
|
2573
|
+
\`player.dropItem("weapon_c4")\`; with no name, the one in his hands. The
|
|
2574
|
+
weapon, now in a box on the ground, or \`null\` when he has none or the
|
|
2575
|
+
game kept it (a knife).
|
|
2576
|
+
|
|
2577
|
+
Pawn: \`rg_drop_item\`, \`engclient_cmd(id, "drop")\`
|
|
2578
|
+
`,
|
|
2579
|
+
ru: `
|
|
2580
|
+
Выбрасывает оружие, которое несёт игрок, как это делает \`drop\` игры:
|
|
2581
|
+
\`player.dropItem("weapon_c4")\`; без имени — то, что у него в руках. Оружие,
|
|
2582
|
+
теперь в коробке на земле, или \`null\`, если такого нет или игра его не
|
|
2583
|
+
отдала (нож).
|
|
2584
|
+
|
|
2585
|
+
Pawn: \`rg_drop_item\`, \`engclient_cmd(id, "drop")\`
|
|
2586
|
+
`,
|
|
2383
2587
|
},
|
|
2384
|
-
'
|
|
2385
|
-
en: `
|
|
2386
|
-
|
|
2588
|
+
'Player.slap': {
|
|
2589
|
+
en: `
|
|
2590
|
+
Slaps the player as an admin's slap does: a push in a random direction,
|
|
2591
|
+
his view jolted, a pain sound, and \`damage\` taken from his health - the
|
|
2592
|
+
last of it kills him.
|
|
2593
|
+
|
|
2594
|
+
Pawn: \`user_slap\`
|
|
2595
|
+
`,
|
|
2596
|
+
ru: `
|
|
2597
|
+
Шлёпает игрока, как шлепок админа: толчок в случайную сторону, рывок
|
|
2598
|
+
взгляда, звук боли и \`damage\`, отнятый от здоровья, — последнее здоровье его
|
|
2599
|
+
убивает.
|
|
2600
|
+
|
|
2601
|
+
Pawn: \`user_slap\`
|
|
2602
|
+
`,
|
|
2387
2603
|
},
|
|
2388
|
-
'
|
|
2389
|
-
en: `
|
|
2390
|
-
|
|
2604
|
+
'Player.userId': {
|
|
2605
|
+
en: `
|
|
2606
|
+
The player's number for the server's commands, which stays while he is
|
|
2607
|
+
on the server: \`\` server.command(\`kick #\${player.userId}\`) \`\`.
|
|
2608
|
+
|
|
2609
|
+
Pawn: \`get_user_userid\`
|
|
2610
|
+
`,
|
|
2611
|
+
ru: `
|
|
2612
|
+
Номер игрока для команд сервера, который не меняется, пока он на
|
|
2613
|
+
сервере: \`\` server.command(\`kick #\${player.userId}\`) \`\`.
|
|
2614
|
+
|
|
2615
|
+
Pawn: \`get_user_userid\`
|
|
2616
|
+
`,
|
|
2391
2617
|
},
|
|
2392
|
-
'
|
|
2618
|
+
'Player.ping': {
|
|
2393
2619
|
en: `
|
|
2394
|
-
|
|
2395
|
-
the game ends a round itself. \`false\` by default: a \`roundEnd\` listener that
|
|
2396
|
-
ends the round would call itself.
|
|
2620
|
+
The player's ping, in milliseconds, as the scoreboard shows it.
|
|
2397
2621
|
|
|
2398
|
-
Pawn: \`
|
|
2622
|
+
Pawn: \`get_user_ping\`
|
|
2399
2623
|
`,
|
|
2400
2624
|
ru: `
|
|
2401
|
-
|
|
2402
|
-
Pawn-плагинов, как когда игра сама завершает раунд. По умолчанию \`false\`:
|
|
2403
|
-
обработчик \`roundEnd\`, который завершает раунд, вызвал бы сам себя.
|
|
2625
|
+
Пинг игрока в миллисекундах, как его показывает таблица счёта.
|
|
2404
2626
|
|
|
2405
|
-
Pawn: \`
|
|
2627
|
+
Pawn: \`get_user_ping\`
|
|
2406
2628
|
`,
|
|
2407
2629
|
},
|
|
2408
|
-
'
|
|
2409
|
-
en: `
|
|
2410
|
-
|
|
2630
|
+
'Player.connectedSeconds': {
|
|
2631
|
+
en: `
|
|
2632
|
+
The player's time on the server since he connected, in seconds.
|
|
2633
|
+
|
|
2634
|
+
Pawn: \`get_user_time\`
|
|
2635
|
+
`,
|
|
2636
|
+
ru: `
|
|
2637
|
+
Время игрока на сервере с момента подключения, в секундах.
|
|
2638
|
+
|
|
2639
|
+
Pawn: \`get_user_time\`
|
|
2640
|
+
`,
|
|
2411
2641
|
},
|
|
2412
|
-
'
|
|
2642
|
+
'Player.info': {
|
|
2413
2643
|
en: `
|
|
2414
|
-
The
|
|
2415
|
-
|
|
2644
|
+
The settings the player's game tells the server - his userinfo:
|
|
2645
|
+
\`player.info.get("cl_righthand")\`, \`player.info.set("_vgui_menus", "0")\`.
|
|
2416
2646
|
|
|
2417
|
-
Pawn: \`
|
|
2647
|
+
Pawn: \`get_user_info\`, \`set_user_info\`
|
|
2418
2648
|
`,
|
|
2419
2649
|
ru: `
|
|
2420
|
-
|
|
2421
|
-
\`
|
|
2422
|
-
в чат.
|
|
2650
|
+
Настройки, которые игра игрока сообщает серверу, — его userinfo:
|
|
2651
|
+
\`player.info.get("cl_righthand")\`, \`player.info.set("_vgui_menus", "0")\`.
|
|
2423
2652
|
|
|
2424
|
-
Pawn: \`
|
|
2653
|
+
Pawn: \`get_user_info\`, \`set_user_info\`
|
|
2425
2654
|
`,
|
|
2426
2655
|
},
|
|
2427
|
-
'
|
|
2428
|
-
en: `
|
|
2429
|
-
|
|
2656
|
+
'Player.silentSteps': {
|
|
2657
|
+
en: `
|
|
2658
|
+
Whether the player's steps make no sound: \`player.silentSteps = true\`.
|
|
2659
|
+
It lasts until he respawns.
|
|
2660
|
+
|
|
2661
|
+
Pawn: \`set_user_footsteps\`, \`rg_set_user_footsteps\`
|
|
2662
|
+
`,
|
|
2663
|
+
ru: `
|
|
2664
|
+
Беззвучны ли шаги игрока: \`player.silentSteps = true\`. Действует, пока он
|
|
2665
|
+
не появится заново.
|
|
2666
|
+
|
|
2667
|
+
Pawn: \`set_user_footsteps\`, \`rg_set_user_footsteps\`
|
|
2668
|
+
`,
|
|
2669
|
+
},
|
|
2670
|
+
'Player.country': {
|
|
2671
|
+
en: `
|
|
2672
|
+
The country the player connects from, in English, e.g. \`"Germany"\`; \`null\`
|
|
2673
|
+
when the GeoIP database does not know his address (a LAN, a bot) or the
|
|
2674
|
+
server has none.
|
|
2675
|
+
|
|
2676
|
+
Pawn: \`geoip_country_ex\`
|
|
2677
|
+
`,
|
|
2678
|
+
ru: `
|
|
2679
|
+
Страна, из которой подключается игрок, по-английски, например \`"Germany"\`; \`null\`,
|
|
2680
|
+
если база GeoIP не знает его адрес (локальная сеть, бот) или её нет на
|
|
2681
|
+
сервере.
|
|
2682
|
+
|
|
2683
|
+
Pawn: \`geoip_country_ex\`
|
|
2684
|
+
`,
|
|
2685
|
+
},
|
|
2686
|
+
'Player.countryCode': {
|
|
2687
|
+
en: `
|
|
2688
|
+
The two letters of the country the player connects from, e.g. \`"DE"\`;
|
|
2689
|
+
\`null\` when the GeoIP database does not know his address or the server
|
|
2690
|
+
has none.
|
|
2691
|
+
|
|
2692
|
+
Pawn: \`geoip_code2_ex\`
|
|
2693
|
+
`,
|
|
2694
|
+
ru: `
|
|
2695
|
+
Две буквы страны, из которой подключается игрок, например \`"DE"\`; \`null\`, если
|
|
2696
|
+
база GeoIP не знает его адрес или её нет на сервере.
|
|
2697
|
+
|
|
2698
|
+
Pawn: \`geoip_code2_ex\`
|
|
2699
|
+
`,
|
|
2700
|
+
},
|
|
2701
|
+
'Game.swapTeams': {
|
|
2702
|
+
en: `
|
|
2703
|
+
Swaps the sides: every terrorist a counter-terrorist and back, their
|
|
2704
|
+
scores too, as the game swaps them halfway through a match.
|
|
2705
|
+
|
|
2706
|
+
Pawn: \`rg_swap_all_players\`
|
|
2707
|
+
`,
|
|
2708
|
+
ru: `
|
|
2709
|
+
Меняет стороны местами: каждый террорист становится спецназовцем и
|
|
2710
|
+
наоборот, их счёт тоже, как игра меняет их в середине матча.
|
|
2711
|
+
|
|
2712
|
+
Pawn: \`rg_swap_all_players\`
|
|
2713
|
+
`,
|
|
2714
|
+
},
|
|
2715
|
+
'Game.balanceTeams': {
|
|
2716
|
+
en: `
|
|
2717
|
+
Evens the sides as the game does at a round's start with
|
|
2718
|
+
\`mp_autoteambalance\`: from the bigger side the players who came last,
|
|
2719
|
+
four at most - on a map with a VIP, a little more counter-terrorists.
|
|
2720
|
+
|
|
2721
|
+
Pawn: \`rg_balance_teams\`
|
|
2722
|
+
`,
|
|
2723
|
+
ru: `
|
|
2724
|
+
Выравнивает стороны, как игра в начале раунда с \`mp_autoteambalance\`: из
|
|
2725
|
+
большей стороны — игроки, пришедшие последними, не больше четырёх; на
|
|
2726
|
+
карте с VIP спецназовцев чуть больше.
|
|
2727
|
+
|
|
2728
|
+
Pawn: \`rg_balance_teams\`
|
|
2729
|
+
`,
|
|
2730
|
+
},
|
|
2731
|
+
'Game.timeLeft': {
|
|
2732
|
+
en: `
|
|
2733
|
+
Seconds until the map ends by its time limit; \`Infinity\` without one.
|
|
2734
|
+
|
|
2735
|
+
Pawn: \`get_timeleft\`
|
|
2736
|
+
`,
|
|
2737
|
+
ru: `
|
|
2738
|
+
Секунды до конца карты по её лимиту времени; \`Infinity\`, если лимита нет.
|
|
2739
|
+
|
|
2740
|
+
Pawn: \`get_timeleft\`
|
|
2741
|
+
`,
|
|
2742
|
+
},
|
|
2743
|
+
'HudLine.showAll': {
|
|
2744
|
+
en: `
|
|
2745
|
+
Shows \`text\` to everyone on this line: \`countdown.showAll(\`\${left}\`)\`.
|
|
2746
|
+
|
|
2747
|
+
Pawn: \`ShowSyncHudMsg(0, ...)\`
|
|
2748
|
+
`,
|
|
2749
|
+
ru: `
|
|
2750
|
+
Показывает \`text\` всем на этой строке: \`countdown.showAll(\`\${left}\`)\`.
|
|
2751
|
+
|
|
2752
|
+
Pawn: \`ShowSyncHudMsg(0, ...)\`
|
|
2753
|
+
`,
|
|
2754
|
+
},
|
|
2755
|
+
'Screen.hint': {
|
|
2756
|
+
en: `
|
|
2757
|
+
Shows a hint in the box at the top of the player's screen, as the game
|
|
2758
|
+
shows its own: \`player.screen.hint("Plant the bomb")\`.
|
|
2759
|
+
|
|
2760
|
+
Pawn: \`rg_hint_message\`, \`HudTextPro\`
|
|
2761
|
+
`,
|
|
2762
|
+
ru: `
|
|
2763
|
+
Показывает подсказку в рамке вверху экрана игрока, как игра показывает
|
|
2764
|
+
свои: \`player.screen.hint("Заложи бомбу")\`.
|
|
2765
|
+
|
|
2766
|
+
Pawn: \`rg_hint_message\`, \`HudTextPro\`
|
|
2767
|
+
`,
|
|
2768
|
+
},
|
|
2769
|
+
'Player.showMotd': {
|
|
2770
|
+
en: `
|
|
2771
|
+
Shows the message-of-the-day window: \`player.showMotd("Rules: ...")\`,
|
|
2772
|
+
a page's address (\`"https://my-server.com/rules"\`) or HTML; \`title\` on
|
|
2773
|
+
its top, the server's name when left out. The plugins' \`"motd"\`
|
|
2774
|
+
listeners do not hear it, as AMX Mod X's do not hear \`show_motd\`.
|
|
2775
|
+
|
|
2776
|
+
Pawn: \`show_motd\`
|
|
2777
|
+
`,
|
|
2778
|
+
ru: `
|
|
2779
|
+
Показывает окно «сообщения дня»: \`player.showMotd("Правила: ...")\`, адрес
|
|
2780
|
+
страницы (\`"https://my-server.com/rules"\`) или HTML; \`title\` — сверху окна,
|
|
2781
|
+
без него — имя сервера. Слушатели \`"motd"\` плагинов его не слышат, как
|
|
2782
|
+
обработчики AMX Mod X не слышат \`show_motd\`.
|
|
2783
|
+
|
|
2784
|
+
Pawn: \`show_motd\`
|
|
2785
|
+
`,
|
|
2786
|
+
},
|
|
2787
|
+
'Server.plugins': {
|
|
2788
|
+
en: `
|
|
2789
|
+
Every plugin on the server, TypeScript and Pawn, read anew each time:
|
|
2790
|
+
\`server.plugins.find(plugin => plugin.file == "shop.aot")?.stop()\`.
|
|
2791
|
+
|
|
2792
|
+
Pawn: \`get_plugin\`, \`get_pluginsnum\`, \`find_plugin_byfile\`, \`is_plugin_loaded\`
|
|
2793
|
+
`,
|
|
2794
|
+
ru: `
|
|
2795
|
+
Все плагины сервера, на TypeScript и на Pawn, каждый раз заново:
|
|
2796
|
+
\`server.plugins.find(plugin => plugin.file == "shop.aot")?.stop()\`.
|
|
2797
|
+
|
|
2798
|
+
Pawn: \`get_plugin\`, \`get_pluginsnum\`, \`find_plugin_byfile\`, \`is_plugin_loaded\`
|
|
2799
|
+
`,
|
|
2800
|
+
},
|
|
2801
|
+
'Server.loadPlugin': {
|
|
2802
|
+
en: `
|
|
2803
|
+
Loads a TypeScript plugin of the server's \`plugins\` folder the list
|
|
2804
|
+
does not name, at the next frame: \`server.loadPlugin("event.aot")\`. It
|
|
2805
|
+
runs until the map changes.
|
|
2806
|
+
|
|
2807
|
+
Pawn: \`amxts_load\`
|
|
2808
|
+
`,
|
|
2809
|
+
ru: `
|
|
2810
|
+
Загружает плагин на TypeScript из папки \`plugins\` сервера, которого нет в
|
|
2811
|
+
списке, на следующем кадре: \`server.loadPlugin("event.aot")\`. Он работает до
|
|
2812
|
+
смены карты.
|
|
2813
|
+
|
|
2814
|
+
Pawn: \`amxts_load\`
|
|
2815
|
+
`,
|
|
2816
|
+
},
|
|
2817
|
+
'PluginLanguage': {
|
|
2818
|
+
en: `
|
|
2819
|
+
The language a plugin is written in, one of \`"typescript"\` or \`"pawn"\`.
|
|
2820
|
+
`,
|
|
2821
|
+
ru: `
|
|
2822
|
+
Язык, на котором написан плагин, одно из \`"typescript"\` или \`"pawn"\`.
|
|
2823
|
+
`,
|
|
2824
|
+
},
|
|
2825
|
+
'ServerPlugin': {
|
|
2826
|
+
en: `
|
|
2827
|
+
A plugin on the server, TypeScript or Pawn, as \`server.plugins\` lists it:
|
|
2828
|
+
its file, what it says it is, whether it runs - and the means to stop it,
|
|
2829
|
+
start it again and reload it.
|
|
2830
|
+
`,
|
|
2831
|
+
ru: `
|
|
2832
|
+
Плагин на сервере, на TypeScript или на Pawn, как его перечисляет
|
|
2833
|
+
\`server.plugins\`: его файл, что он о себе говорит, работает ли он, — и как его
|
|
2834
|
+
остановить, снова запустить и перезагрузить.
|
|
2835
|
+
`,
|
|
2836
|
+
},
|
|
2837
|
+
'ServerPlugin.language': {
|
|
2838
|
+
en: `
|
|
2839
|
+
\`"typescript"\` or \`"pawn"\`.
|
|
2840
|
+
`,
|
|
2841
|
+
ru: `
|
|
2842
|
+
\`"typescript"\` или \`"pawn"\`.
|
|
2843
|
+
`,
|
|
2844
|
+
},
|
|
2845
|
+
'ServerPlugin.file': {
|
|
2846
|
+
en: `
|
|
2847
|
+
The plugin's file, as the server's list names it, e.g. \`"shop.aot"\`, \`"admin.amxx"\`.
|
|
2848
|
+
`,
|
|
2849
|
+
ru: `
|
|
2850
|
+
Файл плагина, как его называет список сервера, например \`"shop.aot"\`, \`"admin.amxx"\`.
|
|
2851
|
+
`,
|
|
2852
|
+
},
|
|
2853
|
+
'ServerPlugin.name': {
|
|
2854
|
+
en: `
|
|
2855
|
+
The name it gives itself (\`plugin()\`, \`register_plugin\`).
|
|
2856
|
+
`,
|
|
2857
|
+
ru: `
|
|
2858
|
+
Имя, которое он сам себе дал (\`plugin()\`, \`register_plugin\`).
|
|
2859
|
+
`,
|
|
2860
|
+
},
|
|
2861
|
+
'ServerPlugin.version': {
|
|
2862
|
+
en: `
|
|
2863
|
+
The version it gives.
|
|
2864
|
+
`,
|
|
2865
|
+
ru: `
|
|
2866
|
+
Версия, которую он указал.
|
|
2867
|
+
`,
|
|
2868
|
+
},
|
|
2869
|
+
'ServerPlugin.author': {
|
|
2870
|
+
en: `
|
|
2871
|
+
The author it names.
|
|
2872
|
+
`,
|
|
2873
|
+
ru: `
|
|
2874
|
+
Автор, которого он называет.
|
|
2875
|
+
`,
|
|
2876
|
+
},
|
|
2877
|
+
'ServerPlugin.running': {
|
|
2878
|
+
en: `
|
|
2879
|
+
Whether it runs: not stopped, not refused, not paused.
|
|
2880
|
+
|
|
2881
|
+
Pawn: \`get_plugin(..., status)\`
|
|
2882
|
+
`,
|
|
2883
|
+
ru: `
|
|
2884
|
+
Работает ли он: не остановлен, не отвергнут, не на паузе.
|
|
2885
|
+
|
|
2886
|
+
Pawn: \`get_plugin(..., status)\`
|
|
2887
|
+
`,
|
|
2888
|
+
},
|
|
2889
|
+
'ServerPlugin.stop': {
|
|
2890
|
+
en: `
|
|
2891
|
+
Stops it at the next frame. A TypeScript plugin is unloaded, and what
|
|
2892
|
+
it registered with it, until \`start()\` or the map changes; a Pawn plugin
|
|
2893
|
+
is paused, as AMX Mod X pauses one.
|
|
2894
|
+
|
|
2895
|
+
Pawn: \`pause\`, \`amxts_unload\`
|
|
2896
|
+
`,
|
|
2897
|
+
ru: `
|
|
2898
|
+
Останавливает его на следующем кадре. Плагин на TypeScript выгружается
|
|
2899
|
+
вместе со всем, что он зарегистрировал, до \`start()\` или смены карты; плагин
|
|
2900
|
+
на Pawn ставится на паузу, как это делает AMX Mod X.
|
|
2901
|
+
|
|
2902
|
+
Pawn: \`pause\`, \`amxts_unload\`
|
|
2903
|
+
`,
|
|
2904
|
+
},
|
|
2905
|
+
'ServerPlugin.start': {
|
|
2906
|
+
en: `
|
|
2907
|
+
Starts it again: a TypeScript plugin loaded at the next frame, a Pawn
|
|
2908
|
+
plugin let run again.
|
|
2909
|
+
|
|
2910
|
+
Pawn: \`unpause\`, \`amxts_load\`
|
|
2911
|
+
`,
|
|
2912
|
+
ru: `
|
|
2913
|
+
Запускает его снова: плагин на TypeScript загружается на следующем кадре,
|
|
2914
|
+
плагин на Pawn снимается с паузы.
|
|
2915
|
+
|
|
2916
|
+
Pawn: \`unpause\`, \`amxts_load\`
|
|
2917
|
+
`,
|
|
2918
|
+
},
|
|
2919
|
+
'ServerPlugin.reload': {
|
|
2920
|
+
en: `
|
|
2921
|
+
Starts a TypeScript plugin over from its file at the next frame. A Pawn
|
|
2922
|
+
plugin cannot be: AMX Mod X loads its plugins once a map - it throws.
|
|
2923
|
+
|
|
2924
|
+
Pawn: \`amxts_reload\`
|
|
2925
|
+
`,
|
|
2926
|
+
ru: `
|
|
2927
|
+
Запускает плагин на TypeScript заново из его файла на следующем кадре.
|
|
2928
|
+
Плагин на Pawn так нельзя: AMX Mod X загружает плагины раз за карту — бросает
|
|
2929
|
+
ошибку.
|
|
2930
|
+
|
|
2931
|
+
Pawn: \`amxts_reload\`
|
|
2932
|
+
`,
|
|
2933
|
+
},
|
|
2934
|
+
'ServerPlugin.call': {
|
|
2935
|
+
en: `
|
|
2936
|
+
Calls a public function of a Pawn plugin and gives what it returns:
|
|
2937
|
+
\`ranks.call("show_rank", player)\`. A number, a boolean, text or a
|
|
2938
|
+
player crosses as Pawn takes it. A TypeScript plugin is called through
|
|
2939
|
+
its module instead: it throws.
|
|
2940
|
+
|
|
2941
|
+
Pawn: \`callfunc_begin\`, \`callfunc_begin_i\`, \`get_func_id\`, \`callfunc_push_*\`, \`callfunc_end\`
|
|
2942
|
+
`,
|
|
2943
|
+
ru: `
|
|
2944
|
+
Вызывает публичную функцию плагина на Pawn и возвращает её результат:
|
|
2945
|
+
\`ranks.call("show_rank", player)\`. Число, булево значение, текст или игрок
|
|
2946
|
+
передаются так, как их принимает Pawn. Плагин на TypeScript вызывают через его
|
|
2947
|
+
модуль — бросает ошибку.
|
|
2948
|
+
|
|
2949
|
+
Pawn: \`callfunc_begin\`, \`callfunc_begin_i\`, \`get_func_id\`, \`callfunc_push_*\`, \`callfunc_end\`
|
|
2950
|
+
`,
|
|
2951
|
+
},
|
|
2952
|
+
'Player.send': {
|
|
2953
|
+
en: `
|
|
2954
|
+
Sends him a message of the game by its name, its fields typed as
|
|
2955
|
+
\`server.addMessageListener\` hears them: \`player.send("team", { target:
|
|
2956
|
+
other, team: "CT" })\`. A field left out goes as \`0\` or empty text;
|
|
2957
|
+
every message listener hears it on its way.
|
|
2958
|
+
|
|
2959
|
+
Pawn: \`message_begin(MSG_ONE, ...)\`, \`write_*\`, \`message_end\`, \`get_user_msgid\`
|
|
2960
|
+
`,
|
|
2961
|
+
ru: `
|
|
2962
|
+
Отправляет ему сообщение игры по имени, с полями того же типа, что слышит
|
|
2963
|
+
\`server.addMessageListener\`: \`player.send("team", { target: other, team:
|
|
2964
|
+
"CT" })\`. Пропущенное поле уходит как \`0\` или пустой текст; все слушатели
|
|
2965
|
+
сообщений слышат его по пути.
|
|
2966
|
+
|
|
2967
|
+
Pawn: \`message_begin(MSG_ONE, ...)\`, \`write_*\`, \`message_end\`, \`get_user_msgid\`
|
|
2968
|
+
`,
|
|
2969
|
+
},
|
|
2970
|
+
'Server.send': {
|
|
2971
|
+
en: `
|
|
2972
|
+
Sends everyone a message of the game by its name, its fields typed as
|
|
2973
|
+
\`addMessageListener\` hears them: \`server.send("score", { target: player,
|
|
2974
|
+
frags: 10, deaths: 2, team: "CT" })\`; with \`near\`, only the players who
|
|
2975
|
+
can see that point, as effects go. A field left out goes as \`0\` or empty
|
|
2976
|
+
text; every message listener hears it on its way.
|
|
2977
|
+
|
|
2978
|
+
Pawn: \`message_begin(MSG_ALL, ...)\`, \`write_*\`, \`message_end\`, \`get_user_msgid\`
|
|
2979
|
+
`,
|
|
2980
|
+
ru: `
|
|
2981
|
+
Отправляет всем сообщение игры по имени, с полями того же типа, что слышит
|
|
2982
|
+
\`addMessageListener\`: \`server.send("score", { target: player, frags: 10,
|
|
2983
|
+
deaths: 2, team: "CT" })\`; с \`near\` — только игрокам, которые видят эту
|
|
2984
|
+
точку, как эффекты. Пропущенное поле уходит как \`0\` или пустой текст; все
|
|
2985
|
+
слушатели сообщений слышат его по пути.
|
|
2986
|
+
|
|
2987
|
+
Pawn: \`message_begin(MSG_ALL, ...)\`, \`write_*\`, \`message_end\`, \`get_user_msgid\`
|
|
2988
|
+
`,
|
|
2989
|
+
},
|
|
2990
|
+
'SendOptions': {
|
|
2991
|
+
en: `
|
|
2992
|
+
The options of \`server.send\`: the players a message goes to.
|
|
2993
|
+
`,
|
|
2994
|
+
ru: `
|
|
2995
|
+
Параметры \`server.send\`: игроки, которым уходит сообщение.
|
|
2996
|
+
`,
|
|
2997
|
+
},
|
|
2998
|
+
'SendOptions.near': {
|
|
2999
|
+
en: `
|
|
3000
|
+
Only to the players who can see this point, as effects go - not reliably.
|
|
3001
|
+
`,
|
|
3002
|
+
ru: `
|
|
3003
|
+
Только игрокам, которые видят эту точку, как эффекты, — без гарантии доставки.
|
|
3004
|
+
`,
|
|
3005
|
+
},
|
|
3006
|
+
'Player.eyes': {
|
|
3007
|
+
en: `
|
|
3008
|
+
The point he sees from: his origin and the view's height above it.
|
|
3009
|
+
|
|
3010
|
+
Pawn: \`get_user_origin(id, origin, 1)\`
|
|
3011
|
+
`,
|
|
3012
|
+
ru: `
|
|
3013
|
+
Точка, из которой он смотрит: его позиция и высота взгляда над ней.
|
|
3014
|
+
|
|
3015
|
+
Pawn: \`get_user_origin(id, origin, 1)\`
|
|
3016
|
+
`,
|
|
3017
|
+
},
|
|
3018
|
+
'Player.aim': {
|
|
3019
|
+
en: `
|
|
3020
|
+
The player's aim: \`player.aim.entity\` is what his view meets first - a
|
|
3021
|
+
player, an entity, the world - and \`player.aim.point\` the point.
|
|
3022
|
+
|
|
3023
|
+
Pawn: \`get_user_aiming\`, \`get_user_origin(id, origin, 3)\`
|
|
3024
|
+
`,
|
|
3025
|
+
ru: `
|
|
3026
|
+
Прицел игрока: \`player.aim.entity\` — то, во что первым упирается его
|
|
3027
|
+
взгляд, — игрок, сущность, мир, — а \`player.aim.point\` — эта точка.
|
|
3028
|
+
|
|
3029
|
+
Pawn: \`get_user_aiming\`, \`get_user_origin(id, origin, 3)\`
|
|
3030
|
+
`,
|
|
3031
|
+
},
|
|
3032
|
+
'Player.canSee': {
|
|
3033
|
+
en: `
|
|
3034
|
+
Whether he sees an entity: it is inside his field of view and nothing
|
|
3035
|
+
solid stands between his eyes and it - a player's eyes, an entity's
|
|
3036
|
+
origin. \`false\` for one that is gone.
|
|
3037
|
+
|
|
3038
|
+
Pawn: \`is_visible\`, \`is_in_viewcone\`, \`fm_is_ent_visible\`
|
|
3039
|
+
`,
|
|
3040
|
+
ru: `
|
|
3041
|
+
Видит ли он сущность: она в его поле зрения, и между его глазами и ней нет
|
|
3042
|
+
ничего твёрдого — до глаз игрока, до позиции сущности. \`false\` для сущности,
|
|
3043
|
+
которой уже нет.
|
|
3044
|
+
|
|
3045
|
+
Pawn: \`is_visible\`, \`is_in_viewcone\`, \`fm_is_ent_visible\`
|
|
3046
|
+
`,
|
|
3047
|
+
},
|
|
3048
|
+
'Player.canSeePoint': {
|
|
3049
|
+
en: `
|
|
3050
|
+
Whether he sees a point: it is inside his field of view and nothing
|
|
3051
|
+
solid stands between his eyes and it.
|
|
3052
|
+
|
|
3053
|
+
Pawn: \`is_in_viewcone\`, \`trace_line\`
|
|
3054
|
+
`,
|
|
3055
|
+
ru: `
|
|
3056
|
+
Видит ли он точку: она в его поле зрения, и между его глазами и ней нет
|
|
3057
|
+
ничего твёрдого.
|
|
3058
|
+
|
|
3059
|
+
Pawn: \`is_in_viewcone\`, \`trace_line\`
|
|
3060
|
+
`,
|
|
3061
|
+
},
|
|
3062
|
+
'Aim': {
|
|
3063
|
+
en: `
|
|
3064
|
+
A player's aim: the point his view reaches and what is there.
|
|
3065
|
+
`,
|
|
3066
|
+
ru: `
|
|
3067
|
+
Прицел игрока: точка, до которой доходит взгляд, и что там.
|
|
3068
|
+
`,
|
|
3069
|
+
},
|
|
3070
|
+
'Aim.point': {
|
|
3071
|
+
en: `
|
|
3072
|
+
The point where his view first meets something, as far as 8192 units.
|
|
3073
|
+
`,
|
|
3074
|
+
ru: `
|
|
3075
|
+
Точка, где его взгляд впервые во что-то упирается, не дальше 8192 единиц.
|
|
3076
|
+
`,
|
|
3077
|
+
},
|
|
3078
|
+
'Aim.entity': {
|
|
3079
|
+
en: `
|
|
3080
|
+
The entity at that point: a player, an entity, the world (entity \`0\`), or \`null\` for nothing in reach.
|
|
3081
|
+
`,
|
|
3082
|
+
ru: `
|
|
3083
|
+
Сущность в этой точке: игрок, сущность, мир (сущность \`0\`) или \`null\`, если в пределах досягаемости ничего нет.
|
|
3084
|
+
`,
|
|
3085
|
+
},
|
|
3086
|
+
'Aim.hitGroup': {
|
|
3087
|
+
en: `
|
|
3088
|
+
The part of a player he aims at, \`"generic"\` for anything else.
|
|
3089
|
+
`,
|
|
3090
|
+
ru: `
|
|
3091
|
+
Часть тела игрока, в которую он целится; \`"generic"\` для всего остального.
|
|
3092
|
+
`,
|
|
3093
|
+
},
|
|
3094
|
+
'TraceOptions': {
|
|
3095
|
+
en: `
|
|
3096
|
+
The options of \`trace.line\` and \`trace.hull\`: what a trace passes through.
|
|
3097
|
+
`,
|
|
3098
|
+
ru: `
|
|
3099
|
+
Параметры \`trace.line\` и \`trace.hull\`: то, что проходит трассировка.
|
|
3100
|
+
`,
|
|
3101
|
+
},
|
|
3102
|
+
'TraceOptions.ignore': {
|
|
3103
|
+
en: `
|
|
3104
|
+
An entity the trace passes through: the one it starts from, as a rule.
|
|
3105
|
+
`,
|
|
3106
|
+
ru: `
|
|
3107
|
+
Сущность, сквозь которую трассировка проходит, — как правило, та, от которой она начинается.
|
|
3108
|
+
`,
|
|
3109
|
+
},
|
|
3110
|
+
'TraceOptions.monsters': {
|
|
3111
|
+
en: `
|
|
3112
|
+
Whether it stops at players and monsters too, not only at the world and solid entities; \`true\` when left out.
|
|
3113
|
+
`,
|
|
3114
|
+
ru: `
|
|
3115
|
+
Останавливается ли она и на игроках и монстрах, а не только на мире и твёрдых сущностях; \`true\`, если не указано.
|
|
3116
|
+
`,
|
|
3117
|
+
},
|
|
3118
|
+
'TraceHull': {
|
|
3119
|
+
en: `
|
|
3120
|
+
The size of what a hull trace moves: a point, a standing player, a large monster, a crouching player.
|
|
3121
|
+
`,
|
|
3122
|
+
ru: `
|
|
3123
|
+
Размер того, что двигает трассировка коробки: точка, стоящий игрок, большой монстр, присевший игрок.
|
|
3124
|
+
`,
|
|
3125
|
+
},
|
|
3126
|
+
'TraceResult': {
|
|
3127
|
+
en: `
|
|
3128
|
+
A trace's result: where it stopped, at what, and how.
|
|
3129
|
+
`,
|
|
3130
|
+
ru: `
|
|
3131
|
+
Результат трассировки: где она остановилась, на чём и как.
|
|
3132
|
+
`,
|
|
3133
|
+
},
|
|
3134
|
+
'TraceResult.fraction': {
|
|
3135
|
+
en: `
|
|
3136
|
+
The share of the way it went, \`0\` to \`1\`: \`1\` reached the end.
|
|
3137
|
+
`,
|
|
3138
|
+
ru: `
|
|
3139
|
+
Какую часть пути она прошла, от \`0\` до \`1\`: \`1\` — дошла до конца.
|
|
3140
|
+
`,
|
|
3141
|
+
},
|
|
3142
|
+
'TraceResult.end': {
|
|
3143
|
+
en: `
|
|
3144
|
+
The point it stopped at: the end when nothing was in the way.
|
|
3145
|
+
`,
|
|
3146
|
+
ru: `
|
|
3147
|
+
Точка, где она остановилась: конец пути, если ничего не мешало.
|
|
3148
|
+
`,
|
|
3149
|
+
},
|
|
3150
|
+
'TraceResult.normal': {
|
|
3151
|
+
en: `
|
|
3152
|
+
The direction the surface it hit faces; zero when it hit nothing.
|
|
3153
|
+
`,
|
|
3154
|
+
ru: `
|
|
3155
|
+
Направление, куда обращена поверхность, в которую она попала; нулевой вектор, если ни во что не попала.
|
|
3156
|
+
`,
|
|
3157
|
+
},
|
|
3158
|
+
'TraceResult.entity': {
|
|
3159
|
+
en: `
|
|
3160
|
+
The entity it hit - the world is entity \`0\` - or \`null\` when nothing was in the way.
|
|
3161
|
+
`,
|
|
3162
|
+
ru: `
|
|
3163
|
+
Сущность, в которую она попала (мир — сущность \`0\`), или \`null\`, если ничего не мешало.
|
|
3164
|
+
`,
|
|
3165
|
+
},
|
|
3166
|
+
'TraceResult.startSolid': {
|
|
3167
|
+
en: `
|
|
3168
|
+
Whether it started inside something solid.
|
|
3169
|
+
`,
|
|
3170
|
+
ru: `
|
|
3171
|
+
Началась ли она внутри чего-то твёрдого.
|
|
3172
|
+
`,
|
|
3173
|
+
},
|
|
3174
|
+
'TraceResult.allSolid': {
|
|
3175
|
+
en: `
|
|
3176
|
+
Whether it was inside something solid all the way.
|
|
3177
|
+
`,
|
|
3178
|
+
ru: `
|
|
3179
|
+
Была ли она внутри чего-то твёрдого на всём пути.
|
|
3180
|
+
`,
|
|
3181
|
+
},
|
|
3182
|
+
'TraceResult.inOpen': {
|
|
3183
|
+
en: `
|
|
3184
|
+
Whether it ended in the open air.
|
|
3185
|
+
`,
|
|
3186
|
+
ru: `
|
|
3187
|
+
Закончилась ли она на открытом воздухе.
|
|
3188
|
+
`,
|
|
3189
|
+
},
|
|
3190
|
+
'TraceResult.inWater': {
|
|
3191
|
+
en: `
|
|
3192
|
+
Whether it ended in water.
|
|
3193
|
+
`,
|
|
3194
|
+
ru: `
|
|
3195
|
+
Закончилась ли она в воде.
|
|
3196
|
+
`,
|
|
3197
|
+
},
|
|
3198
|
+
'TraceResult.hitGroup': {
|
|
3199
|
+
en: `
|
|
3200
|
+
The part of a player it hit, \`"generic"\` for anything else.
|
|
3201
|
+
`,
|
|
3202
|
+
ru: `
|
|
3203
|
+
Часть тела игрока, в которую она попала; \`"generic"\` для всего остального.
|
|
3204
|
+
`,
|
|
3205
|
+
},
|
|
3206
|
+
'TraceResult.hit': {
|
|
3207
|
+
en: `
|
|
3208
|
+
Whether something was in the way: \`fraction\` is less than \`1\`.
|
|
3209
|
+
`,
|
|
3210
|
+
ru: `
|
|
3211
|
+
Мешало ли что-то: \`fraction\` меньше \`1\`.
|
|
3212
|
+
`,
|
|
3213
|
+
},
|
|
3214
|
+
'trace': {
|
|
3215
|
+
en: `
|
|
3216
|
+
Traces through the world: a line, \`trace.line(start, end)\`, or a box,
|
|
3217
|
+
\`trace.hull(start, end, "human")\` - what a bullet or a player moving there
|
|
3218
|
+
would meet.
|
|
3219
|
+
`,
|
|
3220
|
+
ru: `
|
|
3221
|
+
Трассировки сквозь мир: линия, \`trace.line(start, end)\`, или коробка,
|
|
3222
|
+
\`trace.hull(start, end, "human")\`, — то, что встретила бы пуля или игрок,
|
|
3223
|
+
движущийся туда.
|
|
3224
|
+
`,
|
|
3225
|
+
},
|
|
3226
|
+
'trace.line': {
|
|
3227
|
+
en: `
|
|
3228
|
+
Traces a line from \`start\` to \`end\` and tells where it stopped and at
|
|
3229
|
+
what: \`trace.line(eyes, eyes.add(forward.scale(8192)), { ignore: player
|
|
3230
|
+
}).entity\`.
|
|
3231
|
+
|
|
3232
|
+
Pawn: \`trace_line\`, \`engfunc(EngFunc_TraceLine, ...)\`, \`create_tr2\`, \`get_tr2\`, \`free_tr2\`
|
|
3233
|
+
`,
|
|
3234
|
+
ru: `
|
|
3235
|
+
Проводит линию от \`start\` до \`end\` и говорит, где и на чём она
|
|
3236
|
+
остановилась: \`trace.line(eyes, eyes.add(forward.scale(8192)), { ignore:
|
|
3237
|
+
player }).entity\`.
|
|
3238
|
+
|
|
3239
|
+
Pawn: \`trace_line\`, \`engfunc(EngFunc_TraceLine, ...)\`, \`create_tr2\`, \`get_tr2\`, \`free_tr2\`
|
|
3240
|
+
`,
|
|
3241
|
+
},
|
|
3242
|
+
'trace.hull': {
|
|
3243
|
+
en: `
|
|
3244
|
+
Moves a box of a player's or a monster's size from \`start\` to \`end\`
|
|
3245
|
+
and tells where it stopped: \`trace.hull(origin, origin, "human").startSolid\`
|
|
3246
|
+
- a player put there would be stuck.
|
|
3247
|
+
|
|
3248
|
+
Pawn: \`trace_hull\`, \`engfunc(EngFunc_TraceHull, ...)\`
|
|
3249
|
+
`,
|
|
3250
|
+
ru: `
|
|
3251
|
+
Двигает коробку размером с игрока или монстра от \`start\` до \`end\` и
|
|
3252
|
+
говорит, где она остановилась: \`trace.hull(origin, origin, "human").startSolid\`
|
|
3253
|
+
— игрок, поставленный туда, застрянет.
|
|
3254
|
+
|
|
3255
|
+
Pawn: \`trace_hull\`, \`engfunc(EngFunc_TraceHull, ...)\`
|
|
3256
|
+
`,
|
|
3257
|
+
},
|
|
3258
|
+
'pointContents': {
|
|
3259
|
+
en: `
|
|
3260
|
+
The contents of a point of the world: \`pointContents(origin) == "water"\`. A
|
|
3261
|
+
point inside a wall is \`"solid"\`; flowing water is one of the \`current\`
|
|
3262
|
+
kinds.
|
|
3263
|
+
|
|
3264
|
+
Pawn: \`point_contents\`, \`engfunc(EngFunc_PointContents, ...)\`
|
|
3265
|
+
`,
|
|
3266
|
+
ru: `
|
|
3267
|
+
Содержимое точки мира: \`pointContents(origin) == "water"\`. Точка внутри
|
|
3268
|
+
стены — \`"solid"\`; текущая вода — один из видов \`current\`.
|
|
3269
|
+
|
|
3270
|
+
Pawn: \`point_contents\`, \`engfunc(EngFunc_PointContents, ...)\`
|
|
3271
|
+
`,
|
|
3272
|
+
},
|
|
3273
|
+
'Server.game': {
|
|
3274
|
+
en: `
|
|
3275
|
+
The game's folder, e.g. \`"cstrike"\`, \`"czero"\`.
|
|
3276
|
+
|
|
3277
|
+
Pawn: \`get_modname\`
|
|
3278
|
+
`,
|
|
3279
|
+
ru: `
|
|
3280
|
+
Папка игры, например \`"cstrike"\`, \`"czero"\`.
|
|
3281
|
+
|
|
3282
|
+
Pawn: \`get_modname\`
|
|
3283
|
+
`,
|
|
3284
|
+
},
|
|
3285
|
+
'Server.versions': {
|
|
3286
|
+
en: `
|
|
3287
|
+
The versions of what the server runs: \`server.versions.reGameDll
|
|
3288
|
+
!= null\` on ReGameDLL. ReHLDS's and ReGameDLL's are their API's,
|
|
3289
|
+
\`null\` on a server without them.
|
|
3290
|
+
|
|
3291
|
+
Pawn: \`get_amxx_verstring\`, \`is_rehlds\`, \`is_regamedll\`
|
|
3292
|
+
`,
|
|
3293
|
+
ru: `
|
|
3294
|
+
Версии того, что запущено на сервере: \`server.versions.reGameDll !=
|
|
3295
|
+
null\` на ReGameDLL. У ReHLDS и ReGameDLL — версия их API, \`null\` на сервере
|
|
3296
|
+
без них.
|
|
3297
|
+
|
|
3298
|
+
Pawn: \`get_amxx_verstring\`, \`is_rehlds\`, \`is_regamedll\`
|
|
3299
|
+
`,
|
|
3300
|
+
},
|
|
3301
|
+
'Server.mapExists': {
|
|
3302
|
+
en: `
|
|
3303
|
+
Whether the server has the map: \`server.mapExists("de_dust2")\`.
|
|
3304
|
+
|
|
3305
|
+
Pawn: \`is_map_valid\`
|
|
3306
|
+
`,
|
|
3307
|
+
ru: `
|
|
3308
|
+
Есть ли карта на сервере: \`server.mapExists("de_dust2")\`.
|
|
3309
|
+
|
|
3310
|
+
Pawn: \`is_map_valid\`
|
|
3311
|
+
`,
|
|
3312
|
+
},
|
|
3313
|
+
'Server.changeLevel': {
|
|
3314
|
+
en: `
|
|
3315
|
+
Goes to the map now: \`false\`, staying, for a map the server does not
|
|
3316
|
+
have.
|
|
3317
|
+
|
|
3318
|
+
Pawn: \`engine_changelevel\`, \`server_cmd("changelevel ...")\`
|
|
3319
|
+
`,
|
|
3320
|
+
ru: `
|
|
3321
|
+
Переходит на карту сейчас: \`false\` — и остаётся, — если такой карты на
|
|
3322
|
+
сервере нет.
|
|
3323
|
+
|
|
3324
|
+
Pawn: \`engine_changelevel\`, \`server_cmd("changelevel ...")\`
|
|
3325
|
+
`,
|
|
3326
|
+
},
|
|
3327
|
+
'Server.lightStyle': {
|
|
3328
|
+
en: `
|
|
3329
|
+
The map's light, \`"a"\` the darkest to \`"z"\` the brightest, \`"m"\` the
|
|
3330
|
+
map's own: \`server.lightStyle = "b"\`. It lasts until the map changes.
|
|
3331
|
+
|
|
3332
|
+
Pawn: \`set_lights\`, \`engfunc(EngFunc_LightStyle, 0, ...)\`
|
|
3333
|
+
`,
|
|
3334
|
+
ru: `
|
|
3335
|
+
Свет карты, от \`"a"\`, самого тёмного, до \`"z"\`, самого яркого; \`"m"\` —
|
|
3336
|
+
свет самой карты: \`server.lightStyle = "b"\`. Держится до смены карты.
|
|
3337
|
+
|
|
3338
|
+
Pawn: \`set_lights\`, \`engfunc(EngFunc_LightStyle, 0, ...)\`
|
|
3339
|
+
`,
|
|
3340
|
+
},
|
|
3341
|
+
'Server.print': {
|
|
3342
|
+
en: `
|
|
3343
|
+
Sends every player a message: \`server.print("Round 3")\`, in the chat;
|
|
3344
|
+
\`variant\` puts it in the middle of the screen (\`"center"\`) or the
|
|
3345
|
+
console. Colour tags work as in \`player.print\`.
|
|
3346
|
+
|
|
3347
|
+
Pawn: \`client_print(0, ...)\`, \`client_print_color(0, ...)\`
|
|
3348
|
+
`,
|
|
3349
|
+
ru: `
|
|
3350
|
+
Отправляет сообщение всем игрокам: \`server.print("Round 3")\` — в чат;
|
|
3351
|
+
\`variant\` выводит его в середину экрана (\`"center"\`) или в консоль. Цветовые
|
|
3352
|
+
теги работают как в \`player.print\`.
|
|
3353
|
+
|
|
3354
|
+
Pawn: \`client_print(0, ...)\`, \`client_print_color(0, ...)\`
|
|
3355
|
+
`,
|
|
3356
|
+
},
|
|
3357
|
+
'ServerVersions': {
|
|
3358
|
+
en: `
|
|
3359
|
+
The versions of what a server runs: \`server.versions\`.
|
|
3360
|
+
`,
|
|
3361
|
+
ru: `
|
|
3362
|
+
Версии того, что запущено на сервере: \`server.versions\`.
|
|
3363
|
+
`,
|
|
3364
|
+
},
|
|
3365
|
+
'ServerVersions.amxts': {
|
|
3366
|
+
en: `
|
|
3367
|
+
amxts's version, e.g. \`"0.3.0"\`.
|
|
3368
|
+
`,
|
|
3369
|
+
ru: `
|
|
3370
|
+
Версия amxts, например \`"0.3.0"\`.
|
|
3371
|
+
`,
|
|
3372
|
+
},
|
|
3373
|
+
'ServerVersions.amxModX': {
|
|
3374
|
+
en: `
|
|
3375
|
+
AMX Mod X's version, e.g. \`"1.10.0.5467"\`.
|
|
3376
|
+
`,
|
|
3377
|
+
ru: `
|
|
3378
|
+
Версия AMX Mod X, например \`"1.10.0.5467"\`.
|
|
3379
|
+
`,
|
|
3380
|
+
},
|
|
3381
|
+
'ServerVersions.metamod': {
|
|
3382
|
+
en: `
|
|
3383
|
+
Metamod's version, e.g. \`"1.3.0.149"\`.
|
|
3384
|
+
`,
|
|
3385
|
+
ru: `
|
|
3386
|
+
Версия Metamod, например \`"1.3.0.149"\`.
|
|
3387
|
+
`,
|
|
3388
|
+
},
|
|
3389
|
+
'ServerVersions.reHlds': {
|
|
3390
|
+
en: `
|
|
3391
|
+
ReHLDS's API version, e.g. \`"3.14"\`; \`null\` on another engine.
|
|
3392
|
+
`,
|
|
3393
|
+
ru: `
|
|
3394
|
+
Версия API ReHLDS, например \`"3.14"\`; \`null\` на другом движке.
|
|
3395
|
+
`,
|
|
3396
|
+
},
|
|
3397
|
+
'ServerVersions.reGameDll': {
|
|
3398
|
+
en: `
|
|
3399
|
+
ReGameDLL's API version, e.g. \`"5.28"\`; \`null\` on the original game.
|
|
3400
|
+
`,
|
|
3401
|
+
ru: `
|
|
3402
|
+
Версия API ReGameDLL, например \`"5.28"\`; \`null\` в оригинальной игре.
|
|
3403
|
+
`,
|
|
3404
|
+
},
|
|
3405
|
+
'lang.languages': {
|
|
3406
|
+
en: `
|
|
3407
|
+
The languages of a dictionary, by their codes, in the file's order:
|
|
3408
|
+
\`lang.languages("myplugin")\` is \`["en", "ru"]\`. Without a name, those of
|
|
3409
|
+
the dictionaries this plugin loaded with \`lang.load\` - not every
|
|
3410
|
+
language the server's dictionaries have.
|
|
3411
|
+
|
|
3412
|
+
Pawn: \`get_langsnum\`, \`get_lang\`
|
|
3413
|
+
`,
|
|
3414
|
+
ru: `
|
|
3415
|
+
Языки словаря по их кодам, в порядке файла:
|
|
3416
|
+
\`lang.languages("myplugin")\` — это \`["en", "ru"]\`. Без имени — языки
|
|
3417
|
+
словарей, которые этот плагин загрузил через \`lang.load\`, а не все
|
|
3418
|
+
языки словарей сервера.
|
|
3419
|
+
|
|
3420
|
+
Pawn: \`get_langsnum\`, \`get_lang\`
|
|
3421
|
+
`,
|
|
3422
|
+
},
|
|
3423
|
+
'Menu.addText': {
|
|
3424
|
+
en: `
|
|
3425
|
+
Adds a line of text under the last item added - under the title when
|
|
3426
|
+
there is none yet - with no number: a note, a price, a heading of the
|
|
3427
|
+
next items. It is shown and hidden with that item.
|
|
3428
|
+
|
|
3429
|
+
Pawn: \`menu_addtext\`, \`menu_addtext2\`
|
|
3430
|
+
`,
|
|
3431
|
+
ru: `
|
|
3432
|
+
Добавляет строку текста под последним добавленным пунктом — под заголовком,
|
|
3433
|
+
если пунктов ещё нет, — без номера: пояснение, цена, заголовок следующих
|
|
3434
|
+
пунктов. Она показывается и скрывается вместе с этим пунктом.
|
|
3435
|
+
|
|
3436
|
+
Pawn: \`menu_addtext\`, \`menu_addtext2\`
|
|
3437
|
+
`,
|
|
3438
|
+
},
|
|
3439
|
+
'Menu.addBlank': {
|
|
3440
|
+
en: `
|
|
3441
|
+
Adds an empty line under the last item added: \`addText("")\`.
|
|
3442
|
+
|
|
3443
|
+
Pawn: \`menu_addblank\`, \`menu_addblank2\`
|
|
3444
|
+
`,
|
|
3445
|
+
ru: `
|
|
3446
|
+
Добавляет пустую строку под последним добавленным пунктом: \`addText("")\`.
|
|
3447
|
+
|
|
3448
|
+
Pawn: \`menu_addblank\`, \`menu_addblank2\`
|
|
3449
|
+
`,
|
|
3450
|
+
},
|
|
3451
|
+
'Player.view': {
|
|
3452
|
+
en: `
|
|
3453
|
+
The entity he sees the world through - a camera, another player -
|
|
3454
|
+
or \`null\` for his own eyes: \`player.view = camera\`, \`player.view =
|
|
3455
|
+
null\` back.
|
|
3456
|
+
|
|
3457
|
+
Pawn: \`attach_view\`, \`engset_view\`, \`engfunc(EngFunc_SetView, ...)\`
|
|
3458
|
+
`,
|
|
3459
|
+
ru: `
|
|
3460
|
+
Сущность, через которую он видит мир, — камера, другой игрок, — или \`null\`
|
|
3461
|
+
для его собственных глаз: \`player.view = camera\`, \`player.view = null\` —
|
|
3462
|
+
обратно.
|
|
3463
|
+
|
|
3464
|
+
Pawn: \`attach_view\`, \`engset_view\`, \`engfunc(EngFunc_SetView, ...)\`
|
|
3465
|
+
`,
|
|
3466
|
+
},
|
|
3467
|
+
'RemoveAllItemsOptions': {
|
|
3468
|
+
en: `
|
|
3469
|
+
The options of \`player.removeAllItems\`: what goes with the weapons.
|
|
3470
|
+
`,
|
|
3471
|
+
ru: `
|
|
3472
|
+
Параметры \`player.removeAllItems\`: что уходит вместе с оружием.
|
|
3473
|
+
`,
|
|
3474
|
+
},
|
|
3475
|
+
'RemoveAllItemsOptions.suit': {
|
|
3476
|
+
en: `
|
|
3477
|
+
The suit too - his armour and the HUD; \`false\` when left out.
|
|
3478
|
+
`,
|
|
3479
|
+
ru: `
|
|
3480
|
+
И костюм — его броню и HUD; \`false\`, если не указано.
|
|
3481
|
+
`,
|
|
3482
|
+
},
|
|
3483
|
+
'Player.loss': {
|
|
3484
|
+
en: `
|
|
3485
|
+
The share of his packets lost, in percent, as the scoreboard's ping
|
|
3486
|
+
column has it.
|
|
3487
|
+
|
|
3488
|
+
Pawn: \`get_user_ping(id, ping, loss)\`
|
|
3489
|
+
`,
|
|
3490
|
+
ru: `
|
|
3491
|
+
Доля его потерянных пакетов в процентах, как в столбце пинга таблицы
|
|
3492
|
+
счёта.
|
|
3493
|
+
|
|
3494
|
+
Pawn: \`get_user_ping(id, ping, loss)\`
|
|
3495
|
+
`,
|
|
3496
|
+
},
|
|
3497
|
+
'Player.model': {
|
|
3498
|
+
en: `
|
|
3499
|
+
The model he wears, as his game knows it, e.g. \`"vip"\`, \`"gign"\`, or one
|
|
3500
|
+
of the server's own, \`models/player/<model>/<model>.mdl\`. Set, it
|
|
3501
|
+
stays through his respawns and team changes until \`resetModel()\` -
|
|
3502
|
+
\`setModel\` keeps its hitboxes too.
|
|
3503
|
+
|
|
3504
|
+
Pawn: \`cs_get_user_model\`, \`cs_set_user_model\`, \`rg_set_user_model\`
|
|
3505
|
+
`,
|
|
3506
|
+
ru: `
|
|
3507
|
+
Модель, которую он носит, как её знает его игра, например \`"vip"\`, \`"gign"\`,
|
|
3508
|
+
или своя модель сервера, \`models/player/<model>/<model>.mdl\`. Заданная,
|
|
3509
|
+
она остаётся при возрождениях и смене команды до \`resetModel()\`; \`setModel\`
|
|
3510
|
+
меняет ещё и хитбоксы.
|
|
3511
|
+
|
|
3512
|
+
Pawn: \`cs_get_user_model\`, \`cs_set_user_model\`, \`rg_set_user_model\`
|
|
3513
|
+
`,
|
|
3514
|
+
},
|
|
3515
|
+
'Player.setModel': {
|
|
3516
|
+
en: `
|
|
3517
|
+
Puts a model on him, as \`player.model = name\` does; \`{ hitboxes: true
|
|
3518
|
+
}\` takes the model's own hitboxes too, for a model shaped other than
|
|
3519
|
+
the game's - precached with \`server.precache("models/player/<name>/<name>.mdl")\`.
|
|
3520
|
+
|
|
3521
|
+
Pawn: \`cs_set_user_model(id, model, true)\`, \`rg_set_user_model(id, model, true)\`
|
|
3522
|
+
`,
|
|
3523
|
+
ru: `
|
|
3524
|
+
Надевает на него модель, как \`player.model = name\`; \`{ hitboxes: true }\`
|
|
3525
|
+
берёт ещё и хитбоксы самой модели — для модели другой формы, чем у игры,
|
|
3526
|
+
закэшированной через \`server.precache("models/player/<name>/<name>.mdl")\`.
|
|
3527
|
+
|
|
3528
|
+
Pawn: \`cs_set_user_model(id, model, true)\`, \`rg_set_user_model(id, model, true)\`
|
|
3529
|
+
`,
|
|
3530
|
+
},
|
|
3531
|
+
'Player.resetModel': {
|
|
3532
|
+
en: `
|
|
3533
|
+
Gives him back the model the game chose for him, its hitboxes too.
|
|
3534
|
+
|
|
3535
|
+
Pawn: \`cs_reset_user_model\`, \`rg_reset_user_model\`
|
|
3536
|
+
`,
|
|
3537
|
+
ru: `
|
|
3538
|
+
Возвращает ему модель, которую выбрала для него игра, и её хитбоксы.
|
|
3539
|
+
|
|
3540
|
+
Pawn: \`cs_reset_user_model\`, \`rg_reset_user_model\`
|
|
3541
|
+
`,
|
|
3542
|
+
},
|
|
3543
|
+
'ModelOptions': {
|
|
3544
|
+
en: `
|
|
3545
|
+
The options of \`player.setModel\`: what goes with the model.
|
|
3546
|
+
`,
|
|
3547
|
+
ru: `
|
|
3548
|
+
Параметры \`player.setModel\`: что идёт вместе с моделью.
|
|
3549
|
+
`,
|
|
3550
|
+
},
|
|
3551
|
+
'ModelOptions.hitboxes': {
|
|
3552
|
+
en: `
|
|
3553
|
+
The model's own hitboxes, not the game's: for a model shaped otherwise; \`false\` when left out.
|
|
3554
|
+
`,
|
|
3555
|
+
ru: `
|
|
3556
|
+
Хитбоксы самой модели, а не игры: для модели другой формы; \`false\`, если не указано.
|
|
3557
|
+
`,
|
|
3558
|
+
},
|
|
3559
|
+
'EntityStateEvent': {
|
|
3560
|
+
en: `
|
|
3561
|
+
The state of an entity a player can see, as he is sent it this frame:
|
|
3562
|
+
its fields as he will see them. Writing one changes what he sees, not the
|
|
3563
|
+
entity - \`event.renderFx = "glowShell"\` makes it glow for him alone - and
|
|
3564
|
+
\`preventDefault()\` hides it from him.
|
|
3565
|
+
|
|
3566
|
+
\`\`\`ts
|
|
3567
|
+
game.addEventListener("entityState", (event) => {
|
|
3568
|
+
if (event.player.team != "CT") event.preventDefault();
|
|
3569
|
+
}, { classname: "myplugin_marker" });
|
|
3570
|
+
\`\`\`
|
|
3571
|
+
|
|
3572
|
+
Pawn: \`register_forward(FM_AddToFullPack, ..., 1)\`, \`get_es\`, \`set_es\`
|
|
3573
|
+
`,
|
|
3574
|
+
ru: `
|
|
3575
|
+
Состояние сущности, которую видит игрок, как он получает его в этом кадре:
|
|
3576
|
+
её поля такими, какими он их увидит. Запись поля меняет то, что видит он, а
|
|
3577
|
+
не саму сущность, — \`event.renderFx = "glowShell"\` подсвечивает её только для
|
|
3578
|
+
него, — а \`preventDefault()\` скрывает её от него.
|
|
3579
|
+
|
|
3580
|
+
\`\`\`ts
|
|
3581
|
+
game.addEventListener("entityState", (event) => {
|
|
3582
|
+
if (event.player.team != "CT") event.preventDefault();
|
|
3583
|
+
}, { classname: "myplugin_marker" });
|
|
3584
|
+
\`\`\`
|
|
3585
|
+
|
|
3586
|
+
Pawn: \`register_forward(FM_AddToFullPack, ..., 1)\`, \`get_es\`, \`set_es\`
|
|
3587
|
+
`,
|
|
3588
|
+
},
|
|
3589
|
+
'EntityStateEvent.player': {
|
|
3590
|
+
en: `
|
|
3591
|
+
The player it is sent to.
|
|
3592
|
+
`,
|
|
3593
|
+
ru: `
|
|
3594
|
+
Игрок, которому оно отправляется.
|
|
3595
|
+
`,
|
|
3596
|
+
},
|
|
3597
|
+
'EntityStateEvent.entity': {
|
|
3598
|
+
en: `
|
|
3599
|
+
The entity it is about: a player, or another entity.
|
|
3600
|
+
`,
|
|
3601
|
+
ru: `
|
|
3602
|
+
Сущность, о которой оно: игрок или другая сущность.
|
|
3603
|
+
`,
|
|
3604
|
+
},
|
|
3605
|
+
'EntityStateEvent.origin': {
|
|
3606
|
+
en: `
|
|
3607
|
+
The entity's position as he sees it.
|
|
3608
|
+
|
|
3609
|
+
Pawn: \`ES_Origin\`
|
|
3610
|
+
`,
|
|
3611
|
+
ru: `
|
|
3612
|
+
Позиция сущности, какой он её видит.
|
|
3613
|
+
|
|
3614
|
+
Pawn: \`ES_Origin\`
|
|
3615
|
+
`,
|
|
3616
|
+
},
|
|
3617
|
+
'EntityStateEvent.angles': {
|
|
3618
|
+
en: `
|
|
3619
|
+
The entity's angles as he sees them.
|
|
3620
|
+
|
|
3621
|
+
Pawn: \`ES_Angles\`
|
|
3622
|
+
`,
|
|
3623
|
+
ru: `
|
|
3624
|
+
Углы сущности, какими он их видит.
|
|
3625
|
+
|
|
3626
|
+
Pawn: \`ES_Angles\`
|
|
3627
|
+
`,
|
|
3628
|
+
},
|
|
3629
|
+
'EntityStateEvent.renderMode': {
|
|
3630
|
+
en: `
|
|
3631
|
+
The entity's render mode as he sees it, as its \`renderMode\`.
|
|
3632
|
+
|
|
3633
|
+
Pawn: \`ES_RenderMode\`
|
|
3634
|
+
`,
|
|
3635
|
+
ru: `
|
|
3636
|
+
Режим отрисовки сущности, каким он его видит, как её \`renderMode\`.
|
|
3637
|
+
|
|
3638
|
+
Pawn: \`ES_RenderMode\`
|
|
3639
|
+
`,
|
|
3640
|
+
},
|
|
3641
|
+
'EntityStateEvent.renderAmount': {
|
|
3642
|
+
en: `
|
|
3643
|
+
The entity's opacity as he sees it, \`0\` to \`255\`, as its \`renderAmount\`.
|
|
3644
|
+
|
|
3645
|
+
Pawn: \`ES_RenderAmt\`
|
|
3646
|
+
`,
|
|
3647
|
+
ru: `
|
|
3648
|
+
Непрозрачность сущности, какой он её видит, от \`0\` до \`255\`, как её \`renderAmount\`.
|
|
3649
|
+
|
|
3650
|
+
Pawn: \`ES_RenderAmt\`
|
|
3651
|
+
`,
|
|
3652
|
+
},
|
|
3653
|
+
'EntityStateEvent.renderColor': {
|
|
3654
|
+
en: `
|
|
3655
|
+
The entity's render colour as he sees it, red, green, blue, as its \`renderColor\`.
|
|
3656
|
+
|
|
3657
|
+
Pawn: \`ES_RenderColor\`
|
|
3658
|
+
`,
|
|
3659
|
+
ru: `
|
|
3660
|
+
Цвет отрисовки сущности, каким он его видит, — красный, зелёный, синий, как её \`renderColor\`.
|
|
3661
|
+
|
|
3662
|
+
Pawn: \`ES_RenderColor\`
|
|
3663
|
+
`,
|
|
3664
|
+
},
|
|
3665
|
+
'EntityStateEvent.renderFx': {
|
|
3666
|
+
en: `
|
|
3667
|
+
The entity's render effect as he sees it, as its \`renderFx\`: \`"glowShell"\` a shell around it.
|
|
3668
|
+
|
|
3669
|
+
Pawn: \`ES_RenderFx\`
|
|
3670
|
+
`,
|
|
3671
|
+
ru: `
|
|
3672
|
+
Эффект отрисовки сущности, каким он его видит, как её \`renderFx\`: \`"glowShell"\` — оболочка вокруг неё.
|
|
3673
|
+
|
|
3674
|
+
Pawn: \`ES_RenderFx\`
|
|
3675
|
+
`,
|
|
3676
|
+
},
|
|
3677
|
+
'EntityStateEvent.effects': {
|
|
3678
|
+
en: `
|
|
3679
|
+
The entity's effects as he sees them, as its \`effects\`.
|
|
3680
|
+
|
|
3681
|
+
Pawn: \`ES_Effects\`
|
|
3682
|
+
`,
|
|
3683
|
+
ru: `
|
|
3684
|
+
Эффекты сущности, какими он их видит, как её \`effects\`.
|
|
3685
|
+
|
|
3686
|
+
Pawn: \`ES_Effects\`
|
|
3687
|
+
`,
|
|
3688
|
+
},
|
|
3689
|
+
'EntityStateEvent.modelIndex': {
|
|
3690
|
+
en: `
|
|
3691
|
+
The model he sees, by its precache index.
|
|
3692
|
+
|
|
3693
|
+
Pawn: \`ES_ModelIndex\`
|
|
3694
|
+
`,
|
|
3695
|
+
ru: `
|
|
3696
|
+
Модель, которую он видит, по её индексу прекэша.
|
|
3697
|
+
|
|
3698
|
+
Pawn: \`ES_ModelIndex\`
|
|
3699
|
+
`,
|
|
3700
|
+
},
|
|
3701
|
+
'EntityStateEvent.body': {
|
|
3702
|
+
en: `
|
|
3703
|
+
The model's body part he sees.
|
|
3704
|
+
|
|
3705
|
+
Pawn: \`ES_Body\`
|
|
3706
|
+
`,
|
|
3707
|
+
ru: `
|
|
3708
|
+
Часть тела модели, которую он видит.
|
|
3709
|
+
|
|
3710
|
+
Pawn: \`ES_Body\`
|
|
3711
|
+
`,
|
|
3712
|
+
},
|
|
3713
|
+
'EntityStateEvent.skin': {
|
|
3714
|
+
en: `
|
|
3715
|
+
The model's skin he sees.
|
|
3716
|
+
|
|
3717
|
+
Pawn: \`ES_Skin\`
|
|
3718
|
+
`,
|
|
3719
|
+
ru: `
|
|
3720
|
+
Скин модели, который он видит.
|
|
3721
|
+
|
|
3722
|
+
Pawn: \`ES_Skin\`
|
|
3723
|
+
`,
|
|
3724
|
+
},
|
|
3725
|
+
'EntityStateEvent.preventDefault': {
|
|
3726
|
+
en: `
|
|
3727
|
+
Hides the entity from him this frame.
|
|
3728
|
+
`,
|
|
3729
|
+
ru: `
|
|
3730
|
+
Скрывает от него сущность в этом кадре.
|
|
3731
|
+
`,
|
|
3732
|
+
},
|
|
3733
|
+
'GameListenerOptions': {
|
|
3734
|
+
en: `
|
|
3735
|
+
The third argument of \`game.addEventListener\`: \`true\` stands for
|
|
3736
|
+
\`{ post: true }\`; a \`"touch"\` listener names the classes it is about.
|
|
3737
|
+
`,
|
|
3738
|
+
ru: `
|
|
3739
|
+
Третий аргумент \`game.addEventListener\`: \`true\` означает
|
|
3740
|
+
\`{ post: true }\`; обработчик \`"touch"\` называет классы, о которых речь.
|
|
3741
|
+
`,
|
|
3742
|
+
},
|
|
3743
|
+
'GameListenerOptions.post': {
|
|
3744
|
+
en: `Runs the listener after the game has acted, with its answer in \`event.result\`.`,
|
|
3745
|
+
ru: `Вызывает обработчик после того, как игра сделала своё, с её ответом в \`event.result\`.`,
|
|
3746
|
+
},
|
|
3747
|
+
'GameListenerOptions.classname': {
|
|
3748
|
+
en: `The class of entity the event is listened for on, e.g. \`"weapon_knife"\`: only its entities reach the listener.`,
|
|
3749
|
+
ru: `Класс сущностей, на котором слушается событие, например \`"weapon_knife"\`: до обработчика доходят только его сущности.`,
|
|
3750
|
+
},
|
|
3751
|
+
'UseType': {
|
|
3752
|
+
en: `
|
|
3753
|
+
The way one entity uses another - a button pressed, a door opened - one of
|
|
3754
|
+
\`"off"\`, \`"on"\`, \`"set"\` or \`"toggle"\`.
|
|
3755
|
+
|
|
3756
|
+
Pawn: \`USE_OFF\`, \`USE_ON\`, \`USE_SET\`, \`USE_TOGGLE\`
|
|
3757
|
+
`,
|
|
3758
|
+
ru: `
|
|
3759
|
+
Способ, которым одна сущность использует другую, — нажимает кнопку, открывает
|
|
3760
|
+
дверь, — одно из \`"off"\`, \`"on"\`, \`"set"\` или \`"toggle"\`.
|
|
3761
|
+
|
|
3762
|
+
Pawn: \`USE_OFF\`, \`USE_ON\`, \`USE_SET\`, \`USE_TOGGLE\`
|
|
3763
|
+
`,
|
|
3764
|
+
},
|
|
3765
|
+
'ActionOptions': {
|
|
3766
|
+
en: `The options of an entity's action such as \`weapon.deploy()\` or \`entity.heal(...)\`.`,
|
|
3767
|
+
ru: `Настройки действия сущности, такого как \`weapon.deploy()\` или \`entity.heal(...)\`.`,
|
|
3768
|
+
},
|
|
3769
|
+
'ActionOptions.hooks': {
|
|
3770
|
+
en: `
|
|
3771
|
+
Whether the game's listeners run too - this plugin's and every other's,
|
|
3772
|
+
Pawn ones included; \`true\` by default. \`false\` runs the game's own
|
|
3773
|
+
function alone.
|
|
3774
|
+
|
|
3775
|
+
Pawn: \`ExecuteHamB\`, \`ExecuteHam\`
|
|
3776
|
+
`,
|
|
3777
|
+
ru: `
|
|
3778
|
+
Вызываются ли и обработчики игры — этого плагина и всех остальных,
|
|
3779
|
+
Pawn-плагинов тоже; по умолчанию \`true\`. \`false\` выполняет только
|
|
3780
|
+
собственную функцию игры.
|
|
3781
|
+
|
|
3782
|
+
Pawn: \`ExecuteHamB\`, \`ExecuteHam\`
|
|
3783
|
+
`,
|
|
3784
|
+
},
|
|
3785
|
+
'GameListenerOptions.toucher': {
|
|
3786
|
+
en: `For \`"touch"\`: the class of the entity that moves into the other, e.g. \`"player"\`; left out, any.`,
|
|
3787
|
+
ru: `Для \`"touch"\`: класс сущности, которая входит в другую, например \`"player"\`; если не задан — любой.`,
|
|
3788
|
+
},
|
|
3789
|
+
'GameListenerOptions.touched': {
|
|
3790
|
+
en: `For \`"touch"\`: the class of the entity touched, e.g. \`"func_door"\`; left out, any.`,
|
|
3791
|
+
ru: `Для \`"touch"\`: класс сущности, которой коснулись, например \`"func_door"\`; если не задан — любой.`,
|
|
3792
|
+
},
|
|
3793
|
+
'TouchEvent': {
|
|
3794
|
+
en: `
|
|
3795
|
+
Two entities touched: \`toucher\` moved into \`touched\`. Only the classes a
|
|
3796
|
+
listener asked for reach it:
|
|
3797
|
+
|
|
3798
|
+
\`\`\`ts
|
|
3799
|
+
game.addEventListener("touch", onTouch, { toucher: "player", touched: "player" });
|
|
3800
|
+
\`\`\`
|
|
3801
|
+
|
|
3802
|
+
Pawn: \`register_touch\`
|
|
3803
|
+
`,
|
|
3804
|
+
ru: `
|
|
3805
|
+
Две сущности коснулись: \`toucher\` вошла в \`touched\`. До обработчика
|
|
3806
|
+
доходят только классы, которые он просил:
|
|
3807
|
+
|
|
3808
|
+
\`\`\`ts
|
|
3809
|
+
game.addEventListener("touch", onTouch, { toucher: "player", touched: "player" });
|
|
3810
|
+
\`\`\`
|
|
3811
|
+
|
|
3812
|
+
Pawn: \`register_touch\`
|
|
3813
|
+
`,
|
|
3814
|
+
},
|
|
3815
|
+
'TouchEvent.toucher': {
|
|
3816
|
+
en: `The entity that moved into the other.`,
|
|
3817
|
+
ru: `Сущность, которая вошла в другую.`,
|
|
3818
|
+
},
|
|
3819
|
+
'TouchEvent.touched': {
|
|
3820
|
+
en: `The entity it touched.`,
|
|
3821
|
+
ru: `Сущность, которой она коснулась.`,
|
|
3822
|
+
},
|
|
3823
|
+
'TouchEvent.preventDefault': {
|
|
3824
|
+
en: `Blocks the touch: the game does not act on it.`,
|
|
3825
|
+
ru: `Блокирует касание: игра на него не реагирует.`,
|
|
3826
|
+
},
|
|
3827
|
+
'RoundWinner': {
|
|
3828
|
+
en: `The winner of a round, one of \`"TERRORIST"\`, \`"CT"\`, \`"draw"\`, or \`"none"\` - a restart without a winner.`,
|
|
3829
|
+
ru: `Победитель раунда, одно из \`"TERRORIST"\`, \`"CT"\`, \`"draw"\` или \`"none"\` — рестарт без победителя.`,
|
|
3830
|
+
},
|
|
3831
|
+
'EndRoundOptions': {
|
|
3832
|
+
en: `The options of \`game.endRound\`; only \`winner\` is required.`,
|
|
3833
|
+
ru: `Настройки \`game.endRound\`; обязателен только \`winner\`.`,
|
|
3834
|
+
},
|
|
3835
|
+
'EndRoundOptions.winner': {
|
|
3836
|
+
en: `The round's winner, one of \`"TERRORIST"\`, \`"CT"\`, \`"draw"\`, or \`"none"\` - a restart.`,
|
|
3837
|
+
ru: `Победитель раунда, одно из \`"TERRORIST"\`, \`"CT"\`, \`"draw"\` или \`"none"\` — рестарт.`,
|
|
3838
|
+
},
|
|
3839
|
+
'EndRoundOptions.delay': {
|
|
3840
|
+
en: `Seconds until the next round starts; \`5\` by default.`,
|
|
3841
|
+
ru: `Секунд до начала следующего раунда; по умолчанию \`5\`.`,
|
|
3842
|
+
},
|
|
3843
|
+
'EndRoundOptions.message': {
|
|
3844
|
+
en: `The message in the middle of the screen, or a game text such as \`"#Terrorists_Win"\`; \`"default"\` is the usual one for this winner, \`""\` none.`,
|
|
3845
|
+
ru: `Сообщение посередине экрана или текст игры вроде \`"#Terrorists_Win"\`; \`"default"\` — обычное для этого победителя, \`""\` — без сообщения.`,
|
|
3846
|
+
},
|
|
3847
|
+
'EndRoundOptions.sound': {
|
|
3848
|
+
en: `The sound, a radio phrase such as \`"terwin"\`; \`"default"\` is the usual one for this winner, \`""\` none.`,
|
|
3849
|
+
ru: `Звук — радиофраза вроде \`"terwin"\`; \`"default"\` — обычный для этого победителя, \`""\` — без звука.`,
|
|
3850
|
+
},
|
|
3851
|
+
'EndRoundOptions.dispatch': {
|
|
3852
|
+
en: `
|
|
3853
|
+
\`true\` to tell the \`roundEnd\` listeners of every plugin, Pawn ones too, as when
|
|
3854
|
+
the game ends a round itself. \`false\` by default: a \`roundEnd\` listener that
|
|
3855
|
+
ends the round would call itself.
|
|
3856
|
+
|
|
3857
|
+
Pawn: \`rg_round_end(..., trigger)\`
|
|
3858
|
+
`,
|
|
3859
|
+
ru: `
|
|
3860
|
+
\`true\` — оповестить обработчики \`roundEnd\` всех плагинов, в том числе
|
|
3861
|
+
Pawn-плагинов, как когда игра сама завершает раунд. По умолчанию \`false\`:
|
|
3862
|
+
обработчик \`roundEnd\`, который завершает раунд, вызвал бы сам себя.
|
|
3863
|
+
|
|
3864
|
+
Pawn: \`rg_round_end(..., trigger)\`
|
|
3865
|
+
`,
|
|
3866
|
+
},
|
|
3867
|
+
'game': {
|
|
3868
|
+
en: `The game the plugin runs in: its events (reapi hookchains and Ham Sandwich functions), its rules' fields and \`endRound\`.`,
|
|
3869
|
+
ru: `Игра, в которой работает плагин: её события (hookchain'ы reapi и функции Ham Sandwich), поля её правил и \`endRound\`.`,
|
|
3870
|
+
},
|
|
3871
|
+
'Variant': {
|
|
3872
|
+
en: `
|
|
3873
|
+
The places a message can show: \`Variant.chat\`, \`center\`, \`console\`, \`notify\`.
|
|
3874
|
+
A plain string works the same - \`"center"\`; an unknown name goes to chat.
|
|
3875
|
+
|
|
3876
|
+
Pawn: \`print_chat\`, \`print_center\`, \`print_console\`, \`print_notify\`
|
|
3877
|
+
`,
|
|
3878
|
+
ru: `
|
|
3879
|
+
Места, где показывается сообщение: \`Variant.chat\`, \`center\`, \`console\`,
|
|
3880
|
+
\`notify\`. Обычная строка работает так же — \`"center"\`; незнакомое имя уходит
|
|
3881
|
+
в чат.
|
|
3882
|
+
|
|
3883
|
+
Pawn: \`print_chat\`, \`print_center\`, \`print_console\`, \`print_notify\`
|
|
3884
|
+
`,
|
|
3885
|
+
},
|
|
3886
|
+
'Variant.chat': {
|
|
3887
|
+
en: `A line in the player's chat.`,
|
|
3888
|
+
ru: `Строка в чате игрока.`,
|
|
2430
3889
|
},
|
|
2431
3890
|
'Variant.center': {
|
|
2432
3891
|
en: `Text in the middle of the player's screen.`,
|
|
@@ -2444,21 +3903,9 @@ export default {
|
|
|
2444
3903
|
en: `The place a message shows, as a string: one of \`"chat"\`, \`"center"\`, \`"console"\` or \`"notify"\`.`,
|
|
2445
3904
|
ru: `Место показа сообщения строкой, одно из \`"chat"\`, \`"center"\`, \`"console"\` или \`"notify"\`.`,
|
|
2446
3905
|
},
|
|
2447
|
-
'Target': {
|
|
2448
|
-
en: `A message's recipient together with its place: \`{ id: 0, variant: "center" }\`. \`id\` is a player's \`id\`, \`0\` for everyone.`,
|
|
2449
|
-
ru: `Получатель сообщения вместе с местом показа: \`{ id: 0, variant: "center" }\`. \`id\` — \`id\` игрока, \`0\` — все.`,
|
|
2450
|
-
},
|
|
2451
|
-
'Target.id': {
|
|
2452
|
-
en: `The recipient's player \`id\`; \`0\` for every player.`,
|
|
2453
|
-
ru: `\`id\` игрока-получателя; \`0\` — все игроки.`,
|
|
2454
|
-
},
|
|
2455
|
-
'Target.variant': {
|
|
2456
|
-
en: `The place the message shows, one of \`"chat"\` (the default), \`"center"\`, \`"console"\` or \`"notify"\`.`,
|
|
2457
|
-
ru: `Место показа сообщения, одно из \`"chat"\` (по умолчанию), \`"center"\`, \`"console"\` или \`"notify"\`.`,
|
|
2458
|
-
},
|
|
2459
3906
|
'paint': {
|
|
2460
|
-
en: `Turns a chat line's colour tags (\`!g\`, \`!r\`, ...) into the colour codes the client reads, and records in \`swapTeam\` which team colour the line needs. \`print\` calls it; exported for tests.`,
|
|
2461
|
-
ru: `Переводит цветовые метки строки чата (\`!g\`, \`!r\`, ...) в коды цвета для клиента и записывает в \`swapTeam\`, какой цвет команды нужен строке. Её вызывает \`print\`; экспортирована для тестов.`,
|
|
3907
|
+
en: `Turns a chat line's colour tags (\`!g\`, \`!r\`, ...) into the colour codes the client reads, and records in \`swapTeam\` which team colour the line needs. \`player.print\` calls it; exported for tests.`,
|
|
3908
|
+
ru: `Переводит цветовые метки строки чата (\`!g\`, \`!r\`, ...) в коды цвета для клиента и записывает в \`swapTeam\`, какой цвет команды нужен строке. Её вызывает \`player.print\`; экспортирована для тестов.`,
|
|
2462
3909
|
},
|
|
2463
3910
|
'menuColors': {
|
|
2464
3911
|
en: `Turns a menu's colour tags (\`!y\`, \`!R\`, ...) into the codes the game draws, and drops the ones only chat has (\`!g\`, \`!b\`, \`!t\`) and the game's own codes written into the text (\`\\y\`); any other \`!\` stays. \`showMenu\` calls it, and a module hands its result to Pawn.`,
|
|
@@ -2477,58 +3924,8 @@ export default {
|
|
|
2477
3924
|
`,
|
|
2478
3925
|
},
|
|
2479
3926
|
'swapTeam': {
|
|
2480
|
-
en: `The team colour the last \`paint()\` chose for the line, one of \`"TERRORIST"\` (red), \`"CT"\` (blue), \`"SPECTATOR"\` (grey), or \`""\` - the reader's own team colour
|
|
2481
|
-
ru: `Цвет команды, который последний вызов \`paint()\` выбрал для строки, — одно из \`"TERRORIST"\` (красный), \`"CT"\` (синий), \`"SPECTATOR"\` (серый) или \`""\` — цвет команды
|
|
2482
|
-
},
|
|
2483
|
-
'print': {
|
|
2484
|
-
en: `
|
|
2485
|
-
Sends a message to a player, or to every player (\`0\`).
|
|
2486
|
-
|
|
2487
|
-
\`\`\`ts
|
|
2488
|
-
print(player, "Health restored!"); // the player's chat
|
|
2489
|
-
print(0, "Round starts in 5 seconds"); // everyone's chat
|
|
2490
|
-
print(player, "Health restored!", "center"); // the middle of the player's screen
|
|
2491
|
-
print({ id: 0, variant: "center" }, "Go!"); // the middle of everyone's screen
|
|
2492
|
-
\`\`\`
|
|
2493
|
-
|
|
2494
|
-
The first argument is a player, a player's \`id\`, or \`0\` for everyone. The third
|
|
2495
|
-
is where the message shows, one of \`"chat"\` (the default), \`"center"\` - the middle of
|
|
2496
|
-
the screen, \`"console"\` - the player's console, \`"notify"\` - the console too; CS
|
|
2497
|
-
shows it on screen only with \`developer 1\`.
|
|
2498
|
-
|
|
2499
|
-
Colour tags work in chat only, and a letter is the same colour as in a menu:
|
|
2500
|
-
- \`!y\` yellow (the usual chat colour), \`!g\` green
|
|
2501
|
-
- \`!r\` red, \`!b\` blue, \`!d\` grey, \`!t\` the colour of the reader's team
|
|
2502
|
-
|
|
2503
|
-
A menu's own tags (\`!w\`, \`!R\`) are dropped from a chat line. Red, blue,
|
|
2504
|
-
grey and \`!t\` share the message's one team colour: the first one used wins.
|
|
2505
|
-
|
|
2506
|
-
Pawn: \`client_print\`, \`client_print_color\`
|
|
2507
|
-
`,
|
|
2508
|
-
ru: `
|
|
2509
|
-
Отправляет сообщение игроку или всем игрокам (\`0\`).
|
|
2510
|
-
|
|
2511
|
-
\`\`\`ts
|
|
2512
|
-
print(player, "Health restored!"); // чат игрока
|
|
2513
|
-
print(0, "Round starts in 5 seconds"); // чат всех игроков
|
|
2514
|
-
print(player, "Health restored!", "center"); // посередине экрана игрока
|
|
2515
|
-
print({ id: 0, variant: "center" }, "Go!"); // посередине экрана у всех
|
|
2516
|
-
\`\`\`
|
|
2517
|
-
|
|
2518
|
-
Первый аргумент — игрок, \`id\` игрока или \`0\` — все. Третий — где показать
|
|
2519
|
-
сообщение, одно из \`"chat"\` (по умолчанию), \`"center"\` — посередине экрана, \`"console"\` —
|
|
2520
|
-
в консоли игрока, \`"notify"\` — тоже в консоли; на экране CS показывает его
|
|
2521
|
-
только при \`developer 1\`.
|
|
2522
|
-
|
|
2523
|
-
Цветовые метки работают только в чате, и буква — тот же цвет, что в меню:
|
|
2524
|
-
- \`!y\` жёлтый (обычный цвет чата), \`!g\` зелёный
|
|
2525
|
-
- \`!r\` красный, \`!b\` синий, \`!d\` серый, \`!t\` цвет команды читающего
|
|
2526
|
-
|
|
2527
|
-
Метки только для меню (\`!w\`, \`!R\`) из строки чата убираются. Красный, синий,
|
|
2528
|
-
серый и \`!t\` делят один цвет команды на сообщение: побеждает первый.
|
|
2529
|
-
|
|
2530
|
-
Pawn: \`client_print\`, \`client_print_color\`
|
|
2531
|
-
`,
|
|
3927
|
+
en: `The team colour the last \`paint()\` chose for the line, one of \`"TERRORIST"\` (red), \`"CT"\` (blue), \`"SPECTATOR"\` (grey), or \`""\` - the reader's own team colour.`,
|
|
3928
|
+
ru: `Цвет команды, который последний вызов \`paint()\` выбрал для строки, — одно из \`"TERRORIST"\` (красный), \`"CT"\` (синий), \`"SPECTATOR"\` (серый) или \`""\` — цвет команды читающего.`,
|
|
2532
3929
|
},
|
|
2533
3930
|
'lang': {
|
|
2534
3931
|
en: `
|
|
@@ -2537,7 +3934,7 @@ export default {
|
|
|
2537
3934
|
|
|
2538
3935
|
\`\`\`ts
|
|
2539
3936
|
lang.load("myplugin"); // data/lang/myplugin.txt
|
|
2540
|
-
print(
|
|
3937
|
+
player.print(lang.translate(player, "MYPLUGIN_WELCOME", [player.name]));
|
|
2541
3938
|
\`\`\`
|
|
2542
3939
|
|
|
2543
3940
|
Pawn: \`register_dictionary\`, \`LookupLangKey\`
|
|
@@ -2548,7 +3945,7 @@ export default {
|
|
|
2548
3945
|
|
|
2549
3946
|
\`\`\`ts
|
|
2550
3947
|
lang.load("myplugin"); // data/lang/myplugin.txt
|
|
2551
|
-
print(
|
|
3948
|
+
player.print(lang.translate(player, "MYPLUGIN_WELCOME", [player.name]));
|
|
2552
3949
|
\`\`\`
|
|
2553
3950
|
|
|
2554
3951
|
Pawn: \`register_dictionary\`, \`LookupLangKey\`
|
|
@@ -2695,7 +4092,7 @@ export default {
|
|
|
2695
4092
|
as in the browser:
|
|
2696
4093
|
|
|
2697
4094
|
\`\`\`ts
|
|
2698
|
-
const handle = setTimeout(() => print(
|
|
4095
|
+
const handle = setTimeout(() => player.print("Welcome!"), 2000);
|
|
2699
4096
|
clearTimeout(handle);
|
|
2700
4097
|
\`\`\`
|
|
2701
4098
|
|
|
@@ -2708,7 +4105,7 @@ export default {
|
|
|
2708
4105
|
таймера, как в браузере:
|
|
2709
4106
|
|
|
2710
4107
|
\`\`\`ts
|
|
2711
|
-
const handle = setTimeout(() => print(
|
|
4108
|
+
const handle = setTimeout(() => player.print("Welcome!"), 2000);
|
|
2712
4109
|
clearTimeout(handle);
|
|
2713
4110
|
\`\`\`
|
|
2714
4111
|
|
|
@@ -2934,28 +4331,60 @@ export default {
|
|
|
2934
4331
|
},
|
|
2935
4332
|
'hook': {
|
|
2936
4333
|
en: `
|
|
2937
|
-
|
|
2938
|
-
level under \`game.addEventListener\`, which is what a plugin uses.
|
|
4334
|
+
Hooks a ReGameDLL or ReHLDS hookchain with a raw handler of four numbers -
|
|
4335
|
+
the low level under \`game.addEventListener\`, which is what a plugin uses.
|
|
4336
|
+
The handler reads the arguments past the fourth with \`arg()\`, and blocks the
|
|
4337
|
+
game's function with \`handled()\`.
|
|
2939
4338
|
|
|
2940
4339
|
The name is reapi's, without the class where it is not needed:
|
|
2941
|
-
\`"restart_round"\`, \`"player_spawn"\`; the editor completes them.
|
|
2942
|
-
|
|
2943
|
-
|
|
4340
|
+
\`"restart_round"\`, \`"player_spawn"\`; the editor completes them. Returns the
|
|
4341
|
+
hook's handle for \`unhook\`, or \`0\` when the server has not the chain's API -
|
|
4342
|
+
ReGameDLL for the game's chains, ReHLDS for the engine's.
|
|
2944
4343
|
|
|
2945
|
-
Pawn: \`RegisterHookChain
|
|
4344
|
+
Pawn: \`RegisterHookChain\`
|
|
2946
4345
|
`,
|
|
2947
4346
|
ru: `
|
|
2948
|
-
|
|
2949
|
-
уровень под \`game.addEventListener\`, которым пользуется
|
|
4347
|
+
Перехватывает хукчейн ReGameDLL или ReHLDS сырым обработчиком из четырёх
|
|
4348
|
+
чисел — нижний уровень под \`game.addEventListener\`, которым пользуется
|
|
4349
|
+
плагин. Аргументы после четвёртого обработчик читает через \`arg()\`, а
|
|
4350
|
+
функцию игры блокирует через \`handled()\`.
|
|
2950
4351
|
|
|
2951
4352
|
Имя — из reapi, без класса там, где он не нужен: \`"restart_round"\`,
|
|
2952
|
-
\`"player_spawn"\`; редактор их дополняет.
|
|
2953
|
-
|
|
2954
|
-
|
|
4353
|
+
\`"player_spawn"\`; редактор их дополняет. Возвращает дескриптор хука для
|
|
4354
|
+
\`unhook\` или \`0\`, если на сервере нет API этого хукчейна — ReGameDLL для
|
|
4355
|
+
хукчейнов игры, ReHLDS для хукчейнов движка.
|
|
4356
|
+
|
|
4357
|
+
Pawn: \`RegisterHookChain\`
|
|
4358
|
+
`,
|
|
4359
|
+
},
|
|
4360
|
+
'unhook': {
|
|
4361
|
+
en: `
|
|
4362
|
+
Takes off a hook \`hook\` made: its handler is not called again.
|
|
4363
|
+
|
|
4364
|
+
Pawn: \`DisableHookChain\`
|
|
4365
|
+
`,
|
|
4366
|
+
ru: `
|
|
4367
|
+
Снимает хук, который поставил \`hook\`: его обработчик больше не вызывается.
|
|
2955
4368
|
|
|
2956
|
-
Pawn: \`
|
|
4369
|
+
Pawn: \`DisableHookChain\`
|
|
2957
4370
|
`,
|
|
2958
4371
|
},
|
|
4372
|
+
'__hookOn': {
|
|
4373
|
+
en: `@hidden Switches a hook the hood made off and on (as/hooks.ts).`,
|
|
4374
|
+
ru: `@hidden Выключает и включает хук, поставленный капотом (as/hooks.ts).`,
|
|
4375
|
+
},
|
|
4376
|
+
'__chainSet': {
|
|
4377
|
+
en: `@hidden Writes an argument of the hooked call that is running; \`-1\` is its answer.`,
|
|
4378
|
+
ru: `@hidden Записывает аргумент идущего перехваченного вызова; \`-1\` — его ответ.`,
|
|
4379
|
+
},
|
|
4380
|
+
'__chainSetText': {
|
|
4381
|
+
en: `@hidden Writes a text argument of the hooked call that is running; \`-1\` is its answer.`,
|
|
4382
|
+
ru: `@hidden Записывает текстовый аргумент идущего перехваченного вызова; \`-1\` — его ответ.`,
|
|
4383
|
+
},
|
|
4384
|
+
'__hasChains': {
|
|
4385
|
+
en: `@hidden Whether the server has the hookchains of ReHLDS (\`rehlds\`) or of ReGameDLL.`,
|
|
4386
|
+
ru: `@hidden Есть ли на сервере хукчейны ReHLDS (\`rehlds\`) или ReGameDLL.`,
|
|
4387
|
+
},
|
|
2959
4388
|
|
|
2960
4389
|
'PluginInfo': {
|
|
2961
4390
|
en: `The plugin's name, version, author and description, given to \`plugin({ ... })\`; \`amxts_plugins\` in the server console lists them.`,
|
|
@@ -3200,9 +4629,9 @@ export default {
|
|
|
3200
4629
|
\`\`\`
|
|
3201
4630
|
|
|
3202
4631
|
The handler's parameters take the forward's types; a named function may
|
|
3203
|
-
take fewer of them. A forward
|
|
3204
|
-
|
|
3205
|
-
|
|
4632
|
+
take fewer of them. A forward a Pawn plugin makes reaches it after the
|
|
4633
|
+
Pawn plugins' handlers; one emitted from TypeScript reaches every
|
|
4634
|
+
subscriber.
|
|
3206
4635
|
`,
|
|
3207
4636
|
ru: `
|
|
3208
4637
|
Вызывает \`handler\` при каждом срабатывании форварда — из этого плагина,
|
|
@@ -3214,9 +4643,9 @@ export default {
|
|
|
3214
4643
|
\`\`\`
|
|
3215
4644
|
|
|
3216
4645
|
Параметры обработчика получают типы форварда; именованная функция может
|
|
3217
|
-
принимать их меньше. Форвард, созданный Pawn-плагином, доходит до
|
|
3218
|
-
|
|
3219
|
-
|
|
4646
|
+
принимать их меньше. Форвард, созданный Pawn-плагином, доходит до него
|
|
4647
|
+
после обработчиков Pawn-плагинов; отправленный из TypeScript доходит до
|
|
4648
|
+
всех подписчиков.
|
|
3220
4649
|
`,
|
|
3221
4650
|
},
|
|
3222
4651
|
'Forward.unsubscribe': {
|
|
@@ -3253,61 +4682,131 @@ export default {
|
|
|
3253
4682
|
},
|
|
3254
4683
|
'Storage': {
|
|
3255
4684
|
en: `
|
|
3256
|
-
A key-to-
|
|
3257
|
-
restart.
|
|
4685
|
+
A key-to-value store on disk: a Map that survives a map change and a
|
|
4686
|
+
server restart.
|
|
3258
4687
|
|
|
3259
4688
|
\`\`\`ts
|
|
3260
|
-
const
|
|
3261
|
-
const
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
demos.delete(auth);
|
|
4689
|
+
const points = new Storage<number>("myplugin_points");
|
|
4690
|
+
const mine = points.get(player.steamId) ?? 0; // undefined when there is none
|
|
4691
|
+
points.set(player.steamId, mine + 1);
|
|
4692
|
+
points.delete(player.steamId);
|
|
3265
4693
|
\`\`\`
|
|
3266
4694
|
|
|
3267
|
-
The
|
|
3268
|
-
|
|
3269
|
-
in
|
|
4695
|
+
The type argument is what it holds - text by default, a number, a boolean,
|
|
4696
|
+
an object of an interface - kept as JSON. The file is
|
|
4697
|
+
\`amxts/storage/<name>.json\` in AMX Mod X's data folder, written within a
|
|
4698
|
+
second of a change; a name with no file yet takes what AMX Mod X's \`nvault\`
|
|
4699
|
+
kept under that name, once.
|
|
3270
4700
|
|
|
3271
4701
|
Pawn: \`nvault_open\`, \`nvault_get\`, \`nvault_set\`, \`nvault_remove\`
|
|
3272
4702
|
`,
|
|
3273
4703
|
ru: `
|
|
3274
|
-
Хранилище
|
|
4704
|
+
Хранилище значений по ключу на диске: Map, который переживает смену карты и
|
|
3275
4705
|
перезапуск сервера.
|
|
3276
4706
|
|
|
3277
4707
|
\`\`\`ts
|
|
3278
|
-
const
|
|
3279
|
-
const
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
demos.delete(auth);
|
|
4708
|
+
const points = new Storage<number>("myplugin_points");
|
|
4709
|
+
const mine = points.get(player.steamId) ?? 0; // undefined, если ничего нет
|
|
4710
|
+
points.set(player.steamId, mine + 1);
|
|
4711
|
+
points.delete(player.steamId);
|
|
3283
4712
|
\`\`\`
|
|
3284
4713
|
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
4714
|
+
Аргумент типа — то, что в нём лежит: текст по умолчанию, число, булево
|
|
4715
|
+
значение, объект интерфейса; хранится как JSON. Файл —
|
|
4716
|
+
\`amxts/storage/<name>.json\` в папке данных AMX Mod X, записывается не позже
|
|
4717
|
+
чем через секунду после изменения; имя без файла один раз берёт то, что под
|
|
4718
|
+
этим именем хранил \`nvault\` AMX Mod X.
|
|
3288
4719
|
|
|
3289
4720
|
Pawn: \`nvault_open\`, \`nvault_get\`, \`nvault_set\`, \`nvault_remove\`
|
|
3290
4721
|
`,
|
|
3291
4722
|
},
|
|
3292
4723
|
'Storage.name': {
|
|
3293
|
-
en: `
|
|
3294
|
-
|
|
4724
|
+
en: `
|
|
4725
|
+
The storage's name, which is also its file's name.
|
|
4726
|
+
`,
|
|
4727
|
+
ru: `
|
|
4728
|
+
Имя хранилища — оно же имя его файла.
|
|
4729
|
+
`,
|
|
3295
4730
|
},
|
|
3296
4731
|
'Storage.get': {
|
|
3297
|
-
en: `
|
|
3298
|
-
|
|
4732
|
+
en: `
|
|
4733
|
+
The value under \`key\`, or \`undefined\` when there is none, as
|
|
4734
|
+
\`Map.get\` gives: \`points.get(player.steamId) ?? 0\`.
|
|
4735
|
+
|
|
4736
|
+
Pawn: \`nvault_get\`, \`nvault_lookup\`
|
|
4737
|
+
`,
|
|
4738
|
+
ru: `
|
|
4739
|
+
Значение по ключу \`key\` или \`undefined\`, если его нет, как у \`Map.get\`:
|
|
4740
|
+
\`points.get(player.steamId) ?? 0\`.
|
|
4741
|
+
|
|
4742
|
+
Pawn: \`nvault_get\`, \`nvault_lookup\`
|
|
4743
|
+
`,
|
|
3299
4744
|
},
|
|
3300
4745
|
'Storage.set': {
|
|
3301
|
-
en: `
|
|
3302
|
-
|
|
4746
|
+
en: `
|
|
4747
|
+
Puts \`value\` under \`key\`, replacing what was there; it is on disk
|
|
4748
|
+
within a second.
|
|
4749
|
+
|
|
4750
|
+
Pawn: \`nvault_set\`
|
|
4751
|
+
`,
|
|
4752
|
+
ru: `
|
|
4753
|
+
Записывает \`value\` по ключу \`key\`, заменяя прежнее; на диске оно не позже
|
|
4754
|
+
чем через секунду.
|
|
4755
|
+
|
|
4756
|
+
Pawn: \`nvault_set\`
|
|
4757
|
+
`,
|
|
3303
4758
|
},
|
|
3304
4759
|
'Storage.has': {
|
|
3305
|
-
en:
|
|
3306
|
-
|
|
4760
|
+
en: `
|
|
4761
|
+
\`true\` when there is a value under \`key\`.
|
|
4762
|
+
`,
|
|
4763
|
+
ru: `
|
|
4764
|
+
\`true\`, если по ключу \`key\` есть значение.
|
|
4765
|
+
`,
|
|
3307
4766
|
},
|
|
3308
4767
|
'Storage.delete': {
|
|
3309
|
-
en: `
|
|
3310
|
-
|
|
4768
|
+
en: `
|
|
4769
|
+
Removes \`key\` and its value: \`true\` when it was there.
|
|
4770
|
+
|
|
4771
|
+
Pawn: \`nvault_remove\`
|
|
4772
|
+
`,
|
|
4773
|
+
ru: `
|
|
4774
|
+
Удаляет ключ \`key\` вместе со значением: \`true\`, если он был.
|
|
4775
|
+
|
|
4776
|
+
Pawn: \`nvault_remove\`
|
|
4777
|
+
`,
|
|
4778
|
+
},
|
|
4779
|
+
'Storage.keys': {
|
|
4780
|
+
en: `
|
|
4781
|
+
Every key, in their order as text.
|
|
4782
|
+
`,
|
|
4783
|
+
ru: `
|
|
4784
|
+
Все ключи в их порядке как текста.
|
|
4785
|
+
`,
|
|
4786
|
+
},
|
|
4787
|
+
'Storage.size': {
|
|
4788
|
+
en: `
|
|
4789
|
+
The number of keys it holds.
|
|
4790
|
+
`,
|
|
4791
|
+
ru: `
|
|
4792
|
+
Число ключей в нём.
|
|
4793
|
+
`,
|
|
4794
|
+
},
|
|
4795
|
+
'Storage.prune': {
|
|
4796
|
+
en: `
|
|
4797
|
+
Removes what was last set before \`olderThan\`:
|
|
4798
|
+
\`points.prune(new Date(Date.now() - 30 * 24 * 3600 * 1000))\` - a month
|
|
4799
|
+
untouched. How many keys went.
|
|
4800
|
+
|
|
4801
|
+
Pawn: \`nvault_prune\`
|
|
4802
|
+
`,
|
|
4803
|
+
ru: `
|
|
4804
|
+
Удаляет то, что последний раз записывали раньше \`olderThan\`:
|
|
4805
|
+
\`points.prune(new Date(Date.now() - 30 * 24 * 3600 * 1000))\` — месяц без
|
|
4806
|
+
изменений. Сколько ключей ушло.
|
|
4807
|
+
|
|
4808
|
+
Pawn: \`nvault_prune\`
|
|
4809
|
+
`,
|
|
3311
4810
|
},
|
|
3312
4811
|
'PawnFunction': {
|
|
3313
4812
|
en: `
|
|
@@ -3527,36 +5026,36 @@ export default {
|
|
|
3527
5026
|
},
|
|
3528
5027
|
'MenuOptions.backText': {
|
|
3529
5028
|
en: `
|
|
3530
|
-
The Back item's text;
|
|
5029
|
+
The Back item's text; \`"Back"\` by default.
|
|
3531
5030
|
|
|
3532
5031
|
Pawn: \`MPROP_BACKNAME\`
|
|
3533
5032
|
`,
|
|
3534
5033
|
ru: `
|
|
3535
|
-
Текст пункта «Назад»; по умолчанию \`"Back"
|
|
5034
|
+
Текст пункта «Назад»; по умолчанию \`"Back"\`.
|
|
3536
5035
|
|
|
3537
5036
|
Pawn: \`MPROP_BACKNAME\`
|
|
3538
5037
|
`,
|
|
3539
5038
|
},
|
|
3540
5039
|
'MenuOptions.nextText': {
|
|
3541
5040
|
en: `
|
|
3542
|
-
The More item's text;
|
|
5041
|
+
The More item's text; \`"More"\` by default.
|
|
3543
5042
|
|
|
3544
5043
|
Pawn: \`MPROP_NEXTNAME\`
|
|
3545
5044
|
`,
|
|
3546
5045
|
ru: `
|
|
3547
|
-
Текст пункта «Дальше»; по умолчанию \`"More"
|
|
5046
|
+
Текст пункта «Дальше»; по умолчанию \`"More"\`.
|
|
3548
5047
|
|
|
3549
5048
|
Pawn: \`MPROP_NEXTNAME\`
|
|
3550
5049
|
`,
|
|
3551
5050
|
},
|
|
3552
5051
|
'MenuOptions.exitText': {
|
|
3553
5052
|
en: `
|
|
3554
|
-
The Exit item's text;
|
|
5053
|
+
The Exit item's text; \`"Exit"\` by default.
|
|
3555
5054
|
|
|
3556
5055
|
Pawn: \`MPROP_EXITNAME\`
|
|
3557
5056
|
`,
|
|
3558
5057
|
ru: `
|
|
3559
|
-
Текст пункта «Выход»; по умолчанию \`"Exit"
|
|
5058
|
+
Текст пункта «Выход»; по умолчанию \`"Exit"\`.
|
|
3560
5059
|
|
|
3561
5060
|
Pawn: \`MPROP_EXITNAME\`
|
|
3562
5061
|
`,
|
|
@@ -3611,9 +5110,9 @@ export default {
|
|
|
3611
5110
|
},
|
|
3612
5111
|
'Menu': {
|
|
3613
5112
|
en: `
|
|
3614
|
-
A menu
|
|
3615
|
-
|
|
3616
|
-
its functions get beside the player.
|
|
5113
|
+
A menu: items a player picks with the number keys, on pages with Back and
|
|
5114
|
+
More, and Exit, drawn as AMX Mod X draws its own. \`Data\` is what it
|
|
5115
|
+
is shown with, which its functions get beside the player.
|
|
3617
5116
|
|
|
3618
5117
|
\`\`\`ts
|
|
3619
5118
|
interface ShopData {
|
|
@@ -3638,9 +5137,10 @@ export default {
|
|
|
3638
5137
|
Pawn: \`menu_create\`, \`menu_setprop\`
|
|
3639
5138
|
`,
|
|
3640
5139
|
ru: `
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
показывают; это получают его функции рядом с
|
|
5140
|
+
Меню: пункты, которые игрок выбирает цифровыми клавишами, на страницах с
|
|
5141
|
+
«Назад» и «Дальше», и «Выход», нарисованное так, как AMX Mod X рисует свои.
|
|
5142
|
+
\`Data\` — то, с чем его показывают; это получают его функции рядом с
|
|
5143
|
+
игроком.
|
|
3644
5144
|
|
|
3645
5145
|
\`\`\`ts
|
|
3646
5146
|
interface ShopData {
|
|
@@ -3771,6 +5271,10 @@ export default {
|
|
|
3771
5271
|
en: `Whether it is a command of the server console rather than a player's.`,
|
|
3772
5272
|
ru: `Команда ли это консоли сервера, а не игрока.`,
|
|
3773
5273
|
},
|
|
5274
|
+
'CommandInfo.aliases': {
|
|
5275
|
+
en: `The command's other names, as \`addCommand(["/cp", "cp"], ...)\` gave them; \`[]\` for none.`,
|
|
5276
|
+
ru: `Другие имена команды, как их дал \`addCommand(["/cp", "cp"], ...)\`; \`[]\`, если их нет.`,
|
|
5277
|
+
},
|
|
3774
5278
|
'Server.commands': {
|
|
3775
5279
|
en: `
|
|
3776
5280
|
The commands this plugin added, players' and the server's, in the order
|
|
@@ -3780,7 +5284,7 @@ export default {
|
|
|
3780
5284
|
\`\`\`ts
|
|
3781
5285
|
server.addCommand("/help", ({ player }) => {
|
|
3782
5286
|
for (const command of server.commands) {
|
|
3783
|
-
if (command.access == null || player.access.includes(command.access)) print(
|
|
5287
|
+
if (command.access == null || player.access.includes(command.access)) player.print(command.usage);
|
|
3784
5288
|
}
|
|
3785
5289
|
});
|
|
3786
5290
|
\`\`\`
|
|
@@ -3793,7 +5297,7 @@ export default {
|
|
|
3793
5297
|
\`\`\`ts
|
|
3794
5298
|
server.addCommand("/help", ({ player }) => {
|
|
3795
5299
|
for (const command of server.commands) {
|
|
3796
|
-
if (command.access == null || player.access.includes(command.access)) print(
|
|
5300
|
+
if (command.access == null || player.access.includes(command.access)) player.print(command.usage);
|
|
3797
5301
|
}
|
|
3798
5302
|
});
|
|
3799
5303
|
\`\`\`
|