Ir para conteúdo

Featured Replies

Postado

Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês.

Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam ela e tal?

Vou te dar a solução nesse tópico.

================================================================================================================

Testado no TFS 1.3 na versão 8.60

================================================================================================================

Em player.cpp, procure a função Player::updateSaleShopList

Troque essa linha

if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN) {

por essa

if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN && itemId != ITEM_GOLD_INGOT) {

================================================================================================================

Em const.h, procure por ITEM_CRYSTAL_COIN = 2160

Abaixo dela, adicione isso

ITEM_GOLD_INGOT = 9971,

Sendo que o 9971 é o ID do item que gostariamos que seja a nova moeda.

================================================================================================================

Em item.cpp, procure pela função uint32_t Item::getWorth() const

Troque ela toda por isso

uint32_t Item::getWorth() const
{
	switch (id) {
		case ITEM_GOLD_COIN:
			return count;

		case ITEM_PLATINUM_COIN:
			return count * 100;

		case ITEM_CRYSTAL_COIN:
			return count * 10000;

		case ITEM_GOLD_INGOT:
			return count * 1000000;

		default:
			return 0;
	}
}

================================================================================================================

Em luascript.cpp, procure por registerEnum(ITEM_CRYSTAL_COIN)

Abaixo disso, coloque isso

registerEnum(ITEM_GOLD_INGOT)

================================================================================================================

Agora em actions/script/changegold.lua, troque por isso

local config = {
	[ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN},
	[ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN},
	[ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN, changeTo = ITEM_GOLD_INGOT},
	[ITEM_GOLD_INGOT] = {changeBack = ITEM_CRYSTAL_COIN}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local coin = config[item:getId()]
	if coin.changeTo and item.type == 100 then
		item:remove()
		player:addItem(coin.changeTo, 1)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	elseif coin.changeBack then
		item:remove(1)
		player:addItem(coin.changeBack, 100)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	else
		return false
	end
	return true
end

================================================================================================================

É isso por hoje.

================================================================================================================

  • Respostas 9
  • Visualizações 3.6k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês. Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam e

  • Não mexo com versões que tem o market incluso, no passar dos dias irei dar uma olhada nas sources, se eu achar te passo a informação.

Postado
  • Administrador

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Mostrar conteúdo oculto

 

Postado

@Movie  O seu arrombado, você não falou que já tinha parado de desenvolver seu OT, que não voltava mais e bla bla bla?  Que porra é essa então?

No mais é uma boa solução, utilizo exatamente a mesma e funciona bem! Os outros meios que tem por ai, não inclui a moeda nova no jogo (Ela não é aceita por NPCS e quando você faz um saque no banco não vem ela).

  • 6 months later...
Postado
  Em 12/05/2020 em 18:12, Movie disse:

Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês.

Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam ela e tal?

Vou te dar a solução nesse tópico.

================================================================================================================

Testado no TFS 1.3 na versão 8.60

================================================================================================================

Em player.cpp, procure a função Player::updateSaleShopList

Troque essa linha


if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN) {

por essa


if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN && itemId != ITEM_GOLD_INGOT) {

================================================================================================================

Em const.h, procure por ITEM_CRYSTAL_COIN = 2160

Abaixo dela, adicione isso


ITEM_GOLD_INGOT = 9971,

Sendo que o 9971 é o ID do item que gostariamos que seja a nova moeda.

================================================================================================================

Em item.cpp, procure pela função uint32_t Item::getWorth() const

Troque ela toda por isso


uint32_t Item::getWorth() const
{
	switch (id) {
		case ITEM_GOLD_COIN:
			return count;

		case ITEM_PLATINUM_COIN:
			return count * 100;

		case ITEM_CRYSTAL_COIN:
			return count * 10000;

		case ITEM_GOLD_INGOT:
			return count * 1000000;

		default:
			return 0;
	}
}

================================================================================================================

Em luascript.cpp, procure por registerEnum(ITEM_CRYSTAL_COIN)

Abaixo disso, coloque isso


registerEnum(ITEM_GOLD_INGOT)

================================================================================================================

Agora em actions/script/changegold.lua, troque por isso


local config = {
	[ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN},
	[ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN},
	[ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN, changeTo = ITEM_GOLD_INGOT},
	[ITEM_GOLD_INGOT] = {changeBack = ITEM_CRYSTAL_COIN}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local coin = config[item:getId()]
	if coin.changeTo and item.type == 100 then
		item:remove()
		player:addItem(coin.changeTo, 1)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	elseif coin.changeBack then
		item:remove(1)
		player:addItem(coin.changeBack, 100)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	else
		return false
	end
	return true
end

================================================================================================================

É isso por hoje.

================================================================================================================

Não consegui fazer aqui, os NPCS não reconhece essa nova moeda.

  • 3 months later...
Postado
  Em 12/05/2020 em 18:12, Breno Alves disse:

Hoje estou bonzinho e vou postar mais uma coisa que eu fiz pro otserver que estou desenvolvendo e vou compartilhar com vocês.

Você tem aquela nova moeda no seu servidor, mas os NPCs não aceitam ela e tal?

Vou te dar a solução nesse tópico.

================================================================================================================

Testado no TFS 1.3 na versão 8.60

================================================================================================================

Em player.cpp, procure a função Player::updateSaleShopList

Troque essa linha


if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN) {

por essa


if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN && itemId != ITEM_GOLD_INGOT) {

================================================================================================================

Em const.h, procure por ITEM_CRYSTAL_COIN = 2160

Abaixo dela, adicione isso


ITEM_GOLD_INGOT = 9971,

Sendo que o 9971 é o ID do item que gostariamos que seja a nova moeda.

================================================================================================================

Em item.cpp, procure pela função uint32_t Item::getWorth() const

Troque ela toda por isso


uint32_t Item::getWorth() const
{
	switch (id) {
		case ITEM_GOLD_COIN:
			return count;

		case ITEM_PLATINUM_COIN:
			return count * 100;

		case ITEM_CRYSTAL_COIN:
			return count * 10000;

		case ITEM_GOLD_INGOT:
			return count * 1000000;

		default:
			return 0;
	}
}

================================================================================================================

Em luascript.cpp, procure por registerEnum(ITEM_CRYSTAL_COIN)

Abaixo disso, coloque isso


registerEnum(ITEM_GOLD_INGOT)

================================================================================================================

Agora em actions/script/changegold.lua, troque por isso


local config = {
	[ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN},
	[ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN},
	[ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN, changeTo = ITEM_GOLD_INGOT},
	[ITEM_GOLD_INGOT] = {changeBack = ITEM_CRYSTAL_COIN}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local coin = config[item:getId()]
	if coin.changeTo and item.type == 100 then
		item:remove()
		player:addItem(coin.changeTo, 1)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	elseif coin.changeBack then
		item:remove(1)
		player:addItem(coin.changeBack, 100)
		player:say("$$$", TALKTYPE_MONSTER_SAY, true)
	else
		return false
	end
	return true
end

================================================================================================================

É isso por hoje.

================================================================================================================

 

Primeiramente parabéns por trazer esse conteúdo, eu tenho esse mesmo sistema idêntico ao seu, funciona com npcs e tal.

 

Mas tem um problema relacionado ao market, que dar pra comprar coisas no market e não desconta da moeda nova, o market sabe que você tem dinheiro mas não desconta, alguns jogadores já me relataram que isso ocorre deixando na bp ou depot, achei melhor reportar aqui esse problema... para acharmos uma solução, estou tentando encontrar na source onde ele puxa as moedas do market mas ainda não encontrei. Tamo junto

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo