Ir para conteúdo
  • Cadastre-se

Sitema/Mod Tibia Guitar Hero [0.3.6~0.4]


Posts Recomendados

@xWhiteWolf
Funcinou Perfeitamente, muito obrigado :D 

Achei um bug no próprio game, se você segurar pra ele se mexer para todas as posições ao mesmo tempo, a pontuação buga e acaba subindo bem a mais do que você teria acertado normalmente. Veja:
 

Spoiler

S0CSIfd.png

 

51 acertos o.O 

Seguindo a lógica da Lib o certo seriam no máximo 27 notas acertadas, correto? 

Citar

[3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2}

 

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

caralho(?) como vc conseguiu segurar pra 3 direções ao mesmo tempo? auheuhauh aí vc só conta os 0's, 1's e 2's, dá 29.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

AUshuashuahus 
Essa não é bem a questão, se o máximo é 29 e eu acertei 51 (ganhei 500k vei ou 50 scarab coins). 
Não tem como arrumar isso? '-'
Pq enquanto for o script normal onde os players não ganham nada, até que vai, mas se os caras ganharem cerca de 500k em cada jogada eu to ferrado.

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites
Spoiler

local function isRoomEmpty() -- funcao que verifica se a sala nao esta ocupada
    return getGlobalStorageValue(19281) < 1 and true or false
end

local npos = {x = 141, y = 51, z = 7} -- posicao mais da esquerda que as notas nascem, as outras duas vao ser baseadas nessa daqui x = 142 e x = 143
local startPos = {x = 142, y = 58, z= 7} -- posicao que vc vai ao clicar na alavanca
local finalPos = {x = 145, y = 57, z= 7} -- poscao q vc vai ao terminar o tempo

local storage_point = 12721 -- storage que salva os pontos
local storage_erradas = 12722 -- storage que salva as notas erradas
local storage_passadas = 12723 -- storage que salva as notas que passaram

local config = {
vezes = 3, -- vezes a cada X tempo
tempo = 24, -- horas pra resetar as vezes
stortempo = 12720, -- salva o tempo
storvezes = 12719, -- salva o numero de vezes
price = 30000 -- preco por jogatina
}

local prizes = {
itemid = 2160, -- id do item que ganha
[1] = 1, -- quantidade pra cada 10 notas acertadas (por cada dificuldade)
[2] = 7,
[3] = 10
}

function onUse(cid, item, itemEx, fromPos, toPos)
	local quant = getPlayerStorageValue(cid, config.storvezes) >= 0 and getPlayerStorageValue(cid, config.storvezes) or 0	
	if isRoomEmpty() then
		if quant < config.vezes or getPlayerStorageValue(cid, config.stortempo) - os.time() <= 0 then	
			if doPlayerRemoveMoney(cid, config.price) then
				if quant >= config.vezes then
					setPlayerStorageValue(cid, config.storvezes, 1)
				end
				setPlayerStorageValue(cid, config.stortempo, os.time() + (config.tempo * 60 * 60))
				setPlayerStorageValue(cid, config.storvezes, quant + 1)
				doTeleportThing(cid, startPos)
				setGlobalStorageValue(19281, 1)
				setGlobalStorageValue(19282, 0)
				local d = dif[item.actionid - 100] and item.actionid - 100 or 1
				addEvent(function()
					setGlobalStorageValue(19281, 0)
					if isCreature(cid) then
						if getPlayerStorageValue(cid, storage_point) > #dif[d] then 
							doTeleportThing(cid, finalPos)
							doPlayerSendCancel(cid, "Cheaters never win.")
						return true 
						end
						if getPlayerStorageValue(cid, storage_point) > getPlayerStorageValue(cid, recorde[d]) then
							setPlayerStorageValue(cid, recorde[d], getPlayerStorageValue(cid, storage_point))
						end
						setPlayerStorageValue(cid, storage_passadas, getGlobalStorageValue(19282))
						local msg = "Estatísticas da partida:\n\n| Notas acertadas: ".. getPlayerStorageValue(cid, storage_point) .."\n| Movimentos errados: ".. getPlayerStorageValue(cid, storage_erradas) .."\n| Notas passadas: ".. getPlayerStorageValue(cid, storage_passadas) .."\n\n| Seu recorde pessoal para esta dificulade é: ".. getPlayerStorageValue(cid, recorde[d]) .. ""		
						local prizecount = math.floor(getPlayerStorageValue(cid, storage_point)/10)
						if prizecount > 0 then
							doPlayerAddItem(cid, prizes.itemid, prizecount * prizes[d])
						end
						doShowTextDialog(cid, 2349, msg)
						doTeleportThing(cid, finalPos)
					end
				end, (#dif[d] + 9) * delay[d])
				for j = 1, #dif[d] do
					addEvent(function()
						if dif[d][j] ~= nil then
							callWave({x= npos.x + dif[d][j], y = npos.y, z = npos.z}, 0, 1679 + dif[d][j], delay[d], 19282)
						end
					end, (delay[d] + 30) * j)
				end
			else
				doPlayerSendCancel(cid, "You need at least "..config.price/1000 .."K to play this game.")
			end
		else
			doPlayerSendCancel(cid, "You already enter ".. config.vezes .." time(s) today.")			
		end
	else
		doPlayerSendCancel(cid, "The room is busy right now, try again later.")
    end
return true
end

 

usa esse script aqui, ele verifica se a quantidade de acertos é maior que a quantidade de notas e aí teleporta o cara  pra fora do evento sem premiação e sem salvar score.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Agora ficou sensacional. Muito obrigado Wolf
Vc sempre me salva <3 
 

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

mas ainda to curioso pra saber como vc segura pra 3 direções ao msmo tempo, se eu entedesse isso talvez desse pra melhorar o código e me prevenir em próximos scripts... vc desliga o num lock e segura 7 8 e 9? ou vc tá usando bot?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Eu me expressei mau, é que como o script faz você voltar para pós inicial, se você apertar loucamente 7, 8, 9 ele começa a subir para várias direções, as vezes subindo para duas ao mesmo tempo. Mas sim, após ver que isso modificava a pontuação eu abri o elfbot e liguei as hotkeys para andar na diagonal com dash e isso triplicou a pontuação. 

                                                                                                230x230.jpg

 

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

obrigado ^-^ fico feliz q tenha gostado

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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

Mano sistema perfeito gostei muito!! Testei aqui no meu servidor 0.3.6 e rodou perfeitamente agora vou testar em 0.4 3777, eu só queria saber se vc pode me ajudar em uma coisa...

Por exemplo, eu botei para o player ganhar itens conforme você tinha ajudado o outro cara e talz... Só que ai eu queria também que quando o player errasse a nota subisse em branco MISS! e quando acertasse Point! ou algo do tipo, que nem os tps falantes sabe? e também quando ele acertasse todas as notas do modo fácil, normal ou dificil aparecesse Perfect!

E outra coisa também... Quando ele acertasse o número de notas necessárias para ganhar o prêmio ia ser teleportado para o local de fora e talz e ai aparecesse um EFFECT configurável com a palavra Ganhou! Será que você tem como me ajudar nisso? Obg!!

Link para o post
Compartilhar em outros sites

pras primeiras alterações é só vc ver onde q solta os efeitos da nota queimando e o do poff e botar a função de soltar animated text. Na segunda de aparecer perfect vc pode configurar quando for teleportar o player pra fora da sala verificar se ele acertou tudo e já ver se foi maior que o numero mínimo pro prêmio e ja teleportar. Tenta fazer sozinho..

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 3 months later...

Genial  :wow:

 

Aquela "travadinha" que acontece quando o char é impedido de se movimentar, teria alguma forma disso não acontecer? Sei que só o própio player vê isso, não sei se outros também tem esse "problema" , mas me incomoda um pouco :laugh: Isso acontece em alguns outros sistemas que impedem a movimentação do player e não tinha conseguido pensar em uma solução, quando li sobre usar as teclas com Shift ou Num Lock desligado, eu pensei:

 

Será que é possível desabilitar as setas de movimento e/ou o movimento do char pelo click do mouse enquanto a função que impede o char de se mover estiver ativa?

Link para o post
Compartilhar em outros sites
4 horas atrás, diarmaint disse:

Duplicate uniqueId 42320
Duplicate uniqueId 42320
Duplicate uniqueId 2819
Duplicate uniqueId 2819

Ta dando esse erro no distro :/

vc ja tem essas Uniqueids em outros sistemas do seu servidor.. escolhe outro numero.

 

56 minutos atrás, samlecter disse:

Genial  :wow:

 

Aquela "travadinha" que acontece quando o char é impedido de se movimentar, teria alguma forma disso não acontecer? Sei que só o própio player vê isso, não sei se outros também tem esse "problema" , mas me incomoda um pouco :laugh: Isso acontece em alguns outros sistemas que impedem a movimentação do player e não tinha conseguido pensar em uma solução, quando li sobre usar as teclas com Shift ou Num Lock desligado, eu pensei:

 

Será que é possível desabilitar as setas de movimento e/ou o movimento do char pelo click do mouse enquanto a função que impede o char de se mover estiver ativa?

Eu não impeço o char de se movimentar, eu teleporto ele de volta pra posição quando ele tenta.. por isso a "travadinha". Mas isso é minimo se seu servidor estiver bem configurado e não deve afetar em nada a jogabilidade

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
18 horas atrás, xWhiteWolf disse:

vc ja tem essas Uniqueids em outros sistemas do seu servidor.. escolhe outro numero.

 

Eu não impeço o char de se movimentar, eu teleporto ele de volta pra posição quando ele tenta.. por isso a "travadinha". Mas isso é minimo se seu servidor estiver bem configurado e não deve afetar em nada a jogabilidade

 

Poxa, eu sei que não afeta, deve ser paranoia minha, mas me incomoda bastante ver aquilo do player tentando se mover e voltando pro sqm, e como isso acontece em mais alguns sistemas, queria saber se tem alguma solução, e se tiver se teria como ajudar

 

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

 

Poxa, eu sei que não afeta, deve ser paranoia minha, mas me incomoda bastante ver aquilo do player tentando se mover e voltando pro sqm, e como isso acontece em mais alguns sistemas, queria saber se tem alguma solução, e se tiver se teria como ajudar

 

deve ser possivel com edições na source porém não vou poder te ajudar com isso

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
Em 12/08/2016 ás 14:55, xWhiteWolf disse:

vc ja tem essas Uniqueids em outros sistemas do seu servidor.. escolhe outro numero.

 

Eu não impeço o char de se movimentar, eu teleporto ele de volta pra posição quando ele tenta.. por isso a "travadinha". Mas isso é minimo se seu servidor estiver bem configurado e não deve afetar em nada a jogabilidade

Tipo, quando eu procuro elas pelo remere não tem em outro lugar, vou dar mais uma verificada.

Link para o post
Compartilhar em outros sites

Actions.xml e movements.xml

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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 Absolute
      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:


      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.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo