Ir para conteúdo
  • Cadastre-se

Tem como colocar uma área de trainers no script changemap?


Posts Recomendados

Eu tenho um ot com o script changemap que fica trocando de mapa a cada 20 minutos , como todos os players são puxados quando troca de mapa não tem como fazer uma área de trainer, tem como colocar uma exceção para os players não serem puxados quando tiverem na área de trainer , para eles sairem de lá sem bugar facilmente coloco um tp para ele ser deslogado e ir quando relogar ir diretamente para o mapa onde todos estão , quem puder ajudar REP+.

 

 


Quote

<?xml version="1.0" encoding="ISO-8859-1"?> 
<mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> <config name="map_func"><![CDATA[ info = {"] = 1, 
[1] = 3, 
[2] = 5,
[3] = 7,
[4] = 9,
[5] = 11,
[6] = 13,
[7] = 14,
[8] = 15,
[9] = 16,
[10] = 17

}
storage = 789520

]]></config>
<event type="login" name="Check Map" event="script"><![CDATA[ domodlib('map_func') function onLogin(cid) if getGlobalStorageValue(storage) == -1 then setGlobalStorageValue(storage, 0) end doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(st"])) 
return true 
end 
]]></event>
<globalevent name="ChangeMap" interval="1350" event="script"><![CDATA[ domodlib('map_func') function onThink(interval, lastExecution) doBroadcastMessage('The map will be changed again in 1 hour.') setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0) for _, pid in ipairs(getPlayersOnline()) do doPlayerSetTown(pid, info[getGlobalStorageValue(st"])
doRemoveConditions(pid, true)
doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
doCreatureAddMana(pid, getCreatureMaxMana(pid))
doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) 
end
return true 
end]]></globalevent>
</mod>
 

 

Link para o post
Compartilhar em outros sites

Eu tenho um ot com o script changemap que fica trocando de mapa a cada 20 minutos , como todos os players são puxados quando troca de mapa não tem como fazer uma área de trainer, tem como colocar uma exceção para os players não serem puxados quando tiverem na área de trainer , para eles sairem de lá sem bugar facilmente coloco um tp para ele ser deslogado e ir quando relogar ir diretamente para o mapa onde todos estão , quem puder ajudar REP+.

Teste esse

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes">
          <config name="map_func"><![CDATA[
                    info = {
                    [1] = 3,
                    [2] = 5,
                    [3] = 7,
                    [4] = 9,
                    [5] = 11,
                    [6] = 13,
                    [7] = 14,
                    [8] = 15,
                    [9] = 16,
                    [10] = 17
                    }
                    storage = 789520
                    fromPos = {x = 1059, y = 1034, z = 7} -- Posição do piso superior esquerdo
                    toPos = {x = 1062, y = 1036, z = 7} -- Posição do piso inferior direito
          ]]></config>
          <event type="login" name="Check Map" event="script"><![CDATA[
                    domodlib('map_func')
                    function onLogin(cid)
                              local fromp, top = fromPos, toPos
                              for x = fromp.x, top.x do
                                        for y = fromp.y, top.y do
                                                  local areapos = {x=x, y=y, z=fromPos.z}
                                                  getPlayer = getThingfromPos(areapos)
                                                  if isPlayer(getPlayer.uid) then
                                                            doPlayerSendTextMessage(cid, 18, 'You are training, so there will be teleported.')
                                                  end
                                                  if getGlobalStorageValue(storage) == -1 then
                                                            setGlobalStorageValue(storage, 0)
                                                  end
                                                  doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(storage)]))
                                        end
                              end
                              return true
                    end
          ]]></event>
          <globalevent name="ChangeMap" interval="3600" event="script"><![CDATA[
                    domodlib('map_func')
                    function onThink(interval, lastExecution, thinkInterval)
                              local fromp, top = fromPos, toPos
                              for x = fromp.x, top.x do
                                        for y = fromp.y, top.y do
                                                  local areapos = {x=x, y=y, z=fromPos.z}
                                                  getPlayer = getThingfromPos(areapos)
                                                  if isPlayer(getPlayer.uid) then
                                                            doPlayerSendTextMessage(cid, 18, 'You are training, so there will be teleported.')
                                                  end
                                                  doBroadcastMessage('The map will be changed again in 1 hour.')
                                                  setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0)
                                                  for _, pid in ipairs(getPlayersOnline()) do
                                                            doPlayerSetTown(pid, info[getGlobalStorageValue(storage)])
                                                            doRemoveConditions(pid, true)
                                                            doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
                                                            doCreatureAddMana(pid, getCreatureMaxMana(pid))
                                                            doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                                                  end
                                        end
                              end
                              return true
                    end
          ]]></globalevent>
</mod>

 

Dúvidas? Me avise.

 

Att.

Giovani Rodrigo

Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

Não entendi a parte que você modifico ...

 

fromPos = {x=0000, y=0000, z=0000} -- Posição do piso superior esquerdo
     toPos = {x=0000, y=0000, z=0000} -- Posição do piso inferior direito

Link para o post
Compartilhar em outros sites

Não entendi a parte que você modifico ...

Explicando:

 

Imagem 1

 

post-72403-0-22377800-1369618229_thumb.p

A fromPos é a posição do piso superior esquerdo ou o piso contornado de azul como mostra na Imagem 1.

A toPos é a posição do piso inferior direito ou o piso contornado de vermelho como mostra a Imagem 1.

 

Pergunta: Mas o que tem a ver essa fromPos e toPos com a área do trainer?

Resposta: Esses dois pisos tem uma função bem simples que é marcar a área de um quadrado ou retângulo.

 

Continua não entendendo? Vou explicar melhor.

 

 

Imagem 2

post-72403-0-96343400-1369618231_thumb.p

 

Veja que na Imagem 2 tem quatro linhas marcando os eixos X e Y de cada piso, veja também que as linhas se encontram formando um quadrado ou retângulo, isso faz com que os dois pisos que não era de nenhuma importância sejam as peças principais na formação de um quadrado ou retângulo.

 

Pergunta: Mas porque determinar essa área?

Resposta: Se você prestar atenção eu não modifiquei só isso, eu adicionei o seguinte comando.

if isPlayer(getPlayer.uid) then
          doPlayerSendTextMessage(cid, 18, 'You are training, so there will be teleported.')
else

 

Traduzindo

O código diz o seguinte:

Se existir um jogador em determinada área faça (Pergunta: Faça o que?).
          Envie a seguinte mensagem(Mensagem a ser enviada).
Senão (Caso não tenha um jogador em determinada área).
          Executar o script que teletransportará o jogador para a outra cidade.

 

Entendeu?

 

Recopie o código pois editei algumas coisas.

Testado 50% (Apenas abri o OT e não deu nenhum erro).

 

Att.

Giovani Rodrigo

Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

coloquei a posição da ponta esquerda e da ponta direita mesmo assim continua sendo puxado :/

Link para o post
Compartilhar em outros sites

coloquei a posição da ponta esquerda e da ponta direita mesmo assim continua sendo puxado :/

Colocou como está na Imagem 1 e recopiou o código que eu postei?

Editado por GiovaniRodrigo (veja o histórico de edições)
Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

Link para o post
Compartilhar em outros sites

Modifiquei aqui 

 

       

                    fromPos = {x = 1059, y = 1034, z = 7} -- Posição do piso superior esquerdo
                    toPos = {x = 1062, y = 1036, z = 7} -- Posição do piso inferior direito

 

Coloquei a position da ponta esqueda e direita mais mesmo assim não funfo , usei o script do seu primeiro post.

Link para o post
Compartilhar em outros sites

Modifiquei aqui 

 

       

 

Coloquei a position da ponta esqueda e direita mais mesmo assim não funfo , usei o script do seu primeiro post.

Não tem como eu testar a mudança de cidade aqui no meu OT de teste, mas eu teste da seguinte maneira:

Se o jogador estiver na área escolhida no script ele recebe uma mensagem, mas se caso ele não estiver nessa área escolhida ele recebe outra mensagem e funcionou perfeitamente.

Eu modifiquei o script que eu postei da primeira vez, se puder copiar tudo de novo e testar seria ótimo.

Spoiler

local config = {
	delrey = getPlayerCarValue(cid, DELREY),
	cigarro = getPlayerCancer(cid, DERBY),
	prostituta = getPlayerAIDS(cid, cracuda),
	tresOitao = getPlayerRevorvi(cid, 38)
}

if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end

 

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

Teste esse

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes">
          <config name="map_func"><![CDATA[
                    info = {
                    [1] = 3,
                    [2] = 5,
                    [3] = 7,
                    [4] = 9,
                    [5] = 11,
                    [6] = 13,
                    [7] = 14,
                    [8] = 15,
                    [9] = 16,
                    [10] = 17
                    }
                    storage = 789520
                    fromPos = {x = 1059, y = 1034, z = 7} -- Posição do piso superior esquerdo
                    toPos = {x = 1062, y = 1036, z = 7} -- Posição do piso inferior direito
          ]]></config>
          <event type="login" name="Check Map" event="script"><![CDATA[
                    domodlib('map_func')
                    function onLogin(cid)
                              local fromp, top = fromPos, toPos
                              for x = fromp.x, top.x do
                                        for y = fromp.y, top.y do
                                                  local areapos = {x=x, y=y, z=fromPos.z}
                                                  getPlayer = getThingfromPos(areapos)
                                                  if isPlayer(getPlayer.uid) then
                                                            doPlayerSendTextMessage(cid, 18, 'You are training, so there will be teleported.')
                                                  end
                                                  if getGlobalStorageValue(storage) == -1 then
                                                            setGlobalStorageValue(storage, 0)
                                                  end
                                                  doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(storage)]))
                                        end
                              end
                              return true
                    end
          ]]></event>
          <globalevent name="ChangeMap" interval="3600" event="script"><![CDATA[
                    domodlib('map_func')
                    function onThink(interval, lastExecution, thinkInterval)
                              local fromp, top = fromPos, toPos
                              for x = fromp.x, top.x do
                                        for y = fromp.y, top.y do
                                                  local areapos = {x=x, y=y, z=fromPos.z}
                                                  getPlayer = getThingfromPos(areapos)
                                                  if isPlayer(getPlayer.uid) then
                                                            doPlayerSendTextMessage(cid, 18, 'You are training, so there will be teleported.')
                                                  end
                                                  doBroadcastMessage('The map will be changed again in 1 hour.')
                                                  setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0)
                                                  for _, pid in ipairs(getPlayersOnline()) do
                                                            doPlayerSetTown(pid, info[getGlobalStorageValue(storage)])
                                                            doRemoveConditions(pid, true)
                                                            doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
                                                            doCreatureAddMana(pid, getCreatureMaxMana(pid))
                                                            doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
                                                  end
                                        end
                              end
                              return true
                    end
          ]]></globalevent>
</mod>

Dúvidas? Me avise.

 

Att.

Giovani Rodrigo

 

 

Está dando D-Bug quando vai trocar de mapa.

Link para o post
Compartilhar em outros sites

É mais simples usar um script de moveevents  que retire o storage de troca de mapa "o actionid pode ser adicionado no teleport para ir aos trainers  "78952"0 e depois ao entrar no teleport para sair do trainer adicionar novamente.

Link para o post
Compartilhar em outros sites

não foi tão simples '-' poderia explicar melhor ?

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo