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; }