
Eduardo Dantas
Membro
-
Registro em
Histórico de Curtidas
-
Eduardo Dantas deu reputação a Bruxo Ots em OTG deluxe otserv 12xRecomendo sempre que utilize a source do Mito SaiyaKing.
https://github.com/SaiyansKing/optimized_forgottenserver
Ou utilize Tfs puro e corra atrás das features.
Agora questão de mapas e conteúdo tem bastante por ai, mas source recomendo que use essa.
Já que OTX/OTG e OTBR são um grande amontoados de coisas que qualquer peido faz um server explodir.
-
Eduardo Dantas deu reputação a Qwizer em [TFS 1.x | Global Windows e Linux 10.0 OLD/11.3] Halls of Hope, Wrap, Store, Prey, Imbuing, Events - Castle War, Snow Ball, Zombie, BattleFieldGLOBAL 10.x/11x
FEATURES
• Global atualizado. • Todos os items atualizado e funcionando. • Prey System funcionando. • Imbuing System funcionando. • Todos os addons e outfits incluindo Retro. • Montarias 100% e funcionando • Novos monstros 100% • Roshamuul (Lower Roshamuul) Quest • Forgotten Knowledge Quest • Ferumbras' Ascendant Quest • Deepling Outfit Quest • Porta LVL 999 • Heart of Destruction Quest • Cast System com comandos exclusivos • Reward Chest dividido corretamente • Hotkey Equip com anti wpe • New Bank System (você não precisará carregar gold coin com você a todo tempo) • Walkable Fields (Os monstros não passam por certos fields, a menos que sejam atacados) • Proteção Anti-Kick • Regeneração de Stamina nos treiners offline e online • Global Frag System com o comando !frags ou !kills com comando !pz saiba o tempo da sua pz. • Limpeza de houses depois de 5 dias inativo • Exposição de blessings (Equipe com bordas douradas enquanto estiver com todas as blessings) • Wrap Furniture System (empacotação de itens decorativos) • Golden Tokens System (Criação de armas Critical / Leech - Npc Yana) • Silver Tokens System (Criação de armaduras - Npc Cledwyn) • Eventos PvP automáticos, Battlefield - Last Man Standing - Zombie - Bomberman - Snowball - Castle War Guild • War Privada com diversas opções para melhor balanceamento dos times (War Anti-entrosa) • Otherworld, Krailos, Gray beach, Roshamuul com recursos, Halls of Hope Warzone I,II,III, Ferumbras Ascendant, Hearth of Destruction, Grimvale etc... 100%
ALGUMAS IMAGES (download)
Download
Creditos
Vauban, TFS team, Pedrostti
-
Eduardo Dantas deu reputação a rollback em Error SSAEDITED. axei que tinha funcionado quando fexei o server vonto bugado --'
todos amulet e rings tbm tão assim OMG
AGORA SIM DESCOBRI QUE QUANDO O ITEM É FEITO PELO GOD ATÉ AMULETS SAI COM CARGA 100.
-
Eduardo Dantas deu reputação a psychonaut em Key Door Helpta aí, só demorou 5 anos
REVERSE_DOORS, CHILD_DOORS = {}, {} for k, v in pairs(DOORS) do REVERSE_DOORS[v] = k local tmp = getItemInfo(v) if(tmp.transformUseTo ~= 0) then CHILD_DOORS[tmp.transformUseTo] = k end end function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.aid > 0 and itemEx.aid > 0) then if(isPlayerPzLocked(cid) and getTileInfo(toPosition).protection) then doPlayerSendDefaultCancel(cid, RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE) return true end local doors = DOORS[itemEx.itemid] if(not doors) then doors = REVERSE_DOORS[itemEx.itemid] end if(not doors) then doors = CHILD_DOORS[itemEx.itemid] end if(doors) then if(item.actionid ~= itemEx.actionid) then doPlayerSendCancel(cid, "The key does not match.") else if (getCreaturePosition(cid).x < getThingPos(item.uid).x) then doTeleportThing(cid, {x=getThingPos(item.uid).x+1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}) doSendMagicEffect({x=getThingPos(item.uid).x+1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}, CONST_ME_MAGIC_BLUE) else doTeleportThing(cid, {x=getThingPos(item.uid).x-1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}) doSendMagicEffect({x=getThingPos(item.uid).x-1, y=getThingPos(item.uid).y, z=getThingPos(item.uid).z}, CONST_ME_MAGIC_BLUE) end end return true end end return false end
-
Eduardo Dantas deu reputação a Elitondesouza em [8.6] Gesior 2012 versão 2017Olá meus companheiros,
Estou aqui para dividir com vocês meu projeto Gesior 2012 Editado !!!
Ele foi utilizado para versão 8.60, com banco de dados dessa versão.
Porém o Layout pode ser aproveitado em qualquer versão, basta saber utilizar.
Bom, todos sabem o que conseguimos no fórum com sites já prontos, sendo assim irei apenas comentar as novidades da minha versão.
Dei uma boa editada no menu, com um estilo degradê quando colocamos o mouse encima.
Coloquei um "CASTLE" que se utilizar algum script de Castle 48h, você facilmente consegue rodar um comando para funcionar 100% com o site.
Coloquei um "NEXT EVENTS" que existe um contador em arquivo javascript, que você pode colocar determinadas horas para os eventos, facilmente editável também.
Coloquei Outfits que se movimentam no nosso "Top Level".
Fora as várias melhorias no layout e afins com referências do game "World Of Warcraft".
Segue imagem:
Download: Download Link
Scan: Scan Link
Espero que façam bom uso e aproveitem !!
Att, Eliton de Souza.
-
Eduardo Dantas deu reputação a gangul321 em (Resolvido)Ot Online So que Nao aparece no OTSERVLISTVoces nao entenderam, meu config,lua esta configurado certo, e eu botei meu server no OTSERVLIST.ORG e no otservlist.org , no caso o otservlist.org funciona aparece meu server ONLINE, porem no OTSERVLIST.ORG NAO
Consegui resolver,
no meu config.lua estava usando a
statusProtocolPort = 7173 no entanto assim o otservlist nao consegue "enxergar" que esta online o servidor, entao mudei para:
statusProtocolPort = 7171 E agora ta funcionando =P
-
Eduardo Dantas deu reputação a NatsU em [Link Quebrado] All-In-One (10.98)Olá galera, como estão as festas? Muito tempo que não posto nada aqui pois estou meio desligado desse meio, mas venho trazer pra vocês, preguiçosos, um "pacote" All-In-One, com vários programas de edição (já compilados), o cliente 10.98 e um servidor TFS 1.2, VIRGEM. Lembrando que todos esses foram programas testados e alguns compilados em Windows 8.1 (x64), com Visual Studio 2017 RC.
O pacote contém:
Ferramentas:
Dat_Spr Editor (Object Builder 0.3.3) Item Editor (0.4) Pic Editor Map Editor (RME 3.2)
Client:
Tibia 10.98
Server:
OTX Server 3.7 (TFS 1.2)
OBS: Nenhum desses programas são de minha autoria, a maioria é do "Mignari" ou otimizado por ele.
OBS²:Vou disponibilizar um link de um tutorial de como colocar um servidor online nas versões atuais, ele é bem prático e objetivo: Tutorial
OBS³: Eu recomendo fortemente vocês extraírem esse pacote no diretório raiz do seu computador (geralmente C:/).
Download: Mediafire
Scan: VirusTotal
Obrigado e até um dia!
-
Eduardo Dantas deu reputação a Vodkart em (Resolvido)[actions] Ajuda para reformular 1 SCRIPTlocal positions = { [1] = {{x = 1290, y = 973, z = 7},{x = 1291, y = 973, z = 7},{x = 1292, y = 973, z = 7}}, [2] = {{x = 1293, y = 973, z = 7},{x = 1294, y = 973, z = 7},{x = 1295, y = 973, z = 7}}, [3] = {{x = 1296, y = 973, z = 7},{x = 1297, y = 973, z = 7},{x = 1298, y = 973, z = 7}}, [4] = {{x = 1298, y = 973, z = 7},{x = 1299, y = 973, z = 7},{x = 1300, y = 973, z = 7}} } local text = {"E por último, o incrivel mundo de garden", "aqui vemos o mapa de althera", "Aqui damos inicio a jornada pelo mapa"} function doTpWithDelay(cid, delay) if delay > 0 then doTeleportThing(cid, positions[getPlayerVocation(cid)][delay]) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,text[delay]) doSendMagicEffect(getThingPos(cid), 2) addEvent(doTpWithDelay, 2000, cid, delay-1) else doCreatureSetNoMove(cid, false) end end function onUse(cid, item, frompos, item2, topos) local var = positions[getPlayerVocation(cid)] if not var then return true end doCreatureSetNoMove(cid, true) doTpWithDelay(cid, #var) return true end
n cheguei a testar... o que está entre os "[]" é a voc
-
Eduardo Dantas deu reputação a Hadggar em [TalkAction] Sistema de Jail !Opa galera blz? hoje vou trazer um sistema para vocês de jail, então vamos la !
Algumas Funções !
Funções:
*Exemplo, GM quer prender um player que ta fazeno algu de errado, ai ele fala !jail ,4(no exemplo ele ficara 4 minutos preso), éo nome do fulano, !jail 4,fulano ,!jail 15,fulano ou !jail 30,fulano.
* Verificação jogador o tempo de prisão (mostra data unjail)
* auto unjail jogadores
* Kick todos os jogadores da prisão depois de acidente / restart [teletransporte para jogador templo]
Primeiramente vá em \data\talkactions e abra o talkactions.xml é lá adicione:
<talkaction words="!jail" script="jailsystem.lua"/> <talkaction words="!unjail" script="jailsystem.lua"/> <talkaction words="/jail" script="jailsystem.lua"/> <talkaction words="/unjail" script="jailsystem.lua"/> Agora vá em \data\talkactions\scripts é crie um arquivo chamado jailsystem.lua é la adicione :
-- Default jail time in seconds -- default_jail = 30 -- The permission you need to jail someone -- grouprequired = 4 -- StorageValue that the player gets -- jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 -- Set the position of the jail: -- jailpos = { x = 1037, y = 1004, z =7 } -- Set the position once unjailed: -- unjailpos = { x = 1029, y = 1005, z =7 } -- auto kicker, dont edit 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,'You were kicked from jail! See you later :)') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param) if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end if param == '' and (words == '!unjail' or words == '/unjail') then if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') else if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then table.insert(jail_list,cid) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You will be kicked from jail in one second.') else doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') end end return TRUE end local jail_time = -1 for word in string.gmatch(tostring(param), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(param) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3)) end end end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if words == '!jail' or words == '/jail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').') return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end elseif words == '!unjail' or words == '/unjail' then if getPlayerGroupId ( cid ) >= grouprequired then if isPlayer(isplayer) == TRUE 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,getCreatureName(cid) .. ' let you go out from jail! See you later :)') doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You unjailed '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") return FALSE end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") return FALSE end end return FALSE end Algumas configurações
grouprequired = 4 -- aki séra até o grupo que poderar usar no caso group 4 pra baixo.
jailpos = { x = 1037, y = 1004, z =7 } -- aki séra a posição para aonde o player irar quando for preso.
unjailpos = { x = 1029, y = 1005, z =7 }- -aki séra para aonde ele for quando ele n tiver mais preso, no caso unjail.
Creditos: Gesior.pl EU. Lembre-se eu testei em tibia 8.54 é 8.60 é funcionou perfeitamente !
-
Eduardo Dantas deu reputação a Bruno Carvalho em [TalkAction] Prision SystemVersão testada: 9.4+ (Pode funcionar em anteriores)
Descrição: O script de cadeia feito por FreaksOt onde eu modifiquei e fiz algumas alterações.
Alterações:
- 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 log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prisao.lua"/>
[/code] [i][b]Script:[/b][/i] data/talkaction/prisao.lua [code]
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
Config:
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.
[/code]
[i][b]Créditos:[/b][/i]
[i]FreaksOt[/i]
[i]Comedinha (Bruno Carvalho)[/i]
-
Eduardo Dantas deu reputação a Stigal em Script para ganhar pontos no site (shop) ficando 24 horas onlineNome do script : P Points system v1
Versão testada : TFS 0.4
Creditos : LsM
Como funciona :
O sistema funciona como uma recompensa ao player por ficar online por um certo tempo. O player, ao ficar online por um certo intervalo de tempo programado no código, receberá uma quantidade de pontos "P" a qual também se pode alterar.
O objetivo foi fazer com que os players se sintam incentivados a ficar online por um maior período de tempo para que recebam tais moedas. Essa é, definitivamente, uma forma fácil de se alcançar um número maior de players online, já que a ideia foi retirada de um MMORPG online de grande sucesso.
Como utilizar :
Como o sistema tem como foco dar uma recompensa ao player, no caso pontos P, estes, podem ser utilizados no comercio, em npcs, ou até mesmo na entrada de locais. Sua sintaxe é muito maleável e se encaixa em quaquer requisito desejado.
Instalação :
Primeiramente, execute a seguinte QUERY em seu banco de dados :
ALTER TABLE `accounts` ADD `p_points` INTEGER NOT NULL DEFAULT 0 Em seguida, crie um arquivo com a extensão .lua chamado "points.lua" em "data/creaturescripts/scripts" e adicione o código abaixo :
--[[ P Points System. Version : v1.0 ]]-- function onLogin(cid) doCreatureSetStorage(cid, 1219, os.time()) return true end function onLogout(cid) doCreatureSetStorage(cid, 1219, 0) return true end Ainda em creaturescripts, abra o arquivo "creaturescripts.xml" e adicione a seguinte TAG:
<event type="login" name="PlayerAddPointsTimer" event="script" value="points.lua"/> <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/> Agora, em "data/globalevents/script" crie um arquivo com a extensão .lua também chamado "points.lua" e cole o seguinte código :
--[[ P Points System. Version : v1.0 ]]-- local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } local function givePoints(cid, quant) if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. config.p_points + getPoints(cid) .." p points in your account. Your timer was reseted.") doPlayerAddPoints(cid, quant) doCreatureSetStorage(cid, 1219, 0) doCreatureSetStorage(cid, 1219, os.time()) end return true end function onThink(interval) for i, v in pairs(getPlayersOnline()) do givePoints(v, config.p_points) end return true end E em "globalevents.xml" cole a seguinte TAG:
<globalevent name="points" interval="60" event="script" value="points.lua"/> Em seguida vá em "data/talkactions/scripts", crie um arquivo com extensão .lua chamado "points.lua" e adicione o seguinte código :
function onSay(cid, words, param, channel) local getP = getPoints(cid) doPlayerPopupFYI(cid, "You have ".. getP .." P points.") return true end E em "talkactions.xml" adicione a TAG :
<talkaction words="!ppoints;/ppoints" event="script" value="points.lua"/> Para finalizar, vá em "data/lib/050-function.lua" e na última linha, adicione as funções abaixo :
function getPoints(cid) local res = db.getResult('select `p_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("p_points") res:free() return tonumber(ret) end function doPlayerAddPoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) + quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doPlayerRemovePoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) - quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end Fim, o sistema está instalado.
Como configurar :
A parte da configuração é a mais fácil, apenas edite :
local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } Quer utilizar o sistema em um npc, ou action, ou algum outro sistema e não sabe como? Simples, apenas use as seguintes funções :
getPoints(cid) A função retorna a quantidade de pontos do player.
doPlayerAddPoints(cid, quant) A função adiciona a quantidade(quant) de pontos ao player.
doPlayerRemovePoints(cid, quant) A função remove a quantidade(quant) de pontos do player.
Download do sistema -> DOWNLOAD
Scan -> Scan
-
Eduardo Dantas deu reputação a Absolute em [ANTI-CLONE] 100% NOVO [O MELHOR]Fala galera do TK!
Trago hoje a vocês um sistema que desenvolvi sob uma base de shop com meu parceiro Thales Valentim do pokemonbr.com.br a alguns meses, pós vários testes e visando que funcionou perfeitamente trago para vocês!
Como funciona?
Toda vez que um ItemVIP ou qualquer Item comprado no SHOP do seu site, quando ele for entregar ao player, irá ficar; COMPRADOR POR:, ou seja; irá adicionar uma "KEY" algo que realmente saiu direto do seu SHOP, pois quando o item é disparado para o player ele vai entregar normal com a função "doCreateItemEx" e então adicionar a descrição no mesmo com a função "doItemSetAttribute".
E como evitará os clones Absolute?
Você terá uma QUERY para executar no seu banco de dados, fazendo uma checagem dos items VIPS que não possuem esse SERIAL KEY (o script também já faz a checagem), ou seja; os que não tiverem a KEY foram clonados (não saíram do SHOP), e então vocês poderão deleta-los manualmente caso necessário.
É muito simples, apenas um script e a QUERY de checagem.
Vamos a instalação?
Em data/globalevents/scripts substitua o seu arquivo shop.lua por este:
-- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') doPlayerSave(cid) db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return TRUE end
Confira se no seu globalevents.xml já possui a tag:
<globalevent name="shop" interval="30000" script="shop.lua"/>
PRONTO, VOCÊ ESTÁ LIVRE DE CLONES! TÃO SIMPLES NÃO?
Para fazer a checagem se há items clonados, abra o seu phpmyadmin e execute a seguinte query:
------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_DEPOTITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_depotitems` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%' ------------------- COMANDO SQL BY ABSOLUTE PARA VERIFICAR A TABELA PLAYER_ITEMS---------------------- SELECT `player_id`,`pid`,`sid`,CONVERT( `attributes` USING latin1 ) FROM `player_items` WHERE CONVERT( `attributes` USING latin1 ) LIKE '%description%'
OBSERVAÇÃO IMPORTANTE: Caso seu servidor já esteja online e já possua vendas no seu SHOP, você terá que adicionar a "KEY" em todos os items ou reseta-los.
OUTRA OBSERVAÇÃO: Nunca crie items VIP com o ADMIN e de aos jogadores, pois eles ficaram sem a "KEY" e poderão ser deletados.
ESTE SCRIPT FUNCIONA PERFEITAMENTE NAS REVS 0.3.6 e 0_4, caso necessário passo para a 1.x. S
IMPLES, PRATICO E PERFEITO NÃO?
Quero vê-los usando, espero ter ajudado. :D
Até a próxima!
Absolute.
-
Eduardo Dantas deu reputação a Vodkart em [Sistema] Battlefield Event! V.1Mapa BattleField Feito Por AnneMotta :
Mapa Battlefield.rar
Scan: https://www.virustot...sis/1346548669/
Imagens do mapa
Descrição:
- O evento é automático e acontece em determinado dia e hora da semana
- Logo após é aberto um teleport então apenar um número limitado de players entra no evento
- São formados por dois times, os "Black Assassins" e os "Red Barbarians"
- Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
- O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
Bônus:
- Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.
- Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.
- Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.
Lembre-se:
- De colocar Pvp Tool na área
- De colocar área NoLogout
Imagens:
Instalação:
Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento -
Eduardo Dantas deu reputação a BetterWar ATS em Contagem regressiva no siteoi @noobdemoreno encontrei este topico, e como quase todos os topicos dos foruns de tibia, quase ninguem mais estão respondendo! Eu acabei de colocar um contador regressivo..
site:https://countingdownto.com
Configura a data certinho, o nome do evento, depois clica em "add to my website" copia o codigo e cola em latestnews.php antes do primeiro "<?PHP" em cima de tudo...
-
Eduardo Dantas deu reputação a Nailanb13 em [Tutorial] Baixando as imagens da Store do Tibia Global para utilizar em seu Store SystemThere is it.
ImageCache.zip
-
Eduardo Dantas deu reputação a Nailanb13 em In-game store imagesGalera fiz um tuto de como conseguir as imagens.
Confiram:
-
Eduardo Dantas deu reputação a Enzo Caue em In-game store imagesBom, eu já percebi que muitos estão tendo problemas para adicionar as imagens no store in-game do tibia e decidi pesquisar e tentar faze-lo funcionar corretamente.
Depois de muito tempo pesquisando, tentando e errando, achei uma explicação na Otland, vou mostrar passo-a-passo como se faz para que funcione:
Primeiro, vá até o seu config.lua e procure por
coinImagesURL = "http://some.url/images/store/" Substitua ´some.url´ pelo site do seu servidor e retiro o /images , no meu caso ficará assim
coinImagesURL = "http://asterion-ot.servegame.com/store/" Agora, vá até a pasta www ou htdocs e crie uma pasta chamada store com uma outra pasta chamada 64 dentro dela, veja abaixo:
Dentro da pasta store:
Agora, dentro da pasta 64, você tem que colocar as imagens dos produtos em formato PNG ( APENAS PNG ) e com as dimensões 64x64:
Depois disso, é só criar os items no gamestore.lua normalmente e colocar os nomes das respectivas imagens como deseja.
SHAZAM!!!
PS: AS IMAGENS TEM QUE SER COM FUNDO TRANSPARENTE, SE NÃO FICARAM ASSIM:
Créditos:
Narko (otland member)
Me.
-
Eduardo Dantas deu reputação a Emersonssss em [Floresta Encantada] New Event - ExclusivoE Papai Absulute como sempre posta o script faltando funções e ainda manda o player se vira para cria-la e o mais engraçado é que me fala para adicionar a função na source ! kkkkkkkkkk
Troque:
E para finalizar crie um arquivo com o nome de florestaabsolute.lua em data/libs e dentro adicione:
Adicione este :
configExf = { teleportPos = {x = 32341,y = 32213, z = 7}, -- aonde aparecerá o teleport teleportPla = {x=32622, y=31699, z=7}, -- para onde o teleport levará stats = 201201180701, timetostart = 300, -- tempo para iniciar topleftPos = {x = 32589, y = 31662, z = 7}, -- canto esquerdo superior botrightPos = {x = 32631, y = 31693, z = 7}, -- canto direito inferior prize = 6571, -- recompensa templepos = {x=32369, y=32241, z=7}, -- posição do templo randpos = {{x=32625,y=31692,z=7},{x=32621,y=31692,z=7},{x=32617,y=31692,z=7},{x=32619,y=31687,z=7},{x=32624,y=31681,z=7},{x=32630,y=31668,z=7},{x=32627,y=31668,z=7},{x=32617,y=31672,z=7},{x=32613,y=31677,z=7},{x=32608,y=31665,z=7},{x=32610,y=31688,z=7},{x=32598,y=31684,z=7},{x=32596,y=31684,z=7},{x=32597,y=31668,z=7}} } -- O PAPAI ABSOLUTE EXPLICARÁ NAS IMAGENS ESSAS POSIÇÕES function doStartExf() doCreateTeleport(1387, configExf.teleportPla, configExf.teleportPos) setGlobalStorageValue(configExf.stats, 0) doBroadcastMessage("The Exchanted Forest event will open in " .. configExf.timetostart .. " seconds.") addEvent(doInitExf, configExf.timetostart*1000) end function doInitExf() if getGlobalStorageValue(configExf.stats) == 0 then doBroadcastMessage("The Exchanted Forest event is starting...") setGlobalStorageValue(configExf.stats, 1) end end function doCloseExf() setGlobalStorageValue(configExf.stats, -1) local item = getTileItemById(configExf.teleportPos, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end for index, creature in ipairs(doGetPlayersFromArea()) do doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end function doGetPlayersFromArea() local players = {} for index, creature in ipairs(getPlayersOnline()) do if isInArea(getThingPos(creature), configExf.topleftPos, configExf.botrightPos) then table.insert(players, creature) end end return players or #players end "Ai tu tem que adicionar a função na source brother, na 0.3.6 tem..."
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Modificações by Emerson Henrique
Oque eu Alterei ?
for index, creature in ipairs(doGetPlayersFromArea()) do doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end function doGetPlayersFromArea() local players = {} for index, creature in ipairs(getPlayersOnline()) do if isInArea(getThingPos(creature), configExf.topleftPos, configExf.botrightPos) then table.insert(players, creature) end end return players or #players end Resumindo ele vai pegar qualquer player que esteja nessa Area e vai Teleportar pra o *Town do Player
Town = Cidade Main do Player,
Isso :
templepos = {x=32369, y=32241, z=7}, -- posição do templo é Igual a Isso :
getTownTemplePosition(getPlayerTown(creature)) Porem não é necessario variavel.
Mine Tutorial de como fazer uma função que teleport o player para seu templo sem nenhuma variavel.
Até o Proximo Check's Script's of Absulute
-
Eduardo Dantas recebeu reputação de Rockersz em Script init.lua (arrumando bug da store dos servers OTX)Use este:
100% livre de bugs.
Lembrando que os créditos é do pessoal da OTX Team, por fixar o bug 100%
https://github.com/mattyx14/otxserver/pull/186
-
Eduardo Dantas deu reputação a ricardo3 em [LINK OFF] Zombie Event v1.0Oba!
to trazendo mais 1 mapa feito por mim xD (estimado 50 pessoas na area do evento)
Scan? 100% sem virus galera!
https://www.virustot...sis/1352212844/
Download? http://www.4shared.c...ZyebRN/map.html
SE O VISUAL TE AGRADA E FOI UM TRABALHO BEM FEITO, NÃO ESQUEÇAM DOS REPs
-
Eduardo Dantas deu reputação a Absolute em [Battlefield Event New!] Exclusivo e mais legal ;pFala galerinha linda do TK, vejo muita gente reclamando do battlefield do nosso amigo Vodkart, mas aqui funciona 100%, creio que seja rejeição nos TFS, mas então resolvi trazer a vocês um battlefield que venho customizando a algum tempo, o mesmo possui em alguns servidores poloneses, globalwar e cia.
O Evento é um pouco modificado do que o tradicional battlefield, porém acho que ficou mais legal, é de pegar a bandeira do time inimigo, para dar um pouco mais de emoção que tal? rs.
Preste atenção nos arquivos e como configurar, estarei explicando tudo passo a passo.
Atenção, o comando para abrir o evento é: /battlefield 20 (o 20 é o número de participantes, no caso 10 no time vermelho e 10 no preto, coloque sempre números pares para balancear corretamente o evento)
Vamos ao que interessa:
Primeiramente, em data/libs crie um arquivo com o nome de battlefield.lua e adicione o seguinte dentro:
battlefield = { storage = 201206300801, storage2 = 201206300802, tpPos = {x=32342, y=32213, z=7}, -- aonde aparecerá o teleport pos_team_1 = {x=31621,y=31860,z=7}, -- posição do team 1 (do lado direito) pos_team_2 = {x=31582,y=31860,z=7}, -- posição do team 2 (do lado esquerdo) spectors = {{x=31593,y=31853,z=6},{x=31609,y=31853,z=6},{x=31593,y=31866,z=6},{x=31609,y=31866,z=6}}, -- aonde aparecerá os espectadores (em volta do battlefield) team1Name = "Black Assassins", team2Name = "Red Barbarians", } function doBroadCastBattle(type,msg) for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doPlayerSendTextMessage(cid,type,msg) end end return true end function removeTp() local t = getTileItemById(battlefield.tpPos, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(battlefield.tpPos, CONST_ME_POFF) end end function OpenWallBattle() local x = true local B = { [1] = {1056,{x=31601, y=31858, z=6, stackpos = 1}}, -- posição da barreira [2] = {1056,{x=31601, y=31859, z=6, stackpos = 1}}, -- posição da barreira [3] = {1056,{x=31601, y=31860, z=6, stackpos = 1}}, -- posição da barreira [4] = {1056,{x=31601, y=31861, z=6, stackpos = 1}} -- posição da barreira } for i = 1, #B do if getTileItemById(B[i][2], B[i][1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[i][2]).uid,1) else doCreateItem(B[i][1], 1, B[i][2]) end end end function getWinnersBattle(storage) local team = storage == 1 and battlefield.team1Name or battlefield.team2Name doBroadcastMessage("Players from team ".. team .." won the event battlefield,they received a Master Surprise Bag!") setGlobalStorageValue(battlefield.storage, -1) removeTp() OpenWallBattle() for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, battlefield.storage2) ~= -1 then doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) if getPlayerStorageValue(cid, battlefield.storage2) == storage then doPlayerAddItem(cid,6571,1) end setPlayerStorageValue(cid, battlefield.storage2, -1) end end end Como configurar este passo;
Pós o primeiro passo, crie um arquivo em actions/scripts com o nome de battlefieldAbsolute.lua e adicione o seguinte dentro:
function onUse(cid, item, fromPosition, itemEx, toPosition) local team = getPlayerStorageValue(cid, battlefield.storage2) if (item.actionid == 45001 and team == 1) or (item.actionid == 45002 and team == 2) then getWinnersBattle(team) end return true end
Em actions.xml, adicione as seguintes linhas:
<action actionid="49901" event="script" value="battlefieldAbsolute.lua"/> <action actionid="45002" event="script" value="battlefieldAbsolute.lua"/> Pós o segundo passo, vá até sua pasta creaturescripts/scripts e crie um arquivo com o nome de combat.lua e adicione o seguinte:
function onLogin(cid) if getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == -1 then setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0) end registerCreatureEvent(cid, "BattleTeam") registerCreatureEvent(cid, "BattleDeath") return true end function onCombat(cid, target) if isPlayer(cid) and isPlayer(target) then if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 and getPlayerStorageValue(target, _Lib_Battle_Info.TeamOne.storage) == 1 then doPlayerSendCancel(cid, "You may not attack your team mates.") return false end if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 and getPlayerStorageValue(target, _Lib_Battle_Info.TeamTwo.storage) == 1 then doPlayerSendCancel(cid, "You may not attack your team mates.") return false end return true end return true end function onPrepareDeath(cid, deathList, lastHitKiller, mostDamageKiller) if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) >= 1 then setPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage, -1) setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage)-1) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Battle Field] You Are Dead!") if getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 then getWinnersBattle(_Lib_Battle_Info.TeamTwo.storage) else doBroadCastBattle(23,"[BattleField Information] ".._Lib_Battle_Info.TeamOne.name.." "..getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage).." VS "..getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage).." " .._Lib_Battle_Info.TeamTwo.name) end elseif getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) >= 1 then setPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage, -1) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage)-1) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Battle Field] You Are Dead!") if getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage) == 0 then getWinnersBattle(_Lib_Battle_Info.TeamOne.storage) else doBroadCastBattle(23,"[BattleField Information] ".._Lib_Battle_Info.TeamOne.name.." "..getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage).." VS "..getGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage).." " .._Lib_Battle_Info.TeamTwo.name) end end return true end Ainda na mesma pasta crie outro arquivo com o nome de pdeath.lua com o seguinte conteúdo: (ATENÇÃO QUE NA MESMA PASTA SÃO 2 ARQUIVOS)
function onPrepareDeath(cid, corpse, lastHitKiller, mostDamageKiller) if getPlayerStorageValue(cid, config_tvt.green_kills) > 0 then doTeleportThing(cid, config_tvt.green_pos) setGlobalStorageValue(red_kills, getGlobalStorageValue(red_kills) + 1) end if getPlayerStorageValue(cid, config_tvt.red_kills) > 0 then doTeleportThing(cid, config_tvt.red_pos) setGlobalStorageValue(red_kills, getGlobalStorageValue(green_kills) + 1) end doPlayerSendTextMessage(cid, 27, "You dead! by Absolute") return true end Em creaturescripts/creaturescripts.xml adicione as seguintes linhas:
<event type="preparedeath" name="BattlefieldP" event="script" value="pdeath.lua"/> <event type="combat" name="BattlefieldC" event="script" value="combat.lua"/> Pós o terceiro passo, em movements/scripts crie um arquivo com o nome de battlefieldAbsolute.lua e adicione o seguinte:
local conditionBlack = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionBlack, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionBlack, {lookType = 134, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) local conditionRed = createConditionObject(CONDITION_OUTFIT) setConditionParam(conditionRed, CONDITION_PARAM_TICKS, -1) addOutfitCondition(conditionRed, {lookType = 143, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94}) function onStepIn(cid, item, position, fromPosition) if getPlayerAccess(cid) > 3 then doTeleportThing(cid, battlefield.pos_team_1) return true elseif getGlobalStorageValue(battlefield.storage) == 0 then doTeleportThing(cid, battlefield.spectors[math.random(#battlefield.spectors)]) return true end if getGlobalStorageValue(battlefield.storage) > 0 then if getGlobalStorageValue(battlefield.storage) % 2 == 0 then setPlayerStorageValue(cid, battlefield.storage2, 1) doAddCondition(cid, conditionBlack) doTeleportThing(cid, battlefield.pos_team_1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You will join the team " .. battlefield.team1Name .. "!") else setPlayerStorageValue(cid, battlefield.storage2, 2) doAddCondition(cid, conditionRed) doTeleportThing(cid, battlefield.pos_team_2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You will join the team " .. battlefield.team2Name .. "!") end setGlobalStorageValue(battlefield.storage, getGlobalStorageValue(battlefield.storage)-1) if getGlobalStorageValue(battlefield.storage) == 0 then doBroadcastMessage("Battlefield will start in 1 minute, please create your strategy!") addEvent(doBroadcastMessage, 60*1000, "BattleField will begin now!") addEvent(OpenWallBattle, 60*1000) else doBroadcastMessage("We are waiting "..getGlobalStorageValue(battlefield.storage).." players to Battlefield starts.") end end return true end Em movements.xml adicione a seguinte linha:
<movevent type="StepIn" actionid="45000" event="script" value="battlefieldAbsolute.lua"/> Á pedidos fiz o comando para abrir manualmente, então em talkactions/scripts crie um arquivo com o nome de battlefieldopenAbsolute.lua e coloque:
function onSay(cid, words, param) if getGlobalStorageValue(battlefield.storage) ~= -1 then doPlayerSendCancel(cid, "The event is already open.") return true elseif not tonumber(param) or param % 2 ~= 0 then doPlayerSendCancel(cid, "You must choose an even number.") return true end doBroadcastMessage("The event BattleField was opened and We are waiting "..param.." Players! Team divided into "..((param)/2).." VS "..((param)/2)) setGlobalStorageValue(battlefield.storage, tonumber(param)) local tp = doCreateItem(1387, 1, battlefield.tpPos) doItemSetAttribute(tp, "aid", 45000) return true end Em talkactions.xml adicione a linha:
<talkaction words="/battlefield" access="3" event="script" value="battlefieldopenAbsolute.lua"/> Screenshots do mapa do evento; Clique em spoiler para ver.
Download & Scan do mapa;
-
Eduardo Dantas deu reputação a SuggestName em [TFS 1.0] - Auto Loot SystemFiz esse sistema a algum tempo e resolvi compartilhar.
Geral
o Sistema automaticamente irá recolher o loot dos monstros e adicionar ao player que deu mais dano, caso o loot esteja em sua loot list.
Código
Creaturescript/scripts, crie um novo arquivo chamado autoloot.lua e adicione o código.
function onDeath(player, corpse, killer, mostDamageKiller, unjustified, mostDamageUnjustified) addEvent(getCorpseLootList, 100, killer, player:getPosition()) return true end
Crie um novo script chamado autoloot.lua dentro da pasta data, e adicione o código. Loot = {} LOOTSTORAGE = 45713 function Loot:create() return setmetatable({}, {__index = self}) end function Loot:add(id) return table.insert(self, id) end function Loot:remove(id) local newtb = {} for k, v in pairs(self) do if (v + 0) ~= (id + 0) then table.insert(newtb, v) end end self = setmetatable(newtb, {__index = self}) return self end function Loot:getString() local str = "" for k, v in pairs(self) do str = str.. v.. ";" end return str end function Loot:getTable() local tb = {} for k, v in pairs(self) do table.insert(tb, v) end return tb end function Loot:saveToPlayer(player) return doPlayerAddStorageValue(player, LOOTSTORAGE, self:getString()) end function getPlayerLootList(player) local lootList = getPlayerStorageValue(player, LOOTSTORAGE) lootList = lootList:split(";") local tableList = {} for k, v in pairs(lootList) do table.insert(tableList, v) end return setmetatable(tableList, {__index = Loot}) end function getCorpseLootList(player, pos) local loot = {} local text = "" local corpse = Tile(pos):getTopVisibleThing() local plits = getPlayerLootList(player):getTable() for i = 0, corpse:getSize() do table.insert(loot, getContainerItem(corpse.uid, i)) end for k, v in pairs(plits) do for x, y in pairs(loot) do if (v + 1) == (y.itemid + 1) then doPlayerAddItem(player, y.itemid, Item(y.uid):getCount()) doRemoveItem(y.uid, Item(y.uid):getCount()) end end end return loot end Crie um novo arquivo dentro de talkactions/script chamado autoloot.lua, e adicione o código.
function onSay(cid, words, param) local var = param:split(",") local loots = Loot:create() loots = getPlayerLootList(cid) if words == "/autoloot" then if var[1] == "add" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then return cid:sendCancelMessage("Alread added in the loot list.") end end loots:add(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", added to loot list.") else return cid:sendCancelMessage("This item dont exist.") end elseif var[1] == "remove" then if getItemIdByName(var[2]) then for k, v in pairs(loots) do if (getItemIdByName(var[2]) + 0 ) == (v + 0) then loots = loots:remove(getItemIdByName(var[2])) loots:saveToPlayer(cid) return cid:sendCancelMessage("Item ".. var[2].. ", removed from loot list.") end end return cid:sendCancelMessage("Item are not in loot list.") else return cid:sendCancelMessage("Item name dont exist.") end elseif var[1] == "list" then local text = "-- My Loot List --\n\n" for k, v in pairs(loots) do text = text.. k..": "..getItemName(v).."\n" end cid:popupFYI(text) end end return true end Dentro dos monstros aonde o script irá funcionar, adicione o código. <script> <event name="AutoLoot"/> </script> As TAG XML são essas. Creaturescript.xml <event script="autoLoot.lua" name="AutoLoot" type="death"/> Talkactions.xml <talkaction words="/autoloot" separator=" " script="autoloot.lua" /> OBS: No meu servidor eu fiz um novo sistema de storages, As funções são "doPlayerAddStorageValue e getPlayerStorageValue", você só precisa mudar o nome da função pois o corpo dela é o mesmo, então mude isso. Caso tenha esquecido de algo ou algum problema com o código me avise. -
Eduardo Dantas deu reputação a 1215171 em VocationsBem venho postar esse script de um npc de vocations.
Explicando:
caso queria adicionar mais vocations faça o seguinte.
Mude isso:
Para isso:
E mude isso:
Para isso:
Pronto assim você acabou de adicionar a vocation elite knight no seu npc caso queira adicionar ainda mais faça o seguinte.
Errado:
E também quando for adicionar na hora de falar:
Agora é só por seu npc configurado no seu servidor e se divertir .
Obrigado pela atenção de todos, sigam o tutorial para adicionar novas vocações sempre em , caso queria que só certas vocações possam trocar a vocação usem esse outro script
Esse script /\ está apenas configurado para elder druid e master sorcerer se quiser adicionar mais siga o tutorial acima.
Só isso galera.
-
Eduardo Dantas deu reputação a Absolute em [Link Quebrado]GLOBAL FULL DOWNLOAD 10.95 [TFS 1.2/FERUMBRAS QUEST/KRAILOS/NEW ARENA/CAST/NEW ITEMS/REWARD/EVENTS/CASINO] ~ AtualizaçõesDISPONÍVEL PARA DOWNLOAD!
Índice
A seguir vocês acompanharão:
1. Introdução
2. Features
3. Imagens
4. Versão
5. Downloads/Scans
6. Notas Finais
PARA TUDO!
Algo jamais visto para download, algo completo!
Tenho hoje o prazer de traze-los o download do servidor que será ESTÁ disponibilizado para galera do TIBIAKING!
Introdução:
Há alguns dias atrás eu e Ciroc resolvemos desenvolver um servidor na versão atual contendo tudo jamais disponibilizado na internet, ou seja; tudo foi realizado do zero e estará sendo disponibilizado para vocês.
Pegamos como base o servidor ORTS do próprio theforgottenserver e trabalhamos arduamente em cima do mesmo, para disponibiliza-los.
Features:
• Novas áreas 10.82/10.90
• Novos items 10.90
• Novos monstros/npcs/montarias 10.90
• Umbral creation
• Reward system Full Global
• Bosses prison roshamuul
• Oramond full incluindo seacrest ground e glooth factory
• Cast system work
• Casino automático
• Raids Full
• Battlefield Event
• Zombie Event
• Exp Shared
• Krailos
• New Arena Tibia.com
• Ferumbras' Ascendant Quest
• Equip HOTKEY
Imagens:
• Depot Thais (Entrada para nova arena)
• Nova arena PVP 10.90
• Cassino dice automático
• Treiners online aquatic room
• Seacrest Ground Cave
• Roshamuul prison key (incluido golden key)
• Novos monstros, novos items e novas outfits/montarias
• Boss Feroxa invasão 100%, mapa também.
• Local para duelar na arena (5vs5)
• Ao dar use, os players serão teleportados pra arena.
• Ferumbras' Ascendant Quest
• Entrada 7 bosses Ferumbras Quest
• Coletando recompensa com questlog.
• Entregando as demonic essences ao npc Mazarius
• Respawn Krailos Otimizado
Versão atual (Atualizaremos juntamente com o tibia.com)
~
Downloads/Scan (DISPONÍVEL):
Atenção: o servidor foi postado em um novo site de upload para tibia que iremos inaugurar oficialmente em breve, agradecimentos otupload.com ao @Guilherme pelo desenvolvimento em si.
Download do servidor completo + database + sources [LINUX]: http://otupload.com/file/1456169626_G1091_ABSOLUTE_CIROC_FOR_TK
Download do servidor completo + database + sources [LINUX] (LINK ALTERNATIVO, PROVISÓRIO): https://www.sendspace.com/file/1ctint
Download do servidor completo + database + sources [WINDOWS]: (Ainda não disponível, caso alguém queira se habilitar e compilar nossas sources, nós e a comunidade TK deixamos os sinceros votos de agradecimentos)
Scan do servidor: https://www.virustotal.com/pt/file/2f5fe15d174d47ec9080e1a9db3d33767e8536794a7b331c4c9646229567de97/analysis/1458112382/
Github: https://github.com/absoluten/absoluteglobal (O projeto será lançado em breve no github para as demais atualizações, sigam lá).
Notas Finais:
Este servidor é completo, é uma base/prévia do meu servidor em que trabalho.
O servidor é completo e encontra-se livre de quaisquer bugs graves.
Estaremos atualizando o servidor juntamente com a versão do tibia.com
Vocês poderão opinar e contribuir com o projeto de qualquer forma; sugestões, reports e etc.
Atenção: em breve nós estaremos trabalhando em um website na altura deste projeto, vocês poderão acompanhar aqui no fórum, fiquem atentos.
Créditos:
*Absolute
*@ciroc
*Orts
*Theforgottenserver
*@xWhiteWolf
Absolute/Ciroc Global, um servidor completo e perfeito, aproveitem.
-
Eduardo Dantas deu reputação a Qwizer em [2015] Gesior 2012 1.0 - V2 - AtualizadoBom, resolvi disponibilizar minhas versão do meus website compatível com o TFS 1.0 (The Forgotten Server 10.41x).
Bom, este website está e um BETA, tem 1 erro nas postagem de noticias mais irei corrigir assim que der nada que interfira na qualidade do mesmo, não há falhas de invasão e algo relacionado a intervenções in game ou no site. NÃO tem a possibilidade de clonar points.
- Guild page com war system
- Players ONLINE, script feito por mim.
- Shop System / Shop Admin - Ja incluso na Database
- TOP level
- Facebook Page
- Layout Atualizado
- Create Account e Account management sem bug
- Guild War Page
Bom, apreciem com moderação!
Website foi testado com uma base desconhecida do TFS 1.0 na versão 10.41. Obteve funcionabilidade de 100% de sucesso.
Download V1
Download Website Download Database Scan Virus Total
Download V2
Painel Admin
News Ticker
Top Level
Bugs Removidos
Download Website Download Database
para instalar para usar essa database e configurar o mysql no config.lua do ot e colocar o caminho do ot no config.php
IMAGENS ANEXADAS
CREDITOS
Gesior e a MIM pelas mudanças correções e edições.