Ötletem van a megvalósításra, de kedvem nincs hozzá.
Egyszerre csak 1et lehet lerakni megoldás.
Ha leraksz egy szögesdrótot egy boolean változó értékét igazra állítod. Elindítasz egy timert, ami az összes csatlakozott játékossal lefuttatja, hogy a szögesdrótnál van-e. ( IsPlayerInRangeOfPoint ) Ha ott van, akkor UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);.
Remélem azért valamennyit segítettem.
Edit:
Mégis megírtam, mûködik, tessék.
Parancsok: /kirak, /berak
#include a_samp
#include zcmd
new bool:szogesdrot, drot, timer, Float:x, Float:y, Float:z, Float:Fordulas;
forward szogestimer();
CMD:kirak(playerid, params[])
{
if(szogesdrot == true) return SendClientMessage(playerid,0xff0000AA,\"Figyelem.Már raktak le szögesdrótot, ha leraksz még egyet, a régit nem lehet felvenni.\"), szogesdrot = false;
szogesdrot = true;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, Fordulas);
timer = SetTimer(\"szogestimer\", 1000, true);
DestroyObject(drot);
drot = CreateObject(2892, x-1, y, z-1, 0.0, 0.0, Fordulas);
SendClientMessage(playerid,0x009924AA,\"Leraktál egy szögesdrótot. Felvenni a /berak paranccsal tudod.\");
return 1;
}
CMD:berak(playerid, params[])
{
szogesdrot = false;
DestroyObject(drot);
KillTimer(timer);
SendClientMessage(playerid,0x009924AA,\"Felszedtél egy szögesdrótot.\");
return 1;
}
public OnPlayerUpdate(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
new panels, doors, lights, tires;
GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
if(szogesdrot == true && IsPlayerInRangeOfPoint(playerid, 4.0, x, y, z) && IsPlayerInAnyVehicle(playerid)) UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);
return 1;
}