Учимся пользоваться PVar'ами

Description: Основы скриптинга
Moderator: SJplayer

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1612
Joined: 5 Apr 2013
With us: 11 years 5 months

#1by Дим » 23 May 2013, 23:22

Учимся пользоваться PVar'ами
Автор: frog163

Плюсы: Очень легко редактируются и не засоряют код мода, в отличии от переменных и массивов, если вы создали PVar в моде, то он может использоваться и в подгруженных fs и наоборот, при коннекте игрока они автоматически создаются, а при выходе удаляются.

Минусы: Вероятно вам будет неудобно со строковым типом (т.к. функция имеет вид GetPVarString(playerid,pvar[],output[],symbols), однако кому-как, как показывали чьи-то тесты на форуме sa-mp.com, они немного медленнее переменных (однако тесты OFFREAL'а показывают что быстрее, а со строковым типом вдвое быстрее).

Теперь приступим непосредственно к изучению функций.

Начнем с функций редактирования /создания PVar'ов.

Как вы уже знаете в pawn скриптинге есть четыре типа переменных - целое число(integer), вещественный тип(float), строковый тип(string) и boolean(true и false), все эти типы кроме boolean доступны в PVar'ах. Вот функции:

Code: Select all

 SetPVarInt(playerid,pvar[],int);//создает и редактирует PVar со значением целого числа 
 
SetPVarFloat(playerid,pvar[],float);//создает и редактирует PVar с вещественным типом 
 
SetPVarString(playerid,pvar[],string[]);//создает и редактирует PVar со строковым типом 


Если вы хотите создать PVar, то вам надо применить функцию SetPVarInt, SetPVarFloat или SetPVarString, также при создании, значение PVar'a сделается таким, какое вы указали при использовании данных функций.

Примеры:

Code: Select all

 SetPVarInt(playerid,"TestInt",1);//создаем PVar со значением целого числа и присваиваем ему значение 1 
 
SetPVarFloat(playerid,"TestFloat",6.1);//создаем PVar со значением дробного числа и присваиваем ему значение 6.1 
 
SetPVarString(playerid,"TestString","Hello World!");//создаем PVar с строковым типом и записываем в него текст Hello World! 


Редактируются PVar'ы абсолютно теми же функциями. Как вы уже заметили название PVar'a пишется в кавычках (" "), что позволяет нам вызывать данные PVar'ы в скриптах подгруженных к серверу из мода или из скриптов в моде (об этом говорилось раньше).

Теперь перейдем к функциям получения значения PVar'a.

Список данных функций:

Code: Select all

GetPVarInt(playerid,pvar[]);//возвращает значение PVar'a pvar[] 
 
GetPVarFloat(playerid,pvar[]);//возвращает значение PVar'a pvar[] 
 
GetPVarString(playerid,pvar[],output[],symbols);//здесь немного сложнее, записывает значение PVar'a pvar[] в переменную со строковым типом output[] (так как по некоторым причинам функции в pawn не должны возвращать строки), symbols - это сколько символов вы хотели бы записать в переменную output. 


Вот примеры использования:

Code: Select all

/*Если значение PVar'a TestInt равно 2, выводим в консоль его значение(т.е 2)*/ 
 
new testint GetPVarInt(playerid,"TestInt");//для удобства создаем переменную 
 
if(testint == 2) print(testint);//делаем проверку 

 /*Тоже самое только с Float*/ 
 
new Float:testfloat GetPVarFloat(playerid,"TestFloat");//для удобства создаем переменную 
 
if(testfloat == 6.1) print(testfloat);//делаем проверку 

 /*А теперь немного сложнее, делаем операцию с String значением, как вы помните мы присвоили PVar'у TestString значение: Hello World!*/ 
 
new output[64];//делаем переменную в которую будет записано значением PVar'а 
 
GetPVarString(playerid,"TestString",output,sizeof(output));//геттим значение PVar'а 
 
if(strcmp(output,"Hello World!",true,13)) printf(output);//если находим в output Hello World! выводим в консоль output 


Но это только примеры, вы же можете использовать данные функции как захотите.

Также хочу заметить обделенные нами функции. Одна из них DeletePVar.

Синтаксис и значение функции думаю понятно.

Code: Select all

DeletePVar(playerid,pvar[]);  


Удаляем у указанного игрока playerid PVar pvar[].

Далее идет функция

Code: Select all

GetPVarType(playeridpvar[]); 


Возвращает тип указанного PVar'a.

Функции:

GetPVarsUpperIndex

Code: Select all

new id GetPVarsUpperIndex(playerid);  


Функция узнает имя пвара по ее иду:

Code: Select all

new str[256];  
 
GetPVarNameAtIndex(playerididstr256);  


Вот так их можно применить:

Code: Select all

 new id GetPVarsUpperIndex(playerid);  
     for(new 
fidf++)  
     {  
         new 
str[256];  
         
GetPVarNameAtIndex(playerididstr256);  
         switch(
GetPVarType(playeridstr))  
         {  
             case 
PLAYER_VARTYPE_STRINGfGetPVarString(playeridstr);  
             case 
PLAYER_VARTYPE_INTGetPVarInt(playeridstr);  
             case 
PLAYER_VARTYPE_FLOATGetPVarFloat(playeridstr);  
             default: continue;  
         }   
[center]i love you [s]mxIni[/s] Mysql[/center]


Return to “Основы скриптинга”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest