Ir para conteúdo

nookia

Membro
  • Registro em

  • Última visita

Solutions

  1. nookia's post in (Resolvido)Barco para ilhas was marked as the answer   
    Crie um arquivo .xml e só edite o nome do npc que deseja por.
    <?xml version="1.0"?> <npc name="NOME NPC" script="data/npc/scripts/ilha.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="264" head="20" body="39" legs="45" feet="7" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME| Posso te levar para a {ilha 1} e {ilha 2}, para qual deseja ir?" /> </parameters> </npc> Agora crie um arquivo ilha.lua em npcs/scripts e cole dentro e modifique apenas as coordenadas das ilhas.
    local ILHA = {x = XXX, y = XXX, z = X} -- POSIÇÃO DE ILHA local ILHA2 = {x = XXX, y = XXX, z = X} -- POSIÇÃO DA ILHA2 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, "ilha 1") then selfSay("How rude!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, ilha) doSendMagicEffect(ilha, 10) talkState[talkUser] = 0 end if msgcontains(msg, "ilha 2") then selfSay("How rude!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, ilha2) doSendMagicEffect(ilha2, 10) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora crie um arquivo.xml e cole dentro e mude o nome do npc:
    <?xml version="1.0"?> <npc name="NOME NPC" script="data/npc/scripts/origem.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="264" head="20" body="39" legs="45" feet="7" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME| deseja voltar para a cidade origem?" /> </parameters> </npc> Agora crie um arquivo chamado origem.lua na pasta scripts e cole dentro:
    local DESTINO = {x = XXX, y = XXX, z = X} -- 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, "yes") then selfSay("How rude!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  2. nookia's post in (Resolvido)Quem tiver storage passa, se não tiver leva tp was marked as the answer   
    Crie um arquivo chamado castleLogin.lua na pasta data/movements/scripts e cole isso:
    function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 123123) <= 0 then doTeleportThing(cid, getPlayerMasterPos(cid)) doPlayerSendTextMessage(cid, 22, "Sua guild não domina mais o castelo por isso foi teletransportado para o templo.") end return TRUE end Agora adicione a seguinte linha no arquivo movements.xml:
    <movevent type="StepIn" actionid="43020" event="script" value="castleLogin.lua"/> No map editor coloque actionID do tile 43020.
  3. nookia's post in (Resolvido)Erro no na disto was marked as the answer   
    Executa no phpmyadmin:
    CREATE TABLE IF NOT EXISTS `live_casts` ( `player_id` int(11) NOT NULL, `cast_name` varchar(255) NOT NULL, `password` boolean NOT NULL DEFAULT false, `description` varchar(255), `spectators` smallint(5) DEFAULT 0, UNIQUE KEY `player_id_2` (`player_id`), FOREIGN KEY (`player_id`) REFERENCES `players`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB;
  4. nookia's post in (Resolvido)[PEDIDO] Talkaction Buypremium was marked as the answer   
    Troca seu buypremium.lua por esse:
    local days = { [30] = 20, --[dias] = item, [60] = 40, [90] = 60, } local id = 6527 --ID do item. function onSay(cid, words, param) if param == "" then return doPlayerSendCancel(cid, "Especify a parameter.") elseif not tonumber(param) then return doPlayerSendCancel(cid, "Say a valid number of premium days.") elseif not days[tonumber(param)] then return doPlayerSendCancel(cid, "You can't buy this quantity of premium days.") end local p_days = days[tonumber(param)] if getPlayerItemCount(cid, id) >= p_days then doPlayerAddPremiumDays(cid, tonumber(param)) doPlayerRemoveItem(cid, id, p_days) doPlayerSendTextMessage(cid, 27, "You bought "..param.." premium days.") else return doPlayerSendCancel(cid, "You do not have enough "..getItemNameById(id).." ["..p_days.."].") end return true end
  5. nookia's post in (Resolvido)Tempo correto da distro 0.4 was marked as the answer   
    É em milissegundo. Antes era 1H - 3600, 2H erá 7200 agora é: 1H - 3600000, 2H - 7200000

    No caso o que você postou ai de 1H, 1800000 são 30 minutos.
  6. nookia's post in (Resolvido)Script Premmium Scroll was marked as the answer   
    http://www.tibiaking.com/forum/topic/19830-action-premium-system/
  7. nookia's post in (Resolvido)Trocando blueberry por potions was marked as the answer   
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item = {2677, 7620} -- item que será pedido e item que será dado na troca } local counts = { count = {100, 20} -- quantidade que será pedido e quantidade que será dado na troca } 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, 'trocar') then if getPlayerItemCount(cid, items.item[1]) >= counts.count[1] then doPlayerRemoveItem(cid, items.item[1], counts.count[1]) doPlayerAddItem(cid, items.item[2], counts.count[2]) selfSay('Você trocou '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..' for '.. counts.count[2] ..' '.. getItemNameById(items.item[2]) ..'.', cid) else selfSay('Você não possui '.. counts.count[1] ..' '.. getItemNameById(items.item[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Testei e funcionando 100%, abraço.
  8. nookia's post in (Resolvido)Ajuda-Passa em um tiler so se tiver x Storage was marked as the answer   
    Vá em data\movements\scripts e crie um arquivo chamado tilestorage.lua e cole dentro:
    function onStepIn(cid, item, pos, fromPos) storage = STORAGE -- aqui a storage que deseja if getPlayerStorageValue(cid, storage) < 1 then doTeleportThing(cid, fromPos) doSendMagicEffect(fromPos, CONST_ME_POFF) doPlayerSendCancel(cid, 'MSG AQUI.') -- aqui a mensagem de erro se o player não tiver a storage end doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) return true end Vá em data\movements\movements.xml e adicione a tag:
    <movevent event="StepIn" uniqueid="1900" script="tilestorage.lua" /> Agora só ir no map editor e adicionar o uniqueid no tile que quiser.
  9. nookia's post in (Resolvido)Como mudar efeito SD was marked as the answer   
    Só trocar:
    COMBAT_DEATHDAMAGE  para:
    COMBAT_PHYSICALDAMAGE abç.
  10. nookia's post in (Resolvido)[Pedido] Alterar effect was marked as the answer   
    Vá em lib e crie um arquivo chamado, granAura e cole dentro:
    local events = {} local function getPositions(cid) local pos = getCreaturePosition(cid) local ret = { [1] = {x = pos.x + 1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y + 1, z = pos.z}, [3] = {x = pos.x - 1, y = pos.y, z = pos.z}, [4] = {x = pos.x, y = pos.y - 1, z = pos.z}, } return ret end function granEffect(cid, last) local sec = 200 if (isPlayer(cid) == FALSE) then return false end local positions = getPositions(cid) local last = last or 1 local last = (positions[last] and last) or 1 local next = (last == #positions) and 1 or last + 1 doSendDistanceShoot(positions[last], positions[next], 18) local event = addEvent(granEffect, sec, cid, last + 1) events[cid] = event return true end Em lib ainda abre o constant.lua e function.lua e adicione logo na primeira linha:
    dofile('data/lib/granAura.lua') Agora vá em creaturescripts/scripts e abre o login.lua e adicione encima do ultimo return TRUE:
    --granAura-- if getPlayerStorageValue(cid, 13345) == 1 then granEffect(cid) return TRUE end e para ganhar o efeito, é só adicionar a storage 13345 no player que irá ganhar o efeito, no caso se quiser que já logue com o efeito adicione embaixo do primeiro end acima de registerCreatureEvent
    granEffect(cid) flw, abç.
  11. nookia's post in (Resolvido)[PEDIDO] Um Script Que Ganha Outfit No Fim Da Quest was marked as the answer   
    function onUse(cid, item, frompos, item2, topos) if item.uid == 9219 then quest = getPlayerStorageValue(cid, 1543) if quest == -1 then doPlayerSendTextMessage(cid,22, "Você completou a quest e recebeu sua recompensa.") doPlayerAddOutfit(cid, ID OUTFIT, 1) doPlayerAddOutfit(cid, ID OUTFIT, 1) setPlayerStorageValue(cid, 1543, 1) else doPlayerSendTextMessage(cid,22,"It is empty.") end end end <action uniqueid="8913" script="quests/nomedaquest.lua" /> Só abrir o RME e colocar o uniqueid 9219.
  12. nookia's post in (Resolvido)Script ... was marked as the answer   
    local config = { tempo = 2, msg = "DONATE!", items = {2463} -- Itens que vai enviar a msg. } local function doSendText(cid, text) if (isPlayer(cid) == FALSE) then return false end if getPlayerStorageValue(cid, 19234) < 1 then return TRUE end doSendAnimatedText(getPlayerPosition(cid),config.msg, math.random(01,255)) return addEvent(doSendText, config.tempo * 1000, cid, text) end function onEquip(cid, item) if isInArray(config.items, item.itemid) then if getPlayerStorageValue(cid, 19234) < 1 then setPlayerStorageValue(cid, 19234, 1) doSendText(cid, config.msg) end end return TRUE end function onDeEquip(cid, item) if isInArray(config.items, item.itemid) then setPlayerStorageValue(cid, 19234, 0) end return TRUE end Testei e ta funcionando.
  13. nookia's post in (Resolvido)[SCRIPT] DE WAND COM ALGO ERRADO was marked as the answer   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 3) arr = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onUseWeapon(cid, var) local min, max = 1200, 1500 -- dano minimo, maximo! addEvent(doAreaCombatHealth, 100, cid, COMBAT_HOLYDAMAGE, getThingPos(getCreatureTarget(cid)), area, -min, -max, 17) return doCombat(cid, combat, var) end Era só adicionar um
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 3) Embaixo do 
    setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true)
  14. nookia's post in (Resolvido)Como adiciono "Level necessário" nesse action was marked as the answer   
    function onUse(cid, item, frompos, item2, topos) local pausa = 30*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você dobrou sua Experiencia por 30 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server. expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal. local limitedeuso = 49015 local tempo = 30*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar." local seuitem = 12505 -- seu item que dará double exp local efeito1 = 53 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot level = ? -- level necessario --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1801 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect() if isPlayer(cid) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) end end if getPlayerLevel(cid) > level then else doPlayerSendCancel(cid, "Você precisa ser level ? para usar o item.") return TRUE end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1800) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) a = 1 while a ~= timeEffect do addEvent(effect, a * 1000) a = a + 1 end elseif item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end Só editar o level ali no ?
  15. nookia's post in (Resolvido)Wand + condition was marked as the answer   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 43) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 36) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3700) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 37) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3900) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 5) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 3) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3800) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 17) setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 10) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3900) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, 1) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 35) setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 18) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3800) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, 48) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 4) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3900) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE) setCombatParam(combat7, COMBAT_PARAM_EFFECT, 45) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 38) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -3900) local condition = createConditionObject(CONDITION_FIRE) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 50, 2000, -75) setCombatCondition(combat3, condition) function onUseWeapon(cid, var) lucky = math.random(1, 7) if lucky == 1 then return doCombat(cid, combat, var) elseif lucky == 2 then return doCombat(cid, combat2, var) elseif lucky == 3 then return doCombat(cid, combat3, var) elseif lucky == 4 then return doCombat(cid, combat4, var) elseif lucky == 5 then return doCombat(cid, combat5, var) elseif lucky == 6 then return doCombat(cid, combat6, var) elseif lucky == 7 then return doCombat(cid, combat7, var) end end

Informação Importante

Confirmação de Termo