только бласт
и я учусьДобавлено (05.05.2009, 12:51)
---------------------------------------------
Уроки павно урок 1
Начинаем первый урок. Скриптинг са мп происходит в 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"); это установка название нашего режима.
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); Это добавление спавна ака скина. первый 0 это ID скина, следующие 4 числа это координаты, остальные 6 нулей это оружие и их патроны.
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.
Дальше идем в папку сан андреаса и открываем samp_debug.exe и там жмем connect lokalhost и мы заходим на сервер и проверяем скрипт. Если все сделано верно то после смерти (можно написать /kill) мы увиим надпись в чате "Вы умерли" (бес скобок) жолтого цвета то все сделано верно, еслиже нет то внимательно проверьте скрипт. На сегодня все)
Добавлено (05.05.2009, 12:52)
---------------------------------------------
урок 2
Сейчас начнем осваивать координаты, где достать куда ставить. В папке San-Andreas'а ищем файл samp_debug.exe (желательно сделать ярлык и поставить его в папку сервера) и нажать кнопку Launch Debug. Начнет загружатся игра и вы окажетесь в Лос Сантосе. В этом режиме вы сможите находить нужные вам координаты. Используйте команды: /v 520 где 520 это ID транспорта, а точнее гидры. Список ID транспорта вы можете найти в файле vehicles.ide или на нашем сайте; /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, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
ВНИМАНИЕ ставьте свои координаты из savedpositions.txt!
Проверяем)
На сегодня все)
Добавлено (05.05.2009, 12:53)
---------------------------------------------
3 ypok
Сегодня рассмотрим расставление оружия скинам и скриптовые каманды.
Открываем 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;
}
смотрим
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
в конце 6 нулей, это оружие и его патроны. В данном случае у нас 3 кулака с 0лями патронов xD. Любое оружие имеет свой ID (который вы можете найти на сайте, в статьях по соседству). Это должно выглядеть так:
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, ID1, AMMO1, ID2, AMMO2, ID3, AMMO3); где:
ID1: первое оружие
AMMO1: патроны к первому оружию
ID2: второе оружие
AMMO2: патроны к нему
ID3: ну и третье оружие
AMMO3: и его патроны
выглядеть должно примерно так:
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 28, 100, 31, 100, 8, 1);
Ну не все оружие можно давать в са мп 0.1 в 0.2 обесчали все отсинхрить ;). Ну можно поэкспирементировать.
Далее команды сервера.
Ищем
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/mycommand", true)==0)
{
/* Do something here */
return 1;
}
return 0;
}
Это сам паблик каманд, а
if (strcmp(cmdtext, "/mycommand", true)==0)
{
/* Do something here */
return 1;
}
сами команды.
Начнем создавать свои команды.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/kickme", true)==0)
{
Kick(playerid);
return 1;
}
return 0;
}
Ну цель этой команды проста, вы кикнете себя. Поставим вторую команду, например, на выскакивание текста.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/kickme", true)==0)
{
Kick(playerid);
return 1;
}
if (strcmp(cmdtext, "/text", true)==0)
{
GameTextForAll("kakoyto text", 9000, 1);
return 1;
}
return 0;
}
Про каманду текста для всех, там можно только латинские символы. Цыфры это время (в милисекундах) и тип текста, с этим сами поэксперементируйте. На этом пока все =)
Добавлено (05.05.2009, 12:54)
---------------------------------------------
урок 5
Сегодня мы создадим простенькое меню,а точнее научимся делать.
Сначала создайте глобальную переменную Код:
new Menu:menu1;
Потом в паблике OnGameModeInit пропишите:
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"menu1 == teleportmenu = CreateMenu("Menu", 1, 200.0, 100.0, 150.0, 150.0);
А теперь почешем репу и подумаем что есть что...и вот что это есть:
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"CreateMenu(название, кол-во колон, положение по Х-координате, положение по У-координате, ширина первой колонны,ширина второй колонны);
два последнего значения я и сам не понял что означают(инфу брал с википедии)
после menu1 ==... добавляем
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"AddMenuItem(menu1,0,"тут пишем название");
Вот что это все означает:
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"AddMenuItem(ид меню(в данном случае мы используем переменную),номер колонны(начинается с нуля),название);
вы можете добавить много Item'ов,сколько захотите
Действия,которые происходит при выборе Item'а прописаны в паблике OnPlayerSelectMenuRow,в этом паблоике создаем переменную new
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"pmenu ==GetPlayerMenu(playerid);
Далее делаем пару проверок:
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"if(pmenu == menu1)
{
switch(row)
{
тут делаем различные кейсы,соответствующие Item'ам,все ид кейсов начинаются с нуля,например:
Code
200 ? '200px':''+(this.scrollHeight+5)+'px')"case 0:
{
действия
return 1;
}
}
}
ВСЕ ОСТАЛЬНОЕ НАПИШУ ПОТОМ (скопирую) 
Добавлено (05.05.2009, 12:54)
---------------------------------------------
http://7t.3dn.ru/forum/35-57-1
более подробно смотрите тут 