Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 10 de 19

Visão do Encadeamento

  1. #1

    Avatar de konvict
    Data de Ingresso
    Sep 2009
    Localização
    SP, interiorzão
    Posts
    338
    Agradecido
    283
    Agradeceu
    91
    Peso da Avaliação
    18

    Padrão Dropar item exc da Box of Luck - 97d

    Me pediram este sistema e eu fiz umas pesquisas sobre o mesmo, e consegui fazer com que caia item exc da box of luck na versão 97d.
    Porém eu não usarei isso no meu dev e a área aqui ta meio paradinha ...Resolvi postar
    Pode não ser algo tão incrível pra alguns, mas quem quiser usar, tá na mão...

    Já lembro que usando isso, perde-se o drop da rena que cai desta box, tem como deixar original, porém como eu fiz a pedido não
    quis dar atenção pra esse ponto. Assim também não cai mais aquele 1000 zen^^ apenas os itens configurados no eventitembag.txt.
    Segue:

    EventItemBag.cpp
    CItemBag CIBag;
    CItemBag * LuckboxItemBag;

    CItemBag::CItemBag()
    {
    return;
    }

    CItemBag::~CItemBag()
    {
    return;
    }

    void HookBILoadItem()
    {
    LoadItemBag();
    if (LuckboxItemBag != FALSE)
    {
    delete LuckboxItemBag;
    }

    LuckboxItemBag = new CItemBag;

    if (LuckboxItemBag == NULL)
    {
    ExchangeMsgBox("CItemBag %s", "memory error alocate");
    return;
    }

    LuckboxItemBag->Init("eventitembag.txt");
    }

    void CItemBag::Init(LPSTR script_file)
    {
    CIBag.BagObjectCount = 0;
    CIBag.BagNormalItemCount = 0;
    CIBag.BagExItemCount = 0;
    char PATCH[40];
    sprintf(PATCH, "..\\Data\\%s", script_file);
    CIBag.LoadItem(PATCH);
    }

    void CItemBag::LoadItem(LPSTR script_file)
    {
    FILE *file;
    file = fopen(script_file, "r");

    char Message[255];
    if (file == NULL)
    {
    return;
    }
    rewind(file);
    char Buff[254];
    Buff[0] = NULL;
    int Type, Index, Level, Dur, LoopCount = 0;
    int Opt1 = 0, Opt2 = 0, Opt3 = 0;
    BYTE Opt4 = 0;
    int n = 0;

    while (!feof(file))
    {
    n = this->BagObjectCount;
    fgets(Buff, 254, file);
    //isdigit(fgetc(file)) != 0
    if (Buff[0] == '/' || Buff[0] == ';' || Buff[0] == '#')
    continue;
    if (Buff[0] == '\n')
    continue;

    if (isdigit(Buff[0]) == 0 || isspace(0) != 0)
    continue;

    sscanf(Buff, "%d %d %d %d %d %d %d", &Type, &Index, &Level, &Opt1, &Opt2, &Opt3, &Opt4);
    this->BagObject[n].m_type = Type;
    this->BagObject[n].m_index = Index;
    this->BagObject[n].m_level = Level;
    this->BagObject[n].m_op1 = Opt1;
    this->BagObject[n].m_op2 = Opt2;
    this->BagObject[n].m_op3 = Opt3;
    this->BagObject[n].m_exc = Opt4;
    if (this->BagObject[n].m_exc != 0)
    {
    this->BagExItemCount++;
    }
    else
    {
    this->BagNormalItemCount++;
    }

    this->BagObjectCount++;

    if (this->BagObjectCount > MAX_ITEMBAG_ATTR - 1)
    {
    break;
    }
    }
    fclose(file);
    }

    BYTE CItemBag::GetType(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_type;
    }

    BYTE CItemBag::GetIndex(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_index;
    }


    BYTE CItemBag::GetLevel(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_level;
    }


    BYTE CItemBag::GetOp1(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_op1;
    }


    BYTE CItemBag::GetOp2(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_op2;
    }


    BYTE CItemBag::GetOp3(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_op3;
    }

    BYTE CItemBag::GetExc(int n)
    {
    if (n< 0 || n > MAX_ITEMBAG_ATTR - 1)
    {
    return 0;
    }

    return this->BagObject[n].m_exc;
    }

    void HookLuckyBoxOpenEven(LPOBJ lpObj)
    {
    float dur;
    int type, level, x, y;
    int Option1 = 0;
    int Option2 = 0;
    int Option3 = 0;
    int Exc = 0;
    int DropItemNum;


    if (LuckboxItemBag == NULL)
    {
    LogAdd("EventChip Event ErrOrR");
    return;
    }
    if (CIBag.GetBagCount() > 0)
    {
    DropItemNum = (rand() % CIBag.GetBagCount());
    dur = 255;
    x = lpObj->X;
    y = lpObj->Y;


    level = CIBag.GetLevel(DropItemNum);

    type = ItemGetNumberMake(CIBag.GetType(DropItemNum), CIBag.GetIndex(DropItemNum));

    Option1 = CIBag.GetOp1(DropItemNum);
    Option2 = CIBag.GetOp2(DropItemNum);
    Option3 = CIBag.GetOp3(DropItemNum);
    Exc = CIBag.GetExc(DropItemNum);


    //
    if ((type == (12 << 4) + 15) ||
    (type == (14 << 4) + 13) ||
    (type == (14 << 4) + 14))
    {
    Option1 = 0;
    Option2 = 0;
    Option3 = 0;
    level = 0;
    Exc = 0;
    }
    if (type == ITEMGET(13, 0) ||
    type == ITEMGET(13, 1) ||
    type == ITEMGET(13, 2) ||
    type == ITEMGET(13, 8) ||
    type == ITEMGET(13, 9) ||
    type == ITEMGET(13, 12) ||
    type == ITEMGET(13, 13))
    {
    level = 0;
    }
    ItemSerialCreateSend(lpObj->m_Index, lpObj->Map, (BYTE)x, (BYTE)y, type, level, (BYTE)dur, Option1, Option2, Option3, lpObj->m_Index, Exc);

    PMSG_SERVERCMD pMsg;

    PHeadSubSetB((LPBYTE)&pMsg, 0xF3, 0x40, sizeof(pMsg));
    pMsg.CmdType = 2;
    pMsg.X = x;
    pMsg.Y = y;

    MsgSendV2(lpObj, (LPBYTE)&pMsg, sizeof(pMsg));
    DataSend(lpObj->m_Index, (LPBYTE)&pMsg, sizeof(pMsg));

    LogAdd("Event ItemDropEx : Item:%d Level:%d op1:%d op2:%d op3:%d exc:%d Cont :%d", type, level, Option1, Option2, Option3, Exc, CIBag.GetBagCount());
    }
    }
    EventItemBag.h
    #pragma once

    #define MAX_ITEMBAG_ATTR 150
    //Teste itembag

    struct CItemBagAttr
    {

    public:

    CItemBagAttr() // line : 28
    {
    this->m_type = 0;
    this->m_index = 0;
    this->m_level = 0;
    this->m_op1 = 0;
    this->m_op2 = 0;
    this->m_op3 = 0;
    this->m_exc = 0;
    } // line : 36

    public:

    BYTE m_type; // 0
    BYTE m_index; // 1
    BYTE m_level; // 2
    BYTE m_op1; // 3
    BYTE m_op2; // 4
    BYTE m_op3; // 5
    BYTE m_exc;

    };


    class CItemBag
    {

    public:

    CItemBag();
    virtual ~CItemBag();

    static void Init(LPSTR script_file);
    void LoadItem(LPSTR script_file);
    int GetBagCount() // line : 62
    {
    return this->BagObjectCount;
    }; // line : 64
    BYTE GetType(int n);
    BYTE GetIndex(int n);
    BYTE GetLevel(int n);
    BYTE GetOp1(int n);
    BYTE GetOp2(int n);
    BYTE GetOp3(int n);
    BYTE GetExc(int n);
    int GetNormalItemCount(){ return this->BagNormalItemCount; } // line : 72
    int GetExItemCount(){ return this->BagExItemCount; } // line : 73


    CItemBagAttr BagObject[MAX_ITEMBAG_ATTR]; // 4
    int BagObjectCount; // 388
    int BagNormalItemCount; // 38C
    int BagExItemCount; // 390
    };

    extern CItemBag CIBag;
    extern CItemBag * LuckboxItemBag;
    void HookLuckyBoxOpenEven(LPOBJ lpObj);
    void HookBILoadItem();
    Offset:
    #define LoadItemBag ((void(*)()) 0x48E9A0)

    Hook:
    HookThis((DWORD)&HookLuckyBoxOpenEven, 0x401843); //box of luck
    HookThis((DWORD)&HookBILoadItem, 0x40142E); // box of luck

    Créditos: Konvict
    Base da class: webzen
    Última edição por konvict; 22-07-2015 às 06:50 PM.
    Sê Sóbrio...

  2. Os Seguintes 10 Usuários Agradeceram você konvict Por este Post Útil:


 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Suporte| Fazer MOB dropar itens full
    Por juniorpk22 no fórum Servers
    Respostas: 1
    Último Post: 20-07-2015, 02:03 AM
  2. |Resolvido| Raklion nao dropa itens com luck?
    Por lacovic no fórum Tópicos resolvidos
    Respostas: 4
    Último Post: 03-04-2012, 03:57 PM
  3. |Pedido| BOTAR pra dropar itens ancients
    Por VeNoM no fórum Arquivos MuOnline
    Respostas: 1
    Último Post: 15-11-2010, 12:15 PM
  4. |Suporte| Não quer dropar item ex de eventos(Cry, etc)
    Por Victor_ScB no fórum Dúvidas
    Respostas: 4
    Último Post: 31-05-2010, 12:48 AM
  5. |Resolvido| Iten Com Luck n Põe +9
    Por Dann no fórum Tópicos resolvidos
    Respostas: 1
    Último Post: 18-10-2009, 11:36 AM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •