Если уж решил такую вермишель ради одной строки делать (хотя, имхо, от такой реализации, в данном случае, больше вреда, чем пользы):
static const set_skin[] = "{87CEEB}Выполнено: {F6F6F6}Вы установили игроку {FF9900}%s[%d] {FFFF00}%s {F6F6F6}скин под номером {FF9900}%d{F6F6F6}."; static str[sizeof(set_skin) + ((-2 * 4) + sizeof(player_name) + 4 + 10 + 3) +1]; format(str, sizeof(str), set_skin, player_name, player_id, parameter ? "временный" : "постоянный", modelid);
То и строки "временный"/"постоянный" вынес бы в static-массивы, чтоб сразу учитывать размер наибольшей строки в формуле для "str". Да и формула сейчас неправильная, ибо в 0.3DL ID добавленных скинов может быть длиной в 5 символов, а не 3.
Так же непонятно зачем тут функция SetPlayerSkinEx (у которой довольно сомнительные наименования параметров). Выносить код в отдельную функцию и потом использовать эту функцию всего один раз - сомнительная идея.
Ну и в запросе есть лишние кавычки + "LIMIT 1" там совершенно ни к чему, если условие запроса проходит по AI-полю.