@amxts/core 0.1.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.
Files changed (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/README.ru.md +162 -0
  4. package/amxmodx/base/include/amxconst.inc +594 -0
  5. package/amxmodx/base/include/amxmisc.inc +902 -0
  6. package/amxmodx/base/include/amxmodx.inc +3447 -0
  7. package/amxmodx/base/include/amxmodx_version.inc +20 -0
  8. package/amxmodx/base/include/cellarray.inc +525 -0
  9. package/amxmodx/base/include/cellstack.inc +166 -0
  10. package/amxmodx/base/include/celltrie.inc +412 -0
  11. package/amxmodx/base/include/core.inc +202 -0
  12. package/amxmodx/base/include/csstats.inc +298 -0
  13. package/amxmodx/base/include/csstats_const.inc +29 -0
  14. package/amxmodx/base/include/cstrike.inc +1287 -0
  15. package/amxmodx/base/include/cstrike_const.inc +521 -0
  16. package/amxmodx/base/include/csx.inc +259 -0
  17. package/amxmodx/base/include/cvars.inc +547 -0
  18. package/amxmodx/base/include/datapack.inc +161 -0
  19. package/amxmodx/base/include/dbi.inc +154 -0
  20. package/amxmodx/base/include/dodconst.inc +152 -0
  21. package/amxmodx/base/include/dodfun.inc +152 -0
  22. package/amxmodx/base/include/dodstats.inc +69 -0
  23. package/amxmodx/base/include/dodx.inc +161 -0
  24. package/amxmodx/base/include/engine.inc +1343 -0
  25. package/amxmodx/base/include/engine_const.inc +310 -0
  26. package/amxmodx/base/include/engine_stocks.inc +248 -0
  27. package/amxmodx/base/include/esf.inc +70 -0
  28. package/amxmodx/base/include/esf_const.inc +74 -0
  29. package/amxmodx/base/include/fakemeta.inc +1127 -0
  30. package/amxmodx/base/include/fakemeta_const.inc +793 -0
  31. package/amxmodx/base/include/fakemeta_stocks.inc +395 -0
  32. package/amxmodx/base/include/fakemeta_util.inc +882 -0
  33. package/amxmodx/base/include/file.inc +666 -0
  34. package/amxmodx/base/include/float.inc +422 -0
  35. package/amxmodx/base/include/fun.inc +333 -0
  36. package/amxmodx/base/include/gameconfig.inc +93 -0
  37. package/amxmodx/base/include/geoip.inc +264 -0
  38. package/amxmodx/base/include/ham_const.inc +4352 -0
  39. package/amxmodx/base/include/hamsandwich.inc +439 -0
  40. package/amxmodx/base/include/hlsdk_const.inc +808 -0
  41. package/amxmodx/base/include/json.inc +777 -0
  42. package/amxmodx/base/include/lang.inc +119 -0
  43. package/amxmodx/base/include/message_const.inc +1130 -0
  44. package/amxmodx/base/include/message_stocks.inc +161 -0
  45. package/amxmodx/base/include/messages.inc +604 -0
  46. package/amxmodx/base/include/newmenus.inc +387 -0
  47. package/amxmodx/base/include/ns.inc +754 -0
  48. package/amxmodx/base/include/ns_const.inc +196 -0
  49. package/amxmodx/base/include/nvault.inc +154 -0
  50. package/amxmodx/base/include/regex.inc +348 -0
  51. package/amxmodx/base/include/sockets.inc +183 -0
  52. package/amxmodx/base/include/sorting.inc +107 -0
  53. package/amxmodx/base/include/sqlx.inc +582 -0
  54. package/amxmodx/base/include/string.inc +786 -0
  55. package/amxmodx/base/include/string_const.inc +156 -0
  56. package/amxmodx/base/include/string_stocks.inc +325 -0
  57. package/amxmodx/base/include/textparse_ini.inc +214 -0
  58. package/amxmodx/base/include/textparse_smc.inc +261 -0
  59. package/amxmodx/base/include/tfcconst.inc +84 -0
  60. package/amxmodx/base/include/tfcstats.inc +62 -0
  61. package/amxmodx/base/include/tfcx.inc +148 -0
  62. package/amxmodx/base/include/time.inc +118 -0
  63. package/amxmodx/base/include/tsconst.inc +154 -0
  64. package/amxmodx/base/include/tsfun.inc +198 -0
  65. package/amxmodx/base/include/tsstats.inc +65 -0
  66. package/amxmodx/base/include/tsx.inc +88 -0
  67. package/amxmodx/base/include/vault.inc +60 -0
  68. package/amxmodx/base/include/vector.inc +131 -0
  69. package/amxmodx/base/include/xs.inc +1570 -0
  70. package/as/amxts.d.ts +153 -0
  71. package/as/constants.ts +4730 -0
  72. package/as/effects.ts +1449 -0
  73. package/as/entities.ts +5482 -0
  74. package/as/events.ts +3054 -0
  75. package/as/facade.ts +4639 -0
  76. package/as/flags.ts +299 -0
  77. package/as/fs.ts +287 -0
  78. package/as/hooks.ts +18536 -0
  79. package/as/kit.ts +25 -0
  80. package/as/lib/check.ts +86 -0
  81. package/as/modules/http.ts +184 -0
  82. package/as/natives.ts +11845 -0
  83. package/as/os.ts +30 -0
  84. package/as/promise.ts +1392 -0
  85. package/as/promise.types.d.ts +82 -0
  86. package/as/remote.ts +288 -0
  87. package/as/tsconfig.json +22 -0
  88. package/as/vector.ts +65 -0
  89. package/bin/amxts.mjs +10 -0
  90. package/includes/menu_core.inc +355 -0
  91. package/includes/order.txt +54 -0
  92. package/includes/sources.json +27 -0
  93. package/includes/universal_config.inc +355 -0
  94. package/lint/oxlint-plugin.mjs +77 -0
  95. package/node_modules/assemblyscript/LICENSE +201 -0
  96. package/node_modules/assemblyscript/NOTICE +93 -0
  97. package/node_modules/assemblyscript/package.json +63 -0
  98. package/node_modules/assemblyscript/std/README.md +6 -0
  99. package/node_modules/assemblyscript/std/assembly/array.ts +526 -0
  100. package/node_modules/assemblyscript/std/assembly/arraybuffer.ts +77 -0
  101. package/node_modules/assemblyscript/std/assembly/atomics.ts +127 -0
  102. package/node_modules/assemblyscript/std/assembly/bindings/asyncify.ts +16 -0
  103. package/node_modules/assemblyscript/std/assembly/bindings/dom.ts +291 -0
  104. package/node_modules/assemblyscript/std/assembly/bindings/node.ts +6 -0
  105. package/node_modules/assemblyscript/std/assembly/builtins.ts +2631 -0
  106. package/node_modules/assemblyscript/std/assembly/compat.ts +2 -0
  107. package/node_modules/assemblyscript/std/assembly/console.ts +42 -0
  108. package/node_modules/assemblyscript/std/assembly/crypto.ts +9 -0
  109. package/node_modules/assemblyscript/std/assembly/dataview.ts +181 -0
  110. package/node_modules/assemblyscript/std/assembly/date.ts +373 -0
  111. package/node_modules/assemblyscript/std/assembly/diagnostics.ts +11 -0
  112. package/node_modules/assemblyscript/std/assembly/error.ts +44 -0
  113. package/node_modules/assemblyscript/std/assembly/function.ts +38 -0
  114. package/node_modules/assemblyscript/std/assembly/index.d.ts +2822 -0
  115. package/node_modules/assemblyscript/std/assembly/iterator.ts +35 -0
  116. package/node_modules/assemblyscript/std/assembly/map.ts +260 -0
  117. package/node_modules/assemblyscript/std/assembly/math.ts +3289 -0
  118. package/node_modules/assemblyscript/std/assembly/memory.ts +123 -0
  119. package/node_modules/assemblyscript/std/assembly/number.ts +388 -0
  120. package/node_modules/assemblyscript/std/assembly/object.ts +36 -0
  121. package/node_modules/assemblyscript/std/assembly/performance.ts +9 -0
  122. package/node_modules/assemblyscript/std/assembly/polyfills.ts +27 -0
  123. package/node_modules/assemblyscript/std/assembly/process.ts +50 -0
  124. package/node_modules/assemblyscript/std/assembly/reference.ts +48 -0
  125. package/node_modules/assemblyscript/std/assembly/regexp.ts +12 -0
  126. package/node_modules/assemblyscript/std/assembly/rt/README.md +83 -0
  127. package/node_modules/assemblyscript/std/assembly/rt/common.ts +81 -0
  128. package/node_modules/assemblyscript/std/assembly/rt/index-incremental.ts +2 -0
  129. package/node_modules/assemblyscript/std/assembly/rt/index-minimal.ts +2 -0
  130. package/node_modules/assemblyscript/std/assembly/rt/index-stub.ts +1 -0
  131. package/node_modules/assemblyscript/std/assembly/rt/index.d.ts +37 -0
  132. package/node_modules/assemblyscript/std/assembly/rt/itcms.ts +419 -0
  133. package/node_modules/assemblyscript/std/assembly/rt/rtrace.ts +15 -0
  134. package/node_modules/assemblyscript/std/assembly/rt/stub.ts +133 -0
  135. package/node_modules/assemblyscript/std/assembly/rt/tcms.ts +254 -0
  136. package/node_modules/assemblyscript/std/assembly/rt/tlsf.ts +592 -0
  137. package/node_modules/assemblyscript/std/assembly/rt.ts +87 -0
  138. package/node_modules/assemblyscript/std/assembly/set.ts +220 -0
  139. package/node_modules/assemblyscript/std/assembly/shared/feature.ts +65 -0
  140. package/node_modules/assemblyscript/std/assembly/shared/runtime.ts +11 -0
  141. package/node_modules/assemblyscript/std/assembly/shared/target.ts +11 -0
  142. package/node_modules/assemblyscript/std/assembly/shared/tsconfig.json +11 -0
  143. package/node_modules/assemblyscript/std/assembly/shared/typeinfo.ts +72 -0
  144. package/node_modules/assemblyscript/std/assembly/staticarray.ts +401 -0
  145. package/node_modules/assemblyscript/std/assembly/string.ts +847 -0
  146. package/node_modules/assemblyscript/std/assembly/symbol.ts +114 -0
  147. package/node_modules/assemblyscript/std/assembly/table.ts +16 -0
  148. package/node_modules/assemblyscript/std/assembly/tsconfig.json +6 -0
  149. package/node_modules/assemblyscript/std/assembly/typedarray.ts +1945 -0
  150. package/node_modules/assemblyscript/std/assembly/uri.ts +17 -0
  151. package/node_modules/assemblyscript/std/assembly/util/bytes.ts +107 -0
  152. package/node_modules/assemblyscript/std/assembly/util/casemap.ts +497 -0
  153. package/node_modules/assemblyscript/std/assembly/util/error.ts +54 -0
  154. package/node_modules/assemblyscript/std/assembly/util/hash.ts +117 -0
  155. package/node_modules/assemblyscript/std/assembly/util/math.ts +1922 -0
  156. package/node_modules/assemblyscript/std/assembly/util/memory.ts +290 -0
  157. package/node_modules/assemblyscript/std/assembly/util/number.ts +873 -0
  158. package/node_modules/assemblyscript/std/assembly/util/sort.ts +313 -0
  159. package/node_modules/assemblyscript/std/assembly/util/string.ts +1202 -0
  160. package/node_modules/assemblyscript/std/assembly/util/uri.ts +275 -0
  161. package/node_modules/assemblyscript/std/assembly/vector.ts +4 -0
  162. package/node_modules/assemblyscript/std/assembly.json +16 -0
  163. package/node_modules/assemblyscript/std/portable/index.d.ts +462 -0
  164. package/node_modules/assemblyscript/std/portable/index.js +416 -0
  165. package/node_modules/assemblyscript/std/portable.json +11 -0
  166. package/node_modules/assemblyscript/std/types/assembly/index.d.ts +1 -0
  167. package/node_modules/assemblyscript/std/types/assembly/package.json +3 -0
  168. package/node_modules/assemblyscript/std/types/portable/index.d.ts +1 -0
  169. package/node_modules/assemblyscript/std/types/portable/package.json +3 -0
  170. package/node_modules/assemblyscript/tsconfig-base.json +13 -0
  171. package/package.json +112 -0
  172. package/runtime/deps/assemblyscript/LICENSE +201 -0
  173. package/runtime/deps/assemblyscript/NOTICE +93 -0
  174. package/runtime/deps/assemblyscript/bin/asc.js +35 -0
  175. package/runtime/deps/assemblyscript/dist/asc.js +25035 -0
  176. package/runtime/deps/assemblyscript/dist/assemblyscript.js +337 -0
  177. package/runtime/deps/assemblyscript/node_modules/binaryen/LICENSE +201 -0
  178. package/runtime/deps/assemblyscript/node_modules/binaryen/index.js +28905 -0
  179. package/runtime/deps/assemblyscript/node_modules/binaryen/package.json +50 -0
  180. package/runtime/deps/assemblyscript/node_modules/long/LICENSE +202 -0
  181. package/runtime/deps/assemblyscript/node_modules/long/index.js +1581 -0
  182. package/runtime/deps/assemblyscript/node_modules/long/package.json +58 -0
  183. package/runtime/deps/assemblyscript/package.json +114 -0
  184. package/runtime/host/amxts.inc +85 -0
  185. package/runtime/licenses/AMXX-LICENSE.txt +34 -0
  186. package/runtime/licenses/AssemblyScript-LICENSE +201 -0
  187. package/runtime/licenses/AssemblyScript-NOTICE +93 -0
  188. package/runtime/licenses/Binaryen-LICENSE +201 -0
  189. package/runtime/licenses/Bun-LICENSE.md +84 -0
  190. package/runtime/licenses/GPL-3.0.txt +674 -0
  191. package/runtime/licenses/LLVM-LICENSE.TXT +279 -0
  192. package/runtime/licenses/README.md +25 -0
  193. package/runtime/licenses/WAMR-LICENSE +219 -0
  194. package/runtime/natives.txt +1095 -0
  195. package/runtime/patches/README.md +59 -0
  196. package/runtime/patches/assemblyscript-0.28.20-amxts.patch +14174 -0
  197. package/runtime/patches/wamr-2.4.5-amxts.patch +364 -0
  198. package/scripts/apply-docs.ts +508 -0
  199. package/scripts/asc.ts +27 -0
  200. package/scripts/auto-imports.ts +258 -0
  201. package/scripts/build-wasm.ts +595 -0
  202. package/scripts/check.ts +93 -0
  203. package/scripts/compile-cache.ts +179 -0
  204. package/scripts/compile.ts +401 -0
  205. package/scripts/docker-server.ts +73 -0
  206. package/scripts/docs/as/amxts.ts +210 -0
  207. package/scripts/docs/as/effects.ts +1684 -0
  208. package/scripts/docs/as/facade.ts +3302 -0
  209. package/scripts/docs/as/fs.ts +173 -0
  210. package/scripts/docs/as/lib/check.ts +68 -0
  211. package/scripts/docs/as/modules/http.ts +66 -0
  212. package/scripts/docs/as/os.ts +16 -0
  213. package/scripts/docs/as/promise.ts +132 -0
  214. package/scripts/docs/as/promise.types.ts +63 -0
  215. package/scripts/docs/as/vector.ts +48 -0
  216. package/scripts/docs/entities.ts +2338 -0
  217. package/scripts/docs/events.ts +245 -0
  218. package/scripts/docs/game.ts +497 -0
  219. package/scripts/docs/messages.ts +148 -0
  220. package/scripts/file-contents.ts +74 -0
  221. package/scripts/includes.ts +134 -0
  222. package/scripts/player-fields.ts +866 -0
  223. package/scripts/plugin-cache.ts +92 -0
  224. package/scripts/plugin-natives.ts +1157 -0
  225. package/scripts/prebuilt.ts +268 -0
  226. package/scripts/prepare.ts +134 -0
  227. package/scripts/project.ts +973 -0
  228. package/scripts/run.ts +28 -0
  229. package/scripts/shared-modules.ts +906 -0
  230. package/scripts/system.ts +33 -0
  231. package/scripts/tracked-fs.ts +115 -0
  232. package/scripts/typed-configs.ts +788 -0
  233. package/scripts/ui.ts +77 -0
  234. package/src/cli-api.mjs +175 -0
  235. package/src/parser/include-parser.ts +506 -0
  236. package/src/system.mjs +155 -0
  237. package/src/testing/compile-cache.ts +31 -0
  238. package/src/testing/compile.ts +222 -0
  239. package/src/testing/coroutines.ts +191 -0
  240. package/src/testing/index.ts +39 -0
  241. package/src/testing/kits.ts +55 -0
  242. package/src/testing/memory.ts +125 -0
  243. package/src/testing/natives.ts +925 -0
  244. package/src/testing/server.ts +1874 -0
  245. package/src/testing/setup.ts +63 -0
  246. package/src/testing/tables.ts +139 -0
  247. package/src/types.ts +51 -0
@@ -0,0 +1,497 @@
1
+ // Our own words for the game's events - the reapi hookchains and Ham Sandwich
2
+ // functions a plugin listens to with game.addEventListener - in both languages
3
+ // the project speaks.
4
+ //
5
+ // scripts/generate-hooks.ts writes these into as/hooks.ts as the tooltips an
6
+ // editor shows on the event name, the event class and its fields. The
7
+ // language is AMXTS_DOCS_LANG in .env ("en" by default, or "ru"). A chain
8
+ // missing here falls back to English, then to the Description line reapi's
9
+ // include carries - so every chain has a tooltip, and the list improves one
10
+ // entry at a time.
11
+ //
12
+ // Written for someone who knows TypeScript and not reapi: what happened, and
13
+ // what returning a value does. Keyed by the event's name as game takes it;
14
+ // fields by their name on the event object.
15
+ import type { Text } from './events';
16
+
17
+ export interface GameDoc {
18
+ summary: Text;
19
+ fields?: Record<string, Text>;
20
+ }
21
+
22
+ const player: Text = { en: `The player the event is about.`, ru: `Игрок, о котором событие.` };
23
+ // Vector arguments are read only: reapi takes a vector back only as itself.
24
+ const grenadeStart: Text = { en: `The point the grenade is thrown from, a Vector. Read only.`, ru: `Точка, откуда летит граната, Vector. Только чтение.` };
25
+ const thrower: Text = { en: `The player who threw the grenade.`, ru: `Игрок, который бросил гранату.` };
26
+ const grenadeVelocity: Text = { en: `The grenade's velocity, a Vector. Read only.`, ru: `Скорость гранаты, Vector. Только чтение.` };
27
+
28
+ // The entity a Ham Sandwich event of one class is about.
29
+ const theWeapon: Text = { en: `The weapon the event is about - one of the class \`classname\` names.`, ru: `Оружие, о котором событие, — одного класса, названного в \`classname\`.` };
30
+ const theEntity: Text = { en: `The entity the event is about - one of the class \`classname\` names.`, ru: `Сущность, о которой событие, — одного класса, названного в \`classname\`.` };
31
+
32
+ export const GAME: Record<string, GameDoc> = {
33
+ touch: {
34
+ summary: {
35
+ en: `An entity touched another: \`event.toucher\` moved into \`event.touched\`. Pass the classes it is about as the third argument - \`{ toucher: "player", touched: "player" }\` - so only those touches reach the plugin; \`event.preventDefault()\` blocks the touch.`,
36
+ ru: `Сущность коснулась другой: \`event.toucher\` вошла в \`event.touched\`. Передайте классы, о которых речь, третьим аргументом — \`{ toucher: "player", touched: "player" }\`, — и до плагина дойдут только эти касания; \`event.preventDefault()\` блокирует касание.`,
37
+ },
38
+ },
39
+ takeDamage: {
40
+ summary: {
41
+ en: `A player is about to take damage. Assign \`event.damage\` to change how much, or call \`preventDefault()\` to take none.`,
42
+ ru: `Игрок сейчас получит урон. Чтобы изменить сколько, присвойте \`event.damage\`; чтобы урона не было, вызовите \`preventDefault()\`.`,
43
+ },
44
+ fields: {
45
+ player: { en: `The player who is hurt.`, ru: `Игрок, которого ранят.` },
46
+ inflictor: { en: `The source of the damage: a weapon, a grenade, the world.`, ru: `Источник урона: оружие, граната, мир.` },
47
+ attacker: { en: `The player who does the damage.`, ru: `Игрок, который наносит урон.` },
48
+ damage: { en: `The damage, before armour. Assign to change it.`, ru: `Урон до брони. Присвойте, чтобы изменить.` },
49
+ damageType: { en: `The kinds of damage, e.g. \`"Fall"\`, \`"Bullet"\`, \`"Burn"\`.`, ru: `Виды урона, например \`"Fall"\`, \`"Bullet"\`, \`"Burn"\`.` },
50
+ },
51
+ },
52
+ flPlayerFallDamage: {
53
+ summary: {
54
+ en: `The game works out how much a fall hurts. In a post listener \`event.result\` is that number; return a number to replace it.`,
55
+ ru: `Игра считает урон от падения. В post-обработчике \`event.result\` — это число; верните своё, чтобы заменить его.`,
56
+ },
57
+ fields: { player: { en: `The player who fell.`, ru: `Игрок, который упал.` } },
58
+ },
59
+ canPlayerHearPlayer: {
60
+ summary: {
61
+ en: `The game asks if one player hears another on voice. Return \`true\` or \`false\` to decide.`,
62
+ ru: `Игра спрашивает, слышит ли один игрок другого в голосовом чате. Верните \`true\` или \`false\`, чтобы решить.`,
63
+ },
64
+ fields: {
65
+ listener: { en: `The player who would hear.`, ru: `Игрок, который слушает.` },
66
+ sender: { en: `The player who is talking.`, ru: `Игрок, который говорит.` },
67
+ },
68
+ },
69
+ playerSpawn: {
70
+ summary: { en: `A player spawned.`, ru: `Игрок появился на карте (спавн).` },
71
+ fields: { player },
72
+ },
73
+ playerKilled: {
74
+ summary: { en: `A player was killed.`, ru: `Игрока убили.` },
75
+ fields: {
76
+ victim: { en: `The player who died.`, ru: `Игрок, который погиб.` },
77
+ killer: { en: `The player who killed the victim.`, ru: `Игрок, который убил жертву.` },
78
+ inflictor: { en: `The source of the kill: a weapon, a grenade, the world.`, ru: `Орудие убийства: оружие, граната, мир.` },
79
+ },
80
+ },
81
+ traceAttack: {
82
+ summary: {
83
+ en: `A shot or a knife hit a player, before the damage. \`preventDefault()\` makes it miss.`,
84
+ ru: `Выстрел или нож попал в игрока, ещё до урона. \`preventDefault()\` — и попадания не было.`,
85
+ },
86
+ fields: {
87
+ dir: { en: `The shot's direction, a Vector. Read only.`, ru: `Направление выстрела, Vector. Только чтение.` },
88
+ },
89
+ },
90
+ throwSmokeGrenade: {
91
+ summary: {
92
+ en: `A player threw a smoke grenade. In a post listener \`event.result\` is the grenade.`,
93
+ ru: `Игрок бросил дымовую гранату. В post-обработчике \`event.result\` — сама граната.`,
94
+ },
95
+ fields: { player: thrower, start: grenadeStart, velocity: grenadeVelocity },
96
+ },
97
+ throwHeGrenade: {
98
+ summary: {
99
+ en: `A player threw an HE grenade. In a post listener \`event.result\` is the grenade.`,
100
+ ru: `Игрок бросил осколочную гранату. В post-обработчике \`event.result\` — сама граната.`,
101
+ },
102
+ fields: { player: thrower, start: grenadeStart, velocity: grenadeVelocity },
103
+ },
104
+ throwFlashbang: {
105
+ summary: {
106
+ en: `A player threw a flashbang. In a post listener \`event.result\` is the grenade.`,
107
+ ru: `Игрок бросил флешку. В post-обработчике \`event.result\` — сама граната.`,
108
+ },
109
+ fields: { player: thrower },
110
+ },
111
+ explodeSmokeGrenade: {
112
+ summary: { en: `A smoke grenade is going off.`, ru: `Дымовая граната взрывается.` },
113
+ },
114
+ preThink: {
115
+ summary: {
116
+ en: `A player's frame, before he moves: every frame for every player, hundreds of times a second. Keep the listener tiny.`,
117
+ ru: `Кадр игрока, до его движения: каждый кадр для каждого игрока, сотни раз в секунду. Обработчик должен быть очень лёгким.`,
118
+ },
119
+ fields: { player },
120
+ },
121
+ resetMaxSpeed: {
122
+ summary: {
123
+ en: `The game resets a player's speed, on spawn and on every weapon switch. \`preventDefault()\` keeps the speed you set.`,
124
+ ru: `Игра сбрасывает скорость игрока — при спавне и при каждой смене оружия. \`preventDefault()\` оставит скорость, которую вы задали.`,
125
+ },
126
+ fields: { player },
127
+ },
128
+ giveDefaultItems: {
129
+ summary: {
130
+ en: `The game hands a spawned player the default weapons. \`preventDefault()\` gives nothing.`,
131
+ ru: `Игра выдаёт появившемуся игроку стандартное оружие. \`preventDefault()\` — и не выдаст ничего.`,
132
+ },
133
+ fields: { player },
134
+ },
135
+ dropPlayerItem: {
136
+ summary: {
137
+ en: `A player drops a weapon. In a post listener \`event.result\` is the weapon box on the ground.`,
138
+ ru: `Игрок выбрасывает оружие. В post-обработчике \`event.result\` — коробка с оружием на земле.`,
139
+ },
140
+ fields: { player, itemName: { en: `The weapon's class name, e.g. \`"weapon_ak47"\`.`, ru: `Имя класса оружия, например \`"weapon_ak47"\`.` } },
141
+ },
142
+ roundEnd: {
143
+ summary: { en: `The round is ending.`, ru: `Раунд заканчивается.` },
144
+ fields: {
145
+ winner: {
146
+ en: `The round's winner, one of \`"TERRORIST"\`, \`"CT"\`, \`"draw"\` or \`"none"\`, as \`game.endRound\` takes it. Assign to change it.`,
147
+ ru: `Победитель раунда, одно из \`"TERRORIST"\`, \`"CT"\`, \`"draw"\` или \`"none"\`, как у \`game.endRound\`. Присвойте, чтобы изменить.`,
148
+ },
149
+ reason: {
150
+ en: `The reason the round ended, e.g. \`"terroristsWin"\`, \`"ctsWin"\`, \`"bombDefused"\`, \`"targetSaved"\`, \`"gameRestart"\`; \`"unknown"\` for a number the game does not name.`,
151
+ ru: `Причина конца раунда, например \`"terroristsWin"\`, \`"ctsWin"\`, \`"bombDefused"\`, \`"targetSaved"\`, \`"gameRestart"\`; \`"unknown"\` — номер, которому у игры нет имени.`,
152
+ },
153
+ delay: { en: `The seconds until the next round.`, ru: `Секунды до следующего раунда.` },
154
+ },
155
+ },
156
+ restartRound: {
157
+ summary: { en: `A new round is starting.`, ru: `Начинается новый раунд.` },
158
+ },
159
+ checkWinConditions: {
160
+ summary: {
161
+ en: `The game checks if a side has won. \`preventDefault()\` stops it from ending the round.`,
162
+ ru: `Игра проверяет, не победила ли какая-то сторона. \`preventDefault()\` не даст ей закончить раунд.`,
163
+ },
164
+ },
165
+ onRoundFreezeEnd: {
166
+ summary: { en: `The freeze time at the start of the round is over.`, ru: `Закончилось время заморозки в начале раунда.` },
167
+ },
168
+ radio: {
169
+ summary: {
170
+ en: `A radio message is sent. \`preventDefault()\` silences it.`,
171
+ ru: `Отправляется радиосообщение. \`preventDefault()\` заглушит его.`,
172
+ },
173
+ fields: { player },
174
+ },
175
+ startSound: {
176
+ summary: {
177
+ en: `A sound is about to play. Assign \`event.sample\` to change it, or call \`preventDefault()\` to keep it silent.`,
178
+ ru: `Сейчас прозвучит звук. Присвойте \`event.sample\`, чтобы заменить его, или вызовите \`preventDefault()\`, чтобы заглушить.`,
179
+ },
180
+ },
181
+ defaultDeploy: {
182
+ summary: {
183
+ en: `A weapon is being taken out. Assign \`event.viewModel\` / \`weaponModel\` to change what is shown.`,
184
+ ru: `Оружие достают. Присвойте \`event.viewModel\` / \`weaponModel\`, чтобы поменять модель.`,
185
+ },
186
+ },
187
+ playerBlind: {
188
+ summary: {
189
+ en: `A flashbang is blinding a player. \`preventDefault()\` keeps the player's eyes clear.`,
190
+ ru: `Флешка ослепляет игрока. \`preventDefault()\` — и он ничего не заметит.`,
191
+ },
192
+ fields: {
193
+ player: { en: `The player who is blinded.`, ru: `Игрок, которого ослепляет.` },
194
+ color: { en: `The flash's colour, [r, g, b] as a Vector. Read only.`, ru: `Цвет вспышки, [r, g, b] как Vector. Только чтение.` },
195
+ },
196
+ },
197
+ startDeathCam: {
198
+ summary: { en: `A dead player's camera starts.`, ru: `Включается камера погибшего игрока.` },
199
+ fields: { player },
200
+ },
201
+ impulseCommands: {
202
+ summary: { en: `A player sends an impulse: \`100\` is the flashlight, \`201\` the spray.`, ru: `Игрок отправляет impulse: \`100\` — фонарик, \`201\` — спрей.` },
203
+ fields: { player },
204
+ },
205
+ showMenu: {
206
+ summary: { en: `The game shows a player a menu.`, ru: `Игра показывает игроку меню.` },
207
+ fields: { player },
208
+ },
209
+ showVguiMenu: {
210
+ summary: { en: `The game shows a player a VGUI menu (team select).`, ru: `Игра показывает игроку VGUI-меню (выбор команды).` },
211
+ fields: {
212
+ player,
213
+ menu: {
214
+ en: `The menu shown, e.g. \`"team"\`, \`"classT"\`, \`"classCT"\`, \`"buy"\`, \`"buyPistol"\`.`,
215
+ ru: `Показываемое меню, например \`"team"\`, \`"classT"\`, \`"classCT"\`, \`"buy"\`, \`"buyPistol"\`.`,
216
+ },
217
+ },
218
+ },
219
+ canSwitchTeam: {
220
+ summary: {
221
+ en: `The game asks if a player may move to a team. Return \`true\` or \`false\` to decide.`,
222
+ ru: `Игра спрашивает, можно ли игроку перейти в команду. Верните \`true\` или \`false\`, чтобы решить.`,
223
+ },
224
+ fields: { player, team: { en: `The team the player would move to.`, ru: `Команда, в которую перейдёт игрок.` } },
225
+ },
226
+ chooseTeam: {
227
+ summary: {
228
+ en: `A player picked an item in the team menu. \`preventDefault()\` ignores the pick.`,
229
+ ru: `Игрок выбрал пункт в меню команд. \`preventDefault()\` — и выбор не засчитается.`,
230
+ },
231
+ fields: {
232
+ player,
233
+ choice: {
234
+ en: `The player's pick, one of \`"TERRORIST"\`, \`"CT"\`, \`"VIP"\`, \`"auto"\` or \`"SPECTATOR"\`. Assign to change it.`,
235
+ ru: `Выбор игрока, одно из \`"TERRORIST"\`, \`"CT"\`, \`"VIP"\`, \`"auto"\` или \`"SPECTATOR"\`. Присвойте, чтобы изменить.`,
236
+ },
237
+ },
238
+ },
239
+ buyWeaponByWeaponId: {
240
+ summary: {
241
+ en: `A player buys a weapon. In a post listener \`event.result\` is the weapon.`,
242
+ ru: `Игрок покупает оружие. В post-обработчике \`event.result\` — само оружие.`,
243
+ },
244
+ fields: { player, weapon: { en: `The weapon bought, as \`weapon.kind\` names it, e.g. \`"ak47"\` or \`"awp"\`.`, ru: `Покупаемое оружие, как его называет \`weapon.kind\`, например \`"ak47"\` или \`"awp"\`.` } },
245
+ },
246
+ addAccount: {
247
+ summary: {
248
+ en: `A player's money changes. Assign \`event.amount\` to change how much.`,
249
+ ru: `У игрока меняются деньги. Присвойте \`event.amount\`, чтобы изменить сумму.`,
250
+ },
251
+ fields: {
252
+ player,
253
+ reason: {
254
+ en: `The reason for the money, e.g. \`"roundBonus"\`, \`"enemyKilled"\`, \`"playerBoughtSomething"\`, \`"hostageRescued"\`.`,
255
+ ru: `Причина начисления, например \`"roundBonus"\`, \`"enemyKilled"\`, \`"playerBoughtSomething"\`, \`"hostageRescued"\`.`,
256
+ },
257
+ },
258
+ },
259
+ hasRestrictItem: {
260
+ summary: {
261
+ en: `The game asks if an item is forbidden to a player. Return \`true\` to forbid it.`,
262
+ ru: `Игра спрашивает, запрещён ли игроку предмет. Верните \`true\`, чтобы запретить.`,
263
+ },
264
+ fields: {
265
+ player,
266
+ restriction: {
267
+ en: `The way the player would get the item, one of \`"buying"\`, \`"touched"\` (picked up) or \`"equipped"\` (given on spawn).`,
268
+ ru: `Способ, которым игрок получит предмет, — одно из \`"buying"\` (покупка), \`"touched"\` (подобрал) или \`"equipped"\` (выдан при спавне).`,
269
+ },
270
+ },
271
+ },
272
+ addResource: {
273
+ summary: {
274
+ en: `A file is added to what clients download.`,
275
+ ru: `Файл добавляется в то, что скачивают клиенты.`,
276
+ },
277
+ fields: {
278
+ resourceType: {
279
+ en: `The file's kind, e.g. \`"sound"\`, \`"model"\`, \`"decal"\`, \`"generic"\`.`,
280
+ ru: `Вид файла, например \`"sound"\`, \`"model"\`, \`"decal"\`, \`"generic"\`.`,
281
+ },
282
+ resourceIndex: { en: `The resource's number in the list.`, ru: `Номер ресурса в списке.` },
283
+ },
284
+ },
285
+ onEvent: {
286
+ summary: {
287
+ en: `The game tells the bots something happened.`,
288
+ ru: `Игра сообщает ботам, что что-то произошло.`,
289
+ },
290
+ fields: {
291
+ gameEvent: {
292
+ en: `The thing that happened, e.g. \`"weaponFired"\`, \`"playerDied"\`, \`"bombPlanted"\`, \`"roundStart"\`.`,
293
+ ru: `Событие для ботов, например \`"weaponFired"\`, \`"playerDied"\`, \`"bombPlanted"\`, \`"roundStart"\`.`,
294
+ },
295
+ },
296
+ },
297
+ sendDeathMessage: {
298
+ summary: {
299
+ en: `The game tells everyone who killed whom.`,
300
+ ru: `Игра сообщает всем, кто кого убил.`,
301
+ },
302
+ fields: {
303
+ flags: {
304
+ en: `The extras the death message carries, any of \`"Position"\`, \`"Assistant"\`, \`"KillRarity"\`.`,
305
+ ru: `Дополнения к сообщению о смерти, любые из \`"Position"\`, \`"Assistant"\`, \`"KillRarity"\`.`,
306
+ },
307
+ rarity: {
308
+ en: `The things that made the kill rare, e.g. \`"Headshot"\`, \`"NoScope"\`, \`"Penetrated"\`, \`"InAir"\`.`,
309
+ ru: `Особенности убийства, например \`"Headshot"\`, \`"NoScope"\`, \`"Penetrated"\`, \`"InAir"\`.`,
310
+ },
311
+ },
312
+ },
313
+ throwGrenade: {
314
+ summary: { en: `A player throws a grenade.`, ru: `Игрок бросает гранату.` },
315
+ fields: { player: thrower, velocity: grenadeVelocity },
316
+ },
317
+ hintMessageEx: {
318
+ summary: { en: `The game shows a player a hint.`, ru: `Игра показывает игроку подсказку.` },
319
+ fields: {
320
+ player,
321
+ displayIfHintsOff: {
322
+ en: `\`true\` to show the hint even to a player who turned hints off.`,
323
+ ru: `\`true\` — показать подсказку и игроку, который отключил подсказки.`,
324
+ },
325
+ },
326
+ },
327
+ sendSayMessage: {
328
+ summary: {
329
+ en: `A player's chat message goes out to the players and to the server console. Assign \`event.text\` to change what they read, or call \`preventDefault()\` so nobody gets it.`,
330
+ ru: `Сообщение игрока в чат уходит игрокам и в консоль сервера. Чтобы изменить, что они прочтут, присвойте \`event.text\`; чтобы его не получил никто, вызовите \`preventDefault()\`.`,
331
+ },
332
+ fields: {
333
+ player: { en: `The player who wrote the message.`, ru: `Игрок, который написал сообщение.` },
334
+ cmd: { en: `The command the message came with, \`"say"\` or \`"say_team"\`.`, ru: `Команда, с которой пришло сообщение, \`"say"\` или \`"say_team"\`.` },
335
+ teamonly: { en: `\`true\` when only the player's team gets the message.`, ru: `\`true\`, когда сообщение получает только команда игрока.` },
336
+ text: { en: `The message as the player wrote it. Assign to change it.`, ru: `Сообщение, как его написал игрок. Присвойте, чтобы изменить.` },
337
+ format: {
338
+ en: `The chat's format that puts the name, the place and the message together, e.g. \`"#Cstrike_Chat_All"\`.`,
339
+ ru: `Формат чата, который собирает имя, место и сообщение, например \`"#Cstrike_Chat_All"\`.`,
340
+ },
341
+ consoleFormat: { en: `The format of the line the server console prints for the message.`, ru: `Формат строки, которую консоль сервера печатает для сообщения.` },
342
+ senderDead: { en: `\`true\` when the player who wrote the message is dead.`, ru: `\`true\`, когда игрок, написавший сообщение, мёртв.` },
343
+ placeName: { en: `The name of the place on the map where the player is, e.g. \`"BombsiteA"\`.`, ru: `Название места на карте, где находится игрок, например \`"BombsiteA"\`.` },
344
+ consoleUsesPlaceName: { en: `\`true\` when the console's line carries the place's name too.`, ru: `\`true\`, когда строка в консоли тоже содержит название места.` },
345
+ },
346
+ },
347
+ takeDamageImpulse: {
348
+ summary: {
349
+ en: `A hurt player is pushed back and slowed down by the hit, after the damage. Assign \`event.knockbackForce\` or \`event.velModifier\` to change how much, or call \`preventDefault()\` for neither.`,
350
+ ru: `Раненого игрока отбрасывает и замедляет от удара, уже после урона. Чтобы изменить насколько, присвойте \`event.knockbackForce\` или \`event.velModifier\`; чтобы не было ни того ни другого, вызовите \`preventDefault()\`.`,
351
+ },
352
+ fields: {
353
+ player: { en: `The player who is hurt.`, ru: `Игрок, которого ранили.` },
354
+ attacker: { en: `The player who did the damage.`, ru: `Игрок, который нанёс урон.` },
355
+ knockbackForce: { en: `The force that pushes the player away from the attacker. Assign to change it.`, ru: `Сила, которая отталкивает игрока от атакующего. Присвойте, чтобы изменить.` },
356
+ velModifier: {
357
+ en: `The share of speed the player keeps while slowed by the hit, e.g. \`0.5\` for half. Assign to change it.`,
358
+ ru: `Доля скорости, которая остаётся у игрока, пока его замедляет удар, например \`0.5\` — половина. Присвойте, чтобы изменить.`,
359
+ },
360
+ },
361
+ },
362
+ updateStatusBar: {
363
+ summary: {
364
+ en: `The game updates a player's status bar: the name and health of the player under the crosshair, at the bottom of the screen. \`preventDefault()\` leaves it as it is.`,
365
+ ru: `Игра обновляет строку состояния игрока — имя и здоровье игрока под прицелом внизу экрана. \`preventDefault()\` оставит её как есть.`,
366
+ },
367
+ fields: { player: { en: `The player whose status bar it is.`, ru: `Игрок, чья это строка состояния.` } },
368
+ },
369
+ spawn: {
370
+ summary: {
371
+ en: `An entity spawns - a player at the start of his life, a weapon, anything the map or a plugin makes. Without \`classname\` it is a player's; \`{ classname: "weaponbox" }\` hears that class's.`,
372
+ ru: `Сущность появляется — игрок в начале жизни, оружие, всё, что создаёт карта или плагин. Без \`classname\` — появление игрока; \`{ classname: "weaponbox" }\` слушает этот класс.`,
373
+ },
374
+ fields: { player: { en: `The player who spawns; for another class, \`event.entity\`.`, ru: `Игрок, который появляется; для другого класса — \`event.entity\`.` } },
375
+ },
376
+ killed: {
377
+ summary: {
378
+ en: `An entity dies - a player, or with \`classname\` a breakable, a hostage. \`preventDefault()\` keeps it alive.`,
379
+ ru: `Сущность погибает — игрок или, с \`classname\`, разбиваемый объект, заложник. \`preventDefault()\` оставляет её в живых.`,
380
+ },
381
+ fields: {
382
+ player: { en: `The player who dies; for another class, \`event.entity\`.`, ru: `Игрок, который погибает; для другого класса — \`event.entity\`.` },
383
+ attacker: { en: `The killer.`, ru: `Убийца.` },
384
+ gib: { en: `The body's fate: \`0\` the usual death, \`1\` never torn apart, \`2\` always.`, ru: `Судьба тела: \`0\` — обычная смерть, \`1\` — никогда не разрывает, \`2\` — всегда.` },
385
+ },
386
+ },
387
+ gameThink: {
388
+ summary: {
389
+ en: `The game rules' think: every frame, the round's clock and win conditions checked.`,
390
+ ru: `«Мысль» правил игры: каждый кадр — часы раунда и проверка условий победы.`,
391
+ },
392
+ },
393
+ think: {
394
+ summary: {
395
+ en: `An entity of one class thinks - when its \`nextThink\` comes: \`{ classname: "info_target" }\`.`,
396
+ ru: `Сущность одного класса «думает» — когда наступает её \`nextThink\`: \`{ classname: "info_target" }\`.`,
397
+ },
398
+ fields: { entity: theEntity },
399
+ },
400
+ use: {
401
+ summary: {
402
+ en: `An entity of one class is used - a button pressed, a door opened. \`preventDefault()\` keeps it as it is.`,
403
+ ru: `Сущность одного класса используют — нажимают кнопку, открывают дверь. \`preventDefault()\` оставит её как есть.`,
404
+ },
405
+ fields: {
406
+ entity: theEntity,
407
+ caller: { en: `The entity that passes the use on, e.g. a button to its door.`, ru: `Сущность, которая передаёт использование, например кнопка — своей двери.` },
408
+ activator: { en: `The entity that started it, e.g. the player who pressed the button.`, ru: `Сущность, которая его начала, например игрок, нажавший кнопку.` },
409
+ useType: { en: `The way it is used, one of \`"off"\`, \`"on"\`, \`"set"\` or \`"toggle"\`.`, ru: `Способ использования, одно из \`"off"\`, \`"on"\`, \`"set"\` или \`"toggle"\`.` },
410
+ value: { en: `A number the use carries, for \`"set"\`.`, ru: `Число, которое несёт использование, для \`"set"\`.` },
411
+ },
412
+ },
413
+ blocked: {
414
+ summary: {
415
+ en: `A moving entity of one class - a door, a train - is blocked by another in its way.`,
416
+ ru: `Движущуюся сущность одного класса — дверь, поезд — блокирует другая на её пути.`,
417
+ },
418
+ fields: { entity: theEntity, other: { en: `The entity in the way.`, ru: `Сущность на пути.` } },
419
+ },
420
+ primaryAttack: {
421
+ summary: {
422
+ en: `A weapon of one class fires its primary attack - a shot, a knife's slash: \`{ classname: "weapon_knife" }\`. \`preventDefault()\` stops it.`,
423
+ ru: `Оружие одного класса выполняет основную атаку — выстрел, удар ножом: \`{ classname: "weapon_knife" }\`. \`preventDefault()\` её отменяет.`,
424
+ },
425
+ fields: { weapon: theWeapon },
426
+ },
427
+ secondaryAttack: {
428
+ summary: {
429
+ en: `A weapon of one class fires its secondary attack - a knife's stab, a scope. \`preventDefault()\` stops it.`,
430
+ ru: `Оружие одного класса выполняет вторую атаку — укол ножом, прицел. \`preventDefault()\` её отменяет.`,
431
+ },
432
+ fields: { weapon: theWeapon },
433
+ },
434
+ reload: {
435
+ summary: {
436
+ en: `A weapon of one class reloads. \`preventDefault()\` stops it.`,
437
+ ru: `Оружие одного класса перезаряжается. \`preventDefault()\` это отменяет.`,
438
+ },
439
+ fields: { weapon: theWeapon },
440
+ },
441
+ deploy: {
442
+ summary: {
443
+ en: `A weapon of one class is drawn. Return \`false\` to refuse it.`,
444
+ ru: `Оружие одного класса достают. Верните \`false\`, чтобы не дать его достать.`,
445
+ },
446
+ fields: { weapon: theWeapon },
447
+ },
448
+ holster: {
449
+ summary: {
450
+ en: `A weapon of one class is put away.`,
451
+ ru: `Оружие одного класса убирают.`,
452
+ },
453
+ fields: { weapon: theWeapon },
454
+ },
455
+ weaponIdle: {
456
+ summary: {
457
+ en: `A weapon of one class idles, playing its idle animation.`,
458
+ ru: `Оружие одного класса бездействует и проигрывает анимацию ожидания.`,
459
+ },
460
+ fields: { weapon: theWeapon },
461
+ },
462
+ itemPreFrame: {
463
+ summary: {
464
+ en: `A weapon of one class is thought over in its owner's hands, every frame before his move.`,
465
+ ru: `Оружие одного класса обрабатывается в руках владельца, каждый кадр до его движения.`,
466
+ },
467
+ fields: { weapon: theWeapon },
468
+ },
469
+ addToPlayer: {
470
+ summary: {
471
+ en: `A weapon of one class goes to a player - picked up or given. Return \`false\` to refuse it.`,
472
+ ru: `Оружие одного класса достаётся игроку — подобрано или выдано. Верните \`false\`, чтобы не отдать его.`,
473
+ },
474
+ fields: { weapon: theWeapon, player: { en: `The player who gets it.`, ru: `Игрок, который его получает.` } },
475
+ },
476
+ drop: {
477
+ summary: {
478
+ en: `A weapon of one class is dropped.`,
479
+ ru: `Оружие одного класса выбрасывают.`,
480
+ },
481
+ fields: { weapon: theWeapon },
482
+ },
483
+ jump: {
484
+ summary: {
485
+ en: `A player jumps.`,
486
+ ru: `Игрок прыгает.`,
487
+ },
488
+ fields: { player },
489
+ },
490
+ duck: {
491
+ summary: {
492
+ en: `A player ducks.`,
493
+ ru: `Игрок приседает.`,
494
+ },
495
+ fields: { player },
496
+ },
497
+ };
@@ -0,0 +1,148 @@
1
+ // Our own words for the messages the server sends its clients, as
2
+ // server.addEventListener("message:<Name>", ...) hears them - in both
3
+ // languages. scripts/generate-host.ts writes them into as/events.ts as the
4
+ // tooltips an editor shows on the name, the event and its fields. A message
5
+ // without an entry has the words of every message: its arguments by number.
6
+ import type { EventDoc, Text } from './events';
7
+
8
+ const receiver: Text = { en: `The player the message goes to.`, ru: `Игрок, которому идёт сообщение.` };
9
+ const seconds: Text = { en: `The seconds the bar or the clock shows. Assign to change them.`, ru: `Секунды, которые показывают полоса или часы. Присвойте, чтобы изменить.` };
10
+
11
+ export const MESSAGES: Record<string, EventDoc> = {
12
+ AmmoPickup: {
13
+ summary: { en: `A player picks up ammo: the notice at the side of his screen.`, ru: `Игрок подбирает патроны: уведомление сбоку экрана.` },
14
+ fields: {
15
+ ammo: { en: `The ammo's index in the game's list of kinds.`, ru: `Индекс патронов в списке видов у игры.` },
16
+ amount: { en: `The amount picked up.`, ru: `Подобранное количество.` },
17
+ },
18
+ },
19
+ BarTime: {
20
+ summary: { en: `The progress bar in the middle of a player's screen is shown or hidden.`, ru: `Полосу прогресса посреди экрана игрока показывают или прячут.` },
21
+ fields: { seconds },
22
+ },
23
+ Battery: {
24
+ summary: { en: `A player's armour on his HUD changes.`, ru: `Меняется броня игрока на его HUD.` },
25
+ fields: { armor: { en: `The armour shown.`, ru: `Показанная броня.` } },
26
+ },
27
+ ClCorpse: {
28
+ summary: { en: `A dead player's body is left on the ground for the clients to draw.`, ru: `Тело погибшего игрока остаётся на земле, чтобы клиенты его нарисовали.` },
29
+ fields: {
30
+ model: { en: `The body's model, e.g. \`"sas"\`.`, ru: `Модель тела, например \`"sas"\`.` },
31
+ target: { en: `The player whose body it is.`, ru: `Игрок, чьё это тело.` },
32
+ },
33
+ },
34
+ CurWeapon: {
35
+ summary: { en: `The weapon in a player's hands and its clip on his HUD.`, ru: `Оружие в руках игрока и его обойма на HUD.` },
36
+ fields: {
37
+ active: { en: `\`true\` for the weapon in his hands.`, ru: `\`true\` — для оружия в его руках.` },
38
+ weapon: { en: `The weapon, by its kind, e.g. \`"ak47"\`.`, ru: `Оружие по его виду, например \`"ak47"\`.` },
39
+ clip: { en: `The rounds in the clip.`, ru: `Патроны в обойме.` },
40
+ },
41
+ },
42
+ Damage: {
43
+ summary: { en: `A player is shown the damage he took: the red marks at the side of his screen.`, ru: `Игроку показывают полученный урон: красные метки сбоку экрана.` },
44
+ fields: {
45
+ armor: { en: `The armour he lost.`, ru: `Потерянная броня.` },
46
+ damage: { en: `The health he lost.`, ru: `Потерянное здоровье.` },
47
+ damageType: { en: `The kinds of damage, e.g. \`"Fall"\`, \`"Bullet"\`.`, ru: `Виды урона, например \`"Fall"\`, \`"Bullet"\`.` },
48
+ },
49
+ },
50
+ DeathMsg: {
51
+ summary: { en: `A kill in the top right corner of every screen.`, ru: `Убийство в правом верхнем углу каждого экрана.` },
52
+ fields: {
53
+ killer: { en: `The player who killed; \`null\` for the world.`, ru: `Игрок, который убил; \`null\` — мир.` },
54
+ victim: { en: `The player who died.`, ru: `Игрок, который погиб.` },
55
+ headshot: { en: `\`true\` for a headshot.`, ru: `\`true\` — выстрел в голову.` },
56
+ weapon: { en: `The weapon's name as the icon shows it, e.g. \`"ak47"\`, \`"grenade"\`.`, ru: `Имя оружия, как его показывает значок, например \`"ak47"\`, \`"grenade"\`.` },
57
+ },
58
+ },
59
+ Health: {
60
+ summary: { en: `A player's health on his HUD changes.`, ru: `Меняется здоровье игрока на его HUD.` },
61
+ fields: { health: { en: `The health shown.`, ru: `Показанное здоровье.` } },
62
+ },
63
+ HideWeapon: {
64
+ summary: { en: `The parts of a player's HUD that are hidden change.`, ru: `Меняются скрытые части HUD игрока.` },
65
+ fields: { flags: { en: `The hidden parts, e.g. \`"Money"\`, \`"Timer"\`. Assign to change them.`, ru: `Скрытые части, например \`"Money"\`, \`"Timer"\`. Присвойте, чтобы изменить.` } },
66
+ },
67
+ HudTextArgs: {
68
+ summary: { en: `A hint in the middle of a player's screen, from the game's own texts.`, ru: `Подсказка посреди экрана игрока из собственных текстов игры.` },
69
+ fields: { text: { en: `The game's text, e.g. \`"#Hint_press_buy_to_purchase"\`.`, ru: `Текст игры, например \`"#Hint_press_buy_to_purchase"\`.` } },
70
+ },
71
+ ItemPickup: {
72
+ summary: { en: `A player picks up an item: the notice at the side of his screen.`, ru: `Игрок подбирает предмет: уведомление сбоку экрана.` },
73
+ fields: { item: { en: `The item's class name, e.g. \`"item_kevlar"\`.`, ru: `Имя класса предмета, например \`"item_kevlar"\`.` } },
74
+ },
75
+ Money: {
76
+ summary: { en: `A player's money on his HUD changes.`, ru: `Меняются деньги игрока на его HUD.` },
77
+ fields: {
78
+ amount: { en: `The money shown.`, ru: `Показанные деньги.` },
79
+ flash: { en: `\`true\` to flash the change.`, ru: `\`true\` — мигнуть изменением.` },
80
+ },
81
+ },
82
+ ResetHUD: {
83
+ summary: { en: `A player's HUD is reset, at his spawn.`, ru: `HUD игрока сбрасывается при его появлении.` },
84
+ },
85
+ RoundTime: {
86
+ summary: { en: `The round clock at the top of a player's HUD is set.`, ru: `Задаются часы раунда вверху HUD игрока.` },
87
+ fields: { seconds },
88
+ },
89
+ SayText: {
90
+ summary: { en: `A chat line.`, ru: `Строка чата.` },
91
+ fields: {
92
+ sender: { en: `The player who wrote it; \`null\` for the server.`, ru: `Игрок, который её написал; \`null\` — сервер.` },
93
+ text: { en: `The line, or the game's format for it, e.g. \`"#Cstrike_Chat_All"\`.`, ru: `Строка или формат игры для неё, например \`"#Cstrike_Chat_All"\`.` },
94
+ },
95
+ },
96
+ ScoreInfo: {
97
+ summary: { en: `A player's row on the scoreboard.`, ru: `Строка игрока в таблице счёта.` },
98
+ fields: {
99
+ target: { en: `The player whose row it is.`, ru: `Игрок, чья это строка.` },
100
+ frags: { en: `The frags shown.`, ru: `Показанные фраги.` },
101
+ deaths: { en: `The deaths shown.`, ru: `Показанные смерти.` },
102
+ team: { en: `The team the row is under.`, ru: `Команда, под которой строка.` },
103
+ },
104
+ },
105
+ SendAudio: {
106
+ summary: { en: `A sound played to a player, such as a radio line.`, ru: `Звук, который играет игроку, например фраза рации.` },
107
+ fields: {
108
+ sender: { en: `The player the sound is from; \`null\` for none.`, ru: `Игрок, от которого звук; \`null\` — ни от кого.` },
109
+ sound: { en: `The sound, e.g. \`"%!MRAD_GO"\` for a radio line.`, ru: `Звук, например \`"%!MRAD_GO"\` — фраза рации.` },
110
+ pitch: { en: `The pitch in percent, \`100\` as recorded.`, ru: `Высота в процентах, \`100\` — как записан.` },
111
+ },
112
+ },
113
+ SetFOV: {
114
+ summary: { en: `A player's field of view is set.`, ru: `Задаётся поле зрения игрока.` },
115
+ fields: { fov: { en: `The field of view, in degrees.`, ru: `Поле зрения, в градусах.` } },
116
+ },
117
+ StatusIcon: {
118
+ summary: { en: `A status icon on a player's HUD - the buy zone, the bomb - is shown, flashed or hidden.`, ru: `Значок состояния на HUD игрока — зона закупки, бомба — показывается, мигает или прячется.` },
119
+ fields: {
120
+ state: { en: `One of \`"hide"\`, \`"show"\` or \`"flash"\`.`, ru: `Одно из \`"hide"\`, \`"show"\` или \`"flash"\`.` },
121
+ sprite: { en: `The icon's sprite name, e.g. \`"buyzone"\`.`, ru: `Имя спрайта значка, например \`"buyzone"\`.` },
122
+ },
123
+ },
124
+ TeamInfo: {
125
+ summary: { en: `A player's team on the scoreboard.`, ru: `Команда игрока в таблице счёта.` },
126
+ fields: {
127
+ target: { en: `The player whose team it is.`, ru: `Игрок, чья это команда.` },
128
+ team: { en: `The team's name, e.g. \`"TERRORIST"\`, \`"CT"\`.`, ru: `Имя команды, например \`"TERRORIST"\`, \`"CT"\`.` },
129
+ },
130
+ },
131
+ TextMsg: {
132
+ summary: { en: `A text from the game - an announcement, a hint - in chat, the console or the middle of the screen.`, ru: `Текст игры — объявление, подсказка — в чате, консоли или посреди экрана.` },
133
+ fields: {
134
+ destination: { en: `The place it shows, one of \`"chat"\`, \`"center"\`, \`"console"\` or \`"notify"\`.`, ru: `Место, где он виден, одно из \`"chat"\`, \`"center"\`, \`"console"\` или \`"notify"\`.` },
135
+ text: { en: `The text, or the game's own for it, e.g. \`"#Round_Draw"\`.`, ru: `Текст или собственный текст игры, например \`"#Round_Draw"\`.` },
136
+ },
137
+ },
138
+ WeapPickup: {
139
+ summary: { en: `A player picks up a weapon: the notice at the side of his screen.`, ru: `Игрок подбирает оружие: уведомление сбоку экрана.` },
140
+ fields: { weapon: { en: `The weapon, by its kind, e.g. \`"knife"\`.`, ru: `Оружие по его виду, например \`"knife"\`.` } },
141
+ },
142
+ };
143
+
144
+ /** The words of a message that has no entry, and of the receiver every message has. */
145
+ export const ANY_MESSAGE: { summary: Text; player: Text } = {
146
+ summary: { en: `A message the server sends its clients; its arguments are \`event.args\`.`, ru: `Сообщение, которое сервер шлёт клиентам; его аргументы — \`event.args\`.` },
147
+ player: receiver,
148
+ };