Функция проверяет (ищет первый свободный) слот для прикрепления объекта. Так как на некоторых серверах многое цепляется на игрока, да и я делал пару работ с объектами, то поиск идёт с конца.
Код
stock GetFreeAttachSlot(playerid)
{
for(new i = 9; i >= 0; i--)
{
if(IsPlayerAttachedObjectSlotUsed(playerid, i)) continue;
return i;
}
return -1;
}
Пример использования из темы про снег на сервере:
Код
SetPlayerAttachedObject(playerid, GetFreeAttachSlot(playerid), 18864, 1, -9.0, 0.0, 3.2229, 33.0, 139.1, 45.0, 0.1640, 0.1349, 0.3170, 0xFFFFFFFF);
Для серверов с динамической системой прикрепления объектов, рекомендую найденный слот писать в PVar. Либо каждый:
Код
SetPVarInt(playerid, "Slot_Object_01", GetFreeAttachSlot(playerid));
SetPlayerAttachedObject...
SetPVarInt(playerid, "Slot_Object_02", GetFreeAttachSlot(playerid));
SetPlayerAttachedObject...
SetPVarInt(playerid, "Slot_Object_03", GetFreeAttachSlot(playerid));
SetPlayerAttachedObject...
Либо только последний, если не планируется во время аттача одно объекта цеплять другой. Либо если не в каждом случае требуется искать свободный слот:
Код
SetPVarInt(playerid, "LastFreeSlot", GetFreeAttachSlot(playerid));
Автор: OKStyle