Главное меню





Главная страница Все файлы Полезные статьи Форум Новости Не нравитса сайт? CS:Source/CS:GO Готовые сервера для NEW css Готовые сервера old css v34 Звуки Карты css Карты CS:GO Плагины sourcemod Патчи Обновления Модели оружия Модели Игроков руки / перчатки Программы Фоны/ GUI Cкрипты спреи скачать CS Source читы ______________________________ Скины Админа Модели игроков (T+CT) Скины Zombie Заложники ______________________________









Мониторинг сервов





Мониторинг серверов









Чат















Связь с Гл.Админом





Выдыхай

Имя: дмитрий
скайп: awp-servers










Статистика
















Оптимизация кода (советы, помощь) - Форум - unicalsoft-css | сервер - Описание сайта



[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Оптимизация кода (советы, помощь)
выдыхай
Offline
Дата: Суббота, 03.08.2013, 10:45 | Сообщение # 1
Постов: 64
Задачу можно решить многими способами, но нужно уметь: 
Код
- Укорачивать и оптимизировать код   
- Не использовать лишнее (например, зачем создавать переменную, если она может не понадобиться)   
- Не использовать часто одинаковый код (создавайте функции)   
- Не злоупотреблять такими циклами, как OnGameFrame, OnPlayerRunCmd (даже избегать их)   
- Не создавать "утечку памяти" (закрывать все ненужные Handle и т.д.)   
- Понимать порядок выполнения команд и событий   
- Делать нужные проверки (например, перед выдачей оружия игроку: он точно на сервере? жив? и т.д.)   
- Не делать ненужные/лишние/повторные проверки в условиях   
- Указывать массивам правильный размер (не создавать много лишних ячеек)   
- И др.. (скажите, если я что-то упустил)


Если вы не уверены в коде или сомневаетесь, как что-то лучше сделать, можете писать в этой теме.  
Некоторые Советы: 
Код
// Так делать глупо:   
if (GetClientTeam(client) == 2) ...   
else if (GetClientTeam(client) == 3) ...   

// Зачем повторно получать команду игрока, если мы уже сделали это?   
// Сохраните её в переменной и уже с ней работайте:   
new team = GetClientTeam(client);   
if (team == 2) ...   
else if (team == 3) ...   

// Если вам нужно сделать только одно сравнение, то создавать переменную нет смысла:   
if (GetClientTeam(client) == 2) ...
На счет массивов:  
Если вы создаёте массив внутри функции и пока не знаете, что в нём будет, то используйте приставку decl, а не new, тем более если это делается в циклах. Приставка decl лишь готовит переменную, которая пока что содержит хлам, т.к. в ней нет никакого значения. Если вы попробуете вывести значение такой переменной, например, в PrintToServer, то сервер может рухнуть - нужно быть уверенным, что в ней есть значение.  
На счет строк: 
Код
// Готовим переменную для хранения строки   
decl String:name[45];   

// Вот так можно обезопасить строку.   
// Это полезно, если хотим работать с переменной, но не уверены, есть ли в ней значение.   
name[0] = '\0';     

// Команда для примера:   
GetEntPropString(index, Prop_Data, "m_iName", name, 45);   

// И ниже уже можно работать с этой переменной, не беспокоясь   
if (name[0] == '\0') .. // строка пустая
Прикрепления:




Сообщение отредактировал
[ (RU) ]
выдыхай
Offline
Дата: Суббота, 03.08.2013, 10:45 | Сообщение # 2
Постов: 64
На счет if и else if:  
Кодnew x = 5;  

// так плохо:  

if (x == 2)  
{  
      // код  
}  
if (x == 5)  
{  
      // код  
}  

// так хорошо:  

if (x == 2)  
{  
      // код  
}  
else if (x == 5)  
{  
      // код  
}  
else if (x == 7)  
{  
      // код  
}  
else  
{  
      // код  
}

Если вы используете цикл forwhile и тд, то:  
- если ипользуете переменные внутри цикла, то объявляйте их перед циклом, а не внутри  
- обрывайте цикл с помощью команд breakreturn, если он уже не нужен 
Кодpublic OnGameFrame()  
{  
      static x = 0;  
      PrintToServer("%d", ++x);  
}Событие вызывается 66 раз в сек или 33/100 - зависит от tickrate.
Прикрепления:




Сообщение отредактировал
[ (RU) ]
  • Страница 1 из 1
  • 1
Поиск:








Профиль















Время















CW





Победы(0)
Поражения (0)
Ничьи (0)

Забить CW










В команде:





-=AWP=-
ХŦŘẾŁŁÃ♫♫
IIIypuk
ТУТ ВАШ НИК
ТУТ ВАШ НИК
Заявка на вступление в команду











Поиск















Наш сервер:





Мониторинг серверов Counter-Strike: Source










                                                                                                                                 
                                                                                                                            Мы принимаем Perfect money
       
                                          
                     
              
Конструктор сайтовuCoz