Se tivesse explicado isso desde o começo, teria sido mais fácil rsrs. Pois, não precisaria de todos esses scripts. Do jeito que você quer é mais fácil do que eu pensei.
Eu pensei em falar para você excluir os scripts que tinha feito, mas deixa caso queira usar em outra coisa, como loteria, quests ou recompensa por exemplo.
Vá em Data/Talkactions/Scripts e crie o arquivo chamado add_points.lua e adicione o código:
local item_id = 2160 -- ID DOS POINTS
local effect = false -- SE QUISER COM EFEITO AO RECEBER O ITEM MUDE PARA TRUE
local effect_id = 27 -- EFEITO DO ID AO RECEBER O ITEM
local level_acess = 4 -- ACESSO DO PLAYER (PLAYER - TUTOR - GM - CM - ADM), DEIXE 4 OU MAIS PARA STAFF E 6 PARA ADM
function onSay(cid, words, param)
local command = string.explode(param, ",")
local name = string.lower(command[1])
-- SCRIPT SOMENTE PARA STAFF --
if getPlayerAccess(cid) < level_acess then
return true
end
if param == nil or param == "" then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar o nome do player para receber os pontos.")
elseif string.len(param) < 3 then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar um nome válido do player para receber os pontos.")
elseif tonumber(command[2]) == nil or tonumber(command[2]) <= 0 then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa informar uma quantia válida de pontos.")
else
if #getPlayersOnline() > 1 then
for index, player in pairs(getPlayersOnline()) do
local player_name = string.lower(getCreatureName(player))
if name == player_name then
local points = tonumber(command[2])
local message = ""
if points > 1 then
message = "Obrigado por ter donatado! Como recompensa, você recebeu " .. points .. " points." -- MENSAGEM QUE O PLAYER VAI RECEBER NO CHAT
elseif points == 1 then
message = "Obrigado por ter donatado! Como recompensa, você recebeu " .. points .. " point." -- MENSAGEM QUE O PLAYER VAI RECEBER NO CHAT
end
doPlayerAddItem(player, item_id, points)
doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, message)
-- VERIFICA SE VAI RECEBER EFEITO --
if effect then
doSendMagicEffect(getThingPos(player), effect_id)
end
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O player " .. command[1] .. " recebeu a recompensa.")
end
if index == #getPlayersOnline() and name ~= player_name then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player " .. command[1] .. " não está online.")
end
end
else
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não há jogadores online!")
end
end
end
Agora abra o talkactions.xml e adicione a tag:
<talkaction words="!addpoints" acess="6" event="script" value="add_points.lua"/>
Continua via comando (talkaction), e para utilizar, funciona assim, você precisa digitar o comando !addpoints nome do player, quantidade de points:
!addpoints Administrador, 50
E todas as variáveis estão comentadas, e segue o mesmo padrão do script antigo, porém a mensagem do player está dentro do for, então se quiser mudar está lá. Só mudar o id do item na primeira variável e lembrando que coloquei restrição de acesso, ou seja, somente membros da staff pode usar, no caso deixei nível de acesso 4, então GM, CM e ADM conseguiram usar o comando, se quiser só ADM, mude para 6 a variável level_acess.
Eu testei aqui e está funcionando certinho, só não esqueça de comentar a tag xml da talkaction antiga se não for usar, pois esqueci de fazer verificação de acesso nela e qualquer player consegue usar. E fica seu critério excluir o script da box na pasta Actions também.