Зачем в 3 функции создавать массив-то?
Вид для печати
Зачем в 3 функции создавать массив-то?
Данный перехват кода - при попытки открыть файл (если он, конечно есть), удалить данный файл из пути.
P.S: Не компилировал.PHP код:
stock File: СreateFile(const name[], filemode: mode = io_readwrite)
{
if (!fexist(name))
return -1;
return fremove(name);
}
#if defined _ALS_fopen
#undef fopen
#else
#define _ALS_fopen
#endif
#define fopen СreateFile
Как вы удалите файл, который ещё не создан? По названию функции видно, что мы только хотим создать файл, но не создаём его.
Если файла не существует, то функция будет всегда возвращать -1.
Хотя, название темы как бы намекает...
Правило форумной этики #1: прячьте длинные цитаты под спойлер, не издевайтесь над пользователями мобильных девайсов.
1. Первая функция - не взлетит, если юзать так:
Такой код с твоим перехватом даже не скомпилируется, т.к. параметр _name_ в заголовке функции тоже должен иметь атрибут "const".PHP код:
static const new_name[] = "Daniel_Cortez";
SetPlayerName(0, new_name);
Ещё пример:
Здесь "Daniel_Cortez" тоже является массивом, только объявленным в неявном виде.PHP код:
SetPlayerName(0, "Daniel_Cortez");
Твоя функция не располагает размером этого массива. Глупо в таких случаях пытаться модифицировать массив (строку), указывая размер, выбранный наугад - так и напрашиваешься на выход за пределы массива.
2. Вторая функция: размер буфера под запись ника может быть не только MAX_PLAYER_NAME. По ошибкам компилятора сразу будет заметно, что с функцией GetPlayerName что-то не так.
3. Для чего в GetPlayerSkin сделан массив? Ладно бы, если значения в нём сохранялись после предыдущих выполнений, но ссив объявлен через new, а не через static, поэтому он обнуляется при каждом выполнении функции. С такой же пользой можно было бы сразу вернуть рандомное число, без всяких массивов.
ИМХО, более-менее логичным был бы следующий подход:
4. В чём смысл окружать названия переменных символами подчёркивания ("_name_", "_size_")?PHP код:
static skins[MAX_PLAYERS] = {-1, ...};
if(skins[playerid] == -1)
skins[playerid] = random(311);
return skins[playerid];
Прогибаемся под быдлокодеров в ущерб своему коду?
Не, я просто подумал, что name, size могут быть уже использованы, поэтому накривил вот такое :sorry:
Чтобы называть глобальные переменные такими простыми именами ("i", "j", "x", "y", "z", "name", etc.), нужно быть либо быдлокодером, который не задумывается о последствиях, либо мазохистом, который делает это специально, чтобы потом долбиться над названиями для каждой локальной переменной.
Update//
И вот такой макрос
так же приведёт к зависанию. Да ещё и хрен ты этот мод скомпилируешь, пока не залезешь в диспетчер задач и не убьёшь процесс компилятораPHP код:
#define SendClientMessage(%0,%1,%2) SendClientMessage(%0,%1,%2)
Да и вот это
Гораздо эротичнее будет вот так смотретьсяPHP код:
for(new i = 0; i < 999999; ++i) print("ЛЮБОЕ СООБЩЕНИЕ!");
PHP код:
for(; ;) print("ЛЮБОЕ СООБЩЕНИЕ!");