Ir para conteúdo

dalvorsn

Conde
  • Total de itens

    750
  • Registro em

  • Última visita

  • Dias Ganhos

    8

Tudo que dalvorsn postou

  1. Primeira coisa que tu deveria fazer é melhorar esse uso do opcode, isso de dar split com algum caracter é pessimo e fica muito porco o codigo, tu pode fazer diversas implementações e da ate pra jogar o codigo lua comprimido numa string e enviar como opcode(lembrando que o popString de server é bem porco e não aceita caracter não representavel, então pra isso tu precisa dar um base64 encode nelas antes). Quanto a duvida em si, eu geralmente faço da seguinte, eu envio um opcode para o servidor fazendo a requisição da informação, e ele me volta outro opcode com as infos, quando eu recebo esse opcode, eu populo os elementos da interface e ai sim dou o show, lembrando que não é só show, tu tem que dar show() focus() e raise() para que a janela fique acima de qualquer outra que esteja aberta
  2. Troca isso: cid = getCreatureByName(getPlayerNameByGUID(tonumber(result:getDataInt("player")))) Por isso: local guid = tonumber(result:getDataInt("player")) cid = getPlayerByGUID(guid) E confere o schemaSQL dessa tabela `shop_history`, para ver se o campo é player mesmo e etc
  3. Você não vai 'criar', ele ja existe e é open-source e se chama OTClient: https://github.com/edubart/otclient
  4. Seu primeiro e pior erro é estar rodando isso em windows kk brincadeiras a parte Tem dois erros ai, um é que você está passando um boolean para a função pairs, que espera uma tabela para fazer iteração, e o outro é container not found, na função getContainerSize(uid), o uid provavelmente está nil ou não existe mais no jogo(pode ter sido removido ou qualquer coisa do genero, mas basicamente ele perdeu a referencia)
  5. A source é o código fonte do projeto, ou comumente chamado de core. No caso do opentibia esse código fonte é feito em c++ e nele está toda a estrutura base do servidor. E por questões de agilidade e praticidade esse código é extendido através de scripts na linguagem lua. C++ é uma linguagem compilada, então não basta copiar e colar como lua, tu tem que compilar o código após fazer a alteração, e jogar esse executavel gerado na compilação na pasta do servidor, e abrir o servidor por ele. Se atente sobre qual source deve pegar, pois cada servidor é feito com base em uma source especifica, e a mesma pode ainda ter sofrido alterações, usar qualquer source sem saber se é a correta poderá lhe trazer diversos problemas de compatibilidade e possivelmente crashs.
  6. Você está usando uma HorizontalList: https://github.com/edubart/otclient/blob/a6a50fa1624f38fc173f79abdfcafcb29c42c354/data/styles/10-listboxes.otui#L9-L13 Ela usa o layout horizontalBox para ajustar isso terá que trocar para VerticalList e ajustar os tamanhos da janela para alocar os widgets, além disso terá que ajustar o scrollBar, que agora deve passar a ser um scrollbar vertical
  7. Cara, não tem um tutorial descente disso, mas também não tem nada muito absurdo de entender. Primeira coisa tu tem que entender a estrutura, o otclient é todo modularizado, otmod é o primeiro cara a ser lido, ele que diz todas as infos iniciais de load, então comece vendo os otmods e entendendo como ele funciona. entendido isso tu vai passar para o scripts lua dele. No arquivo de load dele tu vai encontrar duas funções primordiais, 'init' e 'terminate'(pode ser diferente os nomes se tu alterar no otmod, mas não aconselho a mudar pois já é convencionado assim). init é executado ao dar load no module, e terminate ao dar unload no module (lembrando que reload é unload + load) além disso o otclient usa o conceito de signals and slots, que é o mesmo adotado pelo qt e outras bibliotecas graficas, através deles tu consegue fazer connect em diversos eventos e etc, é essencial que entenda isso para não ter que fazer esforços desnecessários graficamente falando tu pode criar interface por duas maneiras, por lua através de funções que manipulam widgets e pelo otui, o otui é como se fosse um CSS, porém proprio do otclient, inclusive por isso ele tem seu proprio loader, que tu pode encontrar na source https://github.com/edubart/otclient/tree/master/src/framework/ui se você não entende de c++, tudo bem, você pode aprender vendo exemplos dentros os inumeros módulos que ja existem e na pasta de styles https://github.com/edubart/otclient/tree/master/data/styles a maioria das coisas que tu precisa pra fazer a maioria dos modulos ja tem em algum modulo feito no cliente, então seu melhor professor será o proprio cliente, basta tu entender e quebrar a cabeça tentando no geral e pra maioria dos casos você não irá precisar de alterar as sources pra praticamente nada, existe bind para quase todas as funções que tu precisa, tu pode encontra-los em: https://github.com/edubart/otclient/blob/master/src/framework/luafunctions.cpp -- no que se refere a coisas do framework (widgets e etc) https://github.com/edubart/otclient/blob/master/src/client/luafunctions.cpp -- no que se refere a coisas do jogo duvidas pontuais tu pergunta no forum que irão te responder, mas é preferível que tente sozinho antes, porque o aprendizado está justamente ai
  8. Remove o select de genero e altera o script de submissão. function createCharacter() { $('.loader').show(); var form = $('#createCharacter').serialize(); form.sex = 0; if($.inArray(parseInt(form.vocation), [1,2,3]) != -1 ) { form.sex = 1; } $.ajax({ url: '<?php echo WEBSITE; ?>/index.php/character/create_character/1', type: 'post', data: form, success: function(data) { $('.errors').html(data); $('.loader').hide(); } }); } Supondo que as vocações que são masculinas sejam 1, 2 e 3
  9. Substitui esse if: if(in_array(strtolower($unit), $config['invalidNameTags'])) Por esse: if(in_array(strtolower($unit), $config['invalidNameTags']) || preg_match('/[\W+]/', $unit)) /[\W+]/ - regex para non-words
  10. Erro mega genérico esse, tenta jogar o codigo todo dentro de um try catch pra ver se tem alguma exception escondida ai
  11. Foi erro de tag, você não abriu a <ul> apos o noticias: <div id="naglowek">Noticias</div> <ul>
  12. Não tão repassando o cid pro addEvent ... if isSummon(cid) or isPlayer(getCreatureMaster(cid)) then addEvent(function(cid) if isCreature(getCreatureMaster(cid)) then doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) end end, 100, cid) end
  13. Até onde me lembro só daria para fazer pelas sources do cliente e a definição de GM/GOD e etc não é muito bem armazenada no cliente, ele ve pelo tamanho de um vetor de GMActions, mas que só está presente pro cliente local, essa info não é repassada pros spectators, então o que daria pra fazer é uma checagem de string pelo nome só ... Sabe ao menos compilar o cliente?
  14. Óbviamente, a função não é recursiva. Você tem que iterar sobre todos os containers para poder pegar todos os items. Use essa função para pegar os items dentro do container: function getItemsInContainer(uid) local items = {} if isContainer(uid) and getContainerSize(uid) > 0 then for slot=0, (getContainerSize(uid)-1) do local item = getContainerItem(uid, slot) if isContainer(item.uid) then local _items = getItemsInContainerById(item.uid) for i=0, #_items do table.insert(items, items[i]) end else table.insert(items, item) end end end return items end Irá lhe retornar uma tabela com todos os items dentro do container, exceto containers(não fazem diferença pro seu caso). Dai tu pode iterar sobre ela verificando pelo itemid. local items = getItemsInContainer(corpse) for _, thing in pairs(items) do if isInArray(config.ids, thing.itemid) then if config.drop_effect then doSendMagicEffect(position, 55, cid) end end end
  15. Poste o código do layout, assim é impossivel saber, pode ser ate um simples erro de fechamento de uma div, ou falta de alguma classe. E caso não seja nada disso teria que fazer o alinhamento (text-align, padding ou margin).
  16. Nem lembrava mais desse haha bacana xD
  17. Bom, saberá entender, não necessariamente fazer. O ideal mesmo inclusive por estarmos num forum de tibia, é passar a base de lua pra que conheçam a linguagem e depois aplicar em ots, acho que pode ser mais produtivo isso e até mais interessante xD
  18. A ideia é boa, infelizmente já vi diversas vezes essas iniciantivas, e por melhores que fossem os professores se não tiver a dedicação dos alunos não funciona, então aos que deciderem fazer, procurem realmente aprender e se dediquem, programação não é fácil principalmente no começo. @Poccnn Boa sorte brow, que saiam ótimos scripters
  19. Então desconheço c++, e o manual de referencia dele está errado http://www.cplusplus.com/reference/string/string/operators/
  20. sim, dependendo do tamanho é de boas mesmo, apesar de sinceramente nao ter entendido pra que storage nisso rs
  21. ele colocou pra indicar que o numero 3 é o group que seria o limitador da condicional, pro caso de voce querer mudar o group da listagem e etc
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...