TE

Npc Especial

Por tesch, 10 de mar. de 2011 em Archived

tibia
script
otserv
4
959
teschT
10 de março de 2011 às 15:58

Tipo do script:npcs

Protocolo (versão do Tibia):8.60

Servidor utilizado:styller yourots

Nível de experiência:medio/baixo(sei mecher no bassico fazer creatures essas coisas)

Adicionais/Informações:o npc e o seguinte ele vende itens por otro itens sem ser gold seria uma nova moeda mais eu nao quero de troca eu queria que o player podesse falar trade como se fose gold mais esse npoc em vez de pegar gold ele pega o item vip do server!

ex:

player:hi

npc: ola player para comprar itens vips e so falar trade

player:trade

ae la abre akela paradinha do trade ele compra sertinho mais quando ele compra em ves de ser gold vai ser barras de ouro

VodkartV
10 de março de 2011 às 19:33

pow velho ai vc tem que mechar na lib do npc para aceitar moedas vips tbm :X

teschT
10 de março de 2011 às 21:22

como eu mecho na lib pra aceitar isso?

o dificil e trocar de guild pra vip gold o resto eu sei fazer o npc todinho menos isso que nao sei

VodkartV
10 de março de 2011 às 21:32

se eu não me engano é nessa função:

 

-- Callback onBuy() function. If you wish, you can change certain Npc to use your onBuy().
function ShopModule:callbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks)
	if(self.npcHandler.shopItems[itemid] == nil) then
		error("[shopModule.onBuy]", "items[itemid] == nil")
		return false
	end

	if(self.npcHandler.shopItems[itemid].buyPrice == -1) then
		error("[shopModule.onSell]", "Attempt to buy a non-buyable item")
		return false
	end

	local backpack = 1988
	local totalCost = amount * self.npcHandler.shopItems[itemid].buyPrice
	if(inBackpacks) then
		totalCost = totalCost + (math.max(1, math.floor(amount / getContainerCapById(backpack))) * 20)
	end

	local parseInfo = {
		[TAG_PLAYERNAME] = getPlayerName(cid),
		[TAG_ITEMCOUNT] = amount,
		[TAG_TOTALCOST] = totalCost,
		[TAG_ITEMNAME] = self.npcHandler.shopItems[itemid].realName
	}

	if(getPlayerMoney(cid) < totalCost) then
		local msg = self.npcHandler:getMessage(MESSAGE_NEEDMONEY)
		msg = self.npcHandler:parseMessage(msg, parseInfo)
		doPlayerSendCancel(cid, msg)
		return false
	end

	local subType = self.npcHandler.shopItems[itemid].subType or 1
	local a, b = doNpcSellItem(cid, itemid, amount, subType, ignoreCap, inBackpacks, backpack)
	if(a < amount) then
		local msgId = MESSAGE_NEEDMORESPACE
		if(a == 0) then
			msgId = MESSAGE_NEEDSPACE
		end

		local msg = self.npcHandler:getMessage(msgId)
		parseInfo[TAG_ITEMCOUNT] = a
		msg = self.npcHandler:parseMessage(msg, parseInfo)
		doPlayerSendCancel(cid, msg)
		if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
			self.npcHandler.talkStart[cid] = os.time()
		else
			self.npcHandler.talkStart = os.time()
		end

		if(a > 0) then
			doPlayerRemoveMoney(cid, ((a * self.npcHandler.shopItems[itemid].buyPrice) + (b * 20)))
			return true
		end

		return false
	else
		local msg = self.npcHandler:getMessage(MESSAGE_BOUGHT)
		msg = self.npcHandler:parseMessage(msg, parseInfo)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg)
		doPlayerRemoveMoney(cid, totalCost)
		if(NPCHANDLER_CONVBEHAVIOR ~= CONVERSATION_DEFAULT) then
			self.npcHandler.talkStart[cid] = os.time()
		else
			self.npcHandler.talkStart = os.time()
		end

		return true
	end
end