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