Bem-vindo ao Fórum!

Registre-se agora mesmo e fique por dentro da maior comunidade de Cheats do Brasil!

wendertx

Membro Avançado
  • Content Count

    36
  • Joined

  • Last visited

  • WCoins

    0 [ Donate ]

Posts posted by wendertx


  1. Isso acontece em praticamente todas as sources.

    Mas tente colocar o level dos mobs mais baixo.

    Porque o server lê o 400 como 401,

    401 não tem exp.

    Exp do mob buga... entende?

    Lembra de não colocar uma Exp muito alta porque se o server tem limite de exp é provavel que ele vá bugar também.

    Tipo na 6.56 tinha limite de 125k de xp. e se passasse disso o player recebia tipo 4000


  2. Bom dia, uso a Source 7556.

    Por algum motivo, todas as secretas são compostas menos a do vento.

    Alguém pode me dar um help aqui?

    Tenho o código o Odin aqui(no final)

    E fui tentar configurar as runas manualmente pra receber a secreta do vento mas ele não reconheceu.

    Se eu esqueci algo ou se tenho que desativar o Odin nativo, como faço?

    Ps.: Armas cele, refinação vai de boas, só secreta do vento mesmo.

    Código inteiro do Odin:

    #include "stdafx.h"

    #include "Functions.h"

    #include "Timer.h"

     

    #define RATE_RefOdin 0

    #define RATE_CompOdin 100

     

     

    int Packets::GetChanceRefOdin(STRUCT_ITEM *Item)

    {

    if ((Item->EFV1 >= 234 && Item->EFV1 < 238) ||

    (Item->EFV2 >= 234 && Item->EFV2 < 238) ||

    (Item->EFV3 >= 234 && Item->EFV3 < 238))

    return 5;

    else if ((Item->EFV1 >= 238 && Item->EFV1 < 242) ||

    (Item->EFV2 >= 238 && Item->EFV2 < 242) ||

    (Item->EFV3 >= 238 && Item->EFV3 < 242))

    return 3;

    else if ((Item->EFV1 >= 242 && Item->EFV1 < 246) ||

    (Item->EFV2 >= 242 && Item->EFV2 < 246) ||

    (Item->EFV3 >= 242 && Item->EFV3 < 246))

    return 2;

    else if ((Item->EFV1 >= 246 && Item->EFV1 < 250) ||

    (Item->EFV2 >= 246 && Item->EFV2 < 250) ||

    (Item->EFV3 >= 246 && Item->EFV3 < 250))

    return 1;

    else

    return 0;

    }

    bool Packets::OdinFixRefinação(int32_t client, MSG_STANDARD* packet)

    {

     

     

    St_Odin *p = (St_Odin*)packet;

    STRUCT_MOB *player = (STRUCT_MOB*)NativeFunctions::getMobFromIndex(p->Header.ClientId);

     

    if (p->Header.ClientId <= 0 || p->Header.ClientId >= 1000)

    return false;

     

    for (INT8 i = 0; i < 7; i++)

    {

    if (p->Slot == 0xFF)

    return false;

     

    else if (memcmp(&p->ItemId, &player->Inventory[p->Slot], sizeof STRUCT_ITEM))

    return false;

     

    else if (p->ItemId.Index != player->Inventory[p->Slot].Index)

    return false;

     

    else if (p->ItemId.Index < 0 || p->ItemId.Index > 6500)

    return false;

    }

     

     

    if (p->ItemId[0].Index == 4043 && p->ItemId[1].Index == 4043)

    {

    if (p->ItemId[3].Index != 3338)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[4].Index != 3338)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[5].Index != 3338)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[6].Index != 3338)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

     

    for (INT8 i = 0; i < sizeof(NotCharms) / sizeof(INT16); i++)

    {

    if (player->Inventory[p->Slot[2]].Index == NotCharms)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    }

     

    INT16 RefDoItem = Packets::GetItemSanc(&p->ItemId[2]);

     

    if (RefDoItem <= 233 || RefDoItem >= 250)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "A refinação do item deve estar entre +11 e +14.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

     

    UINT8 chances = RATE_RefOdin;

    chances += (BASE_GetItemSanc(&p->ItemId[3]) + 2);

    chances += (BASE_GetItemSanc(&p->ItemId[4]) + 2);

    chances += (BASE_GetItemSanc(&p->ItemId[5]) + 2);

    chances += (BASE_GetItemSanc(&p->ItemId[6]) + 2);

    chances += GetChanceRefOdin(&p->ItemId[2]);

     

    for (INT8 e = 3; e < 7; e++)

    memset(&player->Inventory[p->Slot[e]], 0, sizeof STRUCT_ITEM);

     

    memset(&player->Inventory[p->Slot[0]], 0, sizeof STRUCT_ITEM);

    memset(&player->Inventory[p->Slot[1]], 0, sizeof STRUCT_ITEM);

     

     

     

    srand(time(NULL) / 5 * (rand() % 500) * 5);

     

    if ((rand() % 100) <= chances)

    {

    NativeFunctions::sendEmotion(p->Header.ClientId, 14, 3);

    Functions::RefinarItemMais(&player->Inventory[p->Slot[2]], 4);

     

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Sucesso na refinação.");

    Log(Functions::stringFormat("%s ref %s sucess", player->Name, pItem(player->Inventory[p->Slot[2]].Index)->Name), "AlquimistaOdim", 0);

    }

    else

    {

    NativeFunctions::sendEmotion(client, 15, 2);

    Functions::RefinarItemMais(&player->Inventory[p->Slot[2]], -4);

     

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Refinação falhou.");

    Log(Functions::stringFormat("%s ref %s fail", player->Name, pItem(player->Inventory[p->Slot[2]].Index)->Name), "AlquimistaOdim", 0);

     

    }

    for (int i = 0; i < 7; i++)

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot, &player->Inventory[p->Slot]);

     

    NativeFunctions::sendEtc(p->Header.ClientId);

    NativeFunctions::sendScore(p->Header.ClientId);

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    else

    {

    //Slot 0 Item: Emblema_da_Proteção

    //Slot 1 Item : Pacote_Lactolerium

    //Slot 2 Item : Armadura_Rake

    //Slot 3 Item : Refinação_Abençoada

    //Slot 4 Item : Refinação_Abençoada

    //Slot 5 Item : Refinação_Abençoada

    //Slot 6 Item : Pedra_Secreta_(Vento

    if (p->ItemId[0].Index == 4043 && p->ItemId[1].Index == 3448 || p->ItemId[0].Index == 3448 && p->ItemId[1].Index == 4043)

    {

    for (INT8 i = 0; i < sizeof(NotCharms) / sizeof(INT16); i++)

    {

    if (player->Inventory[p->Slot[2]].Index == NotCharms)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    }

     

    INT16 RefDoItem = Functions::GetItemSanc(&p->ItemId[2]);

     

    if (RefDoItem <= 233 || RefDoItem >= 250)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "A refinação do item deve estar entre +11 e +14.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    else

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Impossivel fazer isso");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    return true;

     

    }

    if (p->ItemId[0].Index == 3448 && p->ItemId[1].Index == 3448)

    {

    for (INT8 i = 0; i < sizeof(NotCharms) / sizeof(INT16); i++)

    {

    if (player->Inventory[p->Slot[2]].Index == NotCharms)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    }

     

    INT16 RefDoItem = Functions::GetItemSanc(&p->ItemId[2]);

     

    if (RefDoItem <= 233 || RefDoItem >= 250)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "A refinação do item deve estar entre +11 e +14.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    else

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Impossivel fazer isso");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

     

    return true;

    }

    return true;

    }

     

    if (p->ItemId[0].Index == 5122 && p->ItemId[1].Index == 5119)

    {

    if (p->ItemId[2].Index != 5132)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[3].Index != 5120)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[4].Index != 5130)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[5].Index != 5133)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else if (p->ItemId[6].Index != 5123)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado com a combinação.");

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    for (INT8 j = 0; j < 7; j++)//deleta todos os itens

    {

    memset(&player->Inventory[p->Slot[j]], 0, sizeof STRUCT_ITEM);

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot[j], &player->Inventory[p->Slot[j]]);

    }

    static const STRUCT_ITEM vento[] = { 5337, 0, 0, 0, 0, 0, 0 };

    NativeFunctions::putItem(p->Header.ClientId, &vento[0]);

    NativeFunctions::sendEtc(p->Header.ClientId);

    NativeFunctions::sendEmotion(p->Header.ClientId, 14, 3);

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Composição concluída.");

    }

     

    return true;

    }

    }

    bool Packets::OdinFixArmaCele(int32_t client, MSG_STANDARD* packet)

    {

     

    St_Odin *p = (St_Odin*)packet;

    STRUCT_MOB *player = (STRUCT_MOB*)NativeFunctions::getMobFromIndex(p->Header.ClientId);

     

    if (p->Header.ClientId <= 0 || p->Header.ClientId >= 1000)

    return true;

     

    for (INT8 i = 0; i < 7; i++)

    {

    if (p->Slot == 0xFF)

    return true;

     

    else if (memcmp(&p->ItemId, &player->Inventory[p->Slot], sizeof STRUCT_ITEM))

    return true;

     

    else if (p->ItemId.Index != player->Inventory[p->Slot].Index)

    return true;

     

    else if (p->ItemId.Index < 0 || p->ItemId.Index > 6500)

    return true;

    }

    srand(time(NULL) / 5 * (rand() % 500) * 5);

    int Chance = rand() % 100;

     

    int EquivalenteID = -1, Equivale;

     

    if (p->ItemId[0].Index == 1901 || p->ItemId[0].Index == 1902 || p->ItemId[0].Index == 1903 || p->ItemId[0].Index == 1904 || p->ItemId[0].Index == 1905 || p->ItemId[0].Index == 1906 || p->ItemId[0].Index == 1907 || p->ItemId[0].Index == 1908 || p->ItemId[0].Index == 1909 || p->ItemId[0].Index == 1910 || p->ItemId[0].Index == 1714)

    {

    static int ArmaSelado[] = { 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1714 };

    static int ArmaEquiva[] = { 2491, 2551, 2611, 2671, 2731, 2791, 2859, 2863, 2895, 2935, 1711 };

     

     

     

     

    for (int i = 0; i < sizeof(ArmaSelado) / sizeof(int); i++)

    {

    if (p->ItemId[0].Index == ArmaSelado)

    {

    EquivalenteID = i;

    break;

    }

    }

     

    if (EquivalenteID == -1)

    return true;

     

    if (ArmaSelado[EquivalenteID] == 1714)

    Equivale = ArmaEquiva[EquivalenteID];

    else

    Equivale = ArmaEquiva[EquivalenteID] + 3;

     

    if (p->ItemId[1].Index >= ArmaEquiva[EquivalenteID] && p->ItemId[1].Index <= Equivale)

    {

    int Selado = Functions::GetItemSanc(&p->ItemId[0]);

    int Arch = Functions::GetItemSanc(&p->ItemId[1]);

    if (Selado != 9)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item Selado deve ser +9");

    return true;

    }

    if (Arch < 27 && Arch > 30)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item Arch deve ser +15");

    return true;

    }

    if (p->ItemId[2].Index != 772)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Equipe a Jóia_da_Escuridão");

    return true;

    }

     

     

    if (p->ItemId[3].Index != 5334 || p->ItemId[4].Index != 5335 || p->ItemId[5].Index != 5336 || p->ItemId[6].Index != 5337)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Coloque as Pedras Secretas em Ordem");

    return true;

    }

    if (!ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index))

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Selado não confere!");

    return true;

    }

    if (Chance <= RATE_CompOdin)

    {

    STRUCT_ITEM sGiveItem;

    BASE_ClearItem(&sGiveItem);

     

    memcpy(&sGiveItem, &player->Inventory[p->Slot[1]], sizeof STRUCT_ITEM);//salva o item arch

    sGiveItem.Index = ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index); //conserva os adds e muda apenas o ID

    for (INT8 j = 0; j < 7; j++)//deleta todos os itens

    {

    memset(&player->Inventory[p->Slot[j]], 0, sizeof STRUCT_ITEM);

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot[j], &player->Inventory[p->Slot[j]]);

    }

    NativeFunctions::sendNotice(Functions::stringFormat("%s compôs com sucesso o item: %s", player->Name, pItem(sGiveItem.Index)->Name));

    BASE_SetItemSanc(&sGiveItem, 0, 0);

    NativeFunctions::putItem(p->Header.ClientId, &sGiveItem);

    NativeFunctions::sendEtc(p->Header.ClientId);

    BASE_ClearItem(&sGiveItem);

    NativeFunctions::sendEmotion(p->Header.ClientId, 14, 3);

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Composição concluída.");

    Log(Functions::stringFormat("%s comp %s sucess", player->Name, pItem(ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index))->Name), "AlquimistaOdim", 0);

     

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else

    {

    STRUCT_ITEM GiveItem;

    BASE_ClearItem(&GiveItem);

     

    memcpy(&GiveItem, &player->Inventory[p->Slot[1]], sizeof STRUCT_ITEM);//salva o item arch

    for (INT8 j = 0; j < 7; j++)//deleta todos os itens

    {

    memset(&player->Inventory[p->Slot[j]], 0, sizeof STRUCT_ITEM);

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot[j], &player->Inventory[p->Slot[j]]);

    }

    NativeFunctions::putItem(p->Header.ClientId, &GiveItem);

    BASE_ClearItem(&GiveItem);

     

    NativeFunctions::sendEmotion(client, 15, 2);

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Composição Falhou.");

    Log(Functions::stringFormat("%s comp %s fail", player->Name, pItem(ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index))->Name), "AlquimistaOdim", 0);

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    }

    else

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item equivalente não confere!");

    return true;

    }

    return true;

    }

    if (p->ItemId[0].Index == 1234 || p->ItemId[0].Index == 1235 || p->ItemId[0].Index == 1236 || p->ItemId[0].Index == 1237 || p->ItemId[0].Index == 1369 || p->ItemId[0].Index == 1370 || p->ItemId[0].Index == 1371 || p->ItemId[0].Index == 1372 || p->ItemId[0].Index == 1519 || p->ItemId[0].Index == 1520 || p->ItemId[0].Index == 1521 || p->ItemId[0].Index == 1522 || p->ItemId[0].Index == 1669 || p->ItemId[0].Index == 1670 || p->ItemId[0].Index == 1671 || p->ItemId[0].Index == 1672)

    {

     

    static int SetSelado[] = { 1234, 1235, 1236, 1237, 1369, 1370, 1371, 1372, 1519, 1520, 1521, 1522, 1669, 1670, 1671, 1672 };

    static int SetEquiva[] = { 1221, 1222, 1223, 1224, 1356, 1357, 1358, 1359, 1506, 1507, 1508, 1509, 1656, 1657, 1658, 1659 };

    for (int i = 0; i < sizeof(SetSelado) / sizeof(int); i++)

    {

    if (p->ItemId[0].Index == SetSelado)

    {

    EquivalenteID = i;

    break;

    }

    }

     

    if (EquivalenteID == -1)

    return true;

     

    if (p->ItemId[1].Index == SetEquiva[EquivalenteID])

    {

    int Selado = Functions::GetItemSanc(&p->ItemId[0]);

    int Arch = Functions::GetItemSanc(&p->ItemId[1]);

    if (Selado != 9)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item Selado deve ser +9");

    return true;

    }

    if (Arch < 27 && Arch > 30)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item Arch deve ser +15");

    return true;

    }

    if (p->ItemId[2].Index != 542)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Equipe a Pedra Lunar");

    return true;

    }

    if (ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index) == 0)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Algo está errado!");

    return true;

    }

     

    if (p->ItemId[3].Index != 5334 || p->ItemId[4].Index != 5335 || p->ItemId[5].Index != 5336 || p->ItemId[6].Index != 5337)

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Coloque as Pedras Secretas em Ordem");

    return true;

    }

     

    if (Chance <= RATE_CompOdin)

    {

    STRUCT_ITEM sGiveItem;

    BASE_ClearItem(&sGiveItem);

     

    memcpy(&sGiveItem, &player->Inventory[p->Slot[1]], sizeof STRUCT_ITEM);//salva o item arch

    sGiveItem.Index = ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index); //conserva os adds e muda apenas o ID

    for (INT8 j = 0; j < 7; j++)//deleta todos os itens

    {

    memset(&player->Inventory[p->Slot[j]], 0, sizeof STRUCT_ITEM);

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot[j], &player->Inventory[p->Slot[j]]);

    }

    NativeFunctions::sendNotice(Functions::stringFormat("%s compôs com sucesso o item: %s", player->Name, pItem(sGiveItem.Index)->Name));

    BASE_SetItemSanc(&sGiveItem, 0, 0);

    NativeFunctions::putItem(p->Header.ClientId, &sGiveItem);

    NativeFunctions::sendEtc(p->Header.ClientId);

    NativeFunctions::sendScore(p->Header.ClientId);

    BASE_ClearItem(&sGiveItem);

    NativeFunctions::sendEmotion(p->Header.ClientId, 14, 3);

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Composição concluída.");

    Log(Functions::stringFormat("%s comp %s sucess", player->Name, pItem(ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index))->Name), "AlquimistaOdim", 0);

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    else

    {

    STRUCT_ITEM GiveItem;

    BASE_ClearItem(&GiveItem);

     

    memcpy(&GiveItem, &player->Inventory[p->Slot[1]], sizeof STRUCT_ITEM);//salva o item arch

    for (INT8 j = 0; j < 7; j++)//deleta todos os itens

    {

    memset(&player->Inventory[p->Slot[j]], 0, sizeof STRUCT_ITEM);

    NativeFunctions::sendItem(p->Header.ClientId, (int)SlotType::Inventory, p->Slot[j], &player->Inventory[p->Slot[j]]);

    }

    NativeFunctions::putItem(p->Header.ClientId, &GiveItem);

    BASE_ClearItem(&GiveItem);

     

    NativeFunctions::sendEmotion(client, 15, 2);

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Composição Falhou.");

    Log(Functions::stringFormat("%s comp %s fail", player->Name, pItem(ReturnCorrectitem(p->ItemId[0].Index, p->ItemId[1].Index))->Name), "AlquimistaOdim", 0);

    NativeFunctions::sendClientSignalParm(p->Header.ClientId, 0x7530, 0x3A7, 2);

    return true;

    }

    }

    else

    {

    NativeFunctions::sendClientMessage(p->Header.ClientId, "Item equivalente não confere!");

    return true;

    }

    return true;

    }

     

    return true;

    }

     

     

    Na struct.h onde são citadas as composições das secretas:

     

    static const int CompoeSecretas[4][8] = {

    { 5126, 5127, 5121, 5114, 5125, 5111, 5118, 5334 },//agua

    { 5131, 5113, 5115, 5116, 5125, 5112, 5114, 5335 }, //terra

    { 5110, 5124, 5117, 5129, 5114, 5125, 5128, 5336 }, //sol

    { 5122, 5119, 5132, 5120, 5130, 5133, 5123, 5337 } //Vento

    };

    • Like 1

  3. A P.O vende sem gold nenhum e a PL diz que poeiras não podem ser vendidas, já olhei itemlist e tá tudo certo.

    Source nada menciona sobre poeiras.

    Olhei nas settings e não tem nenhuma restrição de NADA...

    Alguém sabe?

    Na itemlist:

     

    412,Poeira_de_Oriharucon,61.0,0.0.0.0.0,0,1000000,0,0,0,EF_VOLATILE,4,EF_GRID,0

    413,Poeira_de_Lactolerium,62.0,0.0.0.0.0,0,2500000,0,0,0,EF_VOLATILE,5,EF_GRID,0,EF_ITEMGRADE,1


  4. Não da certo, ja tentei. o meu tb nao ta recebendo mais cartas depois que coloquei a source pra funcionar

    Vc editou ou criou algum comando?

    Bom, não sou experiente mas com o que já aprendi com várias sources foi que se vc errar uma única chave "{ }" na source, vc buga todos os outros comandos.

    Tenta dar /[nomedoplayer] se vai, ou /qualquercoisa.


  5. Porque não limita a entrada de 1 por IP direto, em vez de NPC ? Apenas durante o evento...

     

    Isso eu sei que já possui algo criado para controle de contas por IP, que no caso seria a quantidade que você escolhe para poder logar

    Rapaz....

    Boa ideia ahahahahah nem tinha pensado nisso e é bem menos trabalhoso kkkkkk

    • Like 1

  6. As portas, firewall, IP's fixo, com ou sem hamachi não são tudo rs. Podem estar certos mas tem outro detalhe:

    Vc deve estar usando uma source com restrição de client.

    Quer dizer... Sources como phoenix of life por exemplo precisam de um client próprio com um wyd.exe feito pra ela sabe?

    Vc tá usando um client, ou uma source em que os packets não casam um com o outro...

    • Like 1

  7. Abre settings/joiableitems.txt

    Lá vc coloca o item que quer agrupar.

    Só que pra desagrupar é outra história... Aí vc tem que ir no controle dos packets na source e cadastrar a id do item que tu quer que agrupe e desagrupe...


  8. Exatamente, apenas adicionei na cidade. Porém quando colocado, ao subir no portal não aparece aquela mensagem pra teleportar. Você sabe como arruma isso?

     

    Geralmente você configura isso na source. Qual source cê tá usando?

    Não é simplesmente colocar o teleporte.


  9. Dá sim :)

    Só que acho que ninguém vai entregar o código na mão beijada porque requer um pouco de estudo.

    Essa 7556 é uma das mais fáceis de se trabalhar.

    Leva isso como base:

    1- Se na source já tiver um ponteiro que pega o IP do cara, beleza... se não... vc tem que fazer (não é difícil) - Mas a maioria das sources 7556 tem essa função escondida, dá uma olhada aí nas structs.

    2- Colocar o npc pra puxar o IP do cara como condição (melhor se for pra teleportar pra alguma área, por exemplo)

    3- Comparar com o IP de todas as outras contas que estão on e que já passaram pelo NPC (isso é moleza, só configurar um loop de atualização da área)

    4- Se tiver algum IP igual ao outro, online e que tá tentando executar o NPC, manda dar DC (NativeFunctions::charLogout)

     

    Não é um inferno fazer esse código, mas se sua source tiver a função de catar o IP, já é metade do caminho feito.

    • Like 1

  10. Já resolvi !

    Pra quem tiver tendo esse problema, é o Visual Studio, usei o 2013 com update 5 e resolveu.

    Se não compilar por causa das ferramentas v140 ou der incompatibilidade com as versões, ir nas propriedades/General/ vai ter uma janela de seleção das ferramentas de compilação algo como "v140(not installed)", muda pra v12.0, dá um OK e tenta compilar de novo. Vai certinho!


  11. Galera,

    Estou usando a Phoenix of life e o comando /cmd faz a TM fechar sozinha.

    Nenhum outro comando dá esse erro, mas qualquer comando que tenha "espaço" ela fecha.

    Comandos sem espaço funcionam de boas.

     

    Teleportar pra coordenadas, criar itens in-game, Notice, por exemplo, que são innercmd's dá isso.

    Alguém conseguiu resolver ou dá isso em mais alguém?

     

    Se conseguiram, podem por favor dar um help?

     

    ------------------------------------------------------------------------------------------------

    Uso Visual Studio 2017 (completo)

    Windows 10 pro


  12. Estou configurando um servidor 7556.

    Mas algo que não consigo resolver é o tal Grid e os mobs indo pra lugares que não existem no mapa ou ficam lá no alto. Vi em alguns posts dizendo que isso eu posso corrigir na Source, mas não sei exatamente onde e como. Como resolvo isso? Qualquer sugestão serve... Obrigado.

    Mobs das quests256, por exemplo não "reconhecem" as paredes e vão lá pro alto ou atravessam. NPC's somem e vão lá pro alto.


  13. Olá!

    Estou com esse problema há certo tempo e não consegui resolvê-lo. Já olhei em direções e coordenadas que meus npcs e mobs podem "andar". Mas quando chegam perto de um enésimo objeto (pedra, portão, muro, casa) ele simplesmente vai pro alto e fica lá até voltar pro lugar que não ocupe as mesmas coordenadas do tal objeto.

    Alguém tem, já teve e conseguiu resolver? Se puder dar um help aqui, ficarei muito agradecido. Abraços;

     

    Detalhe: Nas instruções de coordenadas, não tem nenhuma que ocupe a de outro objeto, ele simplesmente chega do lado, some e vai pro alto


  14. Rechdan, parabéns pela iniciativa e você tem o respeito de todos da comunidade por estar divulgando um projeto que será livre para todos, afinal, o que vale no WYD é a diversão e não a competição por um servidor "melhor que o outro". Aposto que muita gente vai usufruir bem desse projeto e deixar a criatividade fluir na source para criar e se aprimorar na área da programação.

    Todos que querem um servidor, mesmo que para brincar sozinho, querem um livre de bugs mas não sabem por onde começar.

    Meus sinceros cumprimentos e agradecimentos.


  15. Gostei muito da source esta de parabéns poderia me dizer ate que classe vai os personagem como faz pra evoluir depois do subcelestial pq não estou conseguindo vira hardcore.

     

    Sobre o bug do donate. que esta vindo com primeiro add como resolver ?

     

    uxmal ta bugado não teleporta todos do grupo somente o lider

     

    Secreta vento não esta compondo... teria como me endicar curso C++ ou alguma ajuda para resolver esses problemas

     

    Encontrei o problema do donate.

    Abra a source e procure por "dArmia.cpp"

    Procure pela linha 44 e você vai ver algo como:

     

    userData->AccountInfo.Cash -= dArmiaI[p->sellSlot][7];

    mob->Inventory[slot].Index = dArmiaI[p->sellSlot][0];

    mob->Inventory[slot].EF1 = dArmiaI[p->sellSlot][1];

    mob->Inventory[slot].EFV1 = dArmiaI[p->sellSlot][2];

     

    Aparentemente, ao comprar, os itens só vinham com o primeiro add (no meu caso só a refinação) porque o código só permitia que liberasse o primeiro EF e EFV.

     

    Apenas acrescente abaixo os outros EF's e EFV's, e no ultimo numero entre chaves, acrescentar +1. Tipo:

    mob->Inventory[slot].EF2 = dArmiaI[p->sellSlot][3];

    mob->Inventory[slot].EFV2 = dArmiaI[p->sellSlot][4];

    mob->Inventory[slot].EF3 = dArmiaI[p->sellSlot][5];

    mob->Inventory[slot].EFV3 = dArmiaI[p->sellSlot][6];

     

     

    Apenas dê CNTRL C e CNTRL V e seja feliz.

    Obs.: Os SellSlots devem estar de acordo com a estrutura do arquivo "dArmia.h".

    Os sellslots são as sequências que estão configurados os itens. Se abrir este mencionado, você vai ver:

    { 412, 61, 120, 0, 0, 0, 0, 500 },// Linha 1

     

    412 = sellslot 0 (index do item/numero na itemlist)

    61 = sellslot 1 (EF1)

    120 = sellslot 2 (EFV1)

     

    e assim por diante.

    percebeu que acima o sellslot 7 é o mesmo que informa quanto ele vale e é o que menciona o cash? (quero, com isso, te mostrar a sequência lógica)

    Pegou direitinho aí??

     

    Pra mim isso resolveu.

     

    Estou esquadrinhando essa source e resolvendo os bugzinhos bestas. Se tiver alguma duvida, só mandar msg que posso tentar ajudar.

    • Like 1

  16. Gostei muito da source esta de parabéns poderia me dizer ate que classe vai os personagem como faz pra evoluir depois do subcelestial pq não estou conseguindo vira hardcore.

     

    Sobre o bug do donate. que esta vindo com primeiro add como resolver ?

     

    uxmal ta bugado não teleporta todos do grupo somente o lider

     

    Secreta vento não esta compondo... teria como me endicar curso C++ ou alguma ajuda para resolver esses problemas

     

    Amigo, C++ você pode comprar o curso no "udemy". É um site de cursos online. O c# ou c++ vc encontra com promoção bacana direto. Super recomendo!

    Sobre as secretas: Vc precisa refazer essa função no Odin já que não tem ela pré-configurada na source. Água tbm não compõe, a sequencia que era pra vir vento vem terra, etc... Não é tão difícil, com um conhecimento básico você faz de boas... A sorte é que essa source não é toda cheia de crash e bug que atrapalhariam a refazer funções. Tem umas que se eu colocasse um espaço nem compilava mais.

    Boa sorte e bons estudos!

    • Like 1