Ir para conteúdo
  • Cadastre-se

Posts Recomendados

  • Respostas 50
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Olá amigos, membros, visitantes, papagaios, enfim... Depois de muito me pedirem o evento SNOWBAL WAR EVENT, trago ele 100% pra vocês. Como funciona? Os jogadores irão se divertir em uma emociona

Testa esse aqui. O meu estava dando o mesmo erro, fui la e configurei uma linha, mais nao me recordo qual! kkkkk, ja faz um tempinho que modifiquei. Testa esse e me fala se funcionou.    

Qual versão do TFS? Se for 0.4 abre o arquivo e mude onTimer para onTime

Posted Images

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

Link para o post
Compartilhar em outros sites

Perfeito o Evento. Rep++

 

Erro que pode confundir algumas pessoas sem experiência, 

Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:

Em data/actions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:

 

Deveria se na mesma pasta certo ? Hehe! 

 

xD

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
1 hora atrás, KotZletY disse:

Perfeito o Evento. Rep++

 

Erro que pode confundir algumas pessoas sem experiência, 

Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:

Em data/actions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:

 

Deveria se na mesma pasta certo ? Hehe! 

 

xD

 

 

Bem notado, foi uma falta de atenção minha, obrigado, corrigido.

 

1 hora atrás, Matk disse:

@Absolute este evento é para TFS 0.4 ou 1.x?

Está pra 0_4 as funções, caso queira adapto pra 1.0 tb.

YDmXTU2.png

 

Entenda tudo sobre VPS, DEDICADOS & HOSPEDAGENS. => Clique aqui

Global Full Download 10.9x - TFS 1.2/FERUMBRAS/KRAILOS. => Clique aqui

 

Muitos querem aquilo que você tem, 
mas vão desistir quando souberem o preço que você pagou.

 

skype-favicon.png lu.lukinha

message-16.png [email protected]

Link para o post
Compartilhar em outros sites

é obrigatorio fazer a parte do phpmyadmin pra funcionar o evento ? é que uso um servidor sem site e queria colocar ese evento no meu server

Editado por bismarkzika
Pq quero (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
5 horas atrás, bismarkzika disse:

é obrigatorio fazer a parte do phpmyadmin pra funcionar o evento ? é que uso um servidor sem site e queria colocar ese evento no meu server

 Sim

Link para o post
Compartilhar em outros sites

usando mesmo mapa, nem mudei as posições so coloquei o mapa nas mesmas coordenadas o.O:hum:

aaaaaaaaaaaa.png

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
Em 18/11/2016 ás 16:00, pablobion disse:

usando mesmo mapa, nem mudei as posições so coloquei o mapa nas mesmas coordenadas o.O:hum:

aaaaaaaaaaaa.png

Estou com o mesmo problema... Alguém ajuda ?

 

Link para o post
Compartilhar em outros sites
Em 20/11/2016 ás 19:56, Reconnect disse:

Estou com o mesmo problema... Alguém ajuda ?

 


nem sei a solução :/

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

Tem um erro aqui:

posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)

Não entendi também, ele chamou "Position" como se fosse uma função, mas enfim, essa variável tem que estar no método de coordenadas do TFS (x,y,z) pois ele irá fazer uma verificação do "isInWallArray" depois, e eu acredito que tem ser em "{x,y,z}", portanto fiz essa alteração:

posti = {math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), t_l.z}

Atenção para mudar a coordenada Z porque no script está padrão 7 e isso não está correto.

Link para o post
Compartilhar em outros sites
Em 29/11/2016 ás 03:50, Chiitus disse:

Tem um erro aqui:


posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)

Não entendi também, ele chamou "Position" como se fosse uma função, mas enfim, essa variável tem que estar no método de coordenadas do TFS (x,y,z) pois ele irá fazer uma verificação do "isInWallArray" depois, e eu acredito que tem ser em "{x,y,z}", portanto fiz essa alteração:


posti = {math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), t_l.z}

Atenção para mudar a coordenada Z porque no script está padrão 7 e isso não está correto.

Eu entendi o motivo dos erros, o position parece ser uma função de outro TSF... Essa alteração que vc fez deu certo ? Irei testar, heuehueheuhueu

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 01/12/2016 ás 07:43, Reconnect disse:

Eu entendi o motivo dos erros, o position parece ser uma função de outro TSF... Essa alteração que vc fez deu certo ? Irei testar, heuehueheuhueu

funcionou?

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
  • 4 weeks later...
Em 14/11/2016 ás 20:15, Absolute disse:

Ap2pbop.png

Olá amigos, membros, visitantes, papagaios, enfim...

Depois de muito me pedirem o evento SNOWBAL WAR EVENT, trago ele 100% pra vocês.

Como funciona?
Os jogadores irão se divertir em uma emocionante partida de guerra de bolas de neve. O objetivo principal do evento é derrubar o número máximo de jogadores durante uma partida - atirando bolas de neve contra seus inimigos. O jogador que mais pontos fizer até o termino do evento será o vencedor (recompensa pode ser configurada).

Sem delongas, vamos ao que interessa...

 

 


 

 


Em data/actions abra o seu actions.xml e insira a seguinte linha:

 

 


<action actionid="7900" event="script" value="snowballaction.lua" />



Em data/actions/scripts crie um arquivo com o nome de snowballaction.lua e insira o seguinte conteúdo:


function onUse(cid, item, frompos, item2, topos)
if item.actionid == 7900 then
	if(SBW_AMMOINFI) then
		doPlayerSendTextMessage(cid, 27, "as bolas de neve sao infinitas, nao ha necessidade que voce compre-as.")
	else
		if (getPlayerStorageValue(cid, SBW_SCORE) > 0) and (getPlayerStorageValue(cid, SBW_AMMO) < 30) then
			doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1)
			doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)+SBW_AMMOBUY)
			doPlayerSendTextMessage(cid, 27, "Voce trocou " .. SBW_AMMOBUY .. "x bolas de neve por 1 ponto de placar.")
			doSendMagicEffect(getCreaturePosition(cid),4)
		else
			doPlayerSendTextMessage(cid, 27, "Voce nao possui pontos de jogo o suficiente ou ja esta carregando muitas bolas de neve.")                      
		end
	end
end
end

 


 


 

 


Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:

 


<talkaction words="!snowball" event="script" value="snowballtalk.lua"/>



Em data/talkactions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:


function onSay(cid, words, param, channel)
local k = string.explode(param, ",")
if(k[1] ~= nil) then
		if(string.upper(k[1]) == 'INFO') then
			local score = {}
			local output =  "Voce tem " .. getPlayerStorageValue(cid, SBW_SCORE) .. " pontos.\nVoce tem "..getPlayerStorageValue(cid, SBW_AMMO).."x municoes.\n------------------\nO maior matador:\n"
			for _, pid in ipairs(getPlayersOnline()) do
				if getPlayerStorageValue(pid, SBW_INEVENT) then
					table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)})
				end
			end
			local lx = table.getn(score)
			if(lx > 3) then lx = 3 end
				table.sort(score, function(a, b) return a[2] > b[2] end)
				for k = 1,lx do
					output = output .. k..". "..score[k][1] .." [".. score[k][2] .."].\n"
				end
				doPlayerPopupFYI(cid, output)
			end
if (string.upper(k[1]) == 'ATIRAR') then
	if(getPlayerStorageValue(cid, SBW_INEVENT) == 1) and not getTileInfo(getThingPos(cid)).protection then
		if getPlayerStorageValue(cid, SBW_EXAUSTHED) <= 1 then
			if(getPlayerStorageValue(cid, SBW_AMMO) > 0) then
				if SBW_STATUS == 'on' then
					if(SBW_AMMOINFI == false) then
						doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)-1)
					end
					doPlayerSetStorageValue(cid, SBW_EXAUSTHED, 2)
					lineAnimation(getPlayerLookDirection(cid),getCreaturePosition(cid),12,cid,1,0,1,0,0,0,1,0)
					addEvent(doPlayerSetStorageValue, SBW_SHOOTEXAUSTHED, cid, SBW_EXAUSTHED, 1)
					if (getPlayerStorageValue(cid, SBW_AMMO) ~= 1) then
						doPlayerSendTextMessage(cid, 27, "Restam "..getPlayerStorageValue(cid, SBW_AMMO).."x bolas de neve.")
					else
						doPlayerSendTextMessage(cid, 27, "Usando sua ultima bola de neve, recarregue.")
					end
				end
			else
				doPlayerSendCancel(cid, "Voce esta sem bolas de neve, recarregue no centro do campo ou mate um inimigo.")
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)     
			end
		else
			doPlayerPopupFYI(cid, "Acalme-se voce deve esperar para atirar novamente.") 
			doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
			return false
		end
	else
		doPlayerPopupFYI(cid, "Voce precisa estar dentro evento ou fora da pz.") 
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
	end
end
end
return true
end
 
 
                function lineAnimation(lookDir,playerPos,effect,cid,fvar,fpos,ffound,fposV,fcheck,fvcid,floopCounter,fvpid, name)
                local var = fvar
                local pos = fpos
                local found = ffound
                local posV = fposV
                local check = fcheck
                local vcid = fvcid
                local loopCounter = floopCounter
                local vpid = fvpid
                local storage = SBW_EXAUSTHED
                        if var < 2 then
                                vcid = cid
                        end
                        pos = playerPos
                        if not isInWallArray(convert(lookDir,pos)) then--isInWallArray({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z}) then --isInArray(t.onShoot.misc.walls_id, getThingfromPos({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z, stackpos=0}).itemid) then
                                doSendDistanceShoot(pos, convert(lookDir,pos),effect)
                                pos = convert(lookDir,pos)
                                var=var+1
                                posV = convertV(lookDir,playerPos)
                                for _, pid in ipairs(getPlayersOnline()) do
                                        if (getCreaturePosition(pid).x == pos.x and getCreaturePosition(pid).y == pos.y and getCreaturePosition(pid).z == pos.z) then
                                                --if loopCounter > 2 then
                                                vpid = pid
                                                --end
                                                if (vpid ~= vcid) then
                                                        if var > 2 then
                                                                if (getCreaturePosition(pid).x == posV.x and getCreaturePosition(pid).y == posV.y and getCreaturePosition(pid).z == posV.z) then
                                                                        killPlayer(pid,pos,getCreatureName(vcid))
                                                                        if (lookDir == 0) or (lookDir == 2) then
                                                                                var = 6
                                                                        else
                                                                                var = 8
                                                                        end
                                                                end
                                                        end
                                                        killPlayer(pid,pos,vcid)
                                                        if (lookDir == 0) or (lookDir == 2) then
                                                                var = 6
                                                        else
                                                                var = 8
                                                        end
                                                end
                                        end
                                        loopCounter = loopCounter +1
                                end    
                                if (lookDir == 0) or (lookDir == 2) then
                                        if var ~= 6 then
                                                addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid)
                                        else
                                                var = 1
                                        end
                                else
                                        if var ~= 8 then
                                                addEvent(lineAnimation,  SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid)
                                        else
                                                var = 1
                                        end
                                end
                        else
                                doSendMagicEffect(convert(lookDir,pos),2)
                                var = 1
                        end
                end
 
                local ret = {}
                function convert(lookDir,pos)
                local positions = {
                        [0] = {x = pos.x, y = pos.y-1, z = pos.z},
                        [1] = {x = pos.x+1, y = pos.y, z = pos.z},
                        [2] = {x = pos.x, y = pos.y+1, z = pos.z},
                        [3] = {x = pos.x-1, y = pos.y, z = pos.z}
                        }
                        ret = positions[lookDir]
                return ret
                end
 
 
                local ret = {}
                function convertV(lookDir,pos)
                local positions = {
                        [0] = {x = pos.x, y = pos.y+1, z = pos.z},
                        [1] = {x = pos.x-1, y = pos.y, z = pos.z},
                        [2] = {x = pos.x, y = pos.y-1, z = pos.z},
                        [3] = {x = pos.x+1, y = pos.y, z = pos.z}
                        }
                        ret = positions[lookDir]
                return ret
                end
				
				function isInWallArray(pos)
                        for k = 0, table.getn(SBW_WALLSID) do
                                if getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k] then --this doesn't even make sense but tried other ways and it gave errors, so meh 2lazy2search
									return true    
                                end
                        end
                        return false
                end
                               
                function killPlayer(cid, pos, killer)
                    local t_l = SBW_AREA[1]
					local b_r = SBW_AREA[2]
					local posti = {}
					local isPossibleToTeleportPlayer = false
					while (isPossibleToTeleportPlayer == FALSE) do
						posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)
						if isInWallArray(posti) == FALSE then
							isPossibleToTeleportPlayer = TRUE
						end
					end
					doTeleportThing(cid, posti)
					doSendMagicEffect(pos,2)
					doSendMagicEffect(posti,6)
					doSendAnimatedText(pos, ""..getCreatureName(killer).." ", 55)
					doPlayerSendTextMessage(cid, 27, "Voce morreu para "..getCreatureName(killer)..".")
					doPlayerSetStorageValue(killer, SBW_SCORE, getPlayerStorageValue(killer, SBW_SCORE)+SBW_POINTSKILL)				
					doPlayerSendTextMessage(killer, 27, "You've killed "..getCreatureName(cid)..".")
					if SBW_LOSTSCORE then
						doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1)
					end
					if SBW_RESETAMMO then
						doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO)
					end
                end
                                               
                

 


 

 

 

 

Em data/globalevents abra o seu globalevents.xml e insira a seguinte linha:


<globalevent name="StartSBW" time="19:00" event="script" value="events/snowballglobalevent.lua"/>


Em data/globalevents/scripts crie um arquivo com o nome de snowballglobalevent.lua e insira o seguinte conteúdo:


function onTime()
				
function isInWallArray(pos)
    for k = 0, table.getn(SBW_WALLSID) do
        if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then
			return true    
        end	
    end
 return false
end

               
function endsnowball()
	local score = {}
	if not SBW_USEWAIT then
		doRemoveItem(getTileItemById(SBW_TP, 1387).uid)
	end
	for _, pid in ipairs(getPlayersOnline()) do
		if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then
			table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)})
			doPlayerSetStorageValue(pid, SBW_INEVENT, 0)
			doPlayerSetStorageValue(pid, SBW_SCORE, 0)
			doPlayerSetStorageValue(pid, SBW_AMMO, 0)
			doTeleportThing(pid, SBW_TPEND)
		end
	end
	table.sort(score, function(a, b) return a[2] > b[2] end)
	--local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)]
	local hora = os.date("%X")
	local data = os.date("%x")	
	if table.getn(score) > 0 then
		if SBW_ADDREWARD then
			for _, pid in ipairs(getPlayersOnline()) do
				if getCreatureName(pid) == score[1][1] then
					for op,ad in pairs(SBW_REWARDS) do
						doPlayerAddItem(pid, ad[1], ad[2])
					end
					break
                end
            end
        end
		db.query("INSERT INTO `snowballwar`  VALUES ('', ".. db.escapeString(score[1][1]) ..  ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");")  
		db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") 
        doBroadcastMessage("[SNOWBALL EVENT] encerrou-se, parabens ao jogador "..score[1][1].." que venceu o SnowBall Event com "..score[1][2].." pontos.")
    end
	return true
end

local t_l = SBW_AREA[1]
local b_r = SBW_AREA[2]

function moveToEvent()
for _, pid in ipairs(getPlayersOnline()) do
	if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then
		local posti = {}
		local isPossibleToTeleportPlayer = false
		while (isPossibleToTeleportPlayer == FALSE) do
			posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)
			if (isInWallArray(posti) == FALSE) then
				isPossibleToTeleportPlayer = TRUE
			end
		end
		doTeleportThing(pid, posti)
		doPlayerSetStorageValue(pid, SBW_INEVENT, 1)
		doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO)
		doPlayerSetStorageValue(pid, SBW_SCORE, 0)
		doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.")               														
	end
end
doRemoveItem(getTileItemById(SBW_TP, 1387).uid)
addEvent(endsnowball, SBW_DURATION*1000*60)
doBroadcastMessage(SBW_MSGSTART)
end

local time = os.date("*t")
local timeopen1 = math.ceil(SBW_TIMEWAIT / 4)
local timeopen2 = math.ceil(SBW_TIMEWAIT / 2)
if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then
	doBroadcastMessage(SBW_MSGWARNING)
	if SBW_USEWAIT then
		addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!")
		if (timeopen2 ~= timeopen1) then
			addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!")
		end
        addEvent(moveToEvent, SBW_TIMEWAIT*1000*60)
        doCreateTeleport(1387, SBW_TPGO, SBW_TP)
    else
		if SBW_TFS == "0.3" then
			doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880)
		else
			doSetItemActionId(doCreateItem(1387, SBW_TP), 2880)
        end
        if(SBW_DURATION > 0) then
            addEvent(endsnowball, SBW_DURATION*1000*60)
        end
    end
end
return true
end

 


 

 

 

 

Em data/movements abra o seu movements.xml e insira a seguinte linha:


<movevent type="StepIn" actionid ="2880" event="script" value="snowballmovement.lua"/>

 

Em data/movements/scripts crie um arquivo com o nome de snowballglobalmovement.lua e insira o seguinte conteúdo:


function onStepIn(cid, item, pos)
	doTeleportThing(cid, SBW_TPGO)
	doBroadcastMessage("[SNOWBALL WAR] O " ..getCreatureName(cid).. " player esta participando do evento snowball.", MESSAGE_STATUS_CONSOLE_ORANGE)					
	doPlayerSetStorageValue(cid, SBW_INEVENT, 1)
	doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO)
	doPlayerSetStorageValue(cid, SBW_SCORE, 0)           														
end

 


 

 

 

 

Já estamos quase terminando!
Agora em data/lib crie um arquivo com o nome de SBW.lua com o seguinte conteúdo:
 


-- This script is part of Snow Ball War Event Tibiaking Absolute
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

-- //

-- POSIÇÕES IMPORTANTES
SBW_AREA = {{x = 1214, y = 1205, z = 7}, {x = 1251, y = 1242, z = 7}}-- AREA DO EVENTO | Canto superior esquerdo / inferior direito
SBW_WAITROOM = {{x = 1229, y = 1220, z = 6}, {x = 1235, y = 1226, z = 6}} -- AREA DE ESPERA | Canto superior esquerdo / inferior direito
SBW_TP = {x = 165, y = 45, z = 7} -- local onde teleport sera criado (entrada de jogadores)
SBW_TPGO = {x = 1232, y = 1223, z = 6} -- local onde teleport vai levar (saida de jogadores)
SBW_TPEND = {x = 155, y = 54, z = 7} -- local onde serao teleport ao final do evento
SBW_GERADOR = {x = 1232, y = 1223, z = 7} -- local onde gerador vai ficar

-- CONFIGURAÇÕES DO EVENTO
SBW_DAYS = {1,2,3,4,5,6,7} -- dias de semana que vai abrir
SBW_DURATION = 10 -- duração do evento em minutos
SBW_POINTSKILL = 1 -- pontos de jogo por morte
SBW_AMMOBUY = 20 -- quantia de munições compradas por cada ponto
SBW_MINAMMO = 50 -- munição inicial dos jogadores
SBW_TIMEWAIT = 3 -- tempo na sala de espera em minutos
SBW_AMMOINFI = false
SBW_LOSTSCORE = true
SBW_RANDOMIZE = true
SBW_RESETAMMO = true
SBW_STARTAUTO = true
SBW_USEWAIT = true

--PREMIO DO EVENTO
SBW_ADDREWARD = true
SBW_REWARDS = {
				{6527,500},
				{2345,1}
			}


-- // Não mexa daqui para baixo
SBW_TFS = "0.4" 

-- STORAGES
SBW_EXAUSTHED = 2455 
SBW_INEVENT = 2460 
SBW_SCORE = 2465
SBW_AMMO = 2400


SBW_WALLSID = {5324,7003,7021,6712,7023,7002,6713,6714,6869,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6707,6708,6709,6710,6711,2698,2697,7020,6719,6720,6721,6722,6723,6724,6725,6726,6727,6761,6762,6768,6769,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4664,4665,4666,7008,7009,7010,7011,8239,7004,7005,7006,7007,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638,7022}
SBW_BALLSPEED = 150
SBW_SHOOTEXAUSTHED = 1000
SBW_SHOOTDIR = 0                             
SBW_STATUS = 'on' 

-- MENSAGENS
SBW_MSGWARNING = "[SNOWBALL WAR] Abriu o teleport de ingresso para o evento, para participar se dirija ate o templo do servidor."
SBW_MSGSTART = "[SNOWBALL WAR] O teleport foi removido e o evento foi iniciado, boa sorte a todos participantes."

A frente das configuração solicitadas explica onde devem ser modificados.


 


 

 

 

 

E por fim, vá até o seu banco de dados (phpmyadmin) e insira a seguinte query:


CREATE TABLE IF NOT EXISTS `snowballwar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `score` int(11) NOT NULL,
  `data` varchar(255) NOT NULL,
  `hora` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

Ainda no phpmyadmin execute:


ALTER TABLE `players` ADD `sbw_points` int(11);


 

 

Importe o arquivo SNOWBALL.otbm em seu mapa!
Imagem do mapa:
YmMrwkx.png

Download do mapa: https://www.sendspace.com/file/mae37z
Scan do mapa: https://www.virustotal.com/pt/file/94a507c71ef4cc241e415f2a8290441f7fa77809d804e24be18e9581a85c4740/analysis/1479161634/

 




 



É importante lembrar que peguei o script de um autor e realizei as modificações o tornando público para a comunidade exclusiva do TIBIAKING.

Espero que façam um ótimo proveito.

See you later.

Teria como colocar pra SQLiteStudio pf ?!

Em 14/11/2016 ás 20:15, Absolute disse:

Ap2pbop.png

Olá amigos, membros, visitantes, papagaios, enfim...

Depois de muito me pedirem o evento SNOWBAL WAR EVENT, trago ele 100% pra vocês.

Como funciona?
Os jogadores irão se divertir em uma emocionante partida de guerra de bolas de neve. O objetivo principal do evento é derrubar o número máximo de jogadores durante uma partida - atirando bolas de neve contra seus inimigos. O jogador que mais pontos fizer até o termino do evento será o vencedor (recompensa pode ser configurada).

Sem delongas, vamos ao que interessa...

 

 


 

 


Em data/actions abra o seu actions.xml e insira a seguinte linha:

 

 


<action actionid="7900" event="script" value="snowballaction.lua" />



Em data/actions/scripts crie um arquivo com o nome de snowballaction.lua e insira o seguinte conteúdo:


function onUse(cid, item, frompos, item2, topos)
if item.actionid == 7900 then
	if(SBW_AMMOINFI) then
		doPlayerSendTextMessage(cid, 27, "as bolas de neve sao infinitas, nao ha necessidade que voce compre-as.")
	else
		if (getPlayerStorageValue(cid, SBW_SCORE) > 0) and (getPlayerStorageValue(cid, SBW_AMMO) < 30) then
			doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1)
			doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)+SBW_AMMOBUY)
			doPlayerSendTextMessage(cid, 27, "Voce trocou " .. SBW_AMMOBUY .. "x bolas de neve por 1 ponto de placar.")
			doSendMagicEffect(getCreaturePosition(cid),4)
		else
			doPlayerSendTextMessage(cid, 27, "Voce nao possui pontos de jogo o suficiente ou ja esta carregando muitas bolas de neve.")                      
		end
	end
end
end

 


 


 

 


Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:

 


<talkaction words="!snowball" event="script" value="snowballtalk.lua"/>



Em data/talkactions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:


function onSay(cid, words, param, channel)
local k = string.explode(param, ",")
if(k[1] ~= nil) then
		if(string.upper(k[1]) == 'INFO') then
			local score = {}
			local output =  "Voce tem " .. getPlayerStorageValue(cid, SBW_SCORE) .. " pontos.\nVoce tem "..getPlayerStorageValue(cid, SBW_AMMO).."x municoes.\n------------------\nO maior matador:\n"
			for _, pid in ipairs(getPlayersOnline()) do
				if getPlayerStorageValue(pid, SBW_INEVENT) then
					table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)})
				end
			end
			local lx = table.getn(score)
			if(lx > 3) then lx = 3 end
				table.sort(score, function(a, b) return a[2] > b[2] end)
				for k = 1,lx do
					output = output .. k..". "..score[k][1] .." [".. score[k][2] .."].\n"
				end
				doPlayerPopupFYI(cid, output)
			end
if (string.upper(k[1]) == 'ATIRAR') then
	if(getPlayerStorageValue(cid, SBW_INEVENT) == 1) and not getTileInfo(getThingPos(cid)).protection then
		if getPlayerStorageValue(cid, SBW_EXAUSTHED) <= 1 then
			if(getPlayerStorageValue(cid, SBW_AMMO) > 0) then
				if SBW_STATUS == 'on' then
					if(SBW_AMMOINFI == false) then
						doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)-1)
					end
					doPlayerSetStorageValue(cid, SBW_EXAUSTHED, 2)
					lineAnimation(getPlayerLookDirection(cid),getCreaturePosition(cid),12,cid,1,0,1,0,0,0,1,0)
					addEvent(doPlayerSetStorageValue, SBW_SHOOTEXAUSTHED, cid, SBW_EXAUSTHED, 1)
					if (getPlayerStorageValue(cid, SBW_AMMO) ~= 1) then
						doPlayerSendTextMessage(cid, 27, "Restam "..getPlayerStorageValue(cid, SBW_AMMO).."x bolas de neve.")
					else
						doPlayerSendTextMessage(cid, 27, "Usando sua ultima bola de neve, recarregue.")
					end
				end
			else
				doPlayerSendCancel(cid, "Voce esta sem bolas de neve, recarregue no centro do campo ou mate um inimigo.")
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)     
			end
		else
			doPlayerPopupFYI(cid, "Acalme-se voce deve esperar para atirar novamente.") 
			doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
			return false
		end
	else
		doPlayerPopupFYI(cid, "Voce precisa estar dentro evento ou fora da pz.") 
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
	end
end
end
return true
end
 
 
                function lineAnimation(lookDir,playerPos,effect,cid,fvar,fpos,ffound,fposV,fcheck,fvcid,floopCounter,fvpid, name)
                local var = fvar
                local pos = fpos
                local found = ffound
                local posV = fposV
                local check = fcheck
                local vcid = fvcid
                local loopCounter = floopCounter
                local vpid = fvpid
                local storage = SBW_EXAUSTHED
                        if var < 2 then
                                vcid = cid
                        end
                        pos = playerPos
                        if not isInWallArray(convert(lookDir,pos)) then--isInWallArray({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z}) then --isInArray(t.onShoot.misc.walls_id, getThingfromPos({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z, stackpos=0}).itemid) then
                                doSendDistanceShoot(pos, convert(lookDir,pos),effect)
                                pos = convert(lookDir,pos)
                                var=var+1
                                posV = convertV(lookDir,playerPos)
                                for _, pid in ipairs(getPlayersOnline()) do
                                        if (getCreaturePosition(pid).x == pos.x and getCreaturePosition(pid).y == pos.y and getCreaturePosition(pid).z == pos.z) then
                                                --if loopCounter > 2 then
                                                vpid = pid
                                                --end
                                                if (vpid ~= vcid) then
                                                        if var > 2 then
                                                                if (getCreaturePosition(pid).x == posV.x and getCreaturePosition(pid).y == posV.y and getCreaturePosition(pid).z == posV.z) then
                                                                        killPlayer(pid,pos,getCreatureName(vcid))
                                                                        if (lookDir == 0) or (lookDir == 2) then
                                                                                var = 6
                                                                        else
                                                                                var = 8
                                                                        end
                                                                end
                                                        end
                                                        killPlayer(pid,pos,vcid)
                                                        if (lookDir == 0) or (lookDir == 2) then
                                                                var = 6
                                                        else
                                                                var = 8
                                                        end
                                                end
                                        end
                                        loopCounter = loopCounter +1
                                end    
                                if (lookDir == 0) or (lookDir == 2) then
                                        if var ~= 6 then
                                                addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid)
                                        else
                                                var = 1
                                        end
                                else
                                        if var ~= 8 then
                                                addEvent(lineAnimation,  SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid)
                                        else
                                                var = 1
                                        end
                                end
                        else
                                doSendMagicEffect(convert(lookDir,pos),2)
                                var = 1
                        end
                end
 
                local ret = {}
                function convert(lookDir,pos)
                local positions = {
                        [0] = {x = pos.x, y = pos.y-1, z = pos.z},
                        [1] = {x = pos.x+1, y = pos.y, z = pos.z},
                        [2] = {x = pos.x, y = pos.y+1, z = pos.z},
                        [3] = {x = pos.x-1, y = pos.y, z = pos.z}
                        }
                        ret = positions[lookDir]
                return ret
                end
 
 
                local ret = {}
                function convertV(lookDir,pos)
                local positions = {
                        [0] = {x = pos.x, y = pos.y+1, z = pos.z},
                        [1] = {x = pos.x-1, y = pos.y, z = pos.z},
                        [2] = {x = pos.x, y = pos.y-1, z = pos.z},
                        [3] = {x = pos.x+1, y = pos.y, z = pos.z}
                        }
                        ret = positions[lookDir]
                return ret
                end
				
				function isInWallArray(pos)
                        for k = 0, table.getn(SBW_WALLSID) do
                                if getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k] then --this doesn't even make sense but tried other ways and it gave errors, so meh 2lazy2search
									return true    
                                end
                        end
                        return false
                end
                               
                function killPlayer(cid, pos, killer)
                    local t_l = SBW_AREA[1]
					local b_r = SBW_AREA[2]
					local posti = {}
					local isPossibleToTeleportPlayer = false
					while (isPossibleToTeleportPlayer == FALSE) do
						posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)
						if isInWallArray(posti) == FALSE then
							isPossibleToTeleportPlayer = TRUE
						end
					end
					doTeleportThing(cid, posti)
					doSendMagicEffect(pos,2)
					doSendMagicEffect(posti,6)
					doSendAnimatedText(pos, ""..getCreatureName(killer).." ", 55)
					doPlayerSendTextMessage(cid, 27, "Voce morreu para "..getCreatureName(killer)..".")
					doPlayerSetStorageValue(killer, SBW_SCORE, getPlayerStorageValue(killer, SBW_SCORE)+SBW_POINTSKILL)				
					doPlayerSendTextMessage(killer, 27, "You've killed "..getCreatureName(cid)..".")
					if SBW_LOSTSCORE then
						doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1)
					end
					if SBW_RESETAMMO then
						doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO)
					end
                end
                                               
                

 


 

 

 

 

Em data/globalevents abra o seu globalevents.xml e insira a seguinte linha:


<globalevent name="StartSBW" time="19:00" event="script" value="events/snowballglobalevent.lua"/>


Em data/globalevents/scripts crie um arquivo com o nome de snowballglobalevent.lua e insira o seguinte conteúdo:


function onTime()
				
function isInWallArray(pos)
    for k = 0, table.getn(SBW_WALLSID) do
        if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then
			return true    
        end	
    end
 return false
end

               
function endsnowball()
	local score = {}
	if not SBW_USEWAIT then
		doRemoveItem(getTileItemById(SBW_TP, 1387).uid)
	end
	for _, pid in ipairs(getPlayersOnline()) do
		if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then
			table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)})
			doPlayerSetStorageValue(pid, SBW_INEVENT, 0)
			doPlayerSetStorageValue(pid, SBW_SCORE, 0)
			doPlayerSetStorageValue(pid, SBW_AMMO, 0)
			doTeleportThing(pid, SBW_TPEND)
		end
	end
	table.sort(score, function(a, b) return a[2] > b[2] end)
	--local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)]
	local hora = os.date("%X")
	local data = os.date("%x")	
	if table.getn(score) > 0 then
		if SBW_ADDREWARD then
			for _, pid in ipairs(getPlayersOnline()) do
				if getCreatureName(pid) == score[1][1] then
					for op,ad in pairs(SBW_REWARDS) do
						doPlayerAddItem(pid, ad[1], ad[2])
					end
					break
                end
            end
        end
		db.query("INSERT INTO `snowballwar`  VALUES ('', ".. db.escapeString(score[1][1]) ..  ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");")  
		db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") 
        doBroadcastMessage("[SNOWBALL EVENT] encerrou-se, parabens ao jogador "..score[1][1].." que venceu o SnowBall Event com "..score[1][2].." pontos.")
    end
	return true
end

local t_l = SBW_AREA[1]
local b_r = SBW_AREA[2]

function moveToEvent()
for _, pid in ipairs(getPlayersOnline()) do
	if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then
		local posti = {}
		local isPossibleToTeleportPlayer = false
		while (isPossibleToTeleportPlayer == FALSE) do
			posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7)
			if (isInWallArray(posti) == FALSE) then
				isPossibleToTeleportPlayer = TRUE
			end
		end
		doTeleportThing(pid, posti)
		doPlayerSetStorageValue(pid, SBW_INEVENT, 1)
		doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO)
		doPlayerSetStorageValue(pid, SBW_SCORE, 0)
		doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.")               														
	end
end
doRemoveItem(getTileItemById(SBW_TP, 1387).uid)
addEvent(endsnowball, SBW_DURATION*1000*60)
doBroadcastMessage(SBW_MSGSTART)
end

local time = os.date("*t")
local timeopen1 = math.ceil(SBW_TIMEWAIT / 4)
local timeopen2 = math.ceil(SBW_TIMEWAIT / 2)
if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then
	doBroadcastMessage(SBW_MSGWARNING)
	if SBW_USEWAIT then
		addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!")
		if (timeopen2 ~= timeopen1) then
			addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!")
		end
        addEvent(moveToEvent, SBW_TIMEWAIT*1000*60)
        doCreateTeleport(1387, SBW_TPGO, SBW_TP)
    else
		if SBW_TFS == "0.3" then
			doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880)
		else
			doSetItemActionId(doCreateItem(1387, SBW_TP), 2880)
        end
        if(SBW_DURATION > 0) then
            addEvent(endsnowball, SBW_DURATION*1000*60)
        end
    end
end
return true
end

 


 

 

 

 

Em data/movements abra o seu movements.xml e insira a seguinte linha:


<movevent type="StepIn" actionid ="2880" event="script" value="snowballmovement.lua"/>

 

Em data/movements/scripts crie um arquivo com o nome de snowballglobalmovement.lua e insira o seguinte conteúdo:


function onStepIn(cid, item, pos)
	doTeleportThing(cid, SBW_TPGO)
	doBroadcastMessage("[SNOWBALL WAR] O " ..getCreatureName(cid).. " player esta participando do evento snowball.", MESSAGE_STATUS_CONSOLE_ORANGE)					
	doPlayerSetStorageValue(cid, SBW_INEVENT, 1)
	doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO)
	doPlayerSetStorageValue(cid, SBW_SCORE, 0)           														
end

 


 

 

 

 

Já estamos quase terminando!
Agora em data/lib crie um arquivo com o nome de SBW.lua com o seguinte conteúdo:
 


-- This script is part of Snow Ball War Event Tibiaking Absolute
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

-- //

-- POSIÇÕES IMPORTANTES
SBW_AREA = {{x = 1214, y = 1205, z = 7}, {x = 1251, y = 1242, z = 7}}-- AREA DO EVENTO | Canto superior esquerdo / inferior direito
SBW_WAITROOM = {{x = 1229, y = 1220, z = 6}, {x = 1235, y = 1226, z = 6}} -- AREA DE ESPERA | Canto superior esquerdo / inferior direito
SBW_TP = {x = 165, y = 45, z = 7} -- local onde teleport sera criado (entrada de jogadores)
SBW_TPGO = {x = 1232, y = 1223, z = 6} -- local onde teleport vai levar (saida de jogadores)
SBW_TPEND = {x = 155, y = 54, z = 7} -- local onde serao teleport ao final do evento
SBW_GERADOR = {x = 1232, y = 1223, z = 7} -- local onde gerador vai ficar

-- CONFIGURAÇÕES DO EVENTO
SBW_DAYS = {1,2,3,4,5,6,7} -- dias de semana que vai abrir
SBW_DURATION = 10 -- duração do evento em minutos
SBW_POINTSKILL = 1 -- pontos de jogo por morte
SBW_AMMOBUY = 20 -- quantia de munições compradas por cada ponto
SBW_MINAMMO = 50 -- munição inicial dos jogadores
SBW_TIMEWAIT = 3 -- tempo na sala de espera em minutos
SBW_AMMOINFI = false
SBW_LOSTSCORE = true
SBW_RANDOMIZE = true
SBW_RESETAMMO = true
SBW_STARTAUTO = true
SBW_USEWAIT = true

--PREMIO DO EVENTO
SBW_ADDREWARD = true
SBW_REWARDS = {
				{6527,500},
				{2345,1}
			}


-- // Não mexa daqui para baixo
SBW_TFS = "0.4" 

-- STORAGES
SBW_EXAUSTHED = 2455 
SBW_INEVENT = 2460 
SBW_SCORE = 2465
SBW_AMMO = 2400


SBW_WALLSID = {5324,7003,7021,6712,7023,7002,6713,6714,6869,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6707,6708,6709,6710,6711,2698,2697,7020,6719,6720,6721,6722,6723,6724,6725,6726,6727,6761,6762,6768,6769,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4664,4665,4666,7008,7009,7010,7011,8239,7004,7005,7006,7007,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638,7022}
SBW_BALLSPEED = 150
SBW_SHOOTEXAUSTHED = 1000
SBW_SHOOTDIR = 0                             
SBW_STATUS = 'on' 

-- MENSAGENS
SBW_MSGWARNING = "[SNOWBALL WAR] Abriu o teleport de ingresso para o evento, para participar se dirija ate o templo do servidor."
SBW_MSGSTART = "[SNOWBALL WAR] O teleport foi removido e o evento foi iniciado, boa sorte a todos participantes."

A frente das configuração solicitadas explica onde devem ser modificados.


 


 

 

 

 

E por fim, vá até o seu banco de dados (phpmyadmin) e insira a seguinte query:


CREATE TABLE IF NOT EXISTS `snowballwar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `score` int(11) NOT NULL,
  `data` varchar(255) NOT NULL,
  `hora` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

Ainda no phpmyadmin execute:


ALTER TABLE `players` ADD `sbw_points` int(11);


 

 

Importe o arquivo SNOWBALL.otbm em seu mapa!
Imagem do mapa:
YmMrwkx.png

Download do mapa: https://www.sendspace.com/file/mae37z
Scan do mapa: https://www.virustotal.com/pt/file/94a507c71ef4cc241e415f2a8290441f7fa77809d804e24be18e9581a85c4740/analysis/1479161634/

 




 



É importante lembrar que peguei o script de um autor e realizei as modificações o tornando público para a comunidade exclusiva do TIBIAKING.

Espero que façam um ótimo proveito.

See you later.

Teria como colocar pra SQLiteStudio pf ?!

Link para o post
Compartilhar em outros sites
  • 5 weeks later...

@tirso é proibido dar up cara.

Em quanto ao erro, o erro foi do absolute, mais será que devemos ser capaz de enxerga ele ?

Olha o nome do erro, diretório snowballmovement não foi encontrado, deve ser porque o arquivo com esse nome não existe. Ué ? Mais eu adicionei esse arquivo. Sim, você adicionou mais com nome errado. Preste atenção também. Eu tinha visto esses erros quando ele postou o script, mas resolvi não comentar, alias, comentei um, da talkactions.

Em fim, quando for adicionar algo, custa nada prestar atenção, é algo besta! 

Spoiler

589921fd1118c_seuerro.thumb.png.b030b2d8897a3dbe295bbb550d982e5d.png

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
13 minutos atrás, KotZletY disse:

@tirso é proibido dar up cara.

Em quanto ao erro, o erro foi do absolute, mais será que devemos ser capaz de enxerga ele ?

Olha o nome do erro, diretório snowballmovement não foi encontrado, deve ser porque o arquivo com esse nome não existe. Ué ? Mais eu adicionei esse arquivo. Sim, você adicionou mais com nome errado. Preste atenção também. Eu tinha visto esses erros quando ele postou o script, mas resolvi não comentar, alias, comentei um, da talkactions.

Em fim, quando for adicionar algo, custa nada prestar atenção, é algo besta! 

  Mostrar conteúdo oculto

589921fd1118c_seuerro.thumb.png.b030b2d8897a3dbe295bbb550d982e5d.png

 

Fera, esse erro ai, eu ja tinha visto, meu erro agora é outro.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Arkanjo39
      CUIDA, CUIDA E VEM CONHECER NOSSO SERVER. KING BAIAK ACABOU DE SER LANÇADO!!! VEM SER O TOP 1 Site com Otclient: https://kingbaiak.com/ PARA NOVOS JOGARES ADM TA DANDO AQUELA FORCINHA! SERVIDOR 8.60 COM RESETS, MONTARIAS E GOLDEN OUTFIT! INFORMAÇÕES BÁSICAS DO SERVIDOR: [+] MAPA BAIAK [+] HIGH EXP [+] RESETS COM + DAMAGE [+] AUTOLOOT AUTOMÁTICO [+] CITY DONATE [+] ROSHAMUUL, ORAMOND E NETHER [+] MONTARIAS E GOLDEN OUTFIT [+] INVASÃO DE MONSTROS AUTOMÁTICAS [+] DAILY MONSTER QUE APARECE AO LOGAR [+] MONTARIAS COM COMANDO !MOUNT [+] SISTEMA DE ROLETA ATUAL [+] CAST WATCH [+] FAST ATTACK [+] CAST ARROWS [+] PUSH CRUZADO [+] REWARD CHEST [+] WARSQUARE [+] COMBO EXP DE POTIONS [+] MINERAÇÃO COM LOJA [+] SISTEMA DE BOSS [+] CRITICAL/DODGE [500/500] [+] LIFE E MANA EM PORCENTAGEM* [+] VARIAS QUESTS [+] EVENTO DTT (AUTOMÁTICO) [+] EVENTO BATLEFIELD (AUTOMÁTICO) [+] EVENTO SNOWBALLWAR (AUTOMÁTICO) [+] EVENTO DESERT WAR (AUTOMÁTICO) [+] EVENTO ZOMBIE (AUTOMÁTICO) [+] EVENTO CAMPO MINADO (AUTOMÁTICO) [+] EVENTO TEAM BATLE (AUTOMÁTICO) [+] EVENTO CAPTURE THE FLAG (AUTOMÁTICO)
    • Por BTitan
      Baiak Titan: Uma Experiência Incomparável no Universo Baiak
       
      O Baiak Titan combina a nostalgia dos antigos tempos de OTServ com a inovação e modernidade atuais. Oferecemos um mapa vasto, com mais de 100 áreas de caça para explorar, além de vocações equilibradas para um PvP justo e emocionante. Diversos eventos automáticos ocorrem diariamente, garantindo diversão constante para os jogadores. O servidor conta com vários sistemas, como por exemplo, montarias para quem utiliza o cliente exclusivo, monstros do Tibia 9.6+, sistema de mineração, entre outros!
       
      Por Que Escolher o Baiak Titan?
       
      PvP de Alta Qualidade: Embora seja um servidor Baiak, nosso mapa é cuidadosamente projetado para proporcionar ganho de experiência sem perder a seriedade do jogo, oferecendo desafios instigantes e um equilíbrio perfeito para combates épicos.
      Jogabilidade Customizada: O mapa Baiak foi exclusivamente adaptado para promover intensas batalhas de PvP, com recursos inovadores que mantêm a jogabilidade sempre fresca e emocionante.

      Detalhes do Servidor:
       
      IP: baiaktitan.com Website: https://baiaktitan.com Account Manager: 1/1
        Principais Características:
       
      Uptime 24/7, Sem Lag: Jogue a qualquer hora com a estabilidade de servidores dedicados e de alta performance. Velocidade de Ataque Equilibrada: Ajustada perfeitamente para garantir combates dinâmicos e justos. Sistema de Cast: Transmita suas jogadas ao vivo e assista aos seus amigos em ação. Cliente Exclusivo: Software personalizado com novos outfits, montarias e criaturas, enriquecendo ainda mais sua experiência no jogo. Runas, Poções e Flechas Não Infinitas: Valorizamos uma jogabilidade mais estratégica e desafiadora, onde os recursos precisam ser geridos com sabedoria.
      Eventos Automáticos:
       
      Zombie Team Battle Monster Hunter Castle (War of Emperium) Capture The Flag DOTA Corrida Arena War (O último sobrevivente ganha) Fire Storm
        Taxas do Servidor:
       
      EXP: 200x (com stages)
      Skill: 100x
      Magic: 30x
      Loot: 3x
       
      Junte-se à nossa comunidade e viva essa aventura única. O Baiak Titan espera por você!
    • Por campospkks
      Servidor muito bem otimizado, com amplo map para uma diversão imperdível. 
       
      *  Quest System
      * bugs corrigidos 90,0%
      * Client Específico (V8)
      * Mobile Adaptavel e Otimizado
      * database.sql já com (Modulo Pix) 
      * site 95,9% atualizado (Troque, pois a marca já possuí proprietário)
      * Franquia Tibia Custom baseado em armas.
       
      Site Original: soulgun.com.br
      discord.gg/cCWcaMwjuB
      Relançamento Servidor 20-09-2024
      Horario 17:00
      whatsap Grupo
      https://chat.whatsapp.com/JsAyLAmwJQyGEWgHTI4096
      Video Do Game
      https://youtu.be/N8asxdnzmGw


    • Por chateadoagr
      Bem-vindo ao Genesis Online Tibia (GOT), um mundo onde a civilização foi devastada por um apocalipse zumbi. Inspirado em referências como The Walking Dead e Resident Evil, o GOT desafia você a sobreviver em meio ao caos, enfrentando hordas de mortos-vivos, explorando ruínas perigosas e formando alianças estratégicas. Embarque nesta jornada épica de sobrevivência e descoberta, onde cada escolha molda seu destino em um cenário hostil repleto de desafios e perigos iminentes.
       
       
      Adentre o universo de Genesis Online Tibia (GOT), um jogo repleto de sistemas inovadores e emocionantes. Equipe-se com um vasto arsenal de armas para enfrentar as ameaças do apocalipse zumbi, enquanto o sistema autoloot simplifica suas conquistas. Desenvolva seu personagem através de um sistema de upgrade único, aprimorando habilidades e atributos para enfrentar desafios cada vez mais formidáveis.
       
      Explore um mundo imersivo onde o som desempenha um papel crucial, criando uma atmosfera envolvente e realista. Vasculhe cada canto em busca de recursos vitais, desvendando segredos e tesouros ocultos. Siga uma cativante história através de missões que expandem o enredo, revelando os mistérios por trás do apocalipse e oferecendo recompensas valiosas.
       
      Em Genesis Online Tibia, a jornada pela sobrevivência é repleta de ação, estratégia e emoção, convidando você a se aventurar em um mundo onde cada decisão molda seu destino e determina sua capacidade de enfrentar os desafios que aguardam.

      Em breve imagens do servidor!
       
       
    • Por MarcusCores
      Welcome to ShadeCores
      We are excited to finally present to you: ShadeCores!
      After a long time of development and testing, we're finally ready to launch this awesome game!
      Quick Info for laziness:
      Rates: Tibia 7.4 theme 1x Experience 1x Skills 1x Magic 1x Loot 1x Regen General info:
      Official launch: April 24, 17:00 CEST.
      Create characters: 1 hour before launch (16:00 CEST).
      Website: https://shadecores.com/?subtopic=news
      Authentic Damages Monster attacks Monsters carrying equipment & loot Monster Spawns & respawn depending on players online World light and watches Traps Line of sight system Floor saving system Exhaustion system Much more.. General Cannot multi-client REAL Proven & Verified Anti-Cheat system = No cheaters Many quests modified to add mystery to the game for everyone Much more..
      What is ShadeCores?
      ShadeCores is a game designed to mimic the oldschool version of Tibia.com, but in a slower pace.
      Our goal is to be a long lasting and functional game that doesn't run a course of being broken after a few years.
      Read more at: https://shadecores.com/?subtopic=about&view=about.

      World Map
      The map contains all places of Tibia 7.70.
      It also contains 100% spawns of Tibia 7.70.
      With exception of Ankrahmun and Port Hope that was removed for balancing purposes.

      Built authentically
      ShadeCores was built hand in hand with hacked Tibia files (7.70 version) and is very accurate to how Tibia was (with exception things that has been improved).
      If you played Tibia back in 7.4-7.70 and join ShadeCores, you will yourself notice how scary accurate every single spawn is.
      Read more at: https://shadecores.com/?subtopic=about&view=additional.

      Game health
      We have made many modifications to ensure a healthy economy and game.
      Read more at: https://shadecores.com/?subtopic=about&view=balance.

      Creature Behavior
      In ShadeCores, same as in CipSoft's, creatures that's fleeing for their life (low health) will not make any pauses no matter how close the player is.
      Creatures also doesn't have any exhaustion of their abilities such as attacks, healings and more.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=5-Features+-Creature+Behavior.

      Creature spawns
      ShadeCores has the very same spawn system that CipSoft's had back in the day.
      All creatures that spawns has a "home".
      And this "home" has a set amount of creatures that belongs to it, always same type of creature.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=3-Features+-Creature+spawns.

      Accurate creature loot & inventory
      ShadeCores have an accurate loot & inventory system for creatures, working identically as it did in CipSoft's back in the day.
      Which means that creatures with items that give light, will also light up the creature, or armors that will increase the armor of the creature, or that when a creature wear boots of haste, it will run noticeably faster!
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=1-Features+-Creatures+equipping+their+loot+%26amp%3B+loot+system.

      Authentic exhaustions
      Believe it or not, OT's have it completely wrong, OTs uses 1 or 2 kind of exhaustions depending on which version they're meant to reflect (healing + attacking spells).
      However, in CipSoft's, there were 3 different exhaustions in the old days, 4 if you include "using item on.." exhaustion which was 1 second.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=6-Features+-Exhaustion+system.

      Floor saving
      ShadeCores are running with a map-saving system that allow the map to save certain edits done by players.
      The edits can almost be anything from items added to certain places, to open doors, wall torches that's lit or not, items hiding in boxes, book cases or even unexpected containers invisible to the naked eye.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=12-Features+-Floor+saving+system.

      Game health balance
      To ensure that ShadeCores become as perfect as possible, a lot has to be considered and corrected.
      Our goal is to make a long lasting and functional game that doesn't run a course of being broken after a few years.
      In ShadeCores, you're not meant to get unlimited supplies, hunting dragons, dragon lords, demons or other demonic critters, we don't fancy the rushed pace much of Tibia has become along with the community.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=13-Features+-Game+Health+Balance+(creatures%2C+supplies%2C+gold).

      Keep valuables valuable
      In ShadeCores it's harder to obtain "good" equipment, which will turn lower level equipment into the new good equipment.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=14-Features+-Game+Health+Balance+(equipment).

      Line of sight system
      In ShadeCores we use the same line-of-sight system as in CipSoft's.
      You may notice when you're playing that sometimes you can throw things in a way you can't do in most OT's.
      And you' may also notice that sometimes, you cannot throw things in same way as in most OT's.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=8-Features+-Line+of+sight+system.

      Poison storm
      Almost every OT either has ticking poison damage from around 50 counting down until 0, while others have an instant damage followed by poison or some other mixtures.
      While in reality, damage of the poison storm is decided by level and magic level, from the first tick of damage, it decreases with a few % until it reaches 0.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=7-Features+-Poison+storm.

      Traps functionality
      Traps does a static amount of damage. 30 to be exact, it's always 30.
      However, traps cause a physical damage that listen to the creatures armor.
      It means that the damage can and will be reduced by any armor the creature may have.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=2-Features+-Traps+(item).

      World light & watches
      In ShadeCores, time and world light works exactly like it did in CipSoft's back in the day.
      Read more at: https://shadecores.com/?subtopic=support&view=faq&topic=9-Features+-World+lights+%26amp%3B+watches.

      Anti-Cheat system
      We have a very advanced and automatic anti-cheat system that detects all kind of cheats rather quickly, be it bot, macro, tasker or others.
      This system was first developed and proven to work very well in RetroCores world "Cleanera".
      It has since then been improved to be faster and detect a wider array of cheats that people could use.

      A lot of servers has basically lied about that they're anti-bot, most of players have been in "anti-bot" servers that's been exploding with cheats and nobody gets punished, which is why most with good reason wont trust whenever someone says they're "antibot".
      But through Cleanera@RetroCores, we've verified for a lot of people that we're not bullshitting you, we're legit, we have a system that works and a lot of people have tested it and found themselves shocked when their "secret cheat" got caught even though nobody was nearby them.

      Additionally to the anti-cheat, ShadeCores does not allow multi-clienting
      Multi-Clienting will be treated as a cheat and lead to a deletion.
      To make sure nobody accidentally use multi-client without knowing the rules, we've made so that it's not possible to start more than one instance of the client.
      If you try to start a new client while already having one open, you will face this little message.

      Other Game Features
      Ability to play for free. No level restrictions on items nor spells. Non-stackable runes/fluids. No Runes from NPCs. No item-hotkeys. No wands/rods. No protection zone on boats/carpets. Manual aiming Anti-lag system. Great and improved monster systems. Monsters can be lured anywhere. No stairjump exhaust. Possibility to make UH traps. Accurate 7.4 formulas. Classic premium system. Classic promotion system. Many and random raids with possibility to loot raid-rare items.
      If you're new to the community, you're welcome to join the ShadeCores Discord server to chat with other players and staff!
      plain link: https://discord.gg/BtZmNDNUz6


      ShadeCores will officially launch on April 24 at 17:00 CEST!
      You will be able to create characters starting at 16:00 CEST the same day!

      Sincerely,
      ShadeCores Staff



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo