/* GEAR SURVIVAL BY VIN PURE INVENTORY | ITEM | BOX CREDITS BUD by Slice zcmd by Zeex sscanf2 by Y_LESS mSelection by d0 streamer by Incognito ================================ AddBoxItem(boxid,modelid); RemoveBoxItem(boxid,modelid); ShowBox(playerid); DeleteBox(boxid); ShowPutBoxItem(playerid); ===INVENTORY SetPlayerInventorySlot(playerid,slot); AddInventoryItem(playerid,modelid); RemoveInventoryItem(playerid,modelid); ShowInventory(playerid); ===ITEM PickupItem(playerid); CreateItem(modelid,x,y,z,rx,ry,rz,world,interior); */ #define BUD_USE_WHIRLPOOL false #define BUD_MAX_COLUMNS 100 #define BUD_MULTIGET_MAX_ENTRIES 100 #define BUD_MULTISET_MAX_ENTRIES 100 /////////////////// #include #include #include #include #include #include ////MAX AMOUNT DROP ITEM #define MAX_DROP_ITEMS 100 /// M selection Menu extra id #define INVENTORY_MENU 1 #define BOX_MENU 2 #define PUTBOX_MENU 3 ///Dialog id #define DIALOG_INV 213 #define DIALOG_BOX 214 ///MAX SLOT #define MAX_SLOT 50 /// #define PRESSED(%0) \ (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // test item pizza #define Pizza 1582 #define ITEMBOX 2384 //MAX BOX #define MAX_BOXS 100 ////////////////////// enum bInfo { bCreate, bObject, Float:bPosX, Float:bPosY, Float:bPosZ, bItem[21], }; new BoxInfo[MAX_BOXS][bInfo]; enum inv { MSlot, Slotu, iSlot[50] } new InvInfo[MAX_PLAYERS][inv]; new ItemObject[MAX_DROP_ITEMS]; new Text3D:LabelItem[MAX_DROP_ITEMS]; //================= enum ItemData { ItemModel, Float:ItemPosX, Float:ItemPosY, Float:ItemPosZ, Float:ItemRotX, Float:ItemRotY, Float:ItemRotZ, ItemVWorld, ItemInterior, }; new ItemInfo[MAX_DROP_ITEMS][ItemData]; public OnFilterScriptInit() { print("\n--------------------------------------"); print("INVENTORY| ITEM | BOX BY VINPURE"); print("--------------------------------------\n"); BUD::Setting( opt.Database, "Inventory.db" ); BUD::Setting( opt.Asynchronous, true ); BUD::Setting( opt.KeepAliveTime, 3000 ); BUD::Setting( opt.CheckForUpdates, true ); BUD::Initialize( ); for(new i = 0 ; i < 50;i++) { new string[128]; format(string,sizeof(string),"Slot%d",i); BUD::VerifyColumn(string, BUD::TYPE_NUMBER ); } BUD::VerifyColumn("Slotu", BUD::TYPE_NUMBER ); BUD::VerifyColumn("MSlot", BUD::TYPE_NUMBER ); LoadBoxs(); return 1; } public OnFilterScriptExit() { return 1; } CMD:box(playerid,params[]) { CreateBox(playerid); return 1; } CMD:slot(playerid,params[]) { SetPlayerInventorySlot(playerid,21); return 1; } CMD:inv(playerid,params[]) { ShowInventory(playerid); return 1; } CMD:add(playerid,params[]) { AddInventoryItem(playerid,Pizza); return 1; } CMD:pickup(playerid,params[]) { PickupItem(playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { if (BUD::IsNameRegistered(GetName(playerid))) { SaveInventory(playerid); } return 1; } public OnPlayerSpawn(playerid) { if (BUD::IsNameRegistered(GetName(playerid))) { LoadInventory(playerid); } else { BUD::RegisterName(GetName(playerid),""); } return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(PRESSED(KEY_YES)) { ShowInventory(playerid); } if(PRESSED(KEY_CROUCH)) { PickupItem(playerid); } if(PRESSED(KEY_WALK)) { for( new i = 0; i < MAX_BOXS;i++) { if(IsPlayerInRangeOfPoint(playerid,2,BoxInfo[i][bPosX],BoxInfo[i][bPosY],BoxInfo[i][bPosZ])) { ShowPlayerDialog(playerid,DIALOG_BOX,2,"BOX GEAR","ITEM\nDestroyBox","Select","CLOSE"); } } } return 1; } public OnPlayerModelSelectionEx(playerid, response, extraid, modelid) { if(extraid == INVENTORY_MENU) { if(response) { if(modelid == 332) return SendClientMessage(playerid,-1,"This slot no have item "); SetPVarInt(playerid,"MODELIDINV",modelid); ShowPlayerDialog(playerid,DIALOG_INV,0,"GEAR","Select type item","USE","DROP"); } else SendClientMessage(playerid, 0xFF0000FF, "Close Inventory"); } if(extraid == BOX_MENU) { if(response) { if(modelid == 332) return ShowPutItemBox(playerid); if(InvInfo[playerid][Slotu] == InvInfo[playerid][MSlot]) return SendClientMessage(playerid,-1,"INVENTORY FULL"); for( new i = 0; i < MAX_BOXS;i++) { if(IsPlayerInRangeOfPoint(playerid,2,BoxInfo[i][bPosX],BoxInfo[i][bPosY],BoxInfo[i][bPosZ])) { AddInventoryItem(playerid,modelid); RemoveBoxItem(i,modelid); PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); } } } } if(extraid == PUTBOX_MENU) { if(response) { if(modelid == 332) return SendClientMessage(playerid,-1,"This slot no have item "); for( new i = 0; i < MAX_BOXS;i++) { if(IsPlayerInRangeOfPoint(playerid,2,BoxInfo[i][bPosX],BoxInfo[i][bPosY],BoxInfo[i][bPosZ])) { AddBoxItem(i,modelid); RemoveInventoryItem(playerid,modelid); PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); } } } } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_BOX) { if(!response) return 1; if(response) { if(listitem == 0) return ShowBox(playerid); if(listitem == 1) { for( new i = 0; i < MAX_BOXS;i++) { if(IsPlayerInRangeOfPoint(playerid,2,BoxInfo[i][bPosX],BoxInfo[i][bPosY],BoxInfo[i][bPosZ])) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); CreateItem(ITEMBOX,x,y,z-1,0,0,0,0,0); DeleteBox(i); PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); } } } } } if(dialogid == DIALOG_INV) { if(response) { SendClientMessage(playerid,-1,"DEBUG:USE ITEM"); if(GetPVarInt(playerid,"MODELIDINV") == ITEMBOX) { CreateBox(playerid); RemoveInventoryItem(playerid,GetPVarInt(playerid,"MODELIDINV")); SetPVarInt(playerid,"MODELIDINV",0); PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); } } if(!response) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); CreateItem(GetPVarInt(playerid,"MODELIDINV"),x,y,z-1,0,0,0,0,0); SendClientMessage(playerid,-1,"DEBUG:DROP ITEM"); RemoveInventoryItem(playerid,GetPVarInt(playerid,"MODELIDINV")); SetPVarInt(playerid,"MODELIDINV",0); ApplyAnimation(playerid,"GRENADE","WEAPON_throwu",3.0,0,0,0,0,0); } } return 1; } //stock //pickup stock PickupItem(playerid) { 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(InvInfo[playerid][Slotu] == InvInfo[playerid][MSlot]) return SendClientMessage(playerid,-1,"Inventory full"); ItemInfo[i][ItemPosX] = 0.0; ItemInfo[i][ItemPosY] = 0.0; ItemInfo[i][ItemPosZ] = 0.0; ItemInfo[i][ItemRotX] = 0.0; ItemInfo[i][ItemRotY] = 0.0; ItemInfo[i][ItemRotZ] = 0.0; Delete3DTextLabel(LabelItem[i]); DestroyDynamicObject(ItemObject[i]); AddInventoryItem(playerid,ItemInfo[i][ItemModel]); SendClientMessage(playerid,-1,"Pickup item"); PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); return 1; } } } return 1; } stock PlayAnim(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync) { ApplyAnimation(playerid, animlib, animname, fDelta, loop, lockx, locky, freeze, time, forcesync); } stock RemoveInventoryItem(playerid,modelid) { for(new i = 49;i>-1;i--) { if(InvInfo[playerid][iSlot][i] == modelid) { InvInfo[playerid][iSlot][i] = 0; InvInfo[playerid][Slotu] -= 1; break; } } return 1; } stock AddInventoryItem(playerid,modelid) { if(InvInfo[playerid][Slotu] == InvInfo[playerid][MSlot]) return SendClientMessage(playerid,-1,"Inventory full"); for(new i = 0;i 49 ) return SendClientMessage(playerid,-1,"Max slot is 49 "); InvInfo[playerid][MSlot] = slot; return 1; } stock ShowBox(playerid) { new itembox[21]; for( new i = 0; i < MAX_BOXS;i++) { if(IsPlayerInRangeOfPoint(playerid,2,BoxInfo[i][bPosX],BoxInfo[i][bPosY],BoxInfo[i][bPosZ])) { for( new it = 0 ; it< 21; it++) { itembox[it] = BoxInfo[i][bItem][it]; if(BoxInfo[i][bItem][it] == 0) { itembox[it] = 332; } } //ShowModelSelectionMenuEx(playerid, itembox,20,"BOX",BOX_MENU, 0.0, 0.0,0.0,1.0,0x000000FF); ShowModelSelectionMenuEx(playerid, itembox,21,"BOX",BOX_MENU, 0.0, 0.0,0.0,1.0,0x000000FF); } } return 1; } stock RemoveBoxItem(boxid,modelid) { for(new i = 20;i>-1;i--) { if(BoxInfo[boxid][bItem][i] == modelid) { BoxInfo[boxid][bItem][i] = 0; break; } } return SaveBoxs(); } stock AddBoxItem(boxid,modelid) { for(new i = 0;i<21;i++) { if(BoxInfo[boxid][bItem][i] == 0) { BoxInfo[boxid][bItem][i] = modelid; break; } } return SaveBoxs(); } stock ShowPutItemBox(playerid) { new iteminv[100],string[128]; for(new i = 0; i < MAX_SLOT;i++) { iteminv[i] = InvInfo[playerid][iSlot][i]; if(InvInfo[playerid][iSlot][i] == 0) { iteminv[i] = 332; } } format(string,sizeof(string),"Inventory:%d/%d(PUTBOX)",InvInfo[playerid][Slotu],InvInfo[playerid][MSlot]); ShowModelSelectionMenuEx(playerid, iteminv,InvInfo[playerid][MSlot],string,PUTBOX_MENU, 0.0, 0.0,0.0,1.0,0x000000FF); return 1; } stock ShowInventory(playerid) { new iteminv[100],string[128]; for(new i = 0; i < MAX_SLOT;i++) { iteminv[i] = InvInfo[playerid][iSlot][i]; if(InvInfo[playerid][iSlot][i] == 0) { iteminv[i] = 332; } } format(string,sizeof(string),"Inventory:%d/%d",InvInfo[playerid][Slotu],InvInfo[playerid][MSlot]); ShowModelSelectionMenuEx(playerid, iteminv,InvInfo[playerid][MSlot],string,INVENTORY_MENU, 0.0, 0.0,0.0,1.0,0x000000FF); return 1; } stock ResetInventory(playerid) { for(new i = 1 ; i ifffiiiiiiiiiiiiiiiiiiiii", BoxInfo[iIndex][bCreate], BoxInfo[iIndex][bPosX], BoxInfo[iIndex][bPosY], BoxInfo[iIndex][bPosZ], BoxInfo[iIndex][bItem][0], BoxInfo[iIndex][bItem][1], BoxInfo[iIndex][bItem][2], BoxInfo[iIndex][bItem][3], BoxInfo[iIndex][bItem][4], BoxInfo[iIndex][bItem][5], BoxInfo[iIndex][bItem][6], BoxInfo[iIndex][bItem][7], BoxInfo[iIndex][bItem][8], BoxInfo[iIndex][bItem][9], BoxInfo[iIndex][bItem][10], BoxInfo[iIndex][bItem][11], BoxInfo[iIndex][bItem][12], BoxInfo[iIndex][bItem][13], BoxInfo[iIndex][bItem][14], BoxInfo[iIndex][bItem][15], BoxInfo[iIndex][bItem][16], BoxInfo[iIndex][bItem][17], BoxInfo[iIndex][bItem][18], BoxInfo[iIndex][bItem][19], BoxInfo[iIndex][bItem][20]); if(BoxInfo[iIndex][bCreate] == 1) { BoxInfo[iIndex][bObject] = CreateDynamicObject(964,BoxInfo[iIndex][bPosX],BoxInfo[iIndex][bPosY],BoxInfo[iIndex][bPosZ]-1,0,0,0,0,0); } ++iIndex; } return fclose(iFileHandle); }