Half-Life и Adrenaline Gamer форум http://aghl.ru/forum/ |
|
KORD_12.7 прокомментируй )) http://aghl.ru/forum/viewtopic.php?f=20&t=366 |
Страница 1 из 1 |
Автор: | Turanga_Leela [ 01 май 2011, 19:28 ] |
Заголовок сообщения: | KORD_12.7 прокомментируй )) |
Вопросы касаются твоей оптимизации и оптимизации в общем. 1й - почему ты переправил "static" на "new" в обозначениях "trail" (если не ошибаюсь для оптимизации кода, для переменных имеющих по сути не изменяемое значение, лучше использовать "static"). 2й какой смысл "return PLUGIN_CONTINUE" ? "return HAM_IGNORED" ? если все работало норм )). 3й Зачем обьявлять cvars через new ? если define пашет норм ( меньше переменных в памяти ) 4й тут есть замечание по поводу работы плагина - на стрелу арбалета действует rendering хотя не должен ( нет в этом смысла стрела летит быстро и этого практически не заметно, за стрелой нету следа а так же нет следа за гранатами ) ... А насчет функции - set_rendering 5 баллов и еще насчет конечного размера: 4.88кб мой, 5.13кб твой ) |
Автор: | Lev [ 02 май 2011, 02:50 ] |
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) |
1. Код: static satchel_trail, grenade_trail, snark_trail, bolt_trail Код: new g_satchel_trail, g_grenade_trail, g_snark_trail, g_bolt_trailАбсолютно ничем не различаются, т.к. объявление происходит на уровне файла (не в функции). Поэтому лучше использовать обычное "new". Q: Что такое "static"? A: Это глобальная переменная (т.е. время её жизни равняется времени жизни плагина), но имеющая область видимости равную блоку в котором она объявлена. Примеры: Код: new g_i1; // Глобальная переменная: время жизни = время жизни плагина; область видимости = весь файл.Т.е. разница, в том, что static создается один раз, а new каждый раз при входе в блок. И надо выбирать по критерию: иcпользуемая память / нагрузка на процессор от частоты создания. Если переменная часто используется (функция часто вызывается), то имеет смысл объявить её static. Второе различие, вытекающее из разового создания: значение переменной сохраняется между вызовами функции. Т.е. по сути получается глобальная переменная с локальной областью видимости. Имеет смысл изменить объявление Код: new classname[32], sprite, lifetime, skipна Код: static classname[32], sprite, lifetime, skipтак как функция обработчик spawn будет использоваться часто. 2. У каждой функции есть значение возврата по умолчанию - 0. Т.е. если не написать Код: return <value>;или написать просто Код: return;, то функция вернет ноль. Если посмотреть инклюдники, то увидим: Код: #define PLUGIN_CONTINUE 0 /* Results returned by public functions */Т.е. возврат равнозначен возвращению 0, использованию return без значения, или просто опусканию оператора return. Код: /**Тоже самое и в случае Ham Sandwich. В его случае и 0 и 1 равнозначны. Т.е. их можно не писать. Код: public plugin_init()Тут Корд развоевался просто. Q: Бывают ли случаи когда надо в конце функции писать "return PLUGIN_CONTINUE"? A: Ага: Код: public Function(id)Если не написать в конце return со значением, то АМХХ не даст скомпилять плагин. 3. Код: #define trails_cvar get_cvar_num("amx_HL_trails")В данном случае использовался доступ с получением адреса квара по названию квара (операции со списками строк в движке). Код: new g_cvarTrails;В этом случае, при регистрации квара, получается адрес значения квара в памяти, и, в последуещем, неспоредственное получение значения по адресу - в разы быстрее. Почитай про pcvars. 4. Не понял что там работает и что нет. По коду, вроде бы, нет разницы между твоей и версией Корда. Насчет размера плагина: лучше сохранять легко читаемое форматирование, чем экономить символы. Я ведь могу этот плагин ужать в 1 кб, но читать его будет, мягко говоря, нелегко. хД PS А, и забыл: я же не Корд, но, вобщем, удалять уж не буду... |
Автор: | KORD_12.7 [ 02 май 2011, 06:42 ] | ||
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) | ||
По 1, 2 и 3 согласен во всем со Львом 4. My bad Класснейм у стрелы арбалета не тот. Код: equali(classname, "crossbow_bolt")---> Код: equali(classname, "bolt") И еще нужен post хук спауна. Код: RegisterHam(Ham_Spawn, g_classes[i], "fw_EntSpawn")---> Код: RegisterHam(Ham_Spawn, g_classes[i], "fw_EntSpawn", 1)
|
Автор: | Turanga_Leela [ 02 май 2011, 14:05 ] |
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) |
Огромное спасибо за развёрнутый ответ , просто горы нереально полезной информации. Меня сильно заинтересовали твои слова Lev: Цитата: Насчет размера плагина: лучше сохранять легко читаемое форматирование, чем экономить символы. Я ведь могу этот плагин ужать в 1 кб, но читать его будет, мягко говоря, нелегко. хД Если появится возможность продемонстрировать - буду очень рад .KORD_12.7 - теперь всё работает норм )) |
Автор: | Lev [ 02 май 2011, 17:50 ] | ||
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) | ||
Turanga_Leela писал(а): Lev, KORD_12.7 Используй тыкание на имя пользователя над аватаром - вставляет ник пользователя в текст сообщения в более привычном виде: Turanga_LeelaTuranga_Leela писал(а): Если появится возможность продемонстрировать - буду очень рад Никогда так не делайте.
|
Автор: | KORD_12.7 [ 02 май 2011, 17:53 ] |
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) |
Lev писал(а): Никогда так не делайте. Не будем
|
Автор: | Turanga_Leela [ 02 май 2011, 19:22 ] |
Заголовок сообщения: | Re: KORD_12.7 прокомментируй )) |
Про сжатие в 1кб я думал речь идет о amxx, но все же зачет |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |