03.01.2010, 19:02
Code:
// сорц строка, двумерный массив, разделитель
// разделяет строку по символу на куски в массив.
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc))
{
if(strsrc[i]==delimiter || i==strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
// создать хэш таблицу
stock hmake(const name[]) return HLoad(name,"All");
// очистить хэш таблицу
stock hfree(const name[]) { HClose(name), HLoad(name, "All"); }
// узнать данные в хт, единица данных какой номер
stock hgetv(const name[], const item[], value) {
if(value > 0 && value < 11) {
new ret[256];
HGet(name, item, ret);
new rst[11][10];
split(ret,rst,',');
return rst[value-1];
}
}
добавить в хт, в ещё таблицу, и под номером таким та
stock haddv(const name[], const item[], value, const data[]) {
if(value > 0 && value < 11) {
new ret[512];
HGet(name, item, ret);
if(!equal(ret,"")) {
new rst[11][50];
split(ret,rst,',');
strdel(ret,0,512);
for(new i;i<11;i++) {
if(i == value) format(ret,sizeof(ret),"%s,%s",ret,data);
else if(i == 0) format(ret,sizeof(ret),"%s",rst[i]);
else format(ret,sizeof(ret),"%s,%s",ret,rst[i]);
}
} else { format(ret,sizeof(ret),"%s",data); }
HAdd(name, item, ret);
return ret;
}
return ret;
}
; установить значение rgba в цвете.
stock setrgba(res,r,g,b,a)
{
if(r != 0x00) { res = (res & 0x00ffffff) | (r << 24); }
if(g != 0x00) { res = (res & 0xff00ffff) | (g << 16); }
if(b != 0x00) { res = (res & 0xffff00ff) | (b << 8); }
if(a != 0x00) { res = (res & 0xffffff00) | a; }
return res;
}
// поставить значение альфа
stock seta(color,a)
return color & 0xffffff00 | a;
; хз чо такое :)
// а ну, прибавить к альфе ещё маленька альфы :)
stock givea(color,a)
return color | a;
;кол-во цифорок в числе
stock num(numb)
{
new i = 10, d = 1;
while(i<=numb) i*=10, d++;
return d;
}
;узнать из цвета r g b a
stock getr(color)
return (color & 0xFF000000) >> 24;
stock getg(color)
return (color & 0x00FF0000) >> 16;
stock getb(color)
return (color & 0x0000FF00) >> 8;
stock geta(color)
return color & 0x000000FF;
;удаляем в строке от start до end
stock strdel2(str[], start, end)
{
new str2[256];
for(new i;i<start-1;i++) str2[i] = str[i];
for(new i = end-1;i<strlen2(str);i++) str2[i - end + start] = str[i];
return str2;
}
// копируем в dest из source данные от start, и len символов.
stock strmid3(dest[], source[], start, len) {
for(new i = start;i < strlen(source) - (start - len + 1);i++) dest[i-start] = source[i];
}
// сортировка пузырьком.. ^^
stock BubbleSort(mass[])
{
new top = 4 - 1;
while(top != 0)
{
for(new i;i < top;i++)
{
if(mass[i] > mass[i+1])
{
new temp = mass[i];
mass[i] = mass[i+1];
mass[i+1] = temp;
}
}
top--;
}
}
// соединение строк
stock TooStrings(str[],str2[]) {
new string2[256];
format(string2,256,"%s%s",str,str2);
return string2;
}
/*
-----------------------
это типа вставить строку string в source с pos'a(в соурс)
By Aleksey
-----------------------
*/
stock strins2(string[], source[], pos) {
new len = strlen2(string);
new str[256];
for(new i = 0;i < pos;i++) str[i] = source[i];
for(new i = pos;i < pos+len;i++) str[i] = string[i-pos];
for(new i = pos+len;i < strlen2(source)+len;i++) str[i] = source[i-len];
return str;
}
/*
-----------------------
возвращает N правых символов, если N < 0, то вовзращает символы от strlen2(string)+N до strlen2(string)
это м.. возвращает n правый символов(мона юзать -n)
By Aleksey
-----------------------
*/
stock right(string[],N) {
new dest[256];
if (N > 0) { for(new i = strlen2(string) - N;i < strlen2(string);i++) dest[i-(strlen2(string)-N)] = string[i]; }
if (N < 0) { for(new i = strlen2(string) + N;i < strlen2(string);i++) dest[i-(strlen2(string)+N)] = string[i]; }
return dest;
}
/*
-----------------------
возвращает N левых символов, если N < 0, то вовзращает символы от 0 до strlen2(string)+N
возвращает n левых символов, мона юзать -n
By Aleksey
-----------------------
*/
stock left(string[],N) {
new dest[256];
if (N > 0) { for(new i;i < N;i++) dest[i] = string[i]; }
if (N < 0) { for(new i;i < strlen2(string)+N;i++) dest[i] = string[i]; }
return dest;
}
/*
-----------------------
поиск findtext в source, с позиции pos(по умолчанию = 0)
находит позицию строки findtext в source с pos
By Aleksey
-----------------------
*/
stock strfind2(source[],findtext[],pos = 0) {
new n;
for(new i = pos;i < strlen2(source);i++) {
for(new m;m < strlen2(findtext);m++) {
if (source[i+m] == findtext[m] && n < strlen2(findtext)) n++;
if (n == strlen2(findtext)) return i;
}
n=0;
}
return -1;
}
/*
-----------------------
возвращает длину строки
длина строки?
By Aleksey
-----------------------
*/
stock strlen2(str[]) {
new c; while(str[c++]!=0) {}
return c-1;
}
/*
-----------------------
копирование символов из source в dest, maxlength - макс. длина dest
эм..
соурс приравнивает в дест..
By Aleksey
-----------------------
*/
stock strcat2(dest[], source[],maxlength = sizeof(dest)) { for(new i;i<maxlength;i++) dest[i] = source[i]; }
/*
-----------------------
в dest копируются символы с source со start до end, maxlength - макс. длина dest
в дест копируется символы c source со start до end
By Aleksey
-----------------------
*/
stock strmid2(dest[], source[], start, end, maxlength = sizeof(dest)) {
for(new i = start;i < end;i++) { if (strlen2(dest) < maxlength) dest[i-start] = source[i]; else break; }
}
/*
-----------------------
Конвентирует число s из fs системы счисления в fd систему счисления
строка, все числа в строке, конвентирует из fs системы счисления в fd.
By Aleksey
-----------------------
*/
stock conv(s[], fs, fd)
{
new A, sd[256];
for (new i; i < strlen2(s); i++)
{
new a = strval2(s[i]);
if ((a >= 0) && (a <= fs)) A = A * fs + a;
else break;
}
while (A != 0)
{
format(sd,sizeof(sd),"%s%s",valstr2(A % fd),sd);
A /= fd;
}
return sd;
}
/*
-----------------------
Возвращает номер символа из таблицы ASCII
возвращает номер символа по ASCII
By Aleksey
-----------------------
*/
stock asc(S)
return S;
/*
-----------------------
Возвращает символ по номеру в таблице ASCII
возвращает символ из номера символа по ASCII
By Aleksey
-----------------------
*/
stock chr(N) {
new str[1];
format(str,sizeof(str),"%s",N);
return str;
}

