<?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



info
Grupo: Campones
Registrado: 12/08/12
Posts: 40
Reputação: +3
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 Agosto 30 por Spectrusz