5 уроков о Pawno

Описание: Основы скриптинга
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 18 апреля 2013, 12:20

5 уроков о Pawno
Автор: Jul

Урок 1

Начинаем первый урок. Скриптинг Samp происходит в Pawno. Pawno это программа компилирующая pwn (изменяемый файл будущего скрипта) в amx (сам скрипт) и для изменения первого. Открыв какой-нибудь скрипт мы видим множество надписей и цифр. Разберем что же они значат. Откроем new.pwn. Начнём разбирать самое простое.

Код: Выделить всё

public OnGameModeInit() 
{ 
print("GameModeInit()"); 
SetGameModeText
("Blank Script"); 
AddPlayerClass
(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; 


Это скобочки открытия/закрытия:

Код: Выделить всё

{ и 


Это сообщение на сам сервер:

Код: Выделить всё

printf("GameModeInit()"); 


Это установка название нашего режима:

Код: Выделить всё

SetGameModeText("Blank Script"); 


Это добавление спавна(скина). Первый 0 это ID скина, следующие 4 числа это координаты, остальные 6 нулей это оружие и их патроны:

Код: Выделить всё

AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); 


Это конец:

Код: Выделить всё

return 1


Это паблик в котором содержится все вышеперечисленное, их мы пока трогать не будем.
Каждый паблик выполняет свою задачу, можно создавать свои паблики и засунуть туда определенные действия и сделать чтобы они выполнялись в нужный момент. Это сложновато, поэтому не будем пока об этом. Можно задавать определенные действия например при подключении, спавне.

Код: Выделить всё

public OnGameModeInit() 


Найдем:

Код: Выделить всё

public OnPlayerDeath(playerid, killerid, reason) 
{ 
printf
("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason); 
return 1
; 
}


и переделаем на:

Код: Выделить всё

public OnPlayerDeath(playerid, killerid, reason) 
{ 
SendClientMessage
(playerid, 0xFFFF00AA, "Вы погибли"); 
printf
("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason); 
return 1
; 
} 
SendClientMessage
(playerid, 0xFFFF00AA, "Вы погибли");


Сработает как сообщение в чат:

Код: Выделить всё

"Вы погибли" (без кавычек) 0xFFFF00AA


Далее ищем вверху синий треугольник и жмем на него. Должна произойти компиляция и появится текст:
Pawn compiler 3.0.3367 Copyright © 1997-2005, ITB CompuPhase
Если надпись отличается то есть какие-то ошибки, в этой надписи будет указано в каких именно строчках есть таковые. Ну про это тоже позже. Дальше, заходим в папку с сервером и открываем server.CFG и меняем там строчку(и) gamemode0(или другие числа) на gamemode0(если другие числа то строчку можно удалить она нам не понадобится) new 1 и включаем samp-server.exe.
Дальше идём в папку San Andreas,открываем samp_debug.exe и там жмем connect lokalhost,мы заходим на сервер и проверяем скрипт. Если все сделано верно то после смерти (можно написать /kill) мы увдим надпись в чате "Вы умерли" (без скобок) жёлтого цвета,то все сделано верно, если нет то внимательно проверьте скрипт.

Урок 2

Делаем телепорт, вообщем простенько но может кому пригодится.

Код: Выделить всё

// Command: /Teleport 
if(strcmp(cmdtext, "/Teleport", true)==0) 
{ 
new vehicleid 
= GetPlayerVehicl eID(playerid); 
new State 
= GetPlayerState(playerid); 
if(IsPlayerInAnyVe hicle(playerid) && State == PLAYER_STATE_DR IVER) 
{ 
return SetVehiclePos
(vehicleid,Координаты X,Y.), 
GameTextForPlay er
(playerid, "~w~Ваше Сообщение после телепорта", 5000, 5); 
} 
SetPlayerPos
(playerid,Координаты X,Y.Z); 
GameTextForPlay er
(playerid, "~w~Ваше Сообщение после телепорта!", 5000, 5); 
return 1
; 
}


И всё это вставляем в в паблик:

Код: Выделить всё

public OnPlayerCommand Text(playerid, cmdtext[])


Урок 3

Расставим транспорт и респауны.

Сейчас начнем осваивать координаты, где достать куда ставить. В папке San-Andreas'а ищем файл samp_debug.exe (желательно сделать ярлык и поставить его в папку сервера) и нажать кнопку Launch Debug. Начнет загружатся игра и вы окажетесь в Los Santos. В этом режиме вы сможете находить нужные вам координаты. Используйте команды /vsel для выбора транспорта. /save <примечание> сохранение координат. Встаньте там где нужно сохранить координаты и используйте команду; F11 и F12 прокрутка скинов вперед и назад соответственно. Далее находим файл savedpositions.txt в папке San Andreas'а (тоже желательно сделать ярлык в папку с сервером) и смотрим там:

Если вы сохраняли координаты находясь пешком у вас должно быть:

Код: Выделить всё

AddPlayerClass(0,1496.7302,1438.9197,10.8281,115.1 985,0,0,0,0,0,0); // spawn           


Если в авто:

Код: Выделить всё

AddStaticVehicle(494,1505.4323,1450.9718,10.7365,3 57.1130,36,13); // hotring          


Дальше поставим координаты в наш скрипт:

Ищем:

Код: Выделить всё

public OnGameModeInit() 
{ 
print("GameModeInit()"); 
SetGameModeText
("Blank Script"); 
AddPlayerClass
(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); 
return 1
; 


и переделываем на:

Код: Выделить всё

public OnGameModeInit() 
{ 
print("GameModeInit()"); 
SetGameModeText
("Blank Script"); 
AddPlayerClass
(0, 1496.7302,1438.9197,10.8281, 269.1425, 0, 0, 0, 0, 0, 0); 
return 1
; 


Внимание: ставьте свои координаты из savedpositions.txt!

Урок 4

Цвет банд

Сначала ищем:

Код: Выделить всё

 public SetPlayerToTeam Color(playerid)


Там видим строки:

Код: Выделить всё

if(IsPlayerConnect ed(playerid)) 
 
{ 
 SetPlayerColor


Чтобы сделать цвет банды нам надо просто добавить строки:

Код: Выделить всё

SetPlayerColor((PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4),0xFFFF00AA);


Пояснения:

Код: Выделить всё

SetPlayerColor((PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4) //какая фракциия (id) будет таким цветом      

Код: Выделить всё

0xFFFF00AA//цвет      


И так несколько раз( смотря для сколько банд вы поставите)

Урок 5

Телепорт по пикапу

Где все new(переменные) пишем:

Код: Выделить всё

new teleport;


Далее в поиске ищем:

Код: Выделить всё

public OnGameModeInit()


и вставляем там:

Код: Выделить всё

teleport = CreatePickup(1274,1,x,y,z);


1274 - это ID пикапа, 1 - это тип пикапа, x,y,z - это координаты вашего местоположения пикапа

Ищем:

Код: Выделить всё

OnPlayerPickUpPickup(playerid, pickupid)


и туда вставляем:

Код: Выделить всё

if(pickupid == teleport) 
{ 
SetPlayerInteri or
(playerid, 0); 
SetPlayerPos
(playerid,x,y,z); 
SendClientMessage
(playerid, 0xFF0000FF, "Ты телепортировался в нужную точку"); 
}


Пояснения:

Код: Выделить всё

SetPlayerInteri or(playerid, 0); //этим вы задаёте интерьер игроку, 0 это улица, пишите свой интерьер    

Код: Выделить всё

SetPlayerPos(playerid,x,y,z); //этим вы задаёте местоположение игрока. XYZ это ваши координаты куда он будет телепортироваться    

Код: Выделить всё

SendClientMessage(playerid, 0xFF0000FF, "Ты телепортировался в нужную точку"); // это сообщение при телепортации (можно убрать)   
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Основы скриптинга»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость