Рекомендованные сообщения



Не найдено.

13 posts in this topic

Всем привет. Игрок должен сесть в грузовик, ввести /loadgun, и у него появится пикап, куда он должен отнести ящик. Но когда игрок встает с ящиком на пикап - ничего не происходит, как сделать, что бы ящик грузился в грузовик?

CMD:loadgun(playerid)
{
	if(!IsAArmy(playerid) && !IsAMafia(playerid)) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вам недоступна данная функция");
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
		new vehicleid = GetPlayerVehicleID(playerid);
		if(gVehicleGun[vehicleid][vGunLoading] || gVehicleGun[vehicleid][vGunUnloading]) return SendClientMessage(playerid, COLOR_DARKORANGE, "Авто уже стоит на загрузке / разгрузке");
		gVehicleGun[vehicleid][vGunLoading] = true;
		RemovePlayerFromVehicle(playerid);
		new Float:x, Float:y, Float:z, Float:a;
		GetVehiclePos(vehicleid, x, y, z);
		GetVehicleZAngle(vehicleid, a);
		switch(GetVehicleModel(vehicleid))
		{
		    case 433,578:
		    {
		        x = x - (-6.0*floatsin(a, degrees));
				y = y - 5.5*floatcos(a, degrees);
				gVehicleGun[vehicleid][vGunPickup] = CreateDynamicPickup(1318, 1, x, y, z-0.5); //Пикап грузовиков
		    }
		    case 470,500,482,526,467,587,550,489,580,491:
		    {
		        x = x - (-3.0*floatsin(a, degrees));
				y = y - 3.5*floatcos(a, degrees);
				gVehicleGun[vehicleid][vGunPickup] = CreateDynamicPickup(1318, 1, x, y, z-0.2); //Пикап для легковых авто
		    }
		    default: SendClientMessage(playerid, COLOR_DARKORANGE, "Вы должны быть в машине предназначенной для загрузки!");
		}
		new string[128];
		format(string, sizeof(string), "Метал: {63BD4E}%d\n{FFFFFF}Патронов: {63BD4E}%d", gVehicleGun[vehicleid][vGunGunAmount], gVehicleGun[vehicleid][vGunAmmo]);
		gVehicleGun[vehicleid][vGunText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, x, y, z+0.5, 20.0);
		gVehicleGun[vehicleid][vGunArea] = CreateDynamicSphere(x, y, z, 1.0);
		print("Itter_Add(VehicleGun, vehicleid);");
		Itter_Add(VehicleGun, vehicleid);
		SendClientMessage(playerid, COLOR_GREEN, "Загрузка началась");
	}
	return 1;
}

 

Share this post


Link to post
Share on other sites

Если я Вас правильно понял. То с помощью паблика OnPlayerPickUpPickup сделайте действия, когда игрок встал на пикап. 

if(pickupid == gVehicleGun[vehicleid][vGunPickup]) 
{ 
	Действие
} 

 

ps: Если же я что-то напутал, извиняйте. 

Share this post


Link to post
Share on other sites

@Gromov000 Хм, а какое действие записать то..? Надо что бы ящик грузился в грузовик.

Share this post


Link to post
Share on other sites

@HAPKOMAH, ну, по логике вещей нужно убрать из рук игрока объект ящика, а в машине увеличить количество патронов/оружия на определенные вами цифры. Если этот код из мода Dushevniy/Rayon, проверьте, есть ли у вас такой код (в OnPlayerEnterDynamicArea).

Спойлер

    else if(IsAArmy(playerid) || IsAMafia(playerid)) // тут разгрузка
	{
	    foreach(new vehicleid:VehicleGun)
		{
			if(areaid == gVehicleGun[vehicleid][vGunArea])
			{
       			new string[128];
				if(gVehicleGun[vehicleid][vGunLoading] == true && (GetPVarInt(playerid, "carrygun") || GetPVarInt(playerid, "carryammo")))
				{
					new gunamount = GetPVarInt(playerid, "carrygun");
					new ammo = GetPVarInt(playerid, "carryammo");
					SetPVarInt(playerid, "carrygun", 0);
					SetPVarInt(playerid, "carryammo", 0);
					RemovePlayerAttachedObject(playerid, 3);
					ApplyAnimation(playerid, "CARRY", "putdwn", 1.0, 0, 1, 1, 0, 0, 1);
					if(gVehicleGun[vehicleid][vGunGunAmount] + gunamount > 5000 || gVehicleGun[vehicleid][vGunAmmo] + ammo > 5000) return SendClientMessage(playerid, C_RED, "В транспорте недостаточно места");
					if(gunamount) gVehicleGun[vehicleid][vGunGunAmount] += gunamount;
					if(ammo) gVehicleGun[vehicleid][vGunAmmo] += ammo;
					format(string, sizeof(string), "{FFFFFF}Патронов: {63BD4E}%d", gVehicleGun[vehicleid][vGunAmmo]);
					UpdateDynamic3DTextLabelText(gVehicleGun[vehicleid][vGunText], 0xFFFFFFFF, string);
				}
				else if(gVehicleGun[vehicleid][vGunUnloading] == true && !GetPVarInt(playerid, "carrygun") && !GetPVarInt(playerid, "carryammo"))
				{
					if(gVehicleGun[vehicleid][vGunGunAmount] < 300 && gVehicleGun[vehicleid][vGunAmmo] < 300) return SendClientMessage(playerid, C_RED, "В транспорте недостаточно боеприпасов");
					if(gVehicleGun[vehicleid][vGunGunAmount] >= 300)
					{
						gVehicleGun[vehicleid][vGunGunAmount] -= 300;
						SetPVarInt(playerid, "carrygun", 300);
					}
					if(gVehicleGun[vehicleid][vGunAmmo] >= 300)
					{
						gVehicleGun[vehicleid][vGunAmmo] -= 300;
						SetPVarInt(playerid, "carryammo", 300);
					}
					ApplyAnimation(playerid, "CARRY", "liftup", 1.0, 0, 1, 1, 0, 0, 1);
					
					format(string, sizeof(string), "{FFFFFF}Патронов: {63BD4E}%d", gVehicleGun[vehicleid][vGunAmmo]);
					UpdateDynamic3DTextLabelText(gVehicleGun[vehicleid][vGunText], 0xFFFFFFFF, string);
					
					SetPlayerAttachedObject(playerid,3,2969,1,0.075578,0.407083,0.000000,1.248928,97.393852,359.645050,1.000000,1.000000,1.000000); // ящик
					ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1); // анимация, что несет
					SetTimerEx("CarryDelay", 1000, false, "i", playerid);
					//SetPlayerAttachedObject(playerid, 0, 2358, 6, 0.0, 0.10, -0.2, -110.0, 0.0, 78.0);
				}
				//else SendClientMessage(playerid, COLOR_GREY, "Ошибка");
				return 1;
			}
		}
	}

 

 

Share this post


Link to post
Share on other sites

@odosenok У, извиняюсь, что так "рано" ответил, просто все равно не мог этим заняться. А теперь по теме.

У меня не эти моды, но похожий. Данного кода не вижу, что в принципе не удивительно. Сейчас попробую и отпишу.

Share this post


Link to post
Share on other sites

@odosenok Не-а, беру ящик, встаю на пикап, а ничего не меняется.

Share this post


Link to post
Share on other sites

@HAPKOMAH ну дай код пикапа. По сути, должно быть так: игрок становиться на пикап, из его рук удаляется объект (ящик), мы сбрасываем все анимации, а к машине прикрепляется ящик (если так нужно) или же, просто увеличивается что-либо на определенное количество.

Share this post


Link to post
Share on other sites

@SCRIPTMAN

CMD:loadgun(playerid)
{
	if(!IsAArmy(playerid) && !IsAMafia(playerid)) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вам недоступна данная функция");
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
		new vehicleid = GetPlayerVehicleID(playerid);
		if(gVehicleGun[vehicleid][vGunLoading] || gVehicleGun[vehicleid][vGunUnloading]) return SendClientMessage(playerid, COLOR_DARKORANGE, "Авто уже стоит на загрузке / разгрузке");
		gVehicleGun[vehicleid][vGunLoading] = true;
		RemovePlayerFromVehicle(playerid);
		new Float:x, Float:y, Float:z, Float:a;
		GetVehiclePos(vehicleid, x, y, z);
		GetVehicleZAngle(vehicleid, a);
		switch(GetVehicleModel(vehicleid))
		{
		    case 433,578:
		    {
		        x = x - (-6.0*floatsin(a, degrees));
				y = y - 5.5*floatcos(a, degrees);
				gVehicleGun[vehicleid][vGunPickup] = CreateDynamicPickup(1318, 1, x, y, z-0.5); //Пикап грузовиков
		    }
		    case 470,500,482,526,467,587,550,489,580,491:
		    {
		        x = x - (-3.0*floatsin(a, degrees));
				y = y - 3.5*floatcos(a, degrees);
				gVehicleGun[vehicleid][vGunPickup] = CreateDynamicPickup(1318, 1, x, y, z-0.2); //Пикап для легковых авто
		    }
		    default: SendClientMessage(playerid, COLOR_DARKORANGE, "Вы должны быть в машине предназначенной для загрузки!");
		}
		new string[128];
		format(string, sizeof(string), "Металл: {63BD4E}%d\n{FFFFFF}Патронов: {63BD4E}%d", gVehicleGun[vehicleid][vGunGunAmount], gVehicleGun[vehicleid][vGunAmmo]);
		gVehicleGun[vehicleid][vGunText] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, x, y, z+0.5, 20.0);
		gVehicleGun[vehicleid][vGunArea] = CreateDynamicSphere(x, y, z, 1.0);
		print("Itter_Add(VehicleGun, vehicleid);");
		Itter_Add(VehicleGun, vehicleid);
		SendClientMessage(playerid, COLOR_GREEN, "Загрузка началась");
	}
	return 1;
}

 

Share this post


Link to post
Share on other sites

@HAPKOMAH так это же команда. У тебя по пикапу же?

На этот пикап похоже "gVehicleGun[vehicleid][vGunPickup]"

Share this post


Link to post
Share on other sites

@SCRIPTMAN Смотри. У меня есть пикап, если на него встать - тебе дают ящик с Патронами.

Потом в грузовике вводишь /loadgun и позади машины появляется еще один пикап ( В него грузить ящики с патронами ). Надеюсь понятно объяснил.

Насчет этого вот, что нашел:

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new vehicleid = GetPlayerVehicleID(playerid);
	if(pickupid == gVehicleGun[vehicleid][vGunPickup])
	{

 

Share this post


Link to post
Share on other sites

@HAPKOMAH, а вот это условие выполняется, что ты нашел?

Share this post


Link to post
Share on other sites

@Talex Как это понять?

Share this post


Link to post
Share on other sites

@HAPKOMAH и что ты мне скинул? Скинь мне код пикапа, который идёт после условия.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • .037
      By .037
      в чём может быть проблема? Передаю строку через PR_String, и получаю с клиента бред
      CMD:TestData(playerid, params[]){ new msg[] = "Code_Test"; new BitStream:bs = BS_New(); BS_WriteInt8(bs,30); BS_WriteFloat(bs,0.9); BS_WriteFloat(bs,23.4); BS_WriteString(bs, msg, sizeof msg); PR_SendRPC(bs, playerid, 179); BS_Delete(bs); return 1; } [05:57:27] RPC - Длина  30 | 0.900000 | 23.400000 | I*(!@dp
      И всегда текст разный 

      Хотя принимаю всё нормально:

       
      bool CALLBACK Hok_RPC_BYTE(stRakNetHookParams *params) { if (params->packetId == 179) { SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Кастомный RPC работает!!!"); byte nameLen; float test; float test1; char szPlayerName[100]; params->bitStream->ResetReadPointer(); params->bitStream->Read(nameLen); params->bitStream->Read(test); params->bitStream->Read(test1); params->bitStream->Read(szPlayerName, 100); params->bitStream->ResetReadPointer(); SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "RPC - Длина %d | %f | %f | %s", nameLen, test , test1, szPlayerName); } return true; };