Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. ela aparece qnd vc loga ou qnd vc pisa no templo? Se for qnd loga deve ser um creaturescripts e se não tiver nada no creaturescripts.xml tá dentro do login.lua (que é um arquivo dentro de creaturescripts\scripts)
  2. 8.4 não tem a função onStatsChange no creaturescripts, vc teria que adicionar ela pelas sources pra poder utilizar esse script :/
  3. mas amigo, shoottype death não é o mesmo que o da SD? Ou você quer o efeito da SD (aquele circulo preto) no cara que foi atacado? Se for a segunda opção é só trocar no script local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_EFFECT, 17) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)
  4. kkkk que isso mano, é mó script simples. Um amigo veio falar que o Fox World tem esse sistema também mas o deles é uma magia pra cada arma, também é bem legal a ideia deles mas sendo uma magia só você não precisa criar 13 outros scripts
  5. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    eu ja fiz um script desse prum cara, o problema mais provável é que no seu script as funções tão todas jogadas, coloca um while isPlayer(cid) pra evitar que o player deslogue e ocorram bugs
  6. vc pode editar qualquer coisa (inclusive o dano).. mas sugiro que vc deixe o event como default (Default quer dizer que ele vai pegar os dados do item no items.xml, e lá você edita de maneira bem mais simples. Pra mudar o range do dano é só editar essa linha aqui no weapons.xml <wand id="7958" level="100" mana="15" min="249" max="250" type="death" event="function" value="default"/> ID da wand, LEVEL que precisa pra usar, mana que gasta por hit, dano mínimo, dano máximo, tipo de ataque e o evento é a função de valor padrão (definida pelo items.xml). Agora no items.xml vc pode editar o restante: <item id="7958" article="an" name="Rod of Slayer"> <attribute key="weight" value="2900" /> <attribute key="weaponType" value="wand" /> <attribute key="shootType" value="death" /> <attribute key="range" value="3" /> </item> nome, peso, tipo de arma, efeito de ataque e distância máxima que o ataque pega (se quiser a tela toda é só colocar 7 sqm.) Você disse que queria o dano de sd, tá pronto aí do jeitinho que vc queria, só editar o resto. EM TODO CASO, SE VC FOR TEIMOSO E AINDA QUISER FAZER POR SCRIPT, é só criar e seguir esse modelo aqui... mas lembre-se que dessa forma a fórmula pro ataque fica muito mais complicada. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISONARROW) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end
  7. Fala galera do TK, hoje vim compartilhar com vocês um sistema que eu comecei a fazer com a ajuda de um amigo ... Bem, ele é viciado em Skyrim e esses dias a gente ficou quase 10 horas sem internet , e foi nesse meio tempo de tédio que eu decidi fazer um sistema baseado nas Bold Weapons do Skyrim e ele foi me dando uns toques pra eu poder melhorar o script. Se você nunca jogou Skyrim ou não se lembra eu vou explicar oque é: ​ Um sistema que você conjura uma arma feita de magia referente a sua classe mas se vc tentar tirar ela da mão, ela some. O Script em si é bem simpleszinho mas vc tem que fazer diversas alterações no server pra que ele fique 100% então aqui vamos nós: Antes de tudo eu gostaria de dizer que eu altamente recomendo que você crie novos itens no seu Item Editor pra evitar problemas futuros mas use as sprites dos itens que eu irei passar aqui nesse tópico. Abra seu weapons.xml e adicione as seguintes linhas (note que vc deve procurar os id's antes pra ver se já não existe ele declarado, caso haja, delete as linhas antigas e adicione as novas): <!-- AURA ITEMS --> <movevent type="DeEquip" itemid="7773" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7774" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="8854" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7775" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7766" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7772" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7424" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7451" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="8858" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7450" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7407" slot="right-hand" event="script" value="item.lua"/> <movevent type="DeEquip" itemid="7455" slot="right-hand" event="script" value="item.lua"/> aqui temos todos os ids dos items e o slot da função como sendo a mão esquerda (direita da tela >>) eu fiz utilizando esse slot porque os itens são criados lá diretamente e evita erros na distro ​ e na pasta movements\scripts adicione o arquivo item.lua que deverá conter o seguinte: ​ <instant name="Weapon Aura" words="Aurum" lvl="100" manapercent="60" aggressive="0" exhaustion="2000" needlearn="0" event="script" value="especiais/weaponaura.lua"> </instant> aqui vc vai configurar a palavra que vc diz pra conjurar a magia, o level dela e a porcentagem de mana que vai consumir ao usar a spell. Ainda na pasta spells vá em scripts e crie uma nova pasta chamada especiais e crie um arquivo chamado weaponaura.lua que deverá conter o seguinte: ​ Agora você tem que garantir que o player não irá dar trade nos itens, para isso vá em creaturescripts\scripts e crie um arquivo chamado untrade.lua e coloque isso dentro dele: ​ Feito isso você deve ir no creaturescripts.xml e adicionar essa linha aqui: <event type="traderequest" name="UntradeAura" event="script" value="untrade.lua"/> agora abra o login.lua que fica em creaturescripts\scripts e antes do ultimo return true adicione isso daqui: ---- AURA ITENS ---- registerCreatureEvent(cid, "UntradeAura") ______________________________________________________________________ Se você conseguiu fazer tudo até agora isso significa que você sabe ler. Se alguma coisa deu merda volte ao início e releia tudo com atenção! _______________________________________________________________________ Eu pessoalmente achei o sistema super bacana, ainda mais pra servidores sérios.. Testei aqui no meu TFS 0.3.6 (Crying Damson) e rodou tudo perfeitamente... quaisquer erros poste aqui no tópico que eu tento ajudar a resolver, mas é claro que na medida do possível, to sem tempo pra viver então não me peça pra adaptar o script pra sua versão 7.6 ou 10.1... ele foi feito pra 8.54! Espero que pelo menos alguém use esse sistema pq deu uma trabalheira danada pra fazer, e claro, se te ajudei, fortaleça com um REP que eu vou saber que você gostou do sistema. Grato. Mais uma coisa e talvez a mais importante do tópico: Esse script foi feito por mim, Night Wolf ou White Wolf (como vcs preferirem), e é conteudo >>> EXCLUSIVO <<<< do TIBIA KING. Não postem sem minha permissão que eu prometo continuar fazendo coisas legais pra vocês :angry2:. Abraço do Night. PS: Pra que o sistema funcione vc deve deixar as duas mãos vazias e falar Aurum, o script vai checar sua classe e te dar a weapon referente, caso vc seja Knight ele vai te dar a arma do tipo cujo sua proficiência seja a melhor.. (Em outras palavras: pegar a sua maior skill, se for sword vai te dar sword e assim por diante.. No caso de empate ele vai te dar sword e no caso de empate entre axe e club ele vai te dar club.) Note que não vai ser possível remover o item nem pra BP nem pra outro slot e nem pro chão... e também não é possível dar trade no item. Vou anexar umas imagens aqui pro pessoal ver melhor:
  8. isso não resolveria o problema kkk pq eu queria que o player pudesse mudar livremente a mão que está a arma, mas se o slot fosse diferente de "hands" o item fosse removido, contudo, a unica forma de fazer isso é usando o callback onDeEquip (cid, item, slot) mas daí se o cara pegar o item e jogar no rio o server crasha. Pra que não crashe tem que usar onDeEquip(cid, item, position, fromPosition); Enfim, hoje ou amanhã vc dá uma olhada no sistema como um todo e me fala qq vc achou, combinado?
  9. pior q nem é um problema sem lógica uhauhauh eu coloquei pra toda vez que desequipar uma determinada arma da mão, ela fosse removida.. só que quando o player passa de uma mão pra outra ele remove ela e já conta como se tivesse equipado, ao remover ela pela função doRemoveItem é como se tivesse desequipado (da outra mão agora) e ele vai remover algo que já foi removido, por isso dá erro na distro. Eu pensei em um monte de formas mas a maioria delas inclui repetir o id do item pra outro movement onEquip (oque vai dar erro no console), eu consegui resolver certinho de uma maneira meio escrota e pras minhas necessidades acabou dando certo.... mas a idéia era fazer um scrip 100% funcional pra que outros pudessem mudar à vontade pra postar aqui. Enfim né, até amanhã vou postar o script da forma que tá e te convido pra dar uma olhada e ver se vc pensa em alguma outra forma de resolver o problema. Abração Max.
  10. no config.lua tem alguma coisa sobre isso, dá uma olhada lá
  11. onpreparedeath não pode ser, o return false de onpreparedeath faz com que não apareça o corpo mas o player morre de qqc jeito. É algum onKill ou onDeath
  12. isso ocorre qnd vc tem algum creaturescripts onkill ou death com "return false", daí se for onkill impede o inimigo de morrer e ele fica 0/0, se for death impede qualquer um de morrer e todos ficam 0/0.. Dá uma procurada aí se nesses scripts novos que você adicionou, nenhum deles tá com o return da função como sendo false; Algo me diz que é um desses dois aqui: <event type="death" name="tp" event="script" value="tp.lua"/> <event type="death" name="teleportmonster" script="tpmonster.lua"/>
  13. não funcionou, por hora eu consegui arrumar mudando o slot do movements.xml.. coloquei slot="right-hand" e já que só remove o item se for na mão esquerda (lado direito), qnd eu passo pra direita (lado esquerdo) não dá bug de remover 2x... mas ainda estou interessado em alguma solução; Oque eu quero mesmo é que o player possa mudar o item pra outra mão porque a função doPlayerAddItem adiciona sempre na mão esquerda (>>) mas a maioria dos caras que jogam tibia usam as armas na mão direita (<<) mas gostaria que se ele tentasse colocar a arma em qualquer outro slot ou mover ela pra backpack ou jogar ela no chão, o item fosse removido automaticamente.
  14. é do sendAnimatedText mesmo... pode fazer assim q é exatamente isso q ele quer
  15. o tópico está na area errada mas ainda sim vou te responder: Pra mudar o outfit vc deve utilizar a seguinte função: local outfit = {lookType = 156, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} local tempo = --- coloque aqui o tempo em milisegundos (1 segundo = 1000 milisegundos) doSetCreatureOutfit(cid, outfit, tempo) no outfit vc edita qual vai ser o looktype do outfit, e as cores de head, body, legs, feet e acessórios... em lookaddons vc escolhe se o outfit vai estar utilizando addon 1, addon 2 ou addon 3 (1 e 2 juntos) pra que funcione na sua spell vc deve adicionar essa função logo depois das condicionais da função onCastSpell, ficando assim: function onCastSpell(cid, var) if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then local outfit = {lookType = 156, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} doSetCreatureOutfit(cid, outfit, 15000) doCombat(cid, combat, var) tempo2 = 0 while (tempo2 ~= (tempo*1000)) do addEvent(magicEffect18, tempo2, tempo2, tempo*1000, cid) tempo2 = tempo2 + 300 end setPlayerStorageValue(cid, 102053,1) -- storage verifica transformado, quando = 1 player esta transformado. else doPlayerSendCancel(cid, "Sorry, you are transformed.") end end assim ao mandar a spell seu outfit será trocado para o do ninja branco com ambos addons por 15 segundos (15.000 milisegundos)
  16. Fala galerinha do tk, hoje é minha vez de tirar uma dúvida aqui kkk então, o problema é o seguinte: eu criei um script bem simpleszinho que removia o item caso o player tentasse desequipar ele mas acontece que o script vivia bugando, se eu colocasse ele dentro da BP ou jogasse ele no lago o server caia então eu fiz umas edições e cheguei nisso daqui: function onDeEquip(cid, item, position, fromPosition) if doRemoveItem(item.uid, 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "ITEM REMOVIDO...") doSendMagicEffect(getCreaturePos(cid), 10) return false end end note que os parameters que eu usei são diferentes doque está nas sources function onDeEquip(cid, item, position, fromPosition) nas sources temos esse callback como sendo function onDeEquip(cid, item, slot) só que quando eu usava slot, se eu jogasse o item direto da armor pro lixo o server crashava. Enfim, tudo funcionava perfeitamente quando eu decidi mudar o slot de armor pra hands... funcionou mas eis que eu me deparei com um bug pra lá de chato: <movevent type="DeEquip" itemid="7773" slot="hand" event="script" value="item.lua"/> Se o cara tiver com as duas mãos vazias e passar o item de uma mão pra outra o script executa a função de remover duas vezes só que só tem um item então dá um erro (tentar remover algo que já foi removido) [10/05/2014 20:39:28] [Error - MoveEvents Interface] [10/05/2014 20:39:28] data/movements/scripts/item.lua:onDeEquip [10/05/2014 20:39:28] Description: [10/05/2014 20:39:28] (luaDoRemoveItem) Item not found Alguém sabe algum jeito de arrumar isso pra não dar esse erro? Tentei várias coisas mas a maioria não deu certo e o resto fez meu script parar de funcionar kkk Meu server é o The Forgotten Server, version 0.3.6 (Crying Damson), Tibia 8.54 Me ajudem aí que eu prometo postar o sistema do qual esse script faz parte :]
  17. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    portugol é uma boa base, os scripts de tibia são em sua grande maioria feitos em Lua e os comandos já são pré definidos mas isso não impede que você crie coisas novas mexendo nas sources ou até fazendo funções que facilitem a vida.
  18. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    só fazer um creaturescript onStatsChange e multiplicar a chance por um fator k que será o storage (LEVEL do dodge) local lvldodge = 48902 local percent = 0.5function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if ( getPlayerStorageValue(cid, lvldodge)*0.3) >= math.random (0,100) then ndmg = math.ceil(value*(percent)) doCreatureAddHealth(cid, -ndmg) doSendAnimatedText(getCreaturePos(cid), "-"..ndmg, TEXTCOLOR_RED) to sem tempo pra fazer isso mas se alguém quiser tentar é bem facinho
  19. sobre a primeira dúvida: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 23) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 17) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -4, -70, -3, -90, 2, 2, 1, 4) arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) return true end só editar ali em cima os efeitos de song e de mort (23 e 17) e as áreas.. Sobre a segunda dúvida: Não dá, esse efeito é uma sprite e ela foi feita assim, não dá nem pra virar ela pros lados image fazer uma serpente maior... você teria que conversar com um spriter e pedir pra ele fazer mas daí seu cliente viraria próprio
  20. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    tentei fazer isso uma vez mas falhei, acredito que só editando uma sprite pra deixar ela transparente e colocar pro player usar ela ou editando na source pra fazer igual o Warlock qnd fica invisivel (utana vid)
  21. quando li pela primeira vez eu achei linda essa idéia sua mas ela tem dois problemas que eu vou citar abaixo: 1) é muito dificil de se fazer: Sério, só pra colocar um log nas resposta já é muito dificil, imagine salvar tempo e todo o resto... muito trabalho pra pouca utilidade. 2) Dá a oportunidade dos players falsificarem o teste: Qualquer player pode refazer o teste ou ir conversando com outros players pra ver a resposta certa, sendo assim, o script não tá selecionando o melhor tutor do seu server e sim ensinando qualquer pessoa(independente das intenções dele) como ascencer e oque fazer após isso. Sério, desiste dessa idéia.. os melhores tutores que você pode ter são aqueles players que por mais que você insista eles não vão querer se tornar tutores. Seu sisteminha só vai servir pra identificar os possíveis psicopatas que jogam no seu server hahah
  22. não entendi qual é a lógica disso daqui: function onStepIn(cid, item, position, fromPosition) pos.stackpos = 255 local object = getThingFromPos(pos) vc usa position de parametro e digita pos.stackpos??? // getThingFromPos(pos) novamente você tá pedindo uma posição que não existe o.O; Fora que você utiliza apenas o stackpos 255 (que também não existe) pois o máximo é 253 pelo que eu saiba e os itens que estão em cima do TP deveriam ter stackpos 2. Ou eu to errado?
  23. por loot vc quis dizer de um corpo específico do dragon que você matou ou do loot todo que ele poderia dar?

Informação Importante

Confirmação de Termo