05:27
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [FAQ] Создание чекпоинтов (Учимся создавать и пользоваться чекпоинтами.)
[FAQ] Создание чекпоинтов
Dima-kunДата: Четверг, 16.12.2010, 23:36 | Сообщение # 1
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
В данном уроке поговорим о том, как создавать и использовать чекпоинты.
Для начала рассмотрим как использовать обычные чекпоинты. Что для этого необходимо:
Функции:
а)SetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z,Float:size); - Создает маркер на установленном месте, и нужного размера.
Параметры:
playerid ID игрока, для которого создается чекпоинт
Float:x Х-координата
Float:y Y-координата
Float:z Z-координата
Float:size Размер чекпоинта.
б)IsPlayerInCheckpoint(playerid) - проверяет, находится ли игрок в чекпоинте
Параметры:
playerid - IDпроверяемого игрока.
в)DisablePlayerCheckpoint(playerid); - Функция прячет чекпоинт и дезактивирует его.
Параметры:
playerid - ID игрока, для которого чекпоинт должен исчезнуть.
Колбэки:
OnPlayerEnterCheckpoint(playerid) - срабатывает когда игрок входит в чекпоинт.
OnPlayerLeaveCheckpoint(playerid) - срабатывает в момент выхода игрока из чекпоинта

Стандартный код использования Чекпоинта:

Quote
#include <a_samp>
public OnPlayerSpawn(playerid)
{
SetPlayerCheckpoint(playerid,1232.122,1235.552,10.223423,3.0);// Координаты взяты из головы, только для примера.
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
GivePlayerMoney(playerid,500);
SendClientMessage(playerid,0x00FF00FF,"-! Чувак, вот тебе 500$");
DisablePlayerCheckpoint(playerid);// Если мы хотим, чтобы чекпоинт после этого исчез, то вставляем эту функцию.
return 1;
}

В данном скрипте при заходе на чекпоинт игроку будет даваться 500$ и чекпоинт исчезнет. Но в большинстве случаев, большинству необходимо, чтобы разные чекпоинты выполняли разные действия. Сейчас разберем следующий скрипт:

Quote
#include <a_samp>

new pCheckpoint[MAX_PLAYERS];// Массив, который будет содержать какое действие должен выполнять действующий чекпоинт.
enum // Воспользуемся конструкцей enum для создания состояния чекпонта, т.е. действующий чекпоинт должен давать деньги, или здоровье к примеру
{
CHECKPOINT_MONEY,
CHECKPOINT_HEALTH
}
public OnPlayerCommandText(playerid,cmdtext[]) // для данного примера, чекпоинты будут вызываться командой
{
if(!strcmp(cmdtext,"/checkmoney",true))
{
SetPlayerCheckpoint(playerid,1232.122,1235.552,10.223423,3.0);// Координаты взяты из головы, только для примера.
pCheckpoint[playerid]=CHECKPOINT_MONEY;// Т.е. мы скрипту даем понять, что чекпоинт должен давать деньги
return 1;
}
if(!strcmp(cmdtext,"/checkhealth",true))
{
SetPlayerCheckpoint(playerid,1232.122,1235.552,10.223423,3.0);// Координаты взяты из головы, только для примера.
pCheckpoint[playerid]=CHECKPOINT_HEALTH;// Т.е. мы скрипту даем понять, что чекпоинт должен давать здоровье
return 1;
}
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
switch(pCheckpoint[playerid])
{
case CHECKPOINT_MONEY:
{
GivePlayerMoney(playerid,500);
SendClientMessage(playerid,0x00FF00FF,"-! Чувак, вот тебе 500$");
DisablePlayerCheckpoint(playerid);// Если мы хотим, чтобы чекпоинт после этого исчез, то вставляем эту функцию.
return 1;
}
case CHECKPOINT_HEALTH:
{
new Float:health;
GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+10.0);
SendClientMessage(playerid,0x00FF00FF,"-! Чувак, вот тебе не много здоровья");
DisablePlayerCheckpoint(playerid);// Если мы хотим, чтобы чекпоинт после этого исчез, то вставляем эту функцию.
return 1;
}
}
return 1;
}

Но опять же, скрипт будет выполняться, только в момент входа игрока в чекпоинт. Сейчас мы попробуем сделать скрипт, который будет давать либо здоровье либо деньги, по желанию использующего.

Quote
#include <a_samp>
forward inCheckpoint();
new pCheckpoint[MAX_PLAYERS];// Массив, который будет содержать какое действие должен выполнять действующий чекпоинт.
enum // Воспользуемся конструкцей enum для создания состояния чекпонта, т.е. действующий чекпоинт должен давать деньги, или здоровье к примеру
{
CHECKPOINT_MONEY,
CHECKPOINT_HEALTH
}
public OnGameModeInit()
{
SetTimer("inCheckpoint",10000,true);// 1 раз в 10 секунд таймер будет выполняться
return 1;
}
public OnPlayerCommandText(playerid,cmdtext[]) // для данного примера, чекпоинты будут вызываться командой
{
if(!strcmp(cmdtext,"/checkmoney",true))
{
SetPlayerCheckpoint(playerid,1232.122,1235.552,10.223423,3.0);// Координаты взяты из головы, только для примера.
pCheckpoint[playerid]=CHECKPOINT_MONEY;// Т.е. мы скрипту даем понять, что чекпоинт должен давать деньги
return 1;
}
if(!strcmp(cmdtext,"/checkhealth",true))
{
SetPlayerCheckpoint(playerid,1232.122,1235.552,10.223423,3.0);// Координаты взяты из головы, только для примера.
pCheckpoint[playerid]=CHECKPOINT_HEALTH;// Т.е. мы скрипту даем понять, что чекпоинт должен давать здоровье
return 1;
}
return 1;
}

public inCheckpoint()
{
for(new idx=GetMaxPlayers();idx>=0;--idx)
{
if(IsPlayerConnected(idx)&&IsPlayerInCheckpoint(idx))
{
switch(pCheckpoint[idx])
{
case CHECKPOINT_MONEY:
{
GivePlayerMoney(idx,500);
SendClientMessage(idx,0x00FF00FF,"-! Чувак, вот тебе 500$");
return 1;
}
case CHECKPOINT_HEALTH:
{
GetPlayerHealth(playerid,health);
SetPlayerHealth(playerid,health+10.0);
SendClientMessage(idx,0x00FF00FF,"-! Чувак, вот тебе не много здоровья");
return 1;
}
}
}
}
return 1;
}

А теперь рассмотрим гоночные чекпоинты.
Функции:
а)SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size) - Создает гоночный чекпоинт
Парамерты:
playerid - ID для которого чекпоинт длжен появиться
type - Тип чекпоинта.0-Обычный, 1-Финишный, 2-Пустой чекпоинт(без стрелок внутри), 3-Воздушный обычный, 4-Воздушный финишный
Float:x - X-Координата
Float:y - Y-Координата
Float:z - Z-Координата
Float:nextx - X-Координата следующего чекпоинта, т.е. куда будет показываться стрелка.
Float:nexty - Y-Координата следующего чекпоинта, т.е. куда будет показываться стрелка.
Float:nextz - Z-Координата следующего чекпоинта, т.е. куда будет показываться стрелка.
Float:size - размер(Диаметр чекпоинта)
б)DisablePlayerRaceCheckpoint(playerid); - деактивирует и скрывает гоночный чекпоинт
Колбэки:
в)IsPlayerInRaceCheckpoint(playerid) - Проверяет, находится ли игрок в гоночном чекпоинте
а)OnPlayerEnterRaceCheckpoint(playerid) - Срабатывает когда игрок входит в гоночный чекпоинт
б)OnPlayerLeaveRaceCheckpoint(playerid) - Срабатывает когда игрок покидает гоночный чекпоинт

Простой пример скрипта:

Quote
#include <a_samp>
public OnPlayerSpawn(playerid)
{
SetPlayerRaceCheckpoint(playerid,2,1233.1222,1456.7442,15.1244,0.0,0.0,0.0,5.0);// Координаты взяты из головы. Координаты следующего чекпоинта 0.0, потому что тип чекпоинта 2, стрелки все равно не будет.
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
SendClientMessage(playerid,0xff0000ff,"It work.");
DisablePlayerRaceCheckpoint(playerid);
return 1;
}

Данный скрипт будет выдавать текст ,"It work.", и исчезнет гоночный чекпоинт. Сейчас мы попробуем написать простеший скрипт гонки:

Quote
#include <a_samp>
new race[MAX_PLAYERS];// Массив будет отслеживать на каком этапе игрок.
new Float:Race[3][6]= {
{12.1234,15.5112,20.2222,15.2122,9.2322,16.2322},
{15.2122,9.2322,16.2322,18.1233,7.1222,14.0002},
{18.1233,7.1222,14.0002,0.0,0.0,0.0}
};// Массив с этапами гонки, в данномпримере всего 3 этапа, но вы можете сделать больше по своему желанию
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/racestart",true))
{
race[playerid]=0;
SetPlayerRaceCheckpoint(playerid,2,Race[race[playerid]][0],Race[race[playerid]][1],Race[race[playerid]][2],0.0,0.0,0.0,5.0);// Координаты следющего чекпоинта 0.0 потому что тип чекпонита 2.
return 1;
}
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
race[playerid]++;
if(race[playerid]<sizeof(Race))SetPlayerRaceCheckpoint(playerid,0,Race[race[playerid]][0],Race[race[playerid]][1],Race[race[playerid]][2],Race[race[playerid]][3],Race[race[playerid]][4],Race[race[playerid]][5],5.0);// А тут присутствуют координаты следующего чекпоинта, потому что тип чекпоинта 0.
else if(race[playerid]==sizeof(Race)) DisablePlayerRaceCheckpoint(playerid);

return 1;
}

Вот это собственно все, что я хотел Вам передать.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints


Сообщение отредактировал Morino_Reigan - Пятница, 17.12.2010, 00:21
DiSEДата: Пятница, 17.12.2010, 09:24 | Сообщение # 2
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Спасибо. Нужно будет когда чекпоинты чекпоинты пригодяться=)
SMOUKДата: Пятница, 17.12.2010, 14:20 | Сообщение # 3
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Давно мучал этот вопрос.
Каким способом можно дать чекпоинту как бе свой айди. ? Что бы каждый чекпоинт работал для своей функции в паблике EnterPlayerCheckpoint.

Спасибо. ))


Makar_PogorelovДата: Среда, 22.12.2010, 21:34 | Сообщение # 4
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
Morino_Reigan, Извини плиз.Ты мне очень помог!

Добавлено (22.12.2010, 21:34)
---------------------------------------------
Научи ещё плиз делать рандомные сообщеня.Я по вики сделал.Но на серве они оторбражаются почемуто не команда а анда не работа а ота.

SMOUKДата: Среда, 22.12.2010, 21:42 | Сообщение # 5
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Уже разобрался... ))


cs12Дата: Суббота, 08.01.2011, 21:09 | Сообщение # 6
Новенький
Группа: Пользователи
Сообщений: 2
Награды: 1
Город: Дмитрав
Репутация: 0
Замечания: 0%
Статус:
Morino_Reigan, Привет, помоги пожалууууйста! Никак не получается создать гонку по чекпоинтам, не поможешь? Вот координаты:
Code
{1947.2637,-2494.6052,13.2428,2068.0979,-2512.1426,13.2522},
{2068.0979,-2512.1426,13.2522,2099.5132,-2539.2046,13.2519},
{2099.5132,-2539 .2046,13.2519,2034.9290,-2600.3882,13.2523},
{2034.9290,-2600.3882,13.2523,1933.1448,-2650.8208,13.2523},
{1933.1448,-2650.8208,13.2523,18 71.3201,-2693.4590,13.2523},
{1871.3201,-2693.4590,13.2523,1846.3051,-2647.1489,13.2527},
{1846.3051,-2647.1489,13.2527,1665.6466,-2595.64 14,13.2523},
{1665.6466,-2595.6414,13.2523,1389.5391,-2586.9126,15.2121},
{1389.5391,-2586.9126,15.2121,1297.2705,-2590.6316,12.3683},
{1 297.2705,-2590.6316,12.3683,0.0,0.0,0.0}

буду признателен! А то у меня никак не получается! не разобрался я никак! не дано!

Dima-kunДата: Суббота, 08.01.2011, 22:15 | Сообщение # 7
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
тупо всунь свои корды в мой скрипт.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
СнипДата: Суббота, 22.01.2011, 21:51 | Сообщение # 8
Группа: Пользователи
Сообщений: 814
Награды: 68
Город: Budapesta
Репутация: 303
Замечания: 100%
Статус:
Спасибо,всё получилось)








Ты знаешь всё хурумс©
klimДата: Понедельник, 24.01.2011, 17:12 | Сообщение # 9
Группа: Продвинутые
Сообщений: 628
Награды: 17
Город: дорог
Репутация: 628
Замечания: 60%
Статус:
Пособие для новичков - хорошо.


Нубо фотошопер. Рисую макеты сайтов/веб-графику и прочий бред. Естественно не бесплатно. ЛС в помощь)
chopa_chopsДата: Вторник, 15.03.2011, 17:48 | Сообщение # 10
Освоившийся
Группа: Пользователи
Сообщений: 77
Награды: 0
Город: Riga
Репутация: 9
Замечания: 20%
Статус:
как сделать такое чтобы чекпоинт не исчезал когда игрок на него зайдет?


77.220.180.56:7777
Role play сервер с отличным модом...

p.s админы этого сайта если нельзя рекламить в подписи..
не баньте не знал просто уберите подпись

Dima-kunДата: Вторник, 15.03.2011, 20:04 | Сообщение # 11
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
ну убери disableplayercheckpoint


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
14_KaPaTДата: Среда, 16.03.2011, 08:10 | Сообщение # 12
Уверенный в себе
Группа: Продвинутые
Сообщений: 227
Награды: 3
Город: Харьков
Репутация: 49
Замечания: 20%
Статус:
Morino_Reigan пример захвата территории чекпоинтом с таймером не покажешь ?


<<<Разбаньте ёмаё =)>>>

Rouch ты обиделся на смайлик задницу, значит ты обиженник, с тобой шутить нельзя, я все понял =)

Скачать Track 14 Карат(Feat Escape).mp3
Прослушать Track 14 Карат(Feat Escape)

Dima-kunДата: Среда, 16.03.2011, 12:05 | Сообщение # 13
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
14_KaPaT, что-то вроде запуска таймера при заходе на чекпоинт. а в таймере проверка находится ли игрорк в этом чекпоинте


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
14_KaPaTДата: Среда, 16.03.2011, 15:04 | Сообщение # 14
Уверенный в себе
Группа: Продвинутые
Сообщений: 227
Награды: 3
Город: Харьков
Репутация: 49
Замечания: 20%
Статус:
Да не, ну это понятно, мне нужен сам процесс захвата, когда территория перекрашивается после окончания тамера
Quote (Morino_Reigan)
14_KaPaT, что-то вроде запуска таймера при заходе на чекпоинт. а в таймере проверка находится ли игрорк в этом чекпоинте

хм.... ну я понял :) ладно...


<<<Разбаньте ёмаё =)>>>

Rouch ты обиделся на смайлик задницу, значит ты обиженник, с тобой шутить нельзя, я все понял =)

Скачать Track 14 Карат(Feat Escape).mp3
Прослушать Track 14 Карат(Feat Escape)

[A]Le[X]and[R]Дата: Воскресенье, 10.04.2011, 04:33 | Сообщение # 15
Новенький
Группа: Пользователи
Сообщений: 37
Награды: 0
Город: Владивосток
Репутация: -8
Замечания: 0%
Статус:
А как сделать пикап маркер к воротам чтоб он появлялся только когда к нему подходишь в плотную и исчезал когда от него отойдешь?
На многих серверах так в основном около ворот и на заправках

Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [FAQ] Создание чекпоинтов (Учимся создавать и пользоваться чекпоинтами.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua