Здравствуйте, гость! ( Вход | Регистрация )

  • Страница 1 из 1
  • 1
Модератор форума: Sasuke, admin  
Белокуракинский форум » Игровой форум » GTA » Сервер, клиент и тд... ВСЕ о SAMP
Сервер, клиент и тд... ВСЕ о SAMP
admin Дата: Среда, 15.Апреля.2009, 21:56:59 | Сообщение # 1
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
--==Играем==--
Клиент версии 0.2X: Скачать
Устанавливаем в папку GTA, открываем, вводим IP сервера и играем!
Мой сервер: (работает не весь день)
HostName: ..::Pycckuu•party•сервер::..[0.2X]
Address: 84.47.131.178:7777
Players: 0 / 100
Ping: 123
Mode: LVDM PRO v. 0.7
Map: San Andreas

--== Создаем сервер==-- (нужно иметь выделенный IP адресс)
Для создания сервера у вас должен быть хороший провайдер соединения с интернетом.
Алгоритм создания сервера:
1- Качаем сервер (версия 0.2X) cкачать
2- Извлекаем содержимое архива в любую папку.
3- Настраиваем сервер :
*открываем файл server.cfg c помощью блокнота и видим там такой текст...
______________________________________________________________________________
echo Executing Server Config...

lanmode 0 - (1) чтобы сервер был доступен пользователям из локальной сети
maxplayers 32 - число игроков.
port 7777 - порт
hostname Unnamed Server - имя сервера
gamemode0 lvdm 1 - стартовый мод(местность) ~ как поменять напишу далее....
gamemode1 rivershell 1
gamemode2 area51 1
gamemode4 sftdm 1
weburl www.sa-mp.com - сайт
rcon_password changeme - пароль от админки на сервер

_______________________________________________________________________________
4- Выбор мода
* в паке "gamemodes" лежат файлы с расширением АМХ это и есть те самые моды местноси карты как хотите
Чтобы сменить мод просто надо прописать в строчку gamemode0 имя файла к примеру....
gamemode0 monster 1...

5- запускаем приложение samp-server.exe
6- Узнаем свой ip
7- Запускаем SA-MP и добавляем в Favorites свой ip aдрес + номер порта должно быть так:

Например: 12.123.12.123:7777
8- Сервер готов, можно приступать к игре.
Стандартные команды администрирования сервера:
(вводить в строке чата):
/rcon login - вход в режим администратора.
Необходимо для выполнения следующих команд.
/rcon exec - запустить конфиг.
/rcon cmdlist - отобразить список всех команд.
/rcon varlist - отобразить список всех переменных.
/rcon exit - выход.
/rcon kick - kick player по id. Выбрасывает игрока.
/rcon ban - ban player по id. Выбрасывает игрока перманентно.
/rcon gmx - перезапуск сценария.
/rcon changemode - смена текущей карты.
/ rcon say - напечатать в чате "text" от админа.
/rcon echo - напечатать текст на стороне консоли.
/rcon reloadbans - reloads bans.
/rcon password - установка или изменение пароля на сервер.
Если вы все сделали согласно данному FAQ проблем с сервером быть недолжно.




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:57:29 | Сообщение # 2
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Продолжаем изучать samp..... Вы уже создали свой сервер? Но вам не нравиться game мод? Тогда создаем свой!!!! В папке с сервером который вы скачали лежит программа Pawno! Ее то мы и будем изучать!

=1=

Скриптинг в PAWNO.Урок 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) мы увиим надпись в чате "Вы умерли" (бес скобок) жолтого цвета то все сделано верно, еслиже нет то внимательно проверьте скрипт. На сегодня все)




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:57:44 | Сообщение # 3
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 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!




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:58:02 | Сообщение # 4
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 3
Сегодня рассмотрим расставление оружия скинам и скриптовые каманды.
Открываем 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 кулака с нолями патронов 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);

Далее команды сервера.
Ищем:

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




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:58:11 | Сообщение # 5
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 4
Сегодня мы создадим простенькое меню, а точнее научимся делать его.
Сначала создайте глобальную переменную. Код:

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

Все,урок окончен




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:58:20 | Сообщение # 6
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 5
И так, когда я разбирался с Race модами я смотрел и долго нечего не понимал ну и вообшем решил пока гонками не заниматся а создать мини миссию!
Ну как обычно износиловал все Pфwno и вот что получилось

(СКРИПТ)
#define COLOR_RED 0xAA3333AA //определяем цвета
#define CHECKPOINT_NONE 0 //убирает все чекпоинты
#define CHECKPOINT_A 1
#define CHECKPOINT_B 2
#define CHECKPOINT_C 3
#define CHECKPOINT_D 4
#define CHECKPOINT_E 5
#define CHECKPOINT_F 6
#define CHECKPOINT_G 7
#define CHECKPOINT_H 8
#define CHECKPOINT_J 9 // Все эти команды определяют чекпоинты...
Далее добавить в public:
new gPlayerClass[MAX_PLAYERS];
new gPlayerCheckpointStatus[MAX_PLAYERS];
public OnPlayerSpawn(playerid) // Заменить ваш OnPlayerSpawn этим
{
SetPlayerInterior(playerid,0);
switch (gPlayerClass[playerid]) {
case 0:
{
gPlayerCheckpointStatus[playerid] = CHECKPOINT_A;
SetPlayerCheckpoint(playerid,-1060.2656,-1205.3883,129.2188,2.0);
}
case 1, 2, 3, 4, 5, 6, 7, 8, 9:
{
gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
}
}
return 1;
}
Добавляем команду:
public OnPlayerEnterCheckpoint(playerid) {
switch (gPlayerCheckpointStatus[playerid]) {
case CHECKPOINT_A:
{
SetPlayerCheckpoint(playerid,-345.7894,-1046.6093,59.8125,2.0);
IsPlayerInAnyVehicle(playerid);
SendClientMessage(playerid,COLOR_WHITE,">Это твоё первое задание...");
SendClientMessage(playerid,COLOR_WHITE,">Едь на другой чекпоинт и возьми кейс!");
IsPlayerInAnyVehicle(playerid);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_B;
}
case CHECKPOINT_B:
{
SetPlayerCheckpoint(playerid,-262.8102,-2183.5281,28.9523,2.0);
IsPlayerInAnyVehicle(playerid);
SendClientMessage(playerid,COLOR_WHITE,">Отвези кейс на ферму!");
gPlayerCheckpointStatus[playerid] = CHECKPOINT_C;
}
case CHECKPOINT_C:
{
SetPlayerCheckpoint(playerid,-1111.7607,-1621.2410,76.3739,2.0);
GivePlayerMoney(playerid,3000);
PlayerPlaySound(playerid,1062,-262.8102,-2183.5281,28.9523);
SendClientMessage(playerid,COLOR_GREEN,">Молодец! Ты прошёл миссию получи 3000 баксов!");
SendClientMessage(playerid,COLOR_GREEN,">Следующая миссия на чекпоинте!");
gPlayerCheckpointStatus[playerid] = CHECKPOINT_D;
}
case CHECKPOINT_D:
{
SetPlayerCheckpoint(playerid,-1827.6156,-1927.0413,90.7038,2.0);
SendClientMessage(playerid,COLOR_YELLOW,">Найди самолёт и лети в Сан Фиерро!");
gPlayerCheckpointStatus[playerid] = CHECKPOINT_E;
}
case CHECKPOINT_E:
{
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,1.6297,23.8689,1199.5938);
SendClientMessage(playerid,COLOR_YELLOW,">Ты летишь в Сан фиерро!");
SetPlayerCheckpoint(playerid,2.8139,33.0639,1199.5938,2.0);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_F;
}
case CHECKPOINT_F:
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,-1384.7823,-345.2231,14.1484);
SendClientMessage(playerid,COLOR_YELLOW,">Едь в парк и возьми пакет!");
SetPlayerCheckpoint(playerid,-2706.3647,376.2090,4.9686,2.0);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_G;
}
case CHECKPOINT_G:
{
SetPlayerCheckpoint(playerid,-1384.7823,-345.2231,14.1484,2.0);
SendClientMessage(playerid,COLOR_YELLOW,">Едь в аэропорт!");
gPlayerCheckpointStatus[playerid] = CHECKPOINT_H;
}
case CHECKPOINT_H:
{
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,1.6297,23.8689,1199.5938);
SendClientMessage(playerid,COLOR_WHITE,">Ты летишь обратно!");
SetPlayerCheckpoint(playerid,2.8139,33.0639,1199.5938,2.0);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_J;
}
case CHECKPOINT_J:
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,-2318.4241,-1636.1868,1317.5997);
ResetPlayerWeapons(playerid);
SendClientMessage(playerid,COLOR_RED,">Тебя подставили и выкинули из самолёта!!!");
SendClientMessage(playerid,COLOR_GREEN,">Время умирать чувак! :)");
gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
DisablePlayerCheckpoint(playerid);
}
}
return 1;
}




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:58:35 | Сообщение # 7
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 6
Привет ученик! Теперь делаем гонки в мод! Я конечно пока вставить не могу но в виде ФС гонки выглядят так:

#include
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_LAVENDER 0xFF00FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_LIGHTBLUEA 0xB5EAFCAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_TEAL 0x3BAAC2AA
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
forward CheckpointUpdate();
forward GPRaceCountdown();
forward GPTimer();
//forward SaveTimes();
//forward LoadTimes();
forward UpdateList(playerid,TimeRec);
new Mototime[MAX_PLAYERS] =0;
new Motocountdown[MAX_PLAYERS] =-1;
new MotoGP[MAX_PLAYERS] = 0;
new MotoGate[MAX_PLAYERS]=0;
#define MAX_POINTS 1//СТАРТ ПОИНТ
#define MAX_RACE_POINTS 100//ЧИСЛО ГОНОЧНЫХ ПОИНТОВ
new cps = MAX_RACE_POINTS - 1;
#define TT_START 0
enum kinfo{
Driver[24],
Time
}
new KartHS[5][kinfo];
new playerCheckpoint[MAX_PLAYERS];
new Float:checkpoints[MAX_POINTS][3] = {//ТУТ СТАРТОВЫЙ ЧЕКПОИНТ
{1797.2352,2251.0757,4.9755}
};
new Float:racecheckpoints[MAX_RACE_POINTS][3] = {//ТУТ //ГОНОЧНЫЙ ЧЕКПОИНТЫ КОТОРЫЕ ВО ВРЕМЯ ГОНКИ
{1797.5144,1884.4104,6.6023},
{1797.4225,1594.3551,6.5990},
{1797.2001,1037.1470,6.5983},
{1798.2466,873.0827,10.5056},
{1622.680 4,843.2832,6.5982},
{1455.1434,833.6122,6.7112},
{956.8241,741.7051,10.7060},
{855.5547,703.4802,11.7664},
{649.3840,667.5455,7.0238},
{ 474.9632,725.6837,5.1012},
{262.4301,889.1722,22.1563},
{208.3201,1015.8774,25.4640},
{177.5087,1144.3633,14.1364},
{-45.9619,1260.6456, 9.2296},
{-219.7370,1238.8441,23.1402},
{-377.1374,1298.7002,24.7620},
{-431.9221,1412.6958,32.1904},
{-421.3441,1671.2706,37.3832},
{- 379.9946,1782.9468,46.7754},
{-432.1290,1879.7438,61.3342},
{-422.9137,1784.9297,70.9443},
{-466.8343,1788.7369,74.6976},
{-464.9256,196 9.0275,82.1220},
{-382.8337,2053.7739,61.7009},
{-419.7729,2064.5906,61.3606},
{-509.3027,1983.8544,60.0850},
{-646.8643,2054.9785,60.27 41},
{-837.4421,2021.8069,60.2786},
{-867.9402,1905.9733,60.1240},
{-908.3344,1790.4731,60.0592},
{-1033.2159,1852.7333,59.3001},
{-114 5.8105,1798.4552,40.3781},
{-1178.5577,1813.7426,40.9333},
{-1241.9475,1903.1709,42.1986},
{-1337.5841,2016.4515,54.1038},
{-1352.7341,2 171.2791,48.2466},
{-1423.9059,2336.1450,53.7300},
{-1431.6934,2472.4524,61.0890},
{-1351.1937,2631.4705,51.2857},
{-1412.7439,2714.7759 ,60.4720},
{-1633.9431,2728.4771,57.7567},
{-1799.4211,2693.7271,57.1111},
{-1913.2582,2617.7471,48.1832},
{-2195.0869,2676.2134,53.9009 },
{-2425.0469,2669.3765,60.9004},
{-2614.1509,2671.4880,76.8050},
{-2770.0366,2441.6501,92.3823},
{-2681.5408,2059.4980,56.1254},
{-26 81.1685,1756.4165,68.3772},
{-2681.5007,1367.2424,55.7080},
{-2679.5535,1239.2896,55.5204},
{-2464.9307,1104.8513,55.6742},
{-2286.8269, 1066.3125,55.6811},
{-1999.6361,1066.3679,55.4660},
{-1910.2255,1066.1985,47.5866},
{-1892.3218,988.5411,35.0888},
{-1898.7400,794.9924, 38.8297},
{-1897.8530,618.8192,34.9137},
{-1963.4152,605.6826,34.9150},
{-2001.6990,537.5637,34.9114},
{-2003.8684,353.3103,34.9113},
{ -2006.1154,97.0415,27.4348},
{-2005.6558,-106.2443,35.6536},
{-2010.5597,-288.2466,35.2158},
{-2155.9524,-341.7915,35.0796},
{-2372.5454 ,-334.8734,38.4070},
{-2754.2183,-438.3979,7.0646},
{-2820.9695,-443.0231,6.9347},
{-2812.4561,-310.5171,6.9269},
{-2808.9888,-179.3705, 6.9276},
{-2808.9644,2.2234,6.9277},
{-2810.2258,51.9202,6.9289},
{-2808.9358,139.8148,6.9265},
{-2765.1001,156.9801,6.9568},
{-2597.35 21,156.7976,4.0748},
{-2406.5889,251.8733,26.3285},
{-2208.2788,320.1814,35.0675},
{-2023.7981,324.1935,34.9411},
{-1935.6423,344.1543,3 2.3373},
{-1873.8748,402.7901,16.9899},
{-1839.1860,400.3513,16.9088},
{-1656.7661,555.5449,38.9824},
{-1511.4597,708.1401,45.6228},
{- 1342.0031,887.4564,46.9306},
{-1113.2859,1130.6921,37.4382},
{-912.4370,964.1341,17.8444},
{-821.1741,734.6368,18.6041},
{-595.8551,637. 3406,16.7214},
{-222.6646,565.2453,15.7750},
{280.7512,757.4127,6.1771},
{515.8831,703.0739,3.5536},
{966.9130,746.7089,10.7151},
{1142 .4872,837.7676,10.5735},
{1231.5911,1151.9949,6.7249},
{1217.0756,1280.3558,6.6020},
{1217.6578,1695.2532,6.6009},
{1216.2842,2108.6938, 6.5991},
{1593.5679,2456.3616,6.7015},
{1798.0892,2253.2261,5.0176},
{1797.2352,2251.0757,4.9755}
};
new checkpointType[MAX_POINTS] = {
TT_START
};
public OnFilterScriptInit()
{
print("\n Mode:RACE VITALAS[goDog] - делал Виталь.\n");
SetTimer("CheckpointUpdate",1000,1);
SetTimer("GPRaceCountdown",1000,1);
SetTimer("GPTimer",1000,1);
for(new t=0; t<5; t++)
{
strmid(KartHS[t][Driver], "None", 0, strlen("None"), 24);
KartHS[t][Time]=100000;
}
// if(!fexist("Петушиный ФрирайдTimes.cfg"))
// SaveTimes();
// LoadTimes();
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(getCheckpointType(playerid)!=TT_START)
{
SendClientMessage(playerid,COLOR_GREEN," Ты не в стартовой позиции.");
return 1;
}
if (strcmp("/start", cmdtext, true, 10) == 0)
{//команда на старт гонки
if(!IsVehicle(playerid))
{
new fstr[255];
format(fstr,sizeof(fstr),"You must be in a %s to participate in this.");
SendClientMessage(playerid,COLOR_GREEN,fstr);
return 1;
}
SendClientMessage(playerid, COLOR_GREEN,"Старт...");
TogglePlayerControllable(playerid,0);
Motocountdown[playerid] = 6;
SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[0][0],racecheckpoints[0][1],racecheckpoints[0][2],racecheckpoints[1][0],racecheckpoints[1][1],racecheckpoints[1][2],25);
DisablePlayerCheckpoint(playerid);
return 1;
}
if (strcmp("0", cmdtext, true, 10) == 0)
{
new kstring[255];
SendClientMessage(playerid,COLOR_GREEN," 5 лучших по времени:");
for(new z=0; z<5; z++)
{
new sec = KartHS[z][Time]%60;
new mins = (KartHS[z][Time]/60)%60;
if (strcmp("None",KartHS[z][Driver], true, 10) == 0)
{
if(z==0)
SendClientMessage(playerid,COLOR_GREY,"-No Times Recorded Yet-");
if(z>0)
SendClientMessage(playerid,COLOR_GREY,"-End Of Time Sheet-");
return 1;
}
if(strcmp("None",KartHS[z][Driver], true,10) != 0)
{
if(sec > 9) {format(kstring,sizeof(kstring),"%d. %s - %d:%d",z+1,KartHS[z][Driver],mins,sec);}
if(sec < 9) {format(kstring,sizeof(kstring),"%d. %s - %d:0%d",z+1,KartHS[z][Driver],mins,sec);}
SendClientMessage(playerid,COLOR_GREY,kstring);
}
}
return 1;
}
return 0;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
new sec = Mototime[playerid]%60;
new mins = (Mototime[playerid]/60)%60;

if(MotoGP[playerid] == 1)
{
MotoGate[playerid]++;
new one = MAX_RACE_POINTS-2;
new two = MAX_RACE_POINTS-1;
if(MotoGate[playerid] < one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[MotoGate[playerid]][0],racecheckpoints[MotoGate[playerid]][1],racecheckpoints[MotoGate[playerid]][2],racecheckpoints[MotoGate[playerid]+1][0],racecheckpoints[MotoGate[playerid]+1][1],racecheckpoints[MotoGate[playerid]+1][2],25);

}
if(MotoGate[playerid] == one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,1,racecheckpoints[MotoGate[playerid]][0],racecheckpoints[MotoGate[playerid]][1],racecheckpoints[MotoGate[playerid]][2],racecheckpoints[MotoGate[playerid]+1][0],racecheckpoints[MotoGate[playerid]+1][1],racecheckpoints[MotoGate[playerid]+1][2],25);
}
if(MotoGate[playerid] == two)
{
new TimeRec;
new Timestr[255];
new driver[24];
GetPlayerName(playerid,driver,sizeof(driver));
format(Timestr,sizeof(Timestr),"%s финишировал в гонке 2х Континентов за %d мин:%d сек",driver,mins,sec);
GivePlayerMoney(playerid,1500) ;
SendClientMessageToAll(COLOR_WHITE,Timestr);
SendClientMessage(playerid,COLOR_WHITE,"Ты попал в 5-ку лучших по времени.");
printf(Timestr);
TimeRec=Mototime[playerid];
MotoGP[playerid] = 0;
MotoGate[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
Mototime[playerid]=0;
UpdateList(playerid,TimeRec);
}
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(getCheckpointType(playerid)==TT_START)
{
if(IsVehicle(playerid) == 1)
{
SendClientMessage(playerid,COLOR_GREEN,"Нажми /start для старта .");
return 1;
}
if(IsVehicle(playerid) == 0)
{
SendClientMessage(playerid,COLOR_GREEN,"Ты не в машине!");
return 1;
}
}
return 1;
}

stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}

public UpdateList(playerid, TimeRec)
{
new driver[24];
GetPlayerName(playerid,driver,sizeof(driver));
if(KartHS[0][Time] > TimeRec)
{
KartHS[4][Time] = KartHS[3][Time];
strmid(KartHS[4][Driver],KartHS[3][Driver],0,sizeof(driver),24);
KartHS[3][Time] = KartHS[2][Time];
strmid(KartHS[3][Driver],KartHS[2][Driver],0,sizeof(driver),24);
KartHS[2][Time] = KartHS[1][Time];
strmid(KartHS[2][Driver],KartHS[1][Driver],0,sizeof(driver),24);
KartHS[1][Time] = KartHS[0][Time];
strmid(KartHS[1][Driver],KartHS[0][Driver],0,sizeof(driver),24);
KartHS[0][Time] = TimeRec;
strmid(KartHS[0][Driver],driver,0,sizeof(driver),24);
SendClientMessage(playerid,COLOR_GREY,"Ты на 1-ом месте!");
GivePlayerMoney(playerid,10000);
}
else if(KartHS[1][Time] > TimeRec)
{
KartHS[4][Time] = KartHS[3][Time];
strmid(KartHS[4][Driver],KartHS[3][Driver],0,sizeof(driver),24);
KartHS[3][Time] = KartHS[2][Time];
strmid(KartHS[3][Driver],KartHS[2][Driver],0,sizeof(driver),24);
KartHS[2][Time] = KartHS[1][Time];
strmid(KartHS[2][Driver],KartHS[1][Driver],0,sizeof(driver),24);
KartHS[1][Time] = TimeRec;
strmid(KartHS[1][Driver],driver,0,sizeof(driver),24);
SendClientMessage(playerid,COLOR_GREY,"Ты на 2-ом месте!");
GivePlayerMoney(playerid,7500);
}
else if(KartHS[2][Time] > TimeRec)
{
KartHS[4][Time] = KartHS[3][Time];
strmid(KartHS[4][Driver],KartHS[3][Driver],0,sizeof(driver),24);
KartHS[3][Time] = KartHS[2][Time];
strmid(KartHS[3][Driver],KartHS[2][Driver],0,sizeof(driver),24);
KartHS[2][Time] = TimeRec;
strmid(KartHS[2][Driver],driver,0,sizeof(driver),24);
SendClientMessage(playerid,COLOR_GREY,"Ты на 3-ем месте!");
GivePlayerMoney(playerid,5000);
}
else if(KartHS[3][Time] > TimeRec)
{
KartHS[4][Time] = KartHS[3][Time];
strmid(KartHS[4][Driver],KartHS[3][Driver],0,sizeof(driver),24);
KartHS[3][Time] = TimeRec;
strmid(KartHS[3][Driver],driver,0,sizeof(driver),24);
SendClientMessage(playerid,COLOR_GREY,"Ты на 4 месте!");
GivePlayerMoney(playerid,2500);
}
else if(KartHS[4][Time] > TimeRec)
{
KartHS[4][Time] = TimeRec;
strmid(KartHS[4][Driver],driver,0,sizeof(driver),24);
SendClientMessage(playerid,COLOR_GREY,"Ты на 5-ом месте!");
GivePlayerMoney(playerid,1000);
}
return 1;
}

public CheckpointUpdate()
{
for(new i; i {
if(MotoGP[i] == 0)
{
for(new j=0; j < 1; j++) {
if(PlayerToPoint(25,i,checkpoints[j][0],checkpoints[j][1],checkpoints[j][2])) {
if(playerCheckpoint[i]!=j) {
DisablePlayerCheckpoint(i);
SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],15);
playerCheckpoint[i] = j;
}
} else {
if(playerCheckpoint[i]==j) {
DisablePlayerCheckpoint(i);
playerCheckpoint[i] = 100;//ХЗ
}
}
}
}
}
}
stock IsVehicle(playerid)
{
new model = GetPlayerVehicleID(playerid);
// model = GetVehicleModel(model);
// if(model == 573)
return 1;
// else
return 0;
}
stock getCheckpointType(playerID) {
if(playerCheckpoint[playerID] != 100)//ХЗ
return checkpointType[playerCheckpoint[playerID]];
else return -1;
}

public GPRaceCountdown()
{
for(new x=0; x {
if(Motocountdown[x] > 0)
{
new time[3];
Motocountdown[x]--;
format(time,sizeof(time),"%d",Motocountdown[x]);
GameTextForPlayer(x,time,1200,3);
}
if(Motocountdown[x] == 0)
{
GameTextForPlayer(x," GO GO GO!",1200,3);
TogglePlayerControllable(x,1);
Motocountdown[x]--;
Mototime[x]=0;
MotoGP[x]=1;
}
}
}
public GPTimer()
{
for(new i=0; i {
new progress[255];
new sec = Mototime[i]%60;
new mins = (Mototime[i]/60)%60;
if(MotoGP[i] == 1)
{
Mototime[i]++;

if(sec > 9 ) { format(progress,sizeof(progress),"~b~Race %d/%d Checkpoints Achieved. Current Time: %d:%d",MotoGate[i],cps,mins,sec);}//~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~
if(sec <10 ) { format(progress,sizeof(progress),"~b~Race: %d/%d Checkpoints Achieved. Current Time: %d:0%d",MotoGate[i],cps,mins,sec);}//~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~
// GameTextForPlayer(i,progress,1200,3);
new Text:Time = TextDrawCreate(320.0, 260.0, "i");
}
}
}
stock DelPrint(string1[])
{
strmid(string1, string1, 0, strlen(string1)-1, 255);
printf("%s", string1);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
DisablePlayerRaceCheckpoint(playerid);
return 1;
}

Урок окончен...




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:58:47 | Сообщение # 8
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок 7!
Ученик а мы с тобой подходим к концу учебника!! Вот так вот!

Я думую вы видели на некоторых серверах , когда выбираешь игрока , он либо танцует , либо машет рукой , лежит , сидит и т.д. . Как это сделать? Очень просто .
В строке

public SetupPlayerForClassSelection(playerid)
{

(для примера мы возьмем Анимацию "Стрип танец")
Ниже под строкой

public OnPlayerRequestClass(playerid, classid),

мы добавляем строчку

ApplyAnimation(playerid,"STRIP","strip_D",9.9,9,9,9,9,9);

ApplyAnimation - Это тип дейсвия

playerid - для какого id игрока это возможно (в нашем случае для всех)

"STRIP"-
Сама анимация

"strip_D"
- Тип этой анимации

9.9,9,9,9,9,9
- Эти координаты указывают на Скорость , длительность и резкость выполнения анимации.
В общем Все ,Есть вопросы ,спрашивайте




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
admin Дата: Среда, 15.Апреля.2009, 21:59:00 | Сообщение # 9
Администратор сайта
Сообщений: 1226

Репутация:
[ 131 ]
Статус сообщения:
Статус:
Урок заключение
А между прочем ученик у нас последний урок сегодня! Ты выпускник!

Ну как и с анимацией так и с музыкой встречались на некоторых серваках. Это делается все просто.
Под строкой public OnPlayerRequestClass(playerid, classid) (как и в предыдущем уроке с анимацией)
Вставляем строку PlayerPlaySound(playerid,1187,-262.8102,-2183.5281,28.9523);
Где:

PlayerPlaySound
- Ночало обязательной строки

playerid
- прослушивание музыки для любого игрока

1187
- id Музыки

-262.8102,-2183.5281,28.9523
- Координаты угла звучания музыки (Необязательно)
На нашем примере id музыки 1187 - это "Военный Марш"

Бывали случаи ,что после выбора игрока Музыка все продолжала играть и Отключить ее после Respаwn'a никак , но Это можно !
Для каждого id'a музыки есть на один id выше - Выключение , т.е. id не содержащий Звука . Для того чтоб музыка отключалась после выбора , нужно под строкой
public OnPlayerSpawn(playerid)
Вставить строку PlayerPlaySound(playerid,1188,-262.8102,-2183.5281,28.9523);

Где id

1188
выключение музыки .
Вот и все , Спасибо за внимание.




1.>Делаю сайты<
2.>Требуются модераторы на сайт<
3.>Оплата за общение на форуме<
 
Белокуракинский форум » Игровой форум » GTA » Сервер, клиент и тд... ВСЕ о SAMP
  • Страница 1 из 1
  • 1
Поиск:
Использование материалов сайта и форума без согласия их авторов - запрещено. Использование прямых ссылок на файлы, находящиеся не на нашем сервере, категорически запрещено и жестко наказуемо (перманентный бан по IP). Все материалы, опубликованные на нашем ресурсе и доступные для скачивания файлы, предоставлены в сугубо ознакомительных целях. Администрация ресурса не несет никакой ответственности в любом ее виде за дальнейшее распространение информации! Если Вы увидели нарушение авторских прав - немедленно свяжитесь с администрацией. Хостинг от uCoz
Белокуракинский сайт (c) 20.08.2008-5.5.2024