/* Project V-Inventory Viet Nam Version Create by Nhat -ShowInventory(playerid); // Show Inventory cho nguoi choi -HideInventory(playerid); -AddInventoryItem(playerid,modelid,amount); // them vao inventory 1 item voi so luong = amount -RemoveInventoryItem(playerid,clickslot,slotuse,note[]); // clickslot = slot item , note se hien tren textdraw inventory[9] -RemoveItem(playerid,modelid,amount); // xoa 1 item voi so luong , neu so luong xoa nho hon so luong item co thi se tru neu khong se xoa luon item -ResetInventory(playerid); // xoa het moi item -GetPlayerItemAmount(playerid,modelid); // kiem tra xem nguoi choi co item do hay khong va so luong -GetItemName(modelid,amount); // de kiem tra item name ( them vao stock getitemname) -GetItemSlotUse(modelid); // Slot can de chua item -CreateItem(Model,Amount,usetext,useitemrot,Float:X, Float:Y, Float:Z,world, interior); -SetItemRot(objectid,modelid); -DestroyItem(itemid); -PickupItem(playerid); */ /*=========INCLUDE====================*/ #include #include #include #include /*=========DEFINE====================*/ #define MAX_INVENTOY_SLOTS 50 #define MAX_DROP_ITEMS 100 #define DIALOG_ADDITEM 13337 /*=========KEY====================*/ #define KEY_PICKUPITEM 2 #define KEY_OPENINV 65536 #define MAX_RECORDS (999) #define MAX_KEY_LENGTH (32) #define MAX_VAL_LENGTH (256) #define MAX_RECORD_LENGTH (MAX_KEY_LENGTH + MAX_VAL_LENGTH + 2) #define __isnull(%0) (%0[0] == 0||(%0[0] == 1&&%0[1] == 0)) #define __strcpy(%0,%1,%2) strcat((%0[0] = '\0', %0), %1, %2) #define file_IncVal(%1,%2) file_SetVal(%1, file_GetVal(%1) + %2) enum { WINDOWS, LINUX } static File: ini_CurrentFile, ini_Temp[MAX_RECORD_LENGTH], ini_OsLineEndLen = 2, ini_OsLineEndChar[5], bool: ini_FileOpen, ini_KeyData[MAX_RECORDS][MAX_KEY_LENGTH], ini_ValData[MAX_RECORDS][MAX_VAL_LENGTH]; /*=========NEW-ENUM====================*/ new PlayerText:Inventory[14]= {PlayerText:INVALID_TEXT_DRAW, ...}; new PlayerText:InvItem[50]= {PlayerText:INVALID_TEXT_DRAW, ...}; enum vinfo { MSlot, Slotu, iSlot[MAX_INVENTOY_SLOTS], iAmount[MAX_INVENTOY_SLOTS], } new InvInfo[MAX_PLAYERS][vinfo]; enum ItemData { ItemID, ItemModel, ItemAmount, ItemObject, Text3D:ItemLabel, Float:ItemPosX, Float:ItemPosY, Float:ItemPosZ, Float:ItemRotX, Float:ItemRotY, Float:ItemRotZ, ItemVWorld, ItemInterior, }; new ItemInfo[MAX_DROP_ITEMS][ItemData]; /*=========FORWARD====================*/ forward OnPlayerUseItem(playerid,modelid,amount,clickslot); public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Vinpure Inventory Project LOADED"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { print("\n--------------------------------------"); print(" Vinpure Inventory Project UNLOADED"); print("--------------------------------------\n"); return 1; } CMD:inv(playerid,params[]) { ShowInventory(playerid); return 1; } CMD:getitem(playerid,params[]) { new s[128]; format(s,sizeof(s),"Item M4 %d",GetPlayerItemAmount(playerid,GetWeaponModel(31))); SendClientMessage(playerid,-1,s); return 1; } CMD:remove(playerid,params[]) { RemoveItem(playerid,GetWeaponModel(31),5); return 1; } CMD:setslot(playerid,params[]) { new id,slot; if(sscanf(params,"dd",id,slot)) return SendClientMessage(playerid,-1,"/setslot [playerid] [slot]"); if(!IsPlayerConnected(id))return SendClientMessage(playerid,-1,"Player not Connected"); if(slot < 0 || slot > 50)return SendClientMessage(playerid,-1,"Slot 1-50"); InvInfo[id][MSlot] = slot; return 1; } CMD:giveweapon(playerid,params[]) { new id,type,ammo; if(sscanf(params, "ddd",id,type,ammo)) return SendClientMessage(playerid,-1,"USAGE:/giveweapon [playerid] [weapon] [ammo]"); if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Player not connect"); GivePlayerWeapon(id,type,ammo); return 1; } CMD:setskin(playerid,params[]) { new id,skinid; if(sscanf(params,"dd",id,skinid)) return SendClientMessage(playerid,-1,"/setskin [id] [skinid]"); if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"Player not connect"); if(skinid < 1|| skinid >299) return SendClientMessage(playerid,-1,"skinid:1->299"); SetPlayerSkin(id,skinid); return 1; } public OnPlayerConnect(playerid) { LoadInventoryTextDraw(playerid); LoadInventory(playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { SaveInventory(playerid); for(new i =0;i 320 && modelid <= 372) { new weaponid =GetModelWeapon(modelid); GivePlayerWeapon(playerid,weaponid,amount); SetPVarInt(playerid,"WeaponVar2",0); RemoveInventoryItem(playerid,clickslot,GetItemSlotUse(modelid),"Trang Bi"); } return 1; } public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) { for(new i=0;i-1;i--) { if(InvInfo[playerid][iSlot][i] == modelid && InvInfo[playerid][iAmount][i] == amount) { InvInfo[playerid][iSlot][i] = 0; InvInfo[playerid][iAmount][i] = 0; InvInfo[playerid][Slotu] -= GetItemSlotUse(modelid); break; } else if(InvInfo[playerid][iSlot][i] == modelid && InvInfo[playerid][iAmount][i] > amount) { InvInfo[playerid][iAmount][i] -= amount; break; } } return 1; } stock RemoveInventoryItem(playerid,clickslot,slotuse,note[]) { InvInfo[playerid][iSlot][clickslot] = 0; InvInfo[playerid][iAmount][clickslot] = 0; InvInfo[playerid][Slotu] -= slotuse; ShowInventory(playerid); PlayerTextDrawSetString(playerid,Inventory[9],note); PlayerTextDrawShow(playerid,Inventory[9]); return 1; } stock ResetInventory(playerid) { for(new i=0;i