Активный
- Тема Автор
- #1
Пикапы создают интерактивность. Разберем продвинутые техники.
Динамические пикапы
Автоматический респавн
Важные моменты:
- Управляйте пикапами централизованно
- Реализуйте систему респавна
- Оптимизируйте проверки
- Сохраняйте данные пикапов
Продвинутые пикапы улучшают интерактивность!
Динамические пикапы
Код:
enum PickupInfo
{
pModel,
pType,
Float:pX,
Float:pY,
Float:pZ,
pWorld,
pPickupID,
pRespawnTime
}
new PickupData[100][PickupInfo];
new TotalPickups = 0;
CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid, respawnTime)
{
if(TotalPickups >= sizeof(PickupData))
{
return -1;
}
PickupData[TotalPickups][pModel] = modelid;
PickupData[TotalPickups][pType] = type;
PickupData[TotalPickups][pX] = x;
PickupData[TotalPickups][pY] = y;
PickupData[TotalPickups][pZ] = z;
PickupData[TotalPickups][pWorld] = worldid;
PickupData[TotalPickups][pRespawnTime] = respawnTime;
PickupData[TotalPickups][pPickupID] = CreatePickup(modelid, type, x, y, z, worldid);
TotalPickups++;
return TotalPickups - 1;
}
Автоматический респавн
Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i = 0; i < TotalPickups; i++)
{
if(PickupData[i][pPickupID] == pickupid)
{
// Удаление пикапа
DestroyPickup(pickupid);
// Респавн через указанное время
if(PickupData[i][pRespawnTime] > 0)
{
SetTimerEx("RespawnPickup", PickupData[i][pRespawnTime] * 1000, false, "i", i);
}
break;
}
}
return 1;
}
forward RespawnPickup(pickupindex);
public RespawnPickup(pickupindex)
{
PickupData[pickupindex][pPickupID] = CreatePickup(
PickupData[pickupindex][pModel],
PickupData[pickupindex][pType],
PickupData[pickupindex][pX],
PickupData[pickupindex][pY],
PickupData[pickupindex][pZ],
PickupData[pickupindex][pWorld]);
}
Важные моменты:
- Управляйте пикапами централизованно
- Реализуйте систему респавна
- Оптимизируйте проверки
- Сохраняйте данные пикапов
Продвинутые пикапы улучшают интерактивность!