Ir para conteúdo

Night Wolf

Herói
  • Total de itens

    341
  • Registro em

  • Última visita

  • Dias Ganhos

    18

Posts postados por Night Wolf

  1. Se vc não tiver nada na source que defina a resistencia positiva ou negativa à determinado elemento, vc pode tentar alterar um item aleatório e botar resistencia negativa nele por certo tempo. O único problema q imagino é se o player remover o item, deslogar ou morrer... mas aí vc pode fazer creaturescripts pra evitar isso.

    Com movements vc evita de remover o item q tá com debuff, com condition_infight vc evita q deslogue e com onDeath vc evita q ele drope o item com a resist.

  2. eu realmente ficava o dia todo no suporte, mas isso foi em outro fórum.. aqui ainda não fiz isso, apenas ajudo esporadicamente qnd sobra um tempinho. Se eu realmente voltar a ficar ativo todos os dias no suporte, aí eu vou ter todos os requisitos (posts e rep) que me faltam.. então relaxe gafanhoto <3 ahuhuahu

  3. "Como posso pegar um valor da database e colocar em uma variável: Ex: Variavelid = Valor do id da tabela players"
    em geral os servidores utilizam a função db.getResult pra pegar o resultado de uma query na database, porém isso muda com a versão.

    "E como pegar o ultimo ID criado?"
    utilize a query na database

    SELECT * from players
    ORDER BY id DESC LIMIT 1

    Selecionar tudo de players, ordenar por id de forma descendente e pegar só o primeiro.



    "Esses IDs das tabelas são gerados automaticamente em sequencia?"
    Depente, id do que? se for de players, sim pois eles possuem um trigger (ativador) que cada vez que uma conta é inserida o id é auto incrementado (se era 15, vira 16 no novo)

  4. Nossa, me citaram aqui auheuhhua enfim..
    Não acho que eu mereça o cargo de Herói, por mais que eu já tenha ajudado muito a seção de scripting eu ainda sou relativamente novo aqui no xtibia. Minha conta original está banida desde 2007 porque eu liberei grande parte dos códigos que eram vendidos na época, uso essa daqui atualmente (criada em 2014) mas minhas contribuições no xt foram pontuais e em grande parte restritas ao suporte. O skulls, caronte, zipter, (e alguns outros q nao lembro agora) fazem muito mais que eu pelo fórum e a verdade é que eu estou ficando pra trás por conta de falta de tempo e ou conhecimento. Pra mim o cargo de herói tinha que ser dado pra alguém que realmente fez história e mudou o opentibia de forma definitiva, citaram o Colex aqui e eu não poderia concordar mais: O cara quando estava na BlackOnyx criou coisas que até hoje o Tibia global tenta imitar... não dá pra dizer que nenhum de nós está realmente no mesmo nível que alguém como ele. Ao restante, não é uma pip diferente que vai dizer se vc contribuiu ou não, ajude quem puder por ajudar e não por uma mudança mínima no seu perfil.
    Abraços do Lobo.

  5. @@Skulls, funcionou? não era pra funcionar.. funções de storage são restritas à players pois envolvem modificações na database. Acho q se pá vc tá pegando o uid de um monstro e na hora de salvar na database deve estar com o mesmo numero (uid) de um player existente. Mas sei lá né, pelo menos no 0.4 que eu mexo é assim, não sei se alguma source tem suporte pra storage em monstros

  6. Podia ser mínimo de 1 ano de contribuição, 2 anos é muita coisa.. e levar em consideração as contribuições significativas.
    O lance do alerta foi muito sagaz pois impede heróis de virarem folgados

  7. Rapaz, se for 0.3~0.4 vc tem uma gama infinita de creaturescripts pra brincar..

    onAttack
    onFollow
    onTarget
    

    Experimenta cada um deles com return false e verifica qual que impede o monstro de seguir o player.

    Não sei se vou levar advertencia por postar link de outros fóruns mas não tem como eu copiar todo o contéudo que eu escrevi lá aqui.

    To meio sem tempo pra ficar abrindo sv e fazendo testes, mas prometo q se vc não conseguir eu vou fazer de tudo pra tentar algo aqui também. Boa sorte amigo, e se conseguir, por favor compartilhe a solução ^^

  8. não se tiver outro target, o problema do script acima é que ele não assume modo defensivo na presença de outro player.. lembro de um teste q eu fiz com um demon e somente um personagem da vocação q nao podia ser atacada, oque aconteceu foi que o demon ficava correndo pra lá e pra cá em volta do player como se tivesse se preparando pra ir atacar ele, mas não ia. Não lembro se o demon me seguia caso eu fugisse mas pro seu caso acredito q isso nao seria um problema.. a menos q vc esteja pensando em fazer monstros de raças que não atacam os humanos, por exemplo.. mas aí compensa mais trabalhar em cima da IA via source

  9. então tenta trocar pra toda vez que for iniciar o combat, se for player checar as criaturas em volta e ver se há monstros passivos e aí vc usa o dotargetCombat, se fizer um script só pro combat dos monstros, vc pode configurar quais vão ser agressivos só botando a tag do creaturescript no xml

  10. Isso daqui é um script pra monstros não atacarem determinadas vocações, alguns NTO's utilizam algo semelhante para não atacar determinados storages, acredito que com as modificações corretas daria pra implementar um sistema complexo de hierarquia na ordem de ataques:

    Se o lobo tem um cervo e um humano pra atacar, qual dos dois ele escolhe?

    Observe o script:

     

    local notattackable = {1,2,5,6} --- vocações que não receberão ataque
    function onCombat(cid, target)
     
    if(not isPlayer(target)) then
    return true
    else
     
    targets = getMonsterTargetList(cid)
    if isInArray(notattackable, getPlayerVocation(target)) then
       addEvent(check,1000,cid,targets)
       return false
    else
    return true
    end
    end
    end
     
    function check(cid,targets) 
    for i=1, #targets do
    	if isInArray(notattackable, getPlayerVocation(targets[i])) then	  
    	   addEvent(check,1000,cid,targets)
    	   return false
    	else
    		stopEvent(check)
    		return true
    	end
    end
    end
    

     


    não é de minha autoria, tenho aqui no pc salvo mas peguei de algum lugar acho.. só não lembro onde.

    Com algumas tabelas vc consegue controlar muita coisa nesse script, só tem que verificar se na targetList ele considera outros monstros, porque se não... teria que modificar essa função na source :/

     

  11. pensei nisso hoje, se nao me engano tem scripts de monstros passivos por aí via source editing, com a tag de monstros passivos daria pra fazer monstros agressivos atacarem os passivos da mesma forma que atacam um player, mas como não mexo com c++, não faço idéia de como seria uma possivel implementação disso

  12. a gente só vai conseguir te ajudar se vc explicar melhor oque vc quer, cria paredes? quantas? onde? posição fixa? porque ele iria ficar a cada hora checando uma mesma posição pra criar parede lá? faz parte de alguma quest?

    Vê quantas perguntas tem pra ser respondidas? na próxima vc cria um tópico com todas elas já respondidas e aí talvez as 10 pesoas que visualizaram seu tópico já poderiam ter te ajudado>

    Este tópico já foi visualizado por 10 usuário(s) [ Ocultar Lista ]
  13. O código acima irá funcionar e servir o propósito, porém uma boa prática quando trabalhamos com functions no addEvent é re-checar os parâmetros que iremos utilizar do callback. Em outras palavras, se vamos utilizar o cid na function, temos que checar se ele ainda existe quando o addEvent for chamado.

    addEvent(function()
       if isCreature(cid) then
          doTeleportThing(cid, townpos)
          doSendMagicEffect(getPlayerPosition(cid), 10)
       end
    end, 5 * 1000, cid, townpos) -- 5 * 1000 representa 5 segundos ate teleportar.
  14. basicamente é isso daqui:
    variavel skillTotal é a skill do player + (attack * 12)
    levelTotal é o level * 2

    local skillTotal = skill + attack * 12
    local levelTotal = level * 2
    MÍNIMO QUE VAI TIRAR:   -(skillTotal * 1.1 + levelTotal),
    MÁXIMO QUE VAI TIRAR:  -(skillTotal * 7 + levelTotal)
  15. @@Skulls então, não é aleatório, ele segue a ordem do next. Isso que vc falou de indexação fora de ordem está correto, mas tem casos em que ipairs não funcionaria como tabelas contendo nil pois o next iria retornar falso e cancelar (semelhante à um break)

  16.  

     

    Eu ainda acho que o doPlayerAddItem tem que receber como player o V e nao o K, mas vou deixar isso pro dono do código, pois estou enferrujado e posso estar falando bobagem.


    ​sim, é o v. Se o código realmente foi testado e funcionou, eu não sei dizer porquê.

    getPlayersOnline() retorna tabela de players online na forma
    {uid1, uid2, uid3}

    vc ta querendo dar os itens via uid na função pois doPlayerAddItem requer um uid no parâmetro, logo vc quer o value da tabela, não o índice.

    A diferença entre pairs e ipairs é que ambas são funções de busca porém pairs itera em pares sequenciais (i = i + 1) enquanto que ipairs busca o próximo elemento diferente de nil.

    Há casos em que pairs não irá funcionar e casos que ipairs não irá funcionar. Portanto é bom conhecer os dois usos e testar sempre.
    pairs e ipairs não retornam informações diferentes, quem dita isso é o return da função, pairs e ipairs são meras funções pra percorrer a tabela retornada.

    Leia isso daqui tb: http://www.lua.org/pil/7.3.html
  17. faz statsChange, uma tabela com cor de outfit e tipo de combat (dá pra extrair o combat pela statschange).

    Se a cor do outfit for a cor da resistencia, dá return false e cria outro combat mais fraco (cuidado com stackoverflow aqui pq ele vai tentar fazer isso tendendo a infinito). Do contrário, seta a cor do outfit como sendo a referente ao combat. Fim.

  • Quem Está Navegando   0 membros estão online

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