Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. O primeiro erro significa que não existe compilado na source o event type = onMoveItem, ele não reconheceu esse type. No valid type for creature event.onMoveItem "Não há um tipo válido de creature event chamado onMoveItem" Após as alterações que você fez ele entendeu o script mas o código possui um erro lógico na linha 4: faltou um then próximo do doRemoveItem. Indo na linha 4 vemos claramente que está faltando um then para abrir o bloco de instrução do código if if item.itemid == 2596 deveria ser if item.itemid == 2596 then Isso deve resolver kkk mas só escrevi as coisas aqui acima pra você entender +- como interpretar as coisas que nosso console nos diz..
  2. falta só adicionar o login.lua pra registrar esse callback (isso garantindo q vc tem esse callback na sua source). Daí toda vez que um player for vocação 0 e mover um item 2596 ele vai ser removido.
  3. @Caronte, não é todo mundo que sabe interpretar c++.. acho q ficaria melhor se vc fizesse um script de exemplo de como usar o callback @OP: é um callback de creaturescript que você seta pra ser ativado quando algum player mover um determinado item, com essa função é possivel manipular tanto o item quanto os containers envolvidos nessa transação. Por exemplo: pra fazer uma backpack que só entra potion não seria possivel sem essa função. function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) onde cid é quem moveu, item é o item movido, count é a quantidade, toContainer é o container pra qual o item está sendo movido, fromContainer é o container que o item estava originalmente, fromPos é a posição que o item estava e toPos é a nova posição que o item está sendo movido. O resto é só usar imaginando pra manipular essas coisas, exemplo: Um script que se o player passar uma gema de id 10281 pra backpack dele soltar um efeito nele: function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if item.itemid == 10281 and getPlayerSlotItem(cid, 3).uid == toContainer.uid then doSendMagicEffect(toPos, 26) -- solta o efeito 26 na posição nova do item (mesma posição do player) end return true end Os usos de um callback são praticamente infinitos, basta ter criatividade e explorar bastante! Espero ter ajudado..
  4. vai em data/lib/constant.lua, copia tudo q tem lá e cola aqui.. como é um documento grande sugiro que use
  5. aparentemente sim, dá uma testada agr. O código em si parece que tá certo, o if é isso aí mesmo que você fez e você lembrou de somar os rates.
  6. a identação é um acordo que fizeram na chamada "boas práticas de programação" existe uma regra pra identar e geralmente é a própria linguagem que dita essas regras. Em lua identação não é obrigatório como o zipter bem colocou mas é uma boa prática.. acompanhe comigo o porquê: script sem identar/pular linha local storage = 89745 local effect = 14 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, storage) > -1 then doRemoveItem(item.uid) setPlayerStorageValue(cid, storage, -1) doSendMagicEffect(getCreaturePosition(cid), effect) doPlayerSendCancel(cid, "Storage reseted successfully.") else doPlayerSendCancel(cid, "You can't use this item when you haven't finished the quest.") end return true end script identado e seguindo os padrões da linguagem: local storage = 89745 local effect = 14 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, storage) > -1 then doRemoveItem(item.uid) setPlayerStorageValue(cid, storage, -1) doSendMagicEffect(getCreaturePosition(cid), effect) doPlayerSendCancel(cid, "Storage reseted successfully.") else doPlayerSendCancel(cid, "You can't use this item when you haven't finished the quest.") end return true end Pro computador não faz diferença, ambos irão rodar mas o segundo é legível por outro programador enquanto o primeiro não. Vale lembrar que linguagens acadêmicas (só consigo lembrar de Python agora), não existe abre e fecha de blocos (em lua usamos 'do' e 'then' pra abrir blocos e 'end' pra fechá-los) e o computador identifica os blocos através da identação. Códigos bem identados/comentados, com linhas puladas de maneira correta e variáveis limpas e locais demonstra um domínio sobre a linguagem e permite que até mesmo não programadores possam entender o raciocínio. Gente que chama variável por letra do alfabeto, não usa local e nao sabe/não quer identar provavelmente não sabe oque tá fazendo. Se você pegar scripts antigos do tibia vc vai ver muita gente fazendo coisas absurdas, identando tudo errado, comparando dois booleanos (if (algo que é falso) == false) etc e tal. Felizmente essa nova leva de programadores como o Wise, Zipter, Summ estão melhorando isso.
  7. pra verificar se ele é premium tem uma função pra isso: isPremium(cid)
  8. xWhiteWolf postou uma resposta no tópico em Playground (Off-topic)
    ai essas crianças de hoje em dia viu...
  9. xWhiteWolf postou uma resposta no tópico em Playground (Off-topic)
    -"O que há de errado com a educação?" Ao meu ver o foco aqui no Brasil é no ensino superior e não na base, isso é um baita de um erro mas com a imensidão do nosso país fica complicado contratar centenas de milhares de professores capacitados pois estes mesmos são extremamente caros e o governo não quer investir nisso pois o rombo seria de bilhões. Precisaria de diversas medidas ao longo do tempo pra tornar isso uma realidade mas o esquema de enem funciona então a maioria dos governantes não dá muito a mínima pra isso. 50 anos atrás escolas públicas eram as melhores e mais dificeis do páis, acontece que muitos presidentes criaram centenas de escolas sem se importar com os professores q iriam trabalhar lá e dá pra ver na merda que deu. O povo também não ajuda, 70% dos professores assume ter medo de trabalhar na rede pública e casos de ameaças por alunos são extremamente constantes. -"Qual é o limite da mídia, na opinião brasileira?" Não tem limite, o público brasileiro é extremamente maleável e manipulável. Nós simplesmente não temos memória nenhuma e mesmo após sermos enganados significativas vezes ainda tornamos a acompanhar mídias golpistas. Num país que bunda dá mais audiência que debates inteligentes já não era de se esperar muito, e aí nós temos gente batendo panela mesmo depois que que um vice presidente juntamente com o perdedor da eleição tramaram um golpe. - "Como agir e amenizar o preconceito e intolerância? (Racial, Sexual, Religiosa...)" Tem uma série que eu assisto chamada Wayward Pines, nela o mundo acabou e um cientista selecionou algumas pessoas que ele achou ser úteis para criar um espécie de "arca de nóe", uma cidade que ele recria e vai renascendo as pessoas que ele selecionou e tentando imbutí-las na sociedade. Um jargão muito comum na série é: "As crianças são a chave". Um adulto preconceituoso e intolerante dificilmente irá mudar sua percepção de mundo mas uma criança que possui uma abordagem diferente, mesmo que não venha de casa, pode vir da própria escola ou dos amigos, com certeza não será tão intolerante quanto os pais. -"Quaisquer figuras políticas. -Bolsonaro para presidente?" Não, definitivamente não. Qualquer pessoa que já tenha participado da ditadura não merece nem ser citada pra política. http://blogdosakamoto.blogosfera.uol.com.br/2008/05/15/uma-flechada-moral-em-jair-bolsonaro/ Não acredite em meios coxas de comunicação (Veja, Globo, Cartacapital, etc..) Leia blogs de pessoas físicas e forme sua própria opinião. Mas em geral partidos direitistas tendem a ser absurdamente retardados. Eu não me vejo como esquerda mas na situação do nosso país não imagino que faria algum bem ter um libertário no poder. - "O real moldando o poder de compra e a subsistência do brasileiro. " O brasileiro é o povo que mais paga imposto no mundo e mesmo assim ainda continuamos comprando absurdamente. Não acho que o poder de compra seja baixo e eu não entendi essa pergunta de moldando o poder mas enfim.
  10. 8 é a xp padrão, se vc colocar 16 é 2x8 ou seja 2x o padrão.
  11. xWhiteWolf postou uma resposta no tópico em Scripts tfs 0.4 (OLD)
    não tem nenhuma condition que mexa com % de danos por elementos, cairia no mesmo problema de alterar itens...
  12. --' lê o tópico e o meu comentário cara, para de ser preguiçoso
  13. aqui tá em minutos e ao invés de 2 vc vai ter que colocar 16 pra ficar double xp mas serve os seus propósitos... http://www.tibiaking.com/forum/topic/35750-talkaction-redutora-de-exp-por-tempo/
  14. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    ^ remove os comentários (tudo que tá dps de --), um dos comentários tá escrito "obstáculo" e esse á com acento tá cagando seu script por causa da codificação.
  15. xWhiteWolf postou uma resposta no tópico em Scripts tfs 0.4 (OLD)
    até dá pra fazer mas a merda é q tem muita margem pra bug, o player pode simplesmente deslogar e ai nao vai voltar pro atk antigo..
  16. ^a tv nunca falou mal do bolsa familia até onde eu sei, até porque os processos de difamação contra o governo são estupidamente caros kkkk isso daí é discurso velho de direitista libertário que não consegue enxergar nada além do próprio cu e acha que o dinheiro dele tá sendo usado pra pagar rolêzinho de nordestino. Enfim né, cada um enxerga oque quer...
  17. de acordo com oque eu pesquisei fica assim.. testa aí doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Awesome! Your " .. it:getName() .. " upgrade to +" .. nLevel .. " successfully!") if nLevel >= 7 then broadcastMessage("O jogador ".. getCreatureName(cid) .." combinou seu ".. it:getName() .." para +".. nLevel .." com sucesso", MESSAGE_STATUS_WARNING) end
  18. ele tá dizendo q não existe a função doBroadcastMessage, foi oque eu falei pra vc.. preciso q vc me diga como faz pra dar broadcast em 1.0> pra trocar a função ali..
  19. só colocar logo embaixo de doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Awesome! Your " .. it:getName() .. " upgrade to +" .. nLevel .. " successfully!") if nLevel >= 7 then --- função de dar broadcast aqui end Não sei como funciona a função de broadcast pra 1.0> mas em 0.4 é usando: doBroadcastMessage("O jogador ".. getCreatureName(cid) .." combinou seu ".. it:getName() .." para +".. nLevel .." com sucesso", MESSAGE_STATUS_CONSOLE_RED)
  20. bom galerinha, não acreditem em meios coxas de comunicação. Espero que tenham aprendido a lição de hj! Abraços do lobo.
  21. xWhiteWolf postou uma resposta no tópico em Monsters, NPC, Raids & Mounts
    claro que não, eu só posto até onde eu consegui chegar aqui.. se vc quiser fazer qualquer coisa com esse script vc é livre!!
  22. tem como fazer isso pelo creaturescript usando o callback onLook function onLook(cid, thing, position, lookDistance) daí vc verifica se o thing é um item que está dentro de um array e dá um return false e adiciona um message_type diferente pra falar informações do item. Vai ficar bem merda e é um coisa bem escrota pra se fazer, não recomendo.
  23. Não é uma função.. no começo do script vc declarou isso daqui: local talkState = {} Nisso vc criou um vetor/array/tabela de N elementos não definidos, ou seja, uma tabela vazia. provavelmente vc tb terá essa linha declarada no seu script: local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid Nela nós verificamos se o NPCHANDLER_CONVbehavior é igual a CONVERSATION_DEFAULT, ou seja, se a "pessoa" que o NPC está conversando é a "pessoa" padrão, em outras palavras, verifica se o npc não está falando com ninguém. Os valores serem iguais implica que ele não está falando com ngm, logo a variavel talkUser apresenta valor 0, do contrário ele apresenta o valor do uid do jogador que está falando (o cid). Quando fazemos um TalkState[talkUser] estamos na verdade apontando pra um local da memória desse vetor e dizendo seu valor, pra poder controlar em que ponto da conversa com o player o npc está. Fica meio complicado te explicar isso tudo sem vc ter uma base computacional, mas vou me esforçar: Imagina que seu pc tem diversos 0's na memória. 00000000000000000000000000000000000000000000000000000000000 Daí você extrai o cid de um player e ele vai retornar o uid do player, que é um numero um tanto quanto grande. Pra efeitos de exemplo eu vou supor que o uid é um numero entre 0 a 20. Digamos então que meu cid pro exemplo seja 14, logo eu estou dizendo que a partir de agora o talkUser é 14. Ao fazer TalkState[14] eu estou modificando essa parte da memória (os zeros) e editando o décimo quarto 0 dela pra um novo valor. TalkState[14] = 3 e nossa memória se torna isso: 00000000000000300000000000000000000000000000000000000000000 E aí podemos verificar em qualquer parte do script do npc em que ponto da conversa estamos com base nisso e dar respostas diferentes pra cada texto que o player diz. Isso pode soar bem estúpido mas se torna muito útil quando temos diversas opções com yes/no. Quando o NPC captar o yes/no, oque ele vai responder? Não dá pra ter uma resposta padrão pra todas as opções que incluem o yes/no então nós usamos o TalkState pra haver essa diferenciação. Espero ter ajudado
  24. xWhiteWolf postou uma resposta no tópico em Monsters, NPC, Raids & Mounts
    getPlayerStorageValue(cid, storages.difficult). Se for 2 é easy, 3 é medium e 4 é hard.
  25. xWhiteWolf postou uma resposta no tópico em Monsters, NPC, Raids & Mounts
    instala o script sem mexer em nada, e aí vc faz os testes e tenta entender como funciona.. não sei como te explicar mais doque ja expliquei e você continua pedindo coisas que já existem. a quantidade é gerada pelo tamanho e não pela dificuldade, por isso vc escolhe as duas opções.. ele pega mesmo que seja de outra tabela: Ex: escolhi hard e short, ele vai me escolher aleatoriamente 1 item do hard e 1 count do easy

Informação Importante

Confirmação de Termo