Ir para conteúdo
  • 0

Change Map


Spectrusz

Pergunta

Olá, estou utilizando uma script change map que de 20 em 20min o faz o mapa mudar, eu gostaria de saber como fazer alterações nele.

 

1ª Alteração

Queria que o change map não puxasse quem estivesse em cima de um piso.

Em vez de piso, pode ser dentro de uma coordenada, etc... (oque funcionar estou aceitando rsrs)

 

Acho que funcionaria se quando alguém estivesse em cima desse piso ou nessa coordenada, ganhasse um storage, e o change map não puxasse quem estivesse com ele, mas quando a pessoa saísse dessa coordenada ou piso, perdesse o storage...

Eu sei mais ou menos a lógica, só não sei como executar no papel )':

 

 

2ª Alteração

Esse change map tira o pz da pessoa, mas algumas continuam por ganharem o pz logo depois de perderem, em fração de milésimos, isso por causa de um fogo no chão por exemplo.

 

Queria fazer com que a pessoa perdesse o pz na hora e 5 segundos depois, para quem estiver com o pz, perde-lo novamente.

 

3ª Alteração

Queria um comando pra eu pausar o change map pra fazer um evento e uma script que eu possa colocar dentro de um evento de woe ou capture de flag por exemplo...

 

Essa é a script do change map que eu uso, feita pelo Vodkart.

<?xml version="1.0" encoding="UTF-8"?>
<mod name="ChangeMap" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes">
<config name="map_func"><![CDATA[

				  info = {
				  [0] = {x=654,y=847,z=7},
				  [1] = {x=517,y=602,z=7},
				  [2] = {x=552,y=226,z=7},
				  [3] = {x=789,y=308,z=7},
				  [4] = {x=250,y=180,z=7},
				  [5] = {x=413,y=804,z=7}
					}
					storage = 50555

]]></config>
<event type="login" name="Check Map" event="script"><![CDATA[
domodlib('map_func')
	function onLogin(cid)
	if getGlobalStorageValue(storage) == -1 then
	setGlobalStorageValue(storage,getGlobalStorageValue(storage)+1)
	end
	doTeleportThing(cid,info[getGlobalStorageValue(storage)])  
	return true
end
]]></event>
	<globalevent name="ChangeMap" interval="1200" event="script"><![CDATA[
	domodlib('map_func')
	function onThink(interval, lastExecution)
			doBroadcastMessage('O mapa sera mudado novamente em 20 minutos.')
			if getGlobalStorageValue(storage) < 5 then
			setGlobalStorageValue(storage,getGlobalStorageValue(storage)+1)  
			else
			setGlobalStorageValue(storage,getGlobalStorageValue(storage)-5)
			end
			for _, pid in ipairs(getPlayersOnline()) do
			doRemoveConditions(pid, true)  
			doTeleportThing(pid,info[getGlobalStorageValue(storage)])  
			end  
	 return TRUE
end]]></globalevent>
</mod>

Editado por Spectrusz
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="ChangeMap" version="1.0" author="Vodkart" contact="xtibia.com" enabled="yes">
<config name="map_func"><![CDATA[

info = {
[0] = {x=160,y= 54,z=7},
[1] = {x=144,y= 45,z=7},
[2] = {x=133,y= 39,z=7},
[3] = {x=174,y= 39,z=7}
}

storage = {60002,61002}

positions = {
{{x = 135,y = 45, z = 7},{x = 138,y = 45, z = 7}},
{{x = 172,y = 57, z = 7},{x = 176,y = 60, z = 7}},
{{x = 186,y = 55, z = 7},{x = 190,y = 55, z = 7}}
}
]]></config>
<event type="login" name="Check Map" event="script"><![CDATA[
domodlib('map_func')
function onLogin(cid)
if getGlobalStorageValue(storage[1]) == -1 then
setGlobalStorageValue(storage[1], 0)
end
	doTeleportThing(cid,info[getGlobalStorageValue(storage[1])])  
return true
end
]]></event>
<talkaction words="/changemap" access="5" event="buffer"><![CDATA[
domodlib('map_func')
local param = string.lower(param)
setGlobalStorageValue(storage[2], getGlobalStorageValue(storage[2]) == -1 and 1 or -1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você acabou de dar "..(getGlobalStorageValue(storage[2]) == -1 and "start" or "stop").." no map change.")
return true
]]></talkaction>
<globalevent name="ChangeMap" interval="1200" event="script"><![CDATA[
domodlib('map_func')
function onThink(interval, lastExecution)
if getGlobalStorageValue(storage[2]) <= 0 then
doBroadcastMessage('O mapa será mudado novamente em 20 minutos.')
setGlobalStorageValue(storage[1], getGlobalStorageValue(storage[1]) < #info and getGlobalStorageValue(storage[1])+1 or 0)  
for _, pid in ipairs(getPlayersOnline()) do
local check = true
for _, pos in ipairs(positions) do
if isInRange(getCreaturePosition(pid), pos[1], pos[2]) then
check = false
end
end
if check == true then
doRemoveConditions(pid, true)
addEvent(doRemoveConditions, 2000, pid, true)
doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
doCreatureAddMana(pid, getCreatureMaxMana(pid))  
doTeleportThing(pid, info[getGlobalStorageValue(storage[1])])
end
end
end
return true
end]]></globalevent>
</mod>

 

 

aqui é a alteração 1°

 

 

positions = {
{{x = 135,y = 45, z = 7},{x = 138,y = 45, z = 7}},
{{x = 172,y = 57, z = 7},{x = 176,y = 60, z = 7}},
{{x = 186,y = 55, z = 7},{x = 190,y = 55, z = 7}}
}

 

se eles estiverem por exemplo

 

entra a posição {x = 135,y = 45, z = 7} e a posição {x = 138,y = 45, z = 7} eles não serão teleportados

 

pode adicionar mais...

 

a 2° alteração eu coloquei um

 

Event pra depois de 2 segundos retirar as conditions de novo ._.

 

addEvent(doRemoveConditions, 2000, pid, true) -- 2000 = 2 segundo

 

a 3° alteração é o comando que eu coloquei, é só usar o comando:

 

/changemap

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

Nossa cara, como eu disse por pm, você é o cara!!

Obrigado pela script, quando eu chegar em casa eu testo e edito o post aqui ;)

 

Você já atingiu seu limite de reputações positivas para hoje

 

Assim que liberar você já sabe quem será o dono!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...