GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Sramm - 2013. január 13. - 15:51:25

Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. január 13. - 15:51:25
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ények
AddItem(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;
}

 
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ások
public 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 eggyezik 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.
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ések
Ha 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önet
F0rian - Compare
TengeriMalac - Tabulátor
Videó, képanyag
 

Letöltés
inventory.rar (Include+Inv mappa tesztfájllal+Teszt filterscript) | inventory.inc
Kód:
 
#include <Dini>
#define MAX_ITEMS 20
#define ITEM_DIALOG 5842
/*
native AddItem(playerid,item[],amount);
native RemoveItem(playerid,item[],amount);
native ShowItems(playerid);
native GetItemSlot(playerid,item[]);
native SaveItems(playerid);
native LoadItems(playerid);
native OnItemResponse(playerid,response,listitem,inputtext[]);
native GetItemAmount(playerid,item[]);
native IsPlayerOwnItem(playerid,item[]);
native ResetPlayerItems(playerid);
native GetItemName(playerid,itemslot);
*/
new itemfile[128];
new ItemName[MAX_PLAYERS][MAX_ITEMS][128];
new ItemAmount[MAX_PLAYERS][MAX_ITEMS];
 

forward OnPlayerUseItem(playerid,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 AddItem(playerid,item[],amount)
{
if(amount <= 0) return 0;
new bool: count[2] = false;
for(new i; i<MAX_ITEMS; i++)
{
    if(CompareEx(ItemName[playerid],item))
    {
   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],128,\"%s\",item);
        ItemAmount[playerid] = amount;
        return 1;
   }
}
}
if(count[1] != true) return SendClientMessage(playerid,-1, \"Betelt a tárhelyed, üríts belõle.\");
return 0;
}
stock RemoveItem(playerid,item[],amount)
{
    for(new i; i<MAX_ITEMS; i++)
{
if(CompareEx(ItemName[playerid],item))
{
    if(ItemAmount[playerid] > amount)
    {
        ItemAmount[playerid] -= amount;
   }
   else if(ItemAmount[playerid] == amount || ItemAmount[playerid] < amount)
   {
      format(ItemName[playerid],128,\"%s\",\"Üres\");
      ItemAmount[playerid] = 0;
   }
}
}
return 1;
}
stock ShowItems(playerid)
{
new msg[128],dialogstr[3000],bool:c;
format( msg, 128,\"Darabszám\\t\\tNév\");
strcat(dialogstr,msg);
for(new i; i<MAX_ITEMS; i++)
{
    if(!CompareEx(ItemName[playerid],\"Üres\"))
    {
        c = true;
   format(msg,128,\"\\n%d\\t\\t%s\",ItemAmount[playerid],ItemName[playerid]);
   strcat(dialogstr,msg);
}
}
if(c != false) ShowPlayerDialog(playerid,ITEM_DIALOG,DIALOG_STYLE_LIST,\"Tárhely\",dialogstr,\"Választ\",\"Mégsem\");
else SendClientMessage( playerid, -1, \"Itt nincs semmi.\" );
return 1;
}
 
stock GetItemSlot(playerid,item[])
{
    for(new i; i<MAX_ITEMS; i++)
    {
        if(CompareEx(ItemName[playerid],item)) 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[])
{
    for(new i; i<MAX_ITEMS; i++)
    {
        if(CompareEx(ItemName[playerid],item)) return ItemAmount[playerid];
}
return -1;
}
stock ResetPlayerItems(playerid)
{
for(new i; i<MAX_ITEMS; i++)
{
    format(ItemName[playerid],128,\"%s\",\"Üres\");
ItemAmount[playerid] = 0;
}
return 1;
}
stock OnItemResponse(playerid, dialogid, response,listitem, inputtext[])
{
if(dialogid == ITEM_DIALOG)
    {
       if(!response) return 1;
if(listitem != 0)
{
    new str[128];
    RemoveHexColorFromString(inputtext);
    format(str,128,inputtext[strfind(inputtext,\"\\t\")+2]);
   CallLocalFunction( \"OnPlayerUseItem\", \"is\", playerid, str );
}
}
return 1;
}
stock SaveItems(playerid)
{
new m[128];
    format(itemfile,sizeof(itemfile),\"/Inv/%s.ini\",GetNamei(playerid));
    for(new i; i<MAX_ITEMS; i++)
{
    format(m,128,\"Item%d\",i);
    dini_Set(itemfile,m,ItemName[playerid]);
    format(m,128,\"Itemamount%d\",i);
    dini_IntSet(itemfile,m,ItemAmount[playerid]);
}
return 1;
}
stock LoadItems(playerid)
{
new m[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);
    new item[128];
   format(item,128,\"%s\",dini_Get(itemfile,m));
    format(ItemName[playerid],128,\"%s\",item);
    format(m,128,\"Itemamount%d\",i);
    ItemAmount[playerid] = dini_Int(itemfile,m);
}
}
else
{
dini_Create(itemfile);
ResetPlayerItems(playerid);
SaveItems(playerid);
}
return 1;
}
stock GetItemName(playerid,itemslot) return ItemName[playerid][itemslot];
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;
}
Cím: Sramm\'s Inventory System v. 2.0
Írta: juhassz - 2013. január 13. - 16:03:05
Szép, ment a +.:)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Pajd Tamás - 2013. január 13. - 16:28:16
Szép lett!
\"OnItemResponse(playerid,response,listitem)
Lementi egy játékos hátizsákját.\"
Biztos?:D
Cím: Sramm\'s Inventory System v. 2.0
Írta: Rupert - 2013. január 13. - 16:29:45
Ez már igen! Nagyon szép lett, csak gratulálni tudok. Van nekem egy szinte ugyanilyen felépítésû inventory system. :O Úgy látszik, hasonlóan gondolkodunk. :)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. január 13. - 16:39:13
Idézetet írta: Pajd Tamás date=1358090896\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"32409\" data-ipsquote-contentclass=\"forums_Topic
Szép lett!
\"OnItemResponse(playerid,response,listitem)
Lementi egy játékos hátizsákját.\"
Biztos?:D
 
Köszi, hogy szóltál :D
 

Ez már igen! Nagyon szép lett, csak gratulálni tudok. Van nekem egy szinte ugyanilyen felépítésû inventory system. :O Úgy látszik, hasonlóan gondolkodunk. :)
 
[/quote]
Köszi :D
Ezek szerint :) Bár ezt túl sok féleképpen nem lehet megoldani :D
Cím: Sramm\'s Inventory System v. 2.0
Írta: geriking19 - 2013. január 13. - 16:53:14
Powered by Google:
http://forum.sa-mp.com/showthread.php?t=130436
http://joestaff.net/files/scripts/j_inventory_v2.inc
Miért hasonlít nagyon ?
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. január 13. - 17:19:36
Idézetet írta: geriking19 date=1358092394\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"32409\" data-ipsquote-contentclass=\"forums_Topic
Powered by Google:
http://forum.sa-mp.com/showthread.php?t=130436
http://joestaff.net/files/scripts/j_inventory_v2.inc
Miért hasonlít nagyon ?
 
Öhm, konkrétan mire gondolsz? Én semmi hasonlóságot nem látok a két kód között.
E: Ha a függvényekre gondolsz, akkor adj tippet, hogy írjam meg másképp, de az, hogy OdaadTargy(playerid) kicsit hülyén hangzik, És AddItem(playerid,amount,item[]) - tehát cserélésnek is semmi értelme, és nem áll kézre. És sajnos angolul így van, tehát nem tudok mit csinálni :)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Braun - 2013. január 13. - 17:46:00
Tetszik nagyon szép ment a +!
Cím: Sramm\'s Inventory System v. 2.0
Írta: Pajd Tamás - 2013. január 13. - 18:33:30
Srammnak igaza van viszont az egyik példában, idézem:
\"  if(!strcmp(ItemName,\"Medkit\",true)) \"
Cím: Sramm\'s Inventory System v. 2.0
Írta: The - 2013. január 16. - 07:32:37
Köszi szépen. :)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Graduated - 2013. január 19. - 18:37:50
Szép lett, gratula.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Beckham - 2013. január 21. - 19:04:20
Felhasználom,Great job!
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 07. - 23:16:22
Csináltam egy ilyet én is, ugyan az a hiba nekem mind a kettõnél.

Ha van két tárgyam a táskába és törlöm az elsõt ( RemoveItem ) utána, ha a másodikra kattintok nem csinál semmit..




Példa:

Ha így néz ki a file, akkor a Cigit már nem lehet használni.



Tárgy1=Üres
Darab1=0
Tárgy2=Cigi
Darab2=10

 

Ha így néz k, akkor lehet.


Tárgy1=Valami
Darab1=1
Tárgy2=Cigi
Darab2=10

 

Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 08. - 16:06:06
Amint gepnel leszek, megnezem, bar nalam a teszt folyaman tokeletesen mukodott.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 08. - 16:12:04
Oké, renden. ( Nem akartam egy szavast. )
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 08. - 16:39:12
Teszteltem, valószínûleg nálad van a hiba. Esetleg OnPlayerUseItem alatt valamit elírtál?
Ezzel teszteltem, az én incemmel: http://www.solidfiles.com/d/10f69f029f/
Ne felejts el \"Inv\" nevû mappát létrehozni a scriptfilesbe. Minden mûködik nálam.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 08. - 18:15:05
Nálam így vannak, nem tudom mi a gond.

Valamikor rányomok valamire aztán, \"
Elvetted az Ürest az illetõtõl \"


public OnPlayerUseItem( playerid, item[] )
{
if( MOTOZ[ playerid ] == MAX_PLAYERS + 1 )
{
    format( pInfo[ playerid ][ UsedItem ], 128, item );
    if( pInfo[ playerid ][ ClickedPlayer ] != playerid )
    {
        ShowPlayerDialog( playerid, GIVE_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Átadás\", \"{00d5ff}Át szeretnéd adni a tárgyat?\", \"Igen\", \"Nem\" );
}
else
{
    ShowPlayerDialog( playerid, DROP_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Eldobás\", \"{00d5ff}El szeretnéd dobni a tárgyat?\", \"Igen\", \"Nem\" );
}
}
else
{
        format( pInfo[ MOTOZ[ playerid ] ][ UsedItem ], 128, item ),
        ShowPlayerDialog( playerid, LOST_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Elvétele\", \"{00d5ff}El szeretnéd venni a tárgyat?\", \"Igen\", \"Nem\" );
}
return 0;
}

 


   if( dialogid == GIVE_DIALOG )
{
    if( response )
    {
        SendClientMessage( playerid, ZOLD, \"(( Sikeresen átadtad a tárgyat! ))\" ), cmd_me( playerid, \"átad valamit.\" ), cmd_me( pInfo[ playerid ][ ClickedPlayer ], \"elvesz valamit.\" );
   RemoveItem( playerid, pInfo[ playerid ][ UsedItem ], 1 ), GiveItem( pInfo[ playerid ][ ClickedPlayer ], pInfo[ playerid ][ UsedItem ], 1 );
    }
}
if( dialogid == DROP_DIALOG )
{
    if( response )
    {
        SendClientMessage( playerid, ZOLD, \"(( Sikeresen eldobtad a tárgyat! ))\" ), cmd_me( playerid, \"eldob valamit.\" );
            RemoveItem( playerid, pInfo[ playerid ][ UsedItem ], 1 );
}
}
if( dialogid == LOST_DIALOG )
{
    if( ! response ) return MOTOZ[ playerid ] = MAX_PLAYERS + 1;
    if( response )
    {
        new STRING[ 128 ];
       
        RemoveItem( MOTOZ[ playerid ], pInfo[ MOTOZ[ playerid ] ][ UsedItem ], GetItemAmount( MOTOZ[ playerid ], pInfo[ MOTOZ[ playerid ] ][ UsedItem ] ) );
       
        format( STRING, sizeof( STRING ), \"(( %s elvette tõled a %s(o/e)t! ))\", PlayerName( playerid ), pInfo[ MOTOZ[ playerid ] ][ UsedItem ] );
        SendClientMessage( MOTOZ[ playerid ], PIROS, STRING ), cmd_me( playerid, \"elvesz valamit.\" );
       
        MOTOZ[ playerid ] = MAX_PLAYERS + 1;
}
MOTOZ[ playerid ] = MAX_PLAYERS + 1;
}
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 08. - 18:34:27
Igazából több mindent nem értek a kódból pl. ezt:
 
MOTOZ[ playerid ] = MAX_PLAYERS + 1;

 
Ezzel elmondod, mit szeretnél elérni? Mert a MAX_PLAYER-t (ami alapból 500) növeled egyel, és úgy vettem észre, hogy egy playernek az id-jét kezeled vele.
Javíts ki, ha tévedek.
De ha elmondod mit szeretnél megcsinálni, talán segíteni is tudok.
(Egyébként OnPlayerUseItem-nél return 1;-et érdemes használni.)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 08. - 18:38:25
Így kérdezem le, hogy motoz-e a játékos.

Ha motoz, akkor egy játékos azonosítója az érték.


Ha nem, akkor pedig MAX_PLAYERS + 1. ( Vagyis 31 )



if( MOTOZ[ playerid ] > MAX_PLAYERS ) return MOTOZ[ playerid ] = Nem motoz senkit.
if( MOTOZ[ playerid ] < MAX_PLAYERS ) return MOTOZ[ playerid ] = Motoz valakit.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 08. - 18:40:53
Ez az, amit én írtam, vagy az, amit te?
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 08. - 18:43:45
Ez az amit te.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 08. - 19:21:40
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <inventory>
#define GIVE_DIALOG 1
#define DROP_DIALOG 2
#define LOST_DIALOG 3
#define LOST_DIALOG_SECOND 4
new motoz[MAX_PLAYERS] = INVALID_PLAYER_ID;
new atad[MAX_PLAYERS] = INVALID_PLAYER_ID;
new itemname[MAX_PLAYERS][128];
new nameex[MAX_PLAYERS][MAX_ITEMS][128];
 
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
CMD:motoz(playerid,params[])
{
if(!isnull(params))
{
    new dialogstr[3000];
    new id = strval(params);
    motoz[playerid] = id;
    for(new i; i< MAX_ITEMS; i++)
    {
        strcat(dialogstr,GetItemName(id,i));
        format(nameex[playerid],128,\"%s\",GetItemName(id,i));
}
ShowPlayerDialog(playerid,LOST_DIALOG_SECOND,DIALOG_STYLE_LIST,\"Motozás\",dialogstr,\"Elvesz\",\"Mégsem\");
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
atad[playerid] = clickedplayerid;
ShowItems(playerid);
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerUseItem(playerid,item[])
{
format(itemname[playerid],128,\"%s\",item);
if(motoz[playerid] != INVALID_PLAYER_ID)
{
    if(atad[playerid] != INVALID_PLAYER_ID)
    {
        ShowPlayerDialog( playerid, GIVE_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Átadás\", \"{00d5ff}Át szeretnéd adni a tárgyat?\", \"Igen\", \"Nem\" );
}
    ShowPlayerDialog( playerid, DROP_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Eldobás\", \"{00d5ff}El szeretnéd dobni a tárgyat?\", \"Igen\", \"Nem\" );
}
else ShowPlayerDialog( playerid, LOST_DIALOG, DIALOG_STYLE_MSGBOX, \"{00d5ff}Tárgy Elvétele\", \"{00d5ff}El szeretnéd venni a tárgyat?\", \"Igen\", \"Nem\" );
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
OnItemResponse(playerid,dialogid,response,listitem);
if(dialogid == LOST_DIALOG_SECOND)
{
    if(response) CallLocalFunction(\"OnPlayerUseItem\", \"is\",playerid, nameex[playerid][listitem]);
}
if(dialogid == GIVE_DIALOG)
{
if(response)
{
    RemoveItem(playerid,itemname[playerid],1);
    AddItem(atad[playerid],itemname[playerid],1);
    atad[playerid] = INVALID_PLAYER_ID;
}
else atad[playerid] = INVALID_PLAYER_ID;
}
if(dialogid == DROP_DIALOG)
{
if(response)
{
    RemoveItem(playerid,itemname[playerid],1);
}
}
if( dialogid == LOST_DIALOG )
{
    RemoveItem(motoz[playerid],itemname[playerid],GetItemAmount(motoz[playerid],itemname[playerid]));
    motoz[playerid] = INVALID_PLAYER_ID;
}
return 0;
}

 
Gyorsan összedobtam egyet, ha valami hiba van, ami nem lehet túl nagy, azt gondolom tudod javítani, meg majd kompatibilissá teszed a módhoz.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 09. - 10:00:26
Így sem jó. :nono:

Az a gond, hogyha rányomok valamire, és az elõtte lévõ slot üres, akkor megáll a folyamat.


Szóval, hiába van a második slotom valamim, nem tudom használni mert az elõtte lévõ slot üres.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 09. - 11:56:12
Mit ír ki?   Majd otthon megnézem megint. Egyebkent mikor jon a hiba? Atadasnal,eldobasnal,vagy elvetelnel? Szerintem valamelyik lekerdezo fuggvennyel lesz a hiba.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 09. - 15:03:22
Mindegyiknél hibás.. ha a fölötte lévõ slot üres, akkor nem engedi használni, \" itt nincs semmi \".
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 09. - 15:30:27
Nincs skyped, vagy vmi? Így elég nehéz. Mutasd a meg ezt a stockot, ami nálad van:
OnItemResponse(playerid, dialogid, response,listitem)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Amf - 2013. február 09. - 15:35:10
Mi a skype neved?
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 09. - 15:39:54
barabas_levente
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. február 14. - 18:46:52
2.0 elérhetõ, az AmF által jelentett bug javításával.
Cím: Sramm\'s Inventory System v. 2.0
Írta: skyLine - 2013. június 27. - 00:55:55
Eddig sosem volt ehhez hasonló hibám. Most sem értem mi a probléma vele, de amikor használom a ShowItems-t akkor a játékosnak azt hozza be, hogy
\"Darabszám Név\"
\"0\"
\"0\"
\"0\"
\"0\"
\"0\"
\"0\"
\"0\"
...
És nem is menti el a(z) \"Inv\" nevû mappába a .ini fájlját a játékosnak.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. június 27. - 11:44:16
Mutasd hogy adod oda neki a tárgyat. Meg, editeltél rajta vmit?
Cím: Sramm\'s Inventory System v. 2.0
Írta: Dommper - 2013. június 27. - 12:19:45
Nagyon szép.
Használni fogjuk!
Csak gratulálni tudok! :D
Ment a +! ;)
Cím: Sramm\'s Inventory System v. 2.0
Írta: skyLine - 2013. június 27. - 14:19:53
Idézetet írta: Sramm date=1372326256\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"32409\" data-ipsquote-contentclass=\"forums_Topic
Mutasd hogy adod oda neki a tárgyat. Meg, editeltél rajta vmit?
 
Felvettelek skypera.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Peter1481048284 - 2013. június 28. - 19:48:03
Neee ez egy ATOM Include. Ment a +
Cím: Sramm\'s Inventory System v. 2.0
Írta: citromhun - 2013. június 29. - 14:50:53
Ááááá, ez még hasznomra jöhet! :) Megy a plusz
Cím: Sramm\'s Inventory System v. 2.0
Írta: Dommper - 2013. június 29. - 15:11:04
ÖTLET:
Maga az ötlet:
Más hátizsákja megtekintése.
Lényege:
 





//E:\\Users\\Dommper\\Desktop\\Mappa\\Gamemode.pwn(236) : warning 235: public function lacks forward declaration (symbol \"Ex_OnGameModeInit\" //EZ NEM AZ INVENTORY HIBÁJA!!!)
E:\\Users\\Dommper\\Desktop\\Mappa\\Gamemode.pwn(2387) : warning 202: number of arguments does not match definition
E:\\Users\\Dommper\\Desktop\\Mappa\\Gamemode.pwn(2387) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
Header size:           4528 bytes
Code size:           158416 bytes
Data size:          7010864 bytes
Stack/heap size:      16384 bytes; estimated max. usage=4696 cells (18784 bytes)
Total requirements: 7190192 bytes
3 Warnings.

 
Ez mi? ???
Csak ennél az includenál van, ha berakom.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. június 29. - 15:26:02
Majd ha lesz idõm megcsinálom. Mutasd ezeket a sorokat a módban.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Dommper - 2013. június 29. - 15:39:36
Idézetet írta: Sramm date=1372512362\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"32409\" data-ipsquote-contentclass=\"forums_Topic
Majd ha lesz idõm megcsinálom. Mutasd ezeket a sorokat a módban.
 

2387:    OnItemResponse(playerid,dialogid,response);
2388:    new string[100];

 
A 236. sor az alapból benne van a módban, azt ne vedd figyelembe.
Cím: Sramm\'s Inventory System v. 2.0
Írta: Sramm - 2013. június 30. - 08:41:02
Az onitemresponse-nek a vegerol lemaradt az inputtext[]
Cím: Sramm\'s Inventory System v. 2.0
Írta: TheStaner - 2013. július 07. - 13:51:02
Esetleg egy sql mentésest nem dobsz össze? :$

U.I. Gyönyörû lett, ment a \"+\" :D
Cím: Sramm\'s Inventory System v. 2.0
Írta: Norbivar - 2013. július 07. - 16:46:10
Saját módba pontosan ugyan ilyet csináltam én is. No more ItemID  :D
Cím: Sramm\'s Inventory System v. 2.0
Írta: Dommper - 2013. július 18. - 19:28:44
Minden tökéletesen mûködött, de egyszer csak elromlott a ShowItems(playerid); funkció.
Csinálok egy parancsot, és ezt írja ki: SERVER: Unknown Command
Már mindent megpróbáltunk: include frissítés, új parancs, vele kapcsolatos parancsok törlése... stb. , de nem mûködik :confused:
Cím: Sramm\'s Inventory System v. 2.0
Írta: BoOy - 2013. július 18. - 23:42:02
Szintén nálam is :)
Cím: Sramm\'s Inventory System v. 2.0
Írta: Dommper - 2013. július 19. - 15:21:16
Nem lehet valahogyan javítani?
Egyáltalán mi lehet az oka, hogy így hirtelen elromlott? :confused: