Чёрд, да если верить таким отзывам, из-за меня на Pro-Pawn одни проблемы.
Что ж, расставлю все точки над "i".
Ещё в прошлом году я придумал такой трюк с подсчётом размера строки, чтобы, как многие из вас уже догадались, уменьшить используемый серверов объём стекового пространства.
Я думал, этой программой уже никто не пользуется.
Да, у топикстартера в 1-м варианте код выглядит раздутым, и учитывая скудные возможности препроцессора в компиляторе Pawn, вряд ли с этим можно что-то сделать.
Но в то же время такой код куда более универсален. Если нужно изменить содержимое форматной строки, придётся... всего лишь изменить это содержимое - остальную работу компилятор сделает сам, не нужно ничего пересчитывать.
IMO, именно таким и должен быть качественный код.
Если же полагаться на сторонние программы вроде SimplePawn, каждый раз придётся выискивать её, чтобы пересчитать всё заново.
По сути всё сводится к "хочешь поменять текст? живо ищи калькулятор! или SimplePawn!" -_-
Пожалуй, это и оказалось основной причиной прекращения дальнейшей разработки той программы.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Rasta (26.08.2014)
Daniel_Cortez, Да ема е. Я уже почти все команды переписал...
Мне это не очень важно, учитывая, если код качественный и обрабатывается быстрее.Да, у топикстартера в 1-м варианте код выглядит раздутым
Теперь я вообще не понимаю, что всё таки лучше? Мнения расходятся...
Никто не ответит? Просто остановился на половине, а дальше не знаю как именно писать. Буду благодарен.
Я в свое время предпочел такой вариант. Как предложил ^_^:
Просто, понятно и работает как часики. А гнаться за милисекундами, как уже говорилось много раз не стоит.PHP код:
CMD:freeze(playerid, params[])
{
new strcmd[59];//Вместо потерянной памяти из сегмента данных используем стек, при этом теряем 0 байтов
if(PInfo[playerid][pAdmin] < 1) return Message(playerid, COLOR_RED,"(Ошибка): {FF6666}Вам недоступна данная команда.");
else if(sscanf(params, "i", params[0])) return Message(playerid, COLOR_GREEN,"(Используйте): {669966}/freeze [ID Player]");
else if(!IsPlayerConnected(params[0])) return Message(playerid, COLOR_RED,"(Ошибка): {FF6666}Игрока нет на сервере.");
format(strcmd, sizeof(strcmd), "Администратор %s(%d) Вас заморозил.", Nick(playerid));
Message(params[0], COLOR_RED, strcmd);
format(strcmd, sizeof(strcmd), "Вы заморозили игрока %s(%d).", Nick(params[0]));
Message(playerid, COLOR_RED, strcmd);
return TogglePlayerControllable(params[0], false);
}
"Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.
Критик должен быть готов и способен в любой момент и по первому требованию занять место критикуемого им и выполнять его дело продуктивно и компетентно. В противном случае критика превращается в наглую, самодовлеющую силу и становится тормозом на пути прогресса. (с) AXE
Подобного слогана придерживался.Раз не погнался, два не погнался, и тут вдруг твой мод оказывается RLS'ом.
Я бы предпочёл 1-й способ, так как от начала с ним работаю.
Суть не в этом.
Если 1-й способ будет считаться медленнее 2-ого, но качественным и универсальным, то считается ли он эффективным?
Или же всё в порядке, оба одинаковы и выбирать уже на свой вкус?
Я так точного ответа и не услышал. Можете просто мне ответить, что считается лучшим вариантом?
- - - Добавлено - - -
Так как, после 3-ого поста, я переписал практически половину своего кода.
Не очень-то увлекает меня переписывать код по-несколько раз. Просто, хочу точно закрепить у себя в голове что лучше и, в дальнейшем, придерживаться этих способов, естественно, до появления новых "продвинутых" :)
Вопрос не решён.
Последний раз редактировалось Salvacore; 27.08.2014 в 05:05.
Rasta (27.08.2014)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)