rendered paste bodyvoid printfnt(bool center, int size, double xx, double xy, char* Text, ...){ double x = xx; double y = xy; va_list ap; if(Text == NULL) { return; } char vString[1024]; va_start(ap, Text); vsprintf(vString, Text, ap); va_end(ap); glBindTexture(GL_TEXTURE_2D, cFont); float r = 1.0f; float g = 1.0f; float b = 1.0f; int tr = -1, tg = -1, tb = -1; if(center) { double len = 0; for(int i=0; i<strlen(vString); i++) { char Temp[256]; Temp[0] = '\0'; for(int z=i; z<strlen(vString); z++) { sprintf(Temp, "%s%c", Temp, vString[z]); if(vString[z] == ')') { break; } } if(sscanf(Temp, "^s(%d, %d, %d)", &tr, &tg, &tb) == 3) { i += strlen(Temp); } else if(vString[i] == '^') { bool Colored = false; if(vString[i + 1] == 'G') { Colored = true; } else if(vString[i + 1] == 'g') { Colored = true; } else if(vString[i + 1] == 'R') { Colored = true; } else if(vString[i + 1] == 'r') { Colored = true; } else if(vString[i + 1] == 'B') { Colored = true; } else if(vString[i + 1] == 'b') { Colored = true; } else if(vString[i + 1] == 'C') { Colored = true; } else if(vString[i + 1] == 'c') { Colored = true; } else if(vString[i + 1] == 'Y') { Colored = true; } else if(vString[i + 1] == 'y') { Colored = true; } else if(vString[i + 1] == 'M') { Colored = true; } else if(vString[i + 1] == 'm') { Colored = true; } else if(vString[i + 1] == 'O') { Colored = true; } else if(vString[i + 1] == 'o') { Colored = true; } else if(vString[i + 1] == 'P') { Colored = true; } else if(vString[i + 1] == 'p') { Colored = true; } else if(vString[i + 1] == 'W') { Colored = true; } else if(vString[i + 1] == 'w') { Colored = true; } if(Colored) { i += 2; } } len += size / 1.5; } x = x - (len / 2); double ny = y - (size / 2); if(ny > 0) { y = ny; } } tr = -1; tg = -1; tb = -1; for(int i=0; i<strlen(vString); i++) { if(vString[i] == 0 || vString[i] == '\0') { break; } if(vString[i] == '^' && (vString[i+1] == 's' || vString[i+1] == 's')) { char Temp[256]; Temp[0] = '\0'; for(int z=i; z<strlen(vString); z++) { sprintf(Temp, "%s%c", Temp, vString[z]); if(vString[z] == ')') { break; } } if(sscanf(Temp, "^s(%d, %d, %d)", &tr, &tg, &tb) == 3) { if(tr != 0) { r = float(255 / tr); } else { r = 0.0f; } if(tg != 0) { g = float(255 / tg); } else { g = 0.0f; } if(tb != 0) { b = float(255 / tb); } else { b = 0.0f; } i += strlen(Temp); } } else if(vString[i] == '^') { bool Colored = false; if(vString[i + 1] == 'G') { g = 1.0f; r = 0.0f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'g') { g = 0.5f; r = 0.0f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'R') { r = 1.0f; g = 0.0f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'r') { r = 0.5f; g = 0.0f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'B') { b = 1.0f; g = 0.0f; r = 0.0f; Colored = true; } else if(vString[i + 1] == 'b') { b = 0.5f; g = 0.0f; r = 0.0f; Colored = true; } else if(vString[i + 1] == 'C') { g = 1.0f; b = 1.0f; r = 0.0f; Colored = true; } else if(vString[i + 1] == 'c') { g = 0.5f; b = 0.5f; r = 0.0f; Colored = true; } else if(vString[i + 1] == 'Y') { r = 1.0f; g = 1.0f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'y') { r = 0.5f; g = 0.5f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'M') { r = 1.0f; b = 1.0f; g = 0.0f; Colored = true; } else if(vString[i + 1] == 'm') { r = 0.5f; b = 0.5f; g = 0.0f; Colored = true; } else if(vString[i + 1] == 'O') { r = 1.0f; g = 0.5f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'o') { r = 0.5f; g = 0.25f; b = 0.0f; Colored = true; } else if(vString[i + 1] == 'P') { b = 1.0f; r = 0.5f; g = 0.0f; Colored = true; } else if(vString[i + 1] == 'p') { b = 0.5f; r = 0.25f; g = 0.0f; Colored = true; } else if(vString[i + 1] == 'W') { r = 1.0f; b = 1.0f; g = 1.0f; Colored = true; } else if(vString[i + 1] == 'w') { r = 0.5f; b = 0.5f; g = 0.5f; Colored = true; } if(Colored) { i += 2; } } if(x + ((double)size / 1.5) > 640 && y >= 480) { char Temp[1024]; Temp[0] = '\0'; sprintf(Temp, "^s(%d, %d, %d)", r * 255, g * 255, b * 255); for(int z=i; z<strlen(vString); z++) { sprintf(Temp, "%s%c", Temp, vString[z]); } for(int c=0; c<Chat.lines; c++) { if(strcmp(Chat.string[c].text, vString) == 0) { Chat.string[c].text[i] = '\0'; } } sendChat(Temp); glBindTexture(GL_TEXTURE_2D, 0); return; } glPushMatrix(); glTranslatef(x, y, 0); vString[i] -= 32; float tx = ((int)vString[i] % 16) * 16; float etx = tx + 16.0f; float ty = ((int)vString[i] / 16) * 16; float ety = ty + 16.0f; tx = tx / 256.0f; etx = etx / 256.0f; ty = ty / 256.0f; ety = ety / 256.0f; glBegin(GL_QUADS); glColor4f(r, g, b, 1.0f); glTexCoord2f(tx, ty); glVertex3i(0, 0, 0); glTexCoord2f(etx, ty); glVertex3i(0 + size, 0, 0); glTexCoord2f(etx, ety); glVertex3i(0 + size, 0 + size, 0); glTexCoord2f(tx, ety); glVertex3i(0, 0 + size, 0); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glEnd(); glPopMatrix(); x += (double)size / 1.5; vString[i] += 32; } glBindTexture(GL_TEXTURE_2D, 0); return;}