[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Не большой учебник
Дата: 28.04.2011, Четверг, 21:58:01 | Сообщение # $NUMBER
Группа: Гл. Модераторы
Сообщений: 220
Репутация: 253+
FFFUUU
Учебник по скриптингу в Pawno.
1.Инклуды.
Инклуды - это своеобразные файлы, которые содержат в себе (новые) функции. Самый главный инклуд, без которого невозможно создать ни 1 скрипт/мод, это a_samp. Синтаксис добавления в мод/скрипт инклуда:

Code
#include <a_samp>

Обычно это добавляют в начало мода.

2.Каменты (comments).
Синтаксис:
//камент
Коментарии служат для записи текста, который будет пропускаться компилятором (т.е. он не будет на них обращать внимания).
Можно создать многострочный каменты, например:
*/
камент1
камент2

/*
Всё, что находится между */ и /*, будет каментом.
3.Паблики (publics).
Зона действия паблика: в скобках. Например:

Code
public OnPlayerConnect(playerid)  
{  
//сюда пишем всё, что должен выполнять паблик  
}

Каждый паблик имеет определённые параметры.
Например: паблик onplayerconnect имеет параметрplayerid. Playerid - id player's - ид игрока.
Описание наиболее распространённых пабликов:

Code
public OnPlayerConnect(playerid) //выполняет функции, когда игрок коннектиться к серверу.  
public OnPlayerCommandText(playerid,cmdtext[]) // ...когда игрок запускает некоторую команду, например: /help  
public OnPlayerSpawn(playerid) //...когда игрок спавниться (отправляется на спавн).  
public OnPlayerDeath(playerid,killerid,reason)//...когда игрок погибает.Параметры: playerid - тот, кто сдох, killerid - тот, кто убил, reason - причина убийства.  
public OnGameModeInit() //сюда пишем обьекты, которые добавляются в gm/fs (авто, обьекты,классы игроков). Так же сюда записываются параметры мода. Наприм

//Примечание: о функциях расскажем в след. главе.

Code
public OnFilterScriptInit()//то же, что и пред. паблик, только его обычно записываются в fs.  
public OnPlayerText(playerid,text[]) // ...когда игрок пишет текст (советую не юзать =\ ).Параметры  
public OnPlayerDisconnect(playerid,reason)//когда игрок выходит из игры.Параметр reason - причина.  
public SetupPlayerForClassSelection(playerid)//cюда записывается всё, что касается выбора игрока ,когда он коннектиться (положение камеры, игрока и т.д.).

4. Функции (native functions).
Вот мы и перешли к нативным функциям! Каждая функция выполняет определённое действие и имеет определённые параметры.
Например:

Code
GivePlayerWeapon(playerid,24,100);  

Функция даёт игроку оружие.
Параметры:
playerid - ид игрока
24 - ид оружия
100 - количество патронов.
Т.к. 24 - ид дигла, то эта функция даёт игроку, вызвавшему эту функцию, дигл с 100 патронами.
//Примечание: функция должна выполняться ТОЛЬКО в паблике, имеющем параметр playerid.
Описание наиболее известных функций:

Code
SetPlayerHealth(playerid,health);//устанавливает игроку определённом здоровье. health - количество хп.  
SetPlayerArmour(playerid,armour);//устанавливает определённое количество брони. armour - количество брони.  
GivePlayerMoney(playerid.money);//даёт игроку деньги. money - количество денег.  
ResetPlayerMoney(playerid);//отбирает у игрока все деньги.  
ResetPlayerWeapon(playerid);//отбирает у игрока всё оружие  
SendClientMessage(playerid,color,"message");//отправляет мессагу игроку. color - цвет, message - текст мессаги. Кавычки оставить!  
SendClientMessageToAll(color,"message");//отправяет мессагу всем!  color - цвет, message - текст мессаги.  
AddStaticVehicle(vehicleid,x,y,z,angle,color1,color2);//cтавит тачу, которая может респавниться. vehicleid - ид машины, x,y,z - коорды, angle - угол поворота, color1, color2 - цвета.  
CreateVehicle(vehicleid,x,y,z,angle,color1,color2,respawndelay); //создаёт тачу. от того параметра respawndelay зависит респавн машины (при 0 создаётся 1 раз).Параметры аналогичны предыдущим.  
SetPlayerPos(playerid,x,y,z);//телепортит игрока в опред. место. playerid - ид игрока, x,y,z - коорды.  
GetPlayerPos(playerid,Float:x,Float:y,Float:z);//берёт коорды игрока. для функции необходимо создать новые переменные. О них позже.  
GetPlayerHealth(playerid,health);  
GetPlayerArmour(playerid,armour);  
GetPlayerMoney(playerid);//берёт значение денег игрока. Используется при проверке - о ней позже.

Полное собрание функций:

5.Переменные.
Переменные обычно создаются в начале мода при помощи new. Переменной можно присваивать опред. значение.
Например,

Code
new money=10;

Переменные можно использовать при проверках (о них позже), в параметрах функций.
Пример такой функции

Code
GivePlayerMoney(playerid,money-11);//т.к. Money - 10, то игроку будут даваться деньги 10-11 т.е. будет забираться -1$

Существуют переменные для игроков.
Пример

Code
new abank[MAX_PLAYERS]=0;


Т.е. у каждого игрока значением данной переменной является 0. НО: КАЖДОМУ игроку можно присвоить СВОЮ переменную!
Пример:

Code
abank[7]=5;

Иду 6 присвоена значение 5.
Можно добавлять/отнимать некоторое значение к переменной.
Пример:

Code
abank[playerid]+=1;//добавлено к уже существующему значению 1  
abank[playerid]-=1;// минус 1 =)  
Можно пользоваться другой функцией.  
abank[playerid]--;//-1  
abank[playerid]++;//+1

6.Проверкa (if).
Проверка выполняется при помощи if()
{//в скобках}
Если проверка выполнена успешно, то всё, что стоит в скобках, будет выполняться.
Пример:

Code
public OnPlayerConnect(playerid)//када игрок коннектиться  
{  
if(GetPlayerMoney(playerid)>10000000)//если <деньги_игрока> >10000000  
{//то  
ResetPlayerMoney(playerid);//отнимаются все деньги  
Kick(playerid);//игрока кикает  
}  
else //иначе  
{  
//ничего не происходит  
}  
}

Допустимые знаки в функции if:
>= больше или равно
<= меньше или равно
= = равно
> больше
< меньше

В функции if мона поставить больше проверок. Для этого следует писать && (и) или || (или).

Пример:

Code
public OnPlayerConnect(playerid)//када игрок коннектиться  
{  
if(GetPlayerMoney(playerid)>10000000 && !GetPlayerMoney(playerid)= =0)//если <деньги_игрока> >10000000 И если <деньги_игрока>  НЕ (!) равны нулю  
{//то  
ResetPlayerMoney(playerid);//отнимаются все деньги  
Kick(playerid);//игрока кикает  
}  
else //иначе  
{  
//ничего не происходит  
}  
}

7.Создание команд.

Команды создаются в паблике

Code
OnPlayerCommandText(playerid,cmdtext[])


Пример команды:

Code

if(strcmp(cmdtext,"/command",true)= =0)  
{  
GameTextForPlayer(playerid,"command successfully!",1000,1);//мессага "command successfully!"  
return 1;//конец команды  
}

8.Создание новых пабликов.
Паблики создаются с помощью функции forward.
Пример:

Code
forward TPublic();//записывается паблик с нулевой переменной

Вообще же паблики с нулевой переменной создаются с создержимым ввиде функции for.
Её опишем в следующей главе.

9.Функция for(..) .
Функция for обычно используется для перебора одного параметра.
Пример

Code
for(new i=0;i<MAX_PLAYERS;i++)  
{  
}  
new i=0; - создание переменной i с параметром 0  
i<MAX_PLAYERS - функция i может быть только до значения MAX_PLAYERS (256).  
i++ - преобразование, перебираются все значения i от его начального до допустимого значения.  
Пример:  
for(new i=0;i<MAX_PLAYERS;i++)  
{  
SendClientMessage(i,0xFFFFFF,"message-to-all");//i значения - от 0 до 256 => иды - от 0 до 256 => мессага отправляется ВСЕМ!  
}

10.Таймеры.
Таймеры обычно ставятся в ongamemodeinit. Пример:

Code
public OnGameModeInit()  
{  
SetTimer("TPublic",1000,1);//TPublic - название паблик, 1000 - время в миллисекундах, через которое будет выполняться функция tpublic  
//если 3й параметр - 1, то функция будет повторяться, если 0 - то функция будет выполняться только 1 раз

Автор:CESEZAR

Дата: 29.04.2011, Пятница, 13:40:00 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 245
Репутация: 125+
Для начала комментарий выполняется с помощью /* и */, а не наоборот
Дата: 29.04.2011, Пятница, 15:08:17 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 114
Репутация: 262+
Эм, Rendy_Orton, может быть хватит копипастить со всех ресурсов? Самому написать - не?
Дата: 29.04.2011, Пятница, 22:17:06 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 101
Репутация: 155+
Sanekk, вот не пофик автора то он указывает
Новечкам может пригодится.... Ну а может и нет xD
  • Страница 1 из 1
  • 1
Поиск: