51 Commits

Author SHA1 Message Date
475b1cdc29 fix gcc 12.1 compilation 2022-07-10 15:25:45 +00:00
e5c519cf07 update sqlite to version 3.39.0 2022-07-10 15:24:46 +00:00
df6b589ba1 nextmap.sma - Fix mp_chattime getting increased on quick map change (#1044) 2022-06-30 23:16:05 -07:00
fde732f66d Update trie_natives.cpp (#1052)
"Invalid map handle provided (%d)" error is very unclear when it appears in complex code.
2022-06-16 18:47:08 -07:00
49a8b959b3 Update newmenus.inc (#1043) 2022-04-05 00:32:55 -07:00
ec82e3f34c now amxmodx can use std (#1026) 2021-12-06 10:38:46 -08:00
8ee3da24cb Added new debug feature: Performance Monitor. (#1019)
* Performance Monitor.

Search big performance issues for any plugin that in debug mode. No server slow down.
Output is plugin and function name, and server execution lag in ms. Output target: current amxlog file.

* Adding cvar to enable perflog. Force for all plugin if amx_debug is 2.

* Update cvar name

* Use another clock from chrono

* Fix debug check

* Skip internal amxx exec

* Move includes

* Fix debug check in amx_ExecPerf

* Tried to compile without min/max undefined
2021-12-05 18:38:49 -08:00
6e8554d1d2 Fix ConfigsExecutedForward (my mistake) (#1024)
* Fix one big issue what broken all plugins!

If found any config from servercmd, m_ConfigsExecutedForward not called !!!!!!!
If m_ConfigsExecutedForward  not called, this is broke all plugins where used m_ConfigsExecutedForward (example restmenu)

Revert "Fix one big issue what broken all plugins!"

This reverts commit 6ce36f22e1c278f0831ebbddbc1dbbceb91dacb9.

* Fix m_ConfigsExecutedForward after my missprint from previous pr

Fix my missprint from previous pull request 275be8b0a8
2021-12-04 12:04:08 -08:00
275be8b0a8 Fix one big issue what broken all plugins! (#1022)
If found any config from servercmd, m_ConfigsExecutedForward not called !!!!!!!
If m_ConfigsExecutedForward  not called, this is broke all plugins where used m_ConfigsExecutedForward (example restmenu)
2021-12-03 15:07:59 -08:00
f8ac58c839 Fix some misprints and mistakes in code, part 2 (#1021)
* Fix compiler warnings about broken syntax

Revert "Fix compiler warnings about broken syntax"

This reverts commit cd0649806feaab064e93a0fbcd1f4488747f9b79.

Unbreak code

* Unbreak code

* Stop breaking code, please

* Small real unused check

* Fix "breaked" code and fix MAX_WEAPONS misprints

* Compiler break in debug mode if passing upper case strings
2021-12-02 21:24:15 -08:00
e8909c1583 Fixed value check in json_object_set_value (#1015)
Regression from #983
2021-12-02 19:32:04 -08:00
3cda059669 Fix some errors (#1020)
Fix some critical errors
2021-12-02 13:47:57 -08:00
5dcda02b65 [Build] Implement CI for MacOS via appveyor (#1013) 2021-10-24 17:22:56 -07:00
e6d9d9b71c Update stats.sma (#1001)
Triggered the "Invalid weapon id" at another location in the source code, so patched all cases where the argument could be 0.
2021-10-07 17:12:37 -07:00
2563bf6c26 Updated get_user_flags documentation (#1007) 2021-10-07 17:12:04 -07:00
c61735130d [Build] Fix latest MSVC and CLang compiler errors (#1008)
* Explicit cast specification

* Explicit cast specification

* Suppress -Wno-tautological-compare in Clang 10 and above

https://reviews.llvm.org/rG8b0d14a8f0cc085afa2a9c86c237da81c74517fc

* Explicit cast specification

* Add HAVE_STDINT_H compiler flag

* Explicit casting mechanism type specification

* typo
2021-10-07 17:11:49 -07:00
cac80584a0 Setup Github Actions (#1003) 2021-10-05 23:39:38 -07:00
3eefe5562e [Build] Migrate to Python3 (#1000)
* Configure Travis build env for Py3

Using default available version of 3.6.3 in `xenial` dist

* Migrate to py3

* Fix documentation
2021-09-28 11:41:04 -07:00
c317dc55c7 Update stats.sma (#997)
Fix runtime error when a player "killed self with teledeath". Happens when a map hasn't enough spawn points.
2021-09-28 09:56:21 -07:00
8fefd48af2 Create FUNDING.yml and add a ❤️Sponser button (#994) 2021-09-23 10:12:43 -07:00
f37f9d1c66 Fix gcc 9.2 compilation. (#835)
Fix gcc 9.2 compilation.
2021-09-22 17:01:35 -07:00
8413946ace Minor German Language Update (#926)
* Update admincmd.txt

* Update statsx.txt

* Update miscstats.txt

* Update menufront.txt

* Update menufront.txt

* Update admincmd.txt

* Update adminvote.txt

* Update restmenu.txt

* Update mapsmenu.txt

* Update nextmap.txt

* Update stats_dod.txt

* Update statscfg.txt

* Update stats_dod.txt

* Update adminvote.txt
2021-09-17 13:22:30 +02:00
be9ccc42eb European Portuguese Language translation fixes (#902)
* European Portuguese translation fix: admin.txt

* European Portuguese translation fix: admincmd.txt

* Added European Portuguese translation: adminslots.txt

Added new translations

* European Portuguese translation fix: common.txt

* European Portuguese translation fix: menufront.txt

* European Portuguese translation fix: miscstats.txt

* European Portuguese translation fix: pausecfg.txt

* European Portuguese translation fix: restmenu.txt

* European Portuguese translation fix: statscfg.txt
2021-09-17 13:12:46 +02:00
fb7ab6d08d Add missing kRenderFx constant (#928)
* Add missing kRenderFx constant

* Change constant name to match SDK
2021-09-17 13:11:17 +02:00
01e60834fa Use precache_generic() for sounds that are played client-side (#934) 2021-09-17 13:10:46 +02:00
3289b3c63c Update parson and fix json_object_set_value (#983)
* Remove parson folder

* add submodule parson

* FIX amxx_json_object_set_value generate a crash if invalid value is passed

* restore parson folder status
2021-09-17 13:06:54 +02:00
e17d37abe3 [FEATURE REQUEST] set_hudmessage add missing parameters (#992)
Same as https://github.com/alliedmodders/amxmodx/pull/981

Co-Authored-By: Franco Romaniello <romax.cs@gmail.com>

Co-authored-by: Franco Romaniello <romax.cs@gmail.com>
2021-09-17 13:05:28 +02:00
51c3f1b195 Fix typo in message_const.inc TE_FIZZ comment (#990) 2021-09-17 13:03:37 +02:00
2c8be75057 [TFCX] Fix Medic infection Crash on Linux (#991)
* [TFCX] Fix Medic infection Crash on Linux

Issue: #988

* [TFCX] Removed redundant code

- Added `_DEBUG_TFCX` preprocessor directive
- Deleted redundant code (which fetches pdata)
2021-09-17 12:59:54 +02:00
10db2e5c85 Revert "Update CMisc.h (#984)" (#986)
Turned out both test servers still had an old "tfc_i386.so" file which took precedence over the newer "tfc.so" library, so both servers were misconfigured and that's why the offsets didn't work.
2021-09-02 11:51:50 -07:00
05f86f05c0 Update CMisc.h (#984)
LINUXOFFSET is back at 3 since HLDS Linux build 8308 (dated July 24, 2019).
2021-08-26 22:28:01 -07:00
36d5aa97b1 Add missing set_task_* callback info (#952) 2021-08-07 17:31:18 +02:00
b8c490b5e6 Fix newmenus.inc documentation (#942) 2021-08-07 17:30:07 +02:00
301701b1da Fix typo in admincmd.txt (#951)
slaped => slapped

Let's just ignore the fact that the key is misspelled too.
2021-08-07 17:29:11 +02:00
5b1b844184 Fix incorrect uses of feof() (#957)
Using feof() as the while loop condition for detecting the end of the file is incorrect.
2021-08-07 17:28:35 +02:00
6c9c37eb45 Fixed Romanian translation, and added diacritics (#974) 2021-08-07 17:20:50 +02:00
d88b7e3c98 Change default chat time to 0.0 (#977) 2021-08-07 17:19:38 +02:00
6b9d82fa60 Add TIME_ELEMENT_* Romanian language keys in time.txt (#971) 2021-07-26 10:45:55 +02:00
08494d0d66 macOS build fix. 2021-07-11 22:14:16 -07:00
97b03ea567 Another macOS build fix. 2021-07-11 22:10:02 -07:00
344fb3d410 Fix mac build. 2021-07-11 22:08:37 -07:00
37cbccef6a Quell warning on macOS. 2021-07-11 22:08:36 -07:00
7fb6440ce9 Update minimum macOS to 10.7. 2021-07-11 20:55:09 -07:00
1a1b16614a Switch to libc++ on mac. 2021-07-11 20:51:19 -07:00
af32a9790b Switch to Python3 for bootstrapping. 2021-07-11 17:30:38 -07:00
2e5e3ce060 Add month and year support to get_time_length() (#969)
* Add RU

* Add EN

* Add DE

* Add SR

* Add BP

* Add HU

* Add SECONDS_IN_MONTH & timeunit_months

* Add months for API description

* Add SECONDS_IN_YEAR & timeunit_years

* fix typo

* Add FR
2021-07-01 10:51:24 +02:00
c58daeafca Fix stock "SQL_QueryAndIgnore" documentation (#965) 2021-06-19 10:38:25 +02:00
7fef58c374 Fix for loop index out of bounds error (#966)
Fixes an index out of bounds error when refreshMenus() and subsequently findAdminsWithMenu() is called when there is 32 players in the server. Indexing the playersList array in the for loop condition causes it to try to index with a value of 32 on the very last condition check which is not valid for this array.
2021-06-19 10:36:56 +02:00
3c1856f7af Add ignore for amxx binaries (#960) 2021-05-06 20:40:48 -07:00
9fbf91ded0 Fixed a typo in open_dir native (#955)
dir[] parameter is not const, but it never changes.
2021-03-25 10:04:00 -07:00
3d517d69e2 Revert "Update meta_api.cpp (#883)" (#950)
This reverts commit 7cb045c688.
2021-03-12 18:36:40 +01:00
117 changed files with 63353 additions and 31384 deletions

12
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://www.sourcemod.net/donate.php

137
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,137 @@
name: Continuous Integration
on:
workflow_dispatch:
push:
branches:
- master
- 1.9-dev
pull_request:
branches:
- master
- 1.9-dev
jobs:
test:
strategy:
matrix:
include:
- os: ubuntu-latest
os_short: linux
compiler_cc: gcc
compiler_cxx: g++
- os: ubuntu-latest
os_short: linux
compiler_cc: clang
compiler_cxx: clang++
- os: ubuntu-18.04
os_short: linux
compiler_cc: clang-3.9
compiler_cxx: clang++-3.9
- os: ubuntu-18.04
os_short: linux
compiler_cc: gcc-6
compiler_cxx: g++-6
compiler_install: 'g++6 g++-6-multilib'
- os: windows-latest
os_short: windows
compiler_cc: msvc
- os: windows-2016
os_short: windows
compiler_cc: msvc++14.16-vs2017-cl
# MacOS 32 Bins seem not supported
# - os: macos-latest
# os_short: mac
# compiler_cc: clang
# compiler_cxx: clang++
fail-fast: false
runs-on: ${{ matrix.os }}
name: ${{ matrix.os_short }}-${{ matrix.os }}-${{ matrix.compiler_cc }}
env:
DEPENDENCIES_FOLDER: dependencies
DEPENDENCIES_ROOT: ${{ github.workspace }}/dependencies
DEPENDENCIES_ROOT_WIN: ${{ github.workspace }}\dependencies
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
path: amxmodx
# Setup Python for AMBuild
- uses: actions/setup-python@v2
name: Setup Python 3.8
with:
python-version: 3.8
- name: Install Python dependencies
run: |
python3 -m pip install --upgrade pip setuptools wheel
python3 --version
- name: Install AMXModX dependencies (Linux)
if: startsWith(runner.os, 'Linux') || startsWith(runner.os, 'macOS')
shell: bash
run: |
mkdir -p ${{ env.DEPENDENCIES_FOLDER }}
cd ${{ env.DEPENDENCIES_FOLDER }}
# Satisfy checkout-deps requirement for a "amxmodx" folder.
mkdir -p amxmodx
../amxmodx/support/checkout-deps.sh
- name: Install AMXModX dependencies (Windows)
if: startsWith(runner.os, 'Windows')
shell: cmd
run: |
mkdir %DEPENDENCIES_ROOT_WIN%\nasm
curl -L -o "%DEPENDENCIES_ROOT_WIN%\nasm\nasm.zip" https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/win32/nasm-2.13.03-win32.zip
chdir %DEPENDENCIES_ROOT_WIN%\nasm
7z x nasm.zip
chdir %DEPENDENCIES_ROOT_WIN%
git clone https://github.com/alliedmodders/ambuild
git clone https://github.com/alliedmodders/metamod-hl1 metamod-am
git clone https://github.com/alliedmodders/hlsdk
curl -L -o "mysql-connector-c-6.1.1-win32.zip" https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.1-win32.zip
7z x mysql-connector-c-6.1.1-win32.zip -o"mysql"
cd mysql
dir
ren mysql-connector-c-6.1.1-win32 mysql-5.5
move /Y mysql-5.5 ..\
cd ..\ambuild
python3 setup.py install
- name: Install Linux dependencies
if: startsWith(runner.os, 'Linux')
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
gcc-multilib g++-multilib libstdc++6 lib32stdc++6 \
libc6-dev libc6-dev-i386 linux-libc-dev \
linux-libc-dev:i386 lib32z1-dev nasm ${{ matrix.compiler_cc }} ${{ matrix.compiler_install }}
- name: Select compiler
if: startsWith(runner.os, 'Linux')
run: |
echo "CC=${{ matrix.compiler_cc }}" >> $GITHUB_ENV
echo "CXX=${{ matrix.compiler_cxx }}" >> $GITHUB_ENV
${{ matrix.compiler_cc }} --version
${{ matrix.compiler_cxx }} --version
- uses: ilammy/setup-nasm@v1
- name: Build Linux/macOS
if: startsWith(runner.os, 'Linux') || startsWith(runner.os, 'macOS')
working-directory: amxmodx
run: |
mkdir build
cd build
python3 ../configure.py --enable-optimize --metamod=${{ env.DEPENDENCIES_ROOT }}/metamod-am --hlsdk=${{ env.DEPENDENCIES_ROOT }}/hlsdk --mysql=${{ env.DEPENDENCIES_ROOT }}/mysql-5.5
ambuild
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: x86
- name: Build Windows
if: startsWith(runner.os, 'Windows')
working-directory: amxmodx
shell: cmd
run: |
cl.exe
mkdir build
cd build
python3 ../configure.py --enable-optimize --metamod=${{ env.DEPENDENCIES_ROOT_WIN }}\metamod-am --hlsdk=${{ env.DEPENDENCIES_ROOT_WIN }}\hlsdk --mysql=${{ env.DEPENDENCIES_ROOT_WIN }}\mysql-5.5
ambuild

2
.gitignore vendored
View File

@ -84,5 +84,7 @@ Thumbs.db
# AMXX plugin build related files # AMXX plugin build related files
plugins/compile.dat plugins/compile.dat
plugins/compiled/ plugins/compiled/
*.amx
*.amxx
build_deps/ build_deps/

View File

@ -16,6 +16,9 @@ language: cpp
sudo: false sudo: false
compiler: compiler:
- clang - clang
install:
- pyenv install 3.6.3
- pyenv global 3.6.3
before_script: before_script:
- CHECKOUT_DIR=$PWD && cd .. - CHECKOUT_DIR=$PWD && cd ..
- chmod a+x $CHECKOUT_DIR/support/checkout-deps.sh - chmod a+x $CHECKOUT_DIR/support/checkout-deps.sh
@ -23,5 +26,5 @@ before_script:
script: script:
- mkdir build && cd build - mkdir build && cd build
- PATH="~/.local/bin:$PATH" - PATH="~/.local/bin:$PATH"
- CC=clang-3.7 CXX=clang-3.7 python ../configure.py --enable-optimize - CC=clang-3.7 CXX=clang-3.7 python3 ../configure.py --enable-optimize
- ambuild - ambuild

View File

@ -225,8 +225,19 @@ class AMXXConfig(object):
cxx.cxxflags += ['-Wno-delete-non-virtual-dtor'] cxx.cxxflags += ['-Wno-delete-non-virtual-dtor']
if have_gcc and cxx.version >= '4.8': if have_gcc and cxx.version >= '4.8':
cxx.cflags += ['-Wno-unused-result', '-Wno-error=sign-compare'] cxx.cflags += ['-Wno-unused-result', '-Wno-error=sign-compare']
if have_gcc and cxx.version >= '8.0':
cxx.cflags += ['-Wno-stringop-truncation']
if have_gcc and cxx.version >= '9.0':
cxx.cflags += ['-Wno-address-of-packed-member']
if have_clang: if have_clang:
cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch']
if cxx.version >= '10.0':
cxx.cxxflags += ['-Wno-tautological-compare']
if cxx.version >= 'apple-clang-10.0':
cxx.cxxflags += [
'-Wno-inconsistent-missing-override',
'-Wno-varargs',
]
if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4': if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4':
cxx.cxxflags += ['-Wno-deprecated-register'] cxx.cxxflags += ['-Wno-deprecated-register']
else: else:
@ -317,15 +328,18 @@ class AMXXConfig(object):
def configure_mac(self, cxx): def configure_mac(self, cxx):
cxx.defines += ['OSX', '_OSX', 'POSIX'] cxx.defines += ['OSX', '_OSX', 'POSIX']
cxx.cflags += ['-mmacosx-version-min=10.5'] cxx.cflags += [
'-mmacosx-version-min=10.7',
'-Wno-address-of-packed-member',
]
cxx.linkflags += [ cxx.linkflags += [
'-mmacosx-version-min=10.5', '-mmacosx-version-min=10.7',
'-arch', 'i386', '-arch', 'i386',
'-lstdc++', '-lstdc++',
'-stdlib=libstdc++', '-stdlib=libc++',
'-framework', 'CoreServices', '-framework', 'CoreServices',
] ]
cxx.cxxflags += ['-stdlib=libstdc++'] cxx.cxxflags += ['-stdlib=libc++']
def configure_windows(self, cxx): def configure_windows(self, cxx):
cxx.defines += ['WIN32', '_WINDOWS'] cxx.defines += ['WIN32', '_WINDOWS']

View File

@ -27,6 +27,10 @@ elif builder.target_platform == 'windows':
'/EXPORT:GiveFnptrsToDll=_GiveFnptrsToDll@8,@1', '/EXPORT:GiveFnptrsToDll=_GiveFnptrsToDll@8,@1',
'/SECTION:.data,RW', '/SECTION:.data,RW',
] ]
elif builder.target_platform == 'linux':
binary.compiler.postlink += [
binary.Dep(AMXX.stdcxx_path),
]
binary.compiler.linkflags += [AMXX.zlib.binary, AMXX.hashing.binary, AMXX.utf8rewind.binary] binary.compiler.linkflags += [AMXX.zlib.binary, AMXX.hashing.binary, AMXX.utf8rewind.binary]

View File

@ -122,8 +122,8 @@ cell CForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
#if defined BINLOG_ENABLED #if defined BINLOG_ENABLED
g_BinLog.WriteOp(BinLog_CallPubFunc, iter->pPlugin->getId(), iter->func); g_BinLog.WriteOp(BinLog_CallPubFunc, iter->pPlugin->getId(), iter->func);
#endif #endif
int err = amx_Exec(amx, &retVal, iter->func);
int err = amx_ExecPerf(amx, &retVal, iter->func);
// log runtime error, if any // log runtime error, if any
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {
@ -327,8 +327,7 @@ cell CSPForward::execute(cell *params, ForwardPreparedArray *preparedArrays)
#if defined BINLOG_ENABLED #if defined BINLOG_ENABLED
g_BinLog.WriteOp(BinLog_CallPubFunc, pPlugin->getId(), m_Func); g_BinLog.WriteOp(BinLog_CallPubFunc, pPlugin->getId(), m_Func);
#endif #endif
int err = amx_Exec(m_Amx, &retVal, m_Func); int err = amx_ExecPerf(m_Amx, &retVal, m_Func);
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {
//Did something else set an error? //Did something else set an error?

View File

@ -296,16 +296,19 @@ void CoreConfig::OnMapConfigTimer()
return; return;
} }
if (m_PendingForwardPush) if (m_legacyMapConfigNextTime <= gpGlobals->time)
{ {
m_PendingForwardPush = false; if (m_PendingForwardPush)
m_ConfigsExecuted = true; {
m_PendingForwardPush = false;
m_ConfigsExecuted = true;
executeForwards(m_ConfigsExecutedForward); executeForwards(m_ConfigsExecutedForward);
} }
else if (!m_LegacyMapConfigsExecuted && m_legacyMapConfigNextTime <= gpGlobals->time) else if (!m_LegacyMapConfigsExecuted)
{ {
ExecuteMapConfig(); ExecuteMapConfig();
}
} }
} }
@ -316,6 +319,7 @@ void CoreConfig::CheckLegacyBufferedCommand(char *command)
return; return;
} }
if (!m_LegacyMainConfigExecuted && strstr(command, MainConfigFile)) if (!m_LegacyMainConfigExecuted && strstr(command, MainConfigFile))
{ {
m_LegacyMainConfigExecuted = true; m_LegacyMainConfigExecuted = true;
@ -324,6 +328,9 @@ void CoreConfig::CheckLegacyBufferedCommand(char *command)
if (!m_LegacyMapConfigsExecuted && strstr(command, MapConfigDir)) if (!m_LegacyMapConfigsExecuted && strstr(command, MapConfigDir))
{ {
m_LegacyMapConfigsExecuted = true; m_LegacyMapConfigsExecuted = true;
// Consider all configs be executed to m_legacyMapConfigNextTime time.
m_PendingForwardPush = true;
} }
} }

View File

@ -66,6 +66,9 @@
#include <windows.h> #include <windows.h>
#endif #endif
#include <chrono>
#include <amxmodx.h>
#include <CPlugin.h>
/* When one or more of the AMX_funcname macris are defined, we want /* When one or more of the AMX_funcname macris are defined, we want
* to compile only those functions. However, when none of these macros * to compile only those functions. However, when none of these macros
@ -4173,3 +4176,37 @@ int AMXAPI amx_GetStringOld(char *dest,const cell *source,int use_wchar)
dest[len]='\0'; /* store terminator */ dest[len]='\0'; /* store terminator */
return AMX_ERR_NONE; return AMX_ERR_NONE;
} }
int AMXAPI amx_ExecPerf(AMX* amx, cell* retval, int index)
{
CPluginMngr::CPlugin* perf_Plug = g_plugins.findPluginFast(amx);
if (amxmodx_perflog->value > 0.0f && perf_Plug && (perf_Plug->isDebug() || (int)amxmodx_debug->value == 2))
{
char perf_funcname[sNAMEMAX + 1];
perf_funcname[0] = '\0';
amx_GetPublic(perf_Plug->getAMX(), index, perf_funcname);
if (perf_funcname[0] == '\0')
sprintf(perf_funcname, "Unknown_ID%d", index);
const char* perf_plugname = perf_Plug->getName();
if (!perf_plugname || perf_plugname[0] == '\0')
perf_plugname = "Unknown_plugin";
using std::chrono::steady_clock;
using std::chrono::duration_cast;
using std::chrono::duration;
using std::chrono::microseconds;
auto t1 = steady_clock::now();
int err = amx_Exec(amx, retval, index);
auto ms_int = duration_cast<microseconds>(steady_clock::now() - t1);
auto ms_float = (float)(ms_int.count() / 1000.0f);
if (ms_float >= amxmodx_perflog->value)
{
AMXXLOG_Log("[%s] performance issue. Function %s executed more than %.*fms.", perf_plugname, perf_funcname, 1, ms_float);
}
return err;
}
return amx_Exec(amx, retval, index);
}

View File

@ -382,6 +382,7 @@ int AMXAPI amx_Callback(AMX *amx, cell index, cell *result, cell *params);
int AMXAPI amx_CheckNatives(AMX *amx, AMX_NATIVE_FILTER nf); int AMXAPI amx_CheckNatives(AMX *amx, AMX_NATIVE_FILTER nf);
int AMXAPI amx_Cleanup(AMX *amx); int AMXAPI amx_Cleanup(AMX *amx);
int AMXAPI amx_Clone(AMX *amxClone, AMX *amxSource, void *data); int AMXAPI amx_Clone(AMX *amxClone, AMX *amxSource, void *data);
int AMXAPI amx_ExecPerf(AMX* amx, cell* retval, int index);
int AMXAPI amx_Exec(AMX *amx, cell *retval, int index); int AMXAPI amx_Exec(AMX *amx, cell *retval, int index);
int AMXAPI amx_FindNative(AMX *amx, const char *name, int *index); int AMXAPI amx_FindNative(AMX *amx, const char *name, int *index);
int AMXAPI amx_FindPublic(AMX *amx, const char *funcname, int *index); int AMXAPI amx_FindPublic(AMX *amx, const char *funcname, int *index);

View File

@ -542,11 +542,27 @@ static cell AMX_NATIVE_CALL next_hudchannel(AMX *amx, cell *params)
static cell AMX_NATIVE_CALL set_hudmessage(AMX *amx, cell *params) /* 11 param */ static cell AMX_NATIVE_CALL set_hudmessage(AMX *amx, cell *params) /* 11 param */
{ {
g_hudset.a1 = 0; cell num_params = params[0] / sizeof(cell);
g_hudset.a2 = 0;
g_hudset.r2 = 255; if (num_params >= 13)
g_hudset.g2 = 255; {
g_hudset.b2 = 250; cell *color2 = get_amxaddr(amx, params[13]);
g_hudset.a1 = static_cast<byte>(params[12]);
g_hudset.a2 = static_cast<byte>(color2[3]);
g_hudset.r2 = static_cast<byte>(color2[0]);
g_hudset.g2 = static_cast<byte>(color2[1]);
g_hudset.b2 = static_cast<byte>(color2[2]);
}
else
{
g_hudset.a1 = 0;
g_hudset.a2 = 0;
g_hudset.r2 = 255;
g_hudset.g2 = 255;
g_hudset.b2 = 250;
}
g_hudset.r1 = static_cast<byte>(params[1]); g_hudset.r1 = static_cast<byte>(params[1]);
g_hudset.g1 = static_cast<byte>(params[2]); g_hudset.g1 = static_cast<byte>(params[2]);
g_hudset.b1 = static_cast<byte>(params[3]); g_hudset.b1 = static_cast<byte>(params[3]);
@ -1418,7 +1434,7 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
pPlayer->vgui = false; pPlayer->vgui = false;
if (time == -1) if (time == -1)
pPlayer->menuexpire = INFINITE; pPlayer->menuexpire = static_cast<float>(INFINITE);
else else
pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time); pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time);
@ -1436,7 +1452,7 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
pPlayer->vgui = false; pPlayer->vgui = false;
if (time == -1) if (time == -1)
pPlayer->menuexpire = INFINITE; pPlayer->menuexpire = static_cast<float>(INFINITE);
else else
pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time); pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time);
@ -3693,7 +3709,7 @@ static cell AMX_NATIVE_CALL callfunc_end(AMX *amx, cell *params)
amx_Push(pAmx, gparams[i]); amx_Push(pAmx, gparams[i]);
} }
err = amx_Exec(pAmx, &retVal, func); err = amx_ExecPerf(pAmx, &retVal, func);
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {

View File

@ -196,7 +196,9 @@ extern bool g_official_mod;
extern bool g_dontprecache; extern bool g_dontprecache;
extern int g_srvindex; extern int g_srvindex;
extern cvar_t* amxmodx_version; extern cvar_t* amxmodx_version;
extern cvar_t* amxmodx_debug;
extern cvar_t* amxmodx_language; extern cvar_t* amxmodx_language;
extern cvar_t* amxmodx_perflog;
extern cvar_t* hostname; extern cvar_t* hostname;
extern cvar_t* mp_timelimit; extern cvar_t* mp_timelimit;
extern fakecmd_t g_fakecmd; extern fakecmd_t g_fakecmd;

View File

@ -289,7 +289,18 @@ size_t CAmxxReader::GetBufferSize()
m_pFile = NULL; \ m_pFile = NULL; \
return m_Status; \ return m_Status; \
} }
#define DATAREAD_RELEASE(addr, itemsize, itemcount) \
if (fread(addr, itemsize, itemcount, m_pFile) != static_cast<size_t>(itemcount)) \
{ \
if (feof(m_pFile)) \
m_Status = Err_FileInvalid; \
else \
m_Status = Err_FileRead; \
fclose(m_pFile); \
m_pFile = NULL; \
delete[] tempBuffer;\
return m_Status; \
}
CAmxxReader::Error CAmxxReader::GetSection(void *buffer) CAmxxReader::Error CAmxxReader::GetSection(void *buffer)
{ {
if (!m_pFile) if (!m_pFile)
@ -311,7 +322,7 @@ CAmxxReader::Error CAmxxReader::GetSection(void *buffer)
PluginEntry *pe = &(m_Bh.plugins[m_Entry]); PluginEntry *pe = &(m_Bh.plugins[m_Entry]);
char *tempBuffer = new char[m_SectionLength + 1]; char *tempBuffer = new char[m_SectionLength + 1];
fseek(m_pFile, pe->offs, SEEK_SET); fseek(m_pFile, pe->offs, SEEK_SET);
DATAREAD((void *)tempBuffer, 1, m_SectionLength); DATAREAD_RELEASE((void *)tempBuffer, 1, m_SectionLength);
uLongf destLen = GetBufferSize(); uLongf destLen = GetBufferSize();
int result = uncompress((Bytef *)buffer, &destLen, (Bytef *)tempBuffer, m_SectionLength); int result = uncompress((Bytef *)buffer, &destLen, (Bytef *)tempBuffer, m_SectionLength);
delete [] tempBuffer; delete [] tempBuffer;
@ -335,7 +346,7 @@ CAmxxReader::Error CAmxxReader::GetSection(void *buffer)
// read the data to a temporary buffer // read the data to a temporary buffer
char *tempBuffer = new char[m_SectionLength + 1]; char *tempBuffer = new char[m_SectionLength + 1];
//fread(tempBuffer, sizeof(char), m_SectionLength, m_pFile); //fread(tempBuffer, sizeof(char), m_SectionLength, m_pFile);
DATAREAD((void*)tempBuffer, 1, m_SectionLength); DATAREAD_RELEASE((void*)tempBuffer, 1, m_SectionLength);
// decompress // decompress
int result = uncompress((Bytef *)buffer, &destLen, (Bytef *)tempBuffer, m_SectionLength); int result = uncompress((Bytef *)buffer, &destLen, (Bytef *)tempBuffer, m_SectionLength);
delete [] tempBuffer; delete [] tempBuffer;

View File

@ -728,7 +728,7 @@ int Handler::HandleModule(const char *module, bool isClass)
m_pAmx->flags |= AMX_FLAG_PRENIT; m_pAmx->flags |= AMX_FLAG_PRENIT;
amx_Push(m_pAmx, isClass ? 1 : 0); amx_Push(m_pAmx, isClass ? 1 : 0);
amx_PushString(m_pAmx, &hea_addr, &phys_addr, module, 0, 0); amx_PushString(m_pAmx, &hea_addr, &phys_addr, module, 0, 0);
int err = amx_Exec(m_pAmx, &retval, m_iModFunc); int err = amx_ExecPerf(m_pAmx, &retval, m_iModFunc);
amx_Release(m_pAmx, hea_addr); amx_Release(m_pAmx, hea_addr);
m_pAmx->flags &= ~AMX_FLAG_PRENIT; m_pAmx->flags &= ~AMX_FLAG_PRENIT;
@ -768,7 +768,7 @@ int Handler::HandleNative(const char *native, int index, int trap)
amx_Push(m_pAmx, trap); amx_Push(m_pAmx, trap);
amx_Push(m_pAmx, index); amx_Push(m_pAmx, index);
amx_PushString(m_pAmx, &hea_addr, &phys_addr, native, 0, 0); amx_PushString(m_pAmx, &hea_addr, &phys_addr, native, 0, 0);
int err = amx_Exec(m_pAmx, &retval, m_iNatFunc); int err = amx_ExecPerf(m_pAmx, &retval, m_iNatFunc);
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {
//LogError() took care of something for us. //LogError() took care of something for us.
@ -841,7 +841,7 @@ int Handler::HandleError(const char *msg)
amx_PushString(m_pAmx, &hea_addr, &phys_addr, msg, 0, 0); amx_PushString(m_pAmx, &hea_addr, &phys_addr, msg, 0, 0);
amx_Push(m_pAmx, pDebugger ? 1 : 0); amx_Push(m_pAmx, pDebugger ? 1 : 0);
amx_Push(m_pAmx, error); amx_Push(m_pAmx, error);
int err = amx_Exec(m_pAmx, &result, m_iErrFunc); int err = amx_ExecPerf(m_pAmx, &result, m_iErrFunc);
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {
//handle this manually. //handle this manually.

View File

@ -96,12 +96,14 @@ static cell AMX_NATIVE_CALL read_file(AMX *amx, cell *params)
{ {
length = strlen(buffer); length = strlen(buffer);
if (buffer[length - 1] == '\n') if (length > 0)
{
if (buffer[length - 1] == '\n')
buffer[--length] = '\0'; buffer[--length] = '\0';
if (buffer[length - 1] == '\r') if (buffer[length - 1] == '\r')
buffer[--length] = '\0'; buffer[--length] = '\0';
}
cell* textLen = get_amxaddr(amx, params[5]); cell* textLen = get_amxaddr(amx, params[5]);
*textLen = set_amxstring_utf8(amx, params[3], buffer, length, params[4]); *textLen = set_amxstring_utf8(amx, params[3], buffer, length, params[4]);
@ -756,7 +758,7 @@ struct DirectoryHandle
bool valvefs; bool valvefs;
}; };
// native open_dir(dir[], firstfile[], length, &FileType:type = FileType_Unknown, bool:use_valve_fs=false, const valve_path_id[] = "GAME"); // native open_dir(const dir[], firstfile[], length, &FileType:type = FileType_Unknown, bool:use_valve_fs=false, const valve_path_id[] = "GAME");
static cell AMX_NATIVE_CALL amx_open_dir(AMX *amx, cell *params) static cell AMX_NATIVE_CALL amx_open_dir(AMX *amx, cell *params)
{ {
int length; int length;

View File

@ -135,9 +135,14 @@ cvar_t init_amxmodx_debug = {"amx_debug", "1", FCVAR_SPONLY};
cvar_t init_amxmodx_mldebug = {"amx_mldebug", "", FCVAR_SPONLY}; cvar_t init_amxmodx_mldebug = {"amx_mldebug", "", FCVAR_SPONLY};
cvar_t init_amxmodx_language = {"amx_language", "en", FCVAR_SERVER}; cvar_t init_amxmodx_language = {"amx_language", "en", FCVAR_SERVER};
cvar_t init_amxmodx_cl_langs = {"amx_client_languages", "1", FCVAR_SERVER}; cvar_t init_amxmodx_cl_langs = {"amx_client_languages", "1", FCVAR_SERVER};
cvar_t init_amxmodx_perflog = { "amx_perflog_ms", "1.0", FCVAR_SPONLY };
cvar_t* amxmodx_version = NULL; cvar_t* amxmodx_version = NULL;
cvar_t* amxmodx_modules = NULL; cvar_t* amxmodx_modules = NULL;
cvar_t* amxmodx_debug = NULL;
cvar_t* amxmodx_language = NULL; cvar_t* amxmodx_language = NULL;
cvar_t* amxmodx_perflog = NULL;
cvar_t* hostname = NULL; cvar_t* hostname = NULL;
cvar_t* mp_timelimit = NULL; cvar_t* mp_timelimit = NULL;
@ -1627,9 +1632,12 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
CVAR_REGISTER(&init_amxmodx_mldebug); CVAR_REGISTER(&init_amxmodx_mldebug);
CVAR_REGISTER(&init_amxmodx_language); CVAR_REGISTER(&init_amxmodx_language);
CVAR_REGISTER(&init_amxmodx_cl_langs); CVAR_REGISTER(&init_amxmodx_cl_langs);
CVAR_REGISTER(&init_amxmodx_perflog);
amxmodx_version = CVAR_GET_POINTER(init_amxmodx_version.name); amxmodx_version = CVAR_GET_POINTER(init_amxmodx_version.name);
amxmodx_debug = CVAR_GET_POINTER(init_amxmodx_debug.name);
amxmodx_language = CVAR_GET_POINTER(init_amxmodx_language.name); amxmodx_language = CVAR_GET_POINTER(init_amxmodx_language.name);
amxmodx_perflog = CVAR_GET_POINTER(init_amxmodx_perflog.name);
REG_SVR_COMMAND("amxx", amx_command); REG_SVR_COMMAND("amxx", amx_command);

View File

@ -187,7 +187,7 @@ int load_amxscript_internal(AMX *amx, void **program, const char *filename, char
bool will_be_debugged = false; bool will_be_debugged = false;
tagAMX_DBG *pDbg = NULL; tagAMX_DBG *pDbg = NULL;
if ((int)CVAR_GET_FLOAT("amx_debug") >= 2 || debug) if ((int)amxmodx_debug->value == 2 || debug)
{ {
if ((hdr->file_version < CUR_FILE_VERSION)) if ((hdr->file_version < CUR_FILE_VERSION))
{ {
@ -544,7 +544,7 @@ int set_amxnatives(AMX* amx, char error[128])
if (amx_FindPublic(amx, "plugin_natives", &idx) == AMX_ERR_NONE) if (amx_FindPublic(amx, "plugin_natives", &idx) == AMX_ERR_NONE)
{ {
if ((err = amx_Exec(amx, &retval, idx)) != AMX_ERR_NONE) if ((err = amx_ExecPerf(amx, &retval, idx)) != AMX_ERR_NONE)
{ {
Debugger::GenericMessage(amx, err); Debugger::GenericMessage(amx, err);
AMXXLOG_Log("An error occurred in plugin_natives. This is dangerous!"); AMXXLOG_Log("An error occurred in plugin_natives. This is dangerous!");

View File

@ -112,8 +112,7 @@ int amxx_DynaCallback(int idx, AMX *amx, cell *params)
pDebugger->BeginExec(); pDebugger->BeginExec();
} }
err=amx_Exec(pNative->amx, &ret, pNative->func); err = amx_ExecPerf(pNative->amx, &ret, pNative->func);
if (err != AMX_ERR_NONE) if (err != AMX_ERR_NONE)
{ {
if (pDebugger && pDebugger->ErrorExists()) if (pDebugger && pDebugger->ErrorExists())

View File

@ -930,7 +930,7 @@ static cell AMX_NATIVE_CALL menu_display(AMX *amx, cell *params)
time = params[4]; time = params[4];
if (time < 0) if (time < 0)
pPlayer->menuexpire = INFINITE; pPlayer->menuexpire = static_cast<float>(INFINITE);
else else
pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time); pPlayer->menuexpire = gpGlobals->time + static_cast<float>(time);

View File

@ -26,7 +26,7 @@ static cell AMX_NATIVE_CALL TrieClear(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
t->map.clear(); t->map.clear();
@ -40,7 +40,7 @@ static cell AMX_NATIVE_CALL TrieSetCell(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -76,7 +76,7 @@ static cell AMX_NATIVE_CALL TrieSetString(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -113,7 +113,7 @@ static cell AMX_NATIVE_CALL TrieSetArray(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -157,7 +157,7 @@ static cell AMX_NATIVE_CALL TrieGetCell(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -189,7 +189,7 @@ static cell AMX_NATIVE_CALL TrieGetString(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -236,7 +236,7 @@ static cell AMX_NATIVE_CALL TrieGetArray(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -297,7 +297,7 @@ static cell AMX_NATIVE_CALL TrieKeyExists(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -314,7 +314,7 @@ static cell AMX_NATIVE_CALL TrieDeleteKey(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -373,7 +373,7 @@ static cell AMX_NATIVE_CALL TrieGetSize(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -386,7 +386,7 @@ static cell AMX_NATIVE_CALL TrieSnapshotCreate(AMX *amx, cell *params)
if (!t) if (!t)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[1]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[1]);
return 0; return 0;
} }
@ -506,7 +506,7 @@ static cell AMX_NATIVE_CALL TrieIterCreate(AMX *amx, cell *params)
if (!handle) if (!handle)
{ {
LogError(amx, AMX_ERR_NATIVE, "Invalid map handle provided (%d)", params[arg_handle]); LogError(amx, AMX_ERR_NATIVE, "Invalid trie handle provided (%d)", params[arg_handle]);
return 0; return 0;
} }

View File

@ -221,11 +221,11 @@ void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, const ch
WRITE_BYTE(textparms.r1); WRITE_BYTE(textparms.r1);
WRITE_BYTE(textparms.g1); WRITE_BYTE(textparms.g1);
WRITE_BYTE(textparms.b1); WRITE_BYTE(textparms.b1);
WRITE_BYTE(0); WRITE_BYTE(textparms.a1);
WRITE_BYTE(255); WRITE_BYTE(textparms.r2);
WRITE_BYTE(255); WRITE_BYTE(textparms.g2);
WRITE_BYTE(250); WRITE_BYTE(textparms.b2);
WRITE_BYTE(0); WRITE_BYTE(textparms.a2);
WRITE_SHORT(FixedUnsigned16(textparms.fadeinTime, (1<<8))); WRITE_SHORT(FixedUnsigned16(textparms.fadeinTime, (1<<8)));
WRITE_SHORT(FixedUnsigned16(textparms.fadeoutTime, (1<<8))); WRITE_SHORT(FixedUnsigned16(textparms.fadeoutTime, (1<<8)));
WRITE_SHORT(FixedUnsigned16(textparms.holdTime, (1<<8))); WRITE_SHORT(FixedUnsigned16(textparms.holdTime, (1<<8)));

View File

@ -1,32 +1,126 @@
version: 1.0.{build} version: 1.0.{build}
clone_folder: c:\projects\amxmodx
install: environment:
- git submodule update --init --recursive fast_finish: false
- 'c:' allow_failures: true
- mkdir c:\nasm matrix:
- set PATH=c:\nasm\nasm-2.13.03;%PATH% - job_name: MacOS
- curl -L -o "c:\nasm\nasm.zip" https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/win32/nasm-2.13.03-win32.zip appveyor_build_worker_image: macos-mojave
- chdir c:\nasm job_group: Build
- 7z x nasm.zip
- chdir c:\projects - job_name: Windows
- git clone https://github.com/alliedmodders/ambuild appveyor_build_worker_image: Visual Studio 2015
- git clone https://github.com/alliedmodders/metamod-hl1 job_group: Build
- git clone https://github.com/alliedmodders/hlsdk
- ps: Start-FileDownload 'https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.1-win32.zip' for:
- 7z x mysql-connector-c-6.1.1-win32.zip -o"mysql" -
- cd mysql matrix:
- dir only:
- ren mysql-connector-c-6.1.1-win32 mysql-5.5 - job_name: Windows
- move /Y mysql-5.5 ..\
- cd ..\ambuild clone_folder: c:\projects\amxmodx
- c:\python27\python setup.py install install:
- cd ..\amxmodx - cmd: >-
cache: git submodule update --init --recursive
- c:\projects\*.zip -> appveyor.yml
- c:\projects\mysql-5.5 -> appveyor.yml c:
build_script:
- '"%VS140COMNTOOLS%\vsvars32.bat"' mkdir c:\nasm
- mkdir build
- cd build set PATH=c:\nasm\nasm-2.13.03;%PATH%
- c:\python27\python ../configure.py --enable-optimize --nasm="C:\nasm\nasm-2.13.03\nasm.exe"
- ambuild curl -L -o "c:\nasm\nasm.zip" https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/win32/nasm-2.13.03-win32.zip
chdir c:\nasm
7z x nasm.zip
chdir c:\projects
git clone https://github.com/alliedmodders/ambuild
git clone https://github.com/alliedmodders/metamod-hl1
git clone https://github.com/alliedmodders/hlsdk
curl -L -o "mysql-connector-c-6.1.1-win32.zip" https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.1-win32.zip
7z x mysql-connector-c-6.1.1-win32.zip -o"mysql"
cd mysql
dir
ren mysql-connector-c-6.1.1-win32 mysql-5.5
move /Y mysql-5.5 ..\
cd ..\ambuild
c:\python38\python setup.py install
set PATH=C:\Python38;C:\Python38\Scripts;%PATH%
cd ..\amxmodx
# cache:
# - c:\projects\*.zip -> appveyor.yml
# - c:\projects\mysql-5.5 -> appveyor.yml
build_script:
- cmd: >-
"%VS140COMNTOOLS%\vsvars32.bat"
mkdir build
cd build
c:\python38\python ../configure.py --enable-optimize --nasm="C:\nasm\nasm-2.13.03\nasm.exe"
echo %PATH%
ambuild
-
matrix:
only:
- job_name: MacOS
install:
- >-
git submodule update --init --recursive
mkdir -p $APPVEYOR_BUILD_FOLDER/deps
ls -alh
cd $APPVEYOR_BUILD_FOLDER/deps
mkdir -p amxmodx
../support/checkout-deps.sh
brew install nasm
nasm -v
export CC=clang
export CXX=clang++
clang --version
clang++ --version
cd $APPVEYOR_BUILD_FOLDER
build_script:
- >-
echo $PATH
mkdir build
cd build
python3 ../configure.py --enable-optimize --metamod=$APPVEYOR_BUILD_FOLDER/deps/metamod-am --hlsdk=$APPVEYOR_BUILD_FOLDER/deps/hlsdk --mysql=$APPVEYOR_BUILD_FOLDER/deps/mysql-5.5
ambuild

View File

@ -70,7 +70,7 @@ static ucell hex2long(char *s,char **n)
s++; s++;
} /* if */ } /* if */
assert((*s>='0' && *s<='9') || (*s>='a' && *s<='f') || (*s>='a' && *s<='f')); assert((*s>='0' && *s<='9') || (*s>='a' && *s<='f') || (*s>='A' && *s<='F'));
for ( ;; ) { for ( ;; ) {
if (*s>='0' && *s<='9') if (*s>='0' && *s<='9')
digit=*s-'0'; digit=*s-'0';

View File

@ -46,7 +46,7 @@
#define _MAX_PATH 250 #define _MAX_PATH 250
#endif #endif
#if !defined DIRSEP_CHAR #if !defined DIRSEP_CHAR
#if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE___ #if defined LINUX || defined __FreeBSD__ || defined __OpenBSD__ || defined __APPLE__
#define DIRSEP_CHAR '/' #define DIRSEP_CHAR '/'
#elif defined macintosh #elif defined macintosh
#define DIRSEP_CHAR ':' #define DIRSEP_CHAR ':'

View File

@ -181,3 +181,13 @@ amx_debug 1
// //
// Default value: "" // Default value: ""
amx_mldebug "" amx_mldebug ""
// Performance monitor
//
// If function executed more than amx_perflog_ms milliseconds
// print plugin and function name to current amxmodx log file.
//
// Time in milliseconds
// Default value: 1.0
//
amx_perflog_ms 1.0

View File

@ -221,3 +221,12 @@ amx_statsx_freeze -2.0
// Default value: 0 // Default value: 0
amx_restrmapsettings 0 amx_restrmapsettings 0
// Performance monitor
//
// If function executed more than amx_perflog_ms milliseconds
// print plugin and function name to current amxmodx log file.
//
// Time in milliseconds
// Default value: 1.0
//
amx_perflog_ms 1.0

View File

@ -218,3 +218,14 @@ amx_idle_ignore_immunity 1
// //
// Default value: 4 // Default value: 4
amx_unstuck_frequency 4 amx_unstuck_frequency 4
// Performance monitor
//
// If function executed more than amx_perflog_ms milliseconds
// print plugin and function name to current amxmodx log file.
//
// Time in milliseconds
// Default value: 1.0
//
amx_perflog_ms 1.0

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'csx') binary = AMXX.MetaModule(builder, 'csx')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../../public/sdk/amxxmodule.cpp', '../../../public/sdk/amxxmodule.cpp',
'CRank.cpp', 'CRank.cpp',

View File

@ -127,10 +127,10 @@ void CPlayer::Connect(const char* address ){
void CPlayer::restartStats(bool all) void CPlayer::restartStats(bool all)
{ {
if ( all ) memset(weapons,0,sizeof(weapons)); if ( all ) memset(&weapons,0,sizeof(weapons));
memset(weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats memset(&weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats
memset(attackers,0,sizeof(attackers)); memset(&attackers,0,sizeof(attackers));
memset(victims,0,sizeof(victims)); memset(&victims,0,sizeof(victims));
life = {}; life = {};
} }

View File

@ -229,8 +229,8 @@ void ListboxItemSelected(HWND hDlg) {
// Retrieve complete stats record of this position. Position in listbox should be same as rank in our records! // Retrieve complete stats record of this position. Position in listbox should be same as rank in our records!
RankSystem::RankStats* stats = g_rank.findEntryInRankByPos((int)nItem + 1); RankSystem::RankStats* stats = g_rank.findEntryInRankByPos((int)nItem + 1);
if (stats == NULL) { if (stats == NULL) {
char msg[] = "Error: Couldn't find the record by position! (nItem = %d)"; char msg[512];
sprintf(msg, msg, nItem); sprintf(msg, "Error: Couldn't find the record by position! (nItem = %d)", nItem);
MessageBox(hDlg, msg, "Oh fiddlesticks!", MB_OK); MessageBox(hDlg, msg, "Oh fiddlesticks!", MB_OK);
ClearStatsfields(hDlg); ClearStatsfields(hDlg);
return; return;

View File

@ -307,10 +307,10 @@ static cell AMX_NATIVE_CALL custom_wpn_dmg(AMX *amx, cell *params){ // wid,att,v
CPlayer* pAtt = GET_PLAYER_POINTER_I(att); CPlayer* pAtt = GET_PLAYER_POINTER_I(att);
CPlayer* pVic = GET_PLAYER_POINTER_I(vic); CPlayer* pVic = GET_PLAYER_POINTER_I(vic);
if ( !pAtt ) pAtt = pVic;
pVic->pEdict->v.dmg_inflictor = NULL; pVic->pEdict->v.dmg_inflictor = NULL;
pAtt->saveHit( pVic , weapon , dmg, aim ); pAtt->saveHit( pVic , weapon , dmg, aim );
if ( !pAtt ) pAtt = pVic;
int TA = 0; int TA = 0;
if ( (pVic->teamId == pAtt->teamId) && ( pVic != pAtt) ) if ( (pVic->teamId == pAtt->teamId) && ( pVic != pAtt) )
TA = 1; TA = 1;

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'dodfun') binary = AMXX.MetaModule(builder, 'dodfun')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../../public/sdk/amxxmodule.cpp', '../../../public/sdk/amxxmodule.cpp',
'NBase.cpp', 'NBase.cpp',

View File

@ -506,7 +506,7 @@ static cell AMX_NATIVE_CALL objective_set_data(AMX *amx, cell *params){ // index
GET_CP_PD(pent).model_body_neutral = ivalue; GET_CP_PD(pent).model_body_neutral = ivalue;
return 1; return 1;
case CP_model_body_allies : case CP_model_body_allies :
GET_CP_PD(pent).model_body_axis = ivalue; GET_CP_PD(pent).model_body_allies = ivalue;
return 1; return 1;
case CP_model_body_axis : case CP_model_body_axis :
GET_CP_PD(pent).model_body_axis = ivalue; GET_CP_PD(pent).model_body_axis = ivalue;

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'dodx') binary = AMXX.MetaModule(builder, 'dodx')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../../public/sdk/amxxmodule.cpp', '../../../public/sdk/amxxmodule.cpp',
'CRank.cpp', 'CRank.cpp',

View File

@ -94,14 +94,14 @@ void CPlayer::restartStats(bool all)
{ {
if ( all ) if ( all )
{ {
memset(weapons,0,sizeof(weapons)); memset(&weapons,0,sizeof(weapons));
memset(static_cast<void *>(&round),0,sizeof(round)); memset(static_cast<void *>(&round),0,sizeof(round));
memset(weaponsRnd,0,sizeof(weaponsRnd)); memset(&weaponsRnd,0,sizeof(weaponsRnd));
} }
memset(weaponsLife,0,sizeof(weaponsLife)); //DEC-Weapon (Round) stats memset(&weaponsLife,0,sizeof(weaponsLife)); //DEC-Weapon (Round) stats
memset(attackers,0,sizeof(attackers)); memset(&attackers,0,sizeof(attackers));
memset(victims,0,sizeof(victims)); memset(&victims,0,sizeof(victims));
life = {}; life = {};
} }
@ -434,7 +434,7 @@ void CPlayer::WeaponsCheck(int weapons)
int old; int old;
int cur; int cur;
for(int i = 1; i < MAX_WEAPONS; ++i) for(int i = 1; i < DODMAX_WEAPONS; ++i)
{ {
// Check to see we are not talking about a grenade and we have changed // Check to see we are not talking about a grenade and we have changed
if(i != 13 && i != 14 && i != 15 && i != 16 && i != 36) if(i != 13 && i != 14 && i != 15 && i != 16 && i != 36)

View File

@ -263,7 +263,7 @@ static cell AMX_NATIVE_CALL dod_weapon_type(AMX *amx, cell *params) /* 2 params
{ {
int weaponsbit = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element int weaponsbit = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element
for(int x = 1; x < MAX_WEAPONS; ++x) for(int x = 1; x < DODMAX_WEAPONS; ++x)
{ {
if((weaponsbit&(1<<x)) > 0) if((weaponsbit&(1<<x)) > 0)
{ {
@ -387,12 +387,12 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params)
pVic->pEdict->v.dmg_inflictor = NULL; pVic->pEdict->v.dmg_inflictor = NULL;
if(pAtt->index != pVic->index)
pAtt->saveHit(pVic , weapon , dmg, aim);
if(!pAtt) if(!pAtt)
pAtt = pVic; pAtt = pVic;
if(pAtt->index != pVic->index)
pAtt->saveHit(pVic , weapon , dmg, aim);
int TA = 0; int TA = 0;
if((pVic->pEdict->v.team == pAtt->pEdict->v.team) && (pVic != pAtt)) if((pVic->pEdict->v.team == pAtt->pEdict->v.team) && (pVic != pAtt))

View File

@ -173,7 +173,7 @@ void PlayerPreThink_Post(edict_t *pEntity)
{ {
pPlayer->clearRound = 0.0f; pPlayer->clearRound = 0.0f;
memset(static_cast<void *>(&pPlayer->round),0,sizeof(pPlayer->round)); memset(static_cast<void *>(&pPlayer->round),0,sizeof(pPlayer->round));
memset(pPlayer->weaponsRnd,0,sizeof(pPlayer->weaponsRnd)); memset(&pPlayer->weaponsRnd,0,sizeof(pPlayer->weaponsRnd));
} }
if (pPlayer->sendScore && pPlayer->sendScore < gpGlobals->time) if (pPlayer->sendScore && pPlayer->sendScore < gpGlobals->time)

View File

@ -222,7 +222,7 @@ void Client_AmmoX(void* mValue)
case 1: case 1:
if (!mPlayer ) if (!mPlayer )
break; break;
for(int i = 1; i < MAX_WEAPONS ; ++i) for(int i = 1; i < DODMAX_WEAPONS ; ++i)
{ {
if (iAmmo == weaponData[i].ammoSlot) if (iAmmo == weaponData[i].ammoSlot)
mPlayer->weapons[i].ammo = *(int*)mValue; mPlayer->weapons[i].ammo = *(int*)mValue;
@ -244,7 +244,7 @@ void Client_AmmoShort(void* mValue)
if(!mPlayer ) if(!mPlayer )
break; break;
for(int i = 1; i < MAX_WEAPONS ; ++i) for(int i = 1; i < DODMAX_WEAPONS ; ++i)
{ {
if (iAmmo == weaponData[i].ammoSlot) if (iAmmo == weaponData[i].ammoSlot)
mPlayer->weapons[i].ammo = *(int*)mValue; mPlayer->weapons[i].ammo = *(int*)mValue;

View File

@ -34,31 +34,26 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
{ {
gfm_tr->fAllSolid = *ptr; gfm_tr->fAllSolid = *ptr;
return 1; return 1;
break;
} }
case TR_StartSolid: case TR_StartSolid:
{ {
gfm_tr->fStartSolid = *ptr; gfm_tr->fStartSolid = *ptr;
return 1; return 1;
break;
} }
case TR_InOpen: case TR_InOpen:
{ {
gfm_tr->fInOpen = *ptr; gfm_tr->fInOpen = *ptr;
return 1; return 1;
break;
} }
case TR_InWater: case TR_InWater:
{ {
gfm_tr->fInWater = *ptr; gfm_tr->fInWater = *ptr;
return 1; return 1;
break;
} }
case TR_flFraction: case TR_flFraction:
{ {
gfm_tr->flFraction = amx_ctof(*ptr); gfm_tr->flFraction = amx_ctof(*ptr);
return 1; return 1;
break;
} }
case TR_vecEndPos: case TR_vecEndPos:
{ {
@ -66,13 +61,11 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
gfm_tr->vecEndPos.y = amx_ctof(ptr[1]); gfm_tr->vecEndPos.y = amx_ctof(ptr[1]);
gfm_tr->vecEndPos.z = amx_ctof(ptr[2]); gfm_tr->vecEndPos.z = amx_ctof(ptr[2]);
return 1; return 1;
break;
} }
case TR_flPlaneDist: case TR_flPlaneDist:
{ {
gfm_tr->flPlaneDist = amx_ctof(*ptr); gfm_tr->flPlaneDist = amx_ctof(*ptr);
return 1; return 1;
break;
} }
case TR_vecPlaneNormal: case TR_vecPlaneNormal:
{ {
@ -80,7 +73,6 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
gfm_tr->vecPlaneNormal.y = amx_ctof(ptr[1]); gfm_tr->vecPlaneNormal.y = amx_ctof(ptr[1]);
gfm_tr->vecPlaneNormal.z = amx_ctof(ptr[2]); gfm_tr->vecPlaneNormal.z = amx_ctof(ptr[2]);
return 1; return 1;
break;
} }
case TR_pHit: case TR_pHit:
{ {
@ -96,14 +88,12 @@ static cell AMX_NATIVE_CALL set_tr(AMX *amx, cell *params)
{ {
gfm_tr->iHitgroup = *ptr; gfm_tr->iHitgroup = *ptr;
return 1; return 1;
break;
}
default:
{
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
} }
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params) static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
@ -116,29 +106,24 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
case TR_AllSolid: case TR_AllSolid:
{ {
return gfm_tr->fAllSolid; return gfm_tr->fAllSolid;
break;
} }
case TR_StartSolid: case TR_StartSolid:
{ {
return gfm_tr->fStartSolid; return gfm_tr->fStartSolid;
break;
} }
case TR_InOpen: case TR_InOpen:
{ {
return gfm_tr->fInOpen; return gfm_tr->fInOpen;
break;
} }
case TR_InWater: case TR_InWater:
{ {
return gfm_tr->fInWater; return gfm_tr->fInWater;
break;
} }
case TR_flFraction: case TR_flFraction:
{ {
ptr = MF_GetAmxAddr(amx, params[2]); ptr = MF_GetAmxAddr(amx, params[2]);
*ptr = amx_ftoc(gfm_tr->flFraction); *ptr = amx_ftoc(gfm_tr->flFraction);
return 1; return 1;
break;
} }
case TR_vecEndPos: case TR_vecEndPos:
{ {
@ -147,14 +132,12 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
ptr[1] = amx_ftoc(gfm_tr->vecEndPos.y); ptr[1] = amx_ftoc(gfm_tr->vecEndPos.y);
ptr[2] = amx_ftoc(gfm_tr->vecEndPos.z); ptr[2] = amx_ftoc(gfm_tr->vecEndPos.z);
return 1; return 1;
break;
} }
case TR_flPlaneDist: case TR_flPlaneDist:
{ {
ptr = MF_GetAmxAddr(amx, params[2]); ptr = MF_GetAmxAddr(amx, params[2]);
*ptr = amx_ftoc(gfm_tr->flPlaneDist); *ptr = amx_ftoc(gfm_tr->flPlaneDist);
return 1; return 1;
break;
} }
case TR_vecPlaneNormal: case TR_vecPlaneNormal:
{ {
@ -163,26 +146,21 @@ static cell AMX_NATIVE_CALL get_tr(AMX *amx, cell *params)
ptr[1] = amx_ftoc(gfm_tr->vecPlaneNormal.y); ptr[1] = amx_ftoc(gfm_tr->vecPlaneNormal.y);
ptr[2] = amx_ftoc(gfm_tr->vecPlaneNormal.z); ptr[2] = amx_ftoc(gfm_tr->vecPlaneNormal.z);
return 1; return 1;
break;
} }
case TR_pHit: case TR_pHit:
{ {
if (FNullEnt(gfm_tr->pHit)) if (FNullEnt(gfm_tr->pHit))
return -1; return -1;
return ENTINDEX(gfm_tr->pHit); return ENTINDEX(gfm_tr->pHit);
break;
} }
case TR_iHitgroup: case TR_iHitgroup:
{ {
return gfm_tr->iHitgroup; return gfm_tr->iHitgroup;
break;
}
default:
{
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
} }
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
AMX_NATIVE_INFO tr_Natives[] = AMX_NATIVE_INFO tr_Natives[] =

View File

@ -48,31 +48,26 @@ static cell AMX_NATIVE_CALL set_tr2(AMX *amx, cell *params)
{ {
tr->fAllSolid = *ptr; tr->fAllSolid = *ptr;
return 1; return 1;
break;
} }
case TR_InOpen: case TR_InOpen:
{ {
tr->fInOpen = *ptr; tr->fInOpen = *ptr;
return 1; return 1;
break;
} }
case TR_StartSolid: case TR_StartSolid:
{ {
tr->fStartSolid = *ptr; tr->fStartSolid = *ptr;
return 1; return 1;
break;
} }
case TR_InWater: case TR_InWater:
{ {
tr->fInWater = *ptr; tr->fInWater = *ptr;
return 1; return 1;
break;
} }
case TR_flFraction: case TR_flFraction:
{ {
tr->flFraction = amx_ctof(*ptr); tr->flFraction = amx_ctof(*ptr);
return 1; return 1;
break;
} }
case TR_vecEndPos: case TR_vecEndPos:
{ {
@ -80,13 +75,11 @@ static cell AMX_NATIVE_CALL set_tr2(AMX *amx, cell *params)
tr->vecEndPos.y = amx_ctof(ptr[1]); tr->vecEndPos.y = amx_ctof(ptr[1]);
tr->vecEndPos.z = amx_ctof(ptr[2]); tr->vecEndPos.z = amx_ctof(ptr[2]);
return 1; return 1;
break;
} }
case TR_flPlaneDist: case TR_flPlaneDist:
{ {
tr->flPlaneDist = amx_ctof(*ptr); tr->flPlaneDist = amx_ctof(*ptr);
return 1; return 1;
break;
} }
case TR_vecPlaneNormal: case TR_vecPlaneNormal:
{ {
@ -94,7 +87,6 @@ static cell AMX_NATIVE_CALL set_tr2(AMX *amx, cell *params)
tr->vecPlaneNormal.y = amx_ctof(ptr[1]); tr->vecPlaneNormal.y = amx_ctof(ptr[1]);
tr->vecPlaneNormal.z = amx_ctof(ptr[2]); tr->vecPlaneNormal.z = amx_ctof(ptr[2]);
return 1; return 1;
break;
} }
case TR_pHit: case TR_pHit:
{ {
@ -110,15 +102,11 @@ static cell AMX_NATIVE_CALL set_tr2(AMX *amx, cell *params)
{ {
tr->iHitgroup = *ptr; tr->iHitgroup = *ptr;
return 1; return 1;
break;
}
default:
{
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
} }
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0; return 0;
} }
@ -137,29 +125,24 @@ static cell AMX_NATIVE_CALL get_tr2(AMX *amx, cell *params)
case TR_AllSolid: case TR_AllSolid:
{ {
return tr->fAllSolid; return tr->fAllSolid;
break;
} }
case TR_InOpen: case TR_InOpen:
{ {
return tr->fInOpen; return tr->fInOpen;
break;
} }
case TR_StartSolid: case TR_StartSolid:
{ {
return tr->fStartSolid; return tr->fStartSolid;
break;
} }
case TR_InWater: case TR_InWater:
{ {
return tr->fInWater; return tr->fInWater;
break;
} }
case TR_flFraction: case TR_flFraction:
{ {
ptr = MF_GetAmxAddr(amx, params[3]); ptr = MF_GetAmxAddr(amx, params[3]);
*ptr = amx_ftoc(tr->flFraction); *ptr = amx_ftoc(tr->flFraction);
return 1; return 1;
break;
} }
case TR_vecEndPos: case TR_vecEndPos:
{ {
@ -168,14 +151,12 @@ static cell AMX_NATIVE_CALL get_tr2(AMX *amx, cell *params)
ptr[1] = amx_ftoc(tr->vecEndPos.y); ptr[1] = amx_ftoc(tr->vecEndPos.y);
ptr[2] = amx_ftoc(tr->vecEndPos.z); ptr[2] = amx_ftoc(tr->vecEndPos.z);
return 1; return 1;
break;
} }
case TR_flPlaneDist: case TR_flPlaneDist:
{ {
ptr = MF_GetAmxAddr(amx, params[3]); ptr = MF_GetAmxAddr(amx, params[3]);
*ptr = amx_ftoc(tr->flPlaneDist); *ptr = amx_ftoc(tr->flPlaneDist);
return 1; return 1;
break;
} }
case TR_vecPlaneNormal: case TR_vecPlaneNormal:
{ {
@ -184,27 +165,21 @@ static cell AMX_NATIVE_CALL get_tr2(AMX *amx, cell *params)
ptr[1] = amx_ftoc(tr->vecPlaneNormal.y); ptr[1] = amx_ftoc(tr->vecPlaneNormal.y);
ptr[2] = amx_ftoc(tr->vecPlaneNormal.z); ptr[2] = amx_ftoc(tr->vecPlaneNormal.z);
return 1; return 1;
break;
} }
case TR_pHit: case TR_pHit:
{ {
if (FNullEnt(tr->pHit)) if (FNullEnt(tr->pHit))
return -1; return -1;
return ENTINDEX(tr->pHit); return ENTINDEX(tr->pHit);
break;
} }
case TR_iHitgroup: case TR_iHitgroup:
{ {
return tr->iHitgroup; return tr->iHitgroup;
break;
}
default:
{
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0;
} }
} }
MF_LogError(amx, AMX_ERR_NATIVE, "Unknown TraceResult member %d", params[2]);
return 0; return 0;
} }
@ -221,7 +196,6 @@ static cell AMX_NATIVE_CALL get_kvd(AMX *amx, cell *params)
case KV_fHandled: case KV_fHandled:
{ {
return kvd->fHandled; return kvd->fHandled;
break;
} }
case KV_ClassName: case KV_ClassName:
{ {
@ -232,7 +206,6 @@ static cell AMX_NATIVE_CALL get_kvd(AMX *amx, cell *params)
} }
cell *ptr = MF_GetAmxAddr(amx, params[4]); cell *ptr = MF_GetAmxAddr(amx, params[4]);
return MF_SetAmxString(amx, params[3], kvd->szClassName, (int)*ptr); return MF_SetAmxString(amx, params[3], kvd->szClassName, (int)*ptr);
break;
} }
case KV_KeyName: case KV_KeyName:
{ {
@ -243,7 +216,6 @@ static cell AMX_NATIVE_CALL get_kvd(AMX *amx, cell *params)
} }
cell *ptr = MF_GetAmxAddr(amx, params[4]); cell *ptr = MF_GetAmxAddr(amx, params[4]);
return MF_SetAmxString(amx, params[3], kvd->szKeyName, (int)*ptr); return MF_SetAmxString(amx, params[3], kvd->szKeyName, (int)*ptr);
break;
} }
case KV_Value: case KV_Value:
{ {
@ -254,7 +226,6 @@ static cell AMX_NATIVE_CALL get_kvd(AMX *amx, cell *params)
} }
cell *ptr = MF_GetAmxAddr(amx, params[4]); cell *ptr = MF_GetAmxAddr(amx, params[4]);
return MF_SetAmxString(amx, params[3], kvd->szValue, (int)*ptr); return MF_SetAmxString(amx, params[3], kvd->szValue, (int)*ptr);
break;
} }
} }
@ -301,28 +272,24 @@ static cell AMX_NATIVE_CALL set_kvd(AMX *amx, cell *params)
{ {
kvd->fHandled = (int)*ptr; kvd->fHandled = (int)*ptr;
return 1; return 1;
break;
} }
case KV_ClassName: case KV_ClassName:
{ {
kvdw->cls = MF_GetAmxString(amx, params[3], 0, &len); kvdw->cls = MF_GetAmxString(amx, params[3], 0, &len);
kvd->szClassName = const_cast<char *>(kvdw->cls.chars()); kvd->szClassName = const_cast<char *>(kvdw->cls.chars());
return 1; return 1;
break;
} }
case KV_KeyName: case KV_KeyName:
{ {
kvdw->key = MF_GetAmxString(amx, params[3], 0, &len); kvdw->key = MF_GetAmxString(amx, params[3], 0, &len);
kvd->szKeyName = const_cast<char *>(kvdw->key.chars()); kvd->szKeyName = const_cast<char *>(kvdw->key.chars());
return 1; return 1;
break;
} }
case KV_Value: case KV_Value:
{ {
kvdw->val = MF_GetAmxString(amx, params[3], 0, &len); kvdw->val = MF_GetAmxString(amx, params[3], 0, &len);
kvd->szValue = const_cast<char *>(kvdw->val.chars()); kvd->szValue = const_cast<char *>(kvdw->val.chars());
return 1; return 1;
break;
} }
} }
@ -1110,9 +1077,9 @@ static cell AMX_NATIVE_CALL set_es(AMX *amx, cell *params)
es->vuser3.z = amx_ctof(ptr[2]); es->vuser3.z = amx_ctof(ptr[2]);
return 1; return 1;
case ES_vUser4: case ES_vUser4:
es->vuser3.x = amx_ctof(ptr[0]); es->vuser4.x = amx_ctof(ptr[0]);
es->vuser3.y = amx_ctof(ptr[1]); es->vuser4.y = amx_ctof(ptr[1]);
es->vuser3.z = amx_ctof(ptr[2]); es->vuser4.z = amx_ctof(ptr[2]);
return 1; return 1;
} }

View File

@ -80,8 +80,7 @@ static cell AMX_NATIVE_CALL fm_return(AMX *amx, cell *params)
} }
default: default:
{ {
return 0; return 0;
break;
} }
} }

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'fun') binary = AMXX.MetaModule(builder, 'fun')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../public/sdk/amxxmodule.cpp', '../../public/sdk/amxxmodule.cpp',
'../../public/memtools/MemoryUtils.cpp', '../../public/memtools/MemoryUtils.cpp',

View File

@ -697,6 +697,12 @@ static cell AMX_NATIVE_CALL amxx_json_object_set_value(AMX *amx, cell *params)
return 0; return 0;
} }
if (!JsonMngr->IsValidHandle(params[3]))
{
MF_LogError(amx, AMX_ERR_NATIVE, "Invalid JSON value! %d", params[3]);
return 0;
}
int len; int len;
auto name = MF_GetAmxString(amx, params[2], 0, &len); auto name = MF_GetAmxString(amx, params[2], 0, &len);

View File

@ -17,18 +17,18 @@ if AMXX.mysql_path:
binary.sources = [] binary.sources = []
if builder.target_platform is 'linux' or builder.target_platform is 'mac': if builder.target_platform == 'linux' or builder.target_platform == 'mac':
binary.compiler.defines += ['stricmp=strcasecmp'] binary.compiler.defines += ['stricmp=strcasecmp']
binary.compiler.linkflags += [ binary.compiler.linkflags += [
os.path.join(AMXX.mysql_path, 'lib', 'libmysqlclient_r.a'), os.path.join(AMXX.mysql_path, 'lib', 'libmysqlclient_r.a'),
'-lpthread', '-lpthread',
'-lm', '-lm',
] ]
if builder.target_platform is 'linux': if builder.target_platform == 'linux':
binary.compiler.linkflags += [ binary.compiler.linkflags += [
'-lrt' '-lrt'
] ]
elif builder.target_platform is 'windows': elif builder.target_platform == 'windows':
binary.compiler.linkflags += [ binary.compiler.linkflags += [
os.path.join(AMXX.mysql_path, 'lib', 'mysqlclient.lib'), os.path.join(AMXX.mysql_path, 'lib', 'mysqlclient.lib'),
'ws2_32.lib', 'ws2_32.lib',

View File

@ -277,7 +277,6 @@ static cell AMX_NATIVE_CALL SQL_ReadResult(AMX *amx, cell *params)
{ {
int num = row->GetInt(col); int num = row->GetInt(col);
return num; return num;
break;
} }
default: default:
{ {

View File

@ -247,7 +247,6 @@ static cell AMX_NATIVE_CALL dbi_field(AMX *amx, cell *params)
case 2: case 2:
{ {
return atoi(data); return atoi(data);
break;
} }
case 3: case 3:
{ {
@ -255,12 +254,10 @@ static cell AMX_NATIVE_CALL dbi_field(AMX *amx, cell *params)
REAL fdata = atof(data); REAL fdata = atof(data);
*destaddr = amx_ftoc(fdata); *destaddr = amx_ftoc(fdata);
return 1; return 1;
break;
} }
case 4: case 4:
{ {
return MF_SetAmxString(amx, params[3], data, params[4]); return MF_SetAmxString(amx, params[3], data, params[4]);
break;
} }
} }
@ -315,7 +312,6 @@ static cell AMX_NATIVE_CALL dbi_result(AMX *amx, cell *params)
case 2: case 2:
{ {
return atoi(data); return atoi(data);
break;
} }
case 3: case 3:
{ {
@ -323,12 +319,10 @@ static cell AMX_NATIVE_CALL dbi_result(AMX *amx, cell *params)
REAL fdata = atof(data); REAL fdata = atof(data);
*destaddr = amx_ftoc(fdata); *destaddr = amx_ftoc(fdata);
return 1; return 1;
break;
} }
case 4: case 4:
{ {
return MF_SetAmxString(amx, params[3], data, params[4]); return MF_SetAmxString(amx, params[3], data, params[4]);
break;
} }
} }

View File

@ -115,20 +115,17 @@ static cell nvault_get(AMX *amx, cell *params)
case 2: case 2:
{ {
return atoi(val); return atoi(val);
break;
} }
case 3: case 3:
{ {
cell *fAddr = MF_GetAmxAddr(amx, params[3]); cell *fAddr = MF_GetAmxAddr(amx, params[3]);
*fAddr = amx_ftoc((REAL)atof(val)); *fAddr = amx_ftoc((REAL)atof(val));
return 1; return 1;
break;
} }
case 4: case 4:
{ {
len = *(MF_GetAmxAddr(amx, params[4])); len = *(MF_GetAmxAddr(amx, params[4]));
return MF_SetAmxString(amx, params[3], val, len); return MF_SetAmxString(amx, params[3], val, len);
break;
} }
} }

View File

@ -654,7 +654,7 @@ int RegEx::Replace(char *text, size_t textMaxLen, const char *replace, size_t re
* $nn or ${nn} * $nn or ${nn}
* ^ ^ * ^ ^
*/ */
if (*walk && *walk >= '0' && *walk <= '9') if (*walk >= '0' && *walk <= '9')
{ {
backref = backref * 10 + *walk - '0'; backref = backref * 10 + *walk - '0';
++walk; ++walk;

View File

@ -12,7 +12,7 @@ binary.compiler.defines += [
'HAVE_STDINT_H', 'HAVE_STDINT_H',
] ]
if builder.target_platform is 'linux' or builder.target_platform is 'mac': if builder.target_platform == 'linux' or builder.target_platform == 'mac':
binary.compiler.defines += ['stricmp=strcasecmp'] binary.compiler.defines += ['stricmp=strcasecmp']
binary.compiler.postlink += ['-lpthread'] binary.compiler.postlink += ['-lpthread']

View File

@ -273,7 +273,6 @@ static cell AMX_NATIVE_CALL SQL_ReadResult(AMX *amx, cell *params)
{ {
int num = row->GetInt(col); int num = row->GetInt(col);
return num; return num;
break;
} }
default: default:
{ {

View File

@ -245,7 +245,6 @@ static cell AMX_NATIVE_CALL dbi_field(AMX *amx, cell *params)
case 2: case 2:
{ {
return atoi(data); return atoi(data);
break;
} }
case 3: case 3:
{ {
@ -253,12 +252,10 @@ static cell AMX_NATIVE_CALL dbi_field(AMX *amx, cell *params)
REAL fdata = atof(data); REAL fdata = atof(data);
*destaddr = amx_ftoc(fdata); *destaddr = amx_ftoc(fdata);
return 1; return 1;
break;
} }
case 4: case 4:
{ {
return MF_SetAmxString(amx, params[3], data, params[4]); return MF_SetAmxString(amx, params[3], data, params[4]);
break;
} }
} }
@ -309,7 +306,6 @@ static cell AMX_NATIVE_CALL dbi_result(AMX *amx, cell *params)
case 2: case 2:
{ {
return atoi(data); return atoi(data);
break;
} }
case 3: case 3:
{ {
@ -317,12 +313,10 @@ static cell AMX_NATIVE_CALL dbi_result(AMX *amx, cell *params)
REAL fdata = atof(data); REAL fdata = atof(data);
*destaddr = amx_ftoc(fdata); *destaddr = amx_ftoc(fdata);
return 1; return 1;
break;
} }
case 4: case 4:
{ {
return MF_SetAmxString(amx, params[3], data, params[4]); return MF_SetAmxString(amx, params[3], data, params[4]);
break;
} }
} }

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'tfcx') binary = AMXX.MetaModule(builder, 'tfcx')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../public/sdk/amxxmodule.cpp', '../../public/sdk/amxxmodule.cpp',
'CRank.cpp', 'CRank.cpp',

View File

@ -126,10 +126,10 @@ void CPlayer::Connect(const char* address ){
void CPlayer::restartStats(bool all) void CPlayer::restartStats(bool all)
{ {
if ( all ) memset(weapons,0,sizeof(weapons)); if ( all ) memset(&weapons,0,sizeof(weapons));
memset(weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats memset(&weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats
memset(attackers,0,sizeof(attackers)); memset(&attackers,0,sizeof(attackers));
memset(victims,0,sizeof(victims)); memset(&victims,0,sizeof(victims));
life = {}; life = {};
} }

View File

@ -161,10 +161,10 @@ struct CPlayer {
int clip; int clip;
}; };
PlayerWeapon weapons[MAX_WEAPONS]; PlayerWeapon weapons[TFCMAX_WEAPONS];
PlayerWeapon attackers[33]; PlayerWeapon attackers[33];
PlayerWeapon victims[33]; PlayerWeapon victims[33];
Stats weaponsRnd[MAX_WEAPONS]; // DEC-Weapon (Round) stats Stats weaponsRnd[TFCMAX_WEAPONS]; // DEC-Weapon (Round) stats
Stats life; Stats life;
int teamId; int teamId;

View File

@ -262,10 +262,10 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg
CPlayer* pAtt = GET_PLAYER_POINTER_I(att); CPlayer* pAtt = GET_PLAYER_POINTER_I(att);
CPlayer* pVic = GET_PLAYER_POINTER_I(vic); CPlayer* pVic = GET_PLAYER_POINTER_I(vic);
if ( !pAtt ) pAtt = pVic;
pVic->pEdict->v.dmg_inflictor = NULL; pVic->pEdict->v.dmg_inflictor = NULL;
pAtt->saveHit( pVic , weapon , dmg, aim ); pAtt->saveHit( pVic , weapon , dmg, aim );
if ( !pAtt ) pAtt = pVic;
int TA = 0; int TA = 0;
if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) ) if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) )
TA = 1; TA = 1;

View File

@ -47,7 +47,7 @@ bool isModuleActive(){
bool util_strncmp( const char *sz1, const char *sz2, int size){ bool util_strncmp( const char *sz1, const char *sz2, int size){
int i = 0; int i = 0;
while( sz1[i] && i<=size){ while( i<=size && sz1[i] ){
if ( sz1[i] != sz2[i] ) if ( sz1[i] != sz2[i] )
return false; return false;
i++; i++;

View File

@ -46,7 +46,7 @@ void Client_WeaponList(void* mValue){
break; break;
case 7: case 7:
int iId = *(int*)mValue; int iId = *(int*)mValue;
if ( (iId < 0 || iId >= MAX_WEAPONS ) || ( wpnList & (1<<iId) ) ) if ( (iId < 0 || iId >= TFCMAX_WEAPONS ) || ( wpnList & (1<<iId) ) )
break; break;
wpnList |= (1<<iId); wpnList |= (1<<iId);
@ -121,10 +121,23 @@ void Client_Damage(void* mValue){
if ( FNullEnt( enemy ) ) if ( FNullEnt( enemy ) )
break; break;
#ifdef _DEBUG_TFCX
ALERT(at_logged, "Clinet_damage Called with state-%d dmg-%d Netname'%s'(Class'%s') slno-'%d'\n",
mState, damage, STRING(mPlayer->pEdict->v.netname),
STRING(mPlayer->pEdict->v.classname), mPlayer->pEdict->serialnumber);
ALERT(at_logged, " Called with enemy-slno-%d Netname:'%s'(Class'%s')\n", mPlayer->pEdict->serialnumber,
STRING(enemy->v.netname), STRING(enemy->v.classname));
#endif // _DEBUG_TFCX
if (enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT) ) { // attacker is player and his active weapon if (enemy->v.flags & (FL_CLIENT | FL_FAKECLIENT) ) { // attacker is player and his active weapon
pAttacker = GET_PLAYER_POINTER(enemy); pAttacker = GET_PLAYER_POINTER(enemy);
#ifdef _DEBUG_TFCX
ALERT(at_logged, " attacker is player and his active weapon id-%d, has flags - (FL_CLIENT | FL_FAKECLIENT)\n\n", pAttacker->current);
#endif // _DEBUG_TFCX
aim = pAttacker->aiming; aim = pAttacker->aiming;
weapon = pAttacker->current; weapon = pAttacker->current;
@ -150,6 +163,15 @@ void Client_Damage(void* mValue){
pAttacker = GET_PLAYER_POINTER(enemy->v.owner); pAttacker = GET_PLAYER_POINTER(enemy->v.owner);
#ifdef _DEBUG_TFCX
ALERT(at_logged, " attacker is Class'%s'(with its enmy as Netname'%s'[Class'%s']) and his owner is '%s(%s)' enemy->owner has flags - FL_CLIENT | FL_FAKECLIENT\n\n",
(enemy ? STRING(enemy->v.classname) : "Null"),
(enemy->v.enemy ? STRING(enemy->v.enemy->v.netname) : "Null"),
(enemy->v.enemy ? STRING(enemy->v.enemy->v.classname) : "Null"),
(enemy->v.owner ? STRING(enemy->v.owner->v.netname) : "Null"),
(enemy->v.owner ? STRING(enemy->v.owner->v.classname) : "Null"));
#endif // _DEBUG_TFCX
const char *szClass = STRING(enemy->v.classname); const char *szClass = STRING(enemy->v.classname);
switch(szClass[10]){ switch(szClass[10]){
@ -185,16 +207,8 @@ void Client_Damage(void* mValue){
if ( !weapon ) { if ( !weapon ) {
switch(szClass[3]){ switch(szClass[3]){
case 'e': case 'e':
weapon = TFC_WPN_TIMER; // TFC_WPN_MEDKIT ?? weapon = TFC_WPN_TIMER; // TFC_WPN_MEDKIT ?? //ShootingKing: Class - "timer"
pAttacker = GET_PLAYER_POINTER(enemy->v.enemy);
tempInt = get_pdata_ehandle(mPlayer->pEdict, pdTimerOwner * 4); // function is char-based.
if (tempInt < 1 || tempInt > gpGlobals->maxClients)
{
break;
}
pAttacker = GET_PLAYER_POINTER_I(tempInt);
if (pAttacker->teamId == mPlayer->teamId) // ??? if (pAttacker->teamId == mPlayer->teamId) // ???
{ {
@ -326,7 +340,7 @@ void Client_AmmoX(void* mValue){
} }
// //
for(int i = 1; i < MAX_WEAPONS ; ++i) for(int i = 1; i < TFCMAX_WEAPONS ; ++i)
if (iAmmo == weaponData[i].ammoSlot) if (iAmmo == weaponData[i].ammoSlot)
mPlayer->weapons[i].ammo = *(int*)mValue; mPlayer->weapons[i].ammo = *(int*)mValue;
} }
@ -341,7 +355,7 @@ void Client_AmmoPickup(void* mValue){
break; break;
case 1: case 1:
if (!mPlayer ) break; if (!mPlayer ) break;
for(int i = 1; i < MAX_WEAPONS ; ++i) for(int i = 1; i < TFCMAX_WEAPONS ; ++i)
if (weaponData[i].ammoSlot == iSlot) if (weaponData[i].ammoSlot == iSlot)
mPlayer->weapons[i].ammo += *(int*)mValue; mPlayer->weapons[i].ammo += *(int*)mValue;
} }

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'tsfun') binary = AMXX.MetaModule(builder, 'tsfun')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../../public/sdk/amxxmodule.cpp', '../../../public/sdk/amxxmodule.cpp',
] ]

View File

@ -3,6 +3,10 @@ import os.path
binary = AMXX.MetaModule(builder, 'tsx') binary = AMXX.MetaModule(builder, 'tsx')
binary.compiler.defines += [
'HAVE_STDINT_H',
]
binary.sources = [ binary.sources = [
'../../../public/sdk/amxxmodule.cpp', '../../../public/sdk/amxxmodule.cpp',
'CMisc.cpp', 'CMisc.cpp',

View File

@ -78,10 +78,10 @@ void CPlayer::Connect(const char* ippp)
void CPlayer::restartStats(bool all) void CPlayer::restartStats(bool all)
{ {
if ( all ) memset(weapons,0,sizeof(weapons)); if ( all ) memset(&weapons,0,sizeof(weapons));
memset(weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats memset(&weaponsRnd,0,sizeof(weaponsRnd)); //DEC-Weapon (Round) stats
memset(attackers,0,sizeof(attackers)); memset(&attackers,0,sizeof(attackers));
memset(victims,0,sizeof(victims)); memset(&victims,0,sizeof(victims));
life = {}; life = {};
} }

View File

@ -295,10 +295,10 @@ static cell AMX_NATIVE_CALL cwpn_dmg(AMX *amx, cell *params){ // wid,att,vic,dmg
CPlayer* pAtt = GET_PLAYER_POINTER_I(att); CPlayer* pAtt = GET_PLAYER_POINTER_I(att);
CPlayer* pVic = GET_PLAYER_POINTER_I(vic); CPlayer* pVic = GET_PLAYER_POINTER_I(vic);
if ( !pAtt ) pAtt = pVic;
pVic->pEdict->v.dmg_inflictor = NULL; pVic->pEdict->v.dmg_inflictor = NULL;
pAtt->saveHit( pVic , weapon , dmg, aim ); pAtt->saveHit( pVic , weapon , dmg, aim );
if ( !pAtt ) pAtt = pVic;
int TA = 0; int TA = 0;
if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) ) if ( (pVic->pEdict->v.team == pAtt->pEdict->v.team ) && ( pVic != pAtt) )
TA = 1; TA = 1;

View File

@ -122,7 +122,8 @@ void Client_TSHealth_End(void* mValue){
weapon = 37; // throwing knife weapon = 37; // throwing knife
aim = pAttacker ? pAttacker->aiming : 0; aim = pAttacker ? pAttacker->aiming : 0;
pAttacker->saveHit( mPlayer , weapon , damage, aim ); if (pAttacker)
pAttacker->saveHit( mPlayer , weapon , damage, aim );
} }
} }
if ( !pAttacker ) pAttacker = mPlayer; if ( !pAttacker ) pAttacker = mPlayer;

View File

@ -364,10 +364,8 @@ loadSettings(szFilename[])
new AuthData[44]; new AuthData[44];
new Password[32]; new Password[32];
while (!feof(File)) while (fgets(File, Text, charsmax(Text)))
{ {
fgets(File, Text, charsmax(Text));
trim(Text); trim(Text);
// comment // comment

View File

@ -124,10 +124,8 @@ public plugin_precache( )
new fieldNums = 0; new fieldNums = 0;
new const voxIdent[] = "vox", fvoxIdent[] = "fvox", barneyIdent[] = "barney", hgruntIdent[] = "hgrunt"; new const voxIdent[] = "vox", fvoxIdent[] = "fvox", barneyIdent[] = "barney", hgruntIdent[] = "hgrunt";
while ( line < MAX_CMDS && ! feof( fp ) ) // Loop till MAX_CMDS or EOF while ( line < MAX_CMDS && fgets( fp, szText, charsmax(szText) ) ) // Loop till MAX_CMDS or no more file data
{ {
fgets( fp, szText, charsmax(szText) ); // Store line content
/* Strips newline */ /* Strips newline */
new len = strlen( szText ); new len = strlen( szText );
if ( len != 0 && szText[len-1] == '^n' ) // len != 0 because if the last line of the file is empty, there's no newline if ( len != 0 && szText[len-1] == '^n' ) // len != 0 because if the last line of the file is empty, there's no newline
@ -175,15 +173,7 @@ public plugin_precache( )
} }
if ( file_exists( szSound ) ) if ( file_exists( szSound ) )
{ {
if ( sndExt[1] == 'm') precache_generic( szSound );
{
precache_generic( szSound ); // mp3
}
else
{
replace( szSound, charsmax(szSound), "sound/", "" ); // wav, strip the leading sound/ we added for our file_exists check
precache_sound( szSound );
}
} }
} }
line++; line++;

View File

@ -236,9 +236,8 @@ public plugin_precache()
if( fp ) if( fp )
{ {
new xvarname[32], xvarid new xvarname[32], xvarid
while( !feof(fp) ) while( fgets(fp, buffer, charsmax(buffer)) )
{ {
fgets(fp, buffer, charsmax(buffer))
trim(buffer) trim(buffer)
if( buffer[0] != ';' ) if( buffer[0] != ';' )
{ {
@ -257,9 +256,8 @@ public plugin_precache()
if( fp ) if( fp )
{ {
new szSoundKey[32], szSoundFile[SOUNDFILE_PATH_MAXLEN] new szSoundKey[32], szSoundFile[SOUNDFILE_PATH_MAXLEN]
while( !feof(fp) ) while( fgets(fp, buffer, charsmax(buffer)) )
{ {
fgets(fp, buffer, charsmax(buffer))
trim(buffer) trim(buffer)
if( buffer[0] != ';' && parse(buffer, szSoundKey, charsmax(szSoundKey), szSoundFile, charsmax(szSoundFile)) == 2 ) if( buffer[0] != ';' && parse(buffer, szSoundKey, charsmax(szSoundKey), szSoundFile, charsmax(szSoundFile)) == 2 )
{ {
@ -379,7 +377,7 @@ precache_sound_custom( const sound[] )
formatex(fullpathsound, charsmax(fullpathsound), "sound/%s.wav", sound) formatex(fullpathsound, charsmax(fullpathsound), "sound/%s.wav", sound)
if( file_exists(fullpathsound) ) if( file_exists(fullpathsound) )
{ {
precache_sound(fullpathsound[6]) precache_generic(fullpathsound)
} }
else else
{ {

View File

@ -495,8 +495,10 @@ findAdminsWithMenu(playersList[MAX_PLAYERS], &playersCount, const commandLevel =
get_players(playersList, playersCount, "ch"); get_players(playersList, playersCount, "ch");
for (new i = 0; i < playersCount, (player = playersList[i]); ++i) for (new i = 0; i < playersCount; ++i)
{ {
player = playersList[i]
if (player_menu_info(player, menu, newmenu) && newmenu != -1 && newmenu == MenuHandle[player]) if (player_menu_info(player, menu, newmenu) && newmenu != -1 && newmenu == MenuHandle[player])
{ {
if (commandLevel == -1 || access(player, commandLevel)) // extra safety if (commandLevel == -1 || access(player, commandLevel)) // extra safety
@ -519,8 +521,10 @@ refreshMenus(const commandLevel = 0, const bool:displaySaveMessage = false)
return; return;
} }
for (new i = 0, player; i < playersCount, (player = playersList[i]); ++i) for (new i = 0, player; i < playersCount; ++i)
{ {
player = playersList[i]
MenuHandle[player] = displayMenu(player, MenuPosition[player]); MenuHandle[player] = displayMenu(player, MenuPosition[player]);
if (displaySaveMessage) if (displaySaveMessage)
@ -590,9 +594,11 @@ bool:loadSettings(const filename[])
arrayset(RestrictedBotEquipAmmos, '0', charsmax(RestrictedBotEquipAmmos)); arrayset(RestrictedBotEquipAmmos, '0', charsmax(RestrictedBotEquipAmmos));
arrayset(RestrictedBotWeapons, '0', charsmax(RestrictedBotWeapons)); arrayset(RestrictedBotWeapons, '0', charsmax(RestrictedBotWeapons));
while (!feof(fp)) while (fgets(fp, lineRead, charsmax(lineRead)))
{ {
if (fgets(fp, lineRead, charsmax(lineRead)) - trim(lineRead) <= 0) trim(lineRead)
if (!lineRead[0])
{ {
continue; continue;
} }

View File

@ -14,21 +14,21 @@
#include <amxmodx> #include <amxmodx>
public plugin_precache(){ public plugin_precache(){
precache_sound( "misc/impressive.wav") precache_generic( "sound/misc/impressive.wav")
precache_sound( "misc/headshot.wav") precache_generic( "sound/misc/headshot.wav")
precache_sound( "misc/multikill.wav") precache_generic( "sound/misc/multikill.wav")
precache_sound( "misc/doublekill.wav") precache_generic( "sound/misc/doublekill.wav")
precache_sound( "misc/godlike.wav") precache_generic( "sound/misc/godlike.wav")
precache_sound( "misc/ultrakill.wav") precache_generic( "sound/misc/ultrakill.wav")
precache_sound( "misc/killingspree.wav") precache_generic( "sound/misc/killingspree.wav")
precache_sound( "misc/rampage.wav") precache_generic( "sound/misc/rampage.wav")
precache_sound( "misc/unstoppable.wav") precache_generic( "sound/misc/unstoppable.wav")
precache_sound( "misc/monsterkill.wav") precache_generic( "sound/misc/monsterkill.wav")
precache_sound( "misc/humiliation.wav") precache_generic( "sound/misc/humiliation.wav")
precache_sound( "misc/takenlead.wav" ) precache_generic( "sound/misc/takenlead.wav" )
precache_sound( "misc/tiedlead.wav" ) precache_generic( "sound/misc/tiedlead.wav" )
precache_sound( "misc/lostlead.wav" ) precache_generic( "sound/misc/lostlead.wav" )
return PLUGIN_CONTINUE return PLUGIN_CONTINUE
} }

View File

@ -351,6 +351,7 @@ enum
kRenderFxExplode, /* Scale up really big! */ kRenderFxExplode, /* Scale up really big! */
kRenderFxGlowShell, /* Glowing Shell */ kRenderFxGlowShell, /* Glowing Shell */
kRenderFxClampMinScale, /* Keep this sprite from getting very small (SPRITES only!) */ kRenderFxClampMinScale, /* Keep this sprite from getting very small (SPRITES only!) */
kRenderFxLightMultiplier, /* CTM !!!CZERO added to tell the studiorender that the value in iuser2 is a lightmultiplier */
}; };
/** /**

View File

@ -809,6 +809,13 @@ stock reset_menu(index)
/** /**
* Calls a function after a specified time has elapsed. * Calls a function after a specified time has elapsed.
* *
* @note The function is called in the following manner if data is passed:
* data[] - Data passed
* id - Task index
*
* @note The function is called in the following manner if no data is passed:
* id - Task index
*
* @param time Time interval to assign * @param time Time interval to assign
* @param function Function to execute * @param function Function to execute
* @param id Task id to assign * @param id Task id to assign

View File

@ -681,10 +681,12 @@ native disable_logevent(handle);
* @param fadeintime Time it takes the message to fully appear (fade-in) * @param fadeintime Time it takes the message to fully appear (fade-in)
* @param fadeouttime Time it takes the message to fully disappear (fade-out) * @param fadeouttime Time it takes the message to fully disappear (fade-out)
* @param channel Channel to use on the client * @param channel Channel to use on the client
* @param alpha1 Alpha component of hudmessage color
* @param color2[4] Color 2 array {r,g,b,a}
* *
* @noreturn * @noreturn
*/ */
native set_hudmessage(red = 200, green = 100, blue = 0, Float:x = -1.0, Float:y = 0.35, effects = 0, Float:fxtime = 6.0, Float:holdtime = 12.0, Float:fadeintime = 0.1, Float:fadeouttime = 0.2, channel = -1); native set_hudmessage(red = 200, green = 100, blue = 0, Float:x = -1.0, Float:y = 0.35, effects = 0, Float:fxtime = 6.0, Float:holdtime = 12.0, Float:fadeintime = 0.1, Float:fadeouttime = 0.2, channel = -1, alpha1 = 0, color2[4] = {255, 255, 250, 0});
/** /**
* Displays a message on the client HUD. * Displays a message on the client HUD.
@ -1762,6 +1764,13 @@ native parse_time(const input[], const format[], time = -1);
* @note Please consider using set_task_ex() instead which allows you to * @note Please consider using set_task_ex() instead which allows you to
* use named constants for flags instead of letters. * use named constants for flags instead of letters.
* *
* @note The function is called in the following manner if data is passed:
* data[] - Data passed
* id - Task index
*
* @note The function is called in the following manner if no data is passed:
* id - Task index
*
* @param time Time interval to assign * @param time Time interval to assign
* @param function Function to execute * @param function Function to execute
* @param id Task id to assign * @param id Task id to assign
@ -1842,7 +1851,7 @@ native set_user_flags(index, flags = -1, id = 0);
* 0 is actively used. You should not change the value of the second * 0 is actively used. You should not change the value of the second
* parameter from the default. * parameter from the default.
* *
* @param index Client index, 0 to set flags of server * @param index Client index, 0 to get flags of server
* @param id Flag set id, ranging from 0 to 31 * @param id Flag set id, ranging from 0 to 31
* *
* @return Bitflag sum of client's admin flags * @return Bitflag sum of client's admin flags

View File

@ -519,7 +519,7 @@ native unlink(const filename[], bool:use_valve_fs = false, const valve_path_id[]
* *
* @return Handle to the directory, 0 otherwise * @return Handle to the directory, 0 otherwise
*/ */
native open_dir(dir[], firstfile[], length, &FileType:type = FileType_Unknown, bool:use_valve_fs = false, const valve_path_id[] = "GAME"); native open_dir(const dir[], firstfile[], length, &FileType:type = FileType_Unknown, bool:use_valve_fs = false, const valve_path_id[] = "GAME");
/** /**
* Reads the next directory entry as a local filename. * Reads the next directory entry as a local filename.

View File

@ -737,7 +737,7 @@ enum
* write_byte(TE_FIZZ) * write_byte(TE_FIZZ)
* write_short(entity) * write_short(entity)
* write_short(sprite index) * write_short(sprite index)
* write_byte density) * write_byte(density)
*/ */
#define TE_FIZZ 105 #define TE_FIZZ 105

View File

@ -98,21 +98,21 @@
/** @endsection */ /** @endsection */
/** /**
* @brief Creates a new menu object. * Creates a new menu object.
* *
* The handler function should be prototyped as: * @note The handler function should be prototyped as:
* *
* public <function>(id, menu, item) * public <function>(id, menu, item)
* id - Client the menu is being acted upon. * id - Client the menu is being acted upon.
* menu - Menu resource identifier. * menu - Menu resource identifier.
* item - Item the client selected. If less than 0, the menu was * item - Item the client selected. If less than 0, the menu was
* cancelled and the item is a status code. menu_display * cancelled and the item is a status code. menu_display
* should never be called immediately if the item is a status * should never be called immediately if the item is a status
* code, for re-entrancy reasons. * code, for re-entrancy reasons.
* *
* The handler function should always return PLUGIN_HANDLED to block * @note The handler function should always return PLUGIN_HANDLED to block
* any old menu handlers from potentially feeding on the menu, unless * any old menu handlers from potentially feeding on the menu, unless
* that is the desired functionality. * that is the desired functionality.
* *
* @param title Title the menu should use. * @param title Title the menu should use.
* @param handler Name of the handler function. The function will be invoked * @param handler Name of the handler function. The function will be invoked
@ -129,14 +129,14 @@ native menu_create(const title[], const handler[], bool:ml = false);
/** /**
* Creates a menu item callback handler. * Creates a menu item callback handler.
* *
* The handler function should be prototyped as: * @note The handler function should be prototyped as:
* *
* public <function>(id, menu, item) * public <function>(id, menu, item)
* id - Client index being displayed to. * id - Client index being displayed to.
* menu - Menu resource identifier. * menu - Menu resource identifier.
* item - Item being drawn. * item - Item being drawn.
* <return> - ITEM_IGNORE to use the default functionality. ITEM_ENABLED to * <return> - ITEM_IGNORE to use the default functionality.
* explicitly enable or ITEM_DISABLED to explicitly disable. * ITEM_ENABLED to explicitly enable or ITEM_DISABLED to explicitly disable.
* *
* @param function Function name. * @param function Function name.
* @return Menu callback ID. * @return Menu callback ID.
@ -144,7 +144,7 @@ native menu_create(const title[], const handler[], bool:ml = false);
native menu_makecallback(const function[]); native menu_makecallback(const function[]);
/** /**
* Adds an menu to a menu. * Adds an item to a menu.
* *
* @param menu Menu resource identifier. * @param menu Menu resource identifier.
* @param name Item text to display. * @param name Item text to display.
@ -287,11 +287,11 @@ native menu_destroy(menu);
/** /**
* Returns information about a menu (if any) the client is currently viewing. * Returns information about a menu (if any) the client is currently viewing.
* *
* If newmenu is valid, then the menu will refer to the menuid associated with * @note If newmenu is valid, then the menu will refer to the menuid associated with
* the title. If newmenu is not valid, and the menu is valid, then the player * the title. If newmenu is not valid, and the menu is valid, then the player
* is viewing a menu displayed with show_menu(). * is viewing a menu displayed with show_menu().
* *
* Both may be invalid if the player is not viewing a menu. * @note Both may be invalid if the player is not viewing a menu.
* *
* @param id Client index. * @param id Client index.
* @param menu Variable to store old menu id. If none, then <1 will be * @param menu Variable to store old menu id. If none, then <1 will be
@ -307,8 +307,8 @@ native player_menu_info(id, &menu, &newmenu, &menupage=0);
/** /**
* Adds a blank line to a menu. * Adds a blank line to a menu.
* *
* When using slot=1 this might break your menu. To achieve this functionality * @note When using slot=1 this might break your menu. To achieve this functionality
* menu_addblank2 should be used. * menu_addblank2 should be used.
* *
* @param menu Menu resource identifier. * @param menu Menu resource identifier.
* @param slot 1 (default) if the line should shift the numbering down. * @param slot 1 (default) if the line should shift the numbering down.
@ -319,10 +319,10 @@ native player_menu_info(id, &menu, &newmenu, &menupage=0);
native menu_addblank(menu, slot=1); native menu_addblank(menu, slot=1);
/** /**
* Adds a text line to a menu. Only available in amxmodx 1.8.1 and above. * Adds a text line to a menu.
* *
* When using slot=1 this might break your menu. To achieve this functionality * @note When using slot=1 this might break your menu. To achieve this functionality
* menu_addtext2 should be used. * menu_addtext2 should be used.
* *
* @param menu Menu resource identifier. * @param menu Menu resource identifier.
* @param text Text to add. * @param text Text to add.
@ -336,11 +336,9 @@ native menu_addtext(menu, const text[], slot=1);
/** /**
* Adds a blank line to a menu, always shifting the numbering down. * Adds a blank line to a menu, always shifting the numbering down.
* *
* This will add a special item to create a blank line. It will affect the menu * @note This will add a special item to create a blank line. It will affect the menu
* item count and pagination. These items can be modified later but will ignore * item count and pagination. These items can be modified later but will ignore
* access and item callback results. * access and item callback results.
*
* Only available in 1.8.3 and above.
* *
* @param menu Menu resource identifier. * @param menu Menu resource identifier.
* *
@ -353,11 +351,9 @@ native menu_addblank2( menu );
/** /**
* Adds a text line to a menu, always shifting the numbering down. * Adds a text line to a menu, always shifting the numbering down.
* *
* This will add a special item to create a blank line. It will affect the menu * @note This will add a special item to create a blank line. It will affect the menu
* item count and pagination. These items can be modified later but will ignore * item count and pagination. These items can be modified later but will ignore
* access and item callback results. * access and item callback results.
*
* Only available in 1.8.3 and above.
* *
* @param menu Menu resource identifier. * @param menu Menu resource identifier.
* @param text Text to add. * @param text Text to add.

View File

@ -519,7 +519,7 @@ stock SQL_SimpleQueryFmt(Handle:db, error[]="", maxlength=0, &rows=0, const fmt[
* @param queryfmt The query string that can be formated with format specifiers. * @param queryfmt The query string that can be formated with format specifiers.
* @pram ... Additional arguments for formating the query. * @pram ... Additional arguments for formating the query.
* *
* @return 1 on error. * @return -1 on error.
* >= 0 on success (with the number of affected rows). * >= 0 on success (with the number of affected rows).
*/ */
stock SQL_QueryAndIgnore(Handle:db, const queryfmt[], any:...) stock SQL_QueryAndIgnore(Handle:db, const queryfmt[], any:...)

View File

@ -24,6 +24,8 @@ enum
timeunit_hours, timeunit_hours,
timeunit_days, timeunit_days,
timeunit_weeks, timeunit_weeks,
timeunit_months,
timeunit_years,
}; };
/* Seconds in each time unit */ /* Seconds in each time unit */
@ -31,6 +33,8 @@ enum
#define SECONDS_IN_HOUR 3600 #define SECONDS_IN_HOUR 3600
#define SECONDS_IN_DAY 86400 #define SECONDS_IN_DAY 86400
#define SECONDS_IN_WEEK 604800 #define SECONDS_IN_WEEK 604800
#define SECONDS_IN_MONTH 2592000
#define SECONDS_IN_YEAR 31536000
/** /**
* Stock by Brad. * Stock by Brad.
@ -39,7 +43,7 @@ enum
* *
* @param id The player whose language the length should be translated to * @param id The player whose language the length should be translated to
* @param unitCnt The number of time units you want translated into verbose text * @param unitCnt The number of time units you want translated into verbose text
* @param type The type of unit (i.e. seconds, minutes, hours, days, weeks) that you are passing in * @param type The type of unit (i.e. seconds, minutes, hours, days, weeks, months, years) that you are passing in
* @param output The variable you want the verbose text to be placed in * @param output The variable you want the verbose text to be placed in
* @param outputLen The length of the output variable * @param outputLen The length of the output variable
* *
@ -50,7 +54,7 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
if (unitCnt > 0) if (unitCnt > 0)
{ {
// determine the number of each time unit there are // determine the number of each time unit there are
new weekCnt = 0, dayCnt = 0, hourCnt = 0, minuteCnt = 0, secondCnt = 0; new yearCnt = 0, monthCnt = 0, weekCnt = 0, dayCnt = 0, hourCnt = 0, minuteCnt = 0, secondCnt = 0;
switch (type) switch (type)
{ {
@ -59,8 +63,16 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
case timeunit_hours: secondCnt = unitCnt * SECONDS_IN_HOUR; case timeunit_hours: secondCnt = unitCnt * SECONDS_IN_HOUR;
case timeunit_days: secondCnt = unitCnt * SECONDS_IN_DAY; case timeunit_days: secondCnt = unitCnt * SECONDS_IN_DAY;
case timeunit_weeks: secondCnt = unitCnt * SECONDS_IN_WEEK; case timeunit_weeks: secondCnt = unitCnt * SECONDS_IN_WEEK;
case timeunit_months: secondCnt = unitCnt * SECONDS_IN_MONTH;
case timeunit_years: secondCnt = unitCnt * SECONDS_IN_YEAR;
} }
yearCnt = secondCnt / SECONDS_IN_YEAR;
secondCnt -= (yearCnt * SECONDS_IN_YEAR);
monthCnt = secondCnt / SECONDS_IN_MONTH;
secondCnt -= (monthCnt * SECONDS_IN_MONTH);
weekCnt = secondCnt / SECONDS_IN_WEEK; weekCnt = secondCnt / SECONDS_IN_WEEK;
secondCnt -= (weekCnt * SECONDS_IN_WEEK); secondCnt -= (weekCnt * SECONDS_IN_WEEK);
@ -75,8 +87,12 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
// translate the unit counts into verbose text // translate the unit counts into verbose text
new maxElementIdx = -1; new maxElementIdx = -1;
new timeElement[5][33]; new timeElement[7][33];
if (yearCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", yearCnt, id, (yearCnt == 1) ? "TIME_ELEMENT_YEAR" : "TIME_ELEMENT_YEARS");
if (monthCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", monthCnt, id, (monthCnt == 1) ? "TIME_ELEMENT_MONTH" : "TIME_ELEMENT_MONTHS");
if (weekCnt > 0) if (weekCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", weekCnt, id, (weekCnt == 1) ? "TIME_ELEMENT_WEEK" : "TIME_ELEMENT_WEEKS"); format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", weekCnt, id, (weekCnt == 1) ? "TIME_ELEMENT_WEEK" : "TIME_ELEMENT_WEEKS");
if (dayCnt > 0) if (dayCnt > 0)
@ -95,6 +111,8 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
case 2: formatex(output, outputLen, "%s, %s %L %s", timeElement[0], timeElement[1], id, "TIME_ELEMENT_AND", timeElement[2]); case 2: formatex(output, outputLen, "%s, %s %L %s", timeElement[0], timeElement[1], id, "TIME_ELEMENT_AND", timeElement[2]);
case 3: formatex(output, outputLen, "%s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], id, "TIME_ELEMENT_AND", timeElement[3]); case 3: formatex(output, outputLen, "%s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], id, "TIME_ELEMENT_AND", timeElement[3]);
case 4: formatex(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], id, "TIME_ELEMENT_AND", timeElement[4]); case 4: formatex(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], id, "TIME_ELEMENT_AND", timeElement[4]);
case 5: formatex(output, outputLen, "%s, %s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], timeElement[4], id, "TIME_ELEMENT_AND", timeElement[5]);
case 6: formatex(output, outputLen, "%s, %s, %s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], timeElement[4], timeElement[5], id, "TIME_ELEMENT_AND", timeElement[6]);
} }
} }
} }

View File

@ -181,17 +181,17 @@ PRIV_SET = Priviligiite sa nastroeni
NO_ENTRY = Nqmate dostup do servera... NO_ENTRY = Nqmate dostup do servera...
[ro] [ro]
LOADED_ADMIN = 1 administrator a fost incarcat din fisier LOADED_ADMIN = 1 admin a fost încărcat din fișier
LOADED_ADMINS = %d administratori au fost incarcati din fisier LOADED_ADMINS = %d admini au fost încărcați din fișier
SQL_CANT_CON = Eroare SQL: conectare esuata: '%s' SQL_CANT_CON = Eroare SQL: conectare nereușită: '%s'
SQL_CANT_LOAD_ADMINS = Eroare SQL: esuare incarcare administratori: '%s' SQL_CANT_LOAD_ADMINS = Eroare SQL: eșuare încărcare admini: '%s'
NO_ADMINS = Nu a fost gasit nici un administrator. NO_ADMINS = Nu a fost găsit niciun admin.
SQL_LOADED_ADMIN = 1 administrator a fost incarcat din baza de date SQL_LOADED_ADMIN = 1 admin a fost încărcat din baza de date
SQL_LOADED_ADMINS = %d administratori au fost incarcati din baza de date SQL_LOADED_ADMINS = %d admini au fost încărcați din baza de date
INV_PAS = Parola invalida! INV_PAS = Parolă invalidă!
PAS_ACC = Parola acceptata PAS_ACC = Parolă acceptată
PRIV_SET = Privilegii acordate PRIV_SET = Drepturi de acces acordate
NO_ENTRY = Acest nume este rezervat pe server. NO_ENTRY = Nu aveți permisiunea de a intra pe server...
[hu] [hu]
LOADED_ADMIN = 1 admin betöltve a fájlból. LOADED_ADMIN = 1 admin betöltve a fájlból.
@ -314,7 +314,7 @@ NO_ENTRY = Ju nuk mund të futeni në server...
LOADED_ADMIN = 1 admin foi carregado do ficheiro LOADED_ADMIN = 1 admin foi carregado do ficheiro
LOADED_ADMINS = %d admins foram carregados do ficheiro LOADED_ADMINS = %d admins foram carregados do ficheiro
SQL_CANT_CON = Erro de SQL: não foi possível conectar-se: '%s' SQL_CANT_CON = Erro de SQL: não foi possível conectar-se: '%s'
SQL_CANT_LOAD_ADMINS = Erro de SQl: não foi possível carregar admins: '%s' SQL_CANT_LOAD_ADMINS = Erro de SQL: não foi possível carregar admins: '%s'
NO_ADMINS = Não foram encontrados admins. NO_ADMINS = Não foram encontrados admins.
SQL_LOADED_ADMIN = 1 admin foi carregado da base de dados SQL_LOADED_ADMIN = 1 admin foi carregado da base de dados
SQL_LOADED_ADMINS = %d admins foram carregados da base de dados SQL_LOADED_ADMINS = %d admins foram carregados da base de dados

View File

@ -182,16 +182,16 @@ PRINT_ALL = (VSICHKI) %s : %s
[ro] [ro]
COL_WHITE = alb COL_WHITE = alb
COL_RED = rosu COL_RED = roșu
COL_GREEN = verde COL_GREEN = verde
COL_BLUE = albastru COL_BLUE = albastru
COL_YELLOW = galben COL_YELLOW = galben
COL_MAGENTA = purpuriu COL_MAGENTA = violet
COL_CYAN = cian COL_CYAN = bleu
COL_ORANGE = oranj COL_ORANGE = portocaliu
COL_OCEAN = ocean COL_OCEAN = bleumarin
COL_MAROON = maro COL_MAROON = maro
PRINT_ALL = (TOTI) %s : %s PRINT_ALL = (TOȚI) %s : %s
[hu] [hu]
COL_WHITE = fehér COL_WHITE = fehér

View File

@ -17,7 +17,7 @@ ADMIN_SLAY_2 = ADMIN %s: slay %s
CLIENT_SLAYED = Client "%s" slayed CLIENT_SLAYED = Client "%s" slayed
ADMIN_SLAP_1 = ADMIN: slap %s with %d damage ADMIN_SLAP_1 = ADMIN: slap %s with %d damage
ADMIN_SLAP_2 = ADMIN %s: slap %s with %d damage ADMIN_SLAP_2 = ADMIN %s: slap %s with %d damage
CLIENT_SLAPED = Client "%s" slaped with %d damage CLIENT_SLAPED = Client "%s" slapped with %d damage
MAP_NOT_FOUND = Map with that name not found or map is invalid MAP_NOT_FOUND = Map with that name not found or map is invalid
ADMIN_MAP_1 = ADMIN: changelevel %s ADMIN_MAP_1 = ADMIN: changelevel %s
ADMIN_MAP_2 = ADMIN %s: changelevel %s ADMIN_MAP_2 = ADMIN %s: changelevel %s
@ -126,8 +126,8 @@ PAUSED = pausiert
UNPAUSED = fortgesetzt UNPAUSED = fortgesetzt
UNABLE_PAUSE = Server konnte das Spiel nicht anhalten. Reale Spieler werden auf dem Server benötigt. UNABLE_PAUSE = Server konnte das Spiel nicht anhalten. Reale Spieler werden auf dem Server benötigt.
SERVER_PROC = Server führt %s aus SERVER_PROC = Server führt %s aus
PAUSING = Pausiere PAUSING = pausiert den Server...
UNPAUSING = setze fort UNPAUSING = setzt den Server fort...
PAUSE = Pause PAUSE = Pause
UNPAUSE = Fortsetzen UNPAUSE = Fortsetzen
COM_SENT_SERVER = Befehlszeile "%s" zur Serverconsole gesendet COM_SENT_SERVER = Befehlszeile "%s" zur Serverconsole gesendet
@ -138,11 +138,11 @@ ACCESS = Berechtigung
TOTAL_NUM = Total %d TOTAL_NUM = Total %d
SKIP_MATCH = Überspringe "%s" (stimmt überein mit "%s") SKIP_MATCH = Überspringe "%s" (stimmt überein mit "%s")
SKIP_IMM = Überspringe "%s" (Immunität) SKIP_IMM = Überspringe "%s" (Immunität)
KICK_PL = Kickt "%s" KICK_PL = Kicke "%s"
YOU_DROPPED = Du wurdest gekickt, weil der Admin nur spezielle Spielergruppen auf dem Server zulässt YOU_DROPPED = Du wurdest gekickt, weil der Admin nur spezielle Spielergruppen auf dem Server zulässt
KICKED_CLIENTS = Kickt %d clients KICKED_CLIENTS = %d Spieler gekickt
ADMIN_LEAVE_1 = ADMIN: erlaubt %s %s %s %s ADMIN_LEAVE_1 = ADMIN: Spieler ohne Berechtigung %s %s %s %s verlassen den Server!
ADMIN_LEAVE_2 = ADMIN %s: erlaubt %s %s %s %s ADMIN_LEAVE_2 = ADMIN %s: Spieler ohne Berechtigung %s %s %s %s verlassen den Server!
ADMIN_NICK_1 = ADMIN: ändert Name von %s zu "%s" ADMIN_NICK_1 = ADMIN: ändert Name von %s zu "%s"
ADMIN_NICK_2 = ADMIN %s: ändert Name von %s zu "%s" ADMIN_NICK_2 = ADMIN %s: ändert Name von %s zu "%s"
CHANGED_NICK = Name von %s zu "%s" geändert CHANGED_NICK = Name von %s zu "%s" geändert
@ -1055,77 +1055,79 @@ MAP_EXTENDED = Kartata "%s" beshe uduljena s %d minuti
[ro] [ro]
ADMIN_KICK_1 = ADMIN: kick %s ADMIN_KICK_1 = ADMIN: kick %s
ADMIN_KICK_2 = ADMIN %s: kick %s ADMIN_KICK_2 = ADMIN %s: kick %s
IP_REMOVED = Ip-ul "%s" a fost inlaturat din lista de ban-uri IP_REMOVED = IP-ul "%s" a fost eliminat din lista de banuri
AUTHID_REMOVED = ID-ul "%s" a fost inlaturat din lista de ban-uri AUTHID_REMOVED = AuthID-ul "%s" a fost eliminat din lista de banuri
ADMIN_UNBAN_1 = ADMIN: unban %s ADMIN_UNBAN_1 = ADMIN: unban %s
ADMIN_UNBAN_2 = ADMIN %s: unban %s ADMIN_UNBAN_2 = ADMIN %s: unban %s
ADMIN_ADDBAN_1 = ADMIN: ban %s ADMIN_ADDBAN_1 = ADMIN: ban %s
ADMIN_ADDBAN_2 = ADMIN %s: ban %s ADMIN_ADDBAN_2 = ADMIN %s: ban %s
BANNED = banat BANNED = banat
REASON = motiv REASON = motiv
FOR_MIN = pentru %s min FOR_MIN = pentru %s minute
PERM = permanent PERM = permanent
CLIENT_BANNED = Jucatorul "%s" a primit ban CLIENT_BANNED = Jucătorul "%s" a primit ban
ADMIN_SLAY_1 = ADMIN: slay %s ADMIN_SLAY_1 = ADMIN: slay %s
ADMIN_SLAY_2 = ADMIN %s: slay %s ADMIN_SLAY_2 = ADMIN %s: slay %s
CLIENT_SLAYED = Jucatorul "%s" a primit slay CLIENT_SLAYED = Jucătorul "%s" a primit slay
ADMIN_SLAP_1 = ADMIN: slap %s cu %d dmg ADMIN_SLAP_1 = ADMIN: slap %s cu %d damage
ADMIN_SLAP_2 = ADMIN %s: slap %s cu %d dmg ADMIN_SLAP_2 = ADMIN %s: slap %s cu %d damage
CLIENT_SLAPED = Jucatorul "%s" a primit slap %d dmg CLIENT_SLAPED = Jucătorul "%s" a primit slap cu %d damage
MAP_NOT_FOUND = Harta cu acel nume nu a fost gasita sau este invalida MAP_NOT_FOUND = Harta cu acel nume nu a fost găsită, sau este invalidă
ADMIN_MAP_1 = ADMIN: schimbare harta pe %s ADMIN_MAP_1 = ADMIN: schimbă harta pe %s
ADMIN_MAP_2 = ADMIN %s: schimbare harta pe %s ADMIN_MAP_2 = ADMIN %s: schimbă harta pe %s
NO_MORE_CVARS = Nu se pot adauga mai multe comenzi pentru accesul rcon! NO_MORE_CVARS = Nu se mai pot adăuga comenzi pentru accesul rcon!
UNKNOWN_CVAR = Comanda nerecunoscuta: %s UNKNOWN_CVAR = Comanda nerecunoscută: %s
UNKNOWN_XVAR = Comanda nerecunoscuta: %s UNKNOWN_XVAR = Comanda nerecunoscută: %s
CVAR_NO_ACC = Nu ai acces la aceasta comanda CVAR_NO_ACC = Nu ai acces la această comandă
XVAR_NO_ACC = Nu ai acces la aceasta comanda XVAR_NO_ACC = Nu ai acces la această comandă
CVAR_IS = Comanda "%s" este "%s" CVAR_IS = Comanda "%s" este "%s"
XVAR_IS = Comanda "%s" este "%s" XVAR_IS = Comanda "%s" este "%s"
PROTECTED = PROTEJAT PROTECTED = PROTEJAT
SET_CVAR_TO = %s seteaza comanda %s pe "%s" SET_CVAR_TO = %s setează comanda %s pe "%s"
SET_XVAR_TO = %s seteaza comanda %s pe "%s" SET_XVAR_TO = %s setează comanda %s pe "%s"
CVAR_CHANGED = Comanda "%s" a fost schimbata pe "%s" CVAR_CHANGED = Comanda "%s" a fost schimbată pe "%s"
XVAR_CHANGED = Comanda "%s" a fost schimbata pe "%s" XVAR_CHANGED = Comanda "%s" a fost schimbată pe "%s"
LOADED_PLUGINS = Plugin-uri incarcate LOADED_PLUGINS = Pluginuri încărcate
NAME = nume NAME = nume
VERSION = versiune VERSION = versiune
AUTHOR = autor AUTHOR = autor
FILE = fisier FILE = fișier
STATUS = statut STATUS = status
PLUGINS_RUN = %d plugin-uri, %d functionale PLUGINS_RUN = %d pluginuri, %d funcționale
LOADED_MODULES = Moduluri incarcate LOADED_MODULES = Module încărcate
NUM_MODULES = %d moduluri NUM_MODULES = %d module
FILE_NOT_FOUND = Fisier-ul "%s" nu a fost gasit FILE_NOT_FOUND = Fișierul "%s" nu a fost găsit
ADMIN_CONF_1 = ADMIN: executare config %s ADMIN_CONF_1 = ADMIN: executare config %s
ADMIN_CONF_2 = ADMIN %s: executare config %s ADMIN_CONF_2 = ADMIN %s: executare config %s
PAUSED = s-a intrerupt jocul PAUSED = joc întrerupt
UNPAUSED = s-a revenit la joc UNPAUSED = s-a revenit la joc
UNABLE_PAUSE = Server-ul nu a putut intrerupe jocul. Este nevoie de jucatori adevarati. UNABLE_PAUSE = Serverul nu a putut întrerupe jocul. Este nevoie de jucători reali pe server.
SERVER_PROC = Continuare server %s SERVER_PROC = Continuare server %s
PAUSING = se interupe jocul PAUSING = jocul se întrerupe
UNPAUSING = se revine la joc UNPAUSING = se revine la joc
PAUSE = intrerupe jocul PAUSE = întrerupe jocul
UNPAUSE = revino la joc UNPAUSE = revino la joc
COM_SENT_SERVER = Comanda "%s" a fost trimisa in consola server-ului COM_SENT_SERVER = Comanda "%s" a fost trimisă în consola serverului
CLIENTS_ON_SERVER = Jucatori pe server CLIENTS_ON_SERVER = Jucători pe server
IMMU = imu IMMU = imu
RESERV = rez RESERV = rez
ACCESS = acces ACCESS = acces
TOTAL_NUM = Total %d TOTAL_NUM = Total %d
SKIP_MATCH = Se trece peste "%s" (criteriu "%s") SKIP_MATCH = Se sare peste "%s" (criteriu "%s")
SKIP_IMM = Se trece peste "%s" (imunitate) SKIP_IMM = Se sare peste "%s" (imunitate)
KICK_PL = Kick "%s" KICK_PL = Kick "%s"
YOU_DROPPED = Ai fost dat afara deoarece admin-ul permite doar un grup specificat de jucatori pe server YOU_DROPPED = Ai fost dat afară deoarece adminul a lăsat doar un grup specific de jucători pe server.
KICKED_CLIENTS = %d jucatori au primit kick KICKED_CLIENTS = %d jucători au primit kick
ADMIN_LEAVE_1 = ADMIN: iesire %s %s %s %s ADMIN_LEAVE_1 = ADMIN: ieșire %s %s %s %s
ADMIN_LEAVE_2 = ADMIN %s: iesire %s %s %s %s ADMIN_LEAVE_2 = ADMIN %s: ieșire %s %s %s %s
ADMIN_NICK_1 = ADMIN: schimbare nume %s cu "%s" ADMIN_NICK_1 = ADMIN: schimbă numele lui %s cu "%s"
ADMIN_NICK_2 = ADMIN %s: schimbare nume %s cu "%s" ADMIN_NICK_2 = ADMIN %s: schimbă numele lui %s cu "%s"
CHANGED_NICK = Numele %s a fost schimbat cu "%s" CHANGED_NICK = Numele lui %s a fost schimbat cu "%s"
ADMIN_EXTEND_1 = ADMIN: extinde harta pentru %d minute ADMIN_EXTEND_1 = ADMIN: extinde harta pentru %d minute
ADMIN_EXTEND_2 = ADMIN %s: extinde harta pentru %d minute ADMIN_EXTEND_2 = ADMIN %s: extinde harta pentru %d minute
MAP_EXTENDED = Harta "%s" a fost extinsa pentru %d minute MAP_EXTENDED = Harta "%s" a fost extinsă pentru %d minute
ADMIN_MUST_TEMPBAN = Poți să dai numai ban temporar jucătorilor, până la %d minute
ADMIN_MUST_TEMPUNBAN = Poți să dai unban numai jucătorilor pe care i-ai banat recent.
[hu] [hu]
ADMIN_KICK_1 = ADMIN: %s kirúgva ADMIN_KICK_1 = ADMIN: %s kirúgva
@ -1819,9 +1821,9 @@ CLIENT_BANNED = O cliente "%s" foi banido
ADMIN_SLAY_1 = ADMIN: matou %s ADMIN_SLAY_1 = ADMIN: matou %s
ADMIN_SLAY_2 = ADMIN %s: matou %s ADMIN_SLAY_2 = ADMIN %s: matou %s
CLIENT_SLAYED = O cliente "%s" foi morto CLIENT_SLAYED = O cliente "%s" foi morto
ADMIN_SLAP_1 = ADMIN: esbofeteou %s com %d dano ADMIN_SLAP_1 = ADMIN: esbofeteou %s com %d de dano
ADMIN_SLAP_2 = ADMIN %s: esbofeteou %s com %d dano ADMIN_SLAP_2 = ADMIN %s: esbofeteou %s com %d de dano
CLIENT_SLAPED = O cliente "%s" foi esbofeteado com %d dano CLIENT_SLAPED = O cliente "%s" foi esbofeteado com %d de dano
MAP_NOT_FOUND = O mapa com esse nome não foi encontrado ou é inválido MAP_NOT_FOUND = O mapa com esse nome não foi encontrado ou é inválido
ADMIN_MAP_1 = ADMIN: mudou de mapa para %s ADMIN_MAP_1 = ADMIN: mudou de mapa para %s
ADMIN_MAP_2 = ADMIN %s: mudou de mapa para %s ADMIN_MAP_2 = ADMIN %s: mudou de mapa para %s
@ -1831,7 +1833,7 @@ UNKNOWN_XVAR = Xvar desconhecida: %s
CVAR_NO_ACC = Tu não tens acesso a essa cvar CVAR_NO_ACC = Tu não tens acesso a essa cvar
XVAR_NO_ACC = Tu não tens acesso a essa xvar XVAR_NO_ACC = Tu não tens acesso a essa xvar
CVAR_IS = A cvar "%s" é "%s" CVAR_IS = A cvar "%s" é "%s"
XVAR_IS = A Xvar "%s" é "%s" XVAR_IS = A xvar "%s" é "%s"
PROTECTED = PROTEGIDO PROTECTED = PROTEGIDO
SET_CVAR_TO = %s mudou a cvar %s para "%s" SET_CVAR_TO = %s mudou a cvar %s para "%s"
SET_XVAR_TO = %s mudou a xvar %s para "%s" SET_XVAR_TO = %s mudou a xvar %s para "%s"
@ -1867,7 +1869,7 @@ SKIP_MATCH = A saltar "%s" (a coincidir com "%s")
SKIP_IMM = A saltar "%s" (imunidade) SKIP_IMM = A saltar "%s" (imunidade)
KICK_PL = A expulsar "%s" KICK_PL = A expulsar "%s"
YOU_DROPPED = Tu foste desconectado pois o admin só deixa entrar um grupo de clientes específico YOU_DROPPED = Tu foste desconectado pois o admin só deixa entrar um grupo de clientes específico
KICKED_CLIENTS = %d clientes expulsados KICKED_CLIENTS = Foram expulsos %d clientes
ADMIN_LEAVE_1 = ADMIN: deixou %s %s %s %s ADMIN_LEAVE_1 = ADMIN: deixou %s %s %s %s
ADMIN_LEAVE_2 = ADMIN %s: deixou %s %s %s %s ADMIN_LEAVE_2 = ADMIN %s: deixou %s %s %s %s
ADMIN_NICK_1 = ADMIN: mudou o nome de %s para "%s" ADMIN_NICK_1 = ADMIN: mudou o nome de %s para "%s"
@ -1876,5 +1878,5 @@ CHANGED_NICK = Mudou o nome de %s para "%s"
ADMIN_EXTEND_1 = ADMIN: extendeu o mapa por %d minutos ADMIN_EXTEND_1 = ADMIN: extendeu o mapa por %d minutos
ADMIN_EXTEND_2 = ADMIN %s: extendeu o mapa por %d minutos ADMIN_EXTEND_2 = ADMIN %s: extendeu o mapa por %d minutos
MAP_EXTENDED = O mapa "%s" foi extendido por %d minutos MAP_EXTENDED = O mapa "%s" foi extendido por %d minutos
ADMIN_MUST_TEMPBAN = Tu só podes banir jogadores temporariamente temporariamente, até %d minutos ADMIN_MUST_TEMPBAN = Tu só podes banir jogadores temporariamente, até %d minutos
ADMIN_MUST_TEMPUNBAN = Tu só podes desbanir jogadores que tu baniste recentemente ADMIN_MUST_TEMPUNBAN = Tu só podes desbanir jogadores que baniste recentemente

View File

@ -134,12 +134,12 @@ TIME_INFO_2 = Nqma limit na vremeto. Sledvashta karta: %s
[ro] [ro]
HELP_COMS = Ajutor AMX Mod X: Comenzi HELP_COMS = Ajutor AMX Mod X: Comenzi
HELP_ENTRIES = Intrari %d - %d din %d HELP_ENTRIES = Se afișează %d - %d din %d
HELP_USE_MORE = Scrie '%s %d' pentru mai mult HELP_USE_MORE = Scrie '%s %d' pentru mai multe comenzi
HELP_USE_BEGIN = Scrie '%s 1' pentru inceput HELP_USE_BEGIN = Scrie '%s 1' pentru a începe
TYPE_HELP = Scrie '%s' '%s' in consola pentru afisare lista comenzi TYPE_HELP = Scrie '%s' '%s' în consolă pentru a afișa lista de comenzi disponibile
TIME_INFO_1 = Timp Ramas: %d:%02d. Urmatoarea Harta: %s TIME_INFO_1 = Timp mas: %d:%02d. Următoarea hartă: %s
TIME_INFO_2 = Nici o Limita a Timpului. Urmatoarea Harta: %s TIME_INFO_2 = Fără limită de timp. Următoarea hartă: %s
[hu] [hu]
HELP_COMS = AMX Mod X segítség: Parancsok HELP_COMS = AMX Mod X segítség: Parancsok

View File

@ -45,7 +45,9 @@ DROPPED_RES = Pudotettiin palvelimelta slotvarauksen takia (adminslot)
DROPPED_RES = Premahnat poradi rezervaciq na slot DROPPED_RES = Premahnat poradi rezervaciq na slot
[ro] [ro]
DROPPED_RES = Ai primit kick pentru rezervare slot DROPPED_RES = Ai primit kick deoarece locul pe server este rezervat.
CVAR_RESERVATION = Numărul de locuri rezervate
CVAR_HIDESLOTS = Dacă setezi asta pe 1, poți ascunde locuri de pe server.^nDacă locurile publice și ascunse ale serverului sunt pline, trebuie să te conectezi manual în consolă cu comanda "connect".
[hu] [hu]
DROPPED_RES = Helyfenntartás miatt kidobva. DROPPED_RES = Helyfenntartás miatt kidobva.
@ -76,3 +78,5 @@ DROPPED_RES = U largua për shkak të rezervimit të vendit që është plugini
[pt] [pt]
DROPPED_RES = Foste desconectado por causa da reservação de slots DROPPED_RES = Foste desconectado por causa da reservação de slots
CVAR_RESERVATION = Quantidade de slots para reservar
CVAR_HIDESLOTS = Se tu definires isto para 1, tu podes esconder slots no teu servidor.^nSe os slots públicos e escondidos do servidor estiverem cheios, tu deverás manualmente conectar com o comando de consola "connect".

View File

@ -45,10 +45,10 @@ VOTING_RES_2 = %s (erhielt "%d") (benötigt "%d")
VOTING_SUCCESS = Abstimmung erfolgreich VOTING_SUCCESS = Abstimmung erfolgreich
VOTING_RES_3 = %s (erhielt "%d") (benötigt "%d"). Ergebnis: %s VOTING_RES_3 = %s (erhielt "%d") (benötigt "%d"). Ergebnis: %s
THE_RESULT = Das Ergebnis THE_RESULT = Das Ergebnis
WANT_CONTINUE = Forfahren? WANT_CONTINUE = Fortfahren?
VOTED_FOR = %s stimmten dafür VOTED_FOR = %s stimmte dafür
VOTED_AGAINST = %s stimmten dagegen VOTED_AGAINST = %s stimmte dagegen
VOTED_FOR_OPT = %s stimmten für Option #%d VOTED_FOR_OPT = %s stimmte für Option #%d
ALREADY_VOTING = Abstimmung läuft bereits... ALREADY_VOTING = Abstimmung läuft bereits...
VOTING_NOT_ALLOW = Abstimmung ist momentan nicht möglich! VOTING_NOT_ALLOW = Abstimmung ist momentan nicht möglich!
GIVEN_NOT_VALID = %s ist unzulässig GIVEN_NOT_VALID = %s ist unzulässig
@ -475,38 +475,38 @@ ADMIN_VOTE_FOR_1 = %s: glasuva %s za %s
ADMIN_VOTE_FOR_2 = %s %s: glasuva %s za %s ADMIN_VOTE_FOR_2 = %s %s: glasuva %s za %s
[ro] [ro]
ADMIN_CANC_VOTE_1 = %s: anuleaza vot ADMIN_CANC_VOTE_1 = %s: anulează votarea
ADMIN_CANC_VOTE_2 = %s %s: anuleaza vot ADMIN_CANC_VOTE_2 = %s %s: anulează votarea
VOTING_CANC = Votarea a fost anulata VOTING_CANC = Votarea a fost anulată
NO_VOTE_CANC = Nu exista votari pentru anulare sau nu poate fi anulata cu aceea comanda NO_VOTE_CANC = Nu există votări ce pot fi anulate, sau nu pot fi anulate cu această comandă.
RES_REF = Rezultat refuzat RES_REF = Rezultat refuzat
RES_ACCEPTED = Rezultat acceptat RES_ACCEPTED = Rezultat acceptat
VOTING_FAILED = Votare esuata VOTING_FAILED = Votare eșuată
VOTING_RES_1 = %s (da "%d" voturi, nu "%dvoturi", necesare "%d") VOTING_RES_1 = %s (da "%d") (nu "%d") (necesare "%d")
VOTING_RES_2 = %s (a obtinut "%d voturi", necesare "%d") VOTING_RES_2 = %s (a obținut "%d" voturi) (necesare "%d")
VOTING_SUCCESS = Votarea a avut loc cu succes VOTING_SUCCESS = Votarea a avut loc cu succes
VOTING_RES_3 = %s (a obtinut "%d" voturi, necesare "%d"). Rezultatul este: %s VOTING_RES_3 = %s (a obținut "%d" voturi) (necesare "%d"). Rezultatul este: %s
THE_RESULT = Rezultatul THE_RESULT = Rezultatul
WANT_CONTINUE = Accepti schimbarea hartii? WANT_CONTINUE = Doriți să continuați?
VOTED_FOR = %s a votat pentru VOTED_FOR = %s a votat pentru
VOTED_AGAINST = %s a votat impotriva VOTED_AGAINST = %s a votat împotrivă
VOTED_FOR_OPT = %s a votat pentru #%d VOTED_FOR_OPT = %s a votat pentru #%d
ALREADY_VOTING = Deja se afla o votare in curs de desfasurare... ALREADY_VOTING = Se află deja o votare în curs de desfășurare...
VOTING_NOT_ALLOW = Votarile nu sunt permise acum VOTING_NOT_ALLOW = Votările nu sunt permise momentan
GIVEN_NOT_VALID = %s nu este valida GIVEN_NOT_VALID = %s este invalidă
MAP_IS = harta este MAP_IS = harta este
MAPS_ARE = hartile sunt MAPS_ARE = hărțile sunt
CHOOSE_MAP = Alege harta CHOOSE_MAP = Alege harta
ADMIN_VOTE_MAP_1 = %s: votare harta ADMIN_VOTE_MAP_1 = %s: votare pentru harta/hărțile
ADMIN_VOTE_MAP_2 = %s %s: votare harta ADMIN_VOTE_MAP_2 = %s %s: votare pentru harta/hărțile
VOTING_STARTED = Votarea a inceput... VOTING_STARTED = Votarea a început...
VOTING_FORBIDDEN = Votarea pentru aceasta optiune nu este permisa VOTING_FORBIDDEN = Votarea pentru această opțiune este interzisă
ADMIN_VOTE_CUS_1 = %s: votare customizata ADMIN_VOTE_CUS_1 = %s: votare personalizată
ADMIN_VOTE_CUS_2 = %s %s: votare customizata ADMIN_VOTE_CUS_2 = %s %s: votare personalizată
VOTE = Voteaza VOTE = Votează
ACTION_PERFORMED = Aceasta comanda nu poate fi executata pe bot-ul "%s" ACTION_PERFORMED = Această comandă nu poate fi executată pe BOT-ul "%s"
ADMIN_VOTE_FOR_1 = %s: vot %s pentru %s ADMIN_VOTE_FOR_1 = %s: a votat %s pentru %s
ADMIN_VOTE_FOR_2 = %s %s: vot %s pentru %s ADMIN_VOTE_FOR_2 = %s %s: a votat %s pentru %s
[hu] [hu]
ADMIN_CANC_VOTE_1 = %s: szavazás visszavonása ADMIN_CANC_VOTE_1 = %s: szavazás visszavonása

View File

@ -41,7 +41,7 @@ STOP_FLOOD = Lopeta floodiminen!
STOP_FLOOD = Ne fluudvai servera! STOP_FLOOD = Ne fluudvai servera!
[ro] [ro]
STOP_FLOOD = Nu mai flooda server-ul! STOP_FLOOD = Oprește-te din a flooda serverul!
[hu] [hu]
STOP_FLOOD = Ne floodolj és ne spamelj! STOP_FLOOD = Ne floodolj és ne spamelj!

View File

@ -69,9 +69,9 @@ CONF_MENU = Konfiguracionno menu
SPE_MENU = Menu za govorene SPE_MENU = Menu za govorene
[ro] [ro]
CMD_MENU = Menu Comenzi CMD_MENU = Meniu comenzi
CONF_MENU = Menu Configuratie CONF_MENU = Meniu configuri
SPE_MENU = Menu Speech SPE_MENU = Meniu Speech
[hu] [hu]
CMD_MENU = Parancs Menü CMD_MENU = Parancs Menü

View File

@ -307,24 +307,24 @@ ON = Vklucheno
OFF = Isklucheno OFF = Isklucheno
[ro] [ro]
BACK = Inapoi BACK = Înapoi
EXIT = Iesire EXIT = Ieși
MORE = Mai mult MORE = Mai mult
NONE = Nici unul NONE = Niciunul
ADMIN = ADMIN ADMIN = ADMIN
PLAYER = JUCATOR PLAYER = JUCĂTOR
ERROR = eroare ERROR = eroare
YES = Da YES = Da
NO = Nu NO = Nu
BAN = ban BAN = ban
KICK = kick KICK = kick
NO_ACC_COM = Nu ai acces la aceasta comanda NO_ACC_COM = Nu ai acces la această comandă
USAGE = Valoare USAGE = Valoare
MORE_CL_MATCHT = Sunt mai multi jucatori ce va indeplinesc cautarea MORE_CL_MATCHT = Există mai mulți jucători care îndeplinesc condițiile
CL_NOT_FOUND = Jucatorul cu acel nume sau id nu exista CL_NOT_FOUND = Jucătorul cu acel nume sau userid nu a fost găsit
CLIENT_IMM = Jucatorul "%s" are imunitate CLIENT_IMM = Jucătorul "%s" are imunitate
CANT_PERF_DEAD = Aceasta comanda nu poate fi executata pe jucatorul decedat "%s" CANT_PERF_DEAD = Această comandă nu poate fi executată pe jucătorul mort "%s"
CANT_PERF_BOT = Aceasta comanda nu poate fi executata pe bot-ul "%s" CANT_PERF_BOT = Această comandă nu poate fi executată pe BOT-ul "%s"
ON = Activat ON = Activat
OFF = Dezactivat OFF = Dezactivat
@ -538,9 +538,9 @@ YES = Sim
NO = Não NO = Não
BAN = banir BAN = banir
KICK = expulsar KICK = expulsar
NO_ACC_COM = Tu nao tens acesso a esse comando NO_ACC_COM = Tu não tens acesso a esse comando
USAGE = Uso USAGE = Uso
MORE_CL_MATCHT = Tem mais do que um cliente que corresponde ao teu argumento MORE_CL_MATCHT = mais do que um cliente a corresponder o teu argumento
CL_NOT_FOUND = O cliente com esse nome ou userid não foi encontrado CL_NOT_FOUND = O cliente com esse nome ou userid não foi encontrado
CLIENT_IMM = O cliente "%s" tem imunidade CLIENT_IMM = O cliente "%s" tem imunidade
CANT_PERF_DEAD = Essa ação não pode ser executada no cliente morto "%s" CANT_PERF_DEAD = Essa ação não pode ser executada no cliente morto "%s"

View File

@ -41,7 +41,7 @@ INF_REACH = Information Message -raja ylitetty!
INF_REACH = Dostignat e limitut za ingormacionni suobshteniq! INF_REACH = Dostignat e limitut za ingormacionni suobshteniq!
[ro] [ro]
INF_REACH = Limita mesajelor informative a fost atinsa! INF_REACH = A fost atinsă limita maximă a mesajelor informative!
[hu] [hu]
INF_REACH = Információs üzenetek limitje elérve! INF_REACH = Információs üzenetek limitje elérve!

View File

@ -56,7 +56,7 @@ LANG_NAME_NATIVE = Bulgarski
[ro] [ro]
LANG_NAME = Romanian LANG_NAME = Romanian
LANG_NAME_NATIVE = Romana LANG_NAME_NATIVE = Română
[hu] [hu]
LANG_NAME = Hungarian LANG_NAME = Hungarian

View File

@ -125,13 +125,13 @@ EXTED_MAP = Udalji kartata %s
TIME_CHOOSE = Vreme e da se izbere sledvashtata karta... TIME_CHOOSE = Vreme e da se izbere sledvashtata karta...
[ro] [ro]
CHO_FIN_EXT = Votarea s-a incheiat. Harta actuala va fi prelungita %.0f minute CHO_FIN_EXT = Votarea s-a terminat. Harta actuală va fi prelungită cu %.0f minute
CHO_FIN_NEXT = Votarea s-a incheiat. Urmatoarea harta va fi %s CHO_FIN_NEXT = Votarea s-a terminat. Următoarea hartă va fi %s
CHOSE_EXT = %s a votat pentru prelungirea hartii actuale CHOSE_EXT = %s a votat pentru prelungirea hărții actuale
X_CHOSE_X = %s a votat pentru %s X_CHOSE_X = %s a votat pentru %s
CHOOSE_NEXTM = AMX Alege harta urmatoare CHOOSE_NEXTM = AMX Alege harta următoare
EXTED_MAP = Prelungirea hartii actuale %s EXTED_MAP = Prelungirea hărții %s
TIME_CHOOSE = E timpul sa alegeti harta urmatoare... TIME_CHOOSE = Este timpul să alegeți harta următoare...
[hu] [hu]
CHO_FIN_EXT = A választás véget ért. A mostani pálya még %.0f percig lesz. CHO_FIN_EXT = A választás véget ért. A mostani pálya még %.0f percig lesz.

View File

@ -30,7 +30,7 @@ VOTE_FAILED = Abstimmung gescheitert
THE_WINNER = Der Gewinner THE_WINNER = Der Gewinner
WANT_CONT = Willst du fortfahren? WANT_CONT = Willst du fortfahren?
VOT_CANC = Abstimmung abgebrochen VOT_CANC = Abstimmung abgebrochen
X_VOTED_FOR = %s stimmten für Option #%d X_VOTED_FOR = %s stimmte für Option #%d
VOTEMAP_MENU = Menü > Mapwahl VOTEMAP_MENU = Menü > Mapwahl
START_VOT = Starte Abstimmung START_VOT = Starte Abstimmung
SEL_MAPS = Ausgewählte Maps SEL_MAPS = Ausgewählte Maps
@ -337,26 +337,26 @@ CHANGLE_MENU = Smenqne na karta Menu
[ro] [ro]
RESULT_REF = Rezultat refuzat RESULT_REF = Rezultat refuzat
RESULT_ACC = Rezultat acceptat RESULT_ACC = Rezultat acceptat
VOTE_SUCCESS = Votarea a avut loc cu succes. Harta va fi schimbata pe VOTE_SUCCESS = Votarea a avut loc cu succes. Harta va fi schimbată pe
VOTE_FAILED = Votare esuata VOTE_FAILED = Votare eșuată
THE_WINNER = Castigatoare THE_WINNER = Câștigătoare
WANT_CONT = Accepti schimbarea hartii? WANT_CONT = Doriți să continuați?
VOT_CANC = Votarea a fost anulata VOT_CANC = Votarea a fost anulată
X_VOTED_FOR = %s a votat pentru #%d X_VOTED_FOR = %s a votat pentru #%d
VOTEMAP_MENU = Menu Votare Harta VOTEMAP_MENU = Meniu votare hartă
START_VOT = Incepe Votarea START_VOT = Începe votarea
SEL_MAPS = Harti Alese SEL_MAPS = Hărți alese
ALREADY_VOT = Se desfasoara o votare deja... ALREADY_VOT = Se desfășoară o votare deja...
NO_MAPS_MENU = Nu exista harti in menu NO_MAPS_MENU = Nu există hărți în meniu
VOT_NOW_ALLOW = Nu sunt permise votarile acum VOT_NOW_ALLOW = Nu sunt permise votările momentan
WHICH_MAP = Ce harta doresti? WHICH_MAP = Ce hartă dorești?
CHANGE_MAP_TO = Schimbare harta pe CHANGE_MAP_TO = Schimbare hartă pe
CANC_VOTE = Anuleaza Vot CANC_VOTE = Anulează vot
ADMIN_V_MAP_1 = ADMIN: votare harta ADMIN_V_MAP_1 = ADMIN: votare hartă
ADMIN_V_MAP_2 = ADMIN %s: votare harta ADMIN_V_MAP_2 = ADMIN %s: votare hartă
ADMIN_CHANGEL_1 = ADMIN: schimbare harta pe %s ADMIN_CHANGEL_1 = ADMIN: schimbare hartă pe %s
ADMIN_CHANGEL_2 = ADMIN %s: schimbare harta pe %s ADMIN_CHANGEL_2 = ADMIN %s: schimbare hartă pe %s
CHANGLE_MENU = Menu Schimbare Harta CHANGLE_MENU = Meniu schimbare hartă
[hu] [hu]
RESULT_REF = A szavazás eredménytelen. RESULT_REF = A szavazás eredménytelen.

View File

@ -17,10 +17,10 @@ RES_WEAP = Restrict Weapons
TELE_PLAYER = Teleport Player TELE_PLAYER = Teleport Player
[de] [de]
KICK_PLAYER = Kick Spieler KICK_PLAYER = Spieler kicken
BAN_PLAYER = Ban Spieler BAN_PLAYER = Spieler bannen
SLAP_SLAY = Schlage/Kille Spieler SLAP_SLAY = Spieler schlagen/killen
TEAM_PLAYER = Team Spieler ^n TEAM_PLAYER = Team der Spieler ändern ^n
CHANGEL = Mapwechsel CHANGEL = Mapwechsel
VOTE_MAPS = Map Abstimmung ^n VOTE_MAPS = Map Abstimmung ^n
SPECH_STUFF = Soundausgabe SPECH_STUFF = Soundausgabe
@ -32,7 +32,7 @@ LANG_SET = Spracheinstellung
STATS_SET = Statistik-Einstellungen ^n STATS_SET = Statistik-Einstellungen ^n
PAUSE_PLUG = Plugins pausieren PAUSE_PLUG = Plugins pausieren
RES_WEAP = Waffen verbieten RES_WEAP = Waffen verbieten
TELE_PLAYER = Teleport Spieler TELE_PLAYER = Spieler teleportieren
[sr] [sr]
KICK_PLAYER = Kick Igraca KICK_PLAYER = Kick Igraca
@ -251,22 +251,22 @@ RES_WEAP = Zabrani orujiq
TELE_PLAYER = Teleportirai igrachi TELE_PLAYER = Teleportirai igrachi
[ro] [ro]
KICK_PLAYER = Kick Jucator KICK_PLAYER = Kick jucător
BAN_PLAYER = Ban Jucator BAN_PLAYER = Ban jucător
SLAP_SLAY = Plesneste/Ucide Jucator SLAP_SLAY = Slap/Slay jucător
TEAM_PLAYER = Jucator Echipa ^n TEAM_PLAYER = Schimbare echipă jucător ^n
CHANGEL = Schimba harta CHANGEL = Schimbă harta
VOTE_MAPS = Voteaza pentru hartile ^n VOTE_MAPS = Vot pentru hărțile ^n
SPECH_STUFF = Speech SPECH_STUFF = Meniu Speech
CLIENT_COM = Comenzi Jucatori CLIENT_COM = Comenzi jucător
SERVER_COM = Comenzi Server SERVER_COM = Comenzi server
CVARS_SET = Setari Cvar CVARS_SET = Setări cvar
CONFIG = Configuratie CONFIG = Configurații
LANG_SET = Setari Limbaj LANG_SET = Setări limbă
STATS_SET = Setari Statistici ^n STATS_SET = Setări statistici ^n
PAUSE_PLUG = Opreste Plugin-uri PAUSE_PLUG = Întrerupe pluginuri
RES_WEAP = Restrictioneaza Arme RES_WEAP = Restricționează arme
TELE_PLAYER = Teleporteaza Jucator TELE_PLAYER = Teleportează jucător
[hu] [hu]
KICK_PLAYER = Játékos kirúgása KICK_PLAYER = Játékos kirúgása
@ -438,7 +438,7 @@ TEAM_PLAYER = Equipa do Jogador ^n
CHANGEL = Mudar de Mapa CHANGEL = Mudar de Mapa
VOTE_MAPS = Votação de Mapas ^n VOTE_MAPS = Votação de Mapas ^n
SPECH_STUFF = Menu de Voz SPECH_STUFF = Menu de Voz
CLIENT_COM = Comandos do Client CLIENT_COM = Comandos do Cliente
SERVER_COM = Comandos do Servidor SERVER_COM = Comandos do Servidor
CVARS_SET = Definições de Cvars CVARS_SET = Definições de Cvars
CONFIG = Configuração CONFIG = Configuração

View File

@ -56,7 +56,7 @@ KNIFE_MSG_4 = %s messerte und verstümmelte %s
LAST_MSG_1 = Nun hängt alles von dir ab! LAST_MSG_1 = Nun hängt alles von dir ab!
LAST_MSG_2 = Hoffentlich hast du ein Medipack dabei. LAST_MSG_2 = Hoffentlich hast du ein Medipack dabei.
LAST_MSG_3 = Deine Teamkameraden sind alle tot. Viel Glück! LAST_MSG_3 = Deine Teamkameraden sind alle tot. Viel Glück!
LAST_MSG_4 = Nun bist du allein. Hab Spass dabei! LAST_MSG_4 = Nun bist du allein. Hab Spaß dabei!
HE_MSG_1 = %s sendet ein kleines Geschenk an %s HE_MSG_1 = %s sendet ein kleines Geschenk an %s
HE_MSG_2 = %s wirft ein Knallbonbon zu %s HE_MSG_2 = %s wirft ein Knallbonbon zu %s
HE_MSG_3 = %s macht einen Präzisionswurf zu %s HE_MSG_3 = %s macht einen Präzisionswurf zu %s
@ -70,7 +70,7 @@ HS_MSG_2 = $kn entfernte den Kopf von $vn^nmit einem Präzisionsschuss.
HS_MSG_3 = $kn verwandelte den Kopf ^nvon $vn in Pudding. HS_MSG_3 = $kn verwandelte den Kopf ^nvon $vn in Pudding.
HS_MSG_4 = $kn besiegte $vn durch einen Kopfschuss. HS_MSG_4 = $kn besiegte $vn durch einen Kopfschuss.
HS_MSG_5 = $vn's Kopf wurde in der Gegend verteilt HS_MSG_5 = $vn's Kopf wurde in der Gegend verteilt
HS_MSG_6 = $kn hat einen super ^nTreffer gelandet,das weiss ^n$vn nun auch. HS_MSG_6 = $kn hat einen super ^nTreffer gelandet,das weiß ^n$vn nun auch.
HS_MSG_7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn... HS_MSG_7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn...
DOUBLE_KILL = Wow! %s machte einen Doppelkill!!! DOUBLE_KILL = Wow! %s machte einen Doppelkill!!!
PREPARE_FIGHT = Vorbereiten zum Kampf!^nRunde %d PREPARE_FIGHT = Vorbereiten zum Kampf!^nRunde %d
@ -670,49 +670,51 @@ HS = hs
[ro] [ro]
WITH = cu WITH = cu
KNIFE_MSG_1 = %s l-a taiat si feliat pe %s KNIFE_MSG_1 = %s l-a tăiat cubulețe pe %s
KNIFE_MSG_2 = %s a scos cutitul afara si l-a macelarit pe %s KNIFE_MSG_2 = %s a scos cuțitul și l-a măcelărit pe %s
KNIFE_MSG_3 = %s se furiseaza atent pe la spate si il taie pe %s KNIFE_MSG_3 = %s s-a furișat pe la spate și l-a cuțitat pe %s
KNIFE_MSG_4 = %s l-a injunghiat pe %s KNIFE_MSG_4 = %s l-a înjunghiat pe %s
LAST_MSG_1 = Acum toti se bazeaza pe tine! LAST_MSG_1 = Acum toți depind de tine!
LAST_MSG_2 = Sper ca mai ai viata. LAST_MSG_2 = Sper că mai ai putere!
LAST_MSG_3 = Toti colegii tai de echipa au murit. Bafta! LAST_MSG_3 = Toți coechipierii tăi au murit. Baftă!
LAST_MSG_4 = Acum esti singur. Distreaza-te! LAST_MSG_4 = Acum ești pe barba ta. Distrează-te!
HE_MSG_1 = %s ii trimite un mic cadou lui %s HE_MSG_1 = %s i-a trimis un cadou surpriză lui %s
HE_MSG_2 = %s ii arunca un dar micut lui %s HE_MSG_2 = %s a aruncat o mică petardă la picioarele lui %s
HE_MSG_3 = %s a facut o aruncare precisa catre %s HE_MSG_3 = %s i-a livrat o grenadă lui %s
HE_MSG_4 = %s a avut o explozie mare pentru %s HE_MSG_4 = %s l-a aruncat în aer pe %s
SHE_MSG_1 = %s s-a detonat cu o grenada SHE_MSG_1 = %s s-a sinucis cu o grenadă
SHE_MSG_2 = %s incearca efectul unei grenade SHE_MSG_2 = %s a înghițit o grenadă
SHE_MSG_3 = %s inghite grenazi cu totul! SHE_MSG_3 = %s și-a aruncat o grenadă sub picioare
SHE_MSG_4 = %s explodeaza! SHE_MSG_4 = %s a explodat!
HS_MSG_1 = $kn l-a ucis pe $vn cu o impuscatura bine^nplasata pe cap! HS_MSG_1 = $kn i-a trimis lui $vn un^nglonț fix în cap!
HS_MSG_2 = $kn a inlaturat capul lui $vn^ncu $wn HS_MSG_2 = $kn i-a înlăturat lui $vn^ncapul de pe umeri cu $wn
HS_MSG_3 = $kn a transformat capul lui $vn ^nin budinca cu $wn HS_MSG_3 = $kn a făcut capul lui $vn^nbudincă cu $wn
HS_MSG_4 = $vn a fost invins de $kn HS_MSG_4 = $vn a fost umilit de $kn
HS_MSG_5 = Capul lui $vn a fost^ntransformat in gelatina rosie HS_MSG_5 = Capul lui $vn s-a transformat în gelatină roșie
HS_MSG_6 = $kn are o tinta superba cu $wn,^niar $vn stie bine. HS_MSG_6 = $kn are o acuratețe deosebită cu $wn,^niar $vn știe bine
HS_MSG_7 = Capul lui $vn a stat prea mult in tinta lui $kn... HS_MSG_7 = Capul lui $vn a stat în ținta lui $kn^npentru prea mult timp...
DOUBLE_KILL = Wow! %s a facut o dubla ucidere!!! DOUBLE_KILL = Wow! %s made a double kill!!!
PREPARE_FIGHT = Pregateste-te de LUPTA!^nRunda %d PREPARE_FIGHT = Pregătește-te de LUPTĂ!^nRunda %d
KILLED_ROW = Ai ucis %d consecutiv pana acum KILLED_ROW = Ai ucis %d consecutiv până acum
DIED_ROUNDS = Ai grija! Ai murit %d runde consecutiv... DIED_ROUNDS = Ai grijă! Ai murit %d runde la rând...
KILLED_CHICKEN = Cineva a omorat o gaina!!! KILLED_CHICKEN = Cineva a omorât o găină!!!
BLEW_RADIO = Cineva a aruncat radioul in aer!!! BLEW_RADIO = Cineva a aruncat radio-ul în aer!!!
REACHED_TARGET = Omg! %s a ajuns la destinatie! REACHED_TARGET = Omg! %s a ajuns la destinație!
PLANT_BOMB = %s planteaza bomba! PLANT_BOMB = %s plantează bomba...
DEFUSING_BOMB = %s dezamorseaza bomba... DEFUSING_BOMB = %s dezamorsează bomba...
SET_UP_BOMB = %s ne-a pus bomba!!! SET_UP_BOMB = %s ne-a pus bomba!!!
DEFUSED_BOMB = %s a dezamorsat bomba! DEFUSED_BOMB = %s a dezamorsat bomba!
FAILED_DEFU = %s nu a reusit sa dezamorseze bomba... FAILED_DEFU = %s nu a reușit să dezamorseze bomba...
PICKED_BOMB = %s a luat bomba... PICKED_BOMB = %s a ridicat bomba...
DROPPED_BOMB = %s a scapat bomba!!! DROPPED_BOMB = %s a scăpat bomba!!!
CT = CT CT = Contra-Terorist
CTS = CTI CTS = Contra-Teroriști
TERRORIST = TERORIST TERRORIST = Terorist
TERRORISTS = TERORISTI TERRORISTS = Teroriști
REMAINING = %d %s Ramasi in viata... REMAINING = %d %s mași în viață...
KILLS = Ucideri REMAINING_ENEMY = Un inamic rămas...
REMAINING_ENEMIES = %d inamici rămași...
KILLS = kills
HS = hs HS = hs
[hu] [hu]
@ -1172,7 +1174,7 @@ PREPARE_FIGHT = Preparem-se para LUTAR!^nRonda %d
KILLED_ROW = Tu mataste %d vezes de seguida KILLED_ROW = Tu mataste %d vezes de seguida
DIED_ROUNDS = Cuidado! Tu morreste %d vezes de seguida... DIED_ROUNDS = Cuidado! Tu morreste %d vezes de seguida...
KILLED_CHICKEN = Alguém matou a galinha!!! KILLED_CHICKEN = Alguém matou a galinha!!!
BLEW_RADIO = Alguém explodiu rádio!!! BLEW_RADIO = Alguém explodiu o rádio!!!
REACHED_TARGET = Oh meu deus! %s alcançou o objetivo! REACHED_TARGET = Oh meu deus! %s alcançou o objetivo!
PLANT_BOMB = %s está a plantar a bomba! PLANT_BOMB = %s está a plantar a bomba!
DEFUSING_BOMB = %s está a desarmar a bomba... DEFUSING_BOMB = %s está a desarmar a bomba...
@ -1185,7 +1187,7 @@ CT = CT
CTS = CTS CTS = CTS
TERRORIST = TERRORISTA TERRORIST = TERRORISTA
TERRORISTS = TERRORISTAS TERRORISTS = TERRORISTAS
REMAINING = %d %s Restante... REMAINING = %d %s Restante(s)...
REMAINING_ENEMY = Resta um inimigo... REMAINING_ENEMY = Resta um inimigo...
REMAINING_ENEMIES = Restam %d inimigos... REMAINING_ENEMIES = Restam %d inimigos...
KILLS = mortes KILLS = mortes

View File

@ -153,15 +153,15 @@ TYPE_LANGMENU = Napishi 'amx_langmenu' v konzolata za da vidish menuto kudeto mo
LANG_MENU_DISABLED = Ezikovoto menu e izkliucheno. LANG_MENU_DISABLED = Ezikovoto menu e izkliucheno.
[ro] [ro]
LANG_NOT_EXISTS = Acest limbaj nu exista LANG_NOT_EXISTS = Această limbă nu există
PERSO_LANG = Limbaj Personal PERSO_LANG = Limbă personală
LANG_MENU = Menu Limbaj LANG_MENU = Meniu limbi
SERVER_LANG = Limbaj Server SERVER_LANG = Limbă server
SAVE_LANG = Salveaza Limbaj SAVE_LANG = Salvează limba
SET_LANG_SERVER = Limbajul server-ului a fost setat pe "%s" SET_LANG_SERVER = Limba serverului a fost setată pe "%s"
SET_LANG_USER = Limbajul tau a fost setat pe "%s" SET_LANG_USER = Limba ta a fost setată pe "%s"
TYPE_LANGMENU = Scrie 'amx_langmenu' in consola pentru afisarea unui menu cu limbaje TYPE_LANGMENU = Scrie 'amx_langmenu' în consolă pentru a-ți selecta limba preferată
LANG_MENU_DISABLED = Menu limbaj dezactivat. LANG_MENU_DISABLED = Meniu limbă dezactivat.
[hu] [hu]
LANG_NOT_EXISTS = A nyelv nem létezik LANG_NOT_EXISTS = A nyelv nem létezik

View File

@ -5,7 +5,7 @@ FRIEND_FIRE = Friendly fire
[de] [de]
NEXT_MAP = Nächste Map: NEXT_MAP = Nächste Map:
PLAYED_MAP = Gespielte Maps PLAYED_MAP = Aktuelle Map
FRIEND_FIRE = Friendly fire FRIEND_FIRE = Friendly fire
[sr] [sr]
@ -69,9 +69,9 @@ PLAYED_MAP = Igrana karta
FRIEND_FIRE = Priqtelski ogun FRIEND_FIRE = Priqtelski ogun
[ro] [ro]
NEXT_MAP = Urmatoarea Harta: NEXT_MAP = Harta următoare:
PLAYED_MAP = Harta Actuala PLAYED_MAP = Harta actuală
FRIEND_FIRE = Friendly-Fire FRIEND_FIRE = Atac coechipieri
[hu] [hu]
NEXT_MAP = A következő pálya: NEXT_MAP = A következő pálya:

View File

@ -549,44 +549,44 @@ CANT_UNPAUSE_PLUGIN = Pluginut "%s" e sprqn i ne moje da bude slojen/premahnat n
CLEAR_PAUSED = Izchisti faila s plugini na pauza CLEAR_PAUSED = Izchisti faila s plugini na pauza
[ro] [ro]
PAUSE_COULDNT_FIND = Nu a fost gasit un plugin ce rezulta cautarea "%s" PAUSE_COULDNT_FIND = Nu a fost găsit niciun plugin după căutarea "%s"
PAUSE_PLUGIN_MATCH = Plugin-ul "%s" rezulta cautarea PAUSE_PLUGIN_MATCH = Pluginul îndeplinește căutarea "%s"
PAUSE_CONF_CLEARED = Fisier-ul de configuratie a fost golit. Reincarca harta daca este nevoie PAUSE_CONF_CLEARED = Fișierul de configurație a fost golit. Reîncarcă harta dacă este nevoie
PAUSE_ALR_CLEARED = Configuratia a fost golita deja! PAUSE_ALR_CLEARED = Configurația a fost golită deja!
PAUSE_CONF_SAVED = Configuratia a fost salvata cu succes PAUSE_CONF_SAVED = Configurația a fost salvată cu succes
PAUSE_SAVE_FAILED = Salvarea configuratiei a esuat!!! PAUSE_SAVE_FAILED = Salvarea configurației a eșuat!
LOCKED = BLOCAT LOCKED = BLOCAT
PAUSE_UNPAUSE = Intrerupe/Reincarca Plugin-uri PAUSE_UNPAUSE = Întrerupe/Reactivează pluginuri
CLEAR_STOPPED = Goleste fisier-ul cu cele intrerupte CLEAR_STOPPED = Golește fișierul cu pluginurile întrerupte
SAVE_STOPPED = Salveaza fisier-ul cu cele intrerupte SAVE_STOPPED = Salvează fișierul cu pluginurile întrerupte
PAUSED_PLUGIN = Plugin-ul %d a fost intrerupt PAUSED_PLUGIN = Pluginul %d a fost întrerupt
PAUSED_PLUGINS = Au fost intrerupte %d plugin-uri PAUSED_PLUGINS = Au fost întrerupte %d pluginuri
UNPAUSED_PLUGIN = Plugin-ul %d a fost reincarcat UNPAUSED_PLUGIN = Pluginul %d a fost reactivat
UNPAUSED_PLUGINS = Au fost reincarcate %d plugin-uri UNPAUSED_PLUGINS = Au fost reactivate %d pluginuri
CANT_MARK_MORE = Nu se pot marca mai multe plugin-uri ca intrerupte! CANT_MARK_MORE = Nu poți reactiva mai multe pluginuri
PAUSE_LOADED = Intrerupe plugin-uri: Plugin-uri incarcate PAUSE_LOADED = Întrerupe plugin-uri: Pluginuri încărcate
STOPPED = intrerupte STOPPED = întrerupte
VERSION = versiune VERSION = versiune
FILE = fisier FILE = fișier
PAUSE_ENTRIES = Intrari %d - %d din %d (%d functioneaza) PAUSE_ENTRIES = Se afișează %d - %d din %d (%d funcționează)
PAUSE_USE_MORE = Scrie 'amx_pausecfg list %d' pentru mai mult PAUSE_USE_MORE = Scrie 'amx_pausecfg list %d' pentru mai mult
PAUSE_USE_BEGIN = Scrie 'amx_pausecfg list 1' pentru inceput PAUSE_USE_BEGIN = Scrie 'amx_pausecfg list 1' pentru a începe
PAUSE_USAGE = Folosire: amx_pausecfg <comanda> [nume] PAUSE_USAGE = Utilizare: amx_pausecfg <comandă> [nume]
PAUSE_COMMANDS = Comenzi PAUSE_COMMANDS = Comenzi
COM_PAUSE_OFF = ^toff - intrerupe toate plugin-urile ce nu sunt in lista COM_PAUSE_OFF = ^toff - întrerupe toate pluginurile care nu se află în listă
COM_PAUSE_ON = ^ton - reincarca toate plugin-urile ce nu sunt in lista COM_PAUSE_ON = ^ton - reactivează toate pluginurile
COM_PAUSE_STOP = ^tstop <fisier> - opreste un plugin COM_PAUSE_STOP = ^tstop <fisier> - oprește un plugin
COM_PAUSE_PAUSE = ^tpause <fisier> - intrerupe un plugin COM_PAUSE_PAUSE = ^tpause <fisier> - întrerupe un plugin
COM_PAUSE_ENABLE = ^tenable <file> - incarca un plugin COM_PAUSE_ENABLE = ^tenable <file> - activează un plugin
COM_PAUSE_SAVE = ^tsave - salveaza o lista a plugin-urilor oprite COM_PAUSE_SAVE = ^tsave - salvează o listă a pluginurilor întrerupte
COM_PAUSE_CLEAR = ^tclear - goleste o lista a plugin-urilor oprite COM_PAUSE_CLEAR = ^tclear - golește o listă a pluginurilor întrerupte
COM_PAUSE_LIST = ^tlist [id] - listeaza plugin-urile COM_PAUSE_LIST = ^tlist [id] - listează pluginurile
COM_PAUSE_ADD = ^tadd <title> - marcheaza un plugin ca si reincarcat COM_PAUSE_ADD = ^tadd <title> - marchează un plugin ca și reactivat
SAVE_PAUSED = Salvarea oprita SAVE_PAUSED = Salvare oprită
COM_PAUSE_SAVE_PAUSED = ^tsave - salveaza o lista cu pluginurile oprite COM_PAUSE_SAVE_PAUSED = ^tsave - salvează o listă cu pluginurile oprite
COM_PAUSE_CLEAR_PAUSED = ^tclear - sterge lista cu pluginurile oprite COM_PAUSE_CLEAR_PAUSED = ^tclear - șterge listă cu pluginurile oprite
CANT_UNPAUSE_PLUGIN = Pluginul "%s" este oprit si nu poate fi pus pe pauza sau scos din pauza. CANT_UNPAUSE_PLUGIN = Pluginul "%s" este oprit și nu poate fi întrerupt sau reactivat.
CLEAR_PAUSED = Goleste fisier-ul cu cele oprite CLEAR_PAUSED = Golește fișierul cu pluginurile oprite
[hu] [hu]
PAUSE_COULDNT_FIND = Nem található a plugin "%s" PAUSE_COULDNT_FIND = Nem található a plugin "%s"
@ -936,18 +936,18 @@ CLEAR_PAUSED = Pastro skedarin me pushime
[pt] [pt]
PAUSE_COULDNT_FIND = Não foi possível encontrar um plugin coincidindo "%s" PAUSE_COULDNT_FIND = Não foi possível encontrar um plugin coincidindo "%s"
PAUSE_PLUGIN_MATCH = Plugin coincidindo "%s" PAUSE_PLUGIN_MATCH = Plugin coincidindo "%s"
PAUSE_CONF_CLEARED = Ficheiro de Configuração limpo. Recarrega o map se for necessário PAUSE_CONF_CLEARED = Ficheiro de configuração limpo. Recarrega o mapa se for necessário
PAUSE_ALR_CLEARED = A Configuração já foi limpa! PAUSE_ALR_CLEARED = A configuração já foi limpa!
PAUSE_CONF_SAVED = Configuração guardada com sucesso PAUSE_CONF_SAVED = Configuração guardada com sucesso
PAUSE_SAVE_FAILED = Falha ao guardar a Configuração!!! PAUSE_SAVE_FAILED = Falha ao guardar a configuração!!!
LOCKED = BLOQUEADO LOCKED = BLOQUEADO
PAUSE_UNPAUSE = Pausar/Despausar Plugins PAUSE_UNPAUSE = Pausar/Despausar Plugins
CLEAR_STOPPED = Limpar ficheiro de plugins parados CLEAR_STOPPED = Limpar ficheiro de plugins parados
SAVE_STOPPED = Guardar plugins parados SAVE_STOPPED = Guardar plugins parados
PAUSED_PLUGIN = %d plugin pausado PAUSED_PLUGIN = %d plugin foi pausado
PAUSED_PLUGINS = %d plugins pausados PAUSED_PLUGINS = %d plugins foram pausados
UNPAUSED_PLUGIN = %d plugin despausado UNPAUSED_PLUGIN = %d plugin foi despausado
UNPAUSED_PLUGINS = %d plugins despausados UNPAUSED_PLUGINS = %d plugins foram despausados
CANT_MARK_MORE = Não é possível marcar mais plugins como não-pausáveis! CANT_MARK_MORE = Não é possível marcar mais plugins como não-pausáveis!
PAUSE_LOADED = Pausar Plugins: Plugins carregados PAUSE_LOADED = Pausar Plugins: Plugins carregados
STOPPED = parado STOPPED = parado
@ -958,17 +958,17 @@ PAUSE_USE_MORE = Usa 'amx_pausecfg list %d' para mostrar mais
PAUSE_USE_BEGIN = Usa 'amx_pausecfg list 1' para voltar ao início PAUSE_USE_BEGIN = Usa 'amx_pausecfg list 1' para voltar ao início
PAUSE_USAGE = Uso: amx_pausecfg <comando> [nome] PAUSE_USAGE = Uso: amx_pausecfg <comando> [nome]
PAUSE_COMMANDS = Comandos PAUSE_COMMANDS = Comandos
COM_PAUSE_OFF = ^toff - pausar todos os plugins que não estão na lista COM_PAUSE_OFF = ^toff - pausa todos os plugins que não estão na lista
COM_PAUSE_ON = ^ton - despausar todos os plugins COM_PAUSE_ON = ^ton - despausa todos os plugins
COM_PAUSE_STOP = ^tstop <ficheiro> - parar um plugin COM_PAUSE_STOP = ^tstop <ficheiro> - para um plugin
COM_PAUSE_PAUSE = ^tpause <ficheiro> - pausar um plugin COM_PAUSE_PAUSE = ^tpause <ficheiro> - pausa um plugin
COM_PAUSE_ENABLE = ^tenable <ficheiro> - ativar um plugin COM_PAUSE_ENABLE = ^tenable <ficheiro> - ativa um plugin
COM_PAUSE_SAVE = ^tsave - guardar a lista de plugins parados COM_PAUSE_SAVE = ^tsave - guarda a lista de plugins parados
COM_PAUSE_CLEAR = ^tclear - limpar a lista de plugins parados COM_PAUSE_CLEAR = ^tclear - limpa a lista de plugins parados
COM_PAUSE_LIST = ^tlist [id] - listar plugins COM_PAUSE_LIST = ^tlist [id] - lista plugins
COM_PAUSE_ADD = ^tadd <título> - marcar um plugin como não-pausável COM_PAUSE_ADD = ^tadd <título> - marca um plugin como não-pausável
SAVE_PAUSED = Guardar plugins pausados SAVE_PAUSED = Guardar plugins pausados
COM_PAUSE_SAVE_PAUSED = ^tsave - guarda a lista de plugins pausados COM_PAUSE_SAVE_PAUSED = ^tsave - guarda a lista de plugins pausados
COM_PAUSE_CLEAR_PAUSED = ^tclear - limpa a lista de plugins pausados COM_PAUSE_CLEAR_PAUSED = ^tclear - limpa a lista de plugins pausados
CANT_UNPAUSE_PLUGIN = O Plugin "%s" está parado e não pode ser pausado nem despausado. CANT_UNPAUSE_PLUGIN = O plugin "%s" está parado e não pode ser nem pausado nem despausado.
CLEAR_PAUSED = Limpar ficheiro de plugins pausados CLEAR_PAUSED = Limpar ficheiro de plugins pausados

View File

@ -267,21 +267,21 @@ CANT_PERF_PLAYER = Tazi comanda ne moje da se izpolzva vurhu igracha "%s"
[ro] [ro]
ADMIN_BAN_1 = ADMIN: ban %s ADMIN_BAN_1 = ADMIN: ban %s
ADMIN_BAN_2 = ADMIN %s: ban %s ADMIN_BAN_2 = ADMIN %s: ban %s
BAN_MENU = Menu Ban BAN_MENU = Meniu ban
BAN_FOR_MIN = Ban %d minute BAN_FOR_MIN = Ban %d minute
BAN_PERM = Ban permanent BAN_PERM = Ban permanent
SLAP_SLAY_MENU = Slap/Slay SLAP_SLAY_MENU = Slap/Slay
SLAP_WITH_DMG = Slap cu %d dmg SLAP_WITH_DMG = Slap cu %d damage
SLAY = Slay SLAY = Slay
KICK_MENU = Menu Kick KICK_MENU = Meniu kick
ADMIN_TRANSF_1 = ADMIN: transfera %s la %s ADMIN_TRANSF_1 = ADMIN: transferă pe %s la %s
ADMIN_TRANSF_2 = ADMIN %s: transfera %s la %s ADMIN_TRANSF_2 = ADMIN %s: transferă pe %s la %s
TEAM_MENU = Menu Echipe TEAM_MENU = Meniu schimbare echipe
TRANSF_TO = Transfera la %s TRANSF_TO = Transferă la %s
TRANSF_SILENT = tăcut transfer TRANSF_SILENT = transfer silențios
CL_CMD_MENU = Menu Comenzi Jucator CL_CMD_MENU = Meniu comenzi jucător
NO_CMDS = Nici o comanda valabila NO_CMDS = Nicio comandă disponibilă
CANT_PERF_PLAYER = Aceasta comanda nu poate fi executata pe jucatorul "%s" CANT_PERF_PLAYER = Această comandă nu poate fi executată pe jucătorul "%s"
[hu] [hu]
ADMIN_BAN_1 = ADMIN: %s bannolva ADMIN_BAN_1 = ADMIN: %s bannolva

View File

@ -87,8 +87,8 @@ ADMIN_MENU_SAVEDCFG = Menu: %N saved items restrictions in "%s"
[de] [de]
EQ_WE_RES = Ausrüstung und Waffen wurden verboten EQ_WE_RES = Ausrüstung und Waffen wurden verboten
EQ_WE_UNRES = Ausrüstung und Waffen wurden freigegeben EQ_WE_UNRES = Ausrüstung und Waffen wurden freigegeben
HAVE_BEEN = sind gewesen HAVE_BEEN = wurden
HAS_BEEN = ist gewesen HAS_BEEN = wurde
RESTRICTED = verboten RESTRICTED = verboten
UNRESTRICTED = wieder erlaubt UNRESTRICTED = wieder erlaubt
NO_EQ_WE = Konnte diese Ausrüstung oder Waffe nicht finden NO_EQ_WE = Konnte diese Ausrüstung oder Waffe nicht finden
@ -105,9 +105,9 @@ REST_COULDNT_LOAD = Konfiguration konnte nicht geladen werden (Datei "%s")
COM_REST_USAGE = Benutze: amx_restrict <Befehl> [Wert] COM_REST_USAGE = Benutze: amx_restrict <Befehl> [Wert]
COM_REST_COMMANDS = Befehle: COM_REST_COMMANDS = Befehle:
COM_REST_ON = " on - Setze Verbot auf die gesamte Ausrüstung" COM_REST_ON = " on - Setze Verbot auf die gesamte Ausrüstung"
COM_REST_OFF = " off - Verbot für Ausrüstung aufheben" COM_REST_OFF = " off - Verbot für die gesamte Ausrüstung aufheben"
COM_REST_ONV = " on <value> [...] - Setze spezielles Verbot" COM_REST_ONV = " on <value> [...] - Setze spezielles Verbot"
COM_REST_OFFV = " off <value> [...] - Spezielles Verbot aufgehoben" COM_REST_OFFV = " off <value> [...] - Spezielles Verbot aufheben"
COM_REST_LIST = " list <value> - Zeigt die Liste der verfügbaren Waffen und Ausrüstungen" COM_REST_LIST = " list <value> - Zeigt die Liste der verfügbaren Waffen und Ausrüstungen"
COM_REST_SAVE = " save - Verbote speichern" COM_REST_SAVE = " save - Verbote speichern"
COM_REST_LOAD = " load [file] - Lädt Verbote [aus einer Datei]" COM_REST_LOAD = " load [file] - Lädt Verbote [aus einer Datei]"
@ -155,14 +155,20 @@ MENU_ITEM_M249 = FN M249 Para
MENU_ITEM_VEST = Kevlarweste MENU_ITEM_VEST = Kevlarweste
MENU_ITEM_VESTHELM = Kevlarweste & Helm MENU_ITEM_VESTHELM = Kevlarweste & Helm
MENU_ITEM_FLASHBANG = Blendgranate MENU_ITEM_FLASHBANG = Blendgranate
MENU_ITEM_HEGRENADE = HE Granate MENU_ITEM_HEGRENADE = HE-Granate
MENU_ITEM_SMOKEGRENADE = Rauch Granate MENU_ITEM_SMOKEGRENADE = Rauchgranate
MENU_ITEM_DEFUSER = Entschärfungs Kit MENU_ITEM_DEFUSER = Entschärfungskit
MENU_ITEM_NVGS = Nachtsichtgerät MENU_ITEM_NVGS = Nachtsichtgerät
MENU_ITEM_SHIELD = Tactical Shield MENU_ITEM_SHIELD = Tactical Shield
MENU_ITEM_PRIAMMO = Primär Waffen Munition MENU_ITEM_PRIAMMO = Primärwaffenmunition
MENU_ITEM_SECAMMO = Sekundär Waffen Munition MENU_ITEM_SECAMMO = Sekundärwaffenmunition
CONFIG_FILE_HEADER = ; Erstellt durch %s Plugin. Nicht verändern!^n; Wert Name^n CONFIG_FILE_HEADER = ; Erstellt durch %s Plugin. Nicht verändern!^n; Wert Name^n
ADMIN_UPD_RES_1 = ADMIN: Waffen- und Ausrüstungsverbote wurden aktualisiert.
ADMIN_UPD_RES_2 = ADMIN %s: Waffen- und Ausrüstungsverbote wurden aktualisiert.
ADMIN_CMD_UPDATEDCFG = Cmd: %N Waffen- und Ausrüstungsverbote wurden aktualisiert.
ADMIN_CMD_LOADEDCFG = Cmd: %N Waffen- und Ausrüstungsverbote wurden von "%s" geladen.
ADMIN_CMD_SAVEDCFG = Cmd: %N Waffen- und Ausrüstungsverbote wurden in "%s" gespeichert.
ADMIN_MENU_SAVEDCFG = Menu: %N Waffen- und Ausrüstungsverbote wurden in "%s" gespeichert.
[sr] [sr]
EQ_WE_RES = Oprema i oruzje su zabranjeni EQ_WE_RES = Oprema i oruzje su zabranjeni
@ -702,83 +708,83 @@ ADMIN_CMD_SAVEDCFG = Cmd: %N zapazi zabranite za orujiqta v "%s"
ADMIN_MENU_SAVEDCFG = Menu: %N zapazi zabranite za orujiqta v "%s" ADMIN_MENU_SAVEDCFG = Menu: %N zapazi zabranite za orujiqta v "%s"
[ro] [ro]
EQ_WE_RES = Echipamentul si armele au fost restrictionate EQ_WE_RES = Echipamentul și armele au fost restricționate
EQ_WE_UNRES = Restrictia echipamentului si armelor a fost inlaturata EQ_WE_UNRES = Restricția echipamentului și a armelor a fost înlaturată
HAVE_BEEN = au fost HAVE_BEEN = au fost
HAS_BEEN = a fost HAS_BEEN = a fost
RESTRICTED = adaugate restrictii RESTRICTED = adăugate restricții
UNRESTRICTED = inlaturate restrictile UNRESTRICTED = înlăturate restricțiile
NO_EQ_WE = Nu a putut fi gasit acest echipament sau arma NO_EQ_WE = Nu a putut fi găsit acest echipament sau armă
WEAP_RES = Restrictii Arme WEAP_RES = Restricții arme
VALUE = valoare VALUE = valoare
REST_ENTRIES_OF = Intrari %i - %i din %i REST_ENTRIES_OF = Se afișează %i - %i din %i
REST_USE_MORE = Scrie 'amx_restrict list %i' pentru mai mult REST_USE_MORE = Scrie 'amx_restrict list %i' pentru mai multe
REST_USE_BEGIN = Scrie 'amx_restrict list 1' pentru inceput REST_USE_BEGIN = Scrie 'amx_restrict list 1' pentru a începe
REST_USE_HOW = Scrie 'amx_restrict list <valoare>' (1 -> 8) REST_USE_HOW = Scrie 'amx_restrict list <valoare>' (1 -> 8)
REST_CONF_SAVED = Configuratia a fost salvata (fisier "%s") REST_CONF_SAVED = Configurația a fost salvată (fișier "%s")
REST_COULDNT_SAVE = Nu s-a putut salva configuratia (fisier "%s") REST_COULDNT_SAVE = Nu s-a putut salva configurația (fișier "%s")
REST_CONF_LOADED = Configuratia a fost incarcata (fisier "%s") REST_CONF_LOADED = Configurația a fost încarcată (fișier "%s")
REST_COULDNT_LOAD = Nu s-a putut incarca configuratia (file "%s") REST_COULDNT_LOAD = Nu s-a putut încărca configurația (fișier "%s")
COM_REST_USAGE = Folosire: amx_restrict <comanda> [valoare] COM_REST_USAGE = Utilizare: amx_restrict <comandă> [valoare]
COM_REST_COMMANDS = Comenzi: COM_REST_COMMANDS = Comenzi:
COM_REST_ON = " on - Adauga restrictii pe tot echipamentul" COM_REST_ON = " on - Adaugă restricții pe tot echipamentul"
COM_REST_OFF = " off - Inlatura restrictile de pe tot echipamentul" COM_REST_OFF = " off - Înlătură restricțiile de pe tot echipamentul"
COM_REST_ONV = " on <valoare> [...] - Adauga restrictile specificate" COM_REST_ONV = " on <valoare> [...] - Adaugă restricțiile specificate"
COM_REST_OFFV = " off <valoare> [...] - Inlatura restrictile specificate" COM_REST_OFFV = " off <valoare> [...] - Înlătură restricțiile specificate"
COM_REST_LIST = " list <valoare> - Afisare lista cu echipamente si arme" COM_REST_LIST = " list <valoare> - Afișare listă cu echipamente și arme"
COM_REST_SAVE = " save - Salveaza restrictii" COM_REST_SAVE = " save - Salvează restricții"
COM_REST_LOAD = " load [fisier] - Incarca restrictii [dintr-un fisier]" COM_REST_LOAD = " load [fisier] - Încarcă restricții [dintr-un fișier]"
COM_REST_VALUES = Valorile valabile pentru restrictionare sunt:^nammo, equip, pistol, shotgun, sub, rifle, sniper, machine COM_REST_VALUES = Valorile valabile pentru restricționare sunt:^nammo, equip, pistol, shotgun, sub, rifle, sniper, machine
COM_REST_TYPE = Scrie 'amx_restrict list' pentru mai multe valori specificate COM_REST_TYPE = Scrie 'amx_restrict list' pentru mai multe valori specificate
REST_WEAP = Restrictioneaza arme REST_WEAP = Restricționează arme
SAVE_SET = Salveaza setari SAVE_SET = Salvează setări
CONF_SAV_SUC = Configuratia a fost salvata cu succes CONF_SAV_SUC = Configurația a fost salvată cu succes
CONF_SAV_FAIL = Salvarea configuratiei a esuat!!! CONF_SAV_FAIL = Salvarea configurației a eșuat!
REG_CMD_MENU = - arata meniul de restrictionare al armelor REG_CMD_MENU = - arată meniul de restricționare al armelor
REG_CMD_REST = - ajutor pentru restrictionarea armelor REG_CMD_REST = - ajutor pentru restricționarea armelor
RESTRICTED_ITEM = * Itemul este restrictionat * RESTRICTED_ITEM = * Itemul este restricționat *
MENU_TITLE_HANDGUNS = Handguns MENU_TITLE_HANDGUNS = Pistols
MENU_TITLE_SHOTGUNS = Shotguns MENU_TITLE_SHOTGUNS = Shotguns
MENU_TITLE_SUBMACHINES = Sub-Machine Guns MENU_TITLE_SUBMACHINES = Sub-Machine Guns
MENU_TITLE_RIFLES = Assault Rifles MENU_TITLE_RIFLES = Puști de asalt
MENU_TITLE_SNIPERS = Sniper Rifles MENU_TITLE_SNIPERS = Snipere
MENU_TITLE_MACHINE = Machine Guns MENU_TITLE_MACHINE = Machine Guns
MENU_TITLE_EQUIPMENT = Echipament MENU_TITLE_EQUIPMENT = Echipament
MENU_TITLE_AMMUNITION = Munitie MENU_TITLE_AMMUNITION = Muniție
MENU_ITEM_USP = H&K USP .45 Tactical MENU_ITEM_USP = USP
MENU_ITEM_GLOCK18 = Glock18 Select Fire MENU_ITEM_GLOCK18 = Glock18
MENU_ITEM_DEAGLE = Desert Eagle .50AE MENU_ITEM_DEAGLE = Desert Eagle
MENU_ITEM_P228 = SIG P228 MENU_ITEM_P228 = P228
MENU_ITEM_ELITE = Dual Beretta 96G Elite MENU_ITEM_ELITE = Dual Beretta
MENU_ITEM_FIVESEVEN = FN Five-Seven MENU_ITEM_FIVESEVEN = Five-Seven
MENU_ITEM_M3 = Benelli M3 Super90 MENU_ITEM_M3 = M3 Super90
MENU_ITEM_XM1014 = Benelli XM1014 MENU_ITEM_XM1014 = XM1014
MENU_ITEM_MP5NAVY = H&K MP5-Navy MENU_ITEM_MP5NAVY = MP5-Navy
MENU_ITEM_TMP = Steyr Tactical Machine Pistol MENU_ITEM_TMP = TMP
MENU_ITEM_P90 = FN P90 MENU_ITEM_P90 = P90
MENU_ITEM_MAC10 = Ingram MAC-10 MENU_ITEM_MAC10 = MAC-10
MENU_ITEM_UMP45 = H&K UMP45 MENU_ITEM_UMP45 = UMP45
MENU_ITEM_AK47 = AK-47 MENU_ITEM_AK47 = AK-47
MENU_ITEM_SG552 = Sig SG-552 Commando MENU_ITEM_SG552 = SG-552
MENU_ITEM_M4A1 = Colt M4A1 Carbine MENU_ITEM_M4A1 = M4A1
MENU_ITEM_GALIL = Galil MENU_ITEM_GALIL = Galil
MENU_ITEM_FAMAS = Famas MENU_ITEM_FAMAS = Famas
MENU_ITEM_AUG = Steyr Aug MENU_ITEM_AUG = AUG
MENU_ITEM_SCOUT = Steyr Scout MENU_ITEM_SCOUT = Scout
MENU_ITEM_AWP = AI Arctic Warfare/Magnum MENU_ITEM_AWP = AWP
MENU_ITEM_G3SG1 = H&K G3/SG-1 Sniper Rifle MENU_ITEM_G3SG1 = G3SG1
MENU_ITEM_SG550 = Sig SG-550 Sniper MENU_ITEM_SG550 = SG-550
MENU_ITEM_M249 = FN M249 Para MENU_ITEM_M249 = M249 Para
MENU_ITEM_VEST = Vesta Kevlar MENU_ITEM_VEST = Vestă Kevlar
MENU_ITEM_VESTHELM = Vesta Kevlar & Casca MENU_ITEM_VESTHELM = Vestă Kevlar & Cască
MENU_ITEM_FLASHBANG = Flash MENU_ITEM_FLASHBANG = Grenadă Flashbang
MENU_ITEM_HEGRENADE = Grenada Exploziva MENU_ITEM_HEGRENADE = Grenadă HE
MENU_ITEM_SMOKEGRENADE = Grenada Smoke MENU_ITEM_SMOKEGRENADE = Grenadă Smoke
MENU_ITEM_DEFUSER = Kit Dezamorsare MENU_ITEM_DEFUSER = Kit dezamorsare
MENU_ITEM_NVGS = Ochelari de Noapte MENU_ITEM_NVGS = Ochelari de noapte
MENU_ITEM_SHIELD = Scut Tactic MENU_ITEM_SHIELD = Scut Tactic
MENU_ITEM_PRIAMMO = Gloante pentru armele principale MENU_ITEM_PRIAMMO = Gloanțe pentru armele principale
MENU_ITEM_SECAMMO = Gloante pentru armele secundare MENU_ITEM_SECAMMO = Gloanțe pentru armele secundare
CONFIG_FILE_HEADER = ; Generat de pluginul %s. Nu modifica!^n; numele valorii^n CONFIG_FILE_HEADER = ; Generat de pluginul %s. Nu modifica!^n; numele valorii^n
[hu] [hu]
@ -1363,9 +1369,9 @@ REST_ENTRIES_OF = Entradas %i - %i de %i
REST_USE_MORE = Usa 'amx_restrict list %i' para mostrar mais REST_USE_MORE = Usa 'amx_restrict list %i' para mostrar mais
REST_USE_BEGIN = Usa 'amx_restrict list 1' para voltar ao início REST_USE_BEGIN = Usa 'amx_restrict list 1' para voltar ao início
REST_USE_HOW = Usa 'amx_restrict list <valor>' (1 -> 8) REST_USE_HOW = Usa 'amx_restrict list <valor>' (1 -> 8)
REST_CONF_SAVED = A Configuração foi guardada (ficheiro "%s") REST_CONF_SAVED = A configuração foi guardada (ficheiro "%s")
REST_COULDNT_SAVE = Não foi possível guardar a configuração (ficheiro "%s") REST_COULDNT_SAVE = Não foi possível guardar a configuração (ficheiro "%s")
REST_CONF_LOADED = A Configuração foi carregada (ficheiro "%s") REST_CONF_LOADED = A configuração foi carregada (ficheiro "%s")
REST_COULDNT_LOAD = Não foi possível carregar a configuração (ficheiro "%s") REST_COULDNT_LOAD = Não foi possível carregar a configuração (ficheiro "%s")
COM_REST_USAGE = Uso: amx_restrict <comando> [valor] COM_REST_USAGE = Uso: amx_restrict <comando> [valor]
COM_REST_COMMANDS = Comandos: COM_REST_COMMANDS = Comandos:
@ -1381,7 +1387,7 @@ COM_REST_TYPE = Escreve 'amx_restrict list' para mais valores específi
REST_WEAP = Restringir Armas REST_WEAP = Restringir Armas
SAVE_SET = Guardar definições SAVE_SET = Guardar definições
CONF_SAV_SUC = Configuração guardada com sucesso CONF_SAV_SUC = Configuração guardada com sucesso
CONF_SAV_FAIL = Falha ao guardar a Configuração!!! CONF_SAV_FAIL = Falha ao guardar a configuração!!!
REG_CMD_MENU = - mostra o menu de restrição de armas REG_CMD_MENU = - mostra o menu de restrição de armas
REG_CMD_REST = - mostra a ajuda para restrição de armas REG_CMD_REST = - mostra a ajuda para restrição de armas
RESTRICTED_ITEM = * Este item é restrito * RESTRICTED_ITEM = * Este item é restrito *
@ -1427,7 +1433,7 @@ MENU_ITEM_NVGS = Óculos de Visão Noturna
MENU_ITEM_SHIELD = Escudo Tático MENU_ITEM_SHIELD = Escudo Tático
MENU_ITEM_PRIAMMO = Munição da arma primária MENU_ITEM_PRIAMMO = Munição da arma primária
MENU_ITEM_SECAMMO = Munição da arma secundária MENU_ITEM_SECAMMO = Munição da arma secundária
CONFIG_FILE_HEADER = ; Gerado por %s Plugin. Não modifique!^n; nome do valor^n CONFIG_FILE_HEADER = ; Gerado pelo Plugin %s. Não modifique!^n; nome do valor^n
ADMIN_UPD_RES_1 = ADMIN: atualizou a restrição de itens ADMIN_UPD_RES_1 = ADMIN: atualizou a restrição de itens
ADMIN_UPD_RES_2 = ADMIN %s: atualizou a restrição de itens ADMIN_UPD_RES_2 = ADMIN %s: atualizou a restrição de itens
ADMIN_CMD_UPDATEDCFG = Cmd: %N atualizou a restrição de itens ADMIN_CMD_UPDATEDCFG = Cmd: %N atualizou a restrição de itens

View File

@ -69,9 +69,9 @@ MSG_FREQ = Skrolvashtoto suobshtenie se pokazva vseki: %d:%02d minuti
MSG_DISABLED = Skrolvashtoto suobshtenie e izkliucheno MSG_DISABLED = Skrolvashtoto suobshtenie e izkliucheno
[ro] [ro]
MIN_FREQ = Frecventa minima pentru acest mesaj este %d secunde MIN_FREQ = Frecvența minimă pentru acest mesaj este de %d secunde
MSG_FREQ = Frecventa afisarii messajului Rulant: %d:%02d minute MSG_FREQ = Frecvența afișării mesajului rulant: %d:%02d minute
MSG_DISABLED = Mesajul Rulant dezactivat MSG_DISABLED = Mesaj rulant dezactivat
[hu] [hu]
MIN_FREQ = A minimum idő erre az üzenetre %d másodperc MIN_FREQ = A minimum idő erre az üzenetre %d másodperc

View File

@ -133,7 +133,7 @@ HEAD_MSG2 = $kn entfernte den Kopf von $vn^nmit einem Präzisionsschuss.
HEAD_MSG3 = $kn verwandelte den Kopf ^nvon $vn in Pudding. HEAD_MSG3 = $kn verwandelte den Kopf ^nvon $vn in Pudding.
HEAD_MSG4 = $vn killte $kn durch einen Kopfschuss. HEAD_MSG4 = $vn killte $kn durch einen Kopfschuss.
HEAD_MSG5 = $vn's Kopf wurde in der Gegend verteilt HEAD_MSG5 = $vn's Kopf wurde in der Gegend verteilt
HEAD_MSG6 = $kn hat einen super ^nTreffer gelandet,das weiss ^n$vn nun auch. HEAD_MSG6 = $kn hat einen super ^nTreffer gelandet,das weiß ^n$vn nun auch.
HEAD_MSG7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn... HEAD_MSG7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn...
DOUBLE_MSG1 = Wow! %s machte einen Doppelkill!!! DOUBLE_MSG1 = Wow! %s machte einen Doppelkill!!!
DOUBLE_MSG2 = Unglaublich! %s macht einen dreifachen Kill !!! DOUBLE_MSG2 = Unglaublich! %s macht einen dreifachen Kill !!!
@ -141,8 +141,8 @@ DOUBLE_MSG3 = Überraschung! %s macht %d Kills auf einmal !!!
MORTAR_MSG1 = %s stellte den Mörser auf und schickte %s in den Himmel. MORTAR_MSG1 = %s stellte den Mörser auf und schickte %s in den Himmel.
MORTAR_MSG2 = %s killte %s über eine lange Distanz. MORTAR_MSG2 = %s killte %s über eine lange Distanz.
KILL_INFO1 = %s killte dich mit der %s^nüber eine Entfernung von %.2f Meter.^n KILL_INFO1 = %s killte dich mit der %s^nüber eine Entfernung von %.2f Meter.^n
KILL_INFO2 = Er machte %d Schaden bei dir mit %d Treffern ^nund hat noch %dHP.^n KILL_INFO2 = Er machte %d Schaden bei dir mit %d Treffer(n) ^nund hat noch %dHP.^n
KILL_INFO3 = Du machtest %d Schaden bei ihm mit %d Treffern.^n KILL_INFO3 = Du machtest %d Schaden bei ihm mit %d Treffer(n).^n
KILL_INFO4 = Du hast ihn getroffen in den/das:^n%s^n KILL_INFO4 = Du hast ihn getroffen in den/das:^n%s^n
STILL_HAS = %s hat noch %dHP STILL_HAS = %s hat noch %dHP
NO_KILLER = Du hast keinen Killer... NO_KILLER = Du hast keinen Killer...
@ -153,14 +153,14 @@ VICTIMS = Opfer:
DMG = Schaden DMG = Schaden
HIT_S = Treffer HIT_S = Treffer
YOU_HIT = Du trafst %s in: YOU_HIT = Du trafst %s in:
SERVER_STATS = Server Statistik SERVER_STATS = Serverstatistik
SHOW_STATS = Statistik anzeigen SHOW_STATS = Statistik anzeigen
SHOW_RANK = Rang anzeigen SHOW_RANK = Rang anzeigen
TA_MSG = %s schiesst auf einen Kameraden TA_MSG = %s schießt auf einen Kameraden
TK_MSG = %s killte einen Kameraden! TK_MSG = %s killte einen Kameraden!
NADE_CAUGHT = Wow! %s fängt eine gegnerische Granate! NADE_CAUGHT = Wow! %s fängt eine gegnerische Granate!
NADE_FAILEDTK = Oops.. %s killte dich bei dem Versuch, die Granate zurückzuwerfen.. NADE_FAILEDTK = Oops.. %s killte dich bei dem Versuch, die Granate zurückzuwerfen..
NADE_FAILED = %s konnte feindliche Granate nicht zurückwerfen. NADE_FAILED = %s konnte die feindliche Granate nicht zurückwerfen.
NADE_MASTER = OMG! %s ist der Meister der Granaten !!! NADE_MASTER = OMG! %s ist der Meister der Granaten !!!
DISABLED_MSG = Server hat diese Option deaktiviert. DISABLED_MSG = Server hat diese Option deaktiviert.
MOST_KILLS = Meisten Kills MOST_KILLS = Meisten Kills
@ -1333,94 +1333,94 @@ WHOLEBODY = tot corpul
HEAD = cap HEAD = cap
CHEST = piept CHEST = piept
STOMACH = stomac STOMACH = stomac
LEFTARM = brat stang LEFTARM = braț stâng
RIGHTARM = brat drept RIGHTARM = braț drept
LEFTLEG = picior stang LEFTLEG = picior stâng
RIGHTLEG = picior drept RIGHTLEG = picior drept
MULTI_MSG = Multi-Ucidere! %s^ncu %d ucideri (%d hs) MULTI_MSG = Multi-Kill! %s^ncu %d kills (%d hs)
ULTRA_MSG = Ultra-Ucidere!!! %s^ncu %d ucideri (%d hs) ULTRA_MSG = Ultra-Kill!!! %s^ncu %d kills (%d hs)
SPREE_MSG = %s ARE CHEF DE MACEL!!!^nwith %d kills (%d hs) SPREE_MSG = %s ARE CHEF DE MĂCEL!!!^ncu %d kills (%d hs)
RAMPAGE_MSG = %s ESTE FURIOS!!!^ncu %d ucideri (%d hs) RAMPAGE_MSG = E FURIOS!!! %s^ncu %d kills (%d hs)
UNSTOPPABLE_MSG = %s ESTE DE NEOPRIT!!!^ncu %d ucideri (%d hs) UNSTOPPABLE_MSG = %s E DE NEOPRIT!!!^ncu %d kills (%d hs)
MONSTER_MSG = %s ESTE UN MONSTRU!^ncu %d ucideri (%d hs) MONSTER_MSG = %s E UN MONSTRU!^ncu %d kills (%d hs)
GODLIKE_MSG = %s ESTE DIVIN!!!!^ncu %d ucideri (%d hs) GODLIKE_MSG = %s ESTE DIVIN!!!!^ncu %d kills (%d hs)
MULTI_SMALL = %s: Multi-Ucidere! MULTI_SMALL = %s: Multi-Kill!
ULTRA_SMALL = %s: Ultra-Ucidere!!! ULTRA_SMALL = %s: Ultra-Kill!!!
SPREE_SMALL = %s ARE CHEF DE MACEL!!! SPREE_SMALL = %s ARE CHEF DE MĂCEL!!!
RAMPAGE_SMALL = %s ESTE FURIOS!!! RAMPAGE_SMALL = %s E FURIOS!!!
UNSTOPPABLE_SMALL = %s ESTE DE NEOPRIT!!! UNSTOPPABLE_SMALL = %s E DE NEOPRIT!!!
MONSTER_SMALL = %s ESTE UN MONSTRU! MONSTER_SMALL = %s E UN MONSTRU!
GODLIKE_SMALL = %s ESTE DIVIN!!! GODLIKE_SMALL = %s ESTE DIVIN!!!
KNIFE_MSG1 = %s l-a taiat si feliat pe %s KNIFE_MSG1 = %s l-a tăiat cubulețe pe %s
KNIFE_MSG2 = %s a scos cutitul afara si l-a macelarit pe %s KNIFE_MSG2 = %s a scos cuțitul și l-a măcelărit pe %s
KNIFE_MSG3 = %s se furiseaza atent pe la spate si il taie %s KNIFE_MSG3 = %s s-a furișat pe la spate și l-a cuțitat pe %s
KNIFE_MSG4 = %s l-a injunghiat pe %s KNIFE_MSG4 = %s l-a înjunghiat pe %s
HE_MSG1 = %s ii trimite un mic cadou lui %s HE_MSG1 = %s i-a trimis un cadou surpriză lui %s
HE_MSG2 = %s ii arunca un dar micut lui %s HE_MSG2 = %s a aruncat o mică petardă la picioarele lui %s
HE_MSG3 = %s a facut o aruncare precisa catre %s HE_MSG3 = %s i-a livrat o grenadă lui %s
HE_MSG4 = %s a avut o explozie mare pentru %s HE_MSG4 = %s l-a aruncat în aer pe %s
SHE_MSG1 = %s s-a detonat cu o grenada SHE_MSG1 = %s s-a sinucis cu o grenadă
SHE_MSG2 = %s incearca efectul unei grenade SHE_MSG2 = %s a înghițit o grenadă
SHE_MSG3 = %s inghite grenazi cu totul! SHE_MSG3 = %s și-a aruncat o grenadă sub picioare
SHE_MSG4 = %s explodeaza! SHE_MSG4 = %s a explodat!
HEAD_MSG1 = $kn l-a ucis pe $vn cu o impuscatura bine^nplasata pe cap! HEAD_MSG1 = $kn i-a trimis lui $vn un^nglonț fix în cap!
HEAD_MSG2 = $kn a inlaturat capul lui $vn^ncu $wn HEAD_MSG2 = $kn i-a înlăturat lui $vn^ncapul de pe umeri cu $wn
HEAD_MSG3 = $kn a transformat capul lui $vn ^nin budinca cu $wn HEAD_MSG3 = $kn a făcut capul lui $vn^nbudincă cu $wn
HEAD_MSG4 = $vn a fost invins de $kn HEAD_MSG4 = $vn a fost umilit de $kn
HEAD_MSG5 = Capul lui $vn a fost^ntransformat in gelatina rosie HEAD_MSG5 = Capul lui $vn s-a transformat în gelatină roșie
HEAD_MSG6 = $kn are o tinta superba cu $wn,^niar $vn stie bine. HEAD_MSG6 = $kn are o acuratețe deosebită cu $wn,^niar $vn știe bine
HEAD_MSG7 = Capul lui $vn a stat prea mult in tinta lui $kn... HEAD_MSG7 = Capul lui $vn a stat în ținta lui $kn^npentru prea mult timp...
DOUBLE_MSG1 = Wow! %s a facut o dubla ucidere!!! DOUBLE_MSG1 = Wow! %s a făcut un double-kill !
DOUBLE_MSG2 = Incredibil! %s a facut o tripla ucidere !!! DOUBLE_MSG2 = Incredibil! %s a făcut un tripple-kill !
DOUBLE_MSG3 = Uimitor! %s a ucis %d oameni deodata !!! DOUBLE_MSG3 = Uimitor! %s a omorât %d inamici simultan !
MORTAR_MSG1 = %s a plasat bine mortarul si l-a aruncat in aer pe %s MORTAR_MSG1 = %s a setat bine tirul și l-a omorât pe %s
MORTAR_MSG2 = %s l-a ucis pe %s dintr-o raza mare de actiune MORTAR_MSG2 = %s l-a omorât de la mare distanță pe %s
KILL_INFO1 = %s te-a ucis cu %s^nde la distanta de %.2f metri.^n KILL_INFO1 = %s te-a omorât cu %s^nde la distanța de %.2f metri.^n
KILL_INFO2 = El ti-a facut %d dmg din %d lovituri^si inca mai are %dhp.^n KILL_INFO2 = Ți-a provocat %d damage în %d lovituri^nși el încă are %d HP.^n
KILL_INFO3 = Tu i-ai facut %d dmg din %d lovituri.^n KILL_INFO3 = Tu i-ai provocat %d damage în %d lovituri.^n
KILL_INFO4 = El te-a lovit in:^n%s^n KILL_INFO4 = El te-a lovit în:^n%s^n
STILL_HAS = %s inca mai are %dhp STILL_HAS = %s încă mai are %d HP
NO_KILLER = Nu ai nici o ucidere... NO_KILLER = Nu te-a omorât nimeni...
TOPX = Top %d TOPX = Top %d
FFIRE_IS = Friendly-fire: FFIRE_IS = Atac coechipieri:
ATTACKERS = Atacatori: ATTACKERS = Atacatori:
VICTIMS = Victime: VICTIMS = Victime:
DMG = dmg DMG = damage
HIT_S = lovituri HIT_S = lovituri
YOU_HIT = Tu l-ai lovit pe %s in: YOU_HIT = L-ai lovit pe %s în:
SERVER_STATS = Statisticile Server-ului SERVER_STATS = Statistici server
SHOW_STATS = Arata statistici SHOW_STATS = Arată statistici
SHOW_RANK = Arata pozitia SHOW_RANK = Arată poziția
TA_MSG = %s a atacat un coleg de echipa TA_MSG = %s a atacat un coechipier
TK_MSG = %s a ucis un coleg de echipa ! TK_MSG = %s a omorât un coechipier!
NADE_CAUGHT = Wow! %s a prins grenada inamicului! NADE_CAUGHT = Wow! %s a prins grenada inamicului!
NADE_FAILEDTK = Oops.. %s te-a ucis incercand sa arunce inapoi grenada inamicului.. NADE_FAILEDTK = Oops.. %s te-a ucis încercand sa arunce înapoi grenada inamicului..
NADE_FAILED = %s nu a putut arunca inapoi grenada inamicului.. NADE_FAILED = %s nu a reușit să arunce înapoi grenada inamicului..
NADE_MASTER = OMG! %s este maestru al grenadelor !!! NADE_MASTER = OMG! %s este un maestru al grenadelor!
DISABLED_MSG = Server-ul a dezactivat aceasta optiune DISABLED_MSG = Serverul a dezactivat această opțiune
MOST_KILLS = Cele mai multe ucideri MOST_KILLS = Cele mai multe killuri
KILL = ucidere KILL = kill
KILLS = ucideri KILLS = kills
HEADSHOT = hs HEADSHOT = headshot
HEADSHOTS = hs HEADSHOTS = headshots
BEST_SCORE = Cel mai bun scor BEST_SCORE = Cel mai bun scor
POINTS = puncte POINTS = puncte
MOST_DAMAGE = Cel mai mult dmg MOST_DAMAGE = Cel mai mult damage
DAMAGE = dmg DAMAGE = damage
HIT = lovitura HIT = lovitură
HITS = lovituri HITS = lovituri
M_KILLS = Ucideri: M_KILLS = Kills:
M_DEATHS = Decesuri: M_DEATHS = Decese:
M_SCORE = Scor: M_SCORE = Scor:
M_TKS = TK: M_TKS = TKs:
M_HITS = Lovituri: M_HITS = Lovituri:
M_SHOTS = Focuri: M_SHOTS = Focuri:
M_HS = HS: M_HS = HS:
M_WEAPON = Arma: M_WEAPON = Arma:
M_DAMAGE = Dmg: M_DAMAGE = Damage:
M_NICK = Nume: M_NICK = Nume:
M_YOUR_RANK_IS = Pozitia ta este M_YOUR_RANK_IS = Poziția ta este
M_THEIR_RANK_IS = Pozitia lor este M_THEIR_RANK_IS = Poziția lui este
M_OF = din M_OF = din
[hu] [hu]

View File

@ -89,7 +89,7 @@ STATS_CONF_LOADED = Statistik-Konfiguration erfolgreich geladen
STATS_CONF_FAIL_LOAD = Fehler beim Laden der Statistik-Konfiguration!!! STATS_CONF_FAIL_LOAD = Fehler beim Laden der Statistik-Konfiguration!!!
STATS_CONF = Statistik-Konfiguration STATS_CONF = Statistik-Konfiguration
STATS_ENTRIES_OF = Einträge %i - %i von %i STATS_ENTRIES_OF = Einträge %i - %i von %i
STATS_USE_MORE = Benutze 'amx_statscfg list %i' für mehr Info´s STATS_USE_MORE = Benutze 'amx_statscfg list %i' für mehr Infos
STATS_USE_BEGIN = Benutze 'amx_statscfg list 1' um zum Anfang zu gelangen STATS_USE_BEGIN = Benutze 'amx_statscfg list 1' um zum Anfang zu gelangen
CANT_ADD_STATS = Kann keine Statistik mehr hinzufügen, das Limit ist erreicht! CANT_ADD_STATS = Kann keine Statistik mehr hinzufügen, das Limit ist erreicht!
COM_STATS_USAGE = Benutze: amx_statscfg <Befehl> [Parameter] ... COM_STATS_USAGE = Benutze: amx_statscfg <Befehl> [Parameter] ...
@ -121,7 +121,7 @@ ST_LAST_MAN = Letzter Mann
ST_KNIFE_KILL = Messerkill ST_KNIFE_KILL = Messerkill
ST_KNIFE_KILL_SOUND = Messerkill Sound ST_KNIFE_KILL_SOUND = Messerkill Sound
ST_HE_KILL = Granatenkill ST_HE_KILL = Granatenkill
ST_HE_SUICIDE = Granaten Selbstmord ST_HE_SUICIDE = Granatenselbstmord
ST_HS_KILL = Headshotkill ST_HS_KILL = Headshotkill
ST_HS_KILL_SOUND = Headshotkill Sound ST_HS_KILL_SOUND = Headshotkill Sound
ST_ROUND_CNT = Rundenzähler ST_ROUND_CNT = Rundenzähler
@ -144,7 +144,7 @@ ST_SHOW_MOST_DISRUPTIVE = Zeige meisten Durchschläge
ST_SHOW_HUD_STATS_DEF = Standard HUD-Stats ST_SHOW_HUD_STATS_DEF = Standard HUD-Stats
ST_SHOW_DIST_HS_HUD = Distanz&HS in HUD Liste ST_SHOW_DIST_HS_HUD = Distanz&HS in HUD Liste
ST_STATS_PLAYER_MAP_END = Stats am Ende der Map ST_STATS_PLAYER_MAP_END = Stats am Ende der Map
ST_STATS_TOP15_MAP_END = Top15 am ende der Map ST_STATS_TOP15_MAP_END = Top15 am Ende der Map
ST_SAY_HP = Say /hp ST_SAY_HP = Say /hp
ST_SAY_STATSME = Say /statsme ST_SAY_STATSME = Say /statsme
ST_SAY_RANKSTATS = Say /rankstats ST_SAY_RANKSTATS = Say /rankstats
@ -162,7 +162,7 @@ ST_BOMB_CD_HUD = Bomben Countdown HUD
ST_LAST_MAN_SOUND = Letzter Mann Sound ST_LAST_MAN_SOUND = Letzter Mann Sound
ST_LAST_MAN_HEALTH = Letzter Mann HP ST_LAST_MAN_HEALTH = Letzter Mann HP
ST_HE_KILL_SOUND = Granatenkill Sound ST_HE_KILL_SOUND = Granatenkill Sound
ST_HE_SUICIDE_SOUND = Granaten Selbstmord Sound ST_HE_SUICIDE_SOUND = Granatenselbstmord Sound
[sr] [sr]
NO_OPTION = Nepostoji optcija(e) sa tom promenljivom (ime "%s") NO_OPTION = Nepostoji optcija(e) sa tom promenljivom (ime "%s")
@ -1162,68 +1162,68 @@ ST_HE_SUICIDE_SOUND = Grenade Suicide Sound
[ro] [ro]
NO_OPTION = Couldn't find option(s) with such variable (name "%s") NO_OPTION = Couldn't find option(s) with such variable (name "%s")
STATS_CONF_SAVED = Configuratia stats a fost salvata cu succes STATS_CONF_SAVED = Configurația stats a fost salvată cu succes!
STATS_CONF_FAILED = Salvarea configuratiei stats a esuat!!! STATS_CONF_FAILED = Salvarea configurației a eșuat!
STATS_CONF_LOADED = Configuratia stats a fost incarcata cu succes STATS_CONF_LOADED = Configurația stats a fost încărcată cu succes!
STATS_CONF_FAIL_LOAD = Incarcarea configuratiei stats a esuat!!! STATS_CONF_FAIL_LOAD = Încărcarea configurației a eșuat!
STATS_CONF = Configuratie Stats STATS_CONF = Configurare Stats
STATS_ENTRIES_OF = Intrari %i - %i din %i STATS_ENTRIES_OF = Se afișează %i - %i din %i
STATS_USE_MORE = Scrie 'amx_statscfg list %i' pentru mai mult STATS_USE_MORE = Scrie 'amx_statscfg list %i' pentru mai multe
STATS_USE_BEGIN = Scrie 'amx_statscfg list 1' pentru inceput STATS_USE_BEGIN = Scrie 'amx_statscfg list 1' pentru a începe
STATS_ENABLED = Stats activat STATS_ENABLED = Stats activate
STATS_DISABLED = Stats dezactivat STATS_DISABLED = Stats dezactivate
CANT_ADD_STATS = Nu se pot adauga stats la lista, limita depasita! CANT_ADD_STATS = Limita a fost depășită! Nu mai poți adăuga stats în listă.
COM_STATS_USAGE = Folosire: amx_statscfg <comanda> [parametri] ... COM_STATS_USAGE = Utilizare: amx_statscfg <comandă> [parametri] ...
COM_STATS_COM = Comenzi: COM_STATS_COM = Comenzi:
COM_STATS_ON = ^ton <variabila> - activeaza optiunea specificata COM_STATS_ON = ^ton <variabilă> - activează opțiunea specificată
COM_STATS_OFF = ^toff <variabila> - dezactiveaza optiunea specificata COM_STATS_OFF = ^toff <variabilă> - dezactivează opțiunea specificată
COM_STATS_SAVE = ^tsave - salveaza configuratia stats COM_STATS_SAVE = ^tsave - salvează configurația stats
COM_STATS_LOAD = ^tload - incarca configuratia stats COM_STATS_LOAD = ^tload - încarcă configurațiaa stats
COM_STATS_LIST = ^tlist [id] - lista statut stats COM_STATS_LIST = ^tlist [id] - listează statusul stats
COM_STATS_ADD = ^tadd <nume> <variabila> - adauga stats la lista COM_STATS_ADD = ^tadd <nume> <variabilă> - adaugă stats în listă
NO_STATS = Plugin-urile stats nu sunt^ninstalate pe acest server^n NO_STATS = Pluginurile stats nu sunt^ninstalate pe acest server^n
SAVE_CONF = Salveaza configuratie SAVE_CONF = Salvează configurație
ST_MULTI_KILL = MultiKill ST_MULTI_KILL = MultiKill
ST_MULTI_KILL_SOUND = MultiKillSound ST_MULTI_KILL_SOUND = Sunet MultiKill
ST_BOMB_PLANTING = Bomb Planting ST_BOMB_PLANTING = Bomba se plantează
ST_BOMB_DEFUSING = Bomb Defusing ST_BOMB_DEFUSING = Bomb se dezamorsează
ST_BOMB_PLANTED = Bomb Planted ST_BOMB_PLANTED = Bombă plantată
ST_BOMB_DEF_SUCC = Bomb Defuse Succ. ST_BOMB_DEF_SUCC = Dezam. bombei cu succes
ST_BOMB_DEF_FAIL = Bomb Def. Failure ST_BOMB_DEF_FAIL = Dezam. bombei a eșuat
ST_BOMB_PICKUP = Bomb PickUp ST_BOMB_PICKUP = Ridicarea bombei
ST_BOMB_DROP = Bomb Drop ST_BOMB_DROP = Scăparea bombei
ST_BOMB_CD_VOICE = Bomb Countdown Voice ST_BOMB_CD_VOICE = Voce cronometru bombă
ST_BOMB_CD_DEF = Bomb Countdown (defuser) ST_BOMB_CD_DEF = Cronometru bombă (dezamorsare)
ST_BOMB_SITE = Bomb Site Reached ST_BOMB_SITE = Ajuns în bomb-site
ST_ITALY_BONUS = Italy Bonus Kill ST_ITALY_BONUS = Italy Bonus Kill
ST_LAST_MAN = Last Man ST_LAST_MAN = Ultimul în viață
ST_KNIFE_KILL = Knife Kill ST_KNIFE_KILL = Knife Kill
ST_KNIFE_KILL_SOUND = Knife Kill Sound ST_KNIFE_KILL_SOUND = Sunet Knife Kill
ST_HE_KILL = Grenade Kill ST_HE_KILL = Grenade Kill
ST_HE_SUICIDE = Grenade Suicide ST_HE_SUICIDE = Sinucidere cu grenada
ST_HS_KILL = HeadShot Kill ST_HS_KILL = HeadShot Kill
ST_HS_KILL_SOUND = HeadShot Kill Sound ST_HS_KILL_SOUND = Sunet HeadShot Kill
ST_ROUND_CNT = Round Counter ST_ROUND_CNT = Contor runde
ST_ROUND_CNT_SOUND = Round Counter Sound ST_ROUND_CNT_SOUND = Sunet contor runde
ST_KILL_STR = Killing Streak ST_KILL_STR = Killing Streak
ST_KILL_STR_SOUND = Killing Streak Sound ST_KILL_STR_SOUND = Sunet Killing Streak
ST_ENEMY_REM = Enemy Remaining ST_ENEMY_REM = Inamici rămași
ST_DOUBLE_KILL = Double Kill ST_DOUBLE_KILL = Double Kill
ST_DOUBLE_KILL_SOUND = Double Kill Sound ST_DOUBLE_KILL_SOUND = Sunet Double Kill
ST_PLAYER_NAME = Player Name ST_PLAYER_NAME = Numele jucătorului
ST_FIRST_BLOOD_SOUND = First Blood Sound ST_FIRST_BLOOD_SOUND = Sunet First Blood
ST_SHOW_KILLER_CHAT = Show Killer HP&AP ST_SHOW_KILLER_CHAT = Arată HP&AP ucigașului
ST_SHOW_ATTACKERS = Show Attackers ST_SHOW_ATTACKERS = Arată atacatorii
ST_SHOW_VICTIMS = Show Victims ST_SHOW_VICTIMS = Arată victimele
ST_SHOW_KILLER = Show Killer ST_SHOW_KILLER = Arată ucigașul
ST_SHOW_TEAM_SCORE = Show Team Score ST_SHOW_TEAM_SCORE = Arată scorul echipei
ST_SHOW_TOTAL_STATS = Show Total Stats ST_SHOW_TOTAL_STATS = Arată statisticile totale
ST_SHOW_BEST_SCORE = Show Best Score ST_SHOW_BEST_SCORE = Arată cel mai bun scor
ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive ST_SHOW_MOST_DISRUPTIVE = Arată pe cel mai distrugător
ST_SHOW_HUD_STATS_DEF = Show HUD-stats default ST_SHOW_HUD_STATS_DEF = Show HUD-stats default
ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists
ST_STATS_PLAYER_MAP_END = Stats at the end of map ST_STATS_PLAYER_MAP_END = Statistici la finalul hărții
ST_STATS_TOP15_MAP_END = Top15 at the end of map ST_STATS_TOP15_MAP_END = Top15 la finalul hărții
ST_SAY_HP = Say /hp ST_SAY_HP = Say /hp
ST_SAY_STATSME = Say /statsme ST_SAY_STATSME = Say /statsme
ST_SAY_RANKSTATS = Say /rankstats ST_SAY_RANKSTATS = Say /rankstats
@ -1234,14 +1234,14 @@ ST_SAY_SCORE = Say /score
ST_SAY_TOP15 = Say /top15 ST_SAY_TOP15 = Say /top15
ST_SAY_STATS = Say /stats ST_SAY_STATS = Say /stats
ST_SPEC_RANK = Spec. Rank Info ST_SPEC_RANK = Spec. Rank Info
ST_BOMB_PLANTED_SOUND = Bomb Planted Sound ST_BOMB_PLANTED_SOUND = Sunet bombă plantată
ST_BOMB_DEF_SUCC_SOUND = Bomb Defuse Succ. Sound ST_BOMB_DEF_SUCC_SOUND = Sunet bombă dezamorsată
ST_BOMB_DEF_FAIL_SOUND = Bomb Def. Failure Sound ST_BOMB_DEF_FAIL_SOUND = Sunet bombă dezam. eșuată
ST_BOMB_CD_HUD = Bomb Countdown Hud ST_BOMB_CD_HUD = Cronometru bombă HUD
ST_LAST_MAN_SOUND = Last Man Sound ST_LAST_MAN_SOUND = Sunet ultimul în viață
ST_LAST_MAN_HEALTH = Last Man Health ST_LAST_MAN_HEALTH = HP-ul ultimului în viață
ST_HE_KILL_SOUND = Grenade Kill Sound ST_HE_KILL_SOUND = Sunet Grenade Kill
ST_HE_SUICIDE_SOUND = Grenade Suicide Sound ST_HE_SUICIDE_SOUND = Sunet Sinucidere Grenadă
[hu] [hu]
NO_OPTION = Nem található opció a megadott névvel (név "%s") NO_OPTION = Nem található opció a megadott névvel (név "%s")
@ -1991,10 +1991,10 @@ ST_HE_SUICIDE_SOUND = Zëri Vetëvrasjes Granatë
[pt] [pt]
NO_OPTION = Não foi possível encontrar a(s) opção(ões) com essa variável (nome "%s") NO_OPTION = Não foi possível encontrar a(s) opção(ões) com essa variável (nome "%s")
STATS_CONF_SAVED = A configuração das Estatísticas foi guardada com sucesso STATS_CONF_SAVED = A configuração das estatísticas foi guardada com sucesso
STATS_CONF_FAILED = Falha ao guardar a configuração das Estatísticas!!! STATS_CONF_FAILED = Falha ao guardar a configuração das estatísticas!!!
STATS_CONF_LOADED = A configuração das Estatísticas foi carregada com sucesso STATS_CONF_LOADED = A configuração das estatísticas foi carregada com sucesso
STATS_CONF_FAIL_LOAD = Falha ao carregar a configuração das Estatísticas!!! STATS_CONF_FAIL_LOAD = Falha ao carregar a configuração das estatísticas!!!
STATS_CONF = Configuração das Estatísticas STATS_CONF = Configuração das Estatísticas
STATS_ENTRIES_OF = Entradas %i - %i de %i STATS_ENTRIES_OF = Entradas %i - %i de %i
STATS_USE_MORE = Usa 'amx_statscfg list %i' para mostrar mais STATS_USE_MORE = Usa 'amx_statscfg list %i' para mostrar mais
@ -2010,7 +2010,7 @@ COM_STATS_SAVE = ^tsave - guardar configuração das estatísticas
COM_STATS_LOAD = ^tload - carregar configuração das estatísticas COM_STATS_LOAD = ^tload - carregar configuração das estatísticas
COM_STATS_LIST = ^tlist [id] - listar status das estatísticas COM_STATS_LIST = ^tlist [id] - listar status das estatísticas
COM_STATS_ADD = ^tadd <nome> <variável> - adicionar uma estatística á lista COM_STATS_ADD = ^tadd <nome> <variável> - adicionar uma estatística á lista
NO_STATS = Os plugins de Estatísticas não estão^ninstalados neste servidor^n NO_STATS = Os plugins de estatísticas não estão^ninstalados neste servidor^n
SAVE_CONF = Guardar configuração SAVE_CONF = Guardar configuração
ST_MULTI_KILL = MultiKill ST_MULTI_KILL = MultiKill
ST_MULTI_KILL_SOUND = Som do MultiKill ST_MULTI_KILL_SOUND = Som do MultiKill

View File

@ -66,8 +66,8 @@ DMG = Schaden
VICTIMS = Opfer VICTIMS = Opfer
MOST_DMG = Am meisten verursachter Schaden durch MOST_DMG = Am meisten verursachter Schaden durch
KILLED_YOU_DIST = %s hat dich mit einer %s ^naus %0.2f Metern Entfernung gekillt. KILLED_YOU_DIST = %s hat dich mit einer %s ^naus %0.2f Metern Entfernung gekillt.
DID_DMG_HITS = Er verursachte %d Schaden bei dir mit %d Treffern^nund hat noch %dhp und %dap. DID_DMG_HITS = Er verursachte %d Schaden bei dir mit %d Treffer(n)^nund hat noch %dhp und %dap.
YOU_DID_DMG = Du hast bei ihm %d Schaden mit %d Treffern angerichtet. YOU_DID_DMG = Du hast bei ihm %d Schaden mit %d Treffer(n) angerichtet.
EFF = Effizienz EFF = Effizienz
BEST_SCORE = Die meisten Punkte BEST_SCORE = Die meisten Punkte
KILL_S = Kill(s) KILL_S = Kill(s)
@ -717,51 +717,51 @@ WHOLEBODY = tot corpul
HEAD = cap HEAD = cap
CHEST = piept CHEST = piept
STOMACH = stomac STOMACH = stomac
LEFTARM = brat stang LEFTARM = braț stâng
RIGHTARM = brat drept RIGHTARM = braț drept
LEFTLEG = picior stang LEFTLEG = picior stâng
RIGHTLEG = picior drept RIGHTLEG = picior drept
MODE_SET_TO = "amx_statsx_mode" este setat la "%s" MODE_SET_TO = "amx_statsx_mode" este setat pe "%s"
ATTACKERS = Atacatori ATTACKERS = Atacatori
ACC = ac. ACC = acu.
HIT_S = lovituri HIT_S = lovituri
DMG = dmg DMG = damage
VICTIMS = Victime VICTIMS = Victime
MOST_DMG = Cel mai mult dmg produs de MOST_DMG = Cel mai mult damage făcut de
KILLED_YOU_DIST = %s te-a ucis cu %s^nde la distanta de %0.2f metri. KILLED_YOU_DIST = %s te-a omorât cu %s^nde la distanța de %0.2f metri.
DID_DMG_HITS = El ti-a facut %d dmg din %d lovituri^nsi inca mai are %dhp si %dap. DID_DMG_HITS = El ți-a provocat %d damage cu %d lovituri^nși încă mai are %dHP și %dAP.
YOU_DID_DMG = Tu i-ai facut %d dmg din %d lovituri. YOU_DID_DMG = Tu i-ai provocat %d damage cu %d lovituri.
EFF = ef. EFF = ef.
BEST_SCORE = Cel mai bun scor BEST_SCORE = Cel mai bun scor
KILL_S = ucideri KILL_S = kill(s)
TOTAL = Total TOTAL = Total
SHOT_S = Focuri SHOT_S = focuri
HITS_YOU_IN = %s te-a lovit in HITS_YOU_IN = %s te-a lovit în
KILLED_BY_WITH = Ucis de %s cu %s de la %0.0fm KILLED_BY_WITH = Ucis de %s cu %s de la %0.0fm
NO_HITS = nici o lovitura NO_HITS = nicio lovitură
YOU_NO_KILLER = Nu ai nici o ucidere... YOU_NO_KILLER = Nu te-a omorât nimeni...
YOU_HIT = Tu l-ai lovit pe %s de %d ori, %d dmg YOU_HIT = Tu l-ai lovit pe %s de %d ori, %d damage
LAST_RES = Ultimul rezultat: %d lovituri, %d dmg LAST_RES = Ultimul rezultat: %d lovituri, %d damage
KILLS = Ucideri KILLS = Kills
DEATHS = Decesuri DEATHS = Decese
HITS = Lovituri HITS = Lovituri
SHOTS = Focuri SHOTS = Focuri
YOUR = Pozitia ta YOUR = Poziția ta
PLAYERS = Jucatori PLAYERS = Jucători
RANK_IS = este %d din %d RANK_IS = este %d din %d
DAMAGE = Dmg DAMAGE = Damage
WEAPON = Arma WEAPON = Arma
YOUR_RANK_IS = Pozitia ta este %d din %d cu %d ucideri, %d lovituri, %0.2f% ef. si %0.2f% ac. YOUR_RANK_IS = Poziția ta este %d din %d cu %d kill(s), %d lovituri, %0.2f%% ef. și %0.2f%% acu.
AMMO = munitie AMMO = muniție
HEALTH = viata HEALTH = viață
ARMOR = vesta ARMOR = armură
GAME_SCORE = Scorul Jocului GAME_SCORE = Scorul jocului
STATS_ANNOUNCE = Ai %s anunturile statisticilor STATS_ANNOUNCE = Ai %s anunțurile statisticilor
ENABLED = activat ENABLED = activat
DISABLED = dezactivat DISABLED = dezactivat
SERVER_STATS = Statistici Jucatori SERVER_STATS = Statistici server
X_RANK_IS = Pozitia lui %s este %d din %d X_RANK_IS = Poziția lui %s este %d din %d
DISABLED_MSG = Server-ul a dezactivat aceasta optiune DISABLED_MSG = Serverul a dezactivat această opțiune
[hu] [hu]
WHOLEBODY = egész test WHOLEBODY = egész test

View File

@ -99,9 +99,9 @@ SAVE_LOC = Zapazi mestopolojenieto
[ro] [ro]
ADMIN_TELEPORT_1 = ADMIN: teleportare %s ADMIN_TELEPORT_1 = ADMIN: teleportare %s
ADMIN_TELEPORT_2 = ADMIN %s: teleportare %s ADMIN_TELEPORT_2 = ADMIN %s: teleportare %s
TELE_MENU = Menu Teleportare TELE_MENU = Meniu teleportare
CUR_LOC = Locatia Actuala CUR_LOC = Locația actuală
SAVE_LOC = Salveaza Locatie SAVE_LOC = Salvează locație
[hu] [hu]
ADMIN_TELEPORT_1 = ADMIN: %s teleportálva ADMIN_TELEPORT_1 = ADMIN: %s teleportálva

Some files were not shown because too many files have changed in this diff Show More