Ir para conteúdo

Gabrielx17

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Gabrielx17 deu reputação a bolinhaoriginal em NTO Alternative ( do oriental )   
    Bom Dia Hoje Eu Estou Aki Para Dropar O NTO Alternative, Porque Voce Me Pergunta?, Simples O Mlk E Mt Pnc, Vejam Os Relatos:

    Menino De 14 Anos: bem no inicio dos ots eu um pequeno garfanhoto no começo de otserver estilo dbo,ndbo,nto ( fazia poketibia na epoca ) eu comecei com um dbozin conhecendo os sistemas e vocaçoes comecei com a base teach ( sem conhecimento nenhum em dbo ) eu comecei a divulgar no facebook o dbo e o oriental vem no meu pv e começa a me xingar ( motivo? nenhum ) na epoca nem liguei mais vale resaltar aki

    Vendendo Base Dropada: bom a base nto alternative foi dropada fazia um tempo e o oriental msm sabendo disso foi vender para uma pessoa que nao sabia que foi dropada e tentou vender ( ela conversou cmg a tempo ) prints a baixo:
     
    A Volta ( kaksdkaskdk ) : bom dps de mt tempo chega o menino oriental no meu pv perguntando se eu tenho um dbo, e qual base e, eu respondo pra ele, depois disso ele pergunta se eu ja tive a base alternative ( origens eu acho ) e depois disso fui pro pc falar com ele e ele começou a ser cuzaum ( oq normalmente e kk ) eu falei que tinha sim e ele pergunta quem mandou, eu falo que nao sou x9 e ele me ameaça falando que meu ot nao pega 1 on e fala que vai divulgar ( falando mal ) pros outros e me xinga de filho da puta, e dps disso eu falo pra ele o relato de anos atras e ele fala: fodase seu merda do caralho
    prints a baixo:
     
    so estou esperando permiçao para dropar a base dbo alternative bye bye aproveitem a base nto alternative

    Download https://www.mediafire.com/file/f6mvl23caxnwhsw/NTO_ALTERNATIVE.rar/file
    Virus Total: https://www.virustotal.com/gui/file/1862f15c7424ef72e19c603688f8f76d12dbd017919ebabb1751a9dfd99b39d6
  2. Curtir
    Gabrielx17 recebeu reputação de Fabi Marzan em Problema Em Spell   
    obrigado funcionou perfeitamente, consegui enteder tambem mais ou menos por cima de como usar o else pois não sabia que existia elseif!
    obrigado funcionou perfeitamente! e obrigado por me falar onde estava o erro consegui compreender mais ou menos pois não sabia que existia o elseif!
  3. Gostei
    Gabrielx17 recebeu reputação de L3K0T em Problema Em Spell   
    obrigado funcionou perfeitamente, consegui enteder tambem mais ou menos por cima de como usar o else pois não sabia que existia elseif!
    obrigado funcionou perfeitamente! e obrigado por me falar onde estava o erro consegui compreender mais ou menos pois não sabia que existia o elseif!
  4. Obrigado
    Gabrielx17 deu reputação a L3K0T em Problema Em Spell   
    local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -135.8, 0, -140.9, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, COLOR_RED) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -170.8, 0, -175.9, 0) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -150.8, 0, -155.9, 0) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end function yagai1(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 399) end end function yagai2(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+2, y=getThingPosition(getCreatureTarget(cid)).y+2, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 411) end end function yagai3(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 398) end end function yagai4(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+2, y=getThingPosition(getCreatureTarget(cid)).y+2, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 396) end end function yagai5(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 438) end end function yagai6(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = {x=getThingPosition(getCreatureTarget(cid)).x+2, y=getThingPosition(getCreatureTarget(cid)).y+2, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position, 439) end end function onCastSpell(cid, var) local waittime = 3.0 -- Tempo de exhaustion local storage = 143512 -- não mecha local storage2 = 55512 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") return false end local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3} if getPlayerStorageValue(cid, storage2) == 5 then addEvent(onCastSpell2, 650, parameters) addEvent(yagai3, 50, cid) addEvent(yagai4, 650, cid) elseif getPlayerStorageValue(cid, storage2) == 4 then addEvent(onCastSpell2, 650, parameters) addEvent(yagai3, 50, cid) addEvent(yagai4, 650, cid) elseif getPlayerStorageValue(cid, storage2) == 3 then addEvent(onCastSpell3, 650, parameters) addEvent(yagai5, 50, cid) addEvent(yagai6, 650, cid) else addEvent(onCastSpell1, 650, parameters) addEvent(yagai1, 50, cid) addEvent(yagai2, 650, cid) end exhaustion.set(cid, storage, waittime) return true end erro: 
    function onCastSpell(cid, var) não tava fechada
  5. Obrigado
    Gabrielx17 deu reputação a Fabi Marzan em Problema Em Spell   
    Comecei a olhar seu código e você tinha um END demais.
     
    local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -135.8, 0, -140.9, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, COLOR_RED) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -170.8, 0, -175.9, 0) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -150.8, 0, -155.9, 0) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end function yagai1(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 1, y = getThingPosition(getCreatureTarget(cid)).y, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 399) end end function yagai2(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 2, y = getThingPosition(getCreatureTarget(cid)).y + 2, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 411) end end function yagai3(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 1, y = getThingPosition(getCreatureTarget(cid)).y, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 398) end end function yagai4(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 2, y = getThingPosition(getCreatureTarget(cid)).y + 2, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 396) end end function yagai5(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 1, y = getThingPosition(getCreatureTarget(cid)).y, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 438) end end function yagai6(cid) if isCreature(cid) and isCreature(getCreatureTarget(cid)) then local position = { x = getThingPosition(getCreatureTarget(cid)).x + 2, y = getThingPosition(getCreatureTarget(cid)).y + 2, z = getThingPosition(getCreatureTarget(cid)).z } doSendMagicEffect(position, 439) end end function onCastSpell(cid, var) local waittime = 3.0 -- Tempo de exhaustion local storage = 143512 -- não mecha local storage2 = 55512 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") return false end local parameters = {cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3} if getPlayerStorageValue(cid, storage2) == 5 then addEvent(onCastSpell2, 650, parameters) addEvent(yagai3, 50, cid) addEvent(yagai4, 650, cid) elseif getPlayerStorageValue(cid, storage2) == 4 then addEvent(onCastSpell2, 650, parameters) addEvent(yagai3, 50, cid) addEvent(yagai4, 650, cid) elseif getPlayerStorageValue(cid, storage2) == 3 then addEvent(onCastSpell3, 650, parameters) addEvent(yagai5, 50, cid) addEvent(yagai6, 650, cid) else addEvent(onCastSpell1, 650, parameters) addEvent(yagai1, 50, cid) addEvent(yagai2, 650, cid) end exhaustion.set(cid, storage, waittime) return true end  
  6. Obrigado
    Gabrielx17 deu reputação a KotZletY em Tutorial 2 em 1 - Magic e Shoot Effects   
    Bom galera, o Tópico já diz tudo, irei explicar como mudar para Uint16 dessa vez nas Source, para quem não sabe. Irei explicar como aumentar em Magic Effects, para assim você seu Server usar mais de 255, e ShootEffects para usar mais de 41 Distance efeitos(muito mais). Existe Tópicos no Tk, porém não é a mesma coisa, esse é diferente pois você irá alterá o valor dos uint's disparados para o Client, para assim então usar além do Padrão!
      Abaixo umas informações essenciais ! 
    Esse Tópico é especifico para TFS 0.4, para que assim você possa aumentar o limite de efeitos no Client, e usar mais de 255 efeitos, e mais de 41 efeitos em Distância.  Vale lembra também que você não é obrigado a mudar em ambos, se você quiser apenas aumentar o Limite de Efeitos para mais de 255, então mude apenas ele, caso queria aumentar apenas os Efeitos que são lançados a distância(ShootEffects ou Distance Effects), caso queria os dois, use ambos. 
     
    Vamos começar primeiramente com os Magic Effects:
     
     
     
    Agora vamos mudar o ShootEffects para uint16.
     
     
    Bom não adianta mudar isso se não fizer alteração no Client, então deixarei aqui, dois Tópicos de como mudar de uint8 para uint16 no Client em em ShootEffects e MagicEffect.
     
     
    Mudando os Efeitos de uint8 a 16 para Magic Effects
    Mudando os Efeitos de uint8 a 16 para Shoot Effects
     
    Então é isso ae, qualquer erro só comentar para que eu possar tentar ajudar.
     
    Tópico exclusivo do Tk, proibido posta em outro site, blog ou fórum! 
     
    xD
  7. Gostei
    Gabrielx17 deu reputação a L3K0T em Compilando o OTClient Mehah no Visual Studio 2022   
    Bem-vindo ao tutorial sobre como compilar o OTClient Mehah no Visual Studio 2022! Neste tutorial, vou guiá-lo pelo processo de configuração do ambiente de desenvolvimento e compilação do OTClient Mehah no Visual Studio 2022
     
     
    Tutorial: Compilando o OTClient Mehah no Visual Studio 2022
     
     
    Passo 1:  Downloads necessários baixe todos primeiro
     
    Visual Studio 2022 Comunidade:
    Faça o download:  https://visualstudio.microsoft.com/pt-br/downloads/


     
     
    Microsoft Visual C++ Redistributable 2015-2022: 
    Download:  32bits: https://aka.ms/vs/17/release/vc_redist.x86.exe  ou 64 bits: https://aka.ms/vs/17/release/vc_redist.x64.exe
     
     
    Git: Se ainda não tiver o Git instalado, faça o download: https://git-scm.com/download/win
     

     
     
    Passo 2: Instalando abra o visual studio 22 ai quando chegar nessa tela você marca essas opções e desmarca as outras:
     

     

     
     
    instalando o git, pode só dar next até o final...
     

     
    instalando o Microsoft Visual C++ Redistributable 2015-2022
    abra seu powershell
     
    digite os comando 1 por vez:
     
    git clone https://github.com/Microsoft/vcpkg  
    cd vcpkg  
    .\bootstrap-vcpkg.bat  
     
    bibliotecas 64bits referente ao seus sistema
      .\vcpkg install boost-iostreams:x64-windows boost-asio:x64-windows boost-system:x64-windows boost-variant:x64-windows boost-lockfree:x64-windows luajit:x64-windows glew:x64-windows boost-filesystem:x64-windows boost-uuid:x64-windows physfs:x64-windows openal-soft:x64-windows libogg:x64-windows libvorbis:x64-windows zlib:x64-windows opengl:x64-windows openssl:x64-windows liblzma:x64-windows nlohmann-json:x64-windows protobuf:x64-windows  
    bibliotecas 32bits referente ao seus sistema
      .\vcpkg install boost-iostreams:x86-windows boost-asio:x86-windows boost-system:x86-windows boost-variant:x86-windows boost-lockfree:x86-windows luajit:x86-windows glew:x86-windows boost-filesystem:x86-windows boost-uuid:x86-windows physfs:x86-windows openal-soft:x86-windows libogg:x86-windows libvorbis:x86-windows zlib:x86-windows opengl:x86-windows openssl:x86-windows liblzma:x86-windows nlohmann-json:x86-windows protobuf:x86-windows  
    por final:
    .\vcpkg integrate install
     
     
    Download cliente mehah versão nova: https://github.com/mehah/otclient
     
    Agora só abrir o projeto pelo visual studio e clica compilar que vai configura tudo certinho e vai compilar
     


     
     
     
  8. Você Tentou
    Gabrielx17 deu reputação a L3K0T em Storage Temporaria Em Spell   
    logout:
     
    local storage = 55512 -- Storage para controlar a spell local stages = {20, 30, 40} -- Tempos de duração para cada estágio em segundos local remainingTime = exhaustion.get(cid, storage) -- Obtém o tempo restante da spell local stage = 1 for i, stageDuration in ipairs(stages) do if remainingTime <= stageDuration then stage = i break end remainingTime = remainingTime - stageDuration end -- Salva o estágio e o tempo restante da spell no storage do jogador setPlayerStorageValue(cid, storage, stage) exhaustion.set(cid, storage, remainingTime)  
     
    login
     
    local storage = 55512 -- Storage para controlar a spell local stages = {20, 30, 40} -- Tempos de duração para cada estágio em segundos local remainingTime = getPlayerStorageValue(cid, storage) or 0 -- Obtém o tempo restante da spell do storage local stage = 1 -- Determina o estágio com base no tempo restante for i, stageDuration in ipairs(stages) do if remainingTime <= stageDuration then stage = i break end remainingTime = remainingTime - stageDuration end -- Restaura o estágio da spell para o jogador setPlayerStorageValue(cid, storage, stage) exhaustion.set(cid, storage, remainingTime)  
     
    spells
     
    function onCastSpell(cid, var) local storage = 55512 -- Storage para controlar a spell local stage = getPlayerStorageValue(cid, storage) or 0 -- Obtém o estágio atual da spell, se não houver nenhum, assume 0 local waittimes = {20, 30, 40} -- Tempos de espera para cada estágio em segundos if stage > 0 then doPlayerSendCancel(cid, "Você já está sob o efeito da spell.") return false end if not isCreature(cid) then return false end -- Definir o estágio inicial da spell setPlayerStorageValue(cid, storage, 1) stage = 1 -- Função para avançar para o próximo estágio após o término do atual local function advanceStage() if stage < #waittimes then stage = stage + 1 setPlayerStorageValue(cid, storage, stage) -- Programar o próximo avanço de estágio addEvent(advanceStage, waittimes[stage] * 1000) else -- Resetar a storage quando todos os estágios terminarem setPlayerStorageValue(cid, storage, -1) end end -- Iniciar o avanço de estágio addEvent(advanceStage, waittimes[stage] * 1000) -- Definir a exhaustion e aplicar os efeitos iniciais da spell local waittime = waittimes[1] -- Definir o tempo de exhaustion baseado no primeiro estágio exhaustion.set(cid, storage, waittime) OpenGate(cid, Select_Stages(getCreatureOutfit(cid).lookType), 1) -- Definir a storage de volta para -1 após o término do efeito da spell addEvent(function() setPlayerStorageValue(cid, storage, -1) end, waittime * 1000) -- Convertendo segundos para milissegundos return true end

     
  9. Curtir
    Gabrielx17 deu reputação a L3K0T em Storage Temporaria Em Spell   
    local storage = 55512 -- Storage para controlar a spell local stage = getPlayerStorageValue(cid, storage) if stage and stage > 0 then local waittimes = {20, 30, 40, 50} -- Tempos de espera para cada estágio em segundos local remainingTime = (waittimes[stage] - (os.time() - getPlayerStorageValue(cid, storage .. "time"))) -- Tempo restante em segundos if remainingTime > 0 then addEvent(function() doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você está sob o efeito do estágio " .. stage .. " da spell.") end, 1000) addEvent(function() setPlayerStorageValue(cid, storage, -1) end, remainingTime * 1000) -- Definir a storage de volta para -1 após o término do efeito da spell end end coloca no login.lua ^^^^^^^
    function onCastSpell(cid, var) local storage = 55512 -- Storage para controlar a spell local stage = getPlayerStorageValue(cid, storage) or 0 -- Obtém o estágio atual da spell, se não houver nenhum, assume 0 local waittimes = {20, 30, 40, 50} -- Tempos de espera para cada estágio em segundos -- Verificar se o jogador já usou a spell if stage > 0 then doPlayerSendCancel(cid, "Você já está sob o efeito da spell.") return false end if not isCreature(cid) then return false end -- Definir o estágio inicial da spell setPlayerStorageValue(cid, storage, 1) stage = 1 local function advanceStage() if isPlayerLoggedIn(cid) then -- Verificar se o jogador está logado antes de avançar de estágio if stage < #waittimes then stage = stage + 1 setPlayerStorageValue(cid, storage, stage) -- Programar o próximo avanço de estágio addEvent(advanceStage, waittimes[stage] * 1000) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você avançou para o estágio " .. stage .. " da spell.") else -- Resetar a storage quando todos os estágios terminarem setPlayerStorageValue(cid, storage, -1) end else -- O jogador desconectou, interromper o avanço de estágio setPlayerStorageValue(cid, storage, stage) -- Salvar o estágio atual end end addEvent(advanceStage, waittimes[stage] * 1000) local waittime = waittimes[1] -- Definir o tempo de exhaustion baseado no primeiro estágio exhaustion.set(cid, storage, waittime) OpenGate(cid, Select_Stages(getCreatureOutfit(cid).lookType), 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você está sob o efeito do estágio 1 da spell.") addEvent(function() setPlayerStorageValue(cid, storage, -1) end, waittime * 1000) -- Convertendo segundos para milissegundos return true end spells.luaa
  10. Obrigado
    Gabrielx17 deu reputação a L3K0T em Storage Temporaria Em Spell   
    function onCastSpell(cid, var) local storage = 55512 -- Storage para controlar a spell local stage = getPlayerStorageValue(cid, storage) or 0 -- Obtém o estágio atual da spell, se não houver nenhum, assume 0 local waittimes = {20, 30, 40} -- Tempos de espera para cada estágio em segundos if stage > 0 then doPlayerSendCancel(cid, "Você já está sob o efeito da spell.") return false end if not isCreature(cid) then return false end -- Definir o estágio inicial da spell setPlayerStorageValue(cid, storage, 1) stage = 1 -- Função para avançar para o próximo estágio após o término do atual local function advanceStage() if stage < #waittimes then stage = stage + 1 setPlayerStorageValue(cid, storage, stage) -- Programar o próximo avanço de estágio addEvent(advanceStage, waittimes[stage] * 1000) else -- Resetar a storage quando todos os estágios terminarem setPlayerStorageValue(cid, storage, -1) end end -- Iniciar o avanço de estágio addEvent(advanceStage, waittimes[stage] * 1000) -- Definir a exhaustion e aplicar os efeitos iniciais da spell local waittime = waittimes[1] -- Definir o tempo de exhaustion baseado no primeiro estágio exhaustion.set(cid, storage, waittime) OpenGate(cid, Select_Stages(getCreatureOutfit(cid).lookType), 1) -- Definir a storage de volta para -1 após o término do efeito da spell addEvent(function() setPlayerStorageValue(cid, storage, -1) end, waittime * 1000) -- Convertendo segundos para milissegundos return true end  
  11. Obrigado
    Gabrielx17 deu reputação a L3K0T em Storage Temporaria Em Spell   
    function onCastSpell(cid, var) local waittime = 310 -- Tempo de exhaustion local storage = 55512 -- Storage para controlar a spell -- Verificar se o jogador já usou a spell if getPlayerStorageValue(cid, storage) > 0 then if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") end return false end if not isCreature(cid) then return false end exhaustion.set(cid, storage, waittime) setPlayerStorageValue(cid, storage, 1) if not (getCreatureCondition(cid, CONDITION_ATTRIBUTES, 50) or getCreatureCondition(cid, CONDITION_HASTE, 51) or getCreatureCondition(cid, CONDITION_REGENERATION, 52)) then OpenGate(cid, Select_Stages(getCreatureOutfit(cid).lookType), 1) -- Definir a storage de volta para -1 ou 0 após o término do efeito da spell addEvent(function() setPlayerStorageValue(cid, storage, -1) -- Pode ser -1 ou 0 aqui end, waittime * 1000) -- Convertendo segundos para milissegundos return true else doPlayerSendCancel(cid, "Você já está transformado.") return false end end  
  12. Gostei
    Gabrielx17 recebeu reputação de L3K0T em Storage Temporaria Em Spell   
    sobre o script, tipo eu queria q depois q acabasse a spell voltasse pra -1 ou para 0 a storage pode ser qualquer um dos dois 0 ou -1, não sei se teria como. é uma spell de buff.
    vejo q você sempre esta ajudando aqui no TK inclusive ja me ajudou muito, não vejo ninguem mais ajudando alem de voce. vou deixar meu rep+ pra voce, sempre ta online ajudando a comunidade, vc é minha esperança😄.
  13. Curtir
    Gabrielx17 deu reputação a L3K0T em Storage Temporaria Em Spell   
    function onCastSpell(cid, var) local waittime = 310 -- Tempo de exhaustion local storage = 55512 -- Storage para controlar a spell -- Verificar se o jogador já usou a spell if getPlayerStorageValue(cid, storage) > 0 then if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") end return false end if (not isCreature(cid)) then return false end exhaustion.set(cid, storage, waittime) setPlayerStorageValue(cid, storage, 1) if not (getCreatureCondition(cid, CONDITION_ATTRIBUTES, 50) or getCreatureCondition(cid, CONDITION_HASTE, 51) or getCreatureCondition(cid, CONDITION_REGENERATION, 52)) then OpenGate(cid, Select_Stages(getCreatureOutfit(cid).lookType), 1) return true else doPlayerSendCancel(cid, "Você já está transformado.") return false end end  
  14. Gostei
    Gabrielx17 deu reputação a xWhiteWolf em (Resolvido)[Ajuda] Como fazer magias "vip"   
    faz as duas numa só igual eu falei e ao invés de colocar retorn = tal coisa vc coloca só todos os combats
     
    local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.xcombat1, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.xcombat2, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, parameters.xcombat3, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, xcombat1 = xcombat1, xcombat2 = xcombat2, xcombat3 = xcombat3, combat1 = combat1, combat2 = combat2, combat3 = combat3} if getPlayerStorageValue(cid, config.storageativ) == 1 thenaddEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 500, parameters) addEvent(onCastSpell3, 600, parameters) else addEvent(onCastSpell4, 100, parameters) addEvent(onCastSpell5, 500, parameters) addEvent(onCastSpell6, 600, parameters) end return true end Espero que ajude.
  15. Gostei
    Gabrielx17 deu reputação a Mask Ghoul em System Elo   
    Uhum, Eu tenho interessante , Vou criar o sistema elo instalação OTX e TFS 0.4. Me apoie :D
  16. Obrigado
    Gabrielx17 deu reputação a H3ITORR em [Source] Trocar nome das Skills   
    Hoje vim trazer como trocar o nome das skills na source!!
    eu estava procurando como fazer isso mas nunca tinha achado
    então resolvi eu mesmo mexer e consegui achar e estou trazendo para vocês!
    já que eu consegui e vi vários querendo e não conseguem vim trazer a solução do tal You advanced to ou You advanced from
    Versão para TFS 0.4 
     
    Abra seu Dev C++ source e vá em Player.cpp e procure por!
    char advMsg[50]; sprintf(advMsg, "You advanced to magic level %d.", magLevel); sendTextMessage(MSG_EVENT_ADVANCE, advMsg); substitua por: ou do jeito que vocês preferirem com o nome do tal!
    char advMsg[50]; sprintf(advMsg, "You advanced to taijutsu %d.", magLevel); sendTextMessage(MSG_EVENT_ADVANCE, advMsg); Agora vá em Tools.cpp e procure por!
    std::string getSkillName(uint16_t skillId, bool suffix/* = true*/) logo abaixo terá isso!
    switch(skillId) { case SKILL_FIST: { std::string tmp = "fist"; if(suffix) tmp += " fighting"; return tmp; } case SKILL_CLUB: { std::string tmp = "club"; if(suffix) tmp += " fighting"; return tmp; } case SKILL_SWORD: { std::string tmp = "sword"; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_AXE: { std::string tmp = "axe"; if(suffix) tmp += " fighting"; return tmp; } case SKILL_DIST: { std::string tmp = "distance"; if(suffix) tmp += " fighting"; return tmp; } case SKILL_SHIELD: return "shielding"; case SKILL_FISH: return "fishing"; case SKILL__MAGLEVEL: return "magic level"; case SKILL__LEVEL: return "level"; default: break; } substitua por: ou do jeito que vocês preferirem com o nome do tal!
    switch(skillId) { case SKILL_FIST: { std::string tmp = ""; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_CLUB: { std::string tmp = "glove"; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_SWORD: { std::string tmp = "sword"; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_AXE: { std::string tmp = "axe"; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_DIST: { std::string tmp = "distance"; if(suffix) tmp += " taijutsu"; return tmp; } case SKILL_SHIELD: return "defense"; case SKILL_FISH: return "fishing"; case SKILL__MAGLEVEL: return "taijutsu"; case SKILL__LEVEL: return "level"; default: break; } se quiserem mudar o nome das skills na client e só pedir que mostro como faz com prints !!!
  17. Obrigado
    Gabrielx17 deu reputação a J.L em Mudar nome do cliente otc   
    Para mudar o titulo do OTC vá em modules > Client > Client.lua & procure por g_window.setTitle Do lado será o titulo do OTC.
    Para mudar a outra parte vai em modules > client_background > background.lua & procure por clientVersionLabel, lá estará onde quer editar !
  18. Gostei
    Estive com o mesmo problema a alguns dias, procurei uma solução e encontrei este tópico.
    Após conseguir solucionar meu problema resolvi postar aqui caso alguém tenha o mesmo problema..  
     
    Se o char não está salvando as skills é porque provavelmente não existem os registros em players_skills, então vamos adicionar.
     
    1º) Vamos achar o ID do player:
     Em seu banco de dados vá até a tabela players e clique em pesquisar, localizado na parte superior da pagina (IMAGEM DE UMA LUPA).  No bloco "name" digite o nome do player bugado e aperte enter pra executar.  Agora basta pegar o ID que é oque precisamos..  2º) Executando query:
    Clique em seu banco de dados novamente para voltar a todas as tabelas em seguida iremos em SQL localizado na parte superior da tela. Substitua onde tem ID pelo id do player que acabamos de buscar e execute a query. INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES (ID, 0, 10, 0), (ID, 1, 10, 0), (ID, 2, 13, 60), (ID, 3, 10, 0), (ID, 4, 10, 0), (ID, 5, 11, 25), (ID, 6, 10, 0);  
    Omeu ficou desse jeito: INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES (18, 0, 10, 0), (18, 1, 10, 0), (18, 2, 13, 60), (18, 3, 10, 0), (18, 4, 10, 0), (18, 5, 11, 25), (18, 6, 10, 0);  
  19. Curtir
    Gabrielx17 deu reputação a Developer Berg em (Resolvido)[DUVIDA] Sobre o limite de sprites   
    tenta esse tutorial ae
     
  20. Gostei
    Gabrielx17 deu reputação a luanluciano93 em Ajuda com Hearty System   
    function onKill(cid, target) if isPlayer(cid) and isPlayer(target) then if getPlayerIp(cid) ~= getPlayerIp(target) then if getPlayerLevel(target) >= 80 then local heart = doPlayerAddItem(cid, 5943, 1) if heart then doItemSetAttribute(heart, "name", "" .. getPlayerName(target) .. " Heart's") doItemSetAttribute(heart, "description", "Killed at Level ".. getPlayerLevel(target) .." by ".. getPlayerName(cid) ..". " .. (getCreatureSkullType(cid) <= SKULL_GREEN and "(Unjustified)" or "(Justified)")) end end elseif getPlayerIp(cid) == getPlayerIp(target) then doPlayerAddExp(cid, -10000) end end return true end  
  21. Gostei
    Gabrielx17 deu reputação a DukeeH em Database nova   
    8.6 provavelmente é o 0.4
    Pode pegar ali no link que passei do 0.4
  22. Gostei
    Gabrielx17 deu reputação a KotZletY em STUN (PARALYZE)   
    @xdas magias(jutsus) como esses já existe em muitos aqui no fórum, sempre pesquise antes de postar, talvez alguém já postou ou pediu o que você está querendo. 
     
     
    Esse meu comentário, nele tem o script que você quer! 
  23. Gostei
    Gabrielx17 deu reputação a KotZletY em (Resolvido)[PEDIDO] Cooldown em uma spell   
    @dersinho não não meu camarada, qual foi o pedido do tópico ? Então, fiz o que estava no tópico, apenas, mas caso ele queira outra alteração é só comentar, sou meio old school, gosto de tudo explicado e explicito, hahaha.
    Além do mais outros membros o ajudaram com outras duvidas recorrentes.
     
    @Mateus Santosss esse mokuton prision é um que fiz a algum tempo, funciona da maneira que você quer.
     
    A forma de add exhaustion em outras spells é como o ZikaLord falou, porém o exhaustion.set é adicionado quando a parte final do script esteja sendo executada, na hora de lançar effect e etc....
     
  24. Gostei
    Gabrielx17 deu reputação a KotZletY em STUN (PARALYZE)   
    @xdas não cara, você pegou o errado, você deve esperar minha resposta carregar 100%, você voltou para a primeira pagina e pegou o script errado:
     
  25. Gostei
    Gabrielx17 deu reputação a Yan Liima em (Resolvido)Ajuda site Modern tfs 0.4 DBO   
    @OrientalzVai no arquivo que te falei e substitui:
    function generate_recovery_key() { $this->load->helper("form"); $ide = new IDE; $ide->requireLogin(); $this->load->model("Account_model");  
    POR:
    function generate_recovery_key() { $this->load->helper("form"); $ide = new IDE; $ide->requireLogin(); $this->load->model("Account_model"); if($this->Account_model->getRecoveryKey($_SESSION['name'])) { alert("<b>You can't generate a new KEY</b>"); return false; }  

Informação Importante

Confirmação de Termo