16.09.2016, 00:41
The timer is invoked through time from a particular point code
Code:
There are many calls these functions work correctly,
however, in one system there were problems:
Code In OnPlayerEnterDynamicArea(playerid, areaid):
and OnPlayerPickUpDynamicPickup:
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
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;
}
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;
}
}
Код:
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);
}
}
}
}
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

