Ir para conteúdo
  • Cadastre-se

Vitorelias

Membro
  • Total de itens

    116
  • Registro em

  • Última visita

  • Dias Ganhos

    2

Posts postados por Vitorelias

  1. 23 minutos atrás, diegokenshin disse:

    Tenta esse ai

     

    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

    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, 'Boss') then
        
            if getPlayerStorageValue(cid,15000) >= 1 then
                selfSay('Você já me ajudou.', cid)
                talkState[talkUser] = 0
                return true
            end
        
                if getPlayerStorageValue(cid,15001) == -1 then
                    selfSay('Boss.', cid)
                    talkState[talkUser] = 0
                else
                selfSay('Obrigado grande guerreiro por solucionar o mistério do Boss Você agora tem permissão para acessar o lado sul da ilha..', cid)
                talkState[talkUser] = 0
                setPlayerStorageValue(cid,15000, 1)
                return true
            end
     
        end
            return true
        end

    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())
     

     

    Funciona mais ainda não é o que eu quero eu tenho esse aqui falta editar.

     

    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

    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, 'missao') then
        
            if getPlayerStorageValue(cid,25009) >= 1 then
                selfSay('Muito obrigado, você já concluiu a missão.', cid)
                talkState[talkUser] = 0
                return true
            end
        
                selfSay('É obrigatório ser certificado como explorador de Andorhal. Procure o comprador Tadeu, Kurl e Robens.', cid)
                if getPlayerStorageValue(cid,25008) >= 1 then
                selfSay('Preciso que você mate um lagarto que vive aterrorizando a população de Andorhal, este lagarto esta nas tumbas dos lagartos localizada na floresta de Andorhal, mas estou aceitando apenas guerreiros com certificados de explorador Andorhal. Aceita?.', cid)
                talkState[talkUser] = 0
                setPlayerStorageValue(cid,25009, 1)
                return true
            end
    end
            return true
        end

    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

  2. .Qual servidor ou website você utiliza como base? 

    TFS 0.4 8.6

     

    Olá boa tarde gostaria de montar um NPC para meu servidor. 

     

     

    O player vai chegar no NPC e vai falar missao se ele tiver storage 10203 o NPC vai falar para ele;

    Preciso que você mate um BOSS que vive aterrorizando a população de Magician, este BOSS esta nas tumbas dos Dragon localizada na floresta de Magician, mas estou aceitando apenas guerreiros com certificados de explorador Magician. Aceita?      

     

    agora se o player não tiver storage ele vai dizer: {É obrigatório ser certificado como explorador de Magician. Procure o comprador Pedro, Paulo e Alex.}

     

    ai se o player tiver storage 10203 \/

    ai o player vai falar{ yes ou sim} ai o npc vai dizer;

    Você agora esta autorizado a entrar na sala onde esta o BOSS. Muito cuidado, este BOSS é muito forte. Encontrará ótimas recompenças na sala.

    e vai dar uma STORAGE 10205 pro player para pode passar no tile que teletransporta o player para o boss

     

    ai se o player já fez a quest o NPC vai falar assim

    selfSay('Muito obrigado, você já concluiu a missão.', cid)

     

     

  3. Acabei de sair da aula estou indo para casa chegar vou testar obrigado 

    1 hora atrás, penisagudo disse:

    @Vitorelias

     

    Cria um arquivo dentro de data/movements/script com nome que desejar e coloque isso dentro.

     

     

    
    	
    		function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)	
    
     	
    
                    local config{	
    
    	                               storage = , --coloca o valor da storage que você quiser	
    
    	                               posSemStorage = {x = 1974, y = 1375, z = 14}, -- posição sem storage	
    
    	                               posComStorage = {x = 2032, y = 1285, z = 12} -- posição com storage	
    
    	                }	
    
                    	
    
                    if getPlayerStorageValue(cid, config.storage) >= 1 then	
    
                                   doTeleportThing(cid, config.posComStorage, false)	
    
                                   doSendMagicEffect(config.posComStorage, CONST_ME_TELEPORT)	
    
                                   doPlayerSendTextMessage(cid, 22, "Voce foi teleportado")	
    
    	                else 	
    
    	                               doTeleportThing(cid, config.posSemStorage, false)	
    
    	                               doPlayerSendTextMessage(cid, 22, "Voce foi teleportado")	
    
    	                               doSendMagicEffect(config.posSemStorage, CONST_ME_TELEPORT)	
    
    	                end	
    
    	                	
    
    	                return true	
    
    	end	
    	

     

     

    Em movements.xml coloque isso, colocando o número da action que quiser e mudando nome do arquivo que colocou ali em cima.

     

    
    <movevent type=“StepIn” actionid=“X” event=“script” value=“nomedoarquivo.lua”/>
    
    

     

     

    após isso abra seu mapa editor e no teleport onde quer colocar deixe as posições tudo em 0 e no actionID coloque o mesmo que colocou na tag do movements.

     

    se der algum erro me reporte! 

     

    Deu apenas um erro de digitaçao ai eu corrigi 
    local config{	estava assim ai arrumei assim     local config  = {
    1 hora atrás, Vitorelias disse:

    Acabei de sair da aula estou indo para casa chegar vou testar obrigado 

    
    Deu apenas um erro de digitaçao ai eu corrigi 
    
    local config{	estava assim ai arrumei assim     local config  = {

    Podem fecha o tópico muito obrigado.

  4. Em 24/09/2019 em 19:56, Cricket disse:

    Vitor, seu pedido é meio complexo levando em consideração que não me lembro como edita a parte de login do tibia.

    Se não me engano é nas SOUCERS você edita qual informação vc quer que apareça do lado do player no account list ao logar no tibia.

     

    Queria muito ajudar, mas não lembro onde que edita o tipo de informação nessa lista. Alguns servidores aparece (online/offfline)

    outros (mundo), no sistema de cast system aparece (viewers)

     

    Muito provavelmente é nas sources

     

     

    Abraços!

     

    Obrigado pela força mais qualquer coisa se lembrar me da uma força pois eu tenho as source do server.

  5. Olá, preciso de uma ajuda gostaria de adicionar quando player abrir o cast aparecer a quantidade de reset ex: (o viewer)[10]

    sadada.thumb.png.19616d43fad52b413bcb6f5f28b13451.png     

     Sistema de reset que eu uso. 

     

    function getPlayerReset(cid)
    local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
    rss = qr:getDataInt("reset", coNdConf.pid)
    if rss < 0 then
    rss = 0
    end
    return rss
    end

  6. 2 horas atrás, WooX disse:

    Atualizei o script novamente, agora tem que funcionar.

     

    [20:47:37.895] [Error - CreatureScript Interface]
    [20:47:37.895] data/creaturescripts/scripts/maxlevel.lua:onAdvance
    [20:47:37.895] Description:
    [20:47:37.896] data/creaturescripts/scripts/maxlevel.lua:4: attempt to compare nil with number
    [20:47:37.897] stack traceback:
    [20:47:37.897]  data/creaturescripts/scripts/maxlevel.lua:4: in function <data/creaturescripts/scripts/maxlevel.lua:1>

     

     

    KKKK cara não desiste por favor <3

  7. 22 horas atrás, WooX disse:

    Hmm, nesse caso parece que o return false não impede a função de rodar como acontece em outros callbacks. Vou editar o código e já já posto aqui.

     

    Edit: pronto, já atualizei o script.

     

    Testei novamente o script kk e não deu certo ve se eu fiz certo, coloquei o script no creaturescript criei um arquivo.lua chamado (maxlevel)

    coloquei o script e adicionei as tag no creaturescript.xml mas o level ainda esta passando

  8. 17 horas atrás, WooX disse:

    Surgiu 1 imprevisto e não deu pra fazer antes, testa ai.

     

    
    --<event type="advance" name="MaxLevel" event="script" value="maxlevel.lua"/>--
    --<event type="login" name="RegisterMaxLevel" event="script" value="maxlevel.lua"/>--
    
    function onAdvance(cid, skill, oldLevel, newLevel)
    	local maxLevel = getPlayerMaxLevel(cid)
    
    	if skill == SKILL__LEVEL then
    		if newLevel == maxLevel then
    			return false
    		end
    	end
    	return true
    end
    
    function getPlayerMaxLevel(cid)
    	local t = {
    		[{1,4}] = {vip = 330, free = 350},
    		[{5,9}] = {vip = 340, free = 355},
    		[{10,999}] = {vip = 355, free = 360}
    	}
    	
    	local resets = getPlayerReset(cid)
    	for k, v in pairs(t) do
    		if resets >= t[1] and resets <= t[2] then
    			if isPremium(cid) then
    				return v.vip
    			else
    				return v.free
    			end
    		end
    	end
    end
    
    function getPlayerReset(cid)
    	local queryResult = db.storeQuery("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";")
    	local resets = result.getDataInt(queryResult, "reset")
    	if resets < 0 then
    		return 0
    	else
    		return resets
    	end
    end
    
    function onLogin(cid)
    	registerCreatureEvent(cid, "MaxLevel")
    	return true
    end

     

     

    Eu acho que essa função Getplayermaxlevel não tenho deu esse erro 

     

     [Error - CreatureScript Interface]
    [14:21:51.845] data/creaturescripts/scripts/maxlevel.lua:onAdvance
    [14:21:51.845] Description:
    [14:21:51.846] data/creaturescripts/scripts/maxlevel.lua:21: attempt to compare nil with number
    [14:21:51.846] stack traceback:
    [14:21:51.846]  data/creaturescripts/scripts/maxlevel.lua:21: in function 'getPlayerMaxLevel'
    [14:21:51.847]  data/creaturescripts/scripts/maxlevel.lua:2: in function <data/creaturescripts/scripts/maxlevel.lua:1>
     

  9. Bom dia, 

    10 horas atrás, WooX disse:

    Surgiu 1 imprevisto e não deu pra fazer antes, testa ai.

     

    
    --<event type="advance" name="MaxLevel" event="script" value="maxlevel.lua"/>--
    --<event type="login" name="RegisterMaxLevel" event="script" value="maxlevel.lua"/>--
    
    function onAdvance(cid, skill, oldLevel, newLevel)
    	local maxLevel = getPlayerMaxLevel(cid)
    
    	if skill == SKILL__LEVEL then
    		if newLevel == maxLevel then
    			return false
    		end
    	end
    	return true
    end
    
    function getPlayerMaxLevel(cid)
    	local t = {
    		[{1,4}] = {vip = 330, free = 350},
    		[{5,9}] = {vip = 340, free = 355},
    		[{10,999}] = {vip = 355, free = 360}
    	}
    	
    	local resets = getPlayerReset(cid)
    	for k, v in pairs(t) do
    		if resets >= t[1] and resets <= t[2] then
    			if isPremium(cid) then
    				return v.vip
    			else
    				return v.free
    			end
    		end
    	end
    end
    
    function getPlayerReset(cid)
    	local queryResult = db.storeQuery("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";")
    	local resets = result.getDataInt(queryResult, "reset")
    	if resets < 0 then
    		return 0
    	else
    		return resets
    	end
    end
    
    function onLogin(cid)
    	registerCreatureEvent(cid, "MaxLevel")
    end

     

     

    Bom dia fiz tudo certo coloquei os script no creaturescript, não apareceu nenhum erro no console só que não consigo logar no otserver.

    consegui loga no otserver porem apareceu esse erro e está passando do nivel de reset 

    ata/creaturescripts/scripts/maxlevel.lua:21: in function 'getPlayerMaxLevel'
    [6:48:33.101]   data/creaturescripts/scripts/maxlevel.lua:2: in function <data/creaturescripts/scripts/maxlevel.lua:1>

     

    acho que essa funçao getplayermaxlevel nao tenho

  10. 20 minutos atrás, Ackerzin disse:

    Muito obrigado consegui resolver REP+ obrigado pela força.

  11. Sim, só que meu servidor possui uma tabela de reset então o player vai pegando resets o level de reset já aumenta no script de reset tem as stages exemplo. Do 1 reset ao 5 o player pode resetar level 330 vip ou free 350 do 5 reset ao 10 340 vip e free 360 depois da uma olhada nas stages do meu script. Meu sistema de vip e o premium account.

  12. 11 minutos atrás, WooX disse:

    Troca a função onCastSpell por essa.

    
    function onCastSpell(cid, var)
    	addEvent(function()
    		if isCreature(cid) then
    			doCombat(cid, combat, var)
    		end
    	end, 0)
    	addEvent(function()
    		if isCreature(cid) then
    			doCombat(cid, combat2, var)
    		end
    	end, 0)
    	return true
    end

     

    spell.thumb.png.4f1850c67931e59adfe6341ab284c2b8.png

    troquei mas quando do a spell e entro pz e deslogo continua dando erro no console so para de dar erro depois que a spell acaba.

     

     

    Consegui resolver 

    if not isPlayer(param.cid) then return true end adicionei fico novo kkkkkk
  13. 8 minutos atrás, KR3 disse:

    @Vitorelias  Se quiser pode modificar tenta usar esse ele da outfit e mais dano.

      Ocultar conteúdo

    --Script by kr3--

    local tempo = 500000 --tempo em segundos


    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
    setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -10.10, 10, -10.10, 10)  <--- dadano configuravél

    
    function onCastSpell(cid, var)
    local homem = {lookType = 1117, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} --outfit que muda caso seja homem
    local mulher = {lookType = 1117, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 3} --outfit que muda caso seja mulher
       
    local sex = getPlayerSex(cid)
    if sex == 0 then --sexo == 0 significa que o personagem é mulher
     doSetCreatureOutfit(cid, mulher, tempo*500000)
    else 
    doSetCreatureOutfit(cid, homem, tempo*500000)
    end
     return doCombat(cid, combat, var)
    end

     

     

    Não deu certo apos eu usar a spell 'espiritos do inferno' meu tibia deu debug nao consigo logar mas o char.  Será que você não consegue editar minha spell? colocando uma função que o player ao deslogar ou morrer ela corte a spell?

  14. Olá pesssoal boa noite estou com uma spell esta funcionando porem tem um problema, quando o player usa a spell e morre ou desloga antes da spell acabar

    fica aparacendo um monte de erro no console e acaba dando lag no servidor ate a spell acabar. tivesse como adicionar uma função que corte a spell quando player desloga ou morre 

     

    [Error - Spell Interface]
    [20:19:32.982] In a timer event called from:
    [20:19:32.984] (Unknown script file)
    [20:19:32.985] Description:
    [20:19:32.987] (luaDoCombatAreaHealth) Creature not found      - ERROR 

     

    - SPELL -

     

    Citar

    local outfit = {lookType = 290} -- Roupa que ira transformar no caso seu corpo ficara em choque

    local tempo = 60 * 130 -- Tempo, nesse caso esta 60 segundos Lembrando que 1000 = 1 segundo

     

    local combat = createCombatObject()

     

    local combat2 = createCombatObject()

    setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, 0)

     

     

     

    arr = {

    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

    {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

    {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},

    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},

    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},

    {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},

    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

    }

     

    local area = createCombatArea(arr)

    setCombatArea(combat, area)

     

    local condition = createConditionObject(CONDITION_ATTRIBUTES)

    setConditionParam(condition, CONDITION_PARAM_TICKS, tempo)

    setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit)

    setCombatCondition(combat2, condition)

     

    local sys = createConditionObject(CONDITION_OUTFIT)

    setConditionParam(sys, CONDITION_PARAM_TICKS, tempo)

    addOutfitCondition(sys, outfit)

    setCombatCondition(combat2, sys)

     

    function spellCallback(param)

    if param.count > 0 or math.random(0, 1) == 1 then

    doSendMagicEffect(param.pos, CONST_ME_MORTAREA)

    doAreaCombatHealth(param.cid, COMBAT_DEATHDAMAGE, param.pos, 0, -3000, -8000, CONST_ME_EXPLOSIONHIT)

    end

     

    if(param.count < 2) then

    param.count = param.count + 1

    addEvent(spellCallback, math.random(1000, 4000), param)

    end

    end

     

    function onTargetTile(cid, pos)

    local param = {}

    param.cid = cid

    param.pos = pos

    param.count = 0

    spellCallback(param)

    end

     

    setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

     

    function onCastSpell(cid, var)

    addEvent(doCombat, 0, cid, combat, var)

    addEvent(doCombat, 0, cid, combat2, var)

    return true

    end

     

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo