Автор: 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.Z ),
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, "Ты телепортировался в нужную точку"); // это сообщение при телепортации (можно убрать)