Ir para conteúdo

Featured Replies

Postado
  Em 07/10/2017 em 22:50, Danyel Varejao disse:

Olá @SilentKill pelo que eu entendi do sistema é o seguinte, funciona como uma troca de PONTOS por ITEMS usando o trade. correto?

 

Aqui vai os scripts!

 

1º Em data/npc/scripts adicione um arquivo chamado NamekJin Seller.lua e cole isso dentro:


local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)
	npcHandler:onCreatureAppear(cid)
end

function onCreatureDisappear(cid)
	npcHandler:onCreatureDisappear(cid)
end

function onCreatureSay(cid, type, msg)
	npcHandler:onCreatureSay(cid, type, msg)
end

function onThink()
	npcHandler:onThink()
end

function greetCallback(cid)
	talkState[cid] = 0
	return true
end

function creatureSayCallback(cid, type, msg)
	if (not npcHandler:isFocused(cid)) then
		return false
	end
	if talkState[cid] == nil or talkState[cid] == 0 then
		Count_Points = tonumber(msg)
		if isInArray(Points_Trade.Points, Count_Points) then
			npcHandler:say("Do you want to buy a premium points transfer document that will transfer ".. Count_Points .." premium points, right?", cid)
			talkState[cid] = 1
		else
			npcHandler:say("Escolha um numero entre ".. table.concat(Points_Trade.Points, ', ') ..".", cid)
			talkState[cid] = 0
		end
	elseif talkState[cid] == 1 then
		if msgcontains(msg, 'yes') then
			local Document = doCreateItemEx(Points_Trade.Document_ItemID)
			doItemSetAttribute(Document, "name", "".. Count_Points .." premium points transfer document")
			doItemSetAttribute(Document, "points", Count_Points)
			doPlayerAddItemEx(cid, Document)
			npcHandler:say("Você obteve um documento que vale ".. Count_Points .." premium points, use ele no trade com alguem.", cid)
			talkState[cid] = 0
		else
			npcHandler:say("Ok, volte mais tarde.", cid)
			talkState[cid] = 0
		end
	end
	return true
end

npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Eu vendo alguns utensílios e Premium Points transfers para você transferir pontos para outros jogadores, lembre-se para comprar use '10,ppt' para 10 pontos.")
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

2º Em data/lib adicione um arquivo chamado Points_Trade.lua e cole isso dentro:


Points_Trade = {
	Document_ItemID = 1954,
	Points = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100},
}

function DocumentPoints(Item)
	return tonumber(getItemAttribute(Item.uid, "points"))
end

function getPlayerPoints(cid)
	local AccountID = getPlayerAccountId(cid)
	local Points = 0
	local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID .."")
	if Result:getID() ~= -1 then
		Points = Result:getDataInt("premium_points")
	end
	return tonumber(Points)
end

function doPlayerAddPoints(cid, Points)
	local AccountID = getPlayerAccountId(cid)
	local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = '".. AccountID .."'")
	if Result:getID() ~= -1 then
		db.executeQuery("UPDATE `accounts` SET `premium_points` = " .. getPlayerPoints(cid) + Points .. " WHERE `id` = " .. AccountID .. ";")
	end
	return true
end

function doPlayerRemovePoints(cid, Points)
	local AccountID = getPlayerAccountId(cid)
	local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = '".. AccountID .."'")
	if Result:getID() ~= -1 then
		db.executeQuery("UPDATE `accounts` SET `premium_points` = " .. getPlayerPoints(cid) - Points .. " WHERE `id` = " .. AccountID .. ";")
	end
	return true
end

3º Em data/creaturescripts/scripts adicione um arquivo chamado Points_Trade.lua e cole isso dentro:


function onTradeAccept(cid, target, item, targetItem)
	if isPlayer(cid) and isPlayer(target) then
		if item.itemid == Points_Trade.Document_ItemID then
			doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(item) .." premium points.")
			doPlayerAddPoints(target, DocumentPoints(item))
			doPlayerRemovePoints(cid, DocumentPoints(item))
			addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1)
		elseif targetItem.itemid == Points_Trade.Document_ItemID then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(targetItem) .." premium points.")
			doPlayerAddPoints(cid, DocumentPoints(targetItem))
			doPlayerRemovePoints(target, DocumentPoints(targetItem))
			addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1)
		end
	end
	return true
end 

function onTradeRequest(cid, target, item)
	if item.itemid == Points_Trade.Document_ItemID then
		if getPlayerPoints(cid) < DocumentPoints(item) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem ".. DocumentPoints(item) .." para realizar uma troca.")
			return false
		end
	end
	return true
end

4º Em data/creaturescripts/scripts/login.lua adicione isso dps de qualquer linha que contenha registerCreatureEvent


registerCreatureEvent(cid, "Points_Trade_Request")
registerCreatureEvent(cid, "Points_Trade")

 

5º Em data/creaturescripts/creaturescripts.xml adicione uma tag:


<event type="traderequest" name="Points_Trade_Request" event="script" value="Points_Trade.lua"/>
<event type="tradeaccept" name="Points_Trade" event="script" value="Points_Trade.lua"/>

6º Em data/npc adicione um arquivo chamado NamekJin Seller.xml e coloque isso dentro:


<?xml version="1.0" encoding="UTF-8"?>
<npc name="NamekJin Seller" script="NamekJin Seller.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="138" head="97" body="59" legs="45" feet="102" addons="2"/>
</npc>

 

Se te ajudou marque como melhor resposta!, obrigado.

Gostei muito da ideia, teria como adaptar para tfs 1.3?

  • Respostas 40
  • Visualizações 4.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Danyel Varejao
    Danyel Varejao

    Olá @SilentKill pelo que eu entendi do sistema é o seguinte, funciona como uma troca de PONTOS por ITEMS usando o trade. correto?   Aqui vai os scripts!   1º Em data/npc/scripts ad

  • Danyel Varejao
    Danyel Varejao

    Tranquilo cara, mas você sabe que os players iram abusar né? criando vários documentos e jogando no chão e tals... Mas posso fazer sim pra você.

  • @SilentKill Qual o seu sistema de premium points? Posta aqui. 

Posted Images

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo