Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/13/18 em todas áreas

  1. Novo Launcher

    victor0707 e 2 outros reagiu a Neexo por uma resposta no tópico

    3 pontos
    VirusTotal ~ Download Olá a todos os membros do Tibia King, venho aqui hoje disponibilizar um launcher para NTO. Como usar: Para utilizar o launcher basta ter o seus arquivos do servidor na pasta, o executavel do launcher é o patcher.exe Como configurar: Para configura-lo após ter extraído a pasta em qualquer área, entre na pasta neoncube e execute o neoncube.ini com qualquer editor de texto. Equipe Fire Designer - Profissional Spriter - Profissional Scripter / Programmer - 20% ~~ Estamos atras de Scripter que entenda de Tfs 1.3 OTX e 0.3.6" Caso o conteúdo foi de seu gosto, por favor não se esqueça de dar REP+
  2. Launcher AutoUpdate C#

    premii reagiu a GabrielSapient por uma resposta no tópico

    1 ponto
    Galera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai: 1. Download: • Download | • Scan 2. Oque ele faz: • Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações. • Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client. • \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\") • No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial.
  3. [CreatureEvent] Rank Militar

    Mathias Silva reagiu a Guilherme. por uma resposta no tópico

    1 ponto
    Olá galerinha do Tibia King ! Hoje vim trazer para vocês um MOD que achei muito foda. O script atribui um 'rank' militar ao player que tem certa quantidade de frags, é parecido com o REP System, bom agora vamos aos 'finalmente' ! Primeiro entre em /mods/ e crie um arquivo com o nome de ranks.xml agora coloque o código abaixo, salve e feche o arquivo. Você pode editar facilmente o nome do Rank e a quantidade de Frags necessários para obtelo seguindo o padrão: [1] - Quantidade de Frags "Private First Class" - Nome do Rank <?xml version = "1.0" encoding = "UTF-8"?> <mod name = "Military Ranks" version = "1.0" author = "Teckman" enabled = "yes"> <config name = "ranks"><![CDATA[ titles = { [5] = "Private First Class", [10] = "Specialist", [15] = "Corporal", [20] = "Sergeant", [25] = "Staff Sergeant", [30] = "Sergeant First Class", [35] = "Master Sergeant", [40] = "First Sergeant", [45] = "Sergeant Major", [50] = "Command Sergeant Major", [55] = "Sergeant Major of the Army", [60] = "Second Lieutenant", [65] = "First Lieutenant", [70] = "Captain", [75] = "Major", [80] = "Lieutenant Colonel", [90] = "Colonel", [100] = "Brigadier General", [110] = "Major General", [120] = "Lieutenant General", [140] = "General", [170] = "General of the Army" } fragsStorage = 600 ]]></config> <event type = "look" name = "ranksLook" event = "script"><![CDATA[ domodlib("ranks") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then local rank = {rank = "Private", frags = 0} for k, v in pairs(titles) do if(math.max(0, getPlayerStorageValue(thing.uid, fragsStorage)) > k - 1) then if(k - 1 > rank.frags) then rank.rank, rank.frags = v, k - 1 end end end doPlayerSetSpecialDescription(thing.uid, "\n Military rank: " .. rank.rank) end return true end ]]></event> <event type = "kill" name = "ranksKill" event = "script"><![CDATA[ domodlib("ranks") function onKill(cid, target) if(isPlayer(target)) then setPlayerStorageValue(cid, fragsStorage, math.max(0, getPlayerStorageValue(cid, fragsStorage) + 1)) if(titles[getPlayerStorageValue(cid, fragsStorage)]) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You advanced to military rank: " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. ". Congratulations " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. "!") end end return true end ]]></event> <event type = "login" name = "ranksLogin" event = "script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "ranksKill") registerCreatureEvent(cid, "ranksLook") return true end ]]></event> </mod> Os créditos do script vão para Teckman;
  4. Wand of Elements

    gabriel28 reagiu a Bruno Minervino por uma resposta no tópico

    1 ponto
    Introdução: É uma wand que ataca vários elementos aleatoriamente, porém não somente isso, você pode alterar o elemento dela com uma talkaction. Instalação: Vá até data/weapons/scripts e crie um arquivo chamando wandelementos.lua e coloque o seguinte conteúdo: local min, max = 1700,1900 --Ataque mínino e ataque máximo local w = { [1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE}, [2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE}, [3] = {ef = 46, sh = 38, dmg = COMBAT_POISONDAMAGE}, [4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE}, [5] = {ef = 47, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, [6] = {ef = 36, sh = 31, dmg = COMBAT_PHYSICALDAMAGE}, [7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE} } function onUseWeapon(cid, var) local effect = getPlayerStorageValue(cid, 4561) local target = getCreatureTarget(cid) if target ~= 0 then local wx = w[effect] or w[math.random(#w)] doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh) addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) end return true end Altere o min e max de acordo com sua necessidade. Agora vá em data/weapons/weapons.xml e coloque o seguinte conteúdo: <wand id="7424" level="100" mana="30" event="script" value="wandelementos.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5" showInDescription="0"/> <vocation id="6" showInDescription="0"/> </wand> Altere o id, level e mana de acordo com sua necessidade. Agora vamos configurar a talkaction que troca os elementos. Vá até data/talkactions/scripts e crie um arquivo chamando elementos.lua e coloque o seguinte conteúdo: local config = { wand_id = 7424, --ID da wand types = { ["all"] = -1, --Ataca os elementos aleatoriamente ["fire"] = 1, ["ice"] = 2, ["poison"] = 3, ["death"] = 4, ["energy"] = 5, ["physical"] = 6, ["holy"] = 7 } } function onSay(cid, words, param) local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid if wand_left ~= config.wand_id and wand_right ~= config.wand_id then doPlayerSendCancel(cid, "Voce deve estar equipado com uma ".. getItemNameById(config.wand_id) .." para usar este comando.") return true end if config.types[param] then setPlayerStorageValue(cid, 4561, config.types[param]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sua wand ira atacar ".. param .. ".") else local str = "" for i, _ in pairs(config.types) do str = str .. ", ".. i end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Os elementos disponiveis sao: ".. string.sub(str, 3, #str) ..".") end return true end Altere o wand_id conforme configurado em weapons. Agora vá em data/talkactions/talkactions.xml e coloque o seguinte conteúdo: <talkaction words="!elemento;/elemento" event="script" value="elementos.lua"/> Exemplo de funcionamento: https://www.youtube.com/watch?v=HHmZ1RpsrD0 Gostaria de deixar um agradecimento especial para MaXwEllDeN, pela ajuda.
  5. 1 ponto
    @DboExplorer Caso se trate de TFS 0.4, fiz um exemplo simples para você. Como não sei onde está esse item e como você está fazendo para pegar suas informações, coloquei o exemplo da talkaction como verificando os atributos do item na mão esquerda do player. Primeiramente, adicione as seguintes funções na sua lib: Para a action, você pode fazer algo como: Para a talkaction: Ao falar !addon 1, trocará para o primeiro outfit adicionado ao item lá na action, !addon 2 o segundo e por aí vai. Como disse, fiz uma forma simplificada, a partir disso você consegue implementá-lo.
  6. Como começar um server totalmente do 0

    Kahzinhuh reagiu a Hokograma por uma resposta no tópico

    1 ponto
    @Kahzinhuh Na Minha opiniao, é mais facil pegar algo ja pronto, e zerar todos arquivos que vao aparecer dentro do jogo como o word, items, vocations , etc,etc , e apagar oque nao vai usar. Ai pra voce um items.XML zerado Items.XML :https://www.4shared.com/document/2wz7FYG8ei/itemsExport.html? Scan:https://www.virustotal.com/#/url/ede511b5ae1e0839eba84e98138a5d3fdec722c5e781d58d7a5608d667dc0a1a/detection Globalevents so com as funçoes basicas https://www.4shared.com/rar/Rng1gkF2ei/globalevents.html? scan:https://www.virustotal.com/#/url/0c92813ba9b4cb4db35fc63ccbcd1952e33ed9b2152a1a2f2536ac8874a54898/detection
  7. 1 ponto
    @Hokograma voce vai usar essa ferramenta porém vai selecionar apenas o floor 7
  8. Novo Launcher

    ZoR reagiu a Neexo por uma resposta no tópico

    1 ponto
    @Brunds Como você disse, passei apenas no patcher.exe, porém nenhum vírus foi encontrado.
  9. Novo Launcher

    ZoR reagiu a Lodus por uma resposta no tópico

    1 ponto
    testei aqui usando o Avast, e não aponta nada.
  10. Novo Launcher

    ZoR reagiu a Neexo por uma resposta no tópico

    1 ponto
    @Brunds estranho, o meu não acusou em nada
  11. (Resolvido)AJUDA NO SCRIPT ERRO

    cN.FiNN reagiu a Gnius por uma resposta no tópico

    1 ponto
    Vai em data/creaturescripts/scripts crie um arquivo chamado blockl.lua Coloque isso la dentro Vai em data/creaturescripts.xml e coloque isso la dentro
  12. [HELP] Menu Colors

    akrxploit reagiu a Neexo por uma resposta no tópico

    1 ponto
    U can change this color in u style.css
  13. Script sem o bug de tirar o target e sem damage: local config = { storageID = 49609, mark_time = 10 * 60, effectWhenTeleport = 339, -- Efeito ao teleportar effectWhenUsed = 152, } local errorMsg = { pz = "Seu alvo nao pode estar fora do PZ.", playerOnly = "Voce so pode usar este jutsu em players.", alreadyMarked = "Voce ja marcou um jogador.", } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 152) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) function onCastSpell(cid, var) if isPlayer(getCreatureTarget(cid)) then if getPlayerStorageValue (cid, config.storageID) <= 0 then setPlayerStorageValue(cid, config.storageID, 1) doPlayerSendTextMessage(cid,22, "Voce marcou o player ".. getCreatureName(getCreatureTarget(cid))) target = getCreatureTarget(cid) doSendMagicEffect(getPlayerPosition(target), 152) local struct = { left = config.mark_time * 3, player = cid, target = target, var = var } addEvent(teleportIsTrue, 333, struct) else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.alreadyMarked) return false end else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.playerOnly) return false end return doCombat(cid, combat, var) end function teleportIsTrue (struct) if struct.left ~= 0 then if getPlayerStorageValue (struct.player, config.storageID) == 2 then doTeleportThing(struct.player, getThingPosition(struct.target), true) setPlayerStorageValue(struct.player, config.storageID, 0) doSendMagicEffect(getPlayerPosition(struct.player), config.effectWhenTeleport) doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") return TRUE end struct.left = struct.left - 1 addEvent (teleportIsTrue, 333, struct) elseif struct.left == 0 then doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") setPlayerStorageValue(struct.player, config.storageID, 0) else return FALSE end end
  14. Colocando fundo musical no site.

    gabirucola reagiu a jeremias por uma resposta no tópico

    1 ponto
    Olá pessoal, venho trazer um tutorial de como por fundo musical no site é um processo simples creio que todos vão conseguir executa-lo sem erros. 1° Passo: Procure pela pasta Templates do seu site abra o arquivo index.tpl com o editor. Configure o trecho de código abaixo com as informações necessárias e cole no arquivo, faça como está na imagem. <embed src = "Endereço da musica" autostart = "true" loop = "true" width = "0" height="0"> 2° Ultimo passo(Detalhes): Obrigado pela atenção, espero que seja útil o tutorial.
  15. TAG data/spells/spells.xml: <instant name="Hiraishin No Jutsu" words="hiraishin ni no dan seal" lvl="12" mana="20" prem="1" aggressive="1" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="hiraishin.lua"> <vocation id="4"/> </instant> <instant name="Hiraishin no Jutsu" words="hiraishin ni no dan" lvl="18" mana="10" prem="1" aggressive="1" params="1" exhaustion="2000" needlearn="0" event="script" value="hiraishinII.lua"> <vocation id="4"/> </instant> hiraishin.lua local config = { storageID = 49609, mark_time = 10 * 60, effectWhenTeleport = 339, -- Efeito ao teleportar effectWhenUsed = 152, } local errorMsg = { pz = "Seu alvo nao pode estar fora do PZ.", playerOnly = "Voce so pode usar este jutsu em players.", alreadyMarked = "Voce ja marcou um jogador.", } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 152) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) --local target = getThingFromPosition(variantToPosition(var), 1) if isPlayer(getCreatureTarget(cid)) then if getPlayerStorageValue (cid, config.storageID) <= 0 then setPlayerStorageValue(cid, config.storageID, 1) doPlayerSendTextMessage(cid,22, "Voce marcou o player ".. getCreatureName(getCreatureTarget(cid))) local struct = { left = config.mark_time * 3, player = cid, target = target, var = var } addEvent(teleportIsTrue, 333, struct) else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.alreadyMarked) return false end else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.playerOnly) return false end return doCombat(cid, combat, var) end function teleportIsTrue (struct) if struct.left ~= 0 then if getPlayerStorageValue (struct.player, config.storageID) == 2 then doTeleportThing(struct.player, getThingPosition(getCreatureTarget(struct.player)), true) setPlayerStorageValue(struct.player, config.storageID, 0) doSendMagicEffect(getPlayerPosition(struct.player), config.effectWhenTeleport) doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") return TRUE end struct.left = struct.left - 1 addEvent (teleportIsTrue, 333, struct) elseif struct.left == 0 then doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") setPlayerStorageValue(struct.player, config.storageID, 0) else return FALSE end end hiraishinII.lua local config = { storageID = 49609, mark_time = 6, } function onCastSpell(cid, var) --local target = getThingFromPosition(variantToPosition(var), 1) if getPlayerStorageValue (cid, config.storageID) == 1 then setPlayerStorageValue(cid, config.storageID, 2) else doPlayerSendTextMessage(cid,22, "Voce nao marcou nenhum jogador.") return false end return true end Quanto à parte de não cancelar o target não conheço muito bem, mas acredito que a própria source do OTServer ja deva cancelar quando sái da tela. Não sei se existe alguma função em LUA que mantenha o target enquanto o jogador está fora da tela.
  16. Ficou muito bom, meus parabéns amigo :D Só tem 1 coisinha: as funções de param de spells só funcionam em players então essa mensagem de playerOnly = "Voce so pode usar este jutsu em players.", nunca vai ser printada até onde eu sei. O mesmo vale para target em pz, a menos que a spell tivesse a tag agressive = "0", então vc podia excluir essa checagem e só colocar a tag na spells. Além disso, mesmo se ele executasse os prints, ele também ia executar o combat em ambos os casos pq vc não cancelou a spell após cair nesses casos em que ela não deveria ser castada, ele só não iria teleportar. else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.pz) end else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.playerOnly) end return doCombat(cid, combat, var) deveria ter um return false antes do end de cada else para você colocar o return doCombat sem checar nada no fim. Outra coisa é que o addEvent tá checando de 1 em 1 segundo, se vc usar a spell de teleportar pode ser q leve 1 segundo de delay até vc teleportar, isso pode ser mitigado se vc fazer o addEvent em 333 milisegundos e ai na função teleportisTrue vc faz pra só soltar a mensagem se for a terceira vez, ou algo assim. E faz o timeleft tb modificado. Garanto q isso iria melhorar enormemente a experiencia de soltar a magia. Essas são as minhas dicas, claro q vc não precisa aplicá-las aqui, mas é o que eu notei que poderia melhorar. Eu gostei muito da forma q vc pensou pra fazer teleportar sem precisar guardar nenhuma informação do player, eu to a tantos anos usando storage com nome do target salvo q eu confesso q fiquei um pouco engessado nessa ideia; Você pensou fora da caixa e conseguiu fazer o que vc se propôs a fazer. Meus parabéns!
  17. @hallanehallex Consegui fazer seguindo as dicas do Wolf. Hiraishin no Jutsu 2.0: Em data/spells/spells.xml cole: <instant name="Hiraishin No Jutsu" words="hiraishin ni no dan seal" lvl="12" mana="20" prem="1" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="hiraishin.lua"> <vocation id="4"/> </instant> <instant name="Hiraishin no Jutsu" words="hiraishin ni no dan" lvl="18" mana="140" prem="1" aggressive="0" params="1" exhaustion="2000" needlearn="0" event="script" value="hiraishinII.lua"> <vocation id="4"/> </instant> Em data/spells/scripts crie hiraishin.lua e cole: local config = { storageID = 49609, mark_time = 6, } local errorMsg = { pz = "Seu alvo nao pode estar fora do PZ.", playerOnly = "Voce so pode usar este jutsu em players.", alreadyMarked = "Voce ja marcou um jogador.", } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) --local target = getThingFromPosition(variantToPosition(var), 1) if isPlayer(getCreatureTarget(cid)) then if not getTilePzInfo(getThingPosition(getCreatureTarget(cid))) then if getPlayerStorageValue (cid, config.storageID) <= 0 then setPlayerStorageValue(cid, config.storageID, 1) doPlayerSendTextMessage(cid,22, "Voce marcou o player ".. getCreatureName(getCreatureTarget(cid))) local struct = { left = config.mark_time, player = cid, target = target, var = var } addEvent(teleportIsTrue, 1000, struct) else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.alreadyMarked) end else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.pz) end else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, errorMsg.playerOnly) end return doCombat(cid, combat, var) end function teleportIsTrue (struct) if struct.left ~= 0 then if getPlayerStorageValue (struct.player, config.storageID) == 2 then doTeleportThing(struct.player, getThingPosition(getCreatureTarget(struct.player)), true) setPlayerStorageValue(struct.player, config.storageID, 0) doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") return true end doPlayerSendTextMessage(struct.player,22, struct.left .. " segundos restantes.") struct.left = struct.left - 1 addEvent (teleportIsTrue, 1000, struct) elseif struct.left == 0 then doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.") setPlayerStorageValue(struct.player, config.storageID, 0) else return false end end E em hiraishinII.lua cole: local config = { storageID = 49609, mark_time = 6, } function onCastSpell(cid, var) if getPlayerStorageValue (cid, config.storageID) == 1 then setPlayerStorageValue(cid, config.storageID, 2) else doPlayerSendTextMessage(cid,22, "Voce nao marcou nenhum jogador.") end return true end
  18. 2) para pegar o nome do jogador target vc pode fazer igual em talkaction, só precisa ativar param = "1" na tag no xml e aí pegar pelo nome, semelhante ao exura sio. 3) o que faz a fala não sair é o return false. Se tiver return true o texto sai, se tiver false ele não sai. Pra falar em laranja tu coloca return false e faz a mensagem sair por doCreatureSay. Note que a função doCreatureSay tem um parametro que representa o tipo de texto, um dos tipos é o TALKTYPE_MONSTER (ou algo assim). Você pode ver todos os tipos dentro do arquivo data/lib/constant.lua e inclusive tem um tópico do Caronte sobre o constant.lua explicando várias coisas úteis lá. 4) Eu sugiro que vc troque a forma que vc fez para suportar mais de uma vocação permitida, é relativamente fácil vc só precisa mudar vocation = 4 para vocation = {4} e no check ao invés de fazer if getPlayerVocation(cid) == config.vocation then fazer if isInArray(config.vocation, getPlayerVocation(cid)) then. Dessa forma ele vai procurar se o numero da sua vocação tá dentro daquele array/vetor/tabela que é o vocation. E aí você pode fazer vocation = {4,5,8,12,250} que ele vai aceitar todas essas vocações.
  19. [GlobalEvent] Invasão diária de monstros

    gabirucola reagiu a kamex10 por uma resposta no tópico

    1 ponto
    Na pasta "data\globalevents\scripts" crie um arquivo chamado "invasion.lua" e coloque o seguinte conteudo: Laranja: Horário. Vermelho: Nome da invasão (que será falado no Broadcast). Azul: Coordenada que os monstros irão nascer. Verde: Quantidade Nome do monstro. Ou seja, as 8 horas e 14 minutos da noite irá nascer cinquenta Demons e um The Imperor na coordenada (X: 32369, Y: 32167, Z: 7) e será dito no Broadcast que iniciou a invasão The Demon Invasion. Agora volte uma pasta "data\globalevents" e adicione: <globalevent name="invasion" interval="60" event="script" value="invasion.lua"/> Obs: utilizei Quote em vez de Code para poder ilustrar com cor onde você deve modificar. Qualquer bug, duvida, sugestão, só dizer ai...
  20. Projetos no GitHub

    miqueiaspenha reagiu a Bruno Carvalho por uma resposta no tópico

    1 ponto
    Olá galera, ultimamente está saindo várias novidades para os servidores e eu estou atualizando para os brasileiros Venho aqui abrir uma lista de projetos que estão sendo desenvolvidos no GitHub e postando meus comentários... OpenTibia Server: https://github.com/opentibia/server Esse projeto estava anos parado e parece que recentemente voltou a ativa, mas não está com suporte para novas versões e atualizações são raras. OpenTibia Item-Editor: https://github.com/opentibia/item-editor Se lembram do Otitemeditor by Comedinha? ele era esse projeto só que com várias modificações minhas que recentemente eu mandei para a equipe e eles estão utilizando. The Forgotten Server 1.2: https://github.com/otland/forgottenserver Esse servidor em seu inicio gerou muita polêmica sobre quando estaria pronto para os servidores e hoje eu já posso dizer que está, ele há alguns meses foi atualizado com a maioria das funções do TFS 0.4, e quem não sonhava com isso? Um TFS que partiu do 0.2 com as funções do 0.4. Otclient: https://github.com/edubart/otclient É o melhor cliente alternativo de tibia até agora desenvolvido, com ele você pode adicionar mods, colocar coisas novas pelos creaturescripts da TFS 1.0 e da 0.4, e promete muita coisa ainda ForgottenMapEditor: https://github.com/decltype/forgottenmapeditor Já tem um tópico na área de utilitários sobre ele, mas eu aqui digo que aprovo o utilizo e ainda ajudo no desenvolvimento (não sou da equipe mas ajudo :3). Otclient object editor: https://github.com/TheSumm/otclient-strmed Não sei muito bem em qual será desenvolvido e qual será o nome mais esse cliente que também é um mod do Otclient está prometendo Znote ACC: https://github.com/Znote/ZnoteAAC Para quem achou que o projeto está parado, não. Ele agora também está no github há algum tempo Gesior ACC: https://github.com/gesior/Gesior2012 Quem achou que o Gesior tinha morrido levanta a mão \o. Ele está desenvolvendo ainda e com versões recentes Crystal Server: https://github.com/tryller/crystalserver O Tryller voltou com o projeto e está utilizando a TFS 0.4 com a versão mais recente do tibia, esse projeto promete Alissow Server: https://github.com/comedinha/Evolutions O projeto não para, ele tem atualizações demoradas mas quando tem vem coisa nova e cada vez mais compatível com a atualidade. Nele no momento estou refazendo meus scripts para funcionarem 100%. Boa parte já está pronta. Tibia Editor: https://github.com/decltype/TibiaEditor O tibia editor em sua ultima commit foi para o GitHub, eu compilei ele e funcionou 100% mas não vou focar pois estou na espera do mod para o otclient. Remere's Map Editor: https://github.com/hjnilsson/rme O famoso Remere's Map Editor voltou e agora está em open source também com um projeto no github. Tibia Outfitter: https://github.com/renatorib/tibia-outfitter Um sistema criado pelo grande @Renato onde você via php pode escolher outfits originais do tibia. O sistema é totalmente compatível com outros websites e pode-se fazer personalizações bem legais! Object Builder: https://github.com/ottools/ObjectBuilder Você pode editar os arquivos dat, spr e pic com toda a praticidade do mundo. ORTS: https://github.com/orts/server Um projeto de Tibia Global totalmente atualizado e completo. OTX Server: https://github.com/mattyx14/otxserver O OTX totalmente atualizado. Sharp Map Tracker: https://github.com/jo3bingham/sharpmaptracker Trazido pelo querido Jo3 é o melhor da categoria de map tracker. Item-Editor: https://github.com/ottools/ItemEditor Uma versão nova e com mais recursos do velho item editor. Python IP Changer: https://github.com/gugahoa/ipchanger-otbr Um IP Changer totalmente novo e open source. Conhece mais algum projeto que foi para o GitHub? Conta ae \o
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo