Jump to content

Recommended Posts

Olá, gostaria de um sistema de baú donate, onde a pessoa faz o donate, e eu como adm entro no game e coloco os pontos(itens) nesse baú, e somente essa pessoa que eu determinei que vai poder retirar esses itens.
Esse baú vai funcionar para todos os player mas somente os que eu determinar os itens que poderão retirar. Desde já agradeço
Meu tfs é 0.4
Ate disponibilizaria algum código para facilitar mas não faço a menor ideia qual codigo se aproxima mais disso
Ja vi esse sistema funcionando no Wodbo Wars

 

 

Capturar.PNG

Link to post
Share on other sites

Acredito que em tfs 0.4 não de pra fazer, o que você pode fazer é um comando que da X Quantia de storage ao player (Que seria os pontos), e quando ele apertar o bau, checar essa storage, se a storage tiver valor 10, ele recebe os 10 pontos no depot dele, ou alterando a talk /i pra setar um atributo com o nome do player, ai vc cria o item com nome joga no bau, esse bau depois de um tempo checa os item e manda pro depois dos players que tem o nome igual do atributo do item

Edited by FlameArcixt (see edit history)

arcixt.png.013e2ae477e2a550a7d99a71e2ca6758.png

Arcixt Mapping Build

Interessado(a) em Freelance de mapping? 5 anos na área trabalhando com todos os versões de otservers

Interested in Freelance mapping? 5 years in the field working with all versions from otservers

91_Discord_logo_logos-512.png.fb621298e5bfd4a911090b3363387c16.png  Discord: Arcixt#1329 

facebook-512.png.890e3fc2724e38221ca419deb6f3416a.png  Facebook Page: www.facebook.com/ArcixtMapping  

 

 

Link to post
Share on other sites

  • Solution
Posted (edited)
Em talkactions/scripts crie uma arquivo chamado addpoints.lua e cole \/
function onSay(cid, words, param)
	local t = string.explode(param, ",")
	
	if(not t[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
		return true
	end

	local tid = getPlayerByNameWildcard(t[1])
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.")
		return true
	end
	
	if not t[2] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sem valor adicional.")
	else
		setPlayerStorageValue(tid, 15555, getPlayerStorageValue(cid, 15555) + t[2])
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou " .. t[2] .. " points " .. "para " .. t[1].. ".")
		doPlayerSendTextMessage(tid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu " .. t[2] .. " points.")
		doSendAnimatedText(getPlayerPosition(tid), "+" .. t[2] .. " points.", COLOR_DARKYELLOW)
	end

	return true
end

-- /teste yeths, valor

 

em talkactions/scripts ainda, crie um arquivo chamado removepoints.lua e cole \/
function onSay(cid, words, param)
	local t = string.explode(param, ",")
	
	if(not t[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
		return true
	end

	local tid = getPlayerByNameWildcard(t[1])
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.")
		return true
	end
	

	if not t[2] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sem valor adicional.")
	else
	
		if (getPlayerStorageValue(tid, 15555) - t[2]) < 0 then
			setPlayerStorageValue(tid, 15555, 0)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você removeu todos os points do jogador " .. t[1].. ".")
			return true
		end
		
		setPlayerStorageValue(tid, 15555, getPlayerStorageValue(tid, 15555) - t[2])
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você removeu " .. t[2] .. " points do jogador " .. t[1].. ".")
		
	end

	return true
end

-- /teste yeths, valor
em talkactions/scripts ainda crie um arquivo chamado getpoints.lua e cole \/
function onSay(cid, words, param)

	local tid = getPlayerByNameWildcard(param)
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " not found.")
		return true
	end
	
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este jogador possui " .. getPlayerStorageValue(tid, 15555) .. " points.")
		

	return true
end

-- /teste yeths, valor

 

 

agora em talkactions.xml coloque essas tags

	<!-- points -->
	<talkaction words="/addpoints" event="script" value="addpoints.lua"/>
	<talkaction words="/removepoints" event="script" value="removepoints.lua"/>
	<talkaction words="/obterpoints" event="script" value="getpoints.lua"/>

 

em actions/scripts crie um arquivo chamado bau_points.lua
info_table = {
	id_points = 2260
}
function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, 15555) >= 1 then

	data = os.date("%d/%m/%y", os.time())
	timer = os.date("%H:%M:%S", os.time())
	local test = io.open("points.txt", "a+")
	local read = ""
	if test then
		read = test:read("*all")
		test:close()
	end
	read = read.."Dia: " .. data .. " hora:" .. timer .. " nome do jogador: "..getCreatureName(cid).. ", valor retirado: " ..getPlayerStorageValue(cid, 15555).." points.\n"
	local reopen = io.open("points.txt", "w")
	reopen:write(read)
	reopen:close()
	
 	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu +" .. getPlayerStorageValue(cid, 15555) .. " points.")
	doPlayerAddItem(cid, info_table.id_points, getPlayerStorageValue(cid, 15555))
	setPlayerStorageValue(cid, 15555, 0)

else
	return doPlayerSendCancel(cid, "Você não possui points.")
  end
end
	

 

agora em actions.xml coloque essas tags

<!-- points -->
	<action actionid="ACTIONSID" event="script" value="bau_points.lua"/>

 

ultimo passo, vai em creaturescript/scripts e procure por login.lua

 

	if getPlayerStorageValue(cid, 15555) == -1 then
	   setPlayerStorageValue(cid, 15555, 0)
	end

	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce possui " .. getPlayerStorageValue(cid, 15555) .. " points.")

 

 

oque esse script irá fazer, ele te permite dar points para o jogador, te permite retirar os points do jogador, te permite olhar quantos pontos o jogador possui.

além de coisas banais como, ao adicionar points no jogador, irá aparecer no player {+quantida adicionada} 

isso também irá criar um arquivo no sua pastar do executavel do seu servidor, dizendo quem pegou e quanto tirou de lá!.

 

exemplo:

Spoiler

Dia: 01/03/21 hora:17:40:02 nome do jogador: Fellipe, valor retirado: 1 points
Dia: 01/03/21 hora:17:42:06 nome do jogador: Fellipe, valor retirado: 10 points
Dia: 02/03/21 hora:10:24:02 nome do jogador: Fellipe, valor retirado: 12 points

 

como usar?

/addpoints nomedojogardor, quantia de points
/removepoints nomedojogador, quantia a ser retirada
/obterpoints nomedojogador

 

@Nother

este script foi criado para um servidor de um amigo, então está 100%

creditos totalmente meu!

espero o seu feedback.

Edited by Sun (see edit history)

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

1 hora atrás, Sun disse:

Em talkactions/scripts crie uma arquivo chamado addpoints.lua e cole \/

function onSay(cid, words, param)
	local t = string.explode(param, ",")
	
	if(not t[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
		return true
	end

	local tid = getPlayerByNameWildcard(t[1])
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.")
		return true
	end
	
	if not t[2] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sem valor adicional.")
	else
		setPlayerStorageValue(tid, 15555, getPlayerStorageValue(cid, 15555) + t[2])
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou " .. t[2] .. " points " .. "para " .. t[1].. ".")
		doPlayerSendTextMessage(tid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu " .. t[2] .. " points.")
		doSendAnimatedText(getPlayerPosition(tid), "+" .. t[2] .. " points.", COLOR_DARKYELLOW)
	end

	return true
end

-- /teste yeths, valor

 


em talkactions/scripts ainda, crie um arquivo chamado removepoints.lua e cole \/

function onSay(cid, words, param)
	local t = string.explode(param, ",")
	
	if(not t[2]) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
		return true
	end

	local tid = getPlayerByNameWildcard(t[1])
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.")
		return true
	end
	

	if not t[2] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sem valor adicional.")
	else
	
		if (getPlayerStorageValue(tid, 15555) - t[2]) < 0 then
			setPlayerStorageValue(tid, 15555, 0)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você removeu todos os points do jogador " .. t[1].. ".")
			return true
		end
		
		setPlayerStorageValue(tid, 15555, getPlayerStorageValue(tid, 15555) - t[2])
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você removeu " .. t[2] .. " points do jogador " .. t[1].. ".")
		
	end

	return true
end

-- /teste yeths, valor

em talkactions/scripts ainda crie um arquivo chamado getpoints.lua e cole \/

function onSay(cid, words, param)

	local tid = getPlayerByNameWildcard(param)
	if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " not found.")
		return true
	end
	
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este jogador possui " .. getPlayerStorageValue(tid, 15555) .. " points.")
		

	return true
end

-- /teste yeths, valor

 

 

agora em talkactions.xml coloque essas tags


	<!-- points -->
	<talkaction words="/addpoints" event="script" value="addpoints.lua"/>
	<talkaction words="/removepoints" event="script" value="removepoints.lua"/>
	<talkaction words="/obterpoints" event="script" value="getpoints.lua"/>

 


em actions/scripts crie um arquivo chamado bau_points.lua

info_table = {
	id_points = 2260
}
function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, 15555) >= 1 then

	data = os.date("%d/%m/%y", os.time())
	timer = os.date("%H:%M:%S", os.time())
	local test = io.open("points.txt", "a+")
	local read = ""
	if test then
		read = test:read("*all")
		test:close()
	end
	read = read.."Dia: " .. data .. " hora:" .. timer .. " nome do jogador: "..getCreatureName(cid).. ", valor retirado: " ..getPlayerStorageValue(cid, 15555).." points.\n"
	local reopen = io.open("points.txt", "w")
	reopen:write(read)
	reopen:close()
	
 	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu +" .. getPlayerStorageValue(cid, 15555) .. " points.")
	doPlayerAddItem(cid, info_table.id_points, getPlayerStorageValue(cid, 15555))
	setPlayerStorageValue(cid, 15555, 0)

else
	return doPlayerSendCancel(cid, "Você não possui points.")
  end
end
	

 

agora em actions.xml coloque essas tags


<!-- points -->
	<action actionid="ACTIONSID" event="script" value="bau_points.lua"/>

 

ultimo passo, vai em creaturescript/scripts e procure por login.lua

 


	if getPlayerStorageValue(cid, 15555) == -1 then
	   setPlayerStorageValue(cid, 15555, 0)
	end

	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce possui " .. getPlayerStorageValue(cid, 15555) .. " points.")

 

 

oque esse script irá fazer, ele te permite dar points para o jogador, te permite retirar os points do jogador, te permite olhar quantos pontos o jogador possui.

além de coisas banais como, ao adicionar points no jogador, irá aparecer no player {+quantida adicionada} 

isso também irá criar um arquivo no sua pastar do executavel do seu servidor, dizendo quem pegou e quanto tirou de lá!.

 

exemplo:

  Ocultar conteúdo

Dia: 01/03/21 hora:17:40:02 nome do jogador: Fellipe, valor retirado: 1 points
Dia: 01/03/21 hora:17:42:06 nome do jogador: Fellipe, valor retirado: 10 points
Dia: 02/03/21 hora:10:24:02 nome do jogador: Fellipe, valor retirado: 12 points

 

como usar?


/addpoints nomedojogardor, quantia de points
/removepoints nomedojogador, quantia a ser retirada
/obterpoints nomedojogador

 

@Nother

este script foi criado para um servidor de um amigo, então está 100%

creditos totalmente meu!

espero o seu feedback.

Fiz as adições, mas tive um problema, mostra que o player recebeu os points mas quando tento retirar no bau ou falar getpoints fala que ele está zerado. 
E no meu caso os points não seriam dessa forma. Eles são uma moeda no jogo que pode ser comercializada.
E o player só pegaria essas moedas quando fosse no bau entende?

Link to post
Share on other sites

2 minutos atrás, Nother disse:

Fiz as adições, mas tive um problema, mostra que o player recebeu os points mas quando tento retirar no bau ou falar getpoints fala que ele está zerado. 
E no meu caso os points não seriam dessa forma. Eles são uma moeda no jogo que pode ser comercializada.
E o player só pegaria essas moedas quando fosse no bau entende?

dessa forma é pelo báu, você provavelmente configurou errado, ou esqueceu algo, pq aqui funciona perfeitamente!

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

2 minutos atrás, Sun disse:

dessa forma é pelo báu, você provavelmente configurou errado, ou esqueceu algo, pq aqui funciona perfeitamente!

Mas em que parte eu coloco o id das moedas?

Link to post
Share on other sites

1 minuto atrás, Nother disse:

Mas em que parte eu coloco o id das moedas?

 em actions/script/bau_points

 

info_table = {
	id_points = 2260
}

e lembrando, você só pode alterar isso, qualquer outra alteração no script não irá fazer funcionar ele

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

9 minutos atrás, Sun disse:

 em actions/script/bau_points

 


info_table = {
	id_points = 2260
}

e lembrando, você só pode alterar isso, qualquer outra alteração no script não irá fazer funcionar ele

Entendo, refiz todo o processo parte por parte mas ainda não consegui, sempre que vou no baú retirar os points fala que eu não tenho points

Link to post
Share on other sites

10 minutos atrás, Nother disse:

Entendo, refiz todo o processo parte por parte mas ainda não consegui, sempre que vou no baú retirar os points fala que eu não tenho points

pronto.thumb.gif.7c6562f83cf1cec33695c8a20156bb49.gif

olha ai funcionando perfeitamente!

 

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

12 minutos atrás, Sun disse:

pronto.thumb.gif.7c6562f83cf1cec33695c8a20156bb49.gif

olha ai funcionando perfeitamente!

 

Tem como alterar esse script para entregar os pontos direto para a mão do player mesmo que ele esteja offline? Talvez assim resolva

Link to post
Share on other sites

daria

Edited by Sun (see edit history)

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

13 horas atrás, Nother disse:

Tem como alterar esse script para entregar os pontos direto para a mão do player mesmo que ele esteja offline? Talvez assim resolva

function onSay(cid, words, param, channel)

	local t = string.explode(param, ",")
	local id = getPlayerGUIDByName(t[1])
	local tid = getPlayerByNameWildcard(t[1])
	
	if not t[1] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found!.")
		return true
	end
	
	if t[1] ~= id then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not exist.")
		return true
	end
	
	if not t[2] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "unspecified amount.")
		return true
	end

	  if tid then
		  setPlayerStorageValue(tid, 15555, getPlayerStorageValue(cid, 15555) + t[2])
		  doSendAnimatedText(getPlayerPosition(tid), "+" .. t[2] .. " points.", COLOR_DARKYELLOW)
	  else
		  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este jogador está offline, mas recebeu os " .. t[2] .. " points.")
		  db.executeQuery("INSERT INTO `player_storage`(player_id, key, value) VALUES(" .. id .. ", " .. 15555 .. ", " .. t[2] .. ");")
		end
	return true
end

 

troque seu addpoints por este acima, ele irá adicionar points mesmo se o jogador estiver Off

                                                                                                                  Have no idea!

                                                                                                  freelance? go to my discord:  sun#8860

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Jeff Delay
      Comecei a usar TFS 1.3 recentemente porem não entendo quase nada praticamente, quero por nessa magia a posição do efeito e o tempo que ela vai sair no target
       
      local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, 0) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) -- combat:setParameter(COMBAT_PARAM_USECHARGES, true) function onGetFormulaValues(player, skill, attack, factor)     local min = (player:getLevel() / 5) + (skill * attack * 0.02) + 4     local max = (player:getLevel() / 5) + (skill * attack * 0.04) + 9     return -min, -max end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(creature, variant) local parameters = {creature = creature, variant = variant} local target = Variant.getNumber(variant) addEvent(effect, 200, target, {1,0}, 45)     return combat:execute(creature, variant) end onde em 
      200 = tempo para sair o efeito
      {1,0} = posição do efeito
      45 = efeito
      nela gostaria também de tempo para sair o danos.
    • By pedrobta
      .Qual servidor ou website você utiliza como base? 
      TFS 1.4
       
      Qual o motivo deste tópico? 
      Gostaria de solicitar a ajuda de vocês em relação a uma dúvida. Gostaria de realçar algumas cores dentro da GAMESTORE, no caso desse exemplo é o laranja.
      Estou enviando uma imagem para dúvidas.
       
      Imagem como eu gostaria de fazer.
       
      Você tem o código disponível? Segue meu GAMESTORE.LUA
       
    • By miguelprojac
      .Qual servidor ou website você utiliza como base? 
      https://github.com/opentibiabr/OTServBR-Global
       
      Bom a situação é a seguinte: quando o player está equipado com uma arma de dano físico que foi imbuida com um dano elemental, a magia de cura que o mesmo usa é diminuida conforme a porcentagem do imbue elemental.
       
      Ex: Arma imbuida nível 2 dano de fogo (25% do dano é convertido para fire)  >> Magia  cura 25% menos;
           Arma imbuida nível 3 dano de gelo (50% do dano é convertido para ice)  >> Magia  cura 50% menos;
       
      Alguem já viu algum problema parecido?  Utilizo o otservbr 12.6 TFS 1.3
          
       
    • By thloko2
      Bom dia/tarde/noite galera !
       
      Bom, gostaria de saber se consigo criar um novo npc que use os diamonds do server para comercializar os itens ao invés do dinheiro normal.
      Mas que ele abra o trade normalmente para visualizar os itens. (O module Shop)
       
      Abraço e agradeço desde já !
       
       
       
       
    • By miguelprojac
      Estou tentando adaptar o script de subir texto animados do chão pra versa TSF 1.3 - revscript.
      mas estou tendo um problema em oque colocar nessa parte do script:
      local positions = { { x = 32365, y = 32236, z = 7 }, } local textoEvent = GlobalEvent("textoEvent") function textoEvent.onThink(interval) for i = 1, #positions do Position(positions[i]):doSendAnimatedText ...????? --------- ESSA LINHA ******* end return true end textoEvent:interval(50) textoEvent:register()    
      Não sei se estou no caminho certo, então se alguem que manja ai puder me dar um help, agradeço!
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo