Доступ к архиву

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

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

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

OnPlayerWeaponShot аналог для 0.3e

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

McLuhan

Компетентный
Пишу для CRMP, а там версия последняя: 0.3e

Мне нужно ловить, когда игрок делает выстрел из любого оружия (вобщем полный аналог функции OnPlayerWeaponShot), но эта функция доступна с 0.3z. и обновлять количество этого оружия в инвентаре.

Я решил эту проблему с использованием OnPlayerUpdate, но думаю что буду погрешности всеровно, да и не хотелось бы его использовать в этих целях.
Может у кого есть какие соображения?


Моё решение:
PHP:
GiveWeapon(playerid, gunid, ammo, invslot)
{
    new slot = GetSlotWeaponID(gunid);
    if(slot == -1) return 1;
	
    GivePlayerWeapon(playerid, gunid, ammo);
	invinfo[playerid][invslot][i_value] += ammo;
	invinfo[playerid][invslot][i_stuffid] = gunid;
	WEAPON_INVSLOT[playerid][slot] = invslot;
    return 1;
}

public OnPlayerUpdate(playerid)
{
	for(new islot = 0; islot < INV_MAX_SLOT; islot++)
	{
	    if(invinfo[playerid][islot][i_stuffid] < 1 || invinfo[playerid][islot][i_stuffid] > 46) continue;

	    new w = 0, a = 0, wslot = GetSlotWeaponID(invinfo[playerid][islot][i_stuffid]);
	    GetPlayerWeaponData(playerid, wslot, w, a);
	    printf("islot(%d), wslot(%d), weaponid(%d), w(%d), a(%d)", islot, wslot, invinfo[playerid][islot][i_stuffid], w, a);

		if(invinfo[playerid][islot][i_value] == 0)
		{
		    printf("i_value == 0 ====== ResetWeapon");
		    ResetWeapon(playerid, wslot);
		}
		if(a < 1) continue;
		if(invinfo[playerid][islot][i_value] != a)
	    {
		    invinfo[playerid][islot][i_value] = a;
	    }
	}
	return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу