Ir para conteúdo
  • 0

[Resolvido] Bloquear item na backpack


Pergunta

Olá a todos, estou precisando de uma ajuda em criar um script no qual bloqueia os jogadores de colocarem qualquer item dentro de uma backpack especifica.

 

 

tentei de algumas maneiras mas a unica coisa que consegui fazer foi para não poder jogar tal item no chão ahuahua

 

function onMoveItem(moveItem, frompos, position, cid)     if moveItem.itemid == 8908 then          doPlayerSendTextMessage(cid,25,'Voce nao pode mover este item!')         else          return true     endend


 

 

Se alguem puder ajudar, REPP++ ;D

Editado por DarkWore
Colocado Code no Script
Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 1

Sim, em movements:
 

local id = 1111 -- id da bpfunction onEquip(cid, item, slot)if item.itemid == id and (slot == CONST_SLOT_RIGHT or slot == CONST_SLOT_LEFT) thenreturn falseend

 

<movevent type="Equip" itemid="1111" slot="pickupable" script="NOMEDOSCRIPT.lua"/>

 

Aproveita e posta aí como ficou seu script do OnMove.

Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720753
Compartilhar em outros sites

  • 0
  Em 08/08/2017 em 03:16, Fjinst disse:

Olá a todos, estou precisando de uma ajuda em criar um script no qual bloqueia os jogadores de colocarem qualquer item dentro de uma backpack especifica.

 

 

tentei de algumas maneiras mas a unica coisa que consegui fazer foi para não poder jogar tal item no chão ahuahua

 

function onMoveItem(moveItem, frompos, position, cid)     if moveItem.itemid == 8908 then          doPlayerSendTextMessage(cid,25,'Voce nao pode mover este item!')         else          return true     endend

 

 

 

Se alguem puder ajudar, REPP++ ;D

Expand  

 

Você já tem essa função adicionada à source né? Tente algo como:

 

function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if toContainer.itemid == 8908 and toPos.x == CONTAINER_POSITION then       doPlayerSendTextMessage(cid, 25, "Você não pode adicionar itens a essa backpack.")       return falseendend

 

Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720737
Compartilhar em outros sites

  • 0
  Em 08/08/2017 em 23:20, Leoxtibia disse:

 

Você já tem essa função adicionada à source né? Tente algo como:

 

function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if toContainer.itemid == 8908 and toPos.x == CONTAINER_POSITION then       doPlayerSendTextMessage(cid, 25, "Você não pode adicionar itens a essa backpack.")       return falseendend

 

Expand  

Pior que a função que tenho de onMoveItem não é essa, tentei achar ela na internet mas só achei outras versões,

A função que tenho no meu servidor seria essa.

function onMoveItem(moveItem, frompos, position, cid)

Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720743
Compartilhar em outros sites

  • 0

@Fjinst A função que eu citei é creaturescripts e tem que ser adicionada na source. Ou, para evitar precisar mexer nas sources, que tal tentarmos algo "meio doido"? Eu pensei em evitar que o player:

1 - Movesse um item de sua backpack para a backpack a ser bloqueada

2 - Colocasse a backpack a ser bloqueada no chão e tentasse mover um item

3 - Colocasse a backpack a ser bloqueada dentro de outro container no chão e tentasse mover um item

 

Vê aí.

 

Em creaturescripts/scripts crie o arquivo:

 

bpBlock.lua

 

  Mostrar conteúdo oculto

 

 

No login.lua, registre o evento:

 

registerCreatureEvent(cid, "BlockBp")

 

Em creaturescripts.xml, adicione a tag: <event type="think" name="BlockBp" event="script" value="bpBlock.lua"/>

 

 

 

 

 

 

 

 

 

 

Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720751
Compartilhar em outros sites

  • 0
  Em 09/08/2017 em 12:44, Leoxtibia disse:

@Fjinst A função que eu citei é creaturescripts e tem que ser adicionada na source. Ou, para evitar precisar mexer nas sources, que tal tentarmos algo "meio doido"? Eu pensei em evitar que o player:

1 - Movesse um item de sua backpack para a backpack a ser bloqueada

2 - Colocasse a backpack a ser bloqueada no chão e tentasse mover um item

3 - Colocasse a backpack a ser bloqueada dentro de outro container no chão e tentasse mover um item

 

Vê aí.

 

Em creaturescripts/scripts crie o arquivo:

 

bpBlock.lua

 

  Mostrar conteúdo oculto

 

 

No login.lua, registre o evento:

 

registerCreatureEvent(cid, "BlockBp")

 

Em creaturescripts.xml, adicione a tag: <event type="think" name="BlockBp" event="script" value="bpBlock.lua"/>

 

 

 

 

 

 

 

 

 

 

Expand  

 

 

Eu dei uma fuçada hoje pela manhã nessas sourcers, acabei conseguindo coloca-las, ahuahuahau, mas de qualquer jeito você ajudou muito

 

Me tira só uma dúvida, no caso eu uso TFS 0.4 (8.60)

Acabei de descobrir um bug nessas sourcers, quando a Backpack está equipada nas mãos, OU DENTRO DE UM CONTAINER, , ESPADA/ESCUDO a função não é ativada, Tem como bloquear essa bp de ser arrastada para os slots de mão/escudo?, acredito que usando a função de checar slot, mas não to conseguindo pensar em como colocar

local Esquerda = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
local Direita = getPlayerSlotItem(cid, CONST_SLOT_LEFT)

 

Editado por Fjinst
Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720752
Compartilhar em outros sites

  • 0

O objetivo disso tudo é criar uma backpack na qual não se pode colocar items, só tirar, e não pode equipa-la, 

 

<movevent type="Equip" itemid="8569"  slot="backpack" script="BLOQUEAR.lua"/>
<movevent type="Equip" itemid="8569"  slot="pickupable" script="BLOQUEAR.lua"/>

Movements \/

local id = 8569 -- id da bpfunction onEquip(cid, item, slot)if item.itemid == id and (slot == 1 or slot == 2 or slot == 3 or slot == 4 or slot == 5 or slot == 6 or slot == 7 or slot == 8 or slot == 9 or slot == 10 ) thenreturn falseendreturn trueend

 

 

Creaturescripts \/

function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if toContainer.itemid == 8569 and toPos.x == CONTAINER_POSITION then       doPlayerSendCancel(cid, "Sorry, is not possible.")       return falseendreturn trueend

 

Agora me tira só uma dúvida, não sei se foi bug de compilação, mas se a backpack estiver dentro do dp, a função do creaturescripts (onmove) não funciona, ela não checa o item dentro do dp, tem como solucionar isso?

 

Outra dúvida, no talkactions, createitem, tem como colocar para não ser possivel criar essa backpack? por que quando cria ela e seu inventario estiver vazio, crasha o servidor, devido um loop infinito do script de ser possivel equipar ou não.

 

A minha ideia dessa gambiarra toda é tentar reproduzir aquela reward chest do tibia global, no qual você pode tirar os items mas não pode colocar item dentro dela

Editado por Fjinst
Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1720756
Compartilhar em outros sites

  • 0
O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.
Link para o comentário
https://xtibia.com/forum/topic/245968-resolvido-bloquear-item-na-backpack/#findComment-1725345
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...