Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Em 07/10/2017 em 18: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?

Link para o post
Compartilhar em outros sites
  • Respostas 40
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Nogard
      Não deixe seu evento de Natal para última hora, faltam apenas 4 dias. 

      Aproveite as sprites com desconto no site: https://otsprites.com
       
       
       

       

       
       
       
    • Por otpokesalense
      🧿Base Tibia Solebran totalmente otimizada!  
       
       ✔️ OTClient (Version Old);
      ✔️ Update 2.2;
      ✔️ Site Póprio;
      ✔️ Map Global
      ✔️ Bugs, Minimo (2x) talvez;
      ✔️ PVP 💯 Funcional.
       
       
      Get Servidor: https://files.fm/f/7qumr8943e 💸 Buy! otimo projeto para vc utilizá-lo.
      Lembrando:: ao comprar o download será disponibilizado automaticamente.
       
      🧑‍💻System Operacional: Windows (VPS)
      👨‍💻Programador (27) 998931903 - - - O Valor já inclui o serviço de programação! 🤗
       

       
       

       
       
    • Por Arkanjo39
      CUIDA, CUIDA E VEM CONHECER NOSSO SERVER. KING BAIAK ACABOU DE SER LANÇADO!!! VEM SER O TOP 1 Site com Otclient: https://kingbaiak.com/ PARA NOVOS JOGARES ADM TA DANDO AQUELA FORCINHA! SERVIDOR 8.60 COM RESETS, MONTARIAS E GOLDEN OUTFIT! INFORMAÇÕES BÁSICAS DO SERVIDOR: [+] MAPA BAIAK [+] HIGH EXP [+] RESETS COM + DAMAGE [+] AUTOLOOT AUTOMÁTICO [+] CITY DONATE [+] ROSHAMUUL, ORAMOND E NETHER [+] MONTARIAS E GOLDEN OUTFIT [+] INVASÃO DE MONSTROS AUTOMÁTICAS [+] DAILY MONSTER QUE APARECE AO LOGAR [+] MONTARIAS COM COMANDO !MOUNT [+] SISTEMA DE ROLETA ATUAL [+] CAST WATCH [+] FAST ATTACK [+] CAST ARROWS [+] PUSH CRUZADO [+] REWARD CHEST [+] WARSQUARE [+] COMBO EXP DE POTIONS [+] MINERAÇÃO COM LOJA [+] SISTEMA DE BOSS [+] CRITICAL/DODGE [500/500] [+] LIFE E MANA EM PORCENTAGEM* [+] VARIAS QUESTS [+] EVENTO DTT (AUTOMÁTICO) [+] EVENTO BATLEFIELD (AUTOMÁTICO) [+] EVENTO SNOWBALLWAR (AUTOMÁTICO) [+] EVENTO DESERT WAR (AUTOMÁTICO) [+] EVENTO ZOMBIE (AUTOMÁTICO) [+] EVENTO CAMPO MINADO (AUTOMÁTICO) [+] EVENTO TEAM BATLE (AUTOMÁTICO) [+] EVENTO CAPTURE THE FLAG (AUTOMÁTICO)
    • Por BTitan
      Baiak Titan: Uma Experiência Incomparável no Universo Baiak
       
      O Baiak Titan combina a nostalgia dos antigos tempos de OTServ com a inovação e modernidade atuais. Oferecemos um mapa vasto, com mais de 100 áreas de caça para explorar, além de vocações equilibradas para um PvP justo e emocionante. Diversos eventos automáticos ocorrem diariamente, garantindo diversão constante para os jogadores. O servidor conta com vários sistemas, como por exemplo, montarias para quem utiliza o cliente exclusivo, monstros do Tibia 9.6+, sistema de mineração, entre outros!
       
      Por Que Escolher o Baiak Titan?
       
      PvP de Alta Qualidade: Embora seja um servidor Baiak, nosso mapa é cuidadosamente projetado para proporcionar ganho de experiência sem perder a seriedade do jogo, oferecendo desafios instigantes e um equilíbrio perfeito para combates épicos.
      Jogabilidade Customizada: O mapa Baiak foi exclusivamente adaptado para promover intensas batalhas de PvP, com recursos inovadores que mantêm a jogabilidade sempre fresca e emocionante.

      Detalhes do Servidor:
       
      IP: baiaktitan.com Website: https://baiaktitan.com Account Manager: 1/1
        Principais Características:
       
      Uptime 24/7, Sem Lag: Jogue a qualquer hora com a estabilidade de servidores dedicados e de alta performance. Velocidade de Ataque Equilibrada: Ajustada perfeitamente para garantir combates dinâmicos e justos. Sistema de Cast: Transmita suas jogadas ao vivo e assista aos seus amigos em ação. Cliente Exclusivo: Software personalizado com novos outfits, montarias e criaturas, enriquecendo ainda mais sua experiência no jogo. Runas, Poções e Flechas Não Infinitas: Valorizamos uma jogabilidade mais estratégica e desafiadora, onde os recursos precisam ser geridos com sabedoria.
      Eventos Automáticos:
       
      Zombie Team Battle Monster Hunter Castle (War of Emperium) Capture The Flag DOTA Corrida Arena War (O último sobrevivente ganha) Fire Storm
        Taxas do Servidor:
       
      EXP: 200x (com stages)
      Skill: 100x
      Magic: 30x
      Loot: 3x
       
      Junte-se à nossa comunidade e viva essa aventura única. O Baiak Titan espera por você!



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo