Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Оптимизиция мода.

Статус
В этой теме нельзя размещать новые ответы.

Barni

Компетентный
На нашем форуме вроде не было подобных тем, решил создать и не много рассказать об оптимизации мода, то что сам знаю.

Во - перевых, самая распространённая проблема это размер string'ов, очень часто начинающие скриптёры используют размер стринг
256 и более. Максимальная длинна строчки в самп 128 или 144 не понмю, вроде 128, дак зачем брать такой размер стрингов.
Если вы используете MySQL или выводите диалоговое окно, то уже можно брать большой размер желательно примерно подсчитать, при написание системы /myskill мне понадобилось, ~600 ячеек. Теперь при использовании MySQl бывате, что запрост может достигать 1024 символов, так писал Trecker в своём уроке.
Пример правельного использования string
PHP:
new ammount = 19;
new string[8]
format(string,12,"Число: %d",ammount);
Тут я использую 7 ячеек для вывода текста. Спросите почему в переменной string 8 ячеек? - Потому что последняя ячейка остаётся пустой, она завершает строку.

Ну теперь не много про переменные и Pvar'ы
Ну собственно видел в уроке у Trckaerа, там он писал, что по тестам PVar работает быстрее чем обычная переменная.
Ну честно говоря, я и сам в этом убедился. Да работает быстрее, да и мне самому как то легче стало.
Сейчас постепенно заменяю переменные на Пвары.
PHP:
SetPVarFloat(playerid, varname[], Float:float_value)
Это аналог любой переменной созданной для игрока и записи дробного числа.
playerid - Ид игрока
varname[] - Название(Имя) ПиВара
Float:float_value - Ну это уже само значения..
Пример
PHP:
new Float:Pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
SetPVarFloat(playerid, "PosX", pos[0]);
SetPVarFloat(playerid, "PosY", pos[1]);
SetPVarFloat(playerid, "PosZ", pos[2]);
Ну и тпешнем игрока
 SetPlayerPos(playerid,GetPVarFloat(playerid,"PosX"),GetPVarFloat(playerid,"PosY"),GetPVarFloat(playerid,"PosZ"));
Это мы записали в ПиВар координаты игрока.
Ну теперь тоже самое только с обычной переменной.
PHP:
new Float:pos[3];
new Float:PlayerPos[MAX_PLAYERS][3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
PlayerPos[playerid][0] = pos[1];
PlayerPos[playerid][1] = pos[2];
PlayerPos[playerid][2] = pos[3];
Тут нам пришлось создавать переменную PlayerPos с которая содержит в себе 503 ячейки: 500 - кол -во игроков, 3 - кол - во места для записи координат.


Остальные виды PVar:
PHP:
SetPVarInt(playerid, varname[], int_value)
playerid - ид игрока для которого установлен пивар
varname[] - Название Пивара
int_value - Целое число каторое будет хранится в Пиваре
PHP:
SetPVarString(playerid, varname[], string_value[])
playerid - id игрока
varname[] название Пивара
string_value[] - Текст, каторые будет хранится в Pvar'e
Ну и извелчение значений из Пивара
PHP:
GetPVarString(playerid, varname[], string_return[], len)
Извлекаем рание записанный текст.
playerid - id игркоа
varname[] - название Пивара в каторый записывали текст
string_return[] - переменная каторая запишет текст каторый был в Пиваре
len - Количество ячеек выделенное для записи текста в переменную.
Пример с wiki.pawno-info.ru:
PHP:
public OnPlayerConnect(playerid)
{
    new pmsg[128];
    GetPVarString(playerid, "msg", pmsg, 128);// Get the msg string from the PVar
    printf("Player Message: %s", pmsg);// will print 'Player Message: *message*'
    return 1;
}
PHP:
GetPVarInt(playerid, varname[])
playerid - id игркоа
varname[] - название Пивара
пример с wiki.pawno-info.ru
PHP:
public OnPlayerConnect(playerid)
{
    printf("money: %d", GetPVarInt(playerid, "money")); // get the saved value ('money')
    return 1;
}
Если public'и не вызываются таймером, то замените их на стоки и уберите forward
Пример был public
PHP:
forward Test();
public Test()
{
 return true;
}
Заменили на stock:
PHP:
stock Test()
{
return true;
}
Ну пока вроде всё:)
Кто, что знает пишите дополню.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу