Предложение от Kot_Morozik

Kot_Morozik

Новобранец
3 Авг 2024
8
0
1
Имя пользователя: Kot_Morozik

Ваш NickName: Kot_Morozik

Суть предложения: Система быстрого лечения так как в больнеце лечение долгое

Примерный вид: Здравствуйте всем, сегодня я хочу показать вам готовое решение, которого вроде нет на форуме.(лично я не увидел)

Пикап, который можно поставить около ларька или в больнице. Он выдает хп, но забирает определенную сумму денег.

1. Начнём, в OnGameModeInit:

CreatePickup(1240, 23, x,y,z, -1);
paste_plain.png


Типо объяснение:
x,y,z - это координаты, где будет стоять пикап. Чтобы их получить, встаньте в то место, где хотите пикап и пропишите /save название.
Найти их можно по пути C:\Users\вы\Documents\GTA San Andreas User Files\SAMP в файле savedpositions.txt
Пример координат

AddPlayerClass(0,1847.2770,-1871.6558,13.5781,270.0824,0,0,0,0,0,0);
paste_plain.png


Первое число (0) - это ваш скин, в котором вы были.
Следующие три значения(у меня это 1847.2770,-1871.6558,13.5781) являются координатами. Их мы и ставим.
Дальше про пикап. 1240 - это айди пикапа, то есть его моделька(1240 это сердечко). 23 - это тип пикапа. Именно этот берётся, но не исчезает. -1 означает то, что пикап виден во всех виртуальных мирах.

2. Поднятие пикапа на ALT и выведение диалога.

Я сделаю так, чтобы пикап можно поднять на ALT.
В OnPlayerKeyStateChange:

if(newkeys == KEY_WALK && IsPlayerInRangeOfPoint(playerid, 3.0, x,y,z))
{
ShowPlayerDialog(playerid, 1007, DIALOG_STYLE_MSGBOX, "Покушать в ларьке", "Вы можете покушать за 500$ и полностью восстановить здоровье.", "Купить", "Отмена");
}
paste_plain.png


Объясню про IsPlayerInRangeOfPoint. Вместо x,y,z ставим координаты нашего пикапа. 3.0 это расстояние , на котором будет работать ALT.
Диалог можете сделать свой.

3. Восстановление здоровья и отбор денег у игрока.
В OnDialogResponse:

if(dialogid == 1007)
{
if(response)
{
if(pInfo[playerid][pMoney] >= 500)
{
pInfo[playerid][pMoney] -=500;
GivePlayerMoney(playerid, -500);
SetPlayerHealth(playerid, 100);
SendClientMessage(playerid, Color_Green, "Вы успешно поели и восстановили здоровье!");
}
else SendClientMessage(playerid, 0xFF0000FF, "У Вас недостаточно средств!");
}
}
paste_plain.png


Итак, объясню.
if(pInfo[playerid][pMoney] >= 500)
paste_plain.png


Проверка на то, есть ли у нас 500$, чтобы оплатить. Если же нет, то нам напишет:
else SendClientMessage(playerid, 0xFF0000FF, "У Вас недостаточно средств!");
paste_plain.png



pInfo[playerid][pMoney] -=500;
paste_plain.png


Мы вычитаем из нашей переменной с деньгами 500$ или же столько, сколько вы хотите, чтобы отняло. Если убрать эту строчку, то будет вычитать и сразу возвращать.
GivePlayerMoney(playerid, -500);
paste_plain.png


Вычитаем из счётчика в игре.
SetPlayerHealth(playerid, 100);
paste_plain.png


Выдаёт игроку 100 хп. Можете изменить на ваше значение.

Выбрать категорию предложения Персонаж