void GScr_mysql_fetch_row(int a1) { MYSQL_RES* result = (MYSQL_RES*)Scr_GetInt(0); MYSQL_ROW row = mysql_fetch_row(result); if (!row) { Scr_AddUndefined(); return; } Scr_MakeArray(); int num = mysql_num_fields(result); for (int i = 0; i < num; i++) { if (row[i] == NULL) Scr_AddUndefined(); else Scr_AddString(row[i]); Scr_AddArray(); } }
void GScr_StrTokByLen(){ char buffer[2048]; unsigned char lastColor = '7'; char *outputstr = buffer; if(Scr_GetNumParam() != 2){ Scr_Error("Usage: StrTokByLen(<string>, <int>)"); } char* src = Scr_GetString(0); char* inputstr = src; int lineBreakIndex = 0; int i = 0; int j = 0; int overflowcnt = 2; int lSCounter = 0; int lSCounterReal = 0; int limit = Scr_GetInt(1); Scr_MakeArray(); outputstr[0] = '^'; outputstr[1] = lastColor; outputstr[2] = 0; while( inputstr[i]){ if(overflowcnt >= (sizeof(buffer) -4)){ outputstr[i] = 0; outputstr[i+1] = 0; outputstr[i+2] = 0; break; } if( inputstr[i] == ' '){ /*Save the positions of the last recent wordspacer*/ lSCounter = i; lSCounterReal = j; } if(inputstr[i] == '^' && inputstr[i+1] >= '0' && inputstr[i+1] <= '9'){ outputstr[i+2] = inputstr[i]; i++; lastColor = inputstr[i]; outputstr[i+2] = inputstr[i]; i++; overflowcnt += 2; continue; } if( j >= limit){ if(lineBreakIndex >= MAX_LINEBREAKS){ break; //Cut here - no overrun } if(lSCounterReal >= (limit / 2)){ //we have a space between words inside the upper half string length outputstr[lSCounter+2] = 0; Scr_AddString(outputstr); //setting the beginning of string in our array Scr_AddArray(); inputstr = &inputstr[lSCounter+1]; outputstr = &outputstr[i+3]; outputstr[0] = '^'; outputstr[1] = lastColor; outputstr[2] = 0; overflowcnt += 3; lSCounter = 0; lSCounterReal = 0; i = 0; j = 0; }else{ //we couln't find a space inside the upper half string length outputstr[i+2] = 0; //Exception if broken inside colorcode is needed Scr_AddString(outputstr); Scr_AddArray(); inputstr = &inputstr[i]; outputstr = &outputstr[i+3]; outputstr[0] = '^'; outputstr[1] = lastColor; outputstr[2] = 0; overflowcnt += 3; lSCounter = 0; lSCounterReal = 0; i = 0; j = 0; } lineBreakIndex++; }else{ j++; outputstr[i+2] = inputstr[i]; i++; overflowcnt++; } } if( outputstr[2] ){ outputstr[i+2] = 0; Scr_AddString(outputstr); Scr_AddArray(); } }
void GScr_StrTokByPixLen(){ char buffer[2048]; char *string = buffer; if(Scr_GetNumParam() != 2){ Scr_Error("Usage: StrTokByPixLen(<string>, <float>)"); } char* src = Scr_GetString(0); if(!src) return; else Q_strncpyz(buffer, src, sizeof(buffer)); char* countstring = string; char* lastWordSpace = string; int lineBreakIndex = 0; int lWSHalfPixelCounter = 0; int halfPixelCounter = 0; int maxHalfPixel = 2.0 * Scr_GetFloat(1); Scr_MakeArray(); while( *countstring ){ switch(*countstring){ case '\'': halfPixelCounter += 2; break; case 'i': case 'j': case 'l': case '.': case ',': case ':': case ';': case '_': case '%': halfPixelCounter += 4; break; case 'f': case 'I': case '-': case '|': halfPixelCounter += 5; break; case 't': case 'r': case '!': case '/': case '\\': case '"': halfPixelCounter += 6; break; case '(': case ')': case '[': case ']': halfPixelCounter += 7; break; case 'T': case '{': case '}': case '*': halfPixelCounter += 8; break; case 'a': case 'c': case 'g': case 'k': case 's': case 'v': case 'x': case 'z': case 'F': case 'J': case 'L': case 'Y': case 'Z': halfPixelCounter += 9; break; case ' ': /*Save the positions of the last recent wordspacer*/ lWSHalfPixelCounter = halfPixelCounter; lastWordSpace = countstring; case 'd': case 'h': case 'n': case 'A': case 'P': case 'S': case 'V': case 'X': case '?': halfPixelCounter += 10; break; case 'B': case 'D': case 'G': case 'K': case 'O': case 'Q': case 'R': case 'U': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '$': case '<': case '>': case '=': case '+': case '^': case '~': halfPixelCounter += 11; break; case 'H': case 'N': case '#': halfPixelCounter += 12; break; case 'w': case '&': halfPixelCounter += 13; break; case 'W': case 'M': case '@': halfPixelCounter += 14; break; case 'm': halfPixelCounter += 15; default: halfPixelCounter += 12; } if(halfPixelCounter >= maxHalfPixel){ if(lineBreakIndex >= MAX_LINEBREAKS){ break; //Cut here - no overrun } if(lWSHalfPixelCounter >= maxHalfPixel / 3){ //we have a space between words inside the upper half string length *lastWordSpace = 0; //terminate it Scr_AddString(string); //setting the beginning of string in our array Scr_AddArray(); string = &lastWordSpace[1]; countstring = &lastWordSpace[1]; lWSHalfPixelCounter = 0; halfPixelCounter = 0; }else{ //we couln't find a space inside the upper half string length *countstring = 0; //Mhh it is complicated to seperate the complete string here. We will just thrash one character Scr_AddString(string); Scr_AddArray(); string = &countstring[1]; countstring = &countstring[1]; lWSHalfPixelCounter = 0; halfPixelCounter = 0; } lineBreakIndex++; }else{ countstring++; } } if(*string){ Scr_AddString(string); Scr_AddArray(); } }