Ir para conteúdo
  • Cadastre-se

(Resolvido)Proteção nas houses


Ir para solução Resolvido por WooX,

Posts Recomendados

  • Moderador

Estava procurando um sistema de proteção de houses para implementar em meu servidor, até que consegui achar, porém precisa adicionar a função na source, eu sei adicionar, o que eu não sei é como fazer pra puxar essa função da source, (o código), e nem qual arquivo modificar. Se alguém se dispor a me ajudar, ficarei muito grato. Obrigado desde já, rep+ para quem ajudar.

 

A função para adicionar na source é esta aqui: onMoveItem(moveItem, frompos, position, cid)

 

Script criado pelo @Storm

function onMoveItem(moveItem, frompos, position, cid)

         if getHouseFromPos(frompos) then
            if getPlayerGUID(cid) == getHouseOwner(getHouseFromPos(frompos)) then
              return true
            else
            doPlayerSendTextMessage(cid, 27, "Voce nao pode mover itens desta house")
            doSendMagicEffect(getCreaturePosition(cid), 3)
            return false
            end 
         end
end 

 

O script consiste em proibir qualquer player de arrastar os itens da house, deixando apenas o dono (quem comprou) da house mover, pegar, os itens.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

Curti esta idea, ate seria interessante mais para frente de implementar uma funcionalidade semelhante desta para guild houses, onde definiria cada `quarto` para uma pessoa e so a pessoa responsavel do quarto poderia retirar os itens e colocar no chao rsrs.

 

REP+

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites
55 minutos atrás, Skydangerous disse:

Curti esta idea, ate seria interessante mais para frente de implementar uma funcionalidade semelhante desta para guild houses, onde definiria cada `quarto` para uma pessoa e so a pessoa responsavel do quarto poderia retirar os itens e colocar no chao rsrs.

 

REP+

bacana isso também, achei interessante

Link para o post
Compartilhar em outros sites
  • Solução

Qual source está utilizando? Se você está usando 0.x e não possui essa função provavelmente está utilizando TFS Exclusive Edition, ela não é necessária pois já existe a função onThrow, que faz o que a onMoveItem faz e até permite fazer coisas que a onMoveItem não consegue.

 

Abaixo está um script com a função onThrow, porem antes quero dizer sobre um problema que ambos os scripts não cobrem. Este script não vai impedir o convidado na casa de usar items, se tiver uma mana potion na casa por exemplo, ele não vai conseguir pegar e nem mover, mas vai poder usar em si ou em outros, por isso o correto para uma sistema como este é fazer diretamente na source.

--<event type="login" name="HouseProtectionRegister" event="script" value="house_protection.lua"/>
--<event type="throw" name="HouseProtection" event="script" value="house_protection.lua"/>

function onThrow(cid, item, fromPosition, toPosition)
	if fromPosition.x ~= 65535 and getHouseFromPos(fromPosition) then
		if getHouseOwner(getHouseFromPos(fromPosition)) ~= getPlayerGUID(cid) then
			doPlayerSendCancel(cid, "You can't take nor move someone else's stuff on their own house.")
			return false
		end
	elseif toPosition.x ~= 65535 and getHouseFromPos(toPosition) then
		if getHouseOwner(getHouseFromPos(toPosition)) ~= getPlayerGUID(cid) then
			doPlayerSendCancel(cid, "You can't throw things on someone else's house.")
			return false
		end
	end
	return true
end


function onLogin(cid)
	registerCreatureEvent(cid, "HouseProtection")
	return true
end

 

Ps: se mais pessoas se interessarem eu posso escrever em C++ depois.

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

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  • Moderador

@WooX Sim, é a TFS Exclusive Edition, a postada aqui no fórum, no tópico do servidor do Kausao. Obrigado pelo suporte :).  Se não for poupar muito do seu tempo, e se você se dispor, acho que a maioria gostaria desse script em C++

Edit: O script está funcionando perfeitamente, mas da esse erro no terminal:

[Error - CreatureScript Interface]
data/creaturescripts/scripts/house_protection.lua:onThrow
Description:
(luaGetHouseFromPosition) Tile not found

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
6 horas atrás, Belmont disse:

@WooX Sim, é a TFS Exclusive Edition, a postada aqui no fórum, no tópico do servidor do Kausao. Obrigado pelo suporte :).  Se não for poupar muito do seu tempo, e se você se dispor, acho que a maioria gostaria desse script em C++

Edit: O script está funcionando perfeitamente, mas da esse erro no terminal:


[Error - CreatureScript Interface]
data/creaturescripts/scripts/house_protection.lua:onThrow
Description:
(luaGetHouseFromPosition) Tile not found

 

Estou com mesmo probleminha.

Spoiler

[Error - CreatureScript Interface]
data/creaturescripts/scripts/house_protection.lua:onThrow
Description:
(luaGetHouseFromPosition) Tile not found
 

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
7 horas atrás, Belmont disse:

@WooX Sim, é a TFS Exclusive Edition, a postada aqui no fórum, no tópico do servidor do Kausao. Obrigado pelo suporte :).  Se não for poupar muito do seu tempo, e se você se dispor, acho que a maioria gostaria desse script em C++

Edit: O script está funcionando perfeitamente, mas da esse erro no terminal:


[Error - CreatureScript Interface]
data/creaturescripts/scripts/house_protection.lua:onThrow
Description:
(luaGetHouseFromPosition) Tile not found

 

1 hora atrás, Ackerzin disse:

Estou com mesmo probleminha.

  Mostrar conteúdo oculto

[Error - CreatureScript Interface]
data/creaturescripts/scripts/house_protection.lua:onThrow
Description:
(luaGetHouseFromPosition) Tile not found
 

 

Posso ter me esquecido de alguma condição, em que caso acontece o erro? simplesmente tentar mover de 1 lado pro outro na house ou com alguma ação especifica?

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
Agora, WooX disse:

Posso ter me esquecido de alguma condição, em que caso acontece o erro? simplesmente tentar mover de 1 lado pro outro na house ou com alguma ação especifica?

 

Funciona tudo perfeito, você nao consegue arrastar itens de dentro da house, apenas quem é o dono, o erro acontece quando voce tenta jogar itens dentro da house, "que nao é sua"

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Ackerzin disse:

Funciona tudo perfeito, você nao consegue arrastar itens de dentro da house, apenas quem é o dono, o erro acontece quando voce tenta jogar itens dentro da house, "que nao é sua"

acontece somente neste caso? quando um jogador que não é dono está fora e tenta tacar item dentro?

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

@Belmont da uma olhada neste tópico inclusive o dono do tópico colocou um script lá fazendo o código funcionar

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

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

acontece somente neste caso? quando um jogador que não é dono está fora e tenta tacar item dentro?

Sim, apenas nessa ocasião.

 

17 horas atrás, LeoTK disse:

@Belmont da uma olhada neste tópico inclusive o dono do tópico colocou um script lá fazendo o código funcionar

 

Seria possivel alterar o script dele pra funcionar com a função onThrow?


 

       112674.gif

 

 

 

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

Sim, apenas nessa ocasião.

 

Seria possivel alterar o script dele pra funcionar com a função onThrow?



 

Editei o script, testa de novo.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
22 horas atrás, WooX disse:

Editei o script, testa de novo.

Aparece essa mensagem quando tento jogar algo.
image.png.ba10c8dee1b1ccf2c82d41b220e92103.png

mas mesmo assim da erro na distro.

image.png.7c1994e46bb4b7f1b79e99fec452bb30.png

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
9 horas atrás, Ackerzin disse:

Aparece essa mensagem quando tento jogar algo.
image.png.ba10c8dee1b1ccf2c82d41b220e92103.png

mas mesmo assim da erro na distro.

image.png.7c1994e46bb4b7f1b79e99fec452bb30.png

 

Aah já sei porque, a função onThrow funciona de forma semelhante mas é diferente da onMoveItem, agora vai.

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  • Moderador
18 minutos atrás, WooX disse:

Aah já sei porque, a função onThrow funciona de forma semelhante mas é diferente da onMoveItem, agora vai.

 

Funcionou, obrigado :)

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
12 horas atrás, WooX disse:

Aah já sei porque, a função onThrow funciona de forma semelhante mas é diferente da onMoveItem, agora vai.

 

Perfeito ?

Deixa te perguntar, seria possivel por, pra "quem for invitado, pode jogar itens ou pega-los?" sucesso!

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
9 minutos atrás, Ackerzin disse:

Perfeito ?

Deixa te perguntar, seria possivel por, pra "quem for invitado, pode jogar itens ou pega-los?" sucesso!

Eu só adicionei isso de não poder jogar items na house a seu pedido haha, mas pra remover é só apagar esta parte do script.

	elseif toPosition.x ~= 65535 and getHouseFromPos(toPosition) then
		if getHouseOwner(getHouseFromPos(toPosition)) ~= getPlayerGUID(cid) then
			doPlayerSendCancel(cid, "You can't throw things on someone else's house.")
			return false
		end

 

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

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
4 minutos atrás, WooX disse:

Eu só adicionei isso de não poder jogar items na house a seu pedido haha, mas pra remover é apagar esta parte do script.


	elseif toPosition.x ~= 65535 and getHouseFromPos(toPosition) then
		if getHouseOwner(getHouseFromPos(toPosition)) ~= getPlayerGUID(cid) then
			doPlayerSendCancel(cid, "You can't throw things on someone else's house.")
			return false
		end

 

Ah, xd
Então, testei aqui, ta funcionando normal, "players aleatorios nao podem jogar itens na house, apenas quem foi invitado ou o dono" < Certinho!
Mas quem foi invitado não pode pegar itens da house, apenas jogar, queria que ele alem de pode jogar, poderia pega-los tambem.

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
3 minutos atrás, Ackerzin disse:

Ah, xd
Então, testei aqui, ta funcionando normal, "players aleatorios nao podem jogar itens na house, apenas quem foi invitado ou o dono" < Certinho!
Mas quem foi invitado não pode pegar itens da house, apenas jogar, queria que ele alem de pode jogar, poderia pega-los tambem.

O ponto principal do script é não permitir outros alem do dono poder pegar os items, remover essa função não teria sentido pois é exatamente o pedido do autor do tópico. Para funcionar desta maneira basta não usar o script, a maioria da sources já possui essa proteção para somente o dono e quem está invitado poder jogar items, jogadores aleatórios não irão conseguir jogar items na house.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo