Barni
Компетентный
На нашем форуме вроде не было подобных тем, решил создать и не много рассказать об оптимизации мода, то что сам знаю.
Во - перевых, самая распространённая проблема это размер string'ов, очень часто начинающие скриптёры используют размер стринг
256 и более. Максимальная длинна строчки в самп 128 или 144 не понмю, вроде 128, дак зачем брать такой размер стрингов.
Если вы используете MySQL или выводите диалоговое окно, то уже можно брать большой размер желательно примерно подсчитать, при написание системы /myskill мне понадобилось, ~600 ячеек. Теперь при использовании MySQl бывате, что запрост может достигать 1024 символов, так писал Trecker в своём уроке.
Пример правельного использования string
Тут я использую 7 ячеек для вывода текста. Спросите почему в переменной string 8 ячеек? - Потому что последняя ячейка остаётся пустой, она завершает строку.
Ну теперь не много про переменные и Pvar'ы
Ну собственно видел в уроке у Trckaerа, там он писал, что по тестам PVar работает быстрее чем обычная переменная.
Ну честно говоря, я и сам в этом убедился. Да работает быстрее, да и мне самому как то легче стало.
Сейчас постепенно заменяю переменные на Пвары.
Это аналог любой переменной созданной для игрока и записи дробного числа.
playerid - Ид игрока
varname[] - Название(Имя) ПиВара
Float:float_value - Ну это уже само значения..
Пример
Это мы записали в ПиВар координаты игрока.
Ну теперь тоже самое только с обычной переменной.
Тут нам пришлось создавать переменную PlayerPos с которая содержит в себе 503 ячейки: 500 - кол -во игроков, 3 - кол - во места для записи координат.
Остальные виды PVar:
playerid - ид игрока для которого установлен пивар
varname[] - Название Пивара
int_value - Целое число каторое будет хранится в Пиваре
playerid - id игрока
varname[] название Пивара
string_value[] - Текст, каторые будет хранится в Pvar'e
Ну и извелчение значений из Пивара
Извлекаем рание записанный текст.
playerid - id игркоа
varname[] - название Пивара в каторый записывали текст
string_return[] - переменная каторая запишет текст каторый был в Пиваре
len - Количество ячеек выделенное для записи текста в переменную.
Пример с wiki.pawno-info.ru:
playerid - id игркоа
varname[] - название Пивара
пример с wiki.pawno-info.ru
Если public'и не вызываются таймером, то замените их на стоки и уберите forward
Пример был public
Заменили на stock:
Ну пока вроде всё
Кто, что знает пишите дополню.
Во - перевых, самая распространённая проблема это размер string'ов, очень часто начинающие скриптёры используют размер стринг
256 и более. Максимальная длинна строчки в самп 128 или 144 не понмю, вроде 128, дак зачем брать такой размер стрингов.
Если вы используете MySQL или выводите диалоговое окно, то уже можно брать большой размер желательно примерно подсчитать, при написание системы /myskill мне понадобилось, ~600 ячеек. Теперь при использовании MySQl бывате, что запрост может достигать 1024 символов, так писал Trecker в своём уроке.
Пример правельного использования string
PHP:
new ammount = 19;
new string[8]
format(string,12,"Число: %d",ammount);
Ну теперь не много про переменные и 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];
Остальные виды PVar:
PHP:
SetPVarInt(playerid, varname[], int_value)
varname[] - Название Пивара
int_value - Целое число каторое будет хранится в Пиваре
PHP:
SetPVarString(playerid, varname[], string_value[])
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[])
varname[] - название Пивара
пример с wiki.pawno-info.ru
PHP:
public OnPlayerConnect(playerid)
{
printf("money: %d", GetPVarInt(playerid, "money")); // get the saved value ('money')
return 1;
}
Пример был public
PHP:
forward Test();
public Test()
{
return true;
}
PHP:
stock Test()
{
return true;
}
Кто, что знает пишите дополню.
Последнее редактирование:
