SA-MP Forums Archive
Inventory Drop - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Inventory Drop (/showthread.php?tid=559420)



Inventory Drop - DeViLsS - 23.01.2015

Почему игрок может подобрать только последний выбросивший предмет?

Код:
if(newkeys & KEY_WALK) 
    { 
        for(new i; i < sizeof(ObjectInv); i++)
        {       
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
            	GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
	            ObjectInv[i][obiDrop][1] = 0;
	            ObjectInv[i][obiDropPos][0] = 0.0;
	            ObjectInv[i][obiDropPos][1] = 0.0;
	            ObjectInv[i][obiDropPos][2] = 0.0;
		        return 1;
            }  
        }
}
Код:
stock InvDrop(playerid)
{
	new Float:InvX; new Float:InvY; new Float:InvZ;	   
    GetPlayerPos(playerid,InvX ,InvY, InvZ); 
 	for(new i; i < sizeof(ObjectInv); i++)
    {
        ObjectInv[i][obiDrop][0] = PlayerInfo[playerid][pInvSlot][GetPVarInt(playerid,"SelectSlot")];
	    ObjectInv[i][obiDrop][1] = PlayerInfo[playerid][pInvKol][GetPVarInt(playerid,"SelectSlot")];  
        ObjectInv[i][obiDropPos][0] = InvX;
	    ObjectInv[i][obiDropPos][1] = InvY;
	    ObjectInv[i][obiDropPos][2] = InvZ;       
        ObjectInv[i][obiObject] = CreateObject(Items_All[PlayerInfo[playerid][pInvSlot][GetPVarInt(playerid,"SelectSlot")]][InvObject], ObjectInv[i][obiDropPos][0], ObjectInv[i][obiDropPos][1], ObjectInv[i][obiDropPos][2]-1, 80.0, 0.0, 0.0);
        
        PlayerTextDrawBackgroundColor(playerid, InvSlot[playerid][GetPVarInt(playerid,"SelectSlot")], -2139062017);
    	PlayerTextDrawSetPreviewModel(playerid,InvSlot[playerid][GetPVarInt(playerid,"SelectSlot")], 1649);
		PlayerTextDrawSetPreviewRot(playerid, InvSlot[playerid][GetPVarInt(playerid,"SelectSlot")], 0.000000, 0.000000, 90.000000, 2.000000);  
    	PlayerTextDrawShow(playerid, InvSlot[playerid][GetPVarInt(playerid,"SelectSlot")]);
   	 	PlayerInfo[playerid][pInvSlot][GetPVarInt(playerid,"SelectSlot")] = -1;  
		PlayerInfo[playerid][pInvKol][GetPVarInt(playerid,"SelectSlot")] = -1;
    	SetPVarInt(playerid, "SelectSlot", -1); SetPVarInt(playerid, "NewSelectSlot", -1);
    }    
	return 1;
}



Re: Inventory Drop - Stepashka - 23.01.2015

Потому что return 1; стоит не там.


Re: Inventory Drop - DeViLsS - 23.01.2015

так?

Код:
for(new i; i < sizeof(ObjectInv); i++)
        {       
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
            	GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
	            ObjectInv[i][obiDrop][1] = 0;
	            ObjectInv[i][obiDropPos][0] = 0.0;
	            ObjectInv[i][obiDropPos][1] = 0.0;
	            ObjectInv[i][obiDropPos][2] = 0.0;
            } 
            return 1; 
        }



Re: Inventory Drop - x_O - 23.01.2015

Quote:
Originally Posted by DeViLsS
Посмотреть сообщение
так?

Код:
for(new i; i < sizeof(ObjectInv); i++)
        {       
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
            	GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
	            ObjectInv[i][obiDrop][1] = 0;
	            ObjectInv[i][obiDropPos][0] = 0.0;
	            ObjectInv[i][obiDropPos][1] = 0.0;
	            ObjectInv[i][obiDropPos][2] = 0.0;
            } 
            return 1; 
        }
во втором случае


Re: Inventory Drop - DeViLsS - 23.01.2015

Quote:
Originally Posted by x_O
Посмотреть сообщение
во втором случае
в стоке?


Re: Inventory Drop - x_O - 23.01.2015

Quote:
Originally Posted by DeViLsS
Посмотреть сообщение
в стоке?
ага, но что-то мне подсказывает что и правильный ретурн здесь погоду особо не исправит


Re: Inventory Drop - DeViLsS - 23.01.2015

Quote:
Originally Posted by x_O
Посмотреть сообщение
ага, но что-то мне подсказывает что и правильный ретурн здесь погоду особо не исправит
ничего не изменилось.


Re: Inventory Drop - Stepashka - 23.01.2015

Не слушай его.

Вот так, за пределами цикла:
pawn Код:
for(new i; i < sizeof(ObjectInv); i++)
        {      
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
                GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
                ObjectInv[i][obiDrop][1] = 0;
                ObjectInv[i][obiDropPos][0] = 0.0;
                ObjectInv[i][obiDropPos][1] = 0.0;
                ObjectInv[i][obiDropPos][2] = 0.0;
            }
        }
        return 1;



Re: Inventory Drop - DeViLsS - 23.01.2015

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Не слушай его.

Вот так, за пределами цикла:
pawn Код:
for(new i; i < sizeof(ObjectInv); i++)
        {      
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
                GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
                ObjectInv[i][obiDrop][1] = 0;
                ObjectInv[i][obiDropPos][0] = 0.0;
                ObjectInv[i][obiDropPos][1] = 0.0;
                ObjectInv[i][obiDropPos][2] = 0.0;
            }
        }
        return 1;
все равно, поднимать можно последний выкинутый предмет.


Re: Inventory Drop - x_O - 24.01.2015

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Не слушай его.

Вот так, за пределами цикла:
pawn Код:
for(new i; i < sizeof(ObjectInv); i++)
        {      
            if(IsPlayerInRangeOfPoint(playerid, 2.0,ObjectInv[i][obiDropPos][0],ObjectInv[i][obiDropPos][1],ObjectInv[i][obiDropPos][2]))
            {        
                GiveInv(playerid, ObjectInv[i][obiDrop][0], ObjectInv[i][obiDrop][1]);
                DestroyObject(ObjectInv[i][obiObject]);
                ObjectInv[i][obiDrop][0] = 0;
                ObjectInv[i][obiDrop][1] = 0;
                ObjectInv[i][obiDropPos][0] = 0.0;
                ObjectInv[i][obiDropPos][1] = 0.0;
                ObjectInv[i][obiDropPos][2] = 0.0;
            }
        }
        return 1;
ты на InvDrop посмотри, а потом уже говори слушать или нет. он записывает не в свободный слот массива ObjectInv, а во все...