5 уроков о Pawno

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

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

#1by Дим » 18 Apr 2013, 12:20

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

Урок 1

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

Code: Select all

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; 


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

Code: Select all

{ и 


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

Code: Select all

printf("GameModeInit()"); 


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

Code: Select all

SetGameModeText("Blank Script"); 


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

Code: Select all

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


Это конец:

Code: Select all

return 1


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

Code: Select all

public OnGameModeInit() 


Найдем:

Code: Select all

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


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

Code: Select all

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


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

Code: Select all

"Вы погибли" (без кавычек) 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

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

Code: Select all

// 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
; 
}


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

Code: Select all

public OnPlayerCommand Text(playerid, cmdtext[])


Урок 3

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

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

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

Code: Select all

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


Если в авто:

Code: Select all

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


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

Ищем:

Code: Select all

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
; 


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

Code: Select all

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

Цвет банд

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

Code: Select all

 public SetPlayerToTeam Color(playerid)


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

Code: Select all

if(IsPlayerConnect ed(playerid)) 
 
{ 
 SetPlayerColor


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

Code: Select all

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


Пояснения:

Code: Select all

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

Code: Select all

0xFFFF00AA//цвет      


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

Урок 5

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

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

Code: Select all

new teleport;


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

Code: Select all

public OnGameModeInit()


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

Code: Select all

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


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

Ищем:

Code: Select all

OnPlayerPickUpPickup(playerid, pickupid)


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

Code: Select all

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


Пояснения:

Code: Select all

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

Code: Select all

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

Code: Select all

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


  • Similar Topics
    Replies
    Views
    Last post

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

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest