Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
- Алло, 2016 как слышно?
- Мы тут для констант используем перечисляемый тип.
Советую посмотреть реализацию enum'ов в C/C++/C#/Java, зачем оно и как юзаться.
И таким образом ты конструируешь костыль и велосипед. Ты мне даешь гарантии, что скриптер писавший код в 03:00 по ошибке не забудет в enum инициализировать константу? (А перечисление идет с нуля)
Пример кода, при котором скриптер просто сфлится:
Да, да я опять прыгнуть выше головы. А, то сейчас налетят голодные волки.PHP код:
enum
{
MAX_PLAYER_PASSWORD = 32,
MAX_PLAYER_EMAIL = 64,
MAX_PLAYER_CARS,
MAX_PLAYER_HOUSE = 512
};
main()
{
printf("MAX_PLAYER_PASSWORD = %d", MAX_PLAYER_PASSWORD);
printf("MAX_PLAYER_EMAIL = %d", MAX_PLAYER_EMAIL);
printf("MAX_PLAYER_CARS = %d", MAX_PLAYER_CARS);
printf("MAX_PLAYER_HOUSE = %d", MAX_PLAYER_HOUSE);
}
Хороший пример кода с enum - месяца года. Устанавливаешь январю = 1, а дальше автоматизированно будет (только, прописать название констант)
Последний раз редактировалось $continue$; 25.06.2016 в 04:22.
Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
По поводу дефайна согласен, но с константой, если объявлять её с помощью const - компилятор "напомнит".
Кстати, если посмотреть на стандартные инклуды Pawn (core.inc, string.inc, float.inc), там ни одной константы не объявлено через #define, только через const (и ещё некоторые через enum, где это уместно).
... в том, что выбрал способ, с которым легко ошибиться.
Нет, ну это уже просто смешно. Может вы ещё предложите не делать в коде ни единой ошибки? Чтобы прямо вообще ни одной и всё компилировалось с первой попытки?
А оно и было очевидно с самого начала, что "красота" и "необычность" метода для вас важнее, чем надёжность. Ваша отговорка из предыдущей цитаты только подтверждает это.
Именно поэтому я даже и не рассчитываю вас переубедить - но всё же надеюсь, что у других, кто смотрит эту тему, хватит чувства здравого смысла, чтобы не повторять ваших ошибок.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Хах. Были бы ошибки, ибо я лично не использовал этот способ до сего.
Красота и необычность не противоречит здесь надёжности, так что про важность первого тоже неверно.
Если кому-то просто непривычно - господи, пусть использует то, что ему нравится, а то, что не нравится - просто не использует.
Я лично не увидел ни одного реального недостатка этого, кроме разве что использования enum'а немного не по назначению. Но существенного от этого ничего не произойдёт, а если так кому-то ещё и удобно - то причины не использовать это нет вообще.
П.с. Каким образом написали в core, string и float роли не играет. Опять-же это дело того, кто писал.
Последний раз редактировалось Nexius_Tailer; 25.06.2016 в 16:48.
Не хотите постоянно проверять обновления моих скриптов?
Подключите его последним, после всех остальных
Nexius's Update Checker
После подсчетов по этому методу , стала некорректно работать команда, да и не только команда. Код, где используется static const
PHP код:
CMD:engine(playerid,params[])
{
if(!IsPlayerLogged{playerid}) return SendMe(playerid,COLOR_GREY,!" * [A] - Сначала нужно авторизоваться!");
if(GetPlayerState(playerid) == 2 && IsPlayerInAnyVehicle(playerid))
{
if(IsVehicleBike(GetPlayerVehicleID(playerid))) return false;
if(!Engine[GetPlayerVehicleID(playerid)])
{
if(Fuel[GetPlayerVehicleID(playerid)] > 0.0)
{
if(!EngineTime[playerid])
{
new Float:vHealth;
GetVehicleHealth(GetPlayerVehicleID(playerid),vHealth);
if(OrgCarInfo[GetPlayerVehicleID(playerid)][orgcFrac] == 15 && (PVar::GetInt(playerid,"Driving") == 4 || PVar::GetInt(playerid,"Driving") == 6))
{
if(!SeatBelt{playerid} && !IsVehicleA(GetPlayerVehicleID(playerid)))
{
SendMe(playerid,COLOR_GREY,!" * Перед началом движения вы обязаны пристегнуть ремень безопасности. Вы провалили экзамен!");
PVar::SetInt(playerid,"Driving",0);
acc_RemovePlayerFromVehicle(playerid);
DisablePlayerRaceCheckpoint(playerid);
SetEngineOnOff(GetPlayerVehicleID(playerid),false);
AccountInfo[playerid][LoadCharacters{playerid}][acTestAS] = 0;
licCP{playerid} = 0;
licerror{playerid} = 0;
lictesttime{playerid} = 0;
return false;
}
}
printf("заводим");
EngineTime[playerid] = 6;
FreezePlayer(playerid);
GameTextForPlayer(playerid, "~w~€AЊYCKAEM ѓ‹…‚A¦E‡’...", 5000, 4);
static const frm_str[]=" * %s пытается запустить двигатель.";
noinit:string[sizeof(frm_str)+(-2+MAX_PLAYER_NAME)];
format(string,sizeof(string),frm_str,PlayerName(playerid));
return ProxDetector(playerid,5,string,COLOR_PURPLE);
}
else return SendMe(playerid,COLOR_GREY,!" * Нельзя так часто заводить двигатель!");
}
else return SendMe(playerid,COLOR_GREY,!" * Бензобак пуст. Вызовите механиков!");
}
else
{
printf("незаводим");
static const frm_engine[]=" * %s заглушил двигатель.";
noinit:string[sizeof(frm_engine)+(-2+MAX_PLAYER_NAME)];
format(string,sizeof(string),frm_engine,PlayerName(playerid));
ProxDetector(playerid,5,string,COLOR_PURPLE);
SetEngineOnOff(GetPlayerVehicleID(playerid),false);
EngineTime[playerid] = 0;
}
}
return true;
}
[Anticheat]___Invisible Fly Hack
[Anticheat]____Weapon/Ammo Hack
[Function]______ResetPlayerWeaponSlot
[Function]_______FIX_SetPlayerAmmo
[ServerMod]______TDM | Zombie Apokalypse
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)