Tudo que Tadelho postou
-
Tentando Substituir Spell Summon Creature
Olá a todos, estou aqui novamente. Estou tentando substituir a magia de summon do meu servidor TFS 0.4.0 (8.6) e para isso tentei utilizar um script para talkaction publicado pelo @admkhbr que encontrei neste tópico e que me pareceu bem funcional para meus objetivos. Entretanto, ao abrir o servidor me deparo com o seguinte erro no console: Description: [9:26:49.447] data/talkactions/scripts/callofnature1.lua:33: bad argument #1 to 'lower' (string expected, got nil) Alguém tem alguma ideia de como fazê-lo funcionar? Ou mesmo pode me sugerir um script que substitua o summon creature que esteja funcionando para TFS 0.4.0 (8.6)? Agradecido! Segue o código do script: -- General Configuration local lvlmin = 1 local exhaustion = 3000 local needlearn = 1 local learnstorage = 77890 local vocations = {2, 3} local maxsummons = getConfigValue("maxPlayerSummons") summonlist = { [1] = {'rat', 4}, [2] = {'bat', 4}, [3] = {'bug', 4}, [4] = {'snake', 4} } -- Player Info local lvl = getPlayerLevel(cid) local vocp = getPlayerVocation(cid) local mana = getCreatureMana(cid) local pos = getCreaturePosition(cid) -- Statements local learned = 0 local voccan = 0 local cansummon = 0 local manacost = 0 local exhaustorage = 77889 -- Loop Control local vocs = #vocations local slistn = #summonlist -- Conversions param = string.lower(param) param = string.gsub(param, '\"', '') exhaustion = exhaustion/1000 -- Initial Verification if needlearn == 0 then learned = 1 end if needlearn == 1 and getPlayerStorageValue(cid, learnstorage) > 0 then learned = 1 end while vocs > 0 do if vocp == vocations[vocs] then voccan = 1 end vocs = vocs - 1 end while slistn > 0 do if param == summonlist[slistn][1] then cansummon = 1 manacost = summonlist[slistn][2] end slistn = slistn - 1 end -- Summon Monster if getTilePzInfo(pos) then doPlayerSendCancel(cid, 'This action is not permitted in a protection zone.') else if lvl < lvlmin then doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'You do not have enough level.') else if learned == 1 then if voccan == 1 then if getPlayerStorageValue(cid, exhaustorage) >= os.time() then doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'You are exhausted.') else if cansummon == 1 then if mana >= manacost then if #getCreatureSummons(cid) < maxsummons then doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) doCreatureAddMana(cid, 0-manacost, false) local summon = doCreateMonster(param, pos) doConvinceCreature(cid, summon) doSendMagicEffect(getCreaturePosition(summon), CONST_ME_TELEPORT) setPlayerStorageValue(cid, exhaustorage, os.time()+exhaustion) else doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'You cannot summon more creatures.') end else doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'You do not have enough mana.') end else doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'Sorry, not possible.') end end else doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'Your vocation cannot use this spell.') end else doSendMagicEffect(pos, CONST_ME_POFF) doPlayerSendCancel(cid, 'You need to learn this spell first.') end end end return
-
Teleport + Outfit + Skill -> Script
Senhores, chega a dar certa vergonha, mas... após recompilar várias vezes o server, testar isso e aquilo, aparentemente o problema estava no movements.xml. Como reportado no primeiro post, eu registrei o evento como: <event type="StepIn" actionid="7460" event="script" value="teleportoutfitelf.lua"/> Ao invés de "event" eu deveria ter registrado como "movevent", e finalmente funcionou. Perdi uma semana com isso, haha. Resolvido.
-
Teleport + Outfit + Skill -> Script
@Liipe Silva Sim, sim, eu creio que funcione, mesmo. Por isso agora estou convencido de que o problema não é o script em si, que está correto, mas sim algum outro fator que não consigo identificar. Vou quebrar mais a cabeça aqui... se é que eu consigo resolver. Obrigado a todos, novamente, e aceito novas sugestões! Se eu encontrar uma solução, volto para contar.
-
Teleport + Outfit + Skill -> Script
@Liipe Silva Tentei essa variação também, mas nada. Estou concluindo que o problema não é o script em si, mas sim algo a mais (que preciso descobrir, ainda). Não havendo erro de sintaxe que comprometa o carregamento das movements, é praticamente indiferente o que eu coloco no script, pois é tudo "simplesmente ignorado". Obrigado, de toda forma.
-
Teleport + Outfit + Skill -> Script
Acabo de tentar, mas infelizmente deu na mesma. O personagem se move para as coordenadas desejadas, mas todos os demais comandos são ignorados: Outfit igual, skill igual, sem efeitos e sem mensagem. Update: realizei um teste e percebi que o personagem apenas se move para a coordenadas editadas no MapEditor, ignorando as ordenadas no script.lua Embora o console não acuse nenhum erro, é como se o script não existisse.
-
Configuração mob
Se for de alguma habilidade/magia já criada no seu servidor, no arquivo do seu Boss, configure na sessão de <attacks> o "interval" em "50000" (50 mil milissegundos -> 50 segundos) e "chance" em "100" (100 por cento de chances de efetivar o ataque). Isso fará com que a cada 50 segundos ele sempre execute o ataque que você especificou. Exemplo, se ele soltar uma magia equivalente a uma GFB em um alvo: <attacks> <attack name="fire" interval="50000" chance="100" range="7" radius="5" target="1" min="-300" max="-500"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> </attacks>
-
Teleport + Outfit + Skill -> Script
Sou bastante inexperiente fazendo scripts e estou tendo dificuldades até mesmo para fazer esse simples teletransporte. Obs: Utilizo TFS 0.4.0 3777 que eu mesmo compilei. As únicas alterações que fiz nas sources foram as fórmulas de dano e defesa. A minha necessidade é arrumar o script para que ocorram os seguintes eventos: -> MagicEffect 9 -> Outfit mudado -> Skill adicionado -> Player teletransportado para determinado local -> MagicEffect 14 -> Mensagem Registrei a action 7460 em "movements.xml" da seguinte forma: <event type="StepIn" actionid="7460" event="script" value="teleportoutfitelf.lua"/> Adicionei a ID da action 7460 no MapEditor no item desejado (um mystic flame, ID = 8058) Elaborei o seguinte script eu mesmo para "teleportoutfitelf.lua": function onStepIn(cid, item, pos) local tp = {x = 75, y = 80, z = 7} local pos = {x = 91, y = 13, z = 6} if item.actionid == 7460 then doSendMagicEffect(getCreaturePosition(cid), 9) doSetCreatureOutfit(cid, 159, -1) doPlayerAddSkill(cid, 4, 2) doTeleportThing(cid, pos) doSendMagicEffect(tp, 14) doPlayerSendTextMessage(cid, 22, "Você se encarnou em um elfo!") end return true end O script não funciona e não faço ideia do que fiz de errado. Imagino que seja simples de resolver, alguém pode me ajudar? Obrigado!
-
Aumento de HP/MP baseado em "Skills"
Olá para todos. Ainda sou bastante inexperiente criando scripts e editando os arquivos .cpp das sources, e por isso venho pedir ajuda. Estou tentando criar algumas novas "skills" (atributos), dentre os quais, uma equivalente a "vitalidade". Observando os arquivos .cpp, percebo que a programação faz com que o valor de HP/MP a ser aumentado conforme o player avança de nível seja retirado de um valor string recebida no vocations.lua. A minha ideia é fazer com que as vocações aumentem o HP/MP máximo ao avançarem de level não conforme este valor fixo, mas conforme uma formula baseada nesta mesma skill criada. Isso seria possível? Alguém tem alguma ideia de como produzir tal efeito em uma base TFS 0.4? Agradeço antecipadamente toda e qualquer contribuição.