Почитай, что такое авторское право.
Вид для печати
Ну поставили вы его "на место", а проблему так и не решили.
Целесообразно ли будет весь мод разбить на модули, как проект GTO, только с использованием перехватов описанных в этой теме? В итоге получится набор систем в отдельных инклудах и один *.pwn файл где эти инклуды собираются:
Код:#include "a_samp"
#include "lib/a_mysql"
#include "lib/dc_cmd"
#include "lib/sscanf2"
#include "lib/foreach"
#include "lib/showformatteddialog"
#include "lib/streamer"
// Мод:
#include "config.inc"
#include "db_connect.inc"
#include "reg_log.inc"
#include "ac_hc.inc"
#include "test.inc"
#include "maps.inc"
#include "vehicle.inc"
main(){}
Разница между кодом в моде и перехватом лишь в том, что в перехватах код находится в отдельном файле. Но на стадии препроцессинга этот код всё равно будет помещён в .amx файл.
В общем, если тебе будет удобно хранить какой-то код в отдельном файле - целесообразно. На производительность перехваты никак не влияют
if(_:ac_hp__health[playerid] != _:health) Я не совсем понял для чего это _: можно поподробнее
Это указан тип данных. В данном случае он целочисленный. Это как "Float:health" и т.п. Для чего это делается? Это объяснено в самом коде:
PHP код:
// если кол-во HP изменилось с момента предыдущего обновления
// сравниваемые значения трактуются, как целочисленные, чтобы избежать лишнего вызова floatcmp
// (внимание! такой оптимизационный приём можно применять только при сравнении
// с помощью знаков "==" и "!=", но ни в коем случае не с ">", "<", ">=" или "<=")
Я хочу использовать в своем моде замену
вот так будет правильно?PHP код:
stock SetPlayerPos_protect(playerid, Float:x,Float:y,Float:z)
{
Player_Off_Protect{playerid} = 3;
Player_Pos[0][playerid] = x;
Player_Pos[1][playerid] = y;
Player_Pos[2][playerid] = z;
return SetPlayerPos(playerid, x,y,z);
}
#if defined _ALS_SetPlayerPos_protect
#undef SetPlayerPos
#else
#define _ALS_SetPlayerPos_protect
#endif
#define SetPlayerPos SetPlayerPos_protect
:to_take_umbrage: У тебя тут небольшая ошибочка.
А правильно было бы, если? (нашел при сравнении dc_anti_hp_hack.inc)Код:stock ac_hp__GetPlayerHealth(playerid, Float:&health)
{
health = ac_hp__health[playerid];
return 1;
}
#if defined _ALS_GetPlayerHealth
#undef GetPlayerHealth
#else
#define _ALS_GetPlayerHealth
#endif
#define GetPlayerHealth ac_hp__GetPlayerHealth
А то при первом варианте ошибочка вылазит, при втором ее нету.Код:stock ac_hp__GetPlayerHealth(playerid, &Float:health)
{
health = ac_hp__health[playerid];
return 1;
}
#if defined _ALS_GetPlayerHealth
#undef GetPlayerHealth
#else
#define _ALS_GetPlayerHealth
#endif
#define GetPlayerHealth ac_hp__GetPlayerHealth