Szerző Téma: Halál ürítés  (Megtekintve 1110 alkalommal)

Halál ürítés
« Dátum: 2018. április 29. - 11:38:03 »
0 Show voters
Sziasztok, itt egy inventory rendszer pár lényegesebb része:
 
 
 
 
 
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,DIALOG_CUCC,DIALOG_STYLE_LIST,\"A zsebed tartalma:\",dialogstr,\"Választ\",\"Mégsem\");    else SendClientMessage( playerid, -1, \"Üres a zsebed.\" );    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 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[]){    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(Model,Amounta, Float:X, Float:Y, Float:Z, world, interior){    if(Model != 0)    {        for(new i = 0; i < sizeof(ItemInfo); i++)        {            if(ItemInfo[ItemPosX] == 0.0 && ItemInfo[ItemPosY] == 0.0 && ItemInfo[ItemPosZ] == 0.0)            {                ItemInfo[ItemModel] = Model;                ItemInfo[ItemAmounta] = Amounta;                ItemInfo[ItemPosX] = X;                ItemInfo[ItemPosY] = Y;                ItemInfo[ItemPosZ] = Z;                ItemInfo[ItemVWorld] = world;                ItemInfo[ItemInterior] = interior;                Label = Create3DTextLabel(\"Tárgy\\nC\", 0x008080FF,X,Y,Z, 5.0,world, 0);                DropObject = CreateObject(Model, X, Y, Z-1,0.0, 0.0, 0.0, world);                return 1;            }        }        return 1;    }    return 1;}
 
(Ez nem a teljes rendszer)
 
A kérdésem az lenne, hogy valaki tudna segíteni abban, hogy halálnál az összes nála lévő tárgyat kidobja, annyit amennyi van nála?  Előre is köszönöm, ha valaki segít!
 
 
 
 
 
 
 
 
« Utoljára szerkesztve: 2018. április 29. - 11:38:34 írta RicSiy123 »

Halál ürítés
« Válasz #1 Dátum: 2018. április 29. - 11:39:47 »
0 Show voters
Itt a kidobás: 
 
                if(CompareEx(PlayerInfo[playerid][pCucc],\"Pizzaszelet\"))
                {
                new Float:x,Float:y,Float:z;
                GetPlayerPos(playerid,x,y,z);
                DropItem(2702,1,x,y,z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
                RemoveItem(playerid,PlayerInfo[playerid][pCucc],1);
                PlayerInfo[playerid][pCucc] = 0;
                }

Halál ürítés
« Válasz #2 Dátum: 2018. április 29. - 12:04:35 »
0 Show voters

public OnPlayerDeath(playerid, killerid, reason)
{
ResetPlayerItems(playerid);
return 1;
}

 
Benne van az inventory rendszeredben is \"stock ResetPlayerItems\", minden tárgyat lenulláz vele.

Halál ürítés
« Válasz #3 Dátum: 2018. április 29. - 15:44:22 »
0 Show voters
Ez világos, viszont én ki szeretném dobni az összes tárgyát a földre. 
 
 

Halál ürítés
« Válasz #4 Dátum: 2018. május 02. - 09:26:17 »
0 Show voters
Miket akarsz kidobni?

Halál ürítés
« Válasz #5 Dátum: 2018. május 02. - 17:01:39 »
0 Show voters
Az összes nála levő tárgyat. 
 
stock DropItem(Model,Amounta, Float:X, Float:Y, Float:Z, world, interior)
{
    if(Model != 0)
    {
        for(new i = 0; i < sizeof(ItemInfo); i++)
        {
            if(ItemInfo[ItemPosX] == 0.0 && ItemInfo[ItemPosY] == 0.0 && ItemInfo[ItemPosZ] == 0.0)
            {
                ItemInfo[ItemModel] = Model;
                ItemInfo[ItemAmounta] = Amounta;
                ItemInfo[ItemPosX] = X;
                ItemInfo[ItemPosY] = Y;
                ItemInfo[ItemPosZ] = Z;
                ItemInfo[ItemVWorld] = world;
                ItemInfo[ItemInterior] = interior;
                Label = Create3DTextLabel(\"Tárgy\\nC\", 0x008080FF,X,Y,Z, 5.0,world, 0);
                DropObject = CreateObject(Model, X, Y, Z-1,0.0, 0.0, 0.0, world);
                return 1;
            }
        }
        return 1;
    }
    return 1;
}

Halál ürítés
« Válasz #6 Dátum: 2018. május 02. - 17:03:03 »
0 Show voters
Angol Dayz stílusú szerveren találkozhattok ilyennel, ahol halálnál a földre üríti az inventory tartalmát. Ezt szeretném megoldani valahogy. 
 
Ezen indulnék el, de még nem értek hozzá eléggé. 
 
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,DIALOG_CUCC,DIALOG_STYLE_LIST,\"A zsebed tartalma:\",dialogstr,\"Választ\",\"Mégsem\");

    else SendClientMessage( playerid, -1, \"Üres a zsebed.\" );

    return 1;

}



 
« Utoljára szerkesztve: 2018. május 02. - 17:14:15 írta RicSiy123 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal