CMD:givememedikit(playerid) //Amikor beírja a parancsot
{
AddItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Adunk neki egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriába
return 1;
}
CMD:removememedikit(playerid) //Amikor beírja a parancsot
{
RemoveItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Elveszünk egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriából
return 1;
}
CMD:hatizsakom(playerid) //Amikor beírja a parancsot
{
ShowItems(playerid); //Megmutatjuk neki a táskáját.
return 1;
}
CMD:getinv(playerid,params[])
{
new id,type;
if(sscanf(params,\"ui\",id,type)) return SendClientMessage(playerid,-1,\"Használat: /getinv [id/név] [Típus] (Ha a típus 0, nem veheti el tõle a tárgyat, ha 1 igen)\");
if(type != 0 && type != 1) return 1;
if(type == 0) ShowItemsEx(id,playerid,false);
else ShowItemsEx(id,playerid,true);
return 1;
}
CMD:holamedikit(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"A Medikit ezen a helyen van: \'%d\'\",GetItemSlot(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:saveinv(playerid) //Amikor beírja a parancsot
{
SaveItems(playerid);
return 1;
}
CMD:loadinv(playerid) //Amikor beírja a parancsot
{
LoadItems(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response,listitem,inputtext);
return 0;
}
CMD:mennyimedikitemvan(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Ennyi Medikited van: \'%d\'\",GetItemAmount(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:vanemedikit(playerid) //Amikor beírja a parancsot
{
if(IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Van nálad medikit.\");
else if(!IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Nincs nálad medikit.\");
return 1;
}
CMD:getname(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy neve: \'%s\'\",GetItemName(playerid,1));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:getcat(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy kategóriája: \'%s\'\",GetItemCategory(playerid,1));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:resetitem(playerid) //Amikor beírja a parancsot
{
ResetPlayerItems(playerid);
return 1;
}
AddItem(playerid,\"Medikit\",1); //Megadom a \"Medikit\" nevû tárgyat a játékosnak
public OnPlayerUseItem(playerid,item[])
{
if(CompareEx(item,\"Medikit\")) //Tehát ha egyezik annak a tárgynak a neve, amire rákattintottam a \"Medikit\"-tel... (Az inc tartalmazza a CompareEx-et)
{
SetPlayerHealth(playerid,100); //Beállítjuk a játékos életét 100-ra
RemoveItem(playerid,\"Medikit\",1); //És elvesszük tõle, mert ugye már használta.
return 1;
}
return 1;
}
public OnPlayerUseItemEx(playerid,fromplayerid,item[])
{
new amount = GetItemAmount(fromplayerid,item);
RemoveItem(fromplayerid,item,amount); //elvesszük az elõzõ tulajtól
AddItem(playerid,item,amount); //odaadjuk az újnak
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response);
return 0;
}
#define INVENTORY_WITH_CATEGORY 1 // Ha 1, akkor lesznek kategóriák, ha 0, akkor nem
#include <inventory>
/*
/*
Sramm\'s Inventory System
& Készítette: Sramm
& Utoljára frissítve: 2014.05.11
& Veziószám: 4.1
(c) Sramm 2013-2014
*/
#include <dini>
#if defined _INC_inventory
#endinput
#endif
#define _INC_inventory
#define SFMC(%0,%1,%2) do{new _str[128]; format(_str,128,%2); SendClientMessage(%0,%1,_str);}while(INVFALSE)
#define MAX_ITEMS 100
#define MAX_DROP_ITEMS 200
#define ITEM_DIALOG 5842
#define ITEM_DIALOG_EX ITEM_DIALOG+10
#define ITEM_DIALOG_CAT ITEM_DIALOG_EX+10
#define ITEM_DIALOG_ULTRA ITEM_DIALOG_CAT+10
/*
native AddItem(playerid,item[],amount,cat[]);
native RemoveItem(playerid,item[],amount,cat[]);
native ShowItems(playerid);
native ShowItemsEx(playerid,id);
native ShowRealItems(playerid,cat[]);
native GetItemSlot(playerid,item[],cat[]);
native SaveItems(playerid);
native LoadItems(playerid);
native OnItemResponse(playerid,response,listitem,inputtext[]);
native GetItemAmount(playerid,item[],cat[]);
native IsPlayerOwnItem(playerid,item[]);
native ResetPlayerItems(playerid);
native GetItemName(playerid,itemslot);
native GetItemCategory(playerid,itemslot);
*/
new INVFALSE = false;
new ItemName[MAX_PLAYERS][MAX_ITEMS][36];
new ItemCat[MAX_PLAYERS][MAX_ITEMS][36];
new ItemAmount[MAX_PLAYERS][MAX_ITEMS];
new ItemID[MAX_PLAYERS];
new listItem[MAX_ITEMS];
new ItemPlayer[MAX_PLAYERS] = INVALID_PLAYER_ID;
new ItemPlayerID[MAX_PLAYERS];
enum ditInfo
{
Text3D:ittext,
Float:posX,
Float:posY,
Float:posZ,
VW,
INV,
itname[36],
itcat[36],
itamount,
itobject
};
new DropItemInfo[MAX_ITEMS][ditInfo];
forward OnPlayerUseItem(playerid,item[]);
forward OnPlayerUseItemEx(playerid,fromplayerid,item[]);
stock RemoveHexColorFromString(string[])
{
new
pos[2];
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
for(new i;i < strlen(string); i++)
{
if(pos[0]+7 == pos[1])
{
strdel(string, pos[0], pos[1]+1);
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
}
}
return 1;
}
stock GetNamei(playerid)
{
new n[MAX_PLAYER_NAME];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
stock CompareEx(comp[], with[]) //By: Fl0rian
{
new LenghtComp = strlen(comp);
new LenghtWith = strlen(with);
new Character;
if( LenghtComp != LenghtWith ) return false;
for( new i = 0; i < LenghtComp; i++ )
{
if( comp == with )
{
Character++;
}
}
if( LenghtComp == Character ) return true;
return false;
}
stock DropItem(playerid,id,amount)
{
for(new i; i<MAX_DROP_ITEMS; i++)
{
if(!IsValidObject(DropItemInfo[itobject]))
{
new Float:Xp,Float:Yp,Float:Zp;
GetPlayerPos(playerid, Xp, Yp, Zp);
DropItemInfo[itobject] = CreateObject(1210, Xp, Yp, Zp-1, 0.0, 0.0, 0.0);
DropItemInfo[ittext] = Create3DTextLabel(ItemName[playerid][id], -1, Xp,Yp,Zp, 10.0,GetPlayerVirtualWorld(playerid),1);
DropItemInfo[posX] = Xp;
DropItemInfo[posY] = Yp;
DropItemInfo[posZ] = Zp;
DropItemInfo[VW] = GetPlayerVirtualWorld(playerid);
DropItemInfo[iNV] = GetPlayerInterior(playerid);
format(DropItemInfo[itname],36,ItemName[playerid][id]);
format(DropItemInfo[itcat],36,ItemCat[playerid][id]);
DropItemInfo[itamount] = amount;
RemoveItem(playerid,ItemName[playerid][id],amount,ItemCat[playerid][id]);
return 1;
}
}
return 1;
}
stock PickUpItem(playerid)
{
for(new i; i<MAX_DROP_ITEMS; i++)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,DropItemInfo[posX],DropItemInfo[posY],DropItemInfo[posZ]) && GetPlayerVirtualWorld(playerid) == DropItemInfo[VW] && GetPlayerInterior(playerid) == DropItemInfo[iNV])
{
new sucess = AddItem(playerid,DropItemInfo[itname],DropItemInfo[itamount],DropItemInfo[itcat]);
if(sucess)
{
Delete3DTextLabel(DropItemInfo[ittext]);
DestroyObject(DropItemInfo[itobject]);
return 1;
}
}
}
return 1;
}
stock AddItem(playerid,item[],amount,category[] = \"Egyéb\")
{
if(amount <= 0) return 0;
if(strlen(item) > 128) return 0;
new bool: count[2] = false;
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
{
count[0] = true;
ItemAmount[playerid] += amount;
return 1;
}
}
if(count[0] == false)
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],\"Üres\"))
{
count[1] = true;
format(ItemName[playerid],36,\"%s\",item);
format(ItemCat[playerid],36,\"%s\",category);
ItemAmount[playerid] = amount;
return 1;
}
}
}
if(count[1] != true) return SendClientMessage(playerid,-1,\"Betelt a tárhelyed, üríts belõle.\"),0;
return 1;
}
stock RemoveItemEx(playerid,i)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
return 1;
}
stock RemoveItem(playerid,item[],amount,category[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
{
if(ItemAmount[playerid] > amount)
{
ItemAmount[playerid] -= amount;
}
else if(ItemAmount[playerid] == amount || ItemAmount[playerid] < amount)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
}
return 1;
}
stock ShowItems(playerid)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemCat[playerid],\"Üres\"))
{
c = true;
format(msg,128,\"\\n%s\",ItemCat[playerid]);
if(strfind(dialogstr, msg, true) == -1)
{
strcat(dialogstr,msg);
}
}
}
if(c != false)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_CAT,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
}
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
stock ShowRealItems(playerid,cat[])
{
new msg[128],dialogstr[3000],bool:c,count=-1;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemName[playerid],\"Üres\") && CompareEx(ItemCat[playerid],cat))
{
c = true;
count++;
format(msg,128,\"\\n[%ddb] %s\",ItemAmount[playerid],ItemName[playerid]);
strcat(dialogstr,msg);
listItem[count] = i;
}
}
if(c != false) ShowPlayerDialog(playerid,ITEM_DIALOG,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
stock ShowItemsEx(playerid,id,bool:use = false)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemName[playerid],\"Üres\"))
{
c = true;
format(msg,128,\"\\n[%d] %s\",ItemAmount[playerid],ItemName[playerid]);
strcat(dialogstr,msg);
}
}
if(use == false)
{
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
else
{
ItemPlayer[id] = playerid;
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX+1,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
return 1;
}
stock GetItemSlot(playerid,item[],cat[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return i;
}
return -1;
}
stock IsPlayerOwnItem(playerid,item[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item)) return 1;
}
return 0;
}
stock GetItemAmount(playerid,item[],cat[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return ItemAmount[playerid];
}
return -1;
}
stock GetItemName(playerid,itemslot) return ItemName[playerid][itemslot];
stock GetItemCategory(playerid,itemslot) return ItemCat[playerid][itemslot];
stock ResetPlayerItems(playerid)
{
for(new i; i<MAX_ITEMS; i++)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
stock OnItemResponse(playerid, dialogid, response,listitem, inputtext[])
{
if(dialogid == ITEM_DIALOG_CAT)
{
if(!response) return 1;
ShowRealItems(playerid,inputtext);
return 1;
}
if(dialogid == ITEM_DIALOG)
{
if(!response) return 1;
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+1,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁtadás\",\"Oké\",\"Mégsem\");
ItemID[playerid] = listItem[listitem];
}
if(dialogid == ITEM_DIALOG_EX)
{
if(!response) return 1;
if(listitem != 0) return SendClientMessage(playerid,-1,\"Mások tárgyát nem használhatod!\");
}
if(dialogid == ITEM_DIALOG_EX+1)
{
if(!response) return 1,ItemPlayer[playerid] = INVALID_PLAYER_ID;
if(listitem != 0)
{
new str[128];
RemoveHexColorFromString(inputtext);
format(str,128,inputtext[strfind(inputtext,\"]\")+1]);
CallLocalFunction( \"OnPlayerUseItemEx\", \"iis\", playerid,ItemPlayer[playerid], str );
ItemPlayer[playerid] = INVALID_PLAYER_ID;
}
}
if(dialogid == ITEM_DIALOG_ULTRA)
{
if(response) ShowItems(playerid);
else ShowItems(playerid);
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+1)
{
if(!response) return 1;
//ShowPlayerDialog(playerid,11,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁthelyezés\",\"Oké\",\"Mégsem\");
if(listitem == 0)
{
CallLocalFunction( \"OnPlayerUseItem\", \"is\", playerid, ItemName[playerid][itemID[playerid]] );
ItemID[playerid] = -1;
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
}
if(listitem == 2)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
}
}
if(dialogid == ITEM_DIALOG_ULTRA+3)
{
if(!response) return 1;
if(!strval(inputtext)) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
if(strval(inputtext) > ItemAmount[playerid][itemID[playerid]]) return SendClientMessage(playerid,-1,\"Nincs ennyid ebbõl a tárgyból!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
DropItem(playerid,ItemID[playerid],strval(inputtext));
ItemID[playerid] = -1;
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+4)
{
if(!response) return 1;
if(!strval(inputtext) && !CompareEx(inputtext,\"0\")) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
if(!IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid,-1,\"Nincs ilyen játékos!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
if(!PTP(playerid,strval(inputtext))) return SendClientMessage(playerid,-1,\"Nem vagy a játékos közelében.\");
if(strval(inputtext) == playerid) return SendClientMessage(playerid,-1,\"Magadnak nem adhatod át!\");
SFMC(strval(inputtext),-1,\"%s át szeretné adni ezt a tárgyat: %s. Elfogadod?\",GetNamei(playerid),ItemName[playerid][itemID[playerid]]);
ShowPlayerDialog(strval(inputtext),ITEM_DIALOG_ULTRA+5,DIALOG_STYLE_LIST,\"Átadás\",\"Elfogadom.\\nNem fogadom el.\",\"Oké\",\"Mégsem\");
ItemPlayerID[strval(inputtext)] = playerid;
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+5)
{
if(!response) return 1;
if(listitem == 0)
{
new id = ItemPlayerID[playerid];
new i = ItemID[id];
new sucess = AddItem(playerid,ItemName[id],ItemAmount[id],ItemCat[id]);
if(sucess)
{
SFMC(id,-1,\"%s elfogadta a tárgyat.\",GetNamei(playerid));
SendClientMessage(playerid,-1,\"Sikeresen elfogadtad a tárgyat, elhelyezted a zsebedben.\");
RemoveItem(playerid,ItemName[id],1,ItemCat[id]);
ItemID[id] = -1;
ItemPlayerID[playerid] = -1;
return 1;
}
else
{
SendClientMessage(playerid,-1,\"Nincs elég hely a zsebedben!\");
return 1;
}
}
if(listitem == 2)
{
new id = ItemPlayerID[playerid];
SFMC(id,-1,\"%s nem fogadta el a tárgyat.\",GetNamei(playerid));
SendClientMessage(playerid,-1,\"Elutasítottad a tárgyat.\");
ItemID[id] = -1;
ItemPlayerID[playerid] = -1;
return 1;
}
return 1;
}
return 1;
}
stock SaveItems(playerid)
{
new m[36],itemfile[64];
format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
for(new i; i<MAX_ITEMS; i++)
{
format(m,36,\"Item%d\",i);
dini_Set(itemfile,m,ItemName[playerid]);
format(m,36,\"Itemcat%d\",i);
dini_Set(itemfile,m,ItemCat[playerid]);
format(m,36,\"Itemamount%d\",i);
dini_IntSet(itemfile,m,ItemAmount[playerid]);
}
return 1;
}
stock LoadItems(playerid)
{
new m[128],itemfile[128];
format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
if(dini_Exists(itemfile))
{
ResetPlayerItems(playerid);
for(new i; i<MAX_ITEMS; i++)
{
format(m,128,\"Item%d\",i);
format(ItemName[playerid],24,\"%s\",dini_Get(itemfile,m));
format(m,128,\"Itemcat%d\",i);
format(ItemCat[playerid],36,\"%s\",dini_Get(itemfile,m));
format(m,128,\"Itemamount%d\",i);
ItemAmount[playerid] = dini_Int(itemfile,m);
}
}
else
{
dini_Create(itemfile);
ResetPlayerItems(playerid);
SaveItems(playerid);
}
return 1;
}
stock PTP(playerid,id,Float:radi = 2.0)
{
new Float:pos[3];
GetPlayerPos(id,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,radi,pos[0],pos[1],pos[2])) return 1;
else return 0;
}
CMD:givememedikit(playerid) //Amikor beírja a parancsot
{
AddItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Adunk neki egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriába
return 1;
}
CMD:removememedikit(playerid) //Amikor beírja a parancsot
{
RemoveItem(playerid,\"Medikit\",1,\"Orvosságok\"); //Elveszünk egy darab \"Medikit\" nevû tárgyat az \"Orvosságok\" kategóriából
return 1;
}
CMD:hatizsakom(playerid) //Amikor beírja a parancsot
{
ShowItems(playerid); //Megmutatjuk neki a táskáját.
return 1;
}
CMD:getinv(playerid,params[])
{
new id,type;
if(sscanf(params,\"ui\",id,type)) return SendClientMessage(playerid,-1,\"Használat: /getinv [id/név] [Típus] (Ha a típus 0, nem veheti el tõle a tárgyat, ha 1 igen)\");
if(type != 0 && type != 1) return 1;
if(type == 0) ShowItemsEx(id,playerid,false);
else ShowItemsEx(id,playerid,true);
return 1;
}
CMD:holamedikit(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"A Medikit ezen a helyen van: \'%d\'\",GetItemSlot(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:saveinv(playerid) //Amikor beírja a parancsot
{
SaveItems(playerid);
return 1;
}
CMD:loadinv(playerid) //Amikor beírja a parancsot
{
LoadItems(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response,listitem,inputtext);
return 0;
}
CMD:mennyimedikitemvan(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Ennyi Medikited van: \'%d\'\",GetItemAmount(playerid,\"Medikit\",\"Orvosságok\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:vanemedikit(playerid) //Amikor beírja a parancsot
{
if(IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Van nálad medikit.\");
else if(!IsPlayerOwnItem(playerid,\"Medikit\")) return SendClientMessage(playerid,-1,\"Nincs nálad medikit.\");
return 1;
}
CMD:getname(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy neve: \'%s\'\",GetItemName(playerid,1));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:getcat(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Slot 1-en lévõ tárgy kategóriája: \'%s\'\",GetItemCategory(playerid,1));
SendClientMessage(playerid,-1,msg);
return 1;
}
CMD:resetitem(playerid) //Amikor beírja a parancsot
{
ResetPlayerItems(playerid);
return 1;
}
AddItem(playerid,\"Medikit\",1); //Megadom a \"Medikit\" nevû tárgyat a játékosnak
public OnPlayerUseItem(playerid,item[])
{
if(CompareEx(item,\"Medikit\")) //Tehát ha egyezik annak a tárgynak a neve, amire rákattintottam a \"Medikit\"-tel... (Az inc tartalmazza a CompareEx-et)
{
SetPlayerHealth(playerid,100); //Beállítjuk a játékos életét 100-ra
RemoveItem(playerid,\"Medikit\",1); //És elvesszük tõle, mert ugye már használta.
return 1;
}
return 1;
}
public OnPlayerUseItemEx(playerid,fromplayerid,item[])
{
new amount = GetItemAmount(fromplayerid,item);
RemoveItem(fromplayerid,item,amount); //elvesszük az elõzõ tulajtól
AddItem(playerid,item,amount); //odaadjuk az újnak
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response);
return 0;
}
#define INVENTORY_WITH_CATEGORY 1 // Ha 1, akkor lesznek kategóriák, ha 0, akkor nem
#include <inventory>
/*
/*
Sramm\'s Inventory System
& Készítette: Sramm
& Utoljára frissítve: 2014.05.11
& Veziószám: 4.1
(c) Sramm 2013-2014
*/
#include <dini>
#if defined _INC_inventory
#endinput
#endif
#define _INC_inventory
#define SFMC(%0,%1,%2) do{new _str[128]; format(_str,128,%2); SendClientMessage(%0,%1,_str);}while(INVFALSE)
#define MAX_ITEMS 100
#define MAX_DROP_ITEMS 200
#define ITEM_DIALOG 5842
#define ITEM_DIALOG_EX ITEM_DIALOG+10
#define ITEM_DIALOG_CAT ITEM_DIALOG_EX+10
#define ITEM_DIALOG_ULTRA ITEM_DIALOG_CAT+10
/*
native AddItem(playerid,item[],amount,cat[]);
native RemoveItem(playerid,item[],amount,cat[]);
native ShowItems(playerid);
native ShowItemsEx(playerid,id);
native ShowRealItems(playerid,cat[]);
native GetItemSlot(playerid,item[],cat[]);
native SaveItems(playerid);
native LoadItems(playerid);
native OnItemResponse(playerid,response,listitem,inputtext[]);
native GetItemAmount(playerid,item[],cat[]);
native IsPlayerOwnItem(playerid,item[]);
native ResetPlayerItems(playerid);
native GetItemName(playerid,itemslot);
native GetItemCategory(playerid,itemslot);
*/
new INVFALSE = false;
new ItemName[MAX_PLAYERS][MAX_ITEMS][36];
new ItemCat[MAX_PLAYERS][MAX_ITEMS][36];
new ItemAmount[MAX_PLAYERS][MAX_ITEMS];
new ItemID[MAX_PLAYERS];
new listItem[MAX_ITEMS];
new ItemPlayer[MAX_PLAYERS] = INVALID_PLAYER_ID;
new ItemPlayerID[MAX_PLAYERS];
enum ditInfo
{
Text3D:ittext,
Float:posX,
Float:posY,
Float:posZ,
VW,
INV,
itname[36],
itcat[36],
itamount,
itobject
};
new DropItemInfo[MAX_ITEMS][ditInfo];
forward OnPlayerUseItem(playerid,item[]);
forward OnPlayerUseItemEx(playerid,fromplayerid,item[]);
stock RemoveHexColorFromString(string[])
{
new
pos[2];
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
for(new i;i < strlen(string); i++)
{
if(pos[0]+7 == pos[1])
{
strdel(string, pos[0], pos[1]+1);
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
}
}
return 1;
}
stock GetNamei(playerid)
{
new n[MAX_PLAYER_NAME];
GetPlayerName(playerid,n,sizeof(n));
return n;
}
stock CompareEx(comp[], with[]) //By: Fl0rian
{
new LenghtComp = strlen(comp);
new LenghtWith = strlen(with);
new Character;
if( LenghtComp != LenghtWith ) return false;
for( new i = 0; i < LenghtComp; i++ )
{
if( comp == with )
{
Character++;
}
}
if( LenghtComp == Character ) return true;
return false;
}
stock DropItem(playerid,id,amount)
{
for(new i; i<MAX_DROP_ITEMS; i++)
{
if(!IsValidObject(DropItemInfo[itobject]))
{
new Float:Xp,Float:Yp,Float:Zp;
GetPlayerPos(playerid, Xp, Yp, Zp);
DropItemInfo[itobject] = CreateObject(1210, Xp, Yp, Zp-1, 0.0, 0.0, 0.0);
DropItemInfo[ittext] = Create3DTextLabel(ItemName[playerid][id], -1, Xp,Yp,Zp, 10.0,GetPlayerVirtualWorld(playerid),1);
DropItemInfo[posX] = Xp;
DropItemInfo[posY] = Yp;
DropItemInfo[posZ] = Zp;
DropItemInfo[VW] = GetPlayerVirtualWorld(playerid);
DropItemInfo[iNV] = GetPlayerInterior(playerid);
format(DropItemInfo[itname],36,ItemName[playerid][id]);
format(DropItemInfo[itcat],36,ItemCat[playerid][id]);
DropItemInfo[itamount] = amount;
RemoveItem(playerid,ItemName[playerid][id],amount,ItemCat[playerid][id]);
return 1;
}
}
return 1;
}
stock PickUpItem(playerid)
{
for(new i; i<MAX_DROP_ITEMS; i++)
{
if(IsPlayerInRangeOfPoint(playerid,3.0,DropItemInfo[posX],DropItemInfo[posY],DropItemInfo[posZ]) && GetPlayerVirtualWorld(playerid) == DropItemInfo[VW] && GetPlayerInterior(playerid) == DropItemInfo[iNV])
{
new sucess = AddItem(playerid,DropItemInfo[itname],DropItemInfo[itamount],DropItemInfo[itcat]);
if(sucess)
{
Delete3DTextLabel(DropItemInfo[ittext]);
DestroyObject(DropItemInfo[itobject]);
return 1;
}
}
}
return 1;
}
stock AddItem(playerid,item[],amount,category[] = \"Egyéb\")
{
if(amount <= 0) return 0;
if(strlen(item) > 128) return 0;
new bool: count[2] = false;
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
{
count[0] = true;
ItemAmount[playerid] += amount;
return 1;
}
}
if(count[0] == false)
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],\"Üres\"))
{
count[1] = true;
format(ItemName[playerid],36,\"%s\",item);
format(ItemCat[playerid],36,\"%s\",category);
ItemAmount[playerid] = amount;
return 1;
}
}
}
if(count[1] != true) return SendClientMessage(playerid,-1,\"Betelt a tárhelyed, üríts belõle.\"),0;
return 1;
}
stock RemoveItemEx(playerid,i)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
return 1;
}
stock RemoveItem(playerid,item[],amount,category[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],category))
{
if(ItemAmount[playerid] > amount)
{
ItemAmount[playerid] -= amount;
}
else if(ItemAmount[playerid] == amount || ItemAmount[playerid] < amount)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
}
return 1;
}
stock ShowItems(playerid)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemCat[playerid],\"Üres\"))
{
c = true;
format(msg,128,\"\\n%s\",ItemCat[playerid]);
if(strfind(dialogstr, msg, true) == -1)
{
strcat(dialogstr,msg);
}
}
}
if(c != false)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_CAT,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
}
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
stock ShowRealItems(playerid,cat[])
{
new msg[128],dialogstr[3000],bool:c,count=-1;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemName[playerid],\"Üres\") && CompareEx(ItemCat[playerid],cat))
{
c = true;
count++;
format(msg,128,\"\\n[%ddb] %s\",ItemAmount[playerid],ItemName[playerid]);
strcat(dialogstr,msg);
listItem[count] = i;
}
}
if(c != false) ShowPlayerDialog(playerid,ITEM_DIALOG,DIALOG_STYLE_LIST,\"Táska tartalma\",dialogstr,\"Választ\",\"Mégsem\");
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
stock ShowItemsEx(playerid,id,bool:use = false)
{
new msg[128],dialogstr[3000],bool:c;
for(new i; i<MAX_ITEMS; i++)
{
if(!CompareEx(ItemName[playerid],\"Üres\"))
{
c = true;
format(msg,128,\"\\n[%d] %s\",ItemAmount[playerid],ItemName[playerid]);
strcat(dialogstr,msg);
}
}
if(use == false)
{
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
else
{
ItemPlayer[id] = playerid;
if(c != false) ShowPlayerDialog(id,ITEM_DIALOG_EX+1,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"\",\"Oké\");
else SendClientMessage( id, -1, \"Nincs semmi a táskájában.\" );
}
return 1;
}
stock GetItemSlot(playerid,item[],cat[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return i;
}
return -1;
}
stock IsPlayerOwnItem(playerid,item[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item)) return 1;
}
return 0;
}
stock GetItemAmount(playerid,item[],cat[])
{
for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item) && CompareEx(ItemCat[playerid],cat)) return ItemAmount[playerid];
}
return -1;
}
stock GetItemName(playerid,itemslot) return ItemName[playerid][itemslot];
stock GetItemCategory(playerid,itemslot) return ItemCat[playerid][itemslot];
stock ResetPlayerItems(playerid)
{
for(new i; i<MAX_ITEMS; i++)
{
format(ItemName[playerid],36,\"%s\",\"Üres\");
format(ItemCat[playerid],36,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
stock OnItemResponse(playerid, dialogid, response,listitem, inputtext[])
{
if(dialogid == ITEM_DIALOG_CAT)
{
if(!response) return 1;
ShowRealItems(playerid,inputtext);
return 1;
}
if(dialogid == ITEM_DIALOG)
{
if(!response) return 1;
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+1,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁtadás\",\"Oké\",\"Mégsem\");
ItemID[playerid] = listItem[listitem];
}
if(dialogid == ITEM_DIALOG_EX)
{
if(!response) return 1;
if(listitem != 0) return SendClientMessage(playerid,-1,\"Mások tárgyát nem használhatod!\");
}
if(dialogid == ITEM_DIALOG_EX+1)
{
if(!response) return 1,ItemPlayer[playerid] = INVALID_PLAYER_ID;
if(listitem != 0)
{
new str[128];
RemoveHexColorFromString(inputtext);
format(str,128,inputtext[strfind(inputtext,\"]\")+1]);
CallLocalFunction( \"OnPlayerUseItemEx\", \"iis\", playerid,ItemPlayer[playerid], str );
ItemPlayer[playerid] = INVALID_PLAYER_ID;
}
}
if(dialogid == ITEM_DIALOG_ULTRA)
{
if(response) ShowItems(playerid);
else ShowItems(playerid);
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+1)
{
if(!response) return 1;
//ShowPlayerDialog(playerid,11,DIALOG_STYLE_LIST,\"Mi legyen vele?\",\"Használat\\nEldobás\\nÁthelyezés\",\"Oké\",\"Mégsem\");
if(listitem == 0)
{
CallLocalFunction( \"OnPlayerUseItem\", \"is\", playerid, ItemName[playerid][itemID[playerid]] );
ItemID[playerid] = -1;
}
if(listitem == 1)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
}
if(listitem == 2)
{
ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
}
}
if(dialogid == ITEM_DIALOG_ULTRA+3)
{
if(!response) return 1;
if(!strval(inputtext)) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
if(strval(inputtext) > ItemAmount[playerid][itemID[playerid]]) return SendClientMessage(playerid,-1,\"Nincs ennyid ebbõl a tárgyból!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+3,DIALOG_STYLE_INPUT,\"Eldobás\",\"Mennyit szeretnél eldobni?\",\"Oké\",\"Mégsem\");
DropItem(playerid,ItemID[playerid],strval(inputtext));
ItemID[playerid] = -1;
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+4)
{
if(!response) return 1;
if(!strval(inputtext) && !CompareEx(inputtext,\"0\")) return SendClientMessage(playerid,-1,\"Csak számokat adj meg!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
if(!IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid,-1,\"Nincs ilyen játékos!\"),ShowPlayerDialog(playerid,ITEM_DIALOG_ULTRA+4,DIALOG_STYLE_INPUT,\"Átadás\",\"Írd be a felhasználó ID-jét, akinek át szeretnéd adni:\",\"Oké\",\"Mégsem\");
if(!PTP(playerid,strval(inputtext))) return SendClientMessage(playerid,-1,\"Nem vagy a játékos közelében.\");
if(strval(inputtext) == playerid) return SendClientMessage(playerid,-1,\"Magadnak nem adhatod át!\");
SFMC(strval(inputtext),-1,\"%s át szeretné adni ezt a tárgyat: %s. Elfogadod?\",GetNamei(playerid),ItemName[playerid][itemID[playerid]]);
ShowPlayerDialog(strval(inputtext),ITEM_DIALOG_ULTRA+5,DIALOG_STYLE_LIST,\"Átadás\",\"Elfogadom.\\nNem fogadom el.\",\"Oké\",\"Mégsem\");
ItemPlayerID[strval(inputtext)] = playerid;
return 1;
}
if(dialogid == ITEM_DIALOG_ULTRA+5)
{
if(!response) return 1;
if(listitem == 0)
{
new id = ItemPlayerID[playerid];
new i = ItemID[id];
new sucess = AddItem(playerid,ItemName[id],ItemAmount[id],ItemCat[id]);
if(sucess)
{
SFMC(id,-1,\"%s elfogadta a tárgyat.\",GetNamei(playerid));
SendClientMessage(playerid,-1,\"Sikeresen elfogadtad a tárgyat, elhelyezted a zsebedben.\");
RemoveItem(playerid,ItemName[id],1,ItemCat[id]);
ItemID[id] = -1;
ItemPlayerID[playerid] = -1;
return 1;
}
else
{
SendClientMessage(playerid,-1,\"Nincs elég hely a zsebedben!\");
return 1;
}
}
if(listitem == 2)
{
new id = ItemPlayerID[playerid];
SFMC(id,-1,\"%s nem fogadta el a tárgyat.\",GetNamei(playerid));
SendClientMessage(playerid,-1,\"Elutasítottad a tárgyat.\");
ItemID[id] = -1;
ItemPlayerID[playerid] = -1;
return 1;
}
return 1;
}
return 1;
}
stock SaveItems(playerid)
{
new m[36],itemfile[64];
format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
for(new i; i<MAX_ITEMS; i++)
{
format(m,36,\"Item%d\",i);
dini_Set(itemfile,m,ItemName[playerid]);
format(m,36,\"Itemcat%d\",i);
dini_Set(itemfile,m,ItemCat[playerid]);
format(m,36,\"Itemamount%d\",i);
dini_IntSet(itemfile,m,ItemAmount[playerid]);
}
return 1;
}
stock LoadItems(playerid)
{
new m[128],itemfile[128];
format(itemfile,sizeof(itemfile),\"Inv/%s.ini\",GetNamei(playerid));
if(dini_Exists(itemfile))
{
ResetPlayerItems(playerid);
for(new i; i<MAX_ITEMS; i++)
{
format(m,128,\"Item%d\",i);
format(ItemName[playerid],24,\"%s\",dini_Get(itemfile,m));
format(m,128,\"Itemcat%d\",i);
format(ItemCat[playerid],36,\"%s\",dini_Get(itemfile,m));
format(m,128,\"Itemamount%d\",i);
ItemAmount[playerid] = dini_Int(itemfile,m);
}
}
else
{
dini_Create(itemfile);
ResetPlayerItems(playerid);
SaveItems(playerid);
}
return 1;
}
stock PTP(playerid,id,Float:radi = 2.0)
{
new Float:pos[3];
GetPlayerPos(id,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,radi,pos[0],pos[1],pos[2])) return 1;
else return 0;
}
Kérdés. Nektek nem hasonlít http://forum.sa-mp.com/showthread.php?t=130436 Ez valamire?A függvények ugyan azok, de a kód az más :D
stock RemoveHexColorFromString(string[])
{
new
pos[2];
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
for(new i;i < strlen(string); i++)
{
if(pos[0]+7 == pos[1])
{
strdel(string, pos[0], pos[1]+1);
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
}
}
return 1;
}
stock RemoveHexColorFromString(string[])
{
new
pos[2];
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
while(pos[0] != -1 && pos[1] != -1)
{
if(pos[0]+7 == pos[1])
{
strdel(string, pos[0], pos[1]+1);
pos[0] = strfind(string,\"{\",true,0);
pos[1] = strfind(string,\"}\",true,0);
}
}
return 1;
}
Olyat nem lehetne belerakni, hogy fegyvernél elõ lehessen venni, el lehessen rakni, külön a töltényt is mentse, és ha eldobod és felveszed az abban lévõ töltényt töltse vissza?Megcsinálom, ha lesz rá idõm.
Vagy ezeket hogyan lehetne megoldani?
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
{
OnItemResponse(playerid,dialogid,response);
return 0;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response,listitem,inputtext);
return 0;
}