the timer is running through time -
Imperealist - 16.09.2016
The timer is invoked through time from a particular point code
Code:
Код:
stock CarryUP(playerid, job)
{
KillTimer(CarryTimer[playerid]);
CarryTimer[playerid] = SetTimerEx("_CarryUP", 800, false, "ii", playerid, job);
MyApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0);
}
Public: _CarryUP(playerid, job)
{
MySetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
if(job == 1) SetPlayerAttachedObject(playerid, ATTACH_SLOT_JOB, 2060, 1, 0.044, 0.36, -0.049, 0.0, 90.0, 0.0);
else if(job == 2) SetPlayerAttachedObject(playerid, ATTACH_SLOT_JOB, 2969, 1, 0.009, 0.344, -0.024, 0.0, 90.0, 0.0);
else if(job == 3) SetPlayerAttachedObject(playerid, ATTACH_SLOT_JOB, 1271, 1, 0.311, 0.579, 0.0, 0.0, 90.0, 0.0); // Подработка грузчиком на базе дальнобойщиков
else if(job == 4) SetPlayerAttachedObject(playerid, ATTACH_SLOT_JOB, FARM_GRASS_OBJECT, 17, -0.074, 0.35, 0.065, 331.51, 271.87, 321.75, 0.831, 1.0, 0.748); // работа на ферме
return true;
}
There are many calls these functions work correctly,
however, in one system there were problems:
Code In OnPlayerEnterDynamicArea(playerid, areaid):
Код:
if(IsPlayerInAnyVehicle(playerid) == 0)
{
foreach(Player, i)
{ // хуй
if(areaid != g_FarmVehiclePoint[i]) continue;
new vehicleid = g_FarmPlayerVID[i];
new farmid = 0;
if(GetVehicleBoot(vehicleid) == false)
{
return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Кузов закрыт, откройте его командой /open.");
}
new Float:dist = GetDistanceFromMeToPoint(playerid, Arr3<FarmZones[farmid][fzStock]>);
if(g_FarmPlayerGrass{playerid})
{
if(dist < 10.0) return true;
if(g_FarmVehicleGrass[vehicleid] >= MAX_VEHICLE_GRASS)
{
return ShowPlayerHint(playerid, "~y~КYЗОВ ЗАПОЛНЕН~n~~w~Используйте ~y~/drop~w~, чтобы положить траву на землю");
}
g_FarmVGrassObjects[vehicleid][ g_FarmVehicleGrass[vehicleid] ] = CreateDynamicObject(FARM_GRASS_OBJECT, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
if(g_FarmVehicleGrass[vehicleid] < MAX_VEHICLE_GRASS / 2)
{
AttachDynamicObjectToVehicle(g_FarmVGrassObjects[vehicleid][ g_FarmVehicleGrass[vehicleid] ], vehicleid, 0.0, -0.8 - (0.5 * g_FarmVehicleGrass[vehicleid]), 0.2, 0.5, 0.5, 0.5);
}
else
{
AttachDynamicObjectToVehicle(g_FarmVGrassObjects[vehicleid][ g_FarmVehicleGrass[vehicleid] ], vehicleid, 0.0, -0.8 - (0.5 * (g_FarmVehicleGrass[vehicleid] - MAX_VEHICLE_GRASS / 2)), 0.5, 0.5, 0.5, 0.5);
}
_CarryDown(playerid);
FarmPlayer[playerid] = 0;
g_FarmPlayerGrass{playerid} = 0;
if(++g_FarmVehicleGrass[vehicleid] == MAX_VEHICLE_GRASS)
{
SendClientMessage(i, COLOR_LIGHTGREEN, "> Кузов заполнен, отвезите урожай на склад фермы и разгрузите его.");
FarmDeleteVPoint(i);
}
}
else if(g_FarmVehicleGrass[vehicleid] > 0 && dist < 10.0)
{
if(--g_FarmVehicleGrass[vehicleid] == 0) FarmDeleteVPoint(i);
DestroyDynamicObject(g_FarmVGrassObjects[vehicleid][ g_FarmVehicleGrass[vehicleid] ]);
g_FarmPlayerGrass{playerid} = 1;
FarmPlayer[playerid] = farmid;
CarryUP(playerid, 4);
//gPickupTime[playerid] = 0;
}
return true;
}
}
and OnPlayerPickUpDynamicPickup:
Код:
for(new f = 0; f < sizeof(FarmInfo); f++)
{
if(FarmInfo[f][fPickup] == pickupid)
{
if(f == FarmPlayer[playerid] && g_FarmPlayerGrass{playerid})
{ // Farm
CarryDown(playerid);
//GivePlayerEXPInTime(playerid, 4);
PlayerInfo[playerid][pWage] += PRICE_FARMER * 0.735; // Доставка единицы посева
g_FarmPlayerGrass{playerid} = 0;
FarmPlayer[playerid] = 0;
gPickupTime[playerid] = 3;
}
}
else if(FarmInfo[f][fStatus] == FSTATUS_GATHER)
{
for(new p = 0; p < sizeof(FarmGrassObjects[]); p++)
{
if(pickupid == FarmGrassObjects[f][p])
{
if(g_FarmPlayerGrass{playerid}) return true;
DestroyDynamicPickup(FarmGrassObjects[f][p]), FarmGrassObjects[f][p] = 0;
CarryUP(playerid, 4);
g_FarmPlayerGrass{playerid} = 1;
FarmPlayer[playerid] = f;
if(++FarmInfo[f][fHarvest] == FarmInfo[f][fMaxCount])
{
SendFarmMessage(f, 300.0, COLOR_LIGHTGREEN, "> Урожай собран, можно приступать к новому засеиванию поля!");
FarmInfo[f][fStatus] = FSTATUS_NONE;
FarmInfo[f][fHarvest] = 0;
FarmInfo[f][fCount] = 0;
}
return FarmUpdate3D(f);
}
}
}
}
After a time not called _CarryUP timer
There is no connection between the moments when the call when it is not - not found
Broke my head already
I hope that you understand at least something of my sludge English
Thx
Re: the timer is running through time -
Imperealist - 16.09.2016
So far, the conclusion is that the timer is not working properly in some code points.
Forgot to add that the timer can be triggered by an indefinite period, for example 10-20 seconds or more