Jump to content
  • 0

Problema com drop de Key com Action ID


FlamesAdmin

Question

Seguinte, estou com um probleminha no meu servidor/sources que ele não dropa uma key com ActionID

Ele apenas dropa como se fosse item normal.

18:54 Você vê purple key (Key:0).
ItemID: [2086].

Se alguém tiver uma solução e puder ajudar ficarei grato e darei a devida reputação :D

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0
27 minutos atrás, FlamesAdmin disse:

@Yan18key padrão do servidor, ID 2086, já tentei com item diferente e tals

Estranho, mas temporariamente, usa dessa maneira por enquanto, vai em Data/Creaturescripts/Scripts e crie um arquivo chamado item_purplekey.lua e adicione o código dentro:

local id_purplekey = 2086 -- ID DA PURPLE KEY
local id_action = 15000 -- COLOQUE O ID DA ACTIONID

function onDeath(cid, corpse, deathList)
local item = doCreateItemEx(id_purplekey)
doItemSetAttribute(item, 'aid', id_action)
doAddContainerItemEx(corpse.uid, item)
return true
end

 

Agora abra o creaturescripts.xml e adicione a tag:

<event type="death" name="item_purplekey" event="script" value="item_purplekey.lua"/>

 

E por fim adicione o evento na xml de todos os monstros que dropam a key:

<script>
  <event name="item_purplekey"/>
</script>

 

Teste e avise caso dê algum problema.

Link to comment
Share on other sites

  • 0
1 minuto atrás, FlamesAdmin disse:

Achei essa solução ai no OTLand e mesmo assim não deu certo

Estranho, essa key tem uma action para fazer o que no seu server?

Edited by Yan18
Link to comment
Share on other sites

  • 0
2 minutos atrás, Yan18 disse:

Estranho, essa key tem uma action para fazer o que no seu server?

É pra quest, ela dropa com AID e usa pra abrir porta

Ai pra monstros diferentes ela dropa a mesma ou outra key com AID diferente pra liberar outra porta

Edited by FlamesAdmin
Link to comment
Share on other sites

  • 0
17 minutos atrás, FlamesAdmin disse:

É pra quest, ela dropa com AID e usa pra abrir porta

Ai pra monstros diferentes ela dropa a mesma ou outra key com AID diferente pra liberar outra porta

Olá no meu servidor tem esse sistema de drop de key e lá eu fiz o seguinte, coloquei o drop da key no monstro com o action no loot e funcionou.

 

<item id="2086" actionId="1990" chance="100000"/> --chave

 

Link to comment
Share on other sites

  • 0
41 minutos atrás, Lokys disse:

Olá no meu servidor tem esse sistema de drop de key e lá eu fiz o seguinte, coloquei o drop da key no monstro com o action no loot e funcionou.

 

<item id="2086" actionId="1990" chance="100000"/> --chave

 

Tem essa possibilidade também, mas eu acho que era assim que ele estava fazendo, pois ele disse que não estava vindo com a action. Mas caso ele setado a actionid de outra forma, essa é para funcionar.

Link to comment
Share on other sites

  • 0
2 horas atrás, Lokys disse:

Olá no meu servidor tem esse sistema de drop de key e lá eu fiz o seguinte, coloquei o drop da key no monstro com o action no loot e funcionou.

 

<item id="2086" actionId="1990" chance="100000"/> --chave

 

Então, eu fiz desse jeito tbm, só que tbm não deu certo :/ 

seu é que tfs?

 

Na minha source em monsters.cpp era assim, só que crashava qnd dropava com AID

if(lootBlock.actionId != -1)
	tmpItem->setAttribute(lootBlock.actionId);

Ai o Orochi Elf/Tony Namoral fez isso

if(lootBlock.actionId != -1)
	tmpItem->setAttribute("aid", lootBlock.actionId);

Só que não dropa com AID ...

 

@Lokyscomo ta sua função no monsters.cpp 

Item* MonsterType::createLoot(const LootBlock& lootBlock)

 

Edited by FlamesAdmin
Link to comment
Share on other sites

  • 0
36 minutos atrás, FlamesAdmin disse:

Então, eu fiz desse jeito tbm, só que tbm não deu certo :/ 

seu é que tfs?

 

Na minha source em monsters.cpp era assim, só que crashava qnd dropava com AID


if(lootBlock.actionId != -1)
	tmpItem->setAttribute(lootBlock.actionId);

Ai o Orochi Elf/Tony Namoral fez isso


if(lootBlock.actionId != -1)
	tmpItem->setAttribute("aid", lootBlock.actionId);

Só que não dropa com AID ...

o meu tfs e o 0.4 mais quem compilo foi meu rl eu nem sei mexer com source...

Link to comment
Share on other sites

  • 0
Em 20/04/2020 em 21:53, FlamesAdmin disse:

Então, eu fiz desse jeito tbm, só que tbm não deu certo :/ 

seu é que tfs?

 

Na minha source em monsters.cpp era assim, só que crashava qnd dropava com AID


if(lootBlock.actionId != -1)
	tmpItem->setAttribute(lootBlock.actionId);

Ai o Orochi Elf/Tony Namoral fez isso


if(lootBlock.actionId != -1)
	tmpItem->setAttribute("aid", lootBlock.actionId);

Só que não dropa com AID ...

 

@Lokyscomo ta sua função no monsters.cpp 


Item* MonsterType::createLoot(const LootBlock& lootBlock)

 

Qual é sua TFS?

Link to comment
Share on other sites

  • 0
Em 20/04/2020 em 21:53, FlamesAdmin disse:

Então, eu fiz desse jeito tbm, só que tbm não deu certo :/ 

seu é que tfs?

 

Na minha source em monsters.cpp era assim, só que crashava qnd dropava com AID


if(lootBlock.actionId != -1)
	tmpItem->setAttribute(lootBlock.actionId);

Ai o Orochi Elf/Tony Namoral fez isso


if(lootBlock.actionId != -1)
	tmpItem->setAttribute("aid", lootBlock.actionId);

Só que não dropa com AID ...

 

@Lokyscomo ta sua função no monsters.cpp 


Item* MonsterType::createLoot(const LootBlock& lootBlock)

 

Eu dei uma olhada em duas sources de duas bases diferentes, e em ambas o arquivo monster.cpp na função createLoot está diferente da sua na parte da actionid, está:

if(lootBlock.actionId != -1)
		tmpItem->setActionId(lootBlock.actionId);

Teria que olhar todo o código para ver.

Link to comment
Share on other sites

  • 0
9 horas atrás, Yan18 disse:

Teria que olhar todo o código para ver.

Eu até tenho uma 0.4 aqui com isso corrigido, mas não consegui extrair os códigos com a correção

 

if(lootBlock.actionId != -1)
		tmpItem->setActionId(lootBlock.actionId);

Desse jeito /\ o servidor crasha quando dropa

 

Minhas sources:

Item* MonsterType::createLoot(const LootBlock& lootBlock)
{
	uint16_t item = lootBlock.ids[0], random = Monsters::getLootRandom();
	if(lootBlock.ids.size() > 1)
		item = lootBlock.ids[random_range((size_t)0, lootBlock.ids.size() - 1)];

	Item* tmpItem = NULL;
	if(Item::items[item].stackable)
	{
		if(random < lootBlock.chance)
			tmpItem = Item::CreateItem(item, (random % lootBlock.count + 1));
	}
	else if(random < lootBlock.chance)
		tmpItem = Item::CreateItem(item, 0);

	if(!tmpItem)
		return NULL;

	if(lootBlock.subType != -1)
		tmpItem->setSubType(lootBlock.subType);

	if(lootBlock.actionId != -1)
		tmpItem->setAttribute("aid", lootBlock.actionId);

	if(lootBlock.uniqueId != -1)
		tmpItem->setUniqueId(lootBlock.uniqueId);

	if(!lootBlock.text.empty())
		tmpItem->setText(lootBlock.text);

	return tmpItem;
}

 

Edited by FlamesAdmin
Link to comment
Share on other sites

×
×
  • Create New...