Ir para conteúdo
  • Cadastre-se

(Resolvido)Script addpoints tfs 0.4


Ir para solução Resolvido por Kenny Dxp,

Posts Recomendados

Boa tarde, eu passei meu servidor de narutibia para 8.60 com o tfs 0.4 e a talkaction /addpoints não está mais funcionando, alguém poderia me ajudar:

local function doPlayerAddDepotItems(pid, item, count)
    local result = db.getResult("SELECT sid FROM player_depotitems WHERE player_id = "..pid.." ORDER BY sid DESC LIMIT 1")
    if (result:getID() ~= -1) then
        local ls = tonumber(result:getDataInt("sid"))
        return db.executeQuery("INSERT INTO player_depotitems (player_id, sid, pid, itemtype, count, attributes) VALUES ("..pid..", "..(ls+1)..", 101, "..item..", "..count..", '')")
    end
end

local points = 9970 -- ID dos points
local present = 1990 -- ID do container que ira vir

function onSay(cid, words, param)
    local t = string.explode(param:lower(),",")
    local player = getPlayerByNameWildcard(t[1])
    if not t[1] then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Digite o nome do jogador.")
    elseif not player and not getPlayerGUIDByName(t[1]) then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Este nome nao existe.")
    elseif not player and getPlayerGUIDByName(t[1]) and tonumber(t[2]) and tonumber(t[2]) > 100 then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador esta offline, apenas 100 points por vez.")
    elseif not tonumber(t[2]) or tonumber(t[2]) < 1 or t[2] == "" then
        return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Digite a quantidade.")
    end
    local present = doCreateItemEx(present-1)
    doAddContainerItem(present, points, t[2])
    if player then
        doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), present, 1)
    else
        doPlayerAddDepotItems(getPlayerGUIDByName(t[1]), points, t[2])
    end
    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"voce adicionou "..t[2].." "..getItemNameById(points)..""..(tonumber(t[2]) > 1 and "s" or "").." ao jogador "..getPlayerNameByGUID(getPlayerGUIDByName(t[1])))
end

x1fCxnI.png

Link para o post
Compartilhar em outros sites

Kenny eu uso sqlite, tentei colocar o tfs 0.4 por mysql e não deu certo só consegui por sqlite, e parou de funcionar o /addpoints..

x1fCxnI.png

Link para o post
Compartilhar em outros sites
  • Solução

hn jaja te do uma resposta


tipo como voce mudo e deu serto so deu esse erro tente usar essa talkation que fonciona em sq

 

e assim

 

Quando o Player usa o [X] Item ele ganha tantos points

 

Em "data/lib" crie um arquivo chamado "048-ppoints.lua" e adicione esse script dentro :

 

function getAccountPoints(cid)

local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function doAccountAddPoints(cid, count)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

function doAccountRemovePoints(cid, count)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

 

Em "data/actions/actions.xml" adicione está tag :

 

<action itemid="5952" event="script" value="points.lua"/>

 

Em "data/actions/scripts" crie um arquivo lua chamado "points" e cole isso dentro :

local cfg = {
amount = 10
}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerLevel(cid) > 8 then
doAccountAddPoints(cid, cfg.amount)
doCreatureSay(cid, "Parabéns! Você recebeu 10 Premium Points! ", TALKTYPE_ORANGE_1)
doSendMagicEffect(getCreaturePosition(cid), 28)
doRemoveItem(item.uid,1)
else
doPlayerSendCancel(cid,"Você precisa de level 8 para usar este item.")
end
return TRUE
end

 Configurando •

 

 

Citar

 

<action itemid="5952" event="script" value="points.lua"/>

if getPlayerLevel(cid) > 8 then

amount = 10

ID do item que vai ser usado para ganhar os Premium Points.

Level que precisa para usar o item.

Dias que o player vai ganhar quando usar o item.


Se Não resolver ou  estiver erado me desculpe 

Link para o post
Compartilhar em outros sites

Removido. 

Editado por Snowsz (veja o histórico de edições)
                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites
  • 1 year later...

tentei fazer a script mas da esse erro 

data/lib/048-ppoints.lua:12: attempt to call field 'executequery

Citar

hn jaja te do uma resposta

 

tipo como voce mudo e deu serto so deu esse erro tente usar essa talkation que fonciona em sq

 

e assim

 

Quando o Player usa o [X] Item ele ganha tantos points

 

Em "data/lib" crie um arquivo chamado "048-ppoints.lua" e adicione esse script dentro :

 

function getAccountPoints(cid)

local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function doAccountAddPoints(cid, count)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid)+ count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

function doAccountRemovePoints(cid, count)
return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid)- count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

 

Em "data/actions/actions.xml" adicione está tag :

 

<action itemid="5952" event="script" value="points.lua"/>

 

Em "data/actions/scripts" crie um arquivo lua chamado "points" e cole isso dentro :

local cfg = {
amount = 10
}

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerLevel(cid) > 8 then
doAccountAddPoints(cid, cfg.amount)
doCreatureSay(cid, "Parabéns! Você recebeu 10 Premium Points! ", TALKTYPE_ORANGE_1)
doSendMagicEffect(getCreaturePosition(cid), 28)
doRemoveItem(item.uid,1)
else
doPlayerSendCancel(cid,"Você precisa de level 8 para usar este item.")
end
return TRUE
end

 

Link para o post
Compartilhar em outros sites

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo