Egy játékos megnézheti egy másik játékos tárgyait, megadható, hogy el tudja venni a tárgyat tõle, vagy csak nézni tudja.
Sramm\'s Inventory System BevezetõAz alábbi filterscript azért jött létre, mert az RPG módomhoz kerestem egy Inventory(Hátizsák) rendszert, de sajnos nem találtam olyat, ami megfelelõ lett volna, ezért kénytelen voltam én írni egyet.
FüggvényekAddItem(playerid,item[],amount)
Hozzáad a táskához egy tárgyat.
Paraméterek:
playerid - A játékos, akinek a táskájához hozzá akarsz adni valamit.
item[] - A tárgy neve, amit hozzá akarsz adni.
amount - Amennyi tárgyat akarsz hozzáadni.
Példa:
CMD:givememedikit(playerid) //Amikor beírja a parancsot
{
AddItem(playerid,\"Medikit\",1); //Adunk neki egy darab \"Medikit\" nevû tárgyat
return 1;
}
Megjegyzés: Ez mindig csak hozzáad tárgyat, nem megváltoztatja. Azaz, ha van már 1 tárgyad, és te 5-t írsz a darabszámhoz, akkor 6 tárgya lesz, és nem 5.RemoveItem(playerid,item[],amount)
Elvesz a táskából egy tárgyat.
Paraméterek:
playerid - A játékos, akinek a táskájából el akarsz venni valamit.
item[] - A tárgy neve, amit el akarsz venni.
amount - Amennyi tárgyat el akarsz venni.
Példa:
CMD:removememedikit(playerid) //Amikor beírja a parancsot
{
RemoveItem(playerid,\"Medikit\",1); //Elveszünk egy darab \"Medikit\" nevû tárgyat
return 1;
}
ShowItems(playerid)
Megmutatja a táska tartalmát.
Paraméterek:
playerid - A játékos, akinek megmutatjuk táskát.
Példa:
CMD:hatizsakom(playerid) //Amikor beírja a parancsot
{
ShowItems(playerid); //Megmutatjuk neki a táskáját.
return 1;
}
ShowItemsEx(playerid,id,bool:type)
Megmutatja a táska tartalmát egy másik játékosnak.
Paraméterek:
playerid - A játékos, akié a táska.
id - A játékos, akinek megmutatjuk a táskát.
type - true, ha elveheti a tárgyat, false, ha nem
Példa:
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;
}
GetItemSlot(playerid,item[])
Lekéri, hogy melyik helyen van egy tárgy.
Paraméterek:
playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, amit le akarunk kérni.
Példa:
CMD:holamedikit(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"A Medikit ezen a helyen van: \'%d\'\",GetItemSlot(playerid,\"Medikit\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
SaveItems(playerid)
Lementi egy játékos hátizsákját.
Paraméterek:
playerid - A játékos, akinek lementjük.
Példa:
CMD:saveinv(playerid) //Amikor beírja a parancsot
{
SaveItems(playerid);
return 1;
}
LoadItems(playerid)
Betölti egy játékos hátizsákját.
Paraméterek:
playerid - A játékos, akinek betöltjük.
Példa:
CMD:loadinv(playerid) //Amikor beírja a parancsot
{
LoadItems(playerid);
return 1;
}
OnItemResponse(playerid,response,listitem,inputtext[])
Lementi egy játékos hátizsákját.
Paraméterek:
playerid - A játékos, aki a dialogot megnyomja.
response - Ha a jó gombot nyomja.
listitem - Melyikre nyom.
inputtext[] - A tárgy neve.
FONTOS:Az alábbi kódot muszáj ide raknod, hogy ki tudd választani a tárgyat.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response,listitem,inputtext);
return 0;
}
GetItemAmount(playerid,item[])
Lekéri, hogy mennyi van az adott tárgyból.
Paraméterek:
playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, aminek a darabszámát le akarjuk kérni.
Példa:
CMD:mennyimedikitemvan(playerid) //Amikor beírja a parancsot
{
new msg[128];
format(msg,128,\"Ennyi Medikited van: \'%d\'\",GetItemAmount(playerid,\"Medikit\"));
SendClientMessage(playerid,-1,msg);
return 1;
}
IsPlayerOwnItem(playerid,item[])
Lekéri, hogy a játékosnál van-e ilyen item.
Paraméterek:
playerid - A játékos, akinek a táskájából lekéri.
item[] - A tárgy neve, amit le akarunk kérni.
Példa:
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;
}
GetItemName(playerid,slot)
Lekéri a sloton lévõ tárgy nevét.
Paraméterek:
playerid - A játékos, akinek lekérjük.
slot - Aminek a nevét lekérjük.
Példa:
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;
}
ResetPlayerItems(playerid)
Nullázza az játékos összes tárgyát.
Paraméterek:
playerid - A játékos, akinek nullázni szeretnénk.
Példa:
CMD:resetitem(playerid) //Amikor beírja a parancsot
{
ResetPlayerItems(playerid);
return 1;
}
Eljárásokpublic OnPlayerUseItem(playerid,item[])
Akkor hívódik meg, amikor egy játékos rákattint egy tárgyra a hátiszáknál, ami a ShowItems(playerid)-nél hívódik meg.
Paraméterek:playerid - A játékos, aki rányomott.
item[] - Annak a tárgynak a neve, amelyikre rányomott.
Példa:Ha pl. én adok valakinek egy Medikit-et:
AddItem(playerid,\"Medikit\",1); //Megadom a \"Medikit\" nevû tárgyat a játékosnak
És utána õ rákattint:
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;
}
Megjegyzés: Ha olyan tárgyat adsz neki, amit aztán itt nem kezelsz, arra hiába kattint rá, nem fog történni semmi.
public OnPlayerUseItemEx(playerid,fromplayerid,item[])
Akkor hívódik meg, amikor egy játékos rákattint egy tárgyra egy másik játékos táskájában, ami a ShowItemsEx()-nél hívódik meg.
Paraméterek:playerid - A játékos, aki rányomott.
fromplayerid - A játékos, akinek a táskájában túrkált.
item[] - Annak a tárgynak a neve, amelyikre rányomott.
Példa: 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;
}
Fontos:1. Az alábbi kódot muszáj ide raknod, hogy ki tudd választani a tárgyakat.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response);
return 0;
}
2. Létre kell hoznod egy \"
Inv\" mappát, hogy tudja mibe menteni a rendszer a dolgokat.
MegjegyzésekHa növeled a maximum tárgyakat, minden játékost, akinek elõtte kevesebb volt szinkronizálnod kell, különben kifagyhat a szerver!
Ha bugot találsz, vagy ötleted van a témában elküldheted.
Külön köszönetF0rian - Compare
TengeriMalac - Tabulátor
Videó, képanyag