strbreak() added
This commit is contained in:
parent
74d424c2a3
commit
1fa97936ff
@ -236,6 +236,9 @@
|
|||||||
BasicRuntimeChecks="3"/>
|
BasicRuntimeChecks="3"/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\amxxlog.cpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\CCmd.cpp">
|
RelativePath="..\CCmd.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
@ -482,6 +482,61 @@ char* format_arguments(AMX *amx, int parm,int& len)
|
|||||||
return *buffer;
|
return *buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//added by BAILOPAN
|
||||||
|
//Takes a string and breaks it into a 1st param and rest params
|
||||||
|
//strbreak(String[], First[], FirstLen, Rest[], RestLen)
|
||||||
|
static cell AMX_NATIVE_CALL strbreak(AMX *amx, cell *params) /* 5 param */
|
||||||
|
{
|
||||||
|
bool quote_flag = false;
|
||||||
|
bool done_flag = false;
|
||||||
|
int left_pos = 0;
|
||||||
|
int right_pos = 0;
|
||||||
|
int l=0;
|
||||||
|
unsigned int i=0;
|
||||||
|
char hold = '"';
|
||||||
|
|
||||||
|
char *string = get_amxstring(amx, params[1], 0, l);
|
||||||
|
char *left = new char[strlen(string)+1];
|
||||||
|
char *right = new char[strlen(string)+1];
|
||||||
|
int LeftMax = params[3];
|
||||||
|
int RightMax = params[5];
|
||||||
|
|
||||||
|
for (i=0; i<strlen(string); i++) {
|
||||||
|
if (string[i] == '"') {
|
||||||
|
quote_flag = true;
|
||||||
|
} else if (string[i] == '"' && quote_flag) {
|
||||||
|
quote_flag = false;
|
||||||
|
}
|
||||||
|
if ((string[i] == ' ') && !quote_flag && !done_flag) {
|
||||||
|
done_flag = true;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (!done_flag && string[i]!='"') {
|
||||||
|
if (left_pos < LeftMax) {
|
||||||
|
left[left_pos] = string[i];
|
||||||
|
if (left[left_pos] = '\'') {
|
||||||
|
left[left_pos] = hold;
|
||||||
|
}
|
||||||
|
left_pos++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (right_pos < RightMax && string[i]!='"') {
|
||||||
|
right[right_pos] = string[i];
|
||||||
|
if (right[right_pos] == '\'') {
|
||||||
|
right[right_pos] = hold;
|
||||||
|
}
|
||||||
|
right_pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
left[left_pos] = '\0';
|
||||||
|
right[right_pos] = '\0';
|
||||||
|
set_amxstring(amx, params[2], left, params[3]);
|
||||||
|
set_amxstring(amx, params[4], right, params[5]);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL format_args(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL format_args(AMX *amx, cell *params)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
@ -532,6 +587,7 @@ AMX_NATIVE_INFO string_Natives[] = {
|
|||||||
{ "parse", parse },
|
{ "parse", parse },
|
||||||
{ "replace", replace },
|
{ "replace", replace },
|
||||||
{ "setc", setc },
|
{ "setc", setc },
|
||||||
|
{ "strbreak", strbreak},
|
||||||
{ "strtolower", strtolower },
|
{ "strtolower", strtolower },
|
||||||
{ "strtoupper", strtoupper },
|
{ "strtoupper", strtoupper },
|
||||||
{ "str_to_num", strtonum },
|
{ "str_to_num", strtonum },
|
||||||
|
@ -66,6 +66,16 @@ native setc(src[],len,ch);
|
|||||||
* Function returns number of parsed parameters. */
|
* Function returns number of parsed parameters. */
|
||||||
native parse(const text[], ... );
|
native parse(const text[], ... );
|
||||||
|
|
||||||
|
/* Gets parameters from text one at a time
|
||||||
|
It breaks a string into the first parameter and the rest of the parameters
|
||||||
|
(A left side and right side of the string)
|
||||||
|
Example: to split text: "^"This is^" the best year",
|
||||||
|
split(text, arg1, len1, arg2, len2)
|
||||||
|
arg1="^"This is^"", arg2="the best year"
|
||||||
|
This more useful than parse() because you can keep breaking
|
||||||
|
any number of arguments */
|
||||||
|
native strbreak(const text[], Left[], leftLen, Right[], rightLen);
|
||||||
|
|
||||||
/* Converts all chars in string to lower case. */
|
/* Converts all chars in string to lower case. */
|
||||||
native strtolower(string[]);
|
native strtolower(string[]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user