-
Total de itens
648 -
Registro em
-
Última visita
-
Dias Ganhos
5
Tudo que larissaots postou
-
action Porta de quest só abrir depois de matar BOSS
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à Suicide. Objetivo Esse script baseia-se em receber uma storage após que matar o boss (configurável) em que há tempo de duração para que ele possa abrir a porta da quest nesse tempo. Tutorial Vá em creaturescripts/scripts e crie um arquivo chamado morteboss.lua. local tab = { bossname = "NOME DO MONSTRO", str = {16661, 10} -- {storage, time} } function onKill(cid, target, lastHit) if(getCreatureName(target) == tab.bossname) then setPlayerStorageValue(cid, tab.str[1], os.time() + tab.str[2] * 60) end return true end login.lua registerCreatureEvent(cid, "MorteBoss") creaturescript.xml <event type="kill" name="MorteBoss" event="script" value="morteboss.lua"/> Vá em actions/scripts e crie um arquivo chamado portaboss.lua. local str = 16661 -- storage function onUse(cid, item, frompos, item2, topos) local pos = getCreaturePosition(cid) if getPlayerStorageValue(cid, str) - os.time() < 1 then return doPlayerSendCancel(cid, "Você precisa matar o BOSS para abrir essa porta.") end if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendCancel(cid, "Fique em frente a porta.") return true end doTeleportThing(cid, pos) doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE) return true end actions.xml <action actionid="ACTIONID" script="portaboss.lua"/> -
Créditos à xWhiteWolf. Objetivo É o escudo de um dragão (norse) que lança fogo nos inimigos que estão na sua frente. Como funciona Cada vez que você der use no escudo (tem que estar equipado pra funcionar) você vai soltar uma rajada de fogo: com exhaust de 1 segundo (configurável). O dano minimo, máximo e o efeito podem ser modificados aqui: -(getPlayerLevel(cid) * 2 / 3), -(getPlayerLevel(cid) * 4 / 3), 15 Dano minimo, dano máximo, efeito. Prévia Tutorial Vá em actions/scripts e crie um arquivo chamado flamethrower.lua. local up = { {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } local area1 = createCombatArea(up) local down = { {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0} } local area2 = createCombatArea(down) local left = { {0, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 1, 2, 0, 0}, {1, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } local area3 = createCombatArea(left) local right = { {0, 0, 0, 0, 0}, {0, 0, 0, 0, 1}, {0, 0, 2, 1, 1}, {0, 0, 0, 0, 1}, {0, 0, 0, 0, 0} } local area4 = createCombatArea(right) local tempo = 1 -- tempo entre 1 uso e outro local storage = 19481 function onUse(cid, item, frompos, item2, topos) if getPlayerSlotItem(cid, 5).itemid == item.itemid or getPlayerSlotItem(cid, 6).itemid == item.itemid then if not exhaustion.get(cid, storage) then exhaustion.set(cid, storage, tempo) if getPlayerLookDirection(cid) == 0 then doAreaCombatHealth(cid, 1, getThingPos(cid), area2, -(getPlayerLevel(cid) * 2 / 3), -(getPlayerLevel(cid) * 4 / 3), 15) elseif getPlayerLookDirection(cid) == 1 then doAreaCombatHealth(cid, 1, getThingPos(cid), area3, -(getPlayerLevel(cid) * 2 / 3), -(getPlayerLevel(cid) * 4 / 3), 15) elseif getPlayerLookDirection(cid) == 2 then doAreaCombatHealth(cid, 1, getThingPos(cid), area1, -(getPlayerLevel(cid) * 2 / 3), -(getPlayerLevel(cid) * 4 / 3), 15) elseif getPlayerLookDirection(cid) == 3 then doAreaCombatHealth(cid, 1, getThingPos(cid), area4, -(getPlayerLevel(cid) * 2 / 3), -(getPlayerLevel(cid) * 4 / 3), 15) end else doPlayerSendCancel(cid, "You are exhausted.") end end return true end actions.xml <action itemid="7460" script="flamethrower.lua"/>
-
Créditos à Caronte & Adriano SwaTT. Testado em TFS 0.4. Coloquei em spoiler porque o conteúdo é grande. VERSÃO 1 VERSÃO 2
-
action Sistema de elevador no próprio servidor
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à Marcelo Druida. Observações Não importa a quantidade de andares, só importa que deve partir do térreo z= 7, e não deve ser feito no subterrâneo. Use The Forgotten Server 0.3.6 crying damson. Como funciona É só entrar no piso do elevador e dizer: andar X 0 = térreo X = número do andar Tutorial Crie no mapa um local assim: Vá em talkactions/scripts e crie um arquivo elevador.lua function onSay(cid, words, param, channel) pos = getPlayerPosition(cid) pos.stackpos = 0 floor_id = getThingfromPos(pos).itemid z = (pos.z - 7) * -1 -- verifica se está no piso do elevador if floor_id == 417 and getPlayerStorageValue(cid,42000)==-1 then -- verifica se existe o parametro numero do andar, se não existir termina o codigo if (not isNumber(param)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite o numero do andar.") return false end numeroDeAndares = tonumber(param) - z -- teleporte a andares superiores if numeroDeAndares > 0 then new_pos = {x=pos.x,y=pos.y,z=pos.z-numeroDeAndares,stackpos=0} if getThingfromPos(new_pos).itemid == 416 then doSendAnimatedText(pos, "SUBINDO!!!", 180) setPlayerStorageValue(cid,42000,1) for i=1, numeroDeAndares do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z-i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Andar invalido.") return false end -- teleporte a andar inferiores elseif numeroDeAndares < 0 then setPlayerStorageValue(cid,42000,1) doSendAnimatedText(pos, "DESCENDO!!!", 180) for i=1, numeroDeAndares*-1 do addEvent(doTeleportThing,500*i,cid, {x=pos.x,y=pos.y,z=pos.z+i}, true) end addEvent(checkAndar,500,cid,param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce esta neste andar.") return false end elseif floor_id ~= 417 then doCreatureSay(cid, words .." ".. param) end return true end function checkAndar(cid, param) pos = getPlayerPosition(cid) z = (pos.z - 7) * -1 if tonumber(param) == z then doSendMagicEffect({x=pos.x,y=pos.y,z=pos.z}, CONST_ME_TELEPORT) doSendAnimatedText({x=pos.x,y=pos.y,z=pos.z}, "Andar "..tonumber(param), 180) setPlayerStorageValue(cid,42000,-1) else addEvent(checkAndar,500,cid,param) end end Adicione em talkactions/talkactions.xml a linha: <talkaction log="no" words="andar" access="0" event="script" value="elevador.lua"/> No arquivo actions/scripts/others/doors.lua. Substitua a linha 16 por: if(getItemLevelDoor(item.itemid) > 0) and getPlayerStorageValue(cid,42000)==-1 then Pronto! -
O OTX é simplesmente uma versão modificada/aprimorada do TFS. Suporte Esta versão se encontra baseada no TFS 0.3.7 e na versão do Tibia 10.31 e em versões anteriores, porém há algumas limitações devido ao cliente do Tibia de cada versão. Limitantes: ├ CoolDown System - 7.x - 8.60 (não compatível) ├ OrangeSkull System - 7.x - 8.60 (não compatível) ├ PvpBlessing - 7.x - 8.60 (não compatível) ├ Mount System - 7.x - 8.60 (não compatível) ├ DialogModals - 7.x - 8.60 - 8.70/71 - 9.60/61 (não compatível) └ Market System - 7.x - 8.60 - 8.70/71 (não compatível) Especial Esta versão inclui "Global Inbox System" (exceto 7.x). Por isso, é altamente recomendável que você use este servidor em uma versão menor que (Tibia 9.60) para que você possua um banco de dados limpo para evitar qualquer erro em depots. Requisitos: Microsoft Visual C++ 2012 - 32/64Bits: Redistributable Package Download: The OTX Server 2.9 - (Galaxy) 32/64 bits Desenvolvedores: https://code.google.com/p/otxserver/people/list Sources code: http://otxserver.googlecode.com/svn/tags/ Change logs: RME Map-Editor 7.60/70/72 / Item-Editor 7.60/70/72: RME 7.60/70/72 DataSupport / ItemEditor 7.70/72 v3 (special) Reparação importante: Path 1.0 - Classic 7x (reparacão é exclusiva para protocolos 7x, substitua os executáveis por estes) Créditos: OTX Team TFS Developers e Matheus. Nota: Usuários com Windows XP não podem usar esta compilação do OTX Server.
- 2 respostas
-
- otx server
- tibia
-
(e 1 mais)
Tags:
-
Informações: Level inicial 130 Recompensa por kill Mount's por gold Addon's por gold Sem erros no console E mais! Imagens 32 Bits Download | Scan 64 Bits Download | Scan Créditos: Demonius, Bt, Animal Park.
-
Fui postar conteúdo e pude notar que o BBCode "Download" está bugado. Poderiam arrumá-lo, por favor? E se tiver como, seria possível criarem um BBCode de Scan também? Uma sugestão: Criar botão de Download e Scan exclusivo para o xTibia, que fosse possível o uso dele em qualquer área de download e também que torna-se o uso dele obrigatório. Um exemplo de modelo: Há muitos designers bons e competentes aqui, creio que isso não seria um problema e nem um desafio. Outra sugestão caso façam a primeira: Em caso de conteúdo exclusivo para o xTibia, colocar uma cor diferente dos outros botões (justamente para destacar) e em baixo: Conteúdo exclusivo xtibia.com Obrigada!
-
Esse jogo é uma desgraça, fui tentar jogar mas não sabia onde mexer, e ainda morri lá, eu acho, dai perdi a paciência e desisti de jogar Obrigadaaa! EDIT: Agora que vi que cheguei ao limite de reputações, depois te reputo!
-
Créditos à Renato. Objetivo Simples, o player fala !sellvial e ele venderá todos os potions vazios que ele tem por X gps cada um. Testado em: 8.60 Tutorial talkactions.xml: <talkaction log="yes" words="!sellvial" access="0" event="script" value="sellvial.lua/> talkactions/scripts, crie arquivo com nome sellvial.lua e bote isso dentro: function onSay (cid, words, param, channel) local preco = 5 -- gold coins local count = getPlayerItemCount(cid, 7636) + getPlayerItemCount(cid, 7634) + getPlayerItemCount(cid, 7635) local result = count*preco if count == 0 then doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem potions para vender.") else doSendMagicEffect(getPlayerPosition(cid), 12) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você vendeu "..count.." potions por "..result.." gold coins.") doPlayerAddMoney(cid, result) return TRUE end end
-
action Exp necessária para próximo level
tópico respondeu ao larissaots de larissaots em Actions e Talkactions
Nossa, verdade! Obrigada, nem havia reparado! af -
Olá, boa noite! Gente, estava olhando a área de suporte dos scripts e, jesus, está uma confusão lá kkkkkk Minha dúvida é a seguinte: Não teria como vocês através de multimoderação (não sei se usam aqui), mover todos os tópicos sem respostas há um bom tempo? Sugestão: Teria como adicionar uma regra em que tópicos com até x dias sem respostas (sem respostas digo... que o autor do tópico não se pronunciou mais sobre) seria considerado como resolvido, fechado e movido à área de tópicos resolvidos? Porque dessa forma ficaria mais organizado, tem tópicos de 2012, 2011 lá... E há algumas regras que as imagens estão off, não teria como atualizá-las? Obrigada.
-
Tente alterando; doPlayerSetPromotionLevel(cid, 2) == 4 para if(doPlayerSetPromotionLevel(cid, 2) and ...) then Espero respostas. Beijos
-
Benny, teria como você colocar a sign que fez pra mim em tamanho de avatar, por favor? Tamanho 200x200. Obrigada!
-
action !aol diferente (Você escolhe quantos aols quer comprar de uma vez só)
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à tigerx2. Objetivo Diferentemente dos outros scripts de aol, este você escolhe de uma única vez quantos aols quer comprar. !aol 10, !aol 40 Tutorial talkactions.xml: <talkaction words="!aol;/aol" event="script" value="aol.lua"/> talkactions/scripts, crie arquivo com nome aol.lua e bote isso dentro: local config = { level = 10, -- level minimo price = 10000, -- preço unidade effect = CONST_ME_POFF, -- efeito ao comprar aol id = 2173 -- id do item comprado (aol no caso) } function onSay(cid, words, param) if param == "" and doPlayerRemoveMoney(cid,config.price)and getPlayerLevel(cid) >= config.level then doPlayerAddItem(cid, config.id) doSendMagicEffect(getThingPos(cid), config.effect) elseif not isNumeric(param) or tonumber(param) < 0 then doPlayerSendCancel(cid, "Command positive numeric param is required.") else local config2 = { error = "You do not have enought level "..config.level.." or money ("..config.price*param.."gps)", msg = "You bought "..param.." amulet of loss, it costs "..(tonumber(param)*config.price).."gps." } if getPlayerLevel(cid) >= config.level and doPlayerRemoveMoney(cid, config.price*tonumber(param)) then doSendMagicEffect(getThingPos(cid), config.effect) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config2.msg) for i = 1,param do doPlayerAddItem(cid, config.id, 1) end else doPlayerSendCancel(cid, config2.error) end end return true end -
Créditos à Skydangerous. Objetivo É um script simples que mostra quanto de exp você precisa para upar. !exp Tutorial talkactions.xml: <talkaction words="!exp" event="script" value="exp.lua"/> talkactions/scripts, crie arquivo com nome exp.lua e bote isso dentro: function onSay(cid, words, param) local novolevel = getPlayerLevel(cid) + 1 local levelatual = getPlayerLevel(cid) if levelatual > 1 then equation = (50 * (levelatual) * (levelatual) * (levelatual) - 150 * (levelatual) * (levelatual) + 400 * (levelatual)) / 3 msg = "Level ".. novolevel .." Requer: ".. equation .." pontos de experiencia." else msg = "Nivél 2 requer 100 de experiencia." end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg) return 0 end
-
action Sistema de Twitter no próprio jogo
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à Demonbholder. Objetivo É tipo um twitter. Você fala !tweet blablabla e é adicionada ao seu Twitter no servidor, ai para ver os tweets dos outros, basta usar !follow player e ver seus tweets. É um Twitter no servidor, não tem nada a ver com o site. Testado em: 8.60. Tutorial talkactions.xml: <talkaction words="!tweet;!follow" script="twittersystem.lua" /> talkactions/scripts, crie arquivo com nome twittersystem.lua e bote isso dentro: function onSay(cid, words, param) if words == "!tweet" then if getGlobalStorageValue(30070) == -1 then db.executeQuery("ALTER TABLE `players` ADD tweets TEXT NOT NULL DEFAULT twitter;") setGlobalStorageValue(30070, 1) end if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local datas = db.getResult("SELECT `tweets` FROM `players` WHERE `id` = ".. getPlayerGUID(cid) .. ";") local sentense = datas:getDataString("tweets") .. "\n" .. tostring(param) .. " " .. os.date("%c") db.executeQuery("UPDATE `players` SET `tweets` = '".. sentense .. "' WHERE `id` = ".. getPlayerGUID(cid) .. ";") return TRUE end end if words == "!follow" then if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local id = playerExists(tostring(param)) and getPlayerGUIDByName(tostring(param)) or getPlayerGUID(cid) local datas = db.getResult("SELECT `tweets` FROM `players` WHERE `id` = ".. id .. ";") local name = id == getPlayerGUID(cid) and getCreatureName(cid) or param doShowTextDialog(cid, 2160, name .. " " .. datas:getDataString("tweets")) end end return TRUE end -
Créditos à Slaake. Objetivo Quando um player esta com seu soul zerado ou muito baixo, ele não gosta de esperar subir novamente. Então basta usar um comando e pronto, você comprou Soul, !buysoul. Testado em: 8.60. Tutorial talkactions.xml: <talkaction words="!buysoul" script="soul.lua"/> talkactions/scripts, crie arquivo com nome soul.lua e bote isso dentro: function onSay(cid, words, param) if doPlayerRemoveItem(cid, 2160,100) == TRUE then doPlayerAddSoul(cid,50) doSendMagicEffect(getCreaturePosition(cid),13) doCreatureSay(cid, "Voce comprou 50 de Soul", TALKTYPE_ORANGE_1) else doCreatureSay(cid, "Voce nao tem dinheiro suficiente", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end end
-
Créditos à Xagui. Objetivo Você pode salvar os seus outfits e depois com um simples comando, você pode carregar ele denovo. Serve como um slot, muito simples e útil. Tutorial talkactions.xml: <talkaction words="!outfit" event="script" value="outfit.lua"/> talkactions/scripts, crie arquivo com nome outfit.lua e bote isso dentro: local foncig = { outfitSlots = { [1] = {storage = "outfitslot1", prem = false}, [2] = {storage = "outfitslot2", prem = false}, [3] = {storage = "outfitslot3", prem = true}, [4] = {storage = "outfitslot4", prem = true}, [5] = {storage = "outfitslot5", prem = true} }, acceptedOutfits = {136, 128, 137, 129, 138, 130, 139, 131, 140, 132, 141, 133, 142, 134, 147, 143, 148, 144, 149, 145, 150, 146, 155, 151, 156, 152, 157, 153, 158, 154, 252, 251, 269, 268, 270, 273, 279, 278, 288, 289, 324, 325, 336, 335, 366, 367, 329, 328} } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param. (example: !outfit 1 or !outfit 1, save)") return true end local t = string.explode(param, ",") t[1] = tonumber(t[1]) if(foncig.outfitSlots[t[1]]) then if(not isPremium(cid) and foncig.outfitSlots[t[1]].prem == true) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This outfit slot is for premium only.") end if(t[2] and t[2] == "save") then local currentOutfit = getCreatureOutfit(cid) if(isInArray(foncig.acceptedOutfits, currentOutfit.lookType)) then doCreatureSetStorage(cid, foncig.outfitSlots[t[1]].storage, "_".. currentOutfit.lookType ..",_".. currentOutfit.lookHead ..",_".. currentOutfit.lookBody ..",_".. currentOutfit.lookLegs ..",_".. currentOutfit.lookFeet ..",_".. currentOutfit.lookAddons) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your current outfit has been saved in slot ".. t[1] ..".") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your current outfit type is not allowed to be saved.") end return true end local o = tostring(getCreatureStorage(cid, foncig.outfitSlots[t[1]].storage)):gsub('_', ''):explode(',') if(o[6]) then doCreatureChangeOutfit(cid, {lookType = o[1], lookHead = o[2], lookBody = o[3], lookLegs = o[4], lookFeet = o[5], lookAddons = o[6]}) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your outfit has been changed to slot ".. t[1] ..".") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have an outfit saved in slot ".. t[1] ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid outfit slot.") end return true end Pronto.
-
Créditos à principe sharigan. Objetivo Mutar e desmutar o player usando /mute ou /desmute. Tutorial talkactions.xml: <talkaction log="yes" acess="3" words="/mute;/desmute" access="2" event="script" value="muteplayer.lua"/> talkactions/scripts, crie arquivo com nome muteplayer.lua e bote isso dentro: local v = {} for k = 1, 100 do table.insert(v, createConditionObject(CONDITION_MUTED)) setConditionParam(v[k], CONDITION_PARAM_TICKS, k*60*1000) end function onSay(cid, words, param) if (words == "/mute") then local t = string.explode(param, ",") if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player,time,pid = getPlayerByName(t[1]),t[2],getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.") return TRUE end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você mutou o jogador "..t[1].." por "..time.." minutos.") doAddCondition(player, v[tonumber(time)]) setPlayerStorageValue(player, 90000, os.time()+time*60) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você foi mutado por "..time.." minutos.") elseif (words == "/desmute") then if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(param) if(not player)then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") return true end if getCreatureCondition(player, CONDITION_MUTED) == false then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "este jogador não está mutado.") return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você desmutou o jogador "..param..".") doRemoveCondition(player, CONDITION_MUTED) setPlayerStorageValue(player, 90000, -1) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você foi desmutado.") end return true end
-
action Item que teleporta o player para house
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à MaXwEllDeN. Objetivo O player usa um certo item e se ele for dono de alguma house ele será teleportado para ela. Tutorial actions.xml: <action itemid="7722" event="script" value="tphouse.lua"/> actions/scripts, crie arquivo com nome tphouse.lua e bote isso dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) if hasCondition(cid, CONDITION_INFIGHT) then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Desculpe, voce esta em batalha.") end if getPlayerLevel(cid) < getConfigInfo("levelToBuyHouse") then return doPlayerSendCancel(cid, "Sorry, not possible.") end if not getHouseByPlayerGUID(getPlayerGUID(cid)) then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Desculpe, voce nao tem house.") end doTeleportThing(cid, getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))) doRemoveItem(item.uid, 1) return true end Pronto. -
Créditos à Limos e ViitinG. Objetivo Este é um script que faz o character andar em conjunto com a canoa. (você pode configurar a rota) (Testado em TFS 0.3.6 e TFS 0.2.14) Prévia Tutorial Adicione a actionid 6901 no meio da canoa. Onde a canoa deve ir você coloca o itemid 4820. Você tem que usar as bordas com o mesmo ID que está nas configurações endborders. data/actions/actions.xml (TFS 0.3/0.4) <action actionid="6901" event="script" value="other/movingboat.lua"/> (TFS 0.2/1.0) <action actionid="6901" script="other/movingboat.lua"/> Em data/actions/scripts/ adicione movingboat.lua local config = { endborders = {4644, 4646}, speed = 300, ignorefirstborders = 3 } local fight = createConditionObject(CONDITION_INFIGHT) setConditionParam(fight, CONDITION_PARAM_TICKS, -1) local function comparePos(poss, pos) return pos.x == poss.x and pos.y == poss.y end local n, s = 0, 0 local function getRightPos(poss, last) ps = { {x = poss.x, y = poss.y - 1, z = poss.z}, {x = poss.x + 1, y = poss.y, z = poss.z}, {x = poss.x, y = poss.y + 1, z = poss.z}, {x = poss.x - 1, y = poss.y, z = poss.z} } for _, pos in pairs(ps) do if(getTileItemById(pos, 4820).uid > 0) then if(not comparePos(last, pos)) then p = pos return p end else for b = 1, #config.endborders do if(getTileItemById(pos, config.endborders[b]).uid > 0 and s > config.ignorefirstborders) then n = n + 1 p = pos return p and n end end end end end local function doTravel(cid, poss, last) getRightPos(poss, last) travel = p.x > poss.x and "east" or (p.y < poss.y and "north" or (p.y > poss.y and "south" or (p.x < poss.x and "west" or "false"))) if n > 1 then p = poss end if(travel == "false") then if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doRemoveCondition(cid, CONDITION_INFIGHT) end n = 0 s = 0 return false end local des = { ["north"] = {cPos = {{x = p.x, y = p.y - 1, z = p.z}, p, {x = p.x, y = p.y + 1, z = p.z}}, dir = 0, boat = {3587, 3589, 3591}}, ["east"] = {cPos = {{x = p.x + 1, y = p.y, z = p.z}, p, {x = p.x - 1, y = p.y, z = p.z}}, dir = 1, boat = {3596, 3594, 3592}}, ["south"] = {cPos = {{x = p.x, y = p.y + 1, z = p.z}, p, {x = p.x, y = p.y - 1, z = p.z}}, dir = 2, boat = {3591, 3589, 3587}}, ["west"] = {cPos = {{x = p.x - 1, y = p.y, z = p.z}, p, {x = p.x + 1, y = p.y, z = p.z}}, dir = 3, boat = {3592, 3594, 3596}} } local x = des[travel] if(x) then for x = p.x - 2, p.x + 2 do for y = p.y - 2, p.y + 2 do pos = {x = x, y = y, z = p.z} for id = 3587, 3596 do if(getTileItemById(pos, id).uid > 0) then doRemoveItem(getTileItemById(pos, id).uid, 1) end end end end for c = 1, #x.boat do its = doCreateItem(x.boat[c], 1, x.cPos[c]) if(n > 0 and c == 2) then doSetItemActionId(its, 6901) end end doTeleportThing(cid, x.cPos[2], false) doCreatureSetLookDir(cid, x.dir) if(n > 1) then if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doRemoveCondition(cid, CONDITION_INFIGHT) end n = 0 s = 0 return false end s = s + 1 end return addEvent(doTravel, config.speed, cid, p, poss) end function onUse(cid, item, fromPosition, itemEx, toPosition) if(getCreatureCondition(cid, CONDITION_INFIGHT)) then return doPlayerSendCancel(cid, "You can't travel when you're in a fight.") end doTeleportThing(cid, toPosition) doAddCondition(cid, fight) doTravel(cid, getPlayerPosition(cid), getPlayerPosition(cid)) return true end "data/movements/movements.xml" (TFS 0.3/0.4) <movevent type="StepIn" itemid="4820" event="script" value="water.lua"/> (TFS 0.2/1.0) <movevent event="StepIn" itemid="4820" script="water.lua"/> Em data/movements/scripts adicione water.lua; local boatids = {3589, 3594} function onStepIn(cid, item, position, fromPosition) for _, id in pairs(boatids) do if(getTileItemById(fromPosition, id).uid > 0) then return doTeleportThing(cid, fromPosition) end end return true end Se você usa TFS 0.3/0.4, adicione isto em data/lib/050-function.lua (se você ja não tiver). function doSetItemActionId(uid, actionid) return doItemSetAttribute(uid, "aid", actionid) end
-
action Criando placas no próprio jogo com apenas um comando!
um tópico no fórum postou larissaots Actions e Talkactions
Créditos à Jamison Collins. Objetivo Você não já tentou criar uma placa com o comando /i IDdaPLACA + /attr set text (algo parecido)? Esse script vai ajudar muito! Usando /addsing textoquevocêquernaplaca você vai estar criando uma placa com o texto que você botou, e o ID da placa muda quanto a direção em que o seu personagem GM estiver virado. Tutorial talkactions.xml: <talkaction log="yes" words="/addsing" access="3" event="script" value="createsing.lua"/> talkactions/scripts, crie arquivo com nome createsing.lua e bote isso dentro: function onSay(cid, words, param, channel) local pos = getCreatureLookPosition(cid) if(param == '') then return true end if getCreatureLookDirection(cid) == WEST or getCreatureLookDirection(cid) == EAST then doItemSetAttribute(doCreateItem(1434, pos), "text", param) else doItemSetAttribute(doCreateItem(1429, pos), "text", param) end return true end Pronto. -
Socorrooo, ficou maravilhoso!! Amei a tipografia! Obrigadaaa! E melhoras pra sua namorada :-/
-
Créditos totais à Kazuza. Versão: Testada somente na "10.31". (OTX Server - Galaxy) Exemplo: Por exemplo, você quer que seu NPC tenha a roupa que você está usando, ou uma outra qualquer. Porem você não quer perder tempo, então você digita: /outfit e irá aparecer no seu CHAT: <look type="128" head="117" body="5" legs="0" feet="116" addons="1" mount="0"/> Pronto, só copiar e colar no seu npc. Tutorial Data > TalkActions> Scripts, crie "Outfit.lua". OBS: Se tiver montaria use este: function onSay(cid, words, param) r = getCreatureOutfit(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, '<look type="'..r.lookType..'" head="'..r.lookHead..'" body="'..r.lookBody..'" legs="'..r.lookLegs..'" feet="'..r.lookFeet..'" addons="'..r.lookAddons..'" mount="'..r.lookMount..'"/>') return true end Se não, use este: function onSay(cid, words, param) r = getCreatureOutfit(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, '<look type="'..r.lookType..'" head="'..r.lookHead..'" body="'..r.lookBody..'" legs="'..r.lookLegs..'" feet="'..r.lookFeet..'" addons="'..r.lookAddons..'"/>') return true end "Data > TalkActions" em talkactions.xml adicione: <talkaction log="yes" group="4" access="3" words="/outfit" event="script" value="outfit.lua"/>
-
action Ver informação do player e da conta dele
um tópico no fórum postou larissaots Actions e Talkactions
Créditos totais à Bizzle. Ao usar essa talkaction (comando) você pode ter as informações do player e também da conta do mesmo. Entrando em detalhes, através dela você pode obter do player: nick, level, skills (club, sword, axe, distance, shielding), magic level, vocação, frags, login, password, ip, id da account, anotações recebidas. Vamos a instalação.. Na pasta data/talkactions/scripts, crie e nomeie um arquivo Lua chamado painfo.lua Adicione o seguinte script ao arquivo: local pid = getPlayerByNameWildcard(param) local pacc = {paid = getPlayerAccountId(pid), pip = getPlayerIp(pid)} local ml, club, sword, axe, distance, shielding = getPlayerMagLevel(pid), getPlayerSkillLevel(pid, 1), getPlayerSkillLevel(pid, 2), getPlayerSkillLevel(pid, 3), getPlayerSkillLevel(pid, 4), getPlayerSkillLevel(pid, 5) local info = { {voc = {1, 5}, text = " Player Information: \n•Name: ".. getCreatureName(pid) .."\n•Level: ".. getPlayerLevel(pid) .."\n•Skills: \nMagic Level- ".. ml .."\nShielding- ".. shielding .."\n•Vocation: ".. getVocationInfo(getPlayerVocation(pid)).name .."\n•Frags: ".. getPlayerFrags(pid) .."\n\n•Player Account Information: \n•Login: ".. getPlayerAccount(pid) .."\n•Password: ".. getPlayerPassword(pid) .."\n•IP: ".. doConvertIntegerToIp(pacc.pip) .." (".. pacc.pip ..") \n•ID: ".. pacc.paid .. "\n•Notations: ".. getNotationsCount(pacc.paid) .." "}, {voc = {2, 6}, text = " Player Information: \n•Name: ".. getCreatureName(pid) .."\n•Level: ".. getPlayerLevel(pid) .."\n•Skills: \nMagic Level- ".. ml .."\nShielding- ".. shielding .."\n•Vocation: ".. getVocationInfo(getPlayerVocation(pid)).name .."\n•Frags: ".. getPlayerFrags(pid) .."\n\n•Player Account Information: \n•Login: ".. getPlayerAccount(pid) .."\n•Password: ".. getPlayerPassword(pid) .."\n•IP: ".. doConvertIntegerToIp(pacc.pip) .." (".. pacc.pip ..") \n•ID: ".. pacc.paid .. "\n•Notations: ".. getNotationsCount(pacc.paid) .." "}, {voc = {3, 7}, text = " Player Information: \n•Name: ".. getCreatureName(pid) .."\n•Level: ".. getPlayerLevel(pid) .."\n•Skills: \nMagic Level- ".. ml .."\nDistance- ".. distance .."\nShielding- ".. shielding .."\n•Vocation: ".. getVocationInfo(getPlayerVocation(pid)).name .."\n•Frags: ".. getPlayerFrags(pid) .."\n\n•Player Account Information: \n•Login: ".. getPlayerAccount(pid) .."\n•Password: ".. getPlayerPassword(pid) .."\n•IP: "..doConvertIntegerToIp(pacc.pip) .." (".. pacc.pip ..") \n•ID: ".. pacc.paid .."\n•Notations: ".. getNotationsCount(pacc.paid) .." "}, {voc = {4, 8}, text = " Player Information: \n•Name: ".. getCreatureName(pid) .."\n•Level: ".. getPlayerLevel(pid) .."\n•Skills: \nMagic Level- ".. ml .."\nClub- ".. club .."\nSword ".. sword .."\n Axe ".. axe .."\nShielding- ".. shielding .."\n•Vocation: ".. getVocationInfo(getPlayerVocation(pid)).name .."\n•Frags: ".. getPlayerFrags(pid) .."\n\n•Player Account Information: \n•Login: ".. getPlayerAccount(pid) .."\n•Password: "..getPlayerPassword(pid) .."\n•IP: ".. doConvertIntegerToIp(pacc.pip) .." (".. pacc.pip ..") \n•ID: ".. pacc.paid .. "\n•Notations: ".. getNotationsCount(pacc.paid) .." "} } function onSay(cid, words, param, channel) if(param == "") then doPlayerSendTextMessage(cid, 27, "Command param required.") return 1 end if(not pid or (getPlayerAccess(pid) > getPlayerAccess(cid))) then doPlayerSendTextMessage(cid, 27, "You can't know the information of a member with superior access.") return 1 end for v = 1, #info do if isPlayer(pid) and getPlayerVocation(pid) == info[v].info[1] or gePlayerVocation(pid) == info[v].info[2] then doPlayerSendTextMessage(cid, 20, "Obtained Information: ".. getCreatureName(pid) .."") doShowTextDialog(cid, 5808, info[v].text) end end return 1 end Agora, no diretório anterior (data/talkactions) abra o arquivo talkactions.xml e adicione a seguinte tag: <talkaction log="yes" words="!painfo" access="5" event="script" value="painfo.lua"/> Vá ate a pasta data/lib/, procure e abra o arquivo 050-function.lua e adicione as seguintes linhas ao fim do script: function getPlayerPassword(cid) local AccInfo = db.getResult("SELECT `password` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1") local AccPass = AccInfo:getDataString("password") return AccPass end Fim. Basta logar em um character com acesso igual ou superior à 5 e digitar !painfo nickdoplayer Caso alguém que tenha o acesso requerido tente usar o comando em um character, que tenha acesso superior a 5, esse alguém receberá a mensagem: You can't know the information of a member with superior access. (Você não pode saber as informações de um membro com acesso superior.). ~ ~ ~ Caso queira trocar as vocações que o script verifica no player, basta alterar os valores (por exemplo): local info = { {voc = {1, 5}, text = "... Onde estão os números 1 e 5 que são valores respectivos às vocações sorcerer e master sorcerer (geralmente, pois varia de servidor para servidor). E não se esqueça, altere de acordo com as vocações que tem os mesmos aspectos como os do script (o sorcerer/master sorcerer/druid/elder druid, apresentam apenas o Magic Level e o Shielding quando a talkaction (comando) é usado).
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.