Ir para conteúdo
  • 0

[Creaturescripts] Recompensa Por Level


lucas502

Pergunta

Ae galera beleza? preciso de uma ajudinha basica aki pra colocar recompensa quando o player atingir certo level

 

mas tem um porém, não quero q ele ganhe itens, quero que a recompensa seja premium points (premium points do gesior) para que possa gastar os points no site

 

tenho um exemplo aki, mas é de item e character, como faço para colocar pra ganhar premium point na account:

function onAdvance(cid, skill, oldlevel, newlevel)

	    if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
					    doPlayerAddItem(cid, 2160, 5)
					    setPlayerStorageValue(cid, 99963, 1)
					    doPlayerSendTextMessage(cid, 22, "You have received 5 crystal coins because you reached level 45")
					    end
	    return TRUE
end

 

Aguardo, Vlw!

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Como funciona esse sistema do seu server, de premium point?

 

Se souber mexer em algo, basta substituir o que tem entre o "then" e o primeiro "end" por algum código que adicione premium points (que você saiba que funcione).

Link para o comentário
Compartilhar em outros sites

  • 0

não é por storage não. É uma coluna (campo) que fica na db do mysql.

 

na table Accounts, la onde mostra "id, premdays" e tal. Tem uma chamada: Premium_Points

 

acredito que é soh colocar pra ele ganhar um X Numero nesse campo.

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei meche com databases mais posso tentar, envie uma ss ou escreva

o que tem dentro da tabela premium_points

 

 

 

function onAdvance(cid, skill, oldlevel, newlevel)

 

local quantia = 10

 

if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then

db.executeQuery("INSERT INTO `accounts` (`premium_points`) VALUES ('".. quantia.."');")

setPlayerStorageValue(cid, 99963, 1)

doPlayerSendTextMessage(cid, 22, "You have received 5 crystal coins because you reached level 45")

end

return TRUE

end

 

 

 

 

Testa ai, não sei se vai funfa

Editado por Vilden
Link para o comentário
Compartilhar em outros sites

  • 0

não funcionou nao vilden, a proposito...

 

vc colocou db.executequery, isso não colocaria os points para todas as accounts do server?

 

e outra duvida tbm: percebi que ali em ('".. quantia.."') , falta um espaço entre os ".." e "quantia" né? ou n tem nada a ver? kkk

resumindo, não funcionou não..

 

aah, outra coisa, isso afetaria os points que o player ja tem? por exemplo, eu quero q ele ganhe "MAIS" 10 pontos ao atingir 350. E não "setar" 10 points, entende? tipo, eu ja tenho 20 points, se eu chegar no lvl 350 a query vai "setar" 10 points, ou vai "adicionar" + 10 points, totalizando 30?

 

eu tenho uma query aki, não sei se serviria para te ajudar:

UPDATE `accounts` SET `premium_points` = `premium_points` + '".$points."'

 

aguardo, vlw ;)

Editado por Lucas502
Link para o comentário
Compartilhar em outros sites

  • 0

function onAdvance(cid, skill, oldlevel, newlevel)

 

local quantia = 10

 

if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then

db.executeQuery("INSERT INTO `accounts` (`premium_points`) VALUES ('premium_points' + '".. quantia .."');")

setPlayerStorageValue(cid, 99963, 1)

doPlayerSendTextMessage(cid, 22, "You have received 5 crystal coins because you reached level 45")

end

return TRUE

end

 

 

Não sei mecher com database rs

Link para o comentário
Compartilhar em outros sites

  • 0

Teste:

 

function onAdvance(cid, skill, oldlevel, newlevel)
local points = 50

   if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
   db.executeQuery("UPDATE `accounts` SET `premium_points` = "..points.." WHERE `name` ='"..getPlayerAccount(cid).."'")
   setPlayerStorageValue(cid, 99963, 1)
   doPlayerSendTextMessage(cid, 22, "editar texto")
   end
   return TRUE
end

Editado por dragonfight
Link para o comentário
Compartilhar em outros sites

  • 0

ok dragonfight, não testei ainda mas acho q ira funcionar, só q tem um porém..

 

 

como eu falei acima, parece q este seu script q vc postou, irá "setar" os 10 pontos, e não "somar" +10 aos points que a account ja tem, entendeu?

 

Eu quero que a query "adicione, some" +10 points, e não "setar" os 10 points, para que não seja afetado os points que a account ja tem...

Link para o comentário
Compartilhar em outros sites

  • 0

Vá na pasta libs depois em 050-function e adicione as seguintes funções:

 

function getAccountPoints(cid)
local Info = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
	if Info:getID() ~= LUA_ERROR then
	local Points= Info:getDataInt("premium_points")
	Info:free()
	return Points
end
 return LUA_ERROR
end

 

function doAddPoints(cid, points)
db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

 

Depois o código fica assim:

 

function onAdvance(cid, skill, oldlevel, newlevel)
local points = 50

	   if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
	   doAddPoints(cid, points)
	   setPlayerStorageValue(cid, 99963, 1)
	   doPlayerSendTextMessage(cid, 22, "editar texto")
	   end
	   return TRUE
end

 

Crédito pelas funções ao Lord Side de um outro fórum na Net

 

Tem também a função de remover os pontos ingame, o que pode ser útil:

 

function doRemovePoints(cid, points)
 local Info = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
  if Info:getID() ~= LUA_ERROR then
  db.executeQuery("UPDATE accounts SET premium_points = - " .. points .. " WHERE id=" .. getPlayerAccountId(cid) .. ";")
  Info:free()
  return 1
  end
end

Editado por dragonfight
Link para o comentário
Compartilhar em outros sites

  • 0

Maws errei, tenta aew:

 

function onAdvance(cid, skill, oldlevel, newlevel)
local points = 50

			   if(getPlayerStorageValue(cid, 99963) ~= 1 and skill == SKILL__LEVEL and newlevel >= 45) then
			   doAddPoints(cid, points)
			   setPlayerStorageValue(cid, 99963, 1)
			   doPlayerSendTextMessage(cid, 22, "editar texto")
			   end
			   return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

resolvido, vlw ae otimo script, porém, nem precisei adicionar os functions na lib não, usei o db.executequery que postou antes ;)

 

 

vlw Vilden e DragonFight

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...