#Djuga
Специалист
Здравствуйте уважаемые пользователи портала
Сегодня я для вас решил сделать копию системы с крупного проекта, это "Система закладок"
Сегодня я для вас решил сделать копию системы с крупного проекта, это "Система закладок"
[HR][/HR]
Описание
Система закладок. По всему району гетто, вы сможете найти пачки с наркотиками, которые будут рандомно размещены
возле кустов, мусорок, лавочек и других мест закрытых для глаз обычных людей. Местоположение точек, никогда не изменяется, по этому их придется выучить, а обновление части закладок будет происходить каждые 30 минут. С каждой точки, вы сможете получить до 8 единиц товара.
возле кустов, мусорок, лавочек и других мест закрытых для глаз обычных людей. Местоположение точек, никогда не изменяется, по этому их придется выучить, а обновление части закладок будет происходить каждые 30 минут. С каждой точки, вы сможете получить до 8 единиц товара.
[HR][/HR]
1. Ко всем константам:
PHP:
const MAX_DRUGS = 1;
2. Ко всем enum:
PHP:
enum drugS_ENUM
{
bool:dStatus,
Float:dPosX,
Float:dPosY,
Float:dPosZ,
dObject
}
new drugInfo[MAX_DRUGS][drugS_ENUM] =
{
{true, 0.000, 0.000, 2.000}
};
bool:dStatus, - Статус закладки, после поднятия, статус меняется на false, дабы игрок не смог много раз поднимать наркоту.
Float:dPosX - Позиция закладки X.
Float:dPosY - Позиция закладки Y.
Float:dPosZ - Позиция закладки Z.
dObject - Объект, который после поднятия закладки - исчезает.
[HR][/HR]
3. В коллбэк OnGameModeInit:
PHP:
CreateDrugsPackages();
CreateDrugsPackages - Создание закладок при запуске сервера
[HR][/HR]
4. Ко всем стокам:
PHP:
CreateDrugsPackages()
{
for(new i; i < MAX_DRUGS; i++)
{
drugInfo[i][dObject] = CreateObject(1580, drugInfo[i][dPosX], drugInfo[i][dPosY], drugInfo[i][dPosZ], 0.000, 0.000, 0.000);
drugInfo[i][dStatus] = true;
}
return SetTimer("@__CreateDrugPackage", 1800*1000, false);
}
for(new i; i < MAX_DRUGS; i++) - Создаём цикл на MAX_DRUGS итераций.
drugInfo[dObject] = CreateObject... - Создаём объект на заданных координатах.
drugInfo[dStatus] = true - Даём доступ на поднимание закладки.
return SetTimer("@__CreateDrugPackage", 1800*1000, false) - Устанавливаем таймер на 30 минут, для респавна закладок.
[HR][/HR]
5. Ко всем коллбэкам:
PHP:
@__CreateDrugPackage();
@__CreateDrugPackage() return CreateDrugsPackages();
@__CreateDrugPackage() return CreateDrugsPackages() - Вызываем сток для спавна закладок.
[HR][/HR]
6. В коллбэк OnPlayerKeyStateChange:
PHP:
if(newkeys == KEY_WALK)
{
for(new i; i < MAX_DRUGS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 2, drugInfo[i][dPosX], drugInfo[i][dPosY], drugInfo[i][dPosZ]))
{
if(drugInfo[i][dStatus] == false)
continue;
new
string[12],
amount = random(8);
SendClientMessage(playerid, -1, (amount == 0) ? ("Вы ничего не нашли.") : ("Вы нашли наркотики!"));
format(string, sizeof string, "~r~Drugs +%d", amount);
GameTextForPlayer(playerid, string, 5000, 6);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 5.1, 0, 0, 1, 0, 2000, 1);
//PlayerInfo[playerid][pDrugs] += amount; Пример выдачи наркотиков
drugInfo[i][dStatus] = false;
DestroyObject(drugInfo[i][dObject]);
break;
}
}
}
if(newkeys == KEY_WALK) - Проверяем на какую клавишу нажал игрок, сейчас она ALT
for(new i; i < MAX_DRUGS; i++) - Задаём цикл, на N итераций
if(IsPlayerInRangeOfPoint(playerid, 1, drugInfo[dPosX], drugInfo[dPosY], drugInfo[dPosZ])) - Проверяем находиться ли игрок рядом с закладкой
if(drugInfo[dStatus] == false) continue; - Если статус закладки равен false, пропускаем итерацию.
SendClientMessage - Отправляем сообщение в чат.
string[12], - массив, который в дальнейшем будет использоваться при форматировании текста.
amount = random(8); - переменная, которой присваиваем рандомное число, от 0 до 8.
format(string, sizeof string, "~r~Drugs +%d", amount); - форматируем текст.
GameTextForPlayer(playerid, string, 5000, 6); - Выводим текст на экран.
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 5.1, 0, 0, 1, 0, 2000, 1); - Присваиваем игроку анимацию.
drugInfo[dStatus] = false; - Делаем статус закладки false.
DestroyObject(drugInfo[dObject]); - Удаляем объект.
break; - Прекращаем работу цикла.
[HR][/HR]
[HR][/HR]
[HR][/HR]
При размещении на других порталах, указывайте автора - #Djuga.
Последнее редактирование:
