//============================================================================== stock DropItem(Float:X, Float:Y, Float:Z, world,interior,modelid) { for(new i = 0; i < sizeof(ItemInfo); i++) { if(ItemInfo[i][ItemPosX] == 0.0 && ItemInfo[i][ItemPosY] == 0.0 && ItemInfo[i][ItemPosZ] == 0.0) { new string[128]; ItemInfo[i][ItemPosX] = X; ItemInfo[i][ItemPosY] = Y; ItemInfo[i][ItemPosZ] = Z; ItemInfo[i][ItemVWorld] = world; ItemInfo[i][ItemInterior] = interior; ItemInfo[i][ItemModelID] = modelid; format(string,sizeof(string),"%s (Press 'H' to pick up)",GetItemName(modelid)); Label2[i] = Create3DTextLabel(string, COLOR_YELLOW,X,Y,Z, 3.0,world, 0); Item[i] = CreateDynamicObject(modelid, X, Y, Z,272,0,0, world); new file[64]; format(file, sizeof(file), "Loot/item%d.ini", i); if(!fexist(file)) { INI_Create(file); } ItemInfo[i][ItemID] = i; INI_IntSet(file,"ItemPosX", floatround(ItemInfo[i][ItemPosX])); INI_IntSet(file,"ItemPosY", floatround(ItemInfo[i][ItemPosY])); INI_IntSet(file,"ItemPosZ", floatround(ItemInfo[i][ItemPosZ])); INI_IntSet(file,"ItemVWorld", ItemInfo[i][ItemVWorld]); INI_IntSet(file,"ItemInterior", ItemInfo[i][ItemInterior]); INI_IntSet(file,"ItemModelID", ItemInfo[i][ItemModelID]); INI_IntSet(file,"ItemID", ItemInfo[i][ItemID]); return 0; } } return 1; } //============================================================================== LoadDroppedItems(lootid) { for(new i=0; i < MAX_DROP_ITEMS; i++) { new string[128], Float:X, Float:Y, Float:Z, world,modelid; if(!fexist(LootPath(lootid)))return 0; ItemInfo[i][ItemPosX]=INI_Int(LootPath(lootid),"ItemPosX"); ItemInfo[i][ItemPosY]=INI_Int(LootPath(lootid),"ItemPosY"); ItemInfo[i][ItemPosZ]=INI_Int(LootPath(lootid),"ItemPosZ"); ItemInfo[i][ItemVWorld]=INI_Int(LootPath(lootid),"ItemVWorld"); ItemInfo[i][ItemInterior]=INI_Int(LootPath(lootid),"ItemInterior"); ItemInfo[i][ItemModelID]=INI_Int(LootPath(lootid),"ItemModelID"); ItemInfo[i][ItemID]=INI_Int(LootPath(lootid),"ItemID"); X = ItemInfo[i][ItemPosX]; Y = ItemInfo[i][ItemPosY]; Z = ItemInfo[i][ItemPosZ]; world = ItemInfo[i][ItemVWorld]; modelid = ItemInfo[i][ItemModelID]; format(string,sizeof(string),"%s (Press 'H' to pick up)",GetItemName(modelid)); Label2[i] = Create3DTextLabel(string, COLOR_YELLOW,X,Y,Z, 3.0,world, 0); Item[i] = CreateDynamicObject(modelid, X, Y, Z,272,0,0, world); return 1; } return 1; } //pickup up item - onplayerkey for(new i = 0; i < sizeof(ItemInfo); i++) { if (IsPlayerInRangeOfPoint(playerid, 2.0,ItemInfo[i][ItemPosX],ItemInfo[i][ItemPosY],ItemInfo[i][ItemPosZ])) { if(GetPlayerVirtualWorld(playerid) == ItemInfo[i][ItemVWorld] && GetPlayerInterior(playerid) == ItemInfo[i][ItemInterior]) { if(ItemInfo[i][Toggled] == 0) { if(Inventory[playerid][InvBag] == 0) { if(Inventory[playerid][InvSlots] > 19) return SendClientMessage(playerid,RED,"Your inventory is full, purchase a bag to obtain more slots."); } if(Inventory[playerid][InvBag] >= 1) { if(Inventory[playerid][InvSlots] > 39) return SendClientMessage(playerid,RED,"Your inventory is full."); } new modelid = ItemInfo[i][ItemModelID]; new lootid = ItemInfo[i][ItemID]; new str[128]; new x,y,z,w,in,m; x = 0; y = 0; z = 0; w = 0; in = 0; m = 0; INI_IntSet(LootPath(lootid),"ItemPosX", x); INI_IntSet(LootPath(lootid),"ItemPosY", y); INI_IntSet(LootPath(lootid),"ItemPosZ", z); INI_IntSet(LootPath(lootid),"ItemVWorld", w); INI_IntSet(LootPath(lootid),"ItemInterior", in); INI_IntSet(LootPath(lootid),"ItemModelID", m); fremove(LootPath(lootid)); ApplyAnimation(playerid, "CARRY", "putdwn",4.1,0,1,1,0,0); PickupItemTimer(playerid); format(str,sizeof(str),"%s(%i) has picked up %s from their surroundings. Item ID %d has been removed.",PlayerName(playerid),playerid,GetItemName(modelid),lootid); SendNearbyMessage(playerid,30.0,str,ORANGE); AddItem(playerid,modelid); ItemInfo[i][Toggled] = 1; Delete3DTextLabel(Label2[i]); DestroyDynamicObject(Item[i]); NoCheat[playerid] = 1; Crouch[playerid] = 1; SaveInventory(playerid); Inventory[playerid][InvSlots] += 1; return 1; } }else return 0; } }
This could be caused by incorrectly using OnPlayerKeystateChange.
|
for(new i = 0; i < sizeof(ItemInfo); i++)
{
if (IsPlayerInRangeOfPoint(playerid, 2.0,ItemInfo[i][ItemPosX],ItemInfo[i][ItemPosY],ItemInfo[i][ItemPosZ]))
{
if(GetPlayerVirtualWorld(playerid) == ItemInfo[i][ItemVWorld] && GetPlayerInterior(playerid) == ItemInfo[i][ItemInterior])
{
if(ItemInfo[i][Toggled] == 0)
{
// (...)
return 1;
}
}else return 0; // <-- This little shit
}
}
pawn Код:
#e: Hm, this is problematic, but might not be the root cause. Either way, check it first |