
Tudo que MaXwEllDeN postou
-
Headshot - Critical hit
function onChangeHealth(cid, attacker, value, type, secondaryDamage, secondaryType) if type ~= 1 then return true end if isPlayer(attacker) and getPlayerStorageValue(cid, 71257) < 1 then if math.random(100) <= chance_percent then local dmg = value * (extra_damage_percent / 100) setPlayerStorageValue(cid, 71257, 1) doTargetCombatHealth(attacker, cid, type, -dmg, -dmg, 255) setPlayerStorageValue(cid, 71257, -1) doCreatureSay(cid, "CRITICAL", 19) return false end end return true end Tente este.
-
Headshot - Critical hit
Ta dan
-
Headshot - Critical hit
Headshot - Critical hit Quando alguém te ataca, há a chance de ela te bater na cabeça(headshot) e você tomar 250%(configurável) do dano que ela causaria normalmente. Então, vamos lá. Adicione isso ao seu creaturescripts.xml <event type="login" name="HeadshotLogin" event="script" value="headshot.lua"/> <event type="statschange" name="HeadshotCritical" event="script" value="headshot.lua"/> E crie este arquivo: data/creaturescripts/scripts/headshot.lua local chance_percent = 50 -- Chance percenting local extra_damage_percent = 250 -- Extra Damage Percent function onLogin(cid) registerCreatureEvent(cid, "HeadshotCritical") return true end function onStatsChange(cid, attacker, type, combat, value) if type ~= STATSCHANGE_HEALTHLOSS then return true end if isPlayer(attacker) and getPlayerStorageValue(cid, 71257) < 1 then if math.random(100) <= chance_percent then local dmg = value * (extra_damage_percent / 100) setPlayerStorageValue(cid, 71257, 1) doTargetCombatHealth(attacker, cid, type, -dmg, -dmg, 255) setPlayerStorageValue(cid, 71257, -1) doCreatureSay(cid, "CRITICAL", 19) return false end end return true end
-
[Pedido] Script de item que ganha items por porcentagem
local config = { [90] = {ID, COUNT}, [80] = {ID, COUNT}, [59] = {ID, COUNT}, [50] = {ID, COUNT}, [40] = {ID, COUNT}, [30] = {ID, COUNT}, [20] = {ID, COUNT}, [10] = {ID, COUNT}, [3] = {ID, COUNT}, [1] = {ID, COUNT}, } function onUse(cid, item) local chance_growing = {} for chance, _ in pairs(config) do table.insert(chance_growing, chance) end table.sort(chance_growing, function(a, b) return a > b end) local chance = 0 for _, v in pairs(chance_growing) do if math.random(100) < v then chance = v break end end local item = config[chance] if item then doPlayerAddItem(cid, item[1], item[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." ".. item[1] .. ".") doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Não foi dessa vez, tente na próxima ):") end doRemoveItem(item.uid, 1) return true end
-
[Pedido] Script de item que ganha items por porcentagem
local config = { [90] = {ID, COUNT}, [80] = {ID, COUNT}, [59] = {ID, COUNT}, [50] = {ID, COUNT}, [40] = {ID, COUNT}, [30] = {ID, COUNT}, [20] = {ID, COUNT}, [10] = {ID, COUNT}, [3] = {ID, COUNT}, [1] = {ID, COUNT}, } function onUse(cid, item) if getPlayerStorageValue(cid, STORAGE) > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você já recebeu seu prêmio.") return false end local chance_growing = {} for chance, _ in pairs(config) do table.insert(chance_growing, chance) end table.sort(chance_growing, function(a, b) return a > b end) local chance = 0 for _, v in pairs(chance_growing) do if math.random(100) < v then chance = v break end end local item = config[chance] if item then doPlayerAddItem(cid, item[1], item[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." ".. item[1] .. ".") setPlayerStorageValue(cid, STORAGE, 1) doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Não foi dessa vez, tente na próxima ):") end doRemoveItem(item.uid, 1) return true end Esse...
-
[Pedido] Script de item que ganha items por porcentagem
Provavelmente ele não tá abrindo o servidor de novo pra fazer o teste. Ou, se está, não está sobreescrevendo o script certo.
-
(Resolvido)[Script] Npc Teleport
local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local SAFFRON = {x = 160, y = 54, z = 7} -- POSIÇÃO DE Saffron local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "sim") or msgcontains(msg, "yes") then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) elseif msgcontains(msg, "nao") or msgcontains(msg, "no") then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, SAFFRON) doSendMagicEffect(SAFFRON, 10) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Amigo, aprenda a usar vírgulas. Por causa da falta delas não entendi bem o que você queria.
-
(Resolvido)[Script] Npc Teleport
local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "sim") or msgcontains(msg, "yes") then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) <?xml version="1.0" encoding="UTF-8"?> <npc name="Bob" script="Bob.lua" walkinterval="2000"> <health now="100" max="100" /> <look type="131" head="58" body="43" legs="38" feet="76" addons="0" /> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME| voce deseja fazer o guia iniciante?" /> <parameter key="message_farewell" value="So I am alone again." /> <parameter key="message_walkaway" value="So I am alone again." /> </parameters> </npc>
-
[Pedido] Script de item que ganha items por porcentagem
Não entendi...
-
[Pedido] Script de item que ganha items por porcentagem
E por que tu não fala que tá dando erro? Dizer só "não funcionou" não ajuda em nada. Você não chega pra um médico e fiz que tá doente, você diz como você se sente ¬¬ Você chegou ao menos a mudar as configurações? Os ids de todos os ítens?
-
[Pedido] Script de item que ganha items por porcentagem
Olha, provavelmente tu não tá usando o script certo. Faz tudo de novo, deleta o arquivo, cria a tag de novo, reinicia o servidor e testa. Porque na segunda vez, que mandei um errado, era pra ter dado erro, e na segunda funcionado.
-
[Pedido] Script de item que ganha items por porcentagem
local config = { [90] = {ID, COUNT}, [80] = {ID, COUNT}, [59] = {ID, COUNT}, [50] = {ID, COUNT}, [40] = {ID, COUNT}, [30] = {ID, COUNT}, [20] = {ID, COUNT}, [10] = {ID, COUNT}, [3] = {ID, COUNT}, [1] = {ID, COUNT}, } function onUse(cid, item) if getPlayerStorageValue(cid, STORAGE) > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você já recebeu seu prêmio.") return false end local chance_growing = {} for chance, _ in pairs(config) do table.insert(chance_growing, chance) end table.sort(chance_growing, function(a, b) return a > b end) local chance = 0 for _, v in pairs(chance_growing) do if math.random(100) < v then chance = v break end end local item = config[chance] if item then doPlayerAddItem(cid, item[1], item[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." ".. item[1] .. ".") setPlayerStorageValue(cid, STORAGE, 1) doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Não foi dessa vez, tente na próxima ):") end doRemoveItem(item.uid, 1) return true end Opa, eu esqueci uma palavra hahua.
-
[Pedido] Script de item que ganha items por porcentagem
local config = { [90] = {ID, COUNT}, [80] = {ID, COUNT}, [59] = {ID, COUNT}, [50] = {ID, COUNT}, [40] = {ID, COUNT}, [30] = {ID, COUNT}, [20] = {ID, COUNT}, [10] = {ID, COUNT}, [3] = {ID, COUNT}, [1] = {ID, COUNT}, } function onUse(cid) if getPlayerStorageValue(cid, STORAGE) > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você já recebeu seu prêmio.") return false end local chance_growing = {} for chance, _ in pairs(config) do table.insert(chance_growing, chance) end table.sort(chance_growing, function(a, b) return a > b end) local chance = 0 for _, v in pairs(chance_growing) do if math.random(100) < v then chance = v break end end local item = config[chance] if item then doPlayerAddItem(cid, item[1], item[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." ".. item[1] .. ".") setPlayerStorageValue(cid, STORAGE, 1) doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Não foi dessa vez, tente na próxima ):") end doRemoveItem(item.uid, 1) return true end Porque eu não sabia que era pra remover '-'
-
Como adicionar Global Storages no TFS 1.0
Adicionando Global Storages no TFS 1.0 Olá, pessoal, estive trabalhando com o TFS 1.0, e me deparei com um problema ao utilizar uma storage global nesta versão, eles utilizaram uma versão com muitas diferenças da que estamos acostumados a programar nossos scripts, e essa versão antiga não possuía global storages. A solução que o pessoal encontrou para burlar isso, foi um tanto quanto arcaica, visto que esse modo deles pode acarretar em vários problemas eu resolvi desenvolver um código que funcionará normalmente no TFS 1.0. Enfim, deixando de falação, vamos ao tutorial... Primeiro, execute esse código SQL no seu Banco de Dados: CREATE TABLE `global_storage` ( `key` VARCHAR(32) NOT NULL, `value` TEXT NOT NULL, UNIQUE (`key`) ); Depois, é só adicionar estes métodos a sua biblioteca global e utilizar normalmente: -- getGlobalStorageValue(key) function getGlobalStorageValue(key, parser) local value = result.getDataString(db.storeQuery("SELECT `value` FROM `global_storage` WHERE `key` = ".. key .. ";"), "value") if not value then if parser then return false else return -1 end end return tonumber(value) or value end -- setGlobalStorageValue(key, value) function setGlobalStorageValue(key, value) if getGlobalStorageValue(key, true) then db.query("UPDATE `global_storage` SET `value` = '".. value .. "' WHERE `key` = ".. key .. ";") else db.query("INSERT INTO `global_storage` (`key`, `value`) VALUES (".. key ..", ".. value ..");") end return true end Obs: Se você utilizar multiworlds, as storages globais serão compartilhadas, ainda estou procurando um meio de burlar isso. Abraços.
-
[Pedido] Script de item que ganha items por porcentagem
local config = { [90] = {ID, COUNT}, [80] = {ID, COUNT}, [59] = {ID, COUNT}, [50] = {ID, COUNT}, [40] = {ID, COUNT}, [30] = {ID, COUNT}, [20] = {ID, COUNT}, [10] = {ID, COUNT}, [3] = {ID, COUNT}, [1] = {ID, COUNT}, } function onUse(cid) if getPlayerStorageValue(cid, STORAGE) > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você já recebeu seu prêmio.") return false end local chance_growing = {} for chance, _ in pairs(config) do table.insert(chance_growing, chance) end table.sort(chance_growing, function(a, b) return a > b end) local chance = 0 for _, v in pairs(chance_growing) do if math.random(100) < v then chance = v break end end local item = config[chance] if item then doPlayerAddItem(cid, item[1], item[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você encontrou ".. item[2] .." ".. item[1] .. ".") setPlayerStorageValue(cid, STORAGE, 1) doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Não foi dessa vez, tente na próxima ):") end return true end
- Tibia King Recomenda #1
-
[Aula 10] O Comando for
Sim, o break é necessário pro script seguir a lógica que o programador quis usar. Dá uma lida de novo no tutorial, for index, valor in pairs(tabela) do Essa é a sintaxe do for. O que muitas pessoas não sabem, é que o underline(_) pode ser usado como nome de variável também. Exemplo: local _ = "Maxwell" print(_)
-
[CTF] Capture The Flag 2.0(Automático)
Link atualizado.
-
(Resolvido)Npc travel por storage
local STORAGE = 5021 -- Storage necessária para viajar local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "cinnabar") then selfSay("Você deseja ser teletransportado para cinnabar?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, STORAGE) > 0 then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) else selfSay("Me desculpe, mas você não tem acesso a cinnabar.", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
- [Aula 10] O Comando for
-
[Aula 6] Escopo
Não, no caso ali, na linha 5, você mudou o valor da variável "var" mais próxima. Que no caso era a local var = 2,
-
[CTF] Capture The Flag 2.0(Automático)
Olá pessoal. Perdão pela demora, não estou em casa agora e não tenho o script aqui comigo. Assim que chegar em casa eu faço o upload de novo e passo pra vocês.
-
Retirando a vida e mana do player
function resetHp(cid, percent) local newHp = getCreatureMaxHealth(cid) - (getCreatureMaxHealth(cid) * (percent / 100)) setCreatureMaxHealth(cid, newHp) doCreatureAddHealth(cid, newHp) return true end function resetMana(cid, percent) local newMana = getCreatureMaxMana(cid) - (getCreatureMaxMana(cid) * (percent / 100)) setCreatureMaxHealth(cid, newMana) doCreatureAddMana(cid, newMana) return true end
- (Resolvido)addEvent Send magic effect Alguém sabe?
-
(Resolvido)addEvent Send magic effect Alguém sabe?
então assim estaria correto? Obs: se não tiver aponte oque eu fiz de errado ty. Não está certo porque você usou o nome de uma função que já existe. Você sobreescreveu a antiga doSendMagicEffect por essa sua, e isso é horrível em vários sentidos, além que tem uma recursion desnecessária alí. O ideal seria algo como: function doSendMagicEffectRepeat(cid) if isCreature(cid) and getPlayerStorageValue(cid, limitedeuso) > 0 then doSendMagicEffect(getThingPos(cid), 13) addEvent(doSendMagicEffectRepeat, tempo1, cid) end return true end function onUse(cid, item, frompos, item2, topos) doSendMagicEffectRepeat(cid) return true end