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

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

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

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

Учебник скриптинга

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

Vin_Diesel

Умник
Учебник скриптинга в pawno
автор: CESEZAR
Учебник по скриптингу в Pawno.
1. Инклуды.
Инклуды - это своеобразные файлы, которые содержат в себе (новые) функции. Самый главный инклуд, без которого невозможно создать ни 1 скрипт/мод, это a_samp. Синтаксис добавления в мод/скрипт инклуда:
Код:
#include <a_samp>
Обычно это добавляют в начало мода.
2.Каменты (comments).
Синтаксис:
//камент
Коментарии служат для записи текста, который будет пропускаться компилятором (т.е. он не будет на них обращать внимания).
Можно создать многострочный каменты, например:
*/
камент1
камент2
/*
Всё, что находится между */ и /*, будет каментом.
3.Паблики (publics).
Зона действия паблика: в скобках. Например:
Код:
public OnPlayerConnect(playerid) 
{ 
//сюда пишем всё, что должен выполнять паблик 
}
Каждый паблик имеет определённые параметры.
Например: паблик onplayerconnect имеет параметр playerid. Playerid - id player's - ид игрока.
Описание наиболее распространённых пабликов:
Код:
public OnPlayerConnect(playerid) //выполняет функции, когда игрок коннектиться к серверу. 
public OnPlayerCommandText(playerid,cmdtext[]) // ...когда игрок запускает некоторую команду, например: /help 
public OnPlayerSpawn(playerid) //...когда игрок спавниться (отправляется на спавн). 
public OnPlayerDeath(playerid,killerid,reason)//...когда игрок погибает.Параметры: playerid - тот, кто сдох, killerid - тот, кто убил, reason - причина убийства. 
public OnGameModeInit() //сюда пишем обьекты, которые добавляются в gm/fs (авто, обьекты,классы игроков). Так же сюда записываются параметры мода. Например, UsePlayerPedAnims();
//Примечание: о функциях расскажем в след. главе.
Код:
public OnFilterScriptInit()//то же, что и пред. паблик, только его обычно записываются в fs. 
public OnPlayerText(playerid,text[]) // ...когда игрок пишет текст (советую не юзать =\ ).Параметры 
public OnPlayerDisconnect(playerid,reason)//когда игрок выходит из игры.Параметр reason - причина. 
public SetupPlayerForClassSelection(playerid)//cюда записывается всё, что касается выбора игрока ,когда он коннектиться (положение камеры, игрока и т.д.).
4. Функции (native functions).
Вот мы и перешли к нативным функциям! Каждая функция выполняет определённое действие и имеет определённые параметры.
Например:
Код:
GivePlayerWeapon(playerid,24,100);
Функция даёт игроку оружие.
Параметры:
playerid - ид игрока
24 - ид оружия
100 - количество патронов.
Т.к. 24 - ид дигла, то эта функция даёт игроку, вызвавшему эту функцию, дигл с 100 патронами.
//Примечание: функция должна выполняться ТОЛЬКО в паблике, имеющем параметр playerid.
Описание наиболее известных функций:
Код:
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. Переменной можно присваивать опред. значение.
Например,
Код:
new money=10;
Переменные можно использовать при проверках (о них позже), в параметрах функций.
Пример такой функции
Код:
GivePlayerMoney(playerid,money-11);//т.к. Money - 10, то игроку будут даваться деньги 10-11 т.е. будет забираться -1$
Существуют переменные для игроков.
Пример
Код:
new abank[MAX_PLAYERS]=0;
Т.е. у каждого игрока значением данной переменной является 0. НО: КАЖДОМУ игроку можно присвоить СВОЮ переменную!
Пример:
Код:
abank[7]=5;
Иду 6 присвоена значение 5.
Можно добавлять/отнимать некоторое значение к переменной.
Пример:
Код:
abank[playerid]+=1;//добавлено к уже существующему значению 1 
abank[playerid]-=1;// минус 1 =) 
Можно пользоваться другой функцией. 
abank[playerid]--;//-1 
abank[playerid]++;//+1
6.Проверкa (if).
Проверка выполняется при помощи if()
{//в скобках}
Если проверка выполнена успешно, то всё, что стоит в скобках, будет выполняться.
Пример:
Код:
public OnPlayerConnect(playerid)//када игрок коннектиться 
{ 
if(GetPlayerMoney(playerid)>10000000)//если <деньги_игрока> >10000000 
{//то 
ResetPlayerMoney(playerid);//отнимаются все деньги 
Kick(playerid);//игрока кикает 
} 
else //иначе 
{ 
//ничего не происходит 
} 
}
Допустимые знаки в функции if:
>= больше или равно
<= меньше или равно
= = равно
> больше
< меньше

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

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

Команды создаются в паблике
Код:
 OnPlayerCommandText(playerid,cmdtext[])
Пример команды:
Код:
if(strcmp(cmdtext,"/command",true)= =0) 
{ 
GameTextForPlayer(playerid,"command successfully!",1000,1);//мессага "command successfully!" 
return 1;//конец команды 
}
8.Создание новых пабликов.
Паблики создаются с помощью функции forward.
Пример:
Код:
forward TPublic();//записывается паблик с нулевой переменной
Вообще же паблики с нулевой переменной создаются с создержимым ввиде функции for.
Её опишем в следующей главе.

9.Функция for(..) .
Функция for обычно используется для перебора одного параметра.
Пример
Код:
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. Пример:
Код:
public OnGameModeInit() 
{ 
SetTimer("TPublic",1000,1);//TPublic - название паблик, 1000 - время в миллисекундах, через которое будет выполняться функция tpublic 
//если 3й параметр - 1, то функция будет повторяться, если 0 - то функция будет выполняться только 1 раз
}
Автор точно не я!
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу