03.01.2010, 12:41
еще парочка похожих функций, только для извлечения целых и дробных чисел
iparam
fparam
скрипт для проверки - http://pastebin.mozilla-russia.org/103690
iparam
Code:
/* Выдёргивает из строки source[], разделенную пробелами, подстроку под указанным индексом index и возвращает ее числовое значение При вызове этой функции в ОЗУ выделяется не более 16 временных pawn ячеек (64 байта) ПРИМЕРЫ new targetPlayerID, sendMoney, source[] = "/givecash 17 50000"; targetPlayerID = iparam( source, 1 ); // в targetPlayerID будет помещено 17 sendMoney = iparam( source, 2 ); // в sendMoney будет помещено 50000 */ stock iparam ( source[], index = 0 ) { for ( new dest[12], cur, pre, i = -1; ; cur++ ) { switch ( source[cur] ) { case ' ' : { if ( ++i == index ) { strmid( dest, source, pre, cur, 12 ); return strval(dest); } pre = cur + 1; } case 0 : { if ( ++i == index ) strmid( dest, source, pre, cur, 12 ); return strval(dest); } } } }
Code:
/* Выдёргивает из строки source[], разделенную пробелами, подстроку под указанным индексом index и возвращает ее дробное значение При вызове этой функции в ОЗУ выделяется не более 44 временных pawn ячеек (220 байт) ПРИМЕРЫ new targetPlayerID, Float:newHealth, source[] = "/sethealth 12 77.0"; targetPlayerID = iparam( source, 1 ); // в targetPlayerID будет помещено 12 newHealth = fparam( source, 2 ); // в sendMoney будет помещено 77.0 */ stock Float:fparam ( source[], index = 0 ) { for ( new dest[40], cur, pre, i = -1; ; cur++ ) { switch ( source[cur] ) { case ' ' : { if ( ++i == index ) { strmid( dest, source, pre, cur, 40 ); return floatstr(dest); } pre = cur + 1; } case 0 : { if ( ++i == index ) strmid( dest, source, pre, cur, 40 ); return floatstr(dest); } } } }