-
Total de itens
23 -
Registro em
-
Última visita
Sobre Entus
Informações
-
Forma que conheci o xTibia
Otservs
-
Sou
Scripter
Últimos Visitantes
873 visualizações
Entus's Achievements
-
Queria saber se nesse fórum existe aulas de scripting e se tem vaga, não sei se poderia postar aqui mas postei (AHUHUAHU)
-
Não sei se posso fazer essa pergunta aqui, se não puder, me avise. Alguém aí sabe por que o membro Vodkart foi banido? Sou meio newfag no xtibia ainda.
-
Ah, eu testei em Tfs 1.0, vou fazer um mais elaborado e te mando no PM. Até!
-
Sim, para cada!
-
Fiz rápido, bem simples porém creio que funcione. Crie um arquivo chamado goldenpaper.lua em data/actions/scripts e coloque isso: function onUse(cid, item, fromPosition, toPosition) local voc = {1} --id da vocação local scroll = {} --id do item local efeito = {} -- efeito if item.uid == scroll then doPlayerSetVocation(cid, voc) doSendMagicEffect(cid, efeito) end return true end Agora em actions.xml, adicione essa tag: <action actionid="id do item" script="goldenpaper.lua"/>
-
Como eu disse, para saber mais sobre como criar um mob é só dar uma procurada! Tem vários tutoriais ensinando passo a passo.
-
esse não foi eu, é um antigo que achei pelo PC. Não vi nenhum parecido aqui no fórum e resolvi postar.
-
action Jail/Prision System - Sistema de prisão
um tópico no fórum postou Entus Actions e Talkactions
Falaê, vi esse script em outro fórum porém tava meio bugado e fiz algumas alterações, pequenas mas que ajudaram no funcionamento. Quando prende o player ele não fica mais em um local fixo, você pode configurar para coloca-lo em outras celas. O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico. OBS: O tempo é posto em segundos. (120 segundos = 2 minutos) TAG, talkaction.xml: <talkaction log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prision.lua"/> Script, data/talkaction/prision.lua: grouprequired = 3 jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 local jailpos = { [1] = {x = 59, y = 52, z =6}, [2] = {x = 59, y = 52, z =5}, [3] = {x = 55, y = 47, z =6}, [4] = {x = 55, y = 47, z =5}, [5] = {x = 55, y = 52, z =6}, [6] = {x = 55, y = 52, z =5}, [7] = {x = 59, y = 47, z =5}, [8] = {x = 63, y = 52, z =5} } local unjailpos = { x = 63, y = 54, z =6 } jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você saiu da cadeia, tente não fazer coisas malvadas da próxima vez para não ser preso novamente. Cuide-se amigo.') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end local jail_time = -1 for word in string.gmatch(tostring(t[1]), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(t[1]) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+3)) end end end local default_jail = 30 if(t[2]) then default_jail = t[2] end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if (words == '!prender' or words == '/prender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos[math.random(#jailpos)], TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você prendeu o player: '.. getCreatureName(isplayer) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage (isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce foi preso por '.. getCreatureName(cid) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end elseif (words == '!desprender' or words == '/desprender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then if getPlayerStorageValue(isplayer, jailedstoragevalue_bool) == 1 then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'O player '.. getCreatureName(cid) ..' te tirou da prisão. Te vejo em breve!!!') doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você tirou da prisão o player: '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não está preso.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end end return true end Configuração: local jailpos = { -- Local das selas onde o player vai aparecer. local unjailpos = { x = 63, y = 54, z =6 } -- Local onde ele irá sair. local default_jail = 30 -- Tempo padrão. Créditos: Comedinha, por postar pela primeira vez. Eu, por arrumar alguns bugs. Enjoy it! -
Falaê galera. Hoje vou trazer um script do Wise que achei bem interessante e não achei aqui. O que isso faz? Faz com que o player necessite se alimentar para parar de perder vida, caso não se alimente, sua vida irá descer até 0. Caso o player morra, quando entrar, ele vai continuar perdendo a porcentagem de HP, até que enfim se alimente. Acredito que seja bom para servidores sérios. Versões testadas: TFS 0.3.6, mas pelas funções, acho que execute de boa também com TFS 1.0 e com o TFS 0.4. Bora lá. Vá em data\creaturescripts\scripts, crie um .lua chamado checkhunger e adicione isso: -- Developed by Wise local t = { hp = 2, -- % maxTime = 25 * 60, -- minutes * 60 lossInterval = 5, -- seconds hstor = 98765 -- hunger storage } function checkHunger(cid) local h = getPlayerStorageValue(cid, t.hstor) local loss = t.lossInterval > 1 and t.lossInterval or 2 if getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBEATTACKED) then return true elseif getPlayerFood(cid) < 1 then if h <= t.maxTime then if h < 0 then setPlayerStorageValue(cid, t.hstor, 0) end setPlayerStorageValue(cid, t.hstor, getPlayerStorageValue(cid, t.hstor) + 1) else addEvent(function() if isPlayer(cid) then doCreatureAddHealth(cid, -(t.hp * (getCreatureMaxHealth(cid) / 100))) end end, (loss - 1) * 1000) end else if h > 0 then setPlayerStorageValue(cid, t.hstor, 0) end end addEvent(function() if isPlayer(cid) then checkHunger(cid) end end, 1000) return true end function onLogin(cid) return checkHunger(cid) and true end Agora vá em data\creaturescripts e abra o creaturescripts.xml, adicione a seguinte tag: <event type="login" name="checkHunger" event="script" value="checkhunger.lua"/> Configuração: local t = { hp = 2, -- porcentagem de HP que o player perderá maxTime = 25 * 60, -- tempo máximo para ficar sem se alimentar em minutos * 60 (no caso, seriam 25 minutos, ou seja, 1500 segundos) lossInterval = 5, -- tempo do intervalo de perda da porcentagem do HP, em segundos (no caso, perderia a porcentagem estipulada a cada 5 segundos) hstor = 98765 -- storage que faz a contagem do tempo máximo } Créditos: Wise Enjoy it!
- 1 resposta
-
- suicidehunger
- system
- (e 2 mais)
-
Fala aí gurizada. Hoje vou trazer um script que não tenho visto muito em ot's 8.54, ou em qualquer outra versão, e eu acho ele bem útil para Druid/Sorcerer. OBJETIVO: Curar um amigo, ou seja, vamos usar um exemplo. Quero curar meu amigo que está com a vida baixa, vou usar o comando Ultra Heal "Amigo. Ok, vamos ao script. Em data/spells/scripts crie um arquivo com o nome de healaamigo.lua e dentro coloque: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_PINK) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 10, 10, 16, 22) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Depois de ter feito isto abra o spells.xml e coloque embaixo de uma spell a seguinte linha: <instant name="Ultra Heal" words="ultra heal" lvl="50" mana="200" prem="0" aggressive="0" needtarget="1" params="1" exhaustion="1000" groups="2,1000" icon="84" needlearn="0" event="script" value="healing/healaamigo.lua"> <vocation id="2"/> <vocation id="6"/> </instant> Eu coloquei para Druid e Sorcerer usarem, caso queira que mais vocations tenham essa spell é só colocar os ids delas. Espero que usem. Enjoy it!
-
Coé xtibianos. Vi que alguns membros do fórum estavam com uma dúvida e não vi nenhum post sobre isso, decidi fazer um aqui. A galera tava com um bug na script e blá blá. OBJETIVO: Fazer com que o mob, ao morrer, deixe um teleporte por um tempo (configurável) e que esse teleporte leve para tal lugar (configurável). Vamos ao Script: IREMOS USAR O MOB KYUUBI/CHAKRA BIJUU COMO EXEMPLO! Primeiro de tudo vá em data/monster e adicione o chakrabijuu.xml <?xml version="1.0" encoding="UTF-8"?><monster name="The Chakra Bijuu Control" nameDescription="The Chakra Bijuu Control" race="blood" experience="8000" speed="450" manacost="0"> <health now="76065000" max="76065000"/> <look type="124" head="0" body="94" legs="79" feet="79" corpse="2815"/> <targetchange interval="5000" chance="50"/> <strategy attack="90" defense="20"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="1"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="65"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="800" min="-550" max="-640"/> <attack name="manadrain" interval="1000" chance="10" range="7" min="-760" max="-815"> <attribute key="areaEffect" value="redshimmer"/> </attack> <attack name="Bijuu Furie" interval="1000" chance="100" radius="4" target="0" min="-8340" max="-10600"> </attack> <attack name="Bijuu Punch" interval="2000" chance="100" target="0" min="-8440" max="-10100"> </attack> <attack name="Biju Dama" interval="2000" chance="100" target="0" min="-10440" max="-13100"> </attack> </attacks> <defenses armor="110" defense="110"> <defense name="healing" interval="2000" chance="40" min="300" max="300"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="4000" chance="40" speedchange="600" duration="4000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> <elements> <element physicalPercent="20"/> <element icePercent="10"/> <element holyPercent="-15"/> <element deathPercent="35"/> </elements> <immunities> <immunity poison="1"/> <immunity lifedrain="1"/> <immunity outfit="1"/> <immunity drunk="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence=".." yell="1"/> </voices> <loot> </loot> <script> <event name="the bijuu chakra control"/> </script> </monster> (PARA SABER MAIS SOBRE COMO CRIAR UM MOB, DÊ UMA PROCURADA HEHEHEH) Depois de ter feito isso, vá em monster.xml e adicione a tag: <monster name="The Chakra Bijuu Control" file="pasta/chakrabijuu.xml"/> Agora vá em data/creaturescripts/scripts, crie um .lua chamado chakrabijuu e adicione isso: local boss = { ["The Chakra Bijuu Control"] = {destiny = {x=174, y=2019, z=7}, time = 50, portalid = 1026} } function removePortal(pos) doRemoveThing(getTileItemById(pos, b.portalid).uid, 1) return true end function onDeath(cid) local b, pos = boss[getCreatureName(cid)], getCreaturePosition(cid) if b then doSendMagicEffect(pos, CONST_ME_TELEPORT) doCreateTeleport(b.portalid, b.destiny, pos) addEvent(removePortal, b.time*1000, pos) doCreatureSay(cid, "Eu ainda retornarei, guarde isso. O teleporte irá sumir em "..b.time.." segundos.", TALKTYPE_ORANGE_1) end return true end Em {destiny = {x=174, y=2019, z=7}, como já diz a palavra, você põem o destino do teleporte. Em time = 50, você põem o tempo que o teleporte vai ficar spawnado. Último passo, vá até data/creaturescripts, abra o creaturescripts.xml e adicione a tag: <event type="death" name="the bijuu chakra control" event="script" value="chakrabijuu.lua"/> Foi um tutorial curto mas acho que vai ajudar os membros que estavam com dúvida. Créditos: Wise Até a próxima, enjoy!!
-
@UP E se eu quiser criar muitas scrolls pra muitas vocations? Terei de fazer várias tags? Como ficaria o nome dessas scripts/tags? EX: Quero criar Naruto the last e Sasuke the last.
-
action [City War Event] Luta pela sobrevivência
tópico respondeu ao MarceloHeuheuheu de Entus em Mods, funções e outros
Aqui também!- 9 respostas
-
- city war
- maior matador
- (e 5 mais)
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.