Ir para conteúdo

Kydrai

Visconde
  • Total de itens

    250
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que Kydrai postou

  1. Ta dizendo que não existe a coluna language na tabela accounts, deve ter o sistema de multi linguagem no seu servidor. Você pode remover o sistema do seu servidor ou executar esse comando SQL no seu banco de dados para inserir a coluna: ALTER TABLE `accounts` ADD `language` INT(11) NOT NULL DEFAULT '0'
  2. @dalvorsn Não recomendo dessa forma, assim os players poderiam burlar fácil editando o html, precisando de outras formas de verificação. Você precisa tirar o select, como já disseram, e editar a função create_character no arquivo system\application\controllers\character.php. La tem um comando assim (ou parecido): $this->form_validation->set_rules('sex', 'Sex', 'required|integer|callback__checkSex');, ele verifica o sexo do personagem. Antes desse comando você pode fazer algo assim (não testei): if (in_array($_POST['vocation'], array(1, 2, 3, 4))) { $_POST['sex'] = 0; } else if (in_array($_POST['vocation'], array(5, 6, 7, 8))) { $_POST['sex'] = 1; } else { $_POST['sex'] = -1; } Dessa forma, se a vocação escolhida for 1, 2, 3 ou 4 terá o sex 0 (feminino), se for 5, 6, 7, 8 terá o sex 1 (masculino). Caso não seja nenhum desses dará erro de sexo inválido e não criará o personagem.
  3. O cid não altera a cada ação, ele é gerado quando a criatura é "colocada no mapa" (login, /m, /s, etc). E nesse caso dele o cid é um monstro, o erro é porque não localiza o monstro. Não da pra saber exatamente tudo que ocorre no serv só com essas linhas, mas supondo que nada influencie no dano após esse script, você poderia trocar tudo isso por algo similar a isso: if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then local hp = getCreatureHealth(cid) if type == STATSCHANGE_HEALTHLOSS then hp = hp - value elseif type == STATSCHANGE_HEALTHGAIN then hp = hp + value end doPlayerSendCancel(getCreatureMaster(cid), "%PokeHealth@" .. hp .. "@" .. getCreatureMaxHealth(cid)) end Isso é só um exemplo, vai depender do que tem no seu serv.
  4. O erro é pq a criatura (cid) não existe (morreu ou foi removida) quando executa a função dentro do addEvent. Teria que passar o getCreatureMaster(cid) como parâmetro pro addEvent, ao invés de somente o cid. Ainda sim, se o cid não existe no momento que executa o addEvent você não vai conseguir executar as funções getCreatureHealth e getCreatureMaxHealth dentro do addEvent, teria que ter outra forma de pegar o hp dele. Seria algo como: if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then addEvent(function(cid, master) if isCreature(master) then if isCreature(cid) then doPlayerSendCancel(master, "%PokeHealth@" .. getCreatureHealth(cid) .. "@" .. getCreatureMaxHealth(cid)) else -- outro comando para pegar o hp end end end, 100, cid, getCreatureMaster(cid)) end Sobre o hp, se o max health não muda, você pode passar ele como parâmetro junto com o cid e o master. Já o health, por ser onStatsChange, dependendo dos scripts do servidor, da pra saber o hp após executar este script somando o valor do dano com o hp. Caso contrário, imagino que você tenha algum comando pra pegar o hp da criatura que não existe (direto da pokeball, por exemplo).
  5. Kydrai

    Monstros se matando

    Na verdade as storages são utilizadas nas criaturas em geral, tanto que a função original é doCreatureSetStorage/getCreatureStorage (na versão 0.3.6 e 0.4). A única diferença de colocar no player é que salva no banco de dados no save, já no monstro/npc não salva quando ele morre ou desaparece. E também não tem como uma storage no monstro sobrescrever uma no player, como você disse a storage vai estar vinculada a um uid. No máximo, em alguns casos, você vai precisar checar se a criatura é um monstro, npc ou player nos scripts.
  6. O cálculo do tempo para a passada é praticamente ((1000 * ground_speed) / monster_speed) * lastStepCost lastStepCost é o valor do último passo, 1 pra quando anda reto e 2 pra diagonal. Com isso deve chegar a um valor aproximado para colocar no addEvent.
  7. As duas sugestões dão o mesmo resultado, eu só alterei a velocidade da passada pra fazer o efeito dele andando. 150 foi uma sugestão que aparentemente deu na mesma do cliente do Tibia aqui, e quanto maior esse valor mais rápido vai ser o efeito pra ele andar até o tile. Vocês vão precisar de alguma forma pra calcular o tempo das passadas e sincronizar o cliente com o servidor, isso varia pra cada tile e speed de monstro. O melhor mesmo é pelas sources que já tem tudo isso pronto.
  8. Isso de andar lento é problema do script que não movimenta a creature no tempo certo. Sobre o problema de ir teleportando vejo 2 formas de resolver, pelo que testei a velocidade de uma creature com 0 de speed fica em média 150 no cliente, então precisa fazer algo assim: No src/client/creature.cpp: 1ª forma é trocar quando pega a velocidade do passo: Troque: int Creature::getStepDuration(bool ignoreDiagonal, Otc::Direction dir) { int speed = m_speed; if(speed < 1) return 0; Por: int Creature::getStepDuration(bool ignoreDiagonal, Otc::Direction dir) { int speed = m_speed; if(speed < 1) speed = 150; 2ª forma é colocar um speed mínimo quando coloca speed 0: Troque: void Creature::setSpeed(uint16 speed) { uint16 oldSpeed = m_speed; m_speed = speed; // speed can change while walking (utani hur, paralyze, etc..) if(m_walking) nextWalkUpdate(); callLuaField("onSpeedChange", m_speed, oldSpeed); } Por: void Creature::setSpeed(uint16 speed) { if(speed < 1) speed = 150; uint16 oldSpeed = m_speed; m_speed = speed; // speed can change while walking (utani hur, paralyze, etc..) if(m_walking) nextWalkUpdate(); callLuaField("onSpeedChange", m_speed, oldSpeed); }
  9. Mostra o script do order, fica mais fácil de achar o problema vendo as funções que ele usa.
  10. E se eu tiver um código c++ ou uma dúvida não relacionada a mods e sim ao cliente? Ou algo que já existe lá, o tutorial de compilação. Pelo que entendi não teria onde postar, já que essa estrutura deixa a entender que só pode ser relacionado a mods. A única vantagem que vi nessa estrutura foi o "Dúvidas e pedidos respondidos".
  11. Muito bom, faz tempo que não via alguém falando desse apng. Aqui funcionou de boa.
  12. Nesse caso acho que seria melhor fazer por lua. Só ir no modules\game_things\things.lua e dentro do load() colocar: if version >= 840 then g_game.enableFeature(GameBlueNpcNameColor) end
  13. Não tem nenhum erro aí. Você só executou o autogen.sh, agora executa o configure e o build.sh. ./configure --enable-mysql --enable-server-diag --enable-root-permission (ou com as flags que quiser) ./build.sh
  14. Não gosto muito de geradores, mas fico legal e com certeza ajuda um pessoal que quer aprender ou agilizar o começo de um script. Se você colocar um visualizador do script em tempo real fica melhor ainda.
  15. Decidir liberar pro público pode te gerar uma grande decepção, a não ser que você tenha certeza que não pretende mais utilizá-lo, o que me parece meio cedo pra dizer. Você está sozinho no projeto? Porque com uma equipe legal acho que o tempo disponível só precisa ser bem dividido e pelo que vi não faz sentido desistir do projeto se ele está ficando bom e quase pronto. Iniciar o servidor acho que pode ser considerado uma das partes mais chatas, porque parece que nunca fica pronto, mas é só colocar online para ver ele evoluindo mesmo. Hoje em dia quem libera códigos assim ou está fazendo por aprender, ou divulgando o seu servidor ou apenas liberando porque alguém vazou e não quer perder os créditos pelo trabalho. Um ou outro vai liberar algo como agradecimento pela ajuda de outras pessoas, ou simplesmente por querer ajudar ao próximo. Parece que o pessoal tem mais interesse em não ajudar os "sanguessugas" do que ajudar quem tem interesse. Como eu nunca fiz um servidor pro público não sei bem o que pensam , mas com certeza uma das decepções é ver o pessoal nem tentar ajudar a corrigir os erros. @nociam Pokebro não é baseado no dash, talvez tenha alguma ideia tirada dele o que acho difícil já que ele é baseado em outros, mas de código garanto que não tem nada a ver e nunca teve .-.
  16. Fico muito bom o npc e a ideia da quest.
  17. Não funciona nas versões mais recentes de otserv. Talvez seja só mudar o nome da função, tenta mudar onde ta db.executeQuery por db.query.
  18. É bom ver os servidores passando por obstáculos e evoluindo sempre com novidades para os players. Parabéns a todos do Global OTS pelo esforço, e que continuem assim.
  19. Provavelmente é porque um monstro ou npc ta pisando no tile. Vocês precisam parar de ficar inventando formas de fazer o script e notar onde está o erro '-' function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) and item.actionid == 13700 then local config = { msgDenied = "Você nao e VIP, Para Comprar Escreva !buyvip (6kk)", msgWelcome = "Seja Bem Vindo a Area vip." } if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_BLUE) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome) end return true end o and item.actionid == 13700 pode ser desnecessário se o xml estiver com actionid="13700". Se der erro no doSendMagicEffect pode tirar a linha dele ou tentar mudar o getThingPosition(cid).
  20. Eu já prefiro o C++, C# e Lua. Concordo com o cristofermartins, acho que disse o principal. As linguagens do tópico pra mim servem como referência, afinal o fato de um projeto ser feito em C# não significa que não poderá fazer parte do XDev. Até porque não adianta decidirem limitar-se ao uso de VB e Delphi, por exemplo, por serem muito utilizadas se as pessoas que frequentam o fórum não usam elas.
  21. O conteúdo é bom, muita gente quer um sistema desse. E logo o pessoal ta comentando aí pra você ficar feliz Só uma coisa, o segundo e terceiro spoiler estão bugados, acho que é porque tão no "meio" do negrito (pelo menos aqui).
  22. Nunca vão te dar proteção pra DDOS, é mais fácil cancelarem seu dedicado ou vps lá. O fato de ser 1gbps até melhora, mas pode facilmente ser derrubado também. As vezes nem chega a 1gbps, dependendo do ataque eles desativam seu ip até antes, já passei muito por isso lá e proteção DDOS não é com eles, cansei de ver eles dizendo que não podiam fazer nada. A ****** só é menos pior. Mas se quer mesmo proteção DDOS é melhor comprar direto como da softlayer e pagar por firewall físico. E cuidado com quem oferece proteção DDOS por software, na maioria das vezes, se não sempre, é enganação, pois o fato do ataque chegar ao servidor já pode ser considerado para desativarem seu ip, a não ser que você entre em algum acordo direto com o fornecedor.
  23. Vou dizer o modo como descobri (no cliente atual do pstorm ainda não tem), mas só estarei repassando o conhecimento que me repassaram Quem deu as dicas foi o Baxnie, mesmo desenvolvedor que participa do otclient e fez isso para o PO na época. Basicamente você vai na parte onde o cliente lê o packet com 0x83, e substitui a função pra pegar uin8 pela uin16. Pra achar o endereço dessas funções seria por comparação. Você já tem a ordem dos packets no OT, então no cliente seria a mesma coisa. Pra quem não sabe usar o ollydbg ou fazer isso aí, no tpforums tem ótimos tutoriais. joinu sempre visitando o forum, também deve ser capaz de fazer isso rs Mas pra ser sincero, se tudo der certo, acho que logo o otclient vai predominar nos otservs.
  24. Kydrai

    Lancar Pokeball De Longe

    Pra poder usar um item a distância precisa usar allowfaruse na action: <action itemid="id" event="script" allowfaruse="1" value="script.lua" /> Claro que precisa ter a opção de "use with" no item, caso não tenha aí precisa editar no Tibia.dat, nesse caso é só baixar um item editor.
  25. O Xtibia tem ótimos tutoriais, mas você não vai achar tudo em um só lugar, quem realmente quer aprender corre atrás e busca quem sabe, já ajudei e vi muita gente aprendendo com esse fórum e nunca me importei de tirar dúvidas, mas também não da pra ficar ensinando tudo que pedem. Também sei que tem muita gente que não quer ajudar com o seu conhecimento como você mesmo disse. Algumas delas apenas passam dicas de como fazer ou arrumar e muitas vezes são criticadas por isso, já que o que eles querem mesmo é o script funcionando. Um dos problemas com os pedidos é que a maioria que tenho visto é de pokemon, muitos nem tem como fazer ou as pessoas precisam baixar um servidor específico para tentarem fazer. Sobre os bugs graves em servidores como o TFS eu concordo, praticamente ninguém ajuda mesmo. E um dos motivos é claro, a maioria ta nas sources, coisa que a equipe do TFS tem deixado privada, ou ainda as pessoas pegam editam e não passam as sources aí o tempo passa e eles perdem esses arquivos, e quando o motivo é esse muitas vezes não tem o que fazer mesmo. Pior que isso foi a um tempo quando postaram as sources do TFS aqui e os admins da otland vieram ameaçar e acabaram retirando do fórum, assim não vai pra frente mesmo.
  • Quem Está Navegando   0 membros estão online

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