
Tudo que xWhiteWolf postou
-
Programação
uniqueid só pode ser usado uma vez no mapa, tem que dar ctrl f pelo map editor e remover. Os de cima são de mais de um script vinculados no talkactions.xml, scripts não encontrados e um movement duplicado. O ultimo é pq a raid do boss da giant spider contém uma giant spider numa posição que não dá pra ela ser criada (checa todas as posições por via das dúvidas) e confere se nao tem nenhum item bloqueante lá
-
(Resolvido)[PEDIDO] Critical System
-
(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan
2) para pegar o nome do jogador target vc pode fazer igual em talkaction, só precisa ativar param = "1" na tag no xml e aí pegar pelo nome, semelhante ao exura sio. 3) o que faz a fala não sair é o return false. Se tiver return true o texto sai, se tiver false ele não sai. Pra falar em laranja tu coloca return false e faz a mensagem sair por doCreatureSay. Note que a função doCreatureSay tem um parametro que representa o tipo de texto, um dos tipos é o TALKTYPE_MONSTER (ou algo assim). Você pode ver todos os tipos dentro do arquivo data/lib/constant.lua e inclusive tem um tópico do Caronte sobre o constant.lua explicando várias coisas úteis lá. 4) Eu sugiro que vc troque a forma que vc fez para suportar mais de uma vocação permitida, é relativamente fácil vc só precisa mudar vocation = 4 para vocation = {4} e no check ao invés de fazer if getPlayerVocation(cid) == config.vocation then fazer if isInArray(config.vocation, getPlayerVocation(cid)) then. Dessa forma ele vai procurar se o numero da sua vocação tá dentro daquele array/vetor/tabela que é o vocation. E aí você pode fazer vocation = {4,5,8,12,250} que ele vai aceitar todas essas vocações.
-
(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan
@marcot seu começo foi bem parecido com o meu, continue treinando e sucesso. Se tiver qualquer duvida pode chegar no privado :D Lua entende nil e false como false. Qualquer outra coisa é considerado verdadeiro. Se souber um pouco de inglês aqui tá a definição de acordo com o wiki da linguagem:
-
(Resolvido)[PEDIDO] Critical System
substitui seu script por esse e receba 1 ataque, me fala até que valor do print chega no seu console
-
(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan
Antes de tudo @topic, me desculpa eu ando muito sem tempo ultimamente e fds eu costumo ficar sem pc então foi duplamente mais dificil arrumar um tempo pra abrir o sv e fazer os scripts. Eu tentei entrar hoje para escrever pelo menos umas dicas de como alguém poderia fazer para te ajudar mas me deparei com a resposta do marcot q num olhar rápido aparenta estar funcional. @marcot você podia tanto ter salvo o nome do player no storage quanto salvar o uid dele (q é um numero). A unica preocupação é q dependendo do tamanho máximo q o storage está definido na sua source (e no seu banco de dados) o valor poderia ultrapassar mas isso é relativamente fácil de contornar (dividir o numero em 3 storages, por ex) Eu gostei da forma q vc criou uma structure, isso mostra que você tem conhecimento em outras linguagens. Vou testar seu código depois. Geralmente os programadores q eu conheço não aceitam tão bem dicas, então espero q você não seja como eles e leve para o pessoal: 1- Use variaveis locais caster = cid target = getPlayerByName (param) Principalmente com coisas que podem ser executadas ao mesmo tempo. Elas são mais rápidas! 2- TRUE e FALSE são variaveis, use true e false (minusculo) 3- Evite redundancias. getTilePzInfo(getPlayerPosition(caster)) == FALSE é muito mais fácil fazer if not getTilePzInfo(getPlayerPosition(caster)) Ou no caso de If X == 1 then use if X then (o mesmo pra X == true) De resto, curti seu estilo, obrigado por atender ao pedido do tópico.
-
Mining System
tudo q vc precisa fazer pro 2 e pro 3 é copiar o script e colocar outros ids e aí configurar a teu criterio essa nova picareta. Pro primeiro é só colocar isso aqui embaixo de function onUse: local breakchance = 5 if breakchance > math.random(1, 100) then doRemoveItem(item.uid) doPlayerSendCancel(cid, "Sua picareta quebrou") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end
-
Armas para Players e Criaturas Específicas TFS 0.4.0
Eu acho muito legal quando alguém do suporte tem uma ideia legal, corre atrás de fazer e depois ainda monta um tutorial ensinando outros. Parabéns pela atitude.
-
Dodge System (Por Item)
troca aqui dodgePercent >= math.random (0,100) esse >= deveria ser só >
-
Clubs com Dano Diferente em Algumas Criaturas
@Tadelho olha pros seus combats. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) local combat2 = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 2.0, 0, 2.0, 0) primeiro vc cria um objeto e de combat e depois define os parametros dele. Até aí nada de errado, mas se vc olhar bem o combat2 tá sem parametro nenhum pq os parametros vc colocou tudo no 'combat' e substituiu os parametros do primeiro xD
-
(Resolvido)[PEDIDO] Critical System
@douglasfamil1 que script vc tá usando? manda aqui pra mim q eu vou modificar ele pra vc poder testar
-
(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan
cara eu n tive tempo hoje, vou tentar fazer amanhã. Me manda pm umas 15h q ai qnd eu chegar do trabalho eu tento resolver rapidinho
-
Clubs com Dano Diferente em Algumas Criaturas
do jeito q tá colocado, vc tá tentando pegar a weapon type de algo q não existe (uid) As coisas só existem se elas tiverem sido declaradas antes. function onStatsChange(cid, attacker, type, combat, value) aqui por exemplo a gente declarou a função onStatsChange com esses parametros aí, se no lugar de cid eu colocar 'jose', todas as funções q usam 'cid' como parametro abaixo irão falhar se eu não modificar nelas tb. Entender isso é o primeiro passo. Pro segundo, essa função getItemWeaponType ela recebe como parametro o uniqueid de um item então pra poder usar ela primeiro vc tem q identificar qual é o item q vc vai pegar pra depois pegar o .uid dele pra no final poder comparar. Uma forma de fazer isso é pegando o item q tá em determinado slot do player (mão direita, por ex). Mas vc tem que checar pra esquerda tb. Assim, tenta começar com um pouco menos do que vc tem aí e vai dando print nas coisas ex: print(dano) para saber quanto de dano tá ficando (pra ver se tá multiplicando certo) Depois q vc entender o que é cada coisa, ai vc vai incrementando seu código. Copiar partes de scripts só vai te dar mais trabalho pra entender oque não funciona qnd falhar
-
(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan
se ngm fizer até amanha eu faço p vc
- Hirashin Ni No Dan
-
(Resolvido)[Dúvida] Skills trocadas
honestamente vai ser dificil pra vc achar o erro procurando de olho. Começa por exclusão: exclui tudo daí que não tá relacionado com o problema e vc vai ter só a condition de adicionar club na spell. Depois, verifica pra qual numero isso aqui tá apontando no constant.lua: CONDITION_PARAM_SKILL_CLUB e verifica que o que esse numero representa na source (qual skill). Se você quiser pouco trabalho, simplesmente muda no constant.lua os numeros que cada variavel corresponde.
- Hirashin Ni No Dan
- Novo Sistema de Trainer [0.36~0.4]
-
Comando !rank, HELP!
@perfollgustavo olha, eu até consigo fazer uma gambiarra muito louca pra conseguir um rank usando essa função mas ia ser mais ou menos seguindo esse raciocinio aqui: a gente sabe q na variavel str a gente tem algo nesse formato aqui str = [[ Top 10 for Level: 1. GOD Wolf, 300 2. GM Icaro, 298 3. God Bless, 297 4. Night Wolf, 30 5. Night Wolf, 30 6. Night Wolf, 30 7. Night Wolf, 30 8. Night Wolf, 30 9. Night Wolf, 30 10. Night Wolf, 30 ]] eu ia usar uma função de pattern (provavelmente string.match) para caçar por instancias com god/gm no nome e aí deletar a linha inteira. Mas isso não é o suficiente, teriamos que pegar todas as linhas de baixo dessa linha e diminuir o numero da linha tendo este resultado aqui: str = [[ Top 10 for Level: 1. Night Wolf, 30 2. Night Wolf, 30 3. Night Wolf, 30 4. Night Wolf, 30 5. Night Wolf, 30 6. Night Wolf, 30 7. Night Wolf, 30 ]] O problema é que essa função é muito engessada e nós estariamos gastando um processamento absurdo para ficar corrigindo, procurando e deletando strings, isso é muito ruim (e caro computacionalmente!) Uma abordagem um pouco melhor seria parecida com o script do @Artur Henrique de usar queries. Talvez tenha um erro ou outro nesse código pq eu fiz ele sem testar mas a lógica é essa
- Magnus Challenger
- Mining System
-
[8.54] tfs 0.3.6 Barra de vida e mana por porcentagem %%
eu nao tinha visto isso aqui no forum ainda pra 0.36. Bom conteúdo :D
- Novo Sistema de Trainer
-
MATH.FLOOR / MATH.CEIL
me perguntaram algo muito parecido esses dias inbox, vou colar minha resposta aqui: No seu caso vc pode usar o string.format com %.3f ou simplesmente multiplicar por 1000, usar math.floor e dividir por mil. 3 casinhas decimais :D
- A volta das Conquistas e mais...