Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Убираем флуд пикапа

Статус
В этой теме нельзя размещать новые ответы.

MrPochan

Ученик
Искал на просторах инета и находил примерные мануалы, но очень не понятные. Что-то не то или не так там. Вот решил свою версию, может БАЯН, но кому-то пригодится.

1) Меняем обычные CreatePickup например на CreatPickup2
2) В начала кода пишем:
PHP:
enum PickInfo { Float: PickX, Float: PickY, Float: PickZ};
new PickupInfo[MAX_PICKUPS][PickInfo];
CreatePickup2(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0)
{
	new TempID = CreatePickup(model, type, X, Y, Z, virtualworld);
	PickupInfo[TempID][PickX] = X;
	PickupInfo[TempID][PickY] = Y;
	PickupInfo[TempID][PickZ] = Z;
	return TempID;
}
Мы получили следующие. Мы знаем координаты всех пикапов по pickupid;
3) Добавляем в OnPlayerPickUpPickup
PHP:
if(GetPVarInt(playerid,"PICKUP") == 1 && pickupid == GetPVarInt(playerid,"PICKUPID")) return 1;
	SetPVarInt(playerid,"PICKUP",1);
	SetPVarInt(playerid,"PICKUPID",pickupid);
	SetPVarFloat(playerid,"PICKUPX",PickupInfo[pickupid][PickX]);
	SetPVarFloat(playerid,"PICKUPY",PickupInfo[pickupid][PickY]);
	SetPVarFloat(playerid,"PICKUPZ",PickupInfo[pickupid][PickZ]);
4) Добавляем в секундный таймер:
PHP:
foreach(Player, a)
	{
        if(GetPVarInt(a,"PICKUP") == 1 && floatround(GetPlayerDistanceFromPoint(a,GetPVarFloat(a,"PICKUPX"),GetPVarFloat(a,"PICKUPY"),GetPVarFloat(a,"PICKUPZ"))) > 3)
		{
			DeletePVar(a,"PICKUP");
			DeletePVar(a,"PICKUPID");
			DeletePVar(a,"PICKUPX");
			DeletePVar(a,"PICKUPY");
			DeletePVar(a,"PICKUPZ");
		}
}

P.S.: Можно и без CreatePickup2
Просто через GetPlayerPos. Но тут я сделал так, так как у меня в моде еще проверка на анти-чит, что не брали из далека пикап )

2-ой вариант решения проблемы:
1) Добавляем в начало OnPlayerPickUpPickup
PHP:
if(GetPVarInt(playerid,"PICKUP") == 1 && pickupid == GetPVarInt(playerid,"PICKUPID")) return 1;
	SetPVarInt(playerid,"PICKUP",1);
	SetPVarInt(playerid,"PICKUPID",pickupid);
        new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid, X, Y, Z);
	SetPVarFloat(playerid,"PICKUPX",X);
	SetPVarFloat(playerid,"PICKUPY",Y);
	SetPVarFloat(playerid,"PICKUPZ",Z);
2) В сек. таймер:
PHP:
foreach(Player, a)
	{
        if(GetPVarInt(a,"PICKUP") == 1 && floatround(GetPlayerDistanceFromPoint(a,GetPVarFloat(a,"PICKUPX"),GetPVarFloat(a,"PICKUPY"),GetPVarFloat(a,"PICKUPZ"))) > 3)
		{
			DeletePVar(a,"PICKUP");
			DeletePVar(a,"PICKUPID");
			DeletePVar(a,"PICKUPX");
			DeletePVar(a,"PICKUPY");
			DeletePVar(a,"PICKUPZ");
		}
}
Всё так же работает, но без CreatePickUp2

Вуаля и всё работает!
Всем пикапам ставим 23 тип.
Если было - то извиняюсь! Не нашел )
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу