Szerző Téma: Mentés  (Megtekintve 364 alkalommal)

Mentés
« Dátum: 2017. Október 13. - 09:26:50 »
0 Show voters
Sziasztok! Valaki tudna írni nekem erre egy sima Dini mentést, de odaírva, hogy mi mire jó? Próbálom megérteni a dolgok működését. Előre is köszönöm a segítséget!
 
 
 
 
 
#include <a_samp>
#include <zcmd>
#include <dini>
#include <streamer>
#include <sscanf>
 

#define MAX_BUTOR 20
 
new Butorok[MAX_PLAYERS][MAX_BUTOR];
 
enum butorData
{
    Float:bPos[3],
    Float:bRot[3],
    bVirtual,
    bInti
}
 

new butorInfo[MAX_PLAYERS][MAX_BUTOR][butorData];
 

new megvettButorok[MAX_PLAYERS] = 0;
 

new jelenlegiButor[MAX_PLAYERS] = -1;
 
 
 
CMD:ujbutor(playerid,params[])
{
    if(isnull(params)) return SendClientMessage(playerid,-1,\"Használat: /újbútor (ID)\");
    if(megvettButorok[playerid] > MAX_BUTOR) return SendClientMessage(playerid,-1,\"Nem hozhatsz létre több bútort :C\");
    new butorID;
    sscanf(params,\"d\",butorID);
    new Float:X,Float:Y,Float:Z,virtual,inti;
    GetPlayerPos(playerid,X,Y,Z);
    virtual = GetPlayerVirtualWorld(playerid);
    inti = GetPlayerInterior(playerid);
    // LOGIKA
    Butorok[playerid][megvettButorok[playerid]] = CreateDynamicObject(butorID,X,Y,Z,0.0,0.0,0.0,virtual,inti);
    butorInfo[playerid][megvettButorok[playerid]][bPos][0] = X;
    butorInfo[playerid][megvettButorok[playerid]][bPos][1] = Y;
    butorInfo[playerid][megvettButorok[playerid]][bPos][2] = Z;
    butorInfo[playerid][megvettButorok[playerid]][bRot][0] = 0.0;
    butorInfo[playerid][megvettButorok[playerid]][bRot][1] = 0.0;
    butorInfo[playerid][megvettButorok[playerid]][bRot][2] = 0.0;
    butorInfo[playerid][megvettButorok[playerid]][bVirtual] = virtual;
    butorInfo[playerid][megvettButorok[playerid]][bInti] = inti;
    // A Butorok tömbbe, a játékos táblán, a megvettButorok mezőbe, létrehozunk egy objectet.
    megvettButorok[playerid]++;
    // Növeljük a megvett bútorok számát. Mivel ha szeretnénk mégegyet létrehozni akkor ne a jelenlegit írja felül hanem
    // Továbbá tolódjon 1-el.
    SendClientMessage(playerid,-1,\"Megvettél egy bútort !\");
    return 1;
}
 

CMD:mozgatbutor(playerid,params[])
{
    if(isnull(params)) return SendClientMessage(playerid,-1,\"Használat: /mozgatbútor (Slot)\");
    new butorSlot;
    sscanf(params,\"d\",butorSlot);
    if(Butorok[playerid][butorSlot] == 0) return SendClientMessage(playerid,-1,\"Ezen a Sloton, nincsen bútor!\");
    // Leellenőrizzük, hogy az adott sloton van-e object, ha van akkor kezeljük, ha nem akkor hibaüzenet.
    jelenlegiButor[playerid] = butorSlot;
    EditDynamicObject(playerid,Butorok[playerid][butorSlot]);
    // Lehetőséget adunk arra hogy a játékos mozgassa az objectet;
    return 1;
}
 
 
 
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    if(objectid == jelenlegiButor[playerid])
    {
        if(response == EDIT_RESPONSE_CANCEL)
        {
            // Ha nem változtat, akkor az objectet visszrakjuk a régi helyére.
            //Ezt nem mindig szükséges, de van rá esély, hogy nem rakja automatikusan vissza, ezért erre van ez a kód
            SetDynamicObjectPos(Butorok[playerid][jelenlegiButor[playerid]],butorInfo[playerid][jelenlegiButor[playerid]][bPos][0],butorInfo[playerid][jelenlegiButor[playerid]][bPos][1],butorInfo[playerid][jelenlegiButor[playerid]][bPos][2]);
            SetDynamicObjectRot(Butorok[playerid][jelenlegiButor[playerid]],butorInfo[playerid][jelenlegiButor[playerid]][bRot][0],butorInfo[playerid][jelenlegiButor[playerid]][bRot][1],butorInfo[playerid][jelenlegiButor[playerid]][bRot][2]);
        }
        else if(response == EDIT_RESPONSE_FINAL) // Ha lementi
        {
            // Beállítjuk a koordinátákat.
            butorInfo[playerid][jelenlegiButor[playerid]][bPos][0] = x;
            butorInfo[playerid][jelenlegiButor[playerid]][bPos][1] = y;
            butorInfo[playerid][jelenlegiButor[playerid]][bPos][2] = z;
            butorInfo[playerid][jelenlegiButor[playerid]][bRot][0] = rx;
            butorInfo[playerid][jelenlegiButor[playerid]][bRot][1] = ry;
            butorInfo[playerid][jelenlegiButor[playerid]][bRot][2] = rz;
            // Helyére rakjuk
            SetDynamicObjectPos(Butorok[playerid][jelenlegiButor[playerid]],butorInfo[playerid][jelenlegiButor[playerid]][bPos][0],butorInfo[playerid][jelenlegiButor[playerid]][bPos][1],butorInfo[playerid][jelenlegiButor[playerid]][bPos][2]);
            SetDynamicObjectRot(Butorok[playerid][jelenlegiButor[playerid]],butorInfo[playerid][jelenlegiButor[playerid]][bRot][0],butorInfo[playerid][jelenlegiButor[playerid]][bRot][1],butorInfo[playerid][jelenlegiButor[playerid]][bRot][2]);
        }
    }
    return 1;
}
 
 
 
 
 
 
 
 
 
 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal