mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2025-01-12 06:48:04 +03:00
commit
3efdad36b0
@ -1272,7 +1272,6 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
|
||||
// Fire newmenu callback so closing it can be handled by the plugin
|
||||
if (!CloseNewMenus(pPlayer))
|
||||
{
|
||||
LogError(amx, AMX_ERR_NATIVE, "Plugin called menu_display when item=MENU_EXIT");
|
||||
return 2;
|
||||
}
|
||||
|
||||
@ -1318,7 +1317,7 @@ static cell AMX_NATIVE_CALL show_menu(AMX *amx, cell *params) /* 3 param */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (closeMenu(index))
|
||||
if (closeMenu(index) == 2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
// vim: set ts=4 sw=4 tw=99 noet:
|
||||
// vim: set ts=4 sw=4 tw=99 noet:
|
||||
//
|
||||
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
|
||||
// Copyright (C) The AMX Mod X Development Team.
|
||||
@ -210,6 +210,16 @@ void copy_amxmemory(cell* dest, cell* src, int len)
|
||||
*dest++=*src++;
|
||||
}
|
||||
|
||||
bool utf8isspace(const char* string)
|
||||
{
|
||||
return utf8iscategory(string, 1, UTF8_CATEGORY_ISSPACE) != 0;
|
||||
}
|
||||
|
||||
size_t utf8getspaces(const char* string)
|
||||
{
|
||||
return utf8iscategory(string, SIZE_MAX, UTF8_CATEGORY_ISSPACE);
|
||||
}
|
||||
|
||||
char* parse_arg(char** line, int& state)
|
||||
{
|
||||
static char arg[3072];
|
||||
@ -218,7 +228,7 @@ char* parse_arg(char** line, int& state)
|
||||
|
||||
while (**line)
|
||||
{
|
||||
if (isspace(**line))
|
||||
if (utf8isspace(*line))
|
||||
{
|
||||
if (state == 1)
|
||||
break;
|
||||
@ -919,6 +929,7 @@ static cell AMX_NATIVE_CALL amx_strtok(AMX *amx, cell *params)
|
||||
int right_pos = 0;
|
||||
unsigned int i = 0;
|
||||
bool done_flag = false;
|
||||
size_t spaces;
|
||||
int len = 0;
|
||||
|
||||
//string[]
|
||||
@ -938,9 +949,9 @@ static cell AMX_NATIVE_CALL amx_strtok(AMX *amx, cell *params)
|
||||
{
|
||||
if (trim && !done_flag)
|
||||
{
|
||||
if (isspace(string[i]))
|
||||
if ((spaces = utf8getspaces(string + i) > 0))
|
||||
{
|
||||
while (isspace(string[++i]));
|
||||
i += spaces;
|
||||
done_flag = true;
|
||||
}
|
||||
}
|
||||
@ -974,6 +985,7 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
||||
{
|
||||
int left_pos = 0, right_pos = 0, len, pos = -1;
|
||||
unsigned int i = 0;
|
||||
size_t spaces;
|
||||
|
||||
char *string = get_amxstring(amx, params[1], 0, len);
|
||||
char *left = new char[len + 1], *right = new char[len + 1];
|
||||
@ -989,9 +1001,9 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
||||
int trim = params[7];
|
||||
|
||||
// ltrim left
|
||||
if (trim & 1 && isspace(string[i]))
|
||||
if (trim & 1 && (spaces = utf8getspaces(string)) > 0)
|
||||
{
|
||||
while (isspace(string[++i]));
|
||||
i += spaces;
|
||||
}
|
||||
|
||||
for (; i < (unsigned int) len; ++i)
|
||||
@ -1007,17 +1019,17 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
||||
}
|
||||
|
||||
// rtrim left
|
||||
if (trim & 2 && left_pos && isspace(left[left_pos - 1]))
|
||||
if (trim & 2 && left_pos && utf8isspace(&left[left_pos - 1]))
|
||||
{
|
||||
while (--left_pos >= 0 && isspace(left[left_pos]));
|
||||
while (--left_pos >= 0 && utf8isspace(&left[left_pos]));
|
||||
|
||||
++left_pos;
|
||||
}
|
||||
|
||||
// ltrim right
|
||||
if (trim & 4 && isspace(string[i]))
|
||||
if (trim & 4 && (spaces = utf8getspaces(string + i)) > 0)
|
||||
{
|
||||
while (isspace(string[++i]));
|
||||
i += spaces;
|
||||
}
|
||||
|
||||
for (; i < (unsigned int) len; ++i)
|
||||
@ -1026,9 +1038,9 @@ static cell AMX_NATIVE_CALL amx_strtok2(AMX *amx, cell *params)
|
||||
}
|
||||
|
||||
// rtrim right
|
||||
if (trim & 8 && right_pos && isspace(right[right_pos - 1]))
|
||||
if (trim & 8 && right_pos && utf8isspace(&right[right_pos - 1]))
|
||||
{
|
||||
while (--right_pos >= 0 && isspace(right[right_pos]));
|
||||
while (--right_pos >= 0 && utf8isspace(&right[right_pos]));
|
||||
|
||||
++right_pos;
|
||||
}
|
||||
@ -1058,8 +1070,12 @@ static cell AMX_NATIVE_CALL argparse(AMX *amx, cell *params)
|
||||
|
||||
// Strip all left-hand whitespace.
|
||||
size_t i = start_pos;
|
||||
while (i < input_len && isspace(input[i]))
|
||||
i++;
|
||||
size_t spaces;
|
||||
|
||||
if ((spaces = utf8getspaces(input + i)) > 0)
|
||||
{
|
||||
i += spaces;
|
||||
}
|
||||
|
||||
if (i >= input_len) {
|
||||
*buffer = '\0';
|
||||
@ -1078,7 +1094,7 @@ static cell AMX_NATIVE_CALL argparse(AMX *amx, cell *params)
|
||||
}
|
||||
|
||||
// If not in quotes, and we see a space, stop.
|
||||
if (isspace(input[i]) && !in_quote)
|
||||
if (utf8isspace(input + i) && !in_quote)
|
||||
break;
|
||||
|
||||
if (size_t(bufpos - buffer) < buflen)
|
||||
@ -1106,9 +1122,13 @@ static cell AMX_NATIVE_CALL strbreak(AMX *amx, cell *params) /* 5 param */
|
||||
int RightMax = params[5];
|
||||
|
||||
size_t len = (size_t)_len;
|
||||
size_t spaces;
|
||||
|
||||
if ((spaces = utf8getspaces(string)) > 0)
|
||||
{
|
||||
i += spaces;
|
||||
}
|
||||
|
||||
while (isspace(string[i]) && i<len)
|
||||
i++;
|
||||
beg = i;
|
||||
for (; i<len; i++)
|
||||
{
|
||||
@ -1120,12 +1140,12 @@ static cell AMX_NATIVE_CALL strbreak(AMX *amx, cell *params) /* 5 param */
|
||||
if (i == len-1)
|
||||
goto do_copy;
|
||||
} else {
|
||||
if (isspace(string[i]) && !in_quote)
|
||||
if (!in_quote && (spaces = utf8getspaces(string + i)) > 0)
|
||||
{
|
||||
do_copy:
|
||||
size_t pos = i;
|
||||
while (isspace(string[i]))
|
||||
i++;
|
||||
i += spaces;
|
||||
|
||||
const char *start = had_quotes ? &(string[beg+1]) : &(string[beg]);
|
||||
size_t _end = had_quotes ? (i==len-1 ? 1 : 2) : 0;
|
||||
size_t end = (pos - _end > (size_t)LeftMax) ? (size_t)LeftMax : pos - _end;
|
||||
@ -1367,18 +1387,27 @@ static cell AMX_NATIVE_CALL amx_strlen(AMX *amx, cell *params)
|
||||
|
||||
static cell AMX_NATIVE_CALL amx_trim(AMX *amx, cell *params)
|
||||
{
|
||||
int len, newlen;
|
||||
char *str = get_amxstring(amx, params[1], 0, len);
|
||||
int length;
|
||||
auto string = get_amxstring(amx, params[1], 0, length);
|
||||
|
||||
UTIL_TrimLeft(str);
|
||||
UTIL_TrimRight(str);
|
||||
auto leftSpaces = utf8getspaces(string);
|
||||
auto rightSpaces = 0u;
|
||||
|
||||
newlen = strlen(str);
|
||||
len -= newlen;
|
||||
auto originalLength = length;
|
||||
|
||||
set_amxstring(amx, params[1], str, newlen);
|
||||
if (leftSpaces < size_t(length))
|
||||
{
|
||||
while (--length >= 0 && utf8isspace(string + length))
|
||||
{
|
||||
++rightSpaces;
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
auto totalSpaces = leftSpaces + rightSpaces;
|
||||
|
||||
set_amxstring(amx, params[1], string + leftSpaces, originalLength - totalSpaces);
|
||||
|
||||
return totalSpaces;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL n_strcat(AMX *amx, cell *params)
|
||||
|
@ -54,7 +54,7 @@
|
||||
#define CTRL_CHAR '^' /* default control character */
|
||||
#define sCHARBITS 8 /* size of a packed character */
|
||||
|
||||
#define sDIMEN_MAX 3 /* maximum number of array dimensions */
|
||||
#define sDIMEN_MAX 4 /* maximum number of array dimensions */
|
||||
#define sLINEMAX 4095 /* input line length (in characters) */
|
||||
#define sCOMP_STACK 32 /* maximum nesting of #if .. #endif sections */
|
||||
#define sDEF_LITMAX 500 /* initial size of the literal pool, in "cells" */
|
||||
@ -280,6 +280,12 @@ typedef struct s_stringpair {
|
||||
char *documentation;
|
||||
} stringpair;
|
||||
|
||||
typedef struct s_valuepair {
|
||||
struct s_valuepair *next;
|
||||
long first;
|
||||
long second;
|
||||
} valuepair;
|
||||
|
||||
/* macros for code generation */
|
||||
#define opcodes(n) ((n)*sizeof(cell)) /* opcode size */
|
||||
#define opargs(n) ((n)*sizeof(cell)) /* size of typical argument */
|
||||
@ -700,6 +706,9 @@ SC_FUNC void delete_docstringtable(void);
|
||||
SC_FUNC stringlist *insert_autolist(char *string);
|
||||
SC_FUNC char *get_autolist(int index);
|
||||
SC_FUNC void delete_autolisttable(void);
|
||||
SC_FUNC valuepair *push_heaplist(long first, long second);
|
||||
SC_FUNC int popfront_heaplist(long *first, long *second);
|
||||
SC_FUNC void delete_heaplisttable(void);
|
||||
SC_FUNC stringlist *insert_dbgfile(const char *filename);
|
||||
SC_FUNC stringlist *insert_dbgline(int linenr);
|
||||
SC_FUNC stringlist *insert_dbgsymbol(symbol *sym);
|
||||
|
@ -628,6 +628,7 @@ int pc_compile(int argc, char *argv[])
|
||||
/* reset "defined" flag of all functions and global variables */
|
||||
reduce_referrers(&glbtab);
|
||||
delete_symbols(&glbtab,0,TRUE,FALSE);
|
||||
delete_heaplisttable();
|
||||
#if !defined NO_DEFINE
|
||||
delete_substtable();
|
||||
inst_datetime_defines();
|
||||
@ -805,6 +806,7 @@ cleanup:
|
||||
free(sc_documentation);
|
||||
#endif
|
||||
delete_autolisttable();
|
||||
delete_heaplisttable();
|
||||
if (errnum!=0) {
|
||||
if (strlen(errfname)==0)
|
||||
pc_printf("\n%d Error%s.\n",errnum,(errnum>1) ? "s" : "");
|
||||
@ -2170,53 +2172,48 @@ static cell calc_arraysize(int dim[],int numdim,int cur)
|
||||
return dim[cur]+(dim[cur]*calc_arraysize(dim,numdim,cur+1));
|
||||
}
|
||||
|
||||
static cell adjust_indirectiontables(int dim[],int numdim,int cur,cell increment,
|
||||
int startlit,constvalue *lastdim,int *skipdim)
|
||||
static void adjust_indirectiontables(int dim[],int numdim,int startlit,
|
||||
constvalue *lastdim,int *skipdim)
|
||||
{
|
||||
static int base;
|
||||
int d;
|
||||
int cur;
|
||||
int i,d;
|
||||
cell accum;
|
||||
cell size;
|
||||
|
||||
assert(cur>=0 && cur<numdim);
|
||||
assert(increment>=0);
|
||||
assert(cur>0 && startlit==-1 || startlit>=0 && startlit<=litidx);
|
||||
if (cur==0)
|
||||
base=startlit;
|
||||
if (cur==numdim-1)
|
||||
return 0;
|
||||
/* 2 or more dimensions left, fill in an indirection vector */
|
||||
assert(dim[cur]>0);
|
||||
if (dim[cur+1]>0) {
|
||||
for (d=0; d<dim[cur]; d++)
|
||||
litq[base++]=(dim[cur]+d*(dim[cur+1]-1)+increment) * sizeof(cell);
|
||||
accum=dim[cur]*(dim[cur+1]-1);
|
||||
} else {
|
||||
/* final dimension is variable length */
|
||||
constvalue *ld;
|
||||
assert(dim[cur+1]==0);
|
||||
assert(lastdim!=NULL);
|
||||
assert(skipdim!=NULL);
|
||||
accum=0;
|
||||
/* skip the final dimension sizes for all earlier major dimensions */
|
||||
for (d=0,ld=lastdim->next; d<*skipdim; d++,ld=ld->next) {
|
||||
assert(ld!=NULL);
|
||||
} /* for */
|
||||
for (d=0; d<dim[cur]; d++) {
|
||||
assert(ld!=NULL);
|
||||
assert(strtol(ld->name,NULL,16)==d);
|
||||
litq[base++]=(dim[cur]+accum+increment) * sizeof(cell);
|
||||
accum+=ld->value-1;
|
||||
*skipdim+=1;
|
||||
ld=ld->next;
|
||||
} /* for */
|
||||
} /* if */
|
||||
/* create the indirection tables for the lower level */
|
||||
if (cur+2<numdim) { /* are there at least 2 dimensions below this one? */
|
||||
increment+=(dim[cur]-1)*dim[cur+1]; /* this many indirection tables follow */
|
||||
for (d=0; d<dim[cur]; d++)
|
||||
increment+=adjust_indirectiontables(dim,numdim,cur+1,increment,-1,lastdim,skipdim);
|
||||
} /* if */
|
||||
return accum;
|
||||
assert(startlit==-1 || startlit>=0 && startlit<=litidx);
|
||||
base=startlit;
|
||||
size=1;
|
||||
for (cur=0; cur<numdim-1; cur++) {
|
||||
/* 2 or more dimensions left, fill in an indirection vector */
|
||||
if (dim[cur+1]>0) {
|
||||
for (i=0; i<size; i++)
|
||||
for (d=0; d<dim[cur]; d++)
|
||||
litq[base++]=(size*dim[cur]+(dim[cur+1]-1)*(dim[cur]*i+d)) * sizeof(cell);
|
||||
} else {
|
||||
/* final dimension is variable length */
|
||||
constvalue *ld;
|
||||
assert(dim[cur+1]==0);
|
||||
assert(lastdim!=NULL);
|
||||
assert(skipdim!=NULL);
|
||||
accum=0;
|
||||
for (i=0; i<size; i++) {
|
||||
/* skip the final dimension sizes for all earlier major dimensions */
|
||||
for (d=0,ld=lastdim->next; d<*skipdim; d++,ld=ld->next) {
|
||||
assert(ld!=NULL);
|
||||
} /* for */
|
||||
for (d=0; d<dim[cur]; d++) {
|
||||
assert(ld!=NULL);
|
||||
assert(strtol(ld->name,NULL,16)==d);
|
||||
litq[base++]=(size*dim[cur]+accum) * sizeof(cell);
|
||||
accum+=ld->value-1;
|
||||
*skipdim+=1;
|
||||
ld=ld->next;
|
||||
} /* for */
|
||||
} /* for */
|
||||
} /* if */
|
||||
size*=dim[cur];
|
||||
} /* for */
|
||||
}
|
||||
|
||||
/* initials
|
||||
@ -2274,7 +2271,7 @@ static void initials2(int ident,int tag,cell *size,int dim[],int numdim,
|
||||
for (tablesize=calc_arraysize(dim,numdim-1,0); tablesize>0; tablesize--)
|
||||
litadd(0);
|
||||
if (dim[numdim-1]!=0) /* error 9 has already been given */
|
||||
adjust_indirectiontables(dim,numdim,0,0,curlit,NULL,NULL);
|
||||
adjust_indirectiontables(dim,numdim,curlit,NULL,NULL);
|
||||
} /* if */
|
||||
return;
|
||||
} /* if */
|
||||
@ -2340,7 +2337,7 @@ static void initials2(int ident,int tag,cell *size,int dim[],int numdim,
|
||||
* of the array and we can properly adjust the indirection vectors
|
||||
*/
|
||||
if (err==0)
|
||||
adjust_indirectiontables(dim,numdim,0,0,curlit,&lastdim,&skipdim);
|
||||
adjust_indirectiontables(dim,numdim,curlit,&lastdim,&skipdim);
|
||||
delete_consttable(&lastdim); /* clear list of minor dimension sizes */
|
||||
} /* if */
|
||||
} /* if */
|
||||
@ -5455,6 +5452,16 @@ static void doreturn(void)
|
||||
/* nothing */;
|
||||
sub=addvariable(curfunc->name,(argcount+3)*sizeof(cell),iREFARRAY,sGLOBAL,curfunc->tag,dim,numdim,idxtag);
|
||||
sub->parent=curfunc;
|
||||
/* Function that returns array can be used before it is defined, so at
|
||||
* the call point (if it is before definition) we may not know if this
|
||||
* function returns array and what is its size (for example inside the
|
||||
* conditional operator), so we don't know how many cells on the heap
|
||||
* we need. Calculating heap consumption is required for the fix of
|
||||
* incorrect heap deallocation on conditional operator. That's why we
|
||||
* need an additional pass.
|
||||
*/
|
||||
if ((curfunc->usage & uREAD)!=0)
|
||||
sc_reparse=TRUE;
|
||||
} /* if */
|
||||
/* get the hidden parameter, copy the array (the array is on the heap;
|
||||
* it stays on the heap for the moment, and it is removed -usually- at
|
||||
|
@ -600,13 +600,6 @@ static int htoi(cell *val,const unsigned char *curptr)
|
||||
return (int)(ptr-curptr);
|
||||
}
|
||||
|
||||
#if defined __APPLE__
|
||||
static double pow10(double d)
|
||||
{
|
||||
return pow(10, d);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ftoi
|
||||
*
|
||||
* Attempts to interpret a numeric symbol as a rational number, either as
|
||||
@ -682,11 +675,7 @@ static int ftoi(cell *val,const unsigned char *curptr)
|
||||
exp=(exp*10)+(*ptr-'0');
|
||||
ptr++;
|
||||
} /* while */
|
||||
#if defined __GNUC__
|
||||
fmult=pow10(exp*sign);
|
||||
#else
|
||||
fmult=pow(10,exp*sign);
|
||||
#endif
|
||||
fmult=pow(10,exp*sign);
|
||||
fnum *= fmult;
|
||||
dnum *= (unsigned long)(fmult+0.5);
|
||||
} /* if */
|
||||
|
59
compiler/libpc300/sc3.c
Executable file → Normal file
59
compiler/libpc300/sc3.c
Executable file → Normal file
@ -1010,38 +1010,60 @@ static int hier13(value *lval)
|
||||
{
|
||||
int lvalue=plnge1(hier12,lval);
|
||||
if (matchtoken('?')) {
|
||||
int locheap=decl_heap; /* save current heap delta */
|
||||
long heap1,heap2; /* max. heap delta either branch */
|
||||
valuepair *heaplist_node;
|
||||
int flab1=getlabel();
|
||||
int flab2=getlabel();
|
||||
value lval2 = {0};
|
||||
int array1,array2;
|
||||
|
||||
int orig_heap=decl_heap;
|
||||
int diff1=0,diff2=0;
|
||||
if (lvalue) {
|
||||
rvalue(lval);
|
||||
} else if (lval->ident==iCONSTEXPR) {
|
||||
ldconst(lval->constval,sPRI);
|
||||
error(lval->constval ? 206 : 205); /* redundant test */
|
||||
} /* if */
|
||||
if (sc_status==statFIRST) {
|
||||
/* We should push a new node right now otherwise we will pop it in the
|
||||
* wrong order on the write stage.
|
||||
*/
|
||||
heaplist_node=push_heaplist(0,0); /* save the pointer to write the actual data later */
|
||||
} else if (sc_status==statWRITE || sc_status==statSKIP) {
|
||||
#if !defined NDEBUG
|
||||
int result=
|
||||
#endif
|
||||
popfront_heaplist(&heap1,&heap2);
|
||||
assert(result); /* pop off equally many items than were pushed */
|
||||
} /* if */
|
||||
jmp_eq0(flab1); /* go to second expression if primary register==0 */
|
||||
PUSHSTK_I(sc_allowtags);
|
||||
sc_allowtags=FALSE; /* do not allow tagnames here (colon is a special token) */
|
||||
if (sc_status==statWRITE) {
|
||||
modheap(heap1*sizeof(cell));
|
||||
decl_heap+=heap1; /* equilibrate the heap (see comment below) */
|
||||
} /* if */
|
||||
if (hier13(lval))
|
||||
rvalue(lval);
|
||||
if (lval->ident==iCONSTEXPR) /* load constant here */
|
||||
ldconst(lval->constval,sPRI);
|
||||
sc_allowtags=(short)POPSTK_I(); /* restore */
|
||||
heap1=decl_heap-locheap; /* save heap space used in "true" branch */
|
||||
assert(heap1>=0);
|
||||
decl_heap=locheap; /* restore heap delta */
|
||||
jumplabel(flab2);
|
||||
setlabel(flab1);
|
||||
if (orig_heap!=decl_heap) {
|
||||
diff1=abs(decl_heap-orig_heap);
|
||||
decl_heap=orig_heap;
|
||||
}
|
||||
needtoken(':');
|
||||
if (sc_status==statWRITE) {
|
||||
modheap(heap2*sizeof(cell));
|
||||
decl_heap+=heap2; /* equilibrate the heap (see comment below) */
|
||||
} /* if */
|
||||
if (hier13(&lval2))
|
||||
rvalue(&lval2);
|
||||
if (lval2.ident==iCONSTEXPR) /* load constant here */
|
||||
ldconst(lval2.constval,sPRI);
|
||||
heap2=decl_heap-locheap; /* save heap space used in "false" branch */
|
||||
assert(heap2>=0);
|
||||
array1= (lval->ident==iARRAY || lval->ident==iREFARRAY);
|
||||
array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY);
|
||||
if (array1 && !array2) {
|
||||
@ -1055,19 +1077,26 @@ static int hier13(value *lval)
|
||||
if (!matchtag(lval->tag,lval2.tag,FALSE))
|
||||
error(213); /* tagname mismatch ('true' and 'false' expressions) */
|
||||
setlabel(flab2);
|
||||
if (sc_status==statFIRST) {
|
||||
/* Calculate the max. heap space used by either branch and save values of
|
||||
* max - heap1 and max - heap2. On the second pass, we use these values
|
||||
* to equilibrate the heap space used by either branch. This is needed
|
||||
* because we don't know (at compile time) which branch will be taken,
|
||||
* but the heap cannot be restored inside each branch because the result
|
||||
* on the heap may needed by the remaining expression.
|
||||
*/
|
||||
int max=(heap1>heap2) ? heap1 : heap2;
|
||||
heaplist_node->first=max-heap1;
|
||||
heaplist_node->second=max-heap2;
|
||||
decl_heap=locheap+max; /* otherwise it will contain locheap+heap2 and the
|
||||
* max. heap usage will be wrong for the upper
|
||||
* expression */
|
||||
} /* if */
|
||||
assert(sc_status!=statWRITE || heap1==heap2);
|
||||
if (lval->ident==iARRAY)
|
||||
lval->ident=iREFARRAY; /* iARRAY becomes iREFARRAY */
|
||||
else if (lval->ident!=iREFARRAY)
|
||||
lval->ident=iEXPRESSION; /* iREFARRAY stays iREFARRAY, rest becomes iEXPRESSION */
|
||||
if (orig_heap!=decl_heap) {
|
||||
diff2=abs(decl_heap-orig_heap);
|
||||
decl_heap=orig_heap;
|
||||
}
|
||||
if (diff1==diff2) {
|
||||
decl_heap+=(diff1/2);
|
||||
} else {
|
||||
decl_heap+=(diff1+diff2);
|
||||
}
|
||||
return FALSE; /* conditional expression is no lvalue */
|
||||
} else {
|
||||
return lvalue;
|
||||
|
@ -443,6 +443,52 @@ SC_FUNC void delete_autolisttable(void)
|
||||
}
|
||||
|
||||
|
||||
/* ----- value pair list ----------------------------------------- */
|
||||
static valuepair heaplist = {NULL, 0, 0};
|
||||
|
||||
SC_FUNC valuepair *push_heaplist(long first, long second)
|
||||
{
|
||||
valuepair *cur, *last;
|
||||
if ((cur=malloc(sizeof(valuepair)))==NULL)
|
||||
error(103); /* insufficient memory (fatal error) */
|
||||
|
||||
cur->first=first;
|
||||
cur->second=second;
|
||||
cur->next=NULL;
|
||||
|
||||
for (last=&heaplist; last->next!=NULL; last=last->next)
|
||||
/* nothing */;
|
||||
last->next=cur;
|
||||
return cur;
|
||||
}
|
||||
|
||||
SC_FUNC int popfront_heaplist(long *first, long *second)
|
||||
{
|
||||
valuepair *front=heaplist.next;
|
||||
if (front==NULL)
|
||||
return 0;
|
||||
|
||||
/* copy fields */
|
||||
*first=front->first;
|
||||
*second=front->second;
|
||||
|
||||
/* unlink and free */
|
||||
heaplist.next=front->next;
|
||||
free(front);
|
||||
return 1;
|
||||
}
|
||||
|
||||
SC_FUNC void delete_heaplisttable(void)
|
||||
{
|
||||
valuepair *cur;
|
||||
while (heaplist.next!=NULL) {
|
||||
cur=heaplist.next;
|
||||
heaplist.next=cur->next;
|
||||
free(cur);
|
||||
} /* while */
|
||||
}
|
||||
|
||||
|
||||
/* ----- debug information --------------------------------------- */
|
||||
|
||||
static stringlist dbgstrings = {NULL, NULL};
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
#include <amxmodx>
|
||||
#include <amxmisc>
|
||||
#include <cstrike>
|
||||
#include <csx>
|
||||
|
||||
public MultiKill
|
||||
@ -81,9 +82,6 @@ new g_pcvar_mp_c4timer, g_c4timer_value
|
||||
const TASK_BOMB_TIMER = 8038
|
||||
const TASK_DELAYED_NEW_ROUND = 98038
|
||||
|
||||
const TEAM_T = 1
|
||||
const TEAM_CT = 2
|
||||
|
||||
new g_connected[MAX_PLAYERS + 1]
|
||||
new g_msounds[MAX_PLAYERS + 1]
|
||||
new const _msound[] = "_msound"
|
||||
@ -178,13 +176,7 @@ new g_HeadShots[7][] =
|
||||
"HS_MSG_7"
|
||||
}
|
||||
|
||||
new g_teamsNames[4][] =
|
||||
{
|
||||
"TERRORIST",
|
||||
"CT",
|
||||
"TERRORISTS",
|
||||
"CTS"
|
||||
}
|
||||
new const g_teamsNames[CsTeams][] = { "", "TERRORIST" , "CT", "" };
|
||||
|
||||
public plugin_init()
|
||||
{
|
||||
@ -543,48 +535,26 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
|
||||
}
|
||||
}
|
||||
|
||||
new team = get_user_team(victim)
|
||||
if (EnemyRemaining && is_user_connected(victim))
|
||||
new const CsTeams:team = cs_get_user_team(victim);
|
||||
|
||||
if (EnemyRemaining && CS_TEAM_T <= team <= CS_TEAM_CT && is_user_connected(victim))
|
||||
{
|
||||
if( TEAM_T <= team <= TEAM_CT )
|
||||
new const victimTeammatesCount = get_playersnum_ex(GetPlayers_ExcludeDead | GetPlayers_MatchTeam, g_teamsNames[team]);
|
||||
|
||||
if (victimTeammatesCount)
|
||||
{
|
||||
new ppl[MAX_PLAYERS], pplnum, epplnum, a
|
||||
get_players(ppl, epplnum, "ae", team == TEAM_T ? "CT" : "TERRORIST")
|
||||
get_players(ppl, pplnum, "ae", team == TEAM_T ? "TERRORIST" : "CT")
|
||||
if( victim_alive )
|
||||
{
|
||||
for(a=0; a<pplnum; a++)
|
||||
{
|
||||
if( ppl[a] == victim )
|
||||
{
|
||||
ppl[a] = ppl[--pplnum]
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pplnum && epplnum)
|
||||
{
|
||||
new message[128], team_name[32]
|
||||
new killerTeammatesList[MAX_PLAYERS], killerTeammatesCount;
|
||||
get_players_ex(killerTeammatesList, killerTeammatesCount, GetPlayers_ExcludeDead | GetPlayers_MatchTeam, g_teamsNames[CsTeams:(any:team % 2 + 1)]);
|
||||
|
||||
set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
|
||||
|
||||
/* This is a pretty stupid thing to translate, but whatever */
|
||||
new _teamname[32]
|
||||
if (team == TEAM_T)
|
||||
{
|
||||
formatex(_teamname, charsmax(_teamname), "TERRORIST%s", (epplnum == 1) ? "" : "S")
|
||||
} else {
|
||||
formatex(_teamname, charsmax(_teamname), "CT%s", (epplnum == 1) ? "" : "S")
|
||||
}
|
||||
if (killerTeammatesCount)
|
||||
{
|
||||
set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1);
|
||||
|
||||
new id
|
||||
for (a = 0; a < pplnum; ++a)
|
||||
for (new teammate; teammate < killerTeammatesCount; ++teammate)
|
||||
{
|
||||
id = ppl[a]
|
||||
formatex(team_name, charsmax(team_name), "%L", id, _teamname)
|
||||
formatex(message, charsmax(message), "%L", id, "REMAINING", epplnum, team_name)
|
||||
ShowSyncHudMsg(id, g_bottom_sync, "%s", message)
|
||||
victimTeammatesCount > 1 ?
|
||||
ShowSyncHudMsg(killerTeammatesList[teammate], g_bottom_sync, "%l", "REMAINING_ENEMIES", victimTeammatesCount) :
|
||||
ShowSyncHudMsg(killerTeammatesList[teammate], g_bottom_sync, "%l","REMAINING_ENEMY");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -600,7 +570,7 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
|
||||
{
|
||||
switch( team )
|
||||
{
|
||||
case TEAM_T:
|
||||
case CS_TEAM_T:
|
||||
{
|
||||
for(b=0; b<tsnum; b++)
|
||||
{
|
||||
@ -611,7 +581,7 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
|
||||
}
|
||||
}
|
||||
}
|
||||
case TEAM_CT:
|
||||
case CS_TEAM_CT:
|
||||
{
|
||||
for(b=0; b<ctsnum; b++)
|
||||
{
|
||||
@ -653,19 +623,19 @@ public client_death(killer, victim, wpnindex, hitplace, TK)
|
||||
}
|
||||
else if (!g_LastAnnounce)
|
||||
{
|
||||
new oposite = 0, _team = 0
|
||||
new oposite = 0, CsTeams:_team
|
||||
|
||||
if (ctsnum == 1 && tsnum > 1)
|
||||
{
|
||||
g_LastAnnounce = cts[0]
|
||||
oposite = tsnum
|
||||
_team = 0
|
||||
_team = CS_TEAM_T
|
||||
}
|
||||
else if (tsnum == 1 && ctsnum > 1)
|
||||
{
|
||||
g_LastAnnounce = ts[0]
|
||||
oposite = ctsnum
|
||||
_team = 1
|
||||
_team = CS_TEAM_CT
|
||||
}
|
||||
|
||||
if (g_LastAnnounce)
|
||||
@ -818,7 +788,7 @@ public showStatus(id)
|
||||
get_user_name(pid, name, charsmax(name))
|
||||
new color1 = 0, color2 = 0
|
||||
|
||||
if (get_user_team(pid) == TEAM_T)
|
||||
if (cs_get_user_team(pid) == CS_TEAM_T)
|
||||
color1 = 255
|
||||
else
|
||||
color2 = 255
|
||||
|
@ -12,9 +12,9 @@ COL_MAROON = maroon
|
||||
PRINT_ALL = (ALL) %s : %s
|
||||
|
||||
[de]
|
||||
COL_WHITE = weiss
|
||||
COL_WHITE = weiß
|
||||
COL_RED = rot
|
||||
COL_GREEN = gruen
|
||||
COL_GREEN = grün
|
||||
COL_BLUE = blau
|
||||
COL_YELLOW = gelb
|
||||
COL_MAGENTA = magenta-rot
|
||||
|
@ -85,31 +85,31 @@ ADMIN_UNBAN_2 = ADMIN %s: entbannt %s
|
||||
ADMIN_ADDBAN_1 = ADMIN: bannt %s
|
||||
ADMIN_ADDBAN_2 = ADMIN %s: bannt %s
|
||||
BANNED = gebannt
|
||||
REASON = grund
|
||||
FOR_MIN = fuer %s Minuten
|
||||
PERM = fuer immer
|
||||
REASON = Grund
|
||||
FOR_MIN = für %s Minuten
|
||||
PERM = für immer
|
||||
CLIENT_BANNED = Spieler "%s" gebannt
|
||||
ADMIN_SLAY_1 = ADMIN: killt %s
|
||||
ADMIN_SLAY_2 = ADMIN %s: killt %s
|
||||
CLIENT_SLAYED = Spieler "%s" wurde gekillt
|
||||
ADMIN_SLAP_1 = ADMIN: schlaegt %s mit %d Schaden
|
||||
ADMIN_SLAP_2 = ADMIN %s: schlaegt %s mit %d Schaden
|
||||
ADMIN_SLAP_1 = ADMIN: schlägt %s mit %d Schaden
|
||||
ADMIN_SLAP_2 = ADMIN %s: schlägt %s mit %d Schaden
|
||||
CLIENT_SLAPED = Spieler "%s" wurde mit %d Schaden geschlagen
|
||||
MAP_NOT_FOUND = Diese Map ist nicht vorhanden oder unzulaessig
|
||||
MAP_NOT_FOUND = Diese Map ist nicht vorhanden oder unzulässig
|
||||
ADMIN_MAP_1 = ADMIN: wechselt zur Map %s
|
||||
ADMIN_MAP_2 = ADMIN %s: wechselt zur Map %s
|
||||
NO_MORE_CVARS = Kann keine weiteren CVAR´s fuer rcon-Berechtigung hinzufuegen!
|
||||
NO_MORE_CVARS = Kann keine weiteren CVARs für rcon-Berechtigung hinzufügen!
|
||||
UNKNOWN_CVAR = Unbekannte CVAR: %s
|
||||
UNKNOWN_XVAR = Unbekannte XVAR: %s
|
||||
CVAR_NO_ACC = Du hast keine Berechtigung fuer diese CVAR!
|
||||
XVAR_NO_ACC = Du hast keine Berechtigung fuer diese XVAR!
|
||||
CVAR_NO_ACC = Du hast keine Berechtigung für diese CVAR!
|
||||
XVAR_NO_ACC = Du hast keine Berechtigung für diese XVAR!
|
||||
CVAR_IS = CVAR "%s" ist "%s"
|
||||
XVAR_IS = XVAR "%s" ist "%s"
|
||||
PROTECTED = GESCHUETZT
|
||||
PROTECTED = GESCHÜTZT
|
||||
SET_CVAR_TO = %s setzte CVAR %s auf "%s"
|
||||
SET_XVAR_TO = %s setzte XVAR %s auf "%s"
|
||||
CVAR_CHANGED = CVAR "%s" geaendert auf "%s"
|
||||
XVAR_CHANGED = XVAR "%s" geaendert auf "%s"
|
||||
CVAR_CHANGED = CVAR "%s" geändert auf "%s"
|
||||
XVAR_CHANGED = XVAR "%s" geändert auf "%s"
|
||||
LOADED_PLUGINS = Momentan geladene Plugins
|
||||
NAME = Name
|
||||
VERSION = Version
|
||||
@ -120,35 +120,35 @@ PLUGINS_RUN = %d Plugins, %d Plugins laufen
|
||||
LOADED_MODULES = Momentan geladene Module
|
||||
NUM_MODULES = %d Module
|
||||
FILE_NOT_FOUND = Datei "%s" nicht gefunden
|
||||
ADMIN_CONF_1 = ADMIN: fuehrt Config %s aus
|
||||
ADMIN_CONF_2 = ADMIN %s: fuehrt Config %s aus
|
||||
ADMIN_CONF_1 = ADMIN: führt Config %s aus
|
||||
ADMIN_CONF_2 = ADMIN %s: führt Config %s aus
|
||||
PAUSED = pausiert
|
||||
UNPAUSED = Pause beendet
|
||||
UNABLE_PAUSE = Server konnte das Spiel nicht anhalten. Reale Spieler werden auf dem Server benoetigt.
|
||||
SERVER_PROC = Server fuehrt %s aus
|
||||
PAUSING = Pausieren
|
||||
UNPAUSING = Pause beendet
|
||||
UNPAUSED = fortgesetzt
|
||||
UNABLE_PAUSE = Server konnte das Spiel nicht anhalten. Reale Spieler werden auf dem Server benötigt.
|
||||
SERVER_PROC = Server führt %s aus
|
||||
PAUSING = Pausiere
|
||||
UNPAUSING = setze fort
|
||||
PAUSE = Pause
|
||||
UNPAUSE = Pause beendet
|
||||
UNPAUSE = Fortsetzen
|
||||
COM_SENT_SERVER = Befehlszeile "%s" zur Serverconsole gesendet
|
||||
CLIENTS_ON_SERVER = Spieler auf dem Server
|
||||
IMMU = Immunitaet
|
||||
IMMU = Immunität
|
||||
RESERV = Reserviert
|
||||
ACCESS = Berechtigung
|
||||
TOTAL_NUM = Total %d
|
||||
SKIP_MATCH = Ueberspringe "%s" (stimmt ueberein mit "%s")
|
||||
SKIP_IMM = Ueberspringe "%s" (Immunitaet)
|
||||
SKIP_MATCH = Überspringe "%s" (stimmt überein mit "%s")
|
||||
SKIP_IMM = Überspringe "%s" (Immunität)
|
||||
KICK_PL = Kickt "%s"
|
||||
YOU_DROPPED = Du wurdest gekickt, weil der Admin nur spezielle Spielergruppen auf dem Server zulaesst
|
||||
YOU_DROPPED = Du wurdest gekickt, weil der Admin nur spezielle Spielergruppen auf dem Server zulässt
|
||||
KICKED_CLIENTS = Kickt %d clients
|
||||
ADMIN_LEAVE_1 = ADMIN: erlaubt %s %s %s %s
|
||||
ADMIN_LEAVE_2 = ADMIN %s: erlaubt %s %s %s %s
|
||||
ADMIN_NICK_1 = ADMIN: aendert Name von %s zu "%s"
|
||||
ADMIN_NICK_2 = ADMIN %s: aendert Name von %s zu "%s"
|
||||
CHANGED_NICK = Name von %s zu "%s" geaendert
|
||||
ADMIN_EXTEND_1 = ADMIN: Verlaengere Map fuer %d Minuten
|
||||
ADMIN_EXTEND_2 = ADMIN %s: Verlaengere Map fuer %d Minuten
|
||||
MAP_EXTENDED = Map "%s" wurde fuer %d Minuten verlaengert
|
||||
ADMIN_NICK_1 = ADMIN: ä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
|
||||
ADMIN_EXTEND_1 = ADMIN: Verlängere Map um %d Minuten
|
||||
ADMIN_EXTEND_2 = ADMIN %s: Verlängere Map um %d Minuten
|
||||
MAP_EXTENDED = Map "%s" wurde um %d Minuten verlängert
|
||||
|
||||
[sr]
|
||||
ADMIN_KICK_1 = ADMIN: kick %s
|
||||
|
@ -12,12 +12,12 @@ NO_MATCHING_RESULTS = ^nNo matching results found^n
|
||||
|
||||
[de]
|
||||
HELP_COMS = AMX Mod X Help: Befehle
|
||||
HELP_ENTRIES = Eintraege %d - %d von %d
|
||||
HELP_USE_MORE = Nutze '%s %d' fuer die naechste Seite
|
||||
HELP_ENTRIES = Einträge %d - %d von %d
|
||||
HELP_USE_MORE = Nutze '%s %d' für die nächste Seite
|
||||
HELP_USE_BEGIN = Nutze '%s 1' um zum Anfang zu gelangen
|
||||
TYPE_HELP = Schreibe '%s' '%s' in die Konsole um die verfuegbaren Befehle zu sehen.
|
||||
TIME_INFO_1 = Verbleibende Zeit: %d:%02d Minuten, naechste Map: %s
|
||||
TIME_INFO_2 = Kein Zeitlimit. Naechste Map ist: %s
|
||||
TYPE_HELP = Schreibe '%s' '%s' in die Konsole um die verfügbaren Befehle zu sehen.
|
||||
TIME_INFO_1 = Verbleibende Zeit: %d:%02d Minuten, nächste Map: %s
|
||||
TIME_INFO_2 = Kein Zeitlimit. Nächste Map ist: %s
|
||||
|
||||
[sr]
|
||||
HELP_COMS = AMX Mod X Pomoc: Komande
|
||||
|
@ -36,35 +36,35 @@ ADMIN_VOTE_FOR_2 = %s %s: vote %s for %s
|
||||
ADMIN_CANC_VOTE_1 = %s: Abstimmung abgebrochen
|
||||
ADMIN_CANC_VOTE_2 = %s %s: Abstimmung abgebrochen
|
||||
VOTING_CANC = Auswahl abgebrochen
|
||||
NO_VOTE_CANC = Zur Zeit ist keine Abstimmung vorhanden oder das Abbrechen ist mit diesem Befehl nicht moeglich
|
||||
NO_VOTE_CANC = Zur Zeit ist keine Abstimmung vorhanden oder das Abbrechen ist mit diesem Befehl nicht möglich
|
||||
RES_REF = Resultat abgelehnt
|
||||
RES_ACCEPTED = Resultat angenommen
|
||||
VOTING_FAILED = Abstimmung gescheitert
|
||||
VOTING_RES_1 = %s (Ja "%d") (Nein "%d") (benoetigt "%d")
|
||||
VOTING_RES_2 = %s (erhielt "%d") (benoetigt "%d")
|
||||
VOTING_RES_1 = %s (Ja "%d") (Nein "%d") (benötigt "%d")
|
||||
VOTING_RES_2 = %s (erhielt "%d") (benötigt "%d")
|
||||
VOTING_SUCCESS = Abstimmung erfolgreich
|
||||
VOTING_RES_3 = %s (erhielt "%d") (benoetigt "%d"). Ergebnis: %s
|
||||
VOTING_RES_3 = %s (erhielt "%d") (benötigt "%d"). Ergebnis: %s
|
||||
THE_RESULT = Das Ergebnis
|
||||
WANT_CONTINUE = Forfahren?
|
||||
VOTED_FOR = %s stimmten dafuer
|
||||
VOTED_FOR = %s stimmten dafür
|
||||
VOTED_AGAINST = %s stimmten dagegen
|
||||
VOTED_FOR_OPT = %s stimmten fuer Option #%d
|
||||
ALREADY_VOTING = Abstimmung laeuft bereits...
|
||||
VOTING_NOT_ALLOW = Abstimmung ist momentan nicht moeglich!
|
||||
GIVEN_NOT_VALID = %s ist unzulaessig
|
||||
VOTED_FOR_OPT = %s stimmten für Option #%d
|
||||
ALREADY_VOTING = Abstimmung läuft bereits...
|
||||
VOTING_NOT_ALLOW = Abstimmung ist momentan nicht möglich!
|
||||
GIVEN_NOT_VALID = %s ist unzulässig
|
||||
MAP_IS = Map ist
|
||||
MAPS_ARE = Maps sind
|
||||
CHOOSE_MAP = Waehle Map
|
||||
ADMIN_VOTE_MAP_1 = %s: Abstimmung fuer Map(s) gestartet
|
||||
ADMIN_VOTE_MAP_2 = %s %s: Abstimmung fuer Map(s) gestartet
|
||||
CHOOSE_MAP = Wähle Map
|
||||
ADMIN_VOTE_MAP_1 = %s: Abstimmung für Map(s) gestartet
|
||||
ADMIN_VOTE_MAP_2 = %s %s: Abstimmung für Map(s) gestartet
|
||||
VOTING_STARTED = Abstimmung gestartet ...
|
||||
VOTING_FORBIDDEN = Abstimmung dafuer ist verboten.
|
||||
VOTING_FORBIDDEN = Abstimmung dafür ist verboten.
|
||||
ADMIN_VOTE_CUS_1 = %s: startet eigene Umfrage
|
||||
ADMIN_VOTE_CUS_2 = %s %s: startet eigene Umfrage
|
||||
VOTE = Abstimmung
|
||||
ACTION_PERFORMED = Durchfuehrung an BOT "%s" ist nicht moeglich
|
||||
ADMIN_VOTE_FOR_1 = %s: %s Stimmen fuer %s
|
||||
ADMIN_VOTE_FOR_2 = %s %s: %s Stimmen fuer %s
|
||||
ACTION_PERFORMED = Durchführung an BOT "%s" ist nicht möglich
|
||||
ADMIN_VOTE_FOR_1 = %s: %s Stimmen für %s
|
||||
ADMIN_VOTE_FOR_2 = %s %s: %s Stimmen für %s
|
||||
|
||||
[sr]
|
||||
ADMIN_CANC_VOTE_1 = %s: otkazi glasanje
|
||||
|
@ -4,9 +4,9 @@ CONF_MENU = Configs Menu
|
||||
SPE_MENU = Speech Menu
|
||||
|
||||
[de]
|
||||
CMD_MENU = Menu > Befehle
|
||||
CONF_MENU = Menu > Konfiguration
|
||||
SPE_MENU = Menu > Sprechen
|
||||
CMD_MENU = Menü > Befehle
|
||||
CONF_MENU = Menü > Konfiguration
|
||||
SPE_MENU = Menü > Sprechen
|
||||
|
||||
[sr]
|
||||
CMD_MENU = Komandne
|
||||
|
@ -21,7 +21,7 @@ ON = On
|
||||
OFF = Off
|
||||
|
||||
[de]
|
||||
BACK = Zurueck
|
||||
BACK = Zurück
|
||||
EXIT = Beenden
|
||||
MORE = Mehr
|
||||
NONE = Keine
|
||||
@ -32,13 +32,13 @@ YES = Ja
|
||||
NO = Nein
|
||||
BAN = ban
|
||||
KICK = kick
|
||||
NO_ACC_COM = Du hast nicht genuegend Rechte, um diesen Befehl auszufuehren!
|
||||
NO_ACC_COM = Du hast nicht genügend Rechte, um diesen Befehl auszuführen!
|
||||
USAGE = Anwendung
|
||||
MORE_CL_MATCHT = Es gibt mehrere Spieler, auf die deine Angaben zutreffen
|
||||
CL_NOT_FOUND = Spieler mit diesem Namen oder dieser UserID nicht gefunden
|
||||
CLIENT_IMM = Spieler "%s" hat Immnuitaet
|
||||
CANT_PERF_DEAD = Diese Aktion kann nicht am toten Spieler "%s" ausgefuehrt werden.
|
||||
CANT_PERF_BOT = Diese Aktion kann nicht am Bot "%s" ausgefuehrt werden.
|
||||
CLIENT_IMM = Spieler "%s" hat Immunität
|
||||
CANT_PERF_DEAD = Diese Aktion kann nicht am toten Spieler "%s" ausgeführt werden.
|
||||
CANT_PERF_BOT = Diese Aktion kann nicht am Bot "%s" ausgeführt werden.
|
||||
ON = An
|
||||
OFF = Aus
|
||||
|
||||
|
@ -8,13 +8,13 @@ EXTED_MAP = Extend map %s
|
||||
TIME_CHOOSE = It's time to choose the nextmap...
|
||||
|
||||
[de]
|
||||
CHO_FIN_EXT = Auswahl beendet. Laufende Map wird um %.0f Minuten verlaengert.
|
||||
CHO_FIN_NEXT = Auswahl beendet. Naechste Map ist %s
|
||||
CHOSE_EXT = %s waehlten Map-Verlaengerung
|
||||
X_CHOSE_X = %s waehlten %s
|
||||
CHOOSE_NEXTM = AMXX waehlt naechste Map
|
||||
EXTED_MAP = Verlangere Map %s
|
||||
TIME_CHOOSE = Es ist an der Zeit, die naechste Map zu waehlen...
|
||||
CHO_FIN_EXT = Auswahl beendet. Laufende Map wird um %.0f Minuten verlängert.
|
||||
CHO_FIN_NEXT = Auswahl beendet. Nächste Map ist %s
|
||||
CHOSE_EXT = %s wählte Map-Verlängerung
|
||||
X_CHOSE_X = %s wählte %s
|
||||
CHOOSE_NEXTM = [AMXX] Wählt die nächste Map
|
||||
EXTED_MAP = Verlängere Map %s
|
||||
TIME_CHOOSE = Es ist an der Zeit, die nächste Map zu wählen...
|
||||
|
||||
[sr]
|
||||
CHO_FIN_EXT = Biranje zavrseno. Sadasnja mapa ce biti produzena za %.0f minuta
|
||||
|
@ -30,21 +30,21 @@ VOTE_FAILED = Abstimmung gescheitert
|
||||
THE_WINNER = Der Gewinner
|
||||
WANT_CONT = Willst du fortfahren?
|
||||
VOT_CANC = Abstimmung abgebrochen
|
||||
X_VOTED_FOR = %s stimmten fuer Option #%d
|
||||
VOTEMAP_MENU = Menu > Mapwahl
|
||||
START_VOT = Start Abstimmung
|
||||
SEL_MAPS = Ausgewaehlte Maps
|
||||
ALREADY_VOT = Es laeuft bereits eine Abstimmung...
|
||||
NO_MAPS_MENU = Es sind keine Maps im Menu vorhanden
|
||||
VOT_NOW_ALLOW = Abstimmung zur Zeit nicht moeglich
|
||||
WHICH_MAP = Welche Map moechtest du?
|
||||
X_VOTED_FOR = %s stimmten für Option #%d
|
||||
VOTEMAP_MENU = Menü > Mapwahl
|
||||
START_VOT = Starte Abstimmung
|
||||
SEL_MAPS = Ausgewählte Maps
|
||||
ALREADY_VOT = Es läuft bereits eine Abstimmung...
|
||||
NO_MAPS_MENU = Es sind keine Maps im Menü vorhanden
|
||||
VOT_NOW_ALLOW = Abstimmung zur Zeit nicht möglich
|
||||
WHICH_MAP = Welche Map möchtest du?
|
||||
CHANGE_MAP_TO = Wechsle zu Map
|
||||
CANC_VOTE = Abstimmung abgebrochen
|
||||
ADMIN_V_MAP_1 = ADMIN: waehlt Map(s)
|
||||
ADMIN_V_MAP_2 = ADMIN %s: waehlt Map(s)
|
||||
ADMIN_V_MAP_1 = ADMIN: wählt Map(s)
|
||||
ADMIN_V_MAP_2 = ADMIN %s: wählt Map(s)
|
||||
ADMIN_CHANGEL_1 = ADMIN: wechselt zur Map %s
|
||||
ADMIN_CHANGEL_2 = ADMIN %s: wechselt zur Map %s
|
||||
CHANGLE_MENU = Menu > Mapwechsel
|
||||
CHANGLE_MENU = Menü > Mapwechsel
|
||||
|
||||
[sr]
|
||||
RESULT_REF = Rezultat odbijen
|
||||
|
@ -19,7 +19,7 @@ TELE_PLAYER = Teleport Player
|
||||
[de]
|
||||
KICK_PLAYER = Kick Spieler
|
||||
BAN_PLAYER = Ban Spieler
|
||||
SLAP_SLAY = Schlage/Toete Spieler
|
||||
SLAP_SLAY = Schlage/Kille Spieler
|
||||
TEAM_PLAYER = Team Spieler ^n
|
||||
CHANGEL = Mapwechsel
|
||||
VOTE_MAPS = Map Abstimmung ^n
|
||||
|
@ -42,53 +42,57 @@ CTS = CTS
|
||||
TERRORIST = TERRORIST
|
||||
TERRORISTS = TERRORISTS
|
||||
REMAINING = %d %s Remaining...
|
||||
REMAINING_ENEMY = One enemy remaining...
|
||||
REMAINING_ENEMIES = %d enemies remaining...
|
||||
KILLS = kills
|
||||
HS = hs
|
||||
|
||||
[de]
|
||||
WITH = mit
|
||||
KNIFE_MSG_1 = %s hat %s geschnitten und gewuerfelt
|
||||
KNIFE_MSG_2 = %s hat sein Messer gezueckt und %s ausgeweidet
|
||||
KNIFE_MSG_1 = %s hat %s geschnitten und gewürfelt
|
||||
KNIFE_MSG_2 = %s hat sein Messer gezückt und %s ausgeweidet
|
||||
KNIFE_MSG_3 = %s hat sich angeschlichen und %s gemessert
|
||||
KNIFE_MSG_4 = %s messerte und verstuemmelte %s
|
||||
LAST_MSG_1 = Nun haengt alles von dir ab!
|
||||
KNIFE_MSG_4 = %s messerte und verstümmelte %s
|
||||
LAST_MSG_1 = Nun hängt alles von dir ab!
|
||||
LAST_MSG_2 = Hoffentlich hast du ein Medipack dabei.
|
||||
LAST_MSG_3 = Deine Teamkameraden sind alle tot. Viel Glueck!
|
||||
LAST_MSG_3 = Deine Teamkameraden sind alle tot. Viel Glück!
|
||||
LAST_MSG_4 = Nun bist du allein. Hab Spass dabei!
|
||||
HE_MSG_1 = %s sendet ein kleines Geschenk an %s
|
||||
HE_MSG_2 = %s wirft ein Knallbonbon zu %s
|
||||
HE_MSG_3 = %s macht einen Praezisionswurf zu %s
|
||||
HE_MSG_3 = %s macht einen Präzisionswurf zu %s
|
||||
HE_MSG_4 = %s schickte eine dicke Explosion an %s
|
||||
SHE_MSG_1 = %s sprengte sich selbst mit einer Granate
|
||||
SHE_MSG_2 = %s untersuchte die Auswirkungen ^neiner Granate an sich selbst...
|
||||
SHE_MSG_2 = %s untersuchte die Auswirkungen einer Granate an sich selbst...
|
||||
SHE_MSG_3 = %s schluckte eine Granate!
|
||||
SHE_MSG_4 = %s explodierte!
|
||||
HS_MSG_1 = $kn killte $vn mit einem ^nplazierten Schuss in den Kopf!
|
||||
HS_MSG_2 = $kn entfernte den Kopf von $vn^nmit einem Praezisionsschuss.
|
||||
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_4 = $kn siegte ueber $vn durch eine Kopfschuss.
|
||||
HS_MSG_4 = $kn besiegte $vn durch einen Kopfschuss.
|
||||
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_7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn...
|
||||
DOUBLE_KILL = Wow! %s machte einen Doppelkill!!!
|
||||
PREPARE_FIGHT = Vorbereiten zum Kampf!^nRunde %d
|
||||
KILLED_ROW = Du hast bis jetzt %d in einer Runde gekillt.
|
||||
DIED_ROUNDS = Du bist bis jetzt %d Runden hintereinander gestorben...
|
||||
KILLED_ROW = Du hast nun %d Gegner gekillt, ohne zu sterben!
|
||||
DIED_ROUNDS = Achtung! Du bist schon %d Runden in Folge ohne Kill gestorben...
|
||||
KILLED_CHICKEN = Irgendjemand killte ein Huhn!!!
|
||||
BLEW_RADIO = Irgendjemand sprenge das Radio!!!
|
||||
BLEW_RADIO = Irgendjemand sprengte das Radio!!!
|
||||
REACHED_TARGET = OMG! %s erreichte das Ziel!
|
||||
PLANT_BOMB = %s legt die Bombe!
|
||||
DEFUSING_BOMB = %s entschaerft die Bombe...
|
||||
DEFUSING_BOMB = %s entschärft die Bombe...
|
||||
SET_UP_BOMB = %s legte die Bombe!!!
|
||||
DEFUSED_BOMB = %s entschaerfte die Bombe!
|
||||
FAILED_DEFU = %s konnte die Bombe nicht entschaerfen...
|
||||
DEFUSED_BOMB = %s entschärfte die Bombe!
|
||||
FAILED_DEFU = %s konnte die Bombe nicht entschärfen...
|
||||
PICKED_BOMB = %s hob die Bombe auf...
|
||||
DROPPED_BOMB = %s warf die Bombe weg!!!
|
||||
CT = CT
|
||||
CTS = CTs
|
||||
TERRORIST = TERRORIST
|
||||
TERRORISTS = TERRORISTEN
|
||||
REMAINING = %d %s uebrig...
|
||||
REMAINING = %d %s übrig...
|
||||
REMAINING_ENEMY = Ein Gegner übrig...
|
||||
REMAINING_ENEMIES = %d Gegner übrig...
|
||||
KILLS = kills
|
||||
HS = hs
|
||||
|
||||
@ -136,6 +140,8 @@ CTS = CTS
|
||||
TERRORIST = TERORISTA
|
||||
TERRORISTS = TERORISTA
|
||||
REMAINING = %d %s Preostalo...
|
||||
REMAINING_ENEMY = Jedan preostali protivnika...
|
||||
REMAINING_ENEMIES = %d preostalih protivnika...
|
||||
KILLS = ubistava
|
||||
HS = hs
|
||||
|
||||
@ -230,6 +236,8 @@ CTS = CTS
|
||||
TERRORIST = TERRORISTE
|
||||
TERRORISTS = TERRORISTES
|
||||
REMAINING = %d %s Restant...
|
||||
REMAINING_ENEMY = Dernier ennemi restant...
|
||||
REMAINING_ENEMIES = %d ennemis restants...
|
||||
KILLS = frags
|
||||
HS = hs
|
||||
|
||||
|
@ -10,15 +10,15 @@ TYPE_LANGMENU = Type 'amx_langmenu' in the console to display a menu where you c
|
||||
LANG_MENU_DISABLED = Language menu disabled.
|
||||
|
||||
[de]
|
||||
LANG_NOT_EXISTS = Diese Sprache exsistiert nicht.
|
||||
LANG_NOT_EXISTS = Diese Sprache existiert nicht.
|
||||
PERSO_LANG = Eigene Sprache
|
||||
LANG_MENU = Sprach Menu
|
||||
SERVER_LANG = Server Sprache
|
||||
LANG_MENU = Sprachmenü
|
||||
SERVER_LANG = Sprache des Servers
|
||||
SAVE_LANG = Spracheinstellung speichern
|
||||
SET_LANG_SERVER = Die Sprache des Servers wurde auf "%s" geaendert
|
||||
SET_LANG_USER = Deine Sprache wurde auf "%s" geaendert
|
||||
TYPE_LANGMENU = Schreibe 'amx_langmenu' in die Konsole zum Anzeigen des Sprachauswahlmenus
|
||||
LANG_MENU_DISABLED = Sprachen Menü deaktiviert.
|
||||
SET_LANG_SERVER = Die Sprache des Servers wurde auf "%s" geändert
|
||||
SET_LANG_USER = Deine Sprache wurde auf "%s" geändert
|
||||
TYPE_LANGMENU = Schreibe 'amx_langmenu' in die Konsole zum Anzeigen des Sprachmenüs
|
||||
LANG_MENU_DISABLED = Sprachmenü deaktiviert.
|
||||
|
||||
[sr]
|
||||
LANG_NOT_EXISTS = Jezik ne postoji
|
||||
|
@ -4,7 +4,7 @@ PLAYED_MAP = Played map
|
||||
FRIEND_FIRE = Friendly fire
|
||||
|
||||
[de]
|
||||
NEXT_MAP = Naechste Map:
|
||||
NEXT_MAP = Nächste Map:
|
||||
PLAYED_MAP = Gespielte Maps
|
||||
FRIEND_FIRE = Friendly fire
|
||||
|
||||
|
@ -39,15 +39,15 @@ CANT_UNPAUSE_PLUGIN = Plugin "%s" is stopped and cannot be paused or unpaused.
|
||||
CLEAR_PAUSED = Clear file with paused
|
||||
|
||||
[de]
|
||||
PAUSE_COULDNT_FIND = Konnte kein Plugin finden, dass mit "%s" uebereinstimmt
|
||||
PAUSE_PLUGIN_MATCH = Plugin stimmt mit "%s" ueberein
|
||||
PAUSE_CONF_CLEARED = Konfigurationsdatei geloescht. Bei Bedarf Map neu starten.
|
||||
PAUSE_ALR_CLEARED = Konfiguration war bereits geloescht!
|
||||
PAUSE_COULDNT_FIND = Konnte kein Plugin finden, dass mit "%s" übereinstimmt
|
||||
PAUSE_PLUGIN_MATCH = Plugin stimmt mit "%s" überein
|
||||
PAUSE_CONF_CLEARED = Konfigurationsdatei gelöscht. Bei Bedarf Map neu starten.
|
||||
PAUSE_ALR_CLEARED = Konfiguration war bereits gelöscht!
|
||||
PAUSE_CONF_SAVED = Konfiguration erfolgreich gespeichert.
|
||||
PAUSE_SAVE_FAILED = Fehler beim Speichern der Konfiguration!!!
|
||||
LOCKED = GESPERRT
|
||||
PAUSE_UNPAUSE = Pausiere/Aktiviere Plugins
|
||||
CLEAR_STOPPED = Loeschen der Datei gestoppt
|
||||
CLEAR_STOPPED = Löschen der Datei gestoppt
|
||||
SAVE_STOPPED = Speichern abgebrochen
|
||||
PAUSED_PLUGIN = Pausiere %d Plugin
|
||||
PAUSED_PLUGINS = Pausiere %d Plugins
|
||||
@ -58,8 +58,8 @@ PAUSE_LOADED = Pausierte Plugins: Plugins geladen
|
||||
STOPPED = gestoppt
|
||||
VERSION = Version
|
||||
FILE = Datei
|
||||
PAUSE_ENTRIES = Eintraege %d - %d von %d (%d laufen)
|
||||
PAUSE_USE_MORE = Benutze 'amx_pausecfg list %d' fuer mehr
|
||||
PAUSE_ENTRIES = Einträge %d - %d von %d (%d laufen)
|
||||
PAUSE_USE_MORE = Benutze 'amx_pausecfg list %d' für mehr
|
||||
PAUSE_USE_BEGIN = Benutze 'amx_pausecfg list 1' um zum Anfang zu gelangen
|
||||
PAUSE_USAGE = Benutze: amx_pausecfg <Befehl> [Name]
|
||||
PAUSE_COMMANDS = Befehle
|
||||
@ -69,14 +69,14 @@ COM_PAUSE_STOP = ^tstop <file> - stoppt ein Plugin
|
||||
COM_PAUSE_PAUSE = ^tpause <file> - pausiert ein Plugin
|
||||
COM_PAUSE_ENABLE = ^tenable <file> - aktiviert ein Plugin
|
||||
COM_PAUSE_SAVE = ^tsave - speichert die Liste der gestoppten Plugins
|
||||
COM_PAUSE_CLEAR = ^tclear - loescht die Liste der gestoppten Plugins
|
||||
COM_PAUSE_CLEAR = ^tclear - löscht die Liste der gestoppten Plugins
|
||||
COM_PAUSE_LIST = ^tlist [id] - Plugins anzeigen
|
||||
COM_PAUSE_ADD = ^tadd <title> - markiert ein Plugin als nicht pausierbar
|
||||
SAVE_PAUSED = Speichere pausierte Plugins
|
||||
COM_PAUSE_SAVE_PAUSED = ^tsave - speichert die Liste der pausierten Plugins
|
||||
COM_PAUSE_CLEAR_PAUSED = ^tclear - leert die Liste der pausierten Plugins
|
||||
CANT_UNPAUSE_PLUGIN = Das Plugin "%s" ist gestoppt und kann nicht pausiert oder unpausiert werden.
|
||||
CLEAR_PAUSED = Loeschen der Datei pausierten
|
||||
CANT_UNPAUSE_PLUGIN = Das Plugin "%s" ist gestoppt und kann nicht pausiert oder aktiviert werden.
|
||||
CLEAR_PAUSED = Löscht die Liste der pausierten Plugins
|
||||
|
||||
[sr]
|
||||
PAUSE_COULDNT_FIND = Nije moguce naci plugin koji se poklapa sa "%s"
|
||||
|
@ -20,21 +20,21 @@ CANT_PERF_PLAYER = That action can't be performed on player "%s"
|
||||
[de]
|
||||
ADMIN_BAN_1 = ADMIN: bannt %s
|
||||
ADMIN_BAN_2 = ADMIN %s: bannt %s
|
||||
BAN_MENU = Menu > bannen
|
||||
BAN_FOR_MIN = Bann fuer %d Minuten
|
||||
BAN_PERM = fuer immer bannen
|
||||
SLAP_SLAY_MENU = Schlagen/Toeten-Menu
|
||||
SLAP_WITH_DMG = Schlaegt mit %d Schaden
|
||||
SLAY = toeten
|
||||
KICK_MENU = Menu >kicken
|
||||
BAN_MENU = Menü > bannen
|
||||
BAN_FOR_MIN = für %d Minuten bannen
|
||||
BAN_PERM = für immer bannen
|
||||
SLAP_SLAY_MENU = Schlagen/Killen-Menü
|
||||
SLAP_WITH_DMG = mit %d Schaden schlagen
|
||||
SLAY = killen
|
||||
KICK_MENU = Menü > kicken
|
||||
ADMIN_TRANSF_1 = ADMIN: verschiebt %s zu den %s
|
||||
ADMIN_TRANSF_2 = ADMIN %s: verschiebt %s zu den %s
|
||||
TEAM_MENU = Menu > Team
|
||||
TRANSF_TO = zu den %s geschoben
|
||||
TEAM_MENU = Menü > Team
|
||||
TRANSF_TO = zu den %s schieben
|
||||
TRANSF_SILENT = Stiller Transfer
|
||||
CL_CMD_MENU = Menu > Spielerbefehle
|
||||
NO_CMDS = keine Befehle verfuegbar
|
||||
CANT_PERF_PLAYER = Diese Aktion kann nicht am spieler "%s" ausgefuehrt werden.
|
||||
CL_CMD_MENU = Menü > Spielerbefehle
|
||||
NO_CMDS = keine Befehle verfügbar
|
||||
CANT_PERF_PLAYER = Diese Aktion kann nicht am Spieler "%s" ausgeführt werden.
|
||||
|
||||
[sr]
|
||||
ADMIN_BAN_1 = ADMIN: ban %s
|
||||
|
@ -95,7 +95,7 @@ NO_EQ_WE = Konnte diese Ausrüstung oder Waffe nicht finden
|
||||
WEAP_RES = Waffenverbot
|
||||
VALUE = Wert
|
||||
REST_ENTRIES_OF = Eintrag %i - %i von %i
|
||||
REST_USE_MORE = Benutze 'amx_restrict list %i' für mehr Info´s
|
||||
REST_USE_MORE = Benutze 'amx_restrict list %i' für mehr Infos
|
||||
REST_USE_BEGIN = Benutze 'amx_restrict list 1' um zum Anfang zu gelangen
|
||||
REST_USE_HOW = Benutze 'amx_restrict list <value>' (1 -> 8)
|
||||
REST_CONF_SAVED = Konfiguration gesichert (Datei "%s")
|
||||
@ -117,8 +117,8 @@ REST_WEAP = Waffen verbieten
|
||||
SAVE_SET = Einstellungen speichern
|
||||
CONF_SAV_SUC = Konfiguration erfolgreich gespeichert
|
||||
CONF_SAV_FAIL = Speichern der Konfiguration fehlgeschlagen!!!
|
||||
REG_CMD_MENU = - Zeigt Waffen-Verbots Menü
|
||||
REG_CMD_REST = - Zeigt Hilfe für Waffen-Verbots Menü
|
||||
REG_CMD_MENU = - Zeigt Waffen-Verbotsmenü
|
||||
REG_CMD_REST = - Zeigt Hilfe für Waffen-Verbotsmenü
|
||||
RESTRICTED_ITEM = * Dieser Gegenstand ist verboten *
|
||||
MENU_TITLE_HANDGUNS = Handwaffen
|
||||
MENU_TITLE_SHOTGUNS = Schrotgewehre
|
||||
@ -1276,4 +1276,4 @@ MENU_ITEM_NVGS = 夜视护目镜
|
||||
MENU_ITEM_SHIELD = 战术盾牌
|
||||
MENU_ITEM_PRIAMMO = 主武器弹药
|
||||
MENU_ITEM_SECAMMO = 副武器弹药
|
||||
CONFIG_FILE_HEADER = ; 由 %s 插件生成. 请勿修改!^n; 值名称^n
|
||||
CONFIG_FILE_HEADER = ; 由 %s 插件生成. 请勿修改!^n; 值名称^n
|
||||
|
@ -4,8 +4,8 @@ MSG_FREQ = Scrolling message displaying frequency: %d:%02d minutes
|
||||
MSG_DISABLED = Scrolling message disabled
|
||||
|
||||
[de]
|
||||
MIN_FREQ = Minimale Frequenz fuer diese Anzeige sind %d Sekunden
|
||||
MSG_FREQ = Scrollnachricht Anzeigefrequenz: %d:%02d Minuten
|
||||
MIN_FREQ = Die minimale Frequenz für diese Anzeige sind %d Sekunden
|
||||
MSG_FREQ = Anzeigefrequenz der Scrollnachricht: %d:%02d Minuten
|
||||
MSG_DISABLED = Scrollnachrichten abgeschaltet
|
||||
|
||||
[sr]
|
||||
|
@ -94,9 +94,9 @@ M_THEIR_RANK_IS = Their rank is
|
||||
M_OF = of
|
||||
|
||||
[de]
|
||||
WHOLEBODY = Koerper
|
||||
WHOLEBODY = Körper
|
||||
HEAD = Kopf
|
||||
CHEST = Oberkoerper
|
||||
CHEST = Oberkörper
|
||||
STOMACH = Bauch
|
||||
LEFTARM = linker Arm
|
||||
RIGHTARM = rechter Arm
|
||||
@ -116,31 +116,31 @@ RAMPAGE_SMALL = %s: RANDALIERER!!!
|
||||
UNSTOPPABLE_SMALL = %s IST NICHT ZU STOPPEN!!
|
||||
MONSTER_SMALL = %s IST EIN MONSTER!
|
||||
GODLIKE_SMALL = %s IST GODLIKE!!!
|
||||
KNIFE_MSG1 = %s hat %s geschnitten und gewuerfelt
|
||||
KNIFE_MSG2 = %s hat sein Messer gezueckt und %s ausgeweidet
|
||||
KNIFE_MSG1 = %s hat %s geschnitten und gewürfelt
|
||||
KNIFE_MSG2 = %s hat sein Messer gezückt und %s ausgeweidet
|
||||
KNIFE_MSG3 = %s hat sich angeschlichen und %s gemessert
|
||||
KNIFE_MSG4 = %s messerte und verstuemmelte %s
|
||||
KNIFE_MSG4 = %s messerte und verstümmelte %s
|
||||
HE_MSG1 = %s sendet ein kleines Geschenk an %s
|
||||
HE_MSG2 = %s wirft ein Knallbonbon zu %s
|
||||
HE_MSG3 = %s macht einen Praezisionswurf zu %s
|
||||
HE_MSG3 = %s macht einen Präzisionswurf zu %s
|
||||
HE_MSG4 = %s schickte eine dicke Explosion an %s
|
||||
SHE_MSG1 = %s sprengte sich selbst mit einer Granate
|
||||
SHE_MSG2 = %s untersuchte die Auswirkungen ^neiner Granate an sich selbst...
|
||||
SHE_MSG3 = %s schluckte eine Granate!
|
||||
SHE_MSG4 = %s explodierte!
|
||||
HEAD_MSG1 = $kn killte $vn mit einem ^nplazierten Schuss in den Kopf!
|
||||
HEAD_MSG2 = $kn entfernte den Kopf von $vn^nmit einem Praezisionsschuss.
|
||||
HEAD_MSG2 = $kn entfernte den Kopf von $vn^nmit einem Präzisionsschuss.
|
||||
HEAD_MSG3 = $kn verwandelte den Kopf ^nvon $vn in Pudding.
|
||||
HEAD_MSG4 = $vn siegte ueber $kn durch eine Kopfschuss.
|
||||
HEAD_MSG4 = $vn killte $kn durch einen Kopfschuss.
|
||||
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_MSG7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn...
|
||||
DOUBLE_MSG1 = Wow! %s machte einen Doppelkill!!!
|
||||
DOUBLE_MSG2 = Unglaublich! %s macht einen dreifachen Kill !!!
|
||||
DOUBLE_MSG3 = Ueberrascung! %s macht %d Kills auf einmal !!!
|
||||
MORTAR_MSG1 = %s stellte den Moerser auf und schickte %s in den Himmel.
|
||||
MORTAR_MSG2 = %s killte %s ueber eine lange Distanz.
|
||||
KILL_INFO1 = %s killte dich mit der %s^nueber eine Entfernung von %.2f Meter.^n
|
||||
DOUBLE_MSG3 = Überraschung! %s macht %d Kills auf einmal !!!
|
||||
MORTAR_MSG1 = %s stellte den Mörser auf und schickte %s in den Himmel.
|
||||
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_INFO2 = Er machte %d Schaden bei dir mit %d Treffern ^nund hat noch %dHP.^n
|
||||
KILL_INFO3 = Du machtest %d Schaden bei ihm mit %d Treffern.^n
|
||||
KILL_INFO4 = Du hast ihn getroffen in den/das:^n%s^n
|
||||
@ -149,7 +149,7 @@ NO_KILLER = Du hast keinen Killer...
|
||||
TOPX = Top %d
|
||||
FFIRE_IS = Friendly fire:
|
||||
ATTACKERS = Angreifer:
|
||||
VICTIMS = Gewinner:
|
||||
VICTIMS = Opfer:
|
||||
DMG = Schaden
|
||||
HIT_S = Treffer
|
||||
YOU_HIT = Du trafst %s in:
|
||||
@ -157,10 +157,10 @@ SERVER_STATS = Server Statistik
|
||||
SHOW_STATS = Statistik anzeigen
|
||||
SHOW_RANK = Rang anzeigen
|
||||
TA_MSG = %s schiesst auf einen Kameraden
|
||||
TK_MSG = %s toetete einen Kameraden!
|
||||
NADE_CAUGHT = Wow! %s faengt eine gegnereische Granate!
|
||||
NADE_FAILEDTK = Oops.. %s killte dich bei dem Versuch, die Granate zurueckzuwerfen..
|
||||
NADE_FAILED = %s konnte feindliche Granate nicht zurück werfen.
|
||||
TK_MSG = %s killte einen Kameraden!
|
||||
NADE_CAUGHT = Wow! %s fängt eine gegnerische Granate!
|
||||
NADE_FAILEDTK = Oops.. %s killte dich bei dem Versuch, die Granate zurückzuwerfen..
|
||||
NADE_FAILED = %s konnte feindliche Granate nicht zurückwerfen.
|
||||
NADE_MASTER = OMG! %s ist der Meister der Granaten !!!
|
||||
DISABLED_MSG = Server hat diese Option deaktiviert.
|
||||
MOST_KILLS = Meisten Kills
|
||||
@ -179,7 +179,7 @@ M_DEATHS = Deaths:
|
||||
M_SCORE = Note:
|
||||
M_TKS = TKs:
|
||||
M_HITS = Treffer:
|
||||
M_SHOTS = Schuesse:
|
||||
M_SHOTS = Schüsse:
|
||||
M_HS = HS:
|
||||
M_WEAPON = Waffe:
|
||||
M_DAMAGE = Schaden:
|
||||
|
@ -88,59 +88,59 @@ STATS_CONF_FAILED = Fehler beim Speichern der Statistik-Konfiguration!!!
|
||||
STATS_CONF_LOADED = Statistik-Konfiguration erfolgreich geladen
|
||||
STATS_CONF_FAIL_LOAD = Fehler beim Laden der Statistik-Konfiguration!!!
|
||||
STATS_CONF = Statistik-Konfiguration
|
||||
STATS_ENTRIES_OF = Eintraege %i - %i von %i
|
||||
STATS_USE_MORE = Benutze 'amx_statscfg list %i' fuer mehr Info´s
|
||||
STATS_ENTRIES_OF = Einträge %i - %i von %i
|
||||
STATS_USE_MORE = Benutze 'amx_statscfg list %i' für mehr Info´s
|
||||
STATS_USE_BEGIN = Benutze 'amx_statscfg list 1' um zum Anfang zu gelangen
|
||||
CANT_ADD_STATS = Kann keine Statistik mehr hinzufuegen, 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_COM = Befehl:
|
||||
COM_STATS_ON = ^ton <variable> - gibt spezielle Option frei
|
||||
COM_STATS_OFF = ^toff <variable> - sperrt spezielle Option
|
||||
COM_STATS_SAVE = ^tsave - speichert Statistik-Konfiguration
|
||||
COM_STATS_LOAD = ^tload - laedt Statistik-Konfiguration
|
||||
COM_STATS_LOAD = ^tload - lädt Statistik-Konfiguration
|
||||
COM_STATS_LIST = ^tlist [id] - Statistik-Status anzeigen
|
||||
COM_STATS_ADD = ^tadd <name> <variable> - fuegt eine Statistik zur Liste hinzu
|
||||
COM_STATS_ADD = ^tadd <name> <variable> - fügt eine Statistik zur Liste hinzu
|
||||
NO_STATS = Statistik-Plugin ist nicht^nauf diesem Server installiert^n
|
||||
SAVE_CONF = Konfiguration speichern
|
||||
STATS_ENABLED = Stats enabled
|
||||
STATS_DISABLED = Stats disabled
|
||||
ST_MULTI_KILL = MultiKill
|
||||
ST_MULTI_KILL_SOUND = MultiKill Sound
|
||||
STATS_ENABLED = Stats aktiviert
|
||||
STATS_DISABLED = Stats deaktiviert
|
||||
ST_MULTI_KILL = Multikill
|
||||
ST_MULTI_KILL_SOUND = Multikill Sound
|
||||
ST_BOMB_PLANTING = Bombe platzieren
|
||||
ST_BOMB_DEFUSING = Bombe entschaerfen
|
||||
ST_BOMB_DEFUSING = Bombe entschärfen
|
||||
ST_BOMB_PLANTED = Bombe platziert
|
||||
ST_BOMB_DEF_SUCC = Bombe entschaerfen erf.
|
||||
ST_BOMB_DEF_FAIL = Bombe entschaerfen fehl.
|
||||
ST_BOMB_DEF_SUCC = Bombe entschärfen erf.
|
||||
ST_BOMB_DEF_FAIL = Bombe entschärfen fehl.
|
||||
ST_BOMB_PICKUP = Bombe aufgenommen
|
||||
ST_BOMB_DROP = Bombe verloren
|
||||
ST_BOMB_CD_VOICE = Bomben Countdown Stimme
|
||||
ST_BOMB_CD_DEF = Bomben Countdown (entschaerfer)
|
||||
ST_BOMB_SITE = Bomben Platz erreicht
|
||||
ST_ITALY_BONUS = Italy extra Kill
|
||||
ST_BOMB_CD_VOICE = Bombencountdown Stimme
|
||||
ST_BOMB_CD_DEF = Bombencountdown (Entschärfer)
|
||||
ST_BOMB_SITE = Bombenplatz erreicht
|
||||
ST_ITALY_BONUS = Italy Bonuskill
|
||||
ST_LAST_MAN = Letzter Mann
|
||||
ST_KNIFE_KILL = Messer Kill
|
||||
ST_KNIFE_KILL_SOUND = Messer Kill Sound
|
||||
ST_HE_KILL = Granaten Kill
|
||||
ST_KNIFE_KILL = Messerkill
|
||||
ST_KNIFE_KILL_SOUND = Messerkill Sound
|
||||
ST_HE_KILL = Granatenkill
|
||||
ST_HE_SUICIDE = Granaten Selbstmord
|
||||
ST_HS_KILL = Headshot Kill
|
||||
ST_HS_KILL_SOUND = Headshot Kill Sound
|
||||
ST_ROUND_CNT = Runden Zaehler
|
||||
ST_ROUND_CNT_SOUND = Runden Zaehler Sound
|
||||
ST_HS_KILL = Headshotkill
|
||||
ST_HS_KILL_SOUND = Headshotkill Sound
|
||||
ST_ROUND_CNT = Rundenzähler
|
||||
ST_ROUND_CNT_SOUND = Rundenzähler Sound
|
||||
ST_KILL_STR = Kill Serie
|
||||
ST_KILL_STR_SOUND = Kill Serie Sound
|
||||
ST_ENEMY_REM = Gegner verbleibend
|
||||
ST_DOUBLE_KILL = Doppel Kill
|
||||
ST_DOUBLE_KILL_SOUND = Doppel Kill Sound
|
||||
ST_PLAYER_NAME = Spieler Name
|
||||
ST_DOUBLE_KILL = Doppelkill
|
||||
ST_DOUBLE_KILL_SOUND = Doppelkill Sound
|
||||
ST_PLAYER_NAME = Spielername
|
||||
ST_FIRST_BLOOD_SOUND = Erstes Blut Sound
|
||||
ST_SHOW_KILLER_CHAT = Zeige Killer HP&AP
|
||||
ST_SHOW_ATTACKERS = Zeige Angreifer
|
||||
ST_SHOW_VICTIMS = Zeige Gegner
|
||||
ST_SHOW_VICTIMS = Zeige Opfer
|
||||
ST_SHOW_KILLER = Zeige Killer
|
||||
ST_SHOW_TEAM_SCORE = Zeige Team Score
|
||||
ST_SHOW_TOTAL_STATS = Zeige totale Stats
|
||||
ST_SHOW_BEST_SCORE = Zeige besten Score
|
||||
ST_SHOW_MOST_DISRUPTIVE = Zeige meisten Durchschlaege
|
||||
ST_SHOW_MOST_DISRUPTIVE = Zeige meisten Durchschläge
|
||||
ST_SHOW_HUD_STATS_DEF = Standard HUD-Stats
|
||||
ST_SHOW_DIST_HS_HUD = Distanz&HS in HUD Liste
|
||||
ST_STATS_PLAYER_MAP_END = Stats am Ende der Map
|
||||
@ -156,12 +156,12 @@ ST_SAY_TOP15 = Say /top15
|
||||
ST_SAY_STATS = Say /stats
|
||||
ST_SPEC_RANK = Spec. Rang Info
|
||||
ST_BOMB_PLANTED_SOUND = Bombe platziert Sound
|
||||
ST_BOMB_DEF_SUCC_SOUND = Bombe entschaerfen erf. Sound
|
||||
ST_BOMB_DEF_FAIL_SOUND = Bombe entschaerfen fehl. Sound
|
||||
ST_BOMB_CD_HUD = Bomben Countdown Hud
|
||||
ST_BOMB_DEF_SUCC_SOUND = Bombe entschärfen erf. Sound
|
||||
ST_BOMB_DEF_FAIL_SOUND = Bombe entschärfen fehl. Sound
|
||||
ST_BOMB_CD_HUD = Bomben Countdown HUD
|
||||
ST_LAST_MAN_SOUND = Letzter Mann Sound
|
||||
ST_LAST_MAN_HEALTH = Last Man Health
|
||||
ST_HE_KILL_SOUND = Granaten Kill Sound
|
||||
ST_LAST_MAN_HEALTH = Letzter Mann HP
|
||||
ST_HE_KILL_SOUND = Granatenkill Sound
|
||||
ST_HE_SUICIDE_SOUND = Granaten Selbstmord Sound
|
||||
|
||||
[sr]
|
||||
|
@ -50,9 +50,9 @@ X_RANK_IS = %s's rank is %d of %d
|
||||
DISABLED_MSG = Server has disabled that option
|
||||
|
||||
[de]
|
||||
WHOLEBODY = Koerper
|
||||
WHOLEBODY = Körper
|
||||
HEAD = Kopf
|
||||
CHEST = Oberkoerper
|
||||
CHEST = Oberkörper
|
||||
STOMACH = Bauch
|
||||
LEFTARM = linker Arm
|
||||
RIGHTARM = rechter Arm
|
||||
@ -63,26 +63,26 @@ ATTACKERS = Angreifer
|
||||
ACC = Genauigkeit
|
||||
HIT_S = Treffer
|
||||
DMG = Schaden
|
||||
VICTIMS = Sieger
|
||||
VICTIMS = Opfer
|
||||
MOST_DMG = Am meisten verursachter Schaden durch
|
||||
KILLED_YOU_DIST = %s hat dich getoetet ^naus einer Entfernung von %0.2f Metern.
|
||||
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.
|
||||
YOU_DID_DMG = Du hast %d Schaden bei ihm angerichtet mit %d Treffern.
|
||||
YOU_DID_DMG = Du hast bei ihm %d Schaden mit %d Treffern angerichtet.
|
||||
EFF = Effizienz
|
||||
BEST_SCORE = Die meisten Punkte
|
||||
KILL_S = Kill(s)
|
||||
TOTAL = Total
|
||||
SHOT_S = Schuesse
|
||||
HITS_YOU_IN = %s Treffer bei ihm
|
||||
KILLED_BY_WITH = Getoetet von %s mit %s @ %0.0fm
|
||||
SHOT_S = Schüsse
|
||||
HITS_YOU_IN = %s traf dich in:
|
||||
KILLED_BY_WITH = Gekillt von %s mit %s @ %0.0fm
|
||||
NO_HITS = keine Treffer
|
||||
YOU_NO_KILLER = Du hast niemanden getoetet...
|
||||
YOU_NO_KILLER = Du hast niemanden gekillt...
|
||||
YOU_HIT = Deine Treffer: %s %d mal, %d Schaden
|
||||
LAST_RES = Letztes Ergebnis: %d Treffer, %d Schaden
|
||||
KILLS = Kills
|
||||
DEATHS = Deaths
|
||||
HITS = Treffer
|
||||
SHOTS = Schuesse
|
||||
SHOTS = Schüsse
|
||||
YOUR = Dein
|
||||
PLAYERS = Spieler
|
||||
RANK_IS = Platzierung: %d von %d
|
||||
@ -91,14 +91,14 @@ WEAPON = Waffe
|
||||
YOUR_RANK_IS = Deine Platzierung: %d von %d mit %d Kill(s), %d Treffer, %0.2f%% eff. und %0.2f%% acc.
|
||||
AMMO = Munition
|
||||
HEALTH = Gesundheit
|
||||
ARMOR = Ruestung
|
||||
ARMOR = Rüstung
|
||||
GAME_SCORE = Punkte
|
||||
STATS_ANNOUNCE = Du hast %s Statistik-Meldungen
|
||||
ENABLED = eingeschaltet
|
||||
DISABLED = ausgeschaltet
|
||||
ENABLED = aktiviert
|
||||
DISABLED = deaktiviert
|
||||
SERVER_STATS = Serverstatistik
|
||||
X_RANK_IS = %s's Platzierung: %d von %d
|
||||
DISABLED_MSG = Der Server hat diese Option ausgeschaltet.
|
||||
DISABLED_MSG = Der Server hat diese Option deaktiviert.
|
||||
|
||||
[sr]
|
||||
WHOLEBODY = celo telo
|
||||
|
@ -8,7 +8,7 @@ SAVE_LOC = Save Location
|
||||
[de]
|
||||
ADMIN_TELEPORT_1 = ADMIN: teleportiert %s
|
||||
ADMIN_TELEPORT_2 = ADMIN %s: teleportiert %s
|
||||
TELE_MENU = Menu > Teleport
|
||||
TELE_MENU = Menü > Teleport
|
||||
CUR_LOC = Momentane Position
|
||||
SAVE_LOC = Position speichern
|
||||
|
||||
|
@ -9,7 +9,7 @@ SECONDS = seconds
|
||||
|
||||
[de]
|
||||
THE_TIME = Es ist
|
||||
TIME_LEFT = Zeit uebrig
|
||||
TIME_LEFT = Zeit übrig
|
||||
NO_T_LIMIT = Kein Zeitlimit
|
||||
MINUTE = Minute
|
||||
MINUTES = Minuten
|
||||
|
@ -468,7 +468,7 @@ public CvarMenuSelection(id, menu, item)
|
||||
|
||||
if (ExplicitPlugin[id]==-1)
|
||||
{
|
||||
DisplayPluginMenuDefault(id);
|
||||
DisplayPluginMenu(id,"Plugin Cvar Menu:", "PluginMenuSelection","DisplayCvarMenu","GetNumberOfCvarsForPlid");
|
||||
}
|
||||
}
|
||||
else if (item==MENU_BACK)
|
||||
@ -790,7 +790,7 @@ public CommandMenuSelection(id, menu, item)
|
||||
|
||||
if (ExplicitPlugin[id]==-1)
|
||||
{
|
||||
client_cmd(id,"amx_plugincmdmenu");
|
||||
DisplayPluginMenu(id,"Plugin Command Menu:", "PluginMenuSelection","DisplayCmdMenu","GetNumberOfCmdsForPlid");
|
||||
}
|
||||
}
|
||||
else if (item==MENU_BACK)
|
||||
@ -914,7 +914,7 @@ public CommandMenuCommand(id, level, cid)
|
||||
{
|
||||
// We need to display a list of the plugins, instead of a specific plugin.
|
||||
ExplicitPlugin[id]=-1;
|
||||
DisplayPluginMenuDefault(id);
|
||||
DisplayPluginMenu(id,"Plugin Command Menu:", "PluginMenuSelection","DisplayCmdMenu","GetNumberOfCmdsForPlid");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -925,8 +925,3 @@ public CommandMenuCommand(id, level, cid)
|
||||
}
|
||||
return PLUGIN_HANDLED;
|
||||
}
|
||||
|
||||
DisplayPluginMenuDefault(id)
|
||||
{
|
||||
DisplayPluginMenu(id,"Plugin Command Menu:", "PluginMenuSelection","DisplayCmdMenu","GetNumberOfCmdsForPlid");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user