Ir para conteúdo
  • 0

Talkactions Transferencia de Points entre Players


Lucasyeah

Pergunta

TFS, 860.

Olá pessoal, venho aki pedir um script bem legal, que será bastante útil para grande maioria (eu acho).

O script é o seguinte, uma talkactions que transfere premium points de um player para outro.

Exemplo:

 

Quem irá receber

\/

!transfere Druidzinho, 3 <~ Quantidade de pontos que irá transferir

 

Os premium points irão para a account do player Druidzinho...

Se o player que fizer o comando não tiver a quantidade necessária de premium points para transferir o script manda msg:

Você não tem isso para transferir.

 

Meu sistema de premium points é normal, uso Mysql com a tabela de premium points! yes.gif

 

Quem puder ajudar ae, agradeço e Curto button_ok.png

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

 

 

function onSay(cid, words, param)
	local param = string.explode(param, ',')
	local days = param[2]
	local toPlayer = param[1]
	local player_prem_days = getPlayerPremiumDays(cid)
	if not days or not toPlayer then
		doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.")
	elseif not tonumber(days) then
		doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.")
	elseif player_prem_days < tonumber(days) then
		doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.")
	else
		toPlayer = getCreatureByName(toPlayer)
		if not isPlayer(toPlayer) then
			doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.")
		else
			doPlayerRemovePremiumDays(cid, tonumber(days))
			doPlayerAddPremiumDays(toPlayer, tonumber(days))
			doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. days .." premium days.")
			doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..days.." premium days for your account.")
		end
	end
	return true
end

 

 

<talkaction words="!transfere" event="script" value="transferirprem.lua"/>
Link para o comentário
Compartilhar em outros sites

  • 0

Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar.

A função seria essa: getAccountPoints(cid)

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

  • 0

Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar.

 

Creio que isso so seja possivel no site mano!

Link para o comentário
Compartilhar em outros sites

  • 0

Sim Kluimaster, mas preciso do talkactions, eu consegui montar um script 90% funcional, porém ele transfere valores negativos, exemplo: !transfere Druidzinho, -3. Dai o Druidzinho fica com -3 points e quem usou o comando ganha +3 pontos de graça. Creio que alguém conseguirá me ajudar.

 

 

Edit --------------

Consegui adaptar sua Script Omega, porém ta com o mesmo problema da minha, o player pode usar o comando com valores negativos

function onSay(cid, words, param)
	local param = string.explode(param, ',')
	local pts = param[2]
	local toPlayer = param[1]
	local player_prem_pts = getAccountPoints(cid)
	if not pts or not toPlayer then
		doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.")
	elseif not tonumber(pts) then
		doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.")
	elseif player_prem_pts < tonumber(pts) then
		doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.")
	else
		toPlayer = getCreatureByName(toPlayer)
		if not isPlayer(toPlayer) then
			doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.")
		else
			doAccountRemovePoints(cid, tonumber(pts))
			doAccountAddPoints(toPlayer, tonumber(pts))
			doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. pts .." premium days.")
			doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..pts.." premium days for your account.")
		end
	end
	return true
end

Exemplo:

 

ADM -> !transfere Druidzinha, -6

17:18 You have sucessfully transfered -6 premium points.

 

Druidzinha -> 17:18 [ADM] has transfered -6 premium points for your account.

17:19 Sua conta possui -6 points. Saiba mais sobre points no site......

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

  • 0

Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar.

A função seria essa: getAccountPoints(cid)

 

Abra seu banco de dados e me diga em que tabela essa coluna fica. Por exemplo, a coluna premium time fica na tabela accounts. Me diga onde essa coluna premium points fica.

E o nome exato das duas (tabela e coluna)

Link para o comentário
Compartilhar em outros sites

  • 0

Hauhauhaua, então tava dando pra roubar points dos outros?

 

 

function onSay(cid, words, param)
	local param = string.explode(param, ',')
	local pts = param[2]
	local toPlayer = param[1]
	local player_prem_pts = getAccountPoints(cid)
	if not pts or not toPlayer then
		doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.")
	elseif not tonumber(pts) then
		doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.")
	elseif player_prem_pts < tonumber(pts) then
		doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.")
	elseif tonumber(pts) <= 0 then
		doPlayerSendCancel(cid, "You have to specify a number of days higher than 0 to transfer.")
	else
		toPlayer = getCreatureByName(toPlayer)
		if not isPlayer(toPlayer) then
			doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.")
		else
			doAccountRemovePoints(cid, tonumber(pts))
			doAccountAddPoints(toPlayer, tonumber(pts))
			doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. pts .." premium days.")
			doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..pts.." premium days for your account.")
		end
	end
	return true
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Omega, queria te perguntar se tem como adicionar +1 função nesse script? Se possível gostaria que o script gerasse uma Log.txt de todos os players que utilizaram o comando !transfere. e a quantidade de pontos transferida... se tivesse como mostrar o dia e a hora que isso ocorreu. Tem como fazer isso ou é impossível?

Link para o comentário
Compartilhar em outros sites

  • 0

Adicione em 050-function

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

function doPlayerAddVipPoints(cid, points)
    local dif = getPlayerVipPoints(cid) + points
    if dif >= 0 then
        db.query("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
        return TRUE
    end
    return FALSE
end

function doPlayerRemoveVipPoints(cid, points)
    local dif = getPlayerVipPoints(cid) - points
    if dif >= 0 then
        db.query("UPDATE `accounts` SET `premium_points` = `premium_points` - " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
        return TRUE
    end
    return FALSE
end

Adione em Talkactions/scripts

 

transfer.lua

function onSay(cid, words, param, channel) 
 
local t = param:explode(",")
local player = getPlayerByName(t[1])
local m = tonumber(t[2])
  
    if param == "" then 
        return doPlayerSendCancel(cid, "Command requires param.") 
    elseif not isPlayer(player) then
        return doPlayerSendCancel(cid, "Sorry, not possible.")
    end
	
if(not m) then
        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Valor nao Digitado.\n Ex: /transfer "..getPlayerName(cid)..", 20")
        return TRUE
end

    if getPlayerVipPoints(cid) < m then
        return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce nao tem pontos suficiente!!")
    end 
    
    doPlayerRemoveVipPoints(cid, m)   
    doPlayerAddVipPoints(player, m)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Voce Transferiu "..m.." pontos para "..getPlayerName(player)..".")  
    f = io.open("data/logs/Pontos.txt", "a+")
    f:write("Player: "..getPlayerName(cid).." transferiu "..m.." pontos para "..getPlayerName(player).."\n\n----------------------------------------------------------\n")
    f:close()   
    return true 
end

XML :

<talkaction words="/transfer" event="script" value="transfer.lua"/>

Eu Utilizo isso no meu Servidor Funciona 100% e sem nenhum Bug !

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...