Ir para conteúdo

Featured Replies

Postado
6 minutos atrás, DboExplorer disse:

Eu to querendo fazer sem precisar por um tabela especificando cara atributo customizado entende? Dessa forma em lua eu já fiz, porém se eu adicionar um atributo novo e esquecer de por na tabela vai dar problema, por isso queria fazer em c++ pra pegar todos direto sem precisa especificar cada um.

Entendi, tu pode me mandar tuas sources? Ou a source da base do teu servidor

  • Respostas 32
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Amigo, eu fiz,  mas utilizei padrões do c++11, tenha certeza de que o teu compilador esteja nessa versão. Também não testei (não creio que haja erros de lógica, mas pode haver alguns de escrita, como

  • Okay, okay, alguns erros foram, mas a maioria foi porque eu não fiz isso usando uma ide, aí errei em alguns nomes e tal. Substitua teus arquivos por estes:   itemattributes.cpp ite

  • tente: luascript.cpp Relaxa, tá quase lá, ahuahuauh O problema aqui tá sendo como fazer essa função retornar uma tabela de chave e valor (aka {chave = "valor", chave2 = "valor2"), eu nã

Posted Images

Postado

Amigo, eu fiz,  mas utilizei padrões do c++11, tenha certeza de que o teu compilador esteja nessa versão. Também não testei (não creio que haja erros de lógica, mas pode haver alguns de escrita, como letras comidas ou falta de ;, fiz correndo), já que não dá pra compilar só com esses arquivos, mas vê aí:

 

 

 

Antes de tudo, vamos para os includes:

no arquivo luascript.cpp, adicione um: #include "itemattributes.h" onde tu encontrar os includes semelhantes

já no arquivo luascript.h, declare a classe ItemAttribute: class ItemAttributeonde tu encontrar as declarações de classes semelhantes

  • Após "bool unserializeMap(PropStream& stream);", no arquivo itemattributes.h, adicione: 
AttributeMap* getMap();
  • Após a linha 315, no arquivo itemattributes.cpp, adicione:
//RETORNA UM PONTEIRO PARA O ATTR MAP POR MOTIVOS DE PERFORMANCE, NÃO PODE SER UTILIZADO EM OBJETOS CONSTANTES!!!
AttributeMap* ItemAttributes::getMap() 
{
    if(!attributes){
        createAttributes();
    }
    return attributes;
}
  • Após a seguinte linha no arquivo luascript.h:
static int32_t luaGetItemAttribute(lua_State* L);
  • Adicione:
static int32_t luaGetItemAttributeMap(lua_State* L);

 

  • Após a seguinte linha no arquivo luascript.cpp:
    //getItemAttribute(uid, key)
    lua_register(m_luaState, "getItemAttribute", LuaScriptInterface::luaGetItemAttribute);
  • Adicione:
    //getItemAttributeMap(uid, key)
    lua_register(m_luaState, "getItemAttributeMap", LuaScriptInterface::luaGetItemAttributeMap);
  • Após a linha 9282, no arquivo luascript.cpp, adicione:
int32_t LuaScriptInterface::luaGetItemAttributeMap(lua_State* L)
{
    //getItemAttributeMap(uid)
    ScriptEnviroment* env = getEnv();
    Item* item = env->getItemByUID(popNumber(L));
    if(!item)
    {
        errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND));
        lua_pushnil(L);
        return 1;
    }
  
    typedef std::map<std::string, ItemAttribute> AttributeMap;
    AttributeMap* attrMap = item->getAttributeMap();

    lua_newtable(L);
    for(auto attr : attrMap){
        setField(L, attr->first, attr->second.get());
        pushTable(L);
    }

    return 1;

}

 

Editado por Mono Singed (veja o histórico de edições)

Postado
8 minutos atrás, DboExplorer disse:

@Mono Singed Eu uso Devp-cpp pra compilar e não consigo por o c++11 porque estou com um problema no dev, deu alguns erro acredito que seja por que não está usando os padrão do c++11.

eorrrrrrrso.png

Okay, okay, alguns erros foram, mas a maioria foi porque eu não fiz isso usando uma ide, aí errei em alguns nomes e tal.

Substitua teus arquivos por estes:

 

itemattributes.cpp

itemattributes.h

luascript.cpp

luascript.h

 

(novamente, te explico como utilizar se compilar certinho)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo