zindo
Компетентный
Урок 1
Начинаем первый урок. Скриптинг Samp происходит в Pawno. Pawno это программа компилирующая pwn (изменяемый файл будущего скрипта) в amx (сам скрипт) и для изменения первого. Открыв какой-нибудь скрипт мы видим множество надписей и цифр. Разберем что же они значат. Откроем new.pwn. Начнём разбирать самое простое.
Это установка название нашего режима.
это скобочки открытия/закрытия.
Это сообщение на сам сервер.
Это добавление спавна(скина). Первый 0 это ID скина, следующие 4 числа это координаты, остальные 6 нулей это оружие и их патроны.
Это конец
Это паблик в котором содержится все вышеперечисленное, их мы пока трогать не будем.
Каждый паблик выполняет свою задачу, можно создавать свои паблики и засунуть туда определенные действия и сделать чтобы они выполнялись в нужный момент. Это сложновато, поэтому не будем пока об этом. Можно задавать определенные действия например при подключении, спавне.
найдём
и переделаем на
Сработает как сообщение в чат
Далее ищем вверху синий треугольник и жмем на него. Должна произойти компиляция и появится текст:
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
Делаем телепорт, вообщем простенько но может кому пригодится.
И всё это вставляем в в паблик:
Урок 3
Расставим транспорт и респауны.
Сейчас начнем осваивать координаты, где достать куда ставить. В папке San-Andreas'а ищем файл samp_debug.exe (желательно сделать ярлык и поставить его в папку сервера) и нажать кнопку Launch Debug. Начнет загружатся игра и вы окажетесь в Los Santos. В этом режиме вы сможете находить нужные вам координаты. Используйте команды /vsel для выбора транспорта. /save <примечание> сохранение координат. Встаньте там где нужно сохранить координаты и используйте команду; F11 и F12 прокрутка скинов вперед и назад соответственно. Далее находим файл savedpositions. txt в папке San Andreas'а (тоже желательно сделать ярлык в папку с сервером) и смотрим там:
Если вы сохраняли координаты находясь пешком у вас должно быть:
Ищем
и переделываем на
Внимание ставьте свои координаты из savedpositions. txt!
Урок 4
как сделать на своем сервере выдачу оружия ниже приведу пример
Можно так же сделать комплект оружия при вводе команды /weapons,ну и или вы по желанию вписываете свою команду.
Урок 5
Цвет банд
Сначало ищим:
Там видим строки:
Чтобы сделать цвет банды нам надо просто добавить строки:
SetPlayerColor((PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4),0xFFFF00AA);
Что выделено зеленым это - какая фракциия(id) будет таким цветом , а то что выделено синим цветом это цвет.
И так несколько раз( смотря для сколько банд вы поставите)
Урок 6
Телепорт по пикапу
Где все new(переменные) пишем
Далее в поиске ищем
и вставляем там:
Поясняю 1274 - это ID пикапа, 1 - это тип пикапа, x,y,z - это координаты вашего местоположения пикапа
Ищем
и туда вставляем:
Поясняю:
- этим вы задаёте интерьер игроку, 0 это улица, пишите свой интерьер
- этим вы задаёте местоположение игрока. XYZ это ваши координаты куда он будет телепортироваться
Ты телепортировался в нужную точку"); - это сообщение при телепортации. Можно убрать
Всем спасибо за просмотр
,урок сделан для новичков в Pawno.
Автор: Jul
Решил дополнить урок.
7 урок.
Что такое лестница? Она легка в использовании.
В программировании по сути, выполняет те же самые функции.
Наверняка вы заметили, что большинство строк в коде отодвинуты в правую сторону.
Это расстояние (пробелы) между левым краем и строкой и являются частями лестницы.
Чем "глубже" код, тем больше расстояние. Именно это упрощает понимание кода.
лестница показывает к чему относится тот или иной код.
Например, у нас есть проверка if(какие-то параметры), и в ней тоже какой-то там код.
Этот код относится к нашей проверке, и его мы должны отодвинуть вправо.
Чтобы это сделать, необходимо выделить перемещаемый код и нажать на 'TAB'
Выделенный код отодвинулся вправо и теперь мы видим, что он относится к этой проверке.
Это должен понять человек, который совсем не понимает в программировании.
В основном код пабликов (колбэков) состоит из постоянных проверок. Получается, нам придется
отодвигать код каждой проверки, но за то в итоге паблик будет выглядит разборчиво и без Warning.
Если вы уже скачали мод для обучения и уже попробовали скомпилить его, то получили такие предупреждения:
Именно они связаны с лестницей, вернее, с ее отсутствием. Но не переживайте, прочтите урок и всё исправите.
урок 8.
" Практика "
Рассмотрим использование "лестницы" на конкретном примере в виде команды
Самая обычная команда, и если вы найдете ее в нашем моде, то увидите:
Код выглядит совсем плохо, да и к тому же с ним будет удобно работать при необходимости.
Как вы знаете, if - это проверка, а в скобках указываются какие-то необходимые параметры.
В них мы сейчас вникать не будем, но в коде четко видно, что все команды располагаются на
расстоянии в 1 таб от левого края. Это связано из-за того, что этот код принадлежит к
и поэтому весь код внутри него табулирован.
В следствии этого мы полностью выделяем нашу команду и пока нажимаем на TAB 1 раз.
Теперь она имеет такое же расстояние, как и другой код(другие команды) этого колбека.
Затем четко видна проверка самой команды:
После нее открывается фигурная первая скобка
, которая как бы показывает начало области этой проверки.
Раз есть скобка, показывающая начало, то и должна быть скобка, показывающая конец.
Логично предположить: первая скобка с начала показывает начало, а первая скобка с конца - конец.
Эти две скобки остаются на своем законном месте, а код, который находится между ними,
мы выделяем и, угадайте что мы с ним делаем? Выделяем и так же нажимаем на TAB (1 раз).
В итоге у нас получилось:
Всего в нашей команде 2 проверки.
Первый раз мы протабулировали всю команду, т.к. она лежит в колбэке.
Второй раз - код внутри первой проверки.
У нас осталась еще одна проверка, код в которой мы не табулировали.
Это проверка
Между скобок этой проверки лежит одна единственная функция, которая занимается рестартом сервера.
Ну ладно, пусть будет функция. Опять же выделяем ее, при этом скобки не трогаем, и нажимаем TAB.
Команда протабулирована полностью. Теперь вам осталось сравнить мои и ваши результаты:
Если все сходиться, то вы, должно быть, поняли, что есть "лестница", она же табуляция, в программировании.
Удачи вам с программированием.
Начинаем первый урок. Скриптинг Samp происходит в Pawno. Pawno это программа компилирующая pwn (изменяемый файл будущего скрипта) в amx (сам скрипт) и для изменения первого. Открыв какой-нибудь скрипт мы видим множество надписей и цифр. Разберем что же они значат. Откроем new.pwn. Начнём разбирать самое простое.
Это установка название нашего режима.
PHP:
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;
}
PHP:
{ и }
PHP:
printf("GameModeInit()");
SetGameModeText("Blank Script");
PHP:
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
PHP:
return 1;
Каждый паблик выполняет свою задачу, можно создавать свои паблики и засунуть туда определенные действия и сделать чтобы они выполнялись в нужный момент. Это сложновато, поэтому не будем пока об этом. Можно задавать определенные действия например при подключении, спавне.
PHP:
public OnGameModeInit()
PHP:
public OnPlayerDeath(playerid, killerid, reason)
{
printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);
return 1;
}
PHP:
public OnPlayerDeath(playerid, killerid, reason)
{
SendClientMessage(playerid, 0xFFFF00AA, "Вы погибли");
printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);
return 1;
}
SendClientMessage(playerid, 0xFFFF00AA, "Вы погибли");
PHP:
"Вы погибли" (без кавычек) 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
Делаем телепорт, вообщем простенько но может кому пригодится.
PHP:
// 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;
}
PHP:
public OnPlayerCommand Text(playerid, cmdtext[])
Расставим транспорт и респауны.
Сейчас начнем осваивать координаты, где достать куда ставить. В папке San-Andreas'а ищем файл samp_debug.exe (желательно сделать ярлык и поставить его в папку сервера) и нажать кнопку Launch Debug. Начнет загружатся игра и вы окажетесь в Los Santos. В этом режиме вы сможете находить нужные вам координаты. Используйте команды /vsel для выбора транспорта. /save <примечание> сохранение координат. Встаньте там где нужно сохранить координаты и используйте команду; F11 и F12 прокрутка скинов вперед и назад соответственно. Далее находим файл savedpositions. txt в папке San Andreas'а (тоже желательно сделать ярлык в папку с сервером) и смотрим там:
Если вы сохраняли координаты находясь пешком у вас должно быть:
PHP:
AddPlayerClass(0,1496.7302,1438.9197,10.8281,115.1 985,0,0,0,0,0,0); // spawn
Если на авто:
PHP:
AddStaticVehicle(494,1505.4323,1450.9718,10.7365,3 57.1130,36,13); // hotring Дальше поставим координаты в наш скрипт:
PHP:
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;
}
PHP:
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;
}
Урок 4
как сделать на своем сервере выдачу оружия ниже приведу пример
PHP:
#include <a_samp>
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/mp5",true) == 0) { //Условие на ввод команды /mp5
GivePlayerWeapon(playerid,WEAPON_MP5,100); //Тут указано оружие и количество патронов
return 1;
}
PHP:
#include <a_samp>
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/weapons",true) == 0) { //Условие на ввод команды
GivePlayerWeapon(playerid,WEAPON_PISTOL,100);//100 отвечает за то сколько игроку будет выдано патрон.
GivePlayerWeapon(playerid,WEAPON_MP5,100);
GivePlayerWeapon(playerid,WEAPON_SHOTGUN,100);
GivePlayerWeapon(playerid,WEAPON_AK47,100);
GivePlayerWeapon(playerid,WEAPON_M4,100);
GivePlayerWeapon(playerid,WEAPON_SNIPER,100);
return 1;
}
Цвет банд
Сначало ищим:
PHP:
public SetPlayerToTeam Color(playerid)
PHP:
if(IsPlayerConnect ed(playerid))
{
SetPlayerColor
Чтобы сделать цвет банды нам надо просто добавить строки:
SetPlayerColor((PlayerInfo[playerid][pMember]== 4 || PlayerInfo[playerid][pLeader] == 4),0xFFFF00AA);
Что выделено зеленым это - какая фракциия(id) будет таким цветом , а то что выделено синим цветом это цвет.
И так несколько раз( смотря для сколько банд вы поставите)
Урок 6
Телепорт по пикапу
Где все new(переменные) пишем
PHP:
new teleport;
PHP:
public OnGameModeInit()
PHP:
teleport = CreatePickup(1274,1,x,y,z);
Ищем
PHP:
OnPlayerPickUpPickup(playerid, pickupid)
PHP:
if(pickupid == teleport)//проверка встал ли игрок на Pickup.
{
SetPlayerInteri or(playerid, 0);
SetPlayerPos(playerid,x,y,z);
SendClientMessage(playerid, 0xFF0000FF, "Ты телепортировался в нужную точку");
}
PHP:
SetPlayerInteri or(playerid, 0);
PHP:
SetPlayerPos(playerid,x,y,z);
PHP:
SendClientMessage(playerid, 0xFF0000FF, "
Всем спасибо за просмотр
Автор: Jul
Решил дополнить урок.
7 урок.
Что такое лестница? Она легка в использовании.
В программировании по сути, выполняет те же самые функции.
Наверняка вы заметили, что большинство строк в коде отодвинуты в правую сторону.
Это расстояние (пробелы) между левым краем и строкой и являются частями лестницы.
Чем "глубже" код, тем больше расстояние. Именно это упрощает понимание кода.
лестница показывает к чему относится тот или иной код.
Например, у нас есть проверка if(какие-то параметры), и в ней тоже какой-то там код.
Этот код относится к нашей проверке, и его мы должны отодвинуть вправо.
Чтобы это сделать, необходимо выделить перемещаемый код и нажать на 'TAB'
Выделенный код отодвинулся вправо и теперь мы видим, что он относится к этой проверке.
Это должен понять человек, который совсем не понимает в программировании.
В основном код пабликов (колбэков) состоит из постоянных проверок. Получается, нам придется
отодвигать код каждой проверки, но за то в итоге паблик будет выглядит разборчиво и без Warning.
Если вы уже скачали мод для обучения и уже попробовали скомпилить его, то получили такие предупреждения:
PHP:
C:\...\gamemodes\Education.pwn(137) : warning 217: loose indentation
C:\...\gamemodes\Education.pwn(146) : warning 217: loose indentation
урок 8.
" Практика "
Рассмотрим использование "лестницы" на конкретном примере в виде команды
PHP:
"/restart"
PHP:
if(strcmp(cmd, "/restart", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GameModeExit();
}
return 1;
}
Как вы знаете, if - это проверка, а в скобках указываются какие-то необходимые параметры.
В них мы сейчас вникать не будем, но в коде четко видно, что все команды располагаются на
расстоянии в 1 таб от левого края. Это связано из-за того, что этот код принадлежит к
PHP:
public OnPlayerCommand Text(playerid, cmdtext[])
В следствии этого мы полностью выделяем нашу команду и пока нажимаем на TAB 1 раз.
Теперь она имеет такое же расстояние, как и другой код(другие команды) этого колбека.
Затем четко видна проверка самой команды:
PHP:
if(strcmp(cmd, "/restart", true) == 0)
PHP:
"{"
Раз есть скобка, показывающая начало, то и должна быть скобка, показывающая конец.
Логично предположить: первая скобка с начала показывает начало, а первая скобка с конца - конец.
Эти две скобки остаются на своем законном месте, а код, который находится между ними,
мы выделяем и, угадайте что мы с ним делаем? Выделяем и так же нажимаем на TAB (1 раз).
В итоге у нас получилось:
PHP:
if(strcmp(cmd, "/restart", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GameModeExit();
}
return 1;
}
Первый раз мы протабулировали всю команду, т.к. она лежит в колбэке.
Второй раз - код внутри первой проверки.
У нас осталась еще одна проверка, код в которой мы не табулировали.
Это проверка
PHP:
if(IsPlayerConnected(playerid))
Ну ладно, пусть будет функция. Опять же выделяем ее, при этом скобки не трогаем, и нажимаем TAB.
Команда протабулирована полностью. Теперь вам осталось сравнить мои и ваши результаты:
PHP:
if(strcmp(cmd, "/restart", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GameModeExit();
}
return 1;
}
Удачи вам с программированием.
Последнее редактирование:
