PDA

Просмотр полной версии : [Вопрос] Вопрос с пикапом



Dima_Tushin
19.09.2016, 21:19
Привет всем нашел еще один баг или ошибка в коде не-знаю вообщем на сервере я сделал 3 фуры для SFa армии и взаимодействие пикапа с машиной. Суть ошибки работают только 2 пикапа из 3. как сделать чтобы все 3 пикапа с машинами функционировали

Код:


//Для Армии
new SFaCar[3];//Матовозы армии SF
new ArmyPickup[3];
new Text3D:ArmyText3D[3];
new ArmyTime[MAX_PLAYERS];
enum MtLoad
{
LoadMater[3],//количество машин
}
new LoadMats[1][MtLoad];



if(carid >= SFaCar[0] && carid <= SFaCar[2])
{
if(PlayerInfo[playerid][pMember] == 7 || PlayerInfo[playerid][pLeader] == 7)
{
for(new i = 0; i < sizeof(LoadMats); i++)
{
new mID = GetArmyCar(playerid);
if(LoadMats[i][LoadMater][mID] < 10000)
{
new string[50+MAX_PLAYER_NAME-2];
static const mload[] = "Материалы в машине: %d / 10000";
format(string, sizeof(string), mload, LoadMats[i][LoadMater][mID]);
SendClientMessage(playerid, COLOR_GREEN, string);
}
else
{
new string[50+MAX_PLAYER_NAME-2];
static const mload[] = "Материалы в машине: %d / 10000";
format(string, sizeof(string), mload, LoadMats[i][LoadMater][mID]);
SendClientMessage(playerid, COLOR_GREEN, string);
}
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не солдат армии SFa!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}


stock GetArmyPickup(pickupid)
{
if(ArmyPickup[0] == pickupid) return 0;
return 1;
}

stock GetArmyCar(playerid)
{
new carid = GetPlayerVehicleID(playerid);
if(SFaCar[0] == carid) return 0;
return 1;
}



SFaCar[0] = AddStaticVehicleEx(433,-1339.9487000,458.8376000,7.2831000,0.0000000,-1,-1,3600); //Barracks
SFaCar[1] = AddStaticVehicleEx(433,-1344.7590000,458.8272000,7.2831000,0.0000000,-1,-1,3600); //Barracks
SFaCar[2] = AddStaticVehicleEx(433,-1348.7590000,458.8272000,7.2831000,0.0000000,-1,-1,3600); //Barracks


public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
if(pickupid == ArmyPickup[0] || pickupid == ArmyPickup[1] || pickupid == ArmyPickup[2])
{
new mID = GetArmyPickup(pickupid);
for(new i = 0; i < sizeof(LoadMats); i++)
{
if(LoadMats[i][LoadMater][mID] > 9900)
{
LoadMats[i][LoadMater][mID] = 10000;
DestroyDynamicPickup(ArmyPickup[mID]);//Удалили пикап
Delete3DTextLabel(ArmyText3D[mID]);//Удалили текст
SendClientMessage(playerid, COLOR_WHITE, "Грузовик полон!");
return 1;
}
else
{
if(!IsPlayerAttachedObjectSlotUsed(playerid, 1)) return SendClientMessage(playerid, COLOR_WHITE, "У вас нет материалов на руках!");
LoadMats[i][LoadMater][mID] += 1000;
GameTextForPlayer(playerid, "~b~count:~w~+1000", 1000, 1);
new string[30+MAX_PLAYER_NAME-2];
static const mload[] = "Груз:\n %d / 10000";
format(string, sizeof(string), mload, LoadMats[i][LoadMater][mID]);
Update3DTextLabelText(ArmyText3D[mID], COLOR_YELLOW, string);
if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
}
}
return 1;
}
}
Таймер


for(new q = 0; q < sizeof(LoadMats); q++)
{
if(ArmyTime[i] > 0)
{
ArmyTime[i]--;
if(ArmyTime[i] == 0)
{
ArmyTime[i] = 0;
new carid = GetPlayerVehicleID(i);
new mID = GetArmyCar(i);
GetVehiclePos(carid, X12, Y12, Z12);
GetXYInFrontOfPlayer(i, X12, Y12, -6);
new string[15+MAX_PLAYER_NAME-2];
static const army[] = "Груз: %d / 10000";
format(string, sizeof(string), army, LoadMats[q][LoadMater][mID]);
ArmyPickup[mID] = CreateDynamicPickup(19197, 23, X12, Y12, Z12);
ArmyText3D[mID] = Create3DTextLabel(string, COLOR_YELLOW, X12, Y12, Z12, 15.0, 0, 1);
GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(carid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
SendClientMessage(i, COLOR_WHITE, "{0289CC}Машина на месте. Теперь вы и ваши солдаты, могут загружать её");
return 1;
}
}
}

bred
20.09.2016, 16:42
Попробуй так:

if(pickupid >= ArmyPickup[0] && pickupid <= ArmyPickup[2])

Dima_Tushin
21.09.2016, 09:14
Попробуй так:

if(pickupid >= ArmyPickup[0] && pickupid <= ArmyPickup[2])

Думаешь я этого не про бывал - Не работает!

BadPawn
21.09.2016, 10:07
Ты спросил - тебе ответили. Мне почём знать, что ты пробовал, а что нет?

Явно ведь нет взаимодействия с пикапом. Конкретности пока нет. По приезду проверю.

vasyok28
21.09.2016, 13:44
Так это элементарные вещи:scratch_one-s_head:



stock GetArmyPickup(pickupid)
{
if(ArmyPickup[0] == pickupid) return 0;
else if(ArmyPickup[1] == pickupid) return 1;
return 2;
}

stock GetArmyCar(playerid)
{
new carid = GetPlayerVehicleID(playerid);
if(SFaCar[0] == carid) return 0;
else if(SFaCar[1] == carid) return 1;
return 2;
}


К пикапам можно попробовать сделать:
new idPickup = pickupid - ArmyPickup[0];
что бы не юзать функцию