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.
Bom. muitos tem duvidas no fato de como almentar o dano mudar os efeitos a area e tudo mais sobre as magias entao vou explica-las.
Crie Um Bloco de Notas Com O Nome DE "exemplo" Sem Aspas
Nesse Tutorial Usaremos o Seguinte Script, sendo uma magia de ataque em area que podera sempre ser usada como base.
-Damage Type-
Nesse Script temos como Damage o formato COMBAT_PHYSICALDAMAGE que pode ser trocado por qualquer um desses:
-Efeito-
Temos como efeito CONST_ME_FIREAREA que pode ser trocado por qualquer um desses:
-Formula-
A Formula desta magia é COMBAT_FORMULA_LEVELMAGIC, -2.0, 0, -1.0, 0 Ou Seja o Dano Dela ira variar do seu Level e de Seu Magic Level.(Aconselho sempre Usar FORMULA_LEVELMAGIC. e Alterar Somente no 2.0 e no 1.0 nunca mudar os que estao somente 0)Vamos usar como exemplo que -2.0, seria o level e -1.0 o magic level ou seja a magia ira Hitar muito mais quando o player upar 1 Level do que quando upar 1 Magic Level,Porem se fosse mudado para -0.8 e 1.0 Se o Player Almentasse 1 magic level iria hitar mais do que se upasse 1 Level.
PS:É aconselhavel sempre que mexer na formula testar a magia para verificar o Damage.
-Area-
Neste Caso a Area Vai Ser 8 Quadrados exatos em volta do player.
o Numero 2 Representa a posição do Player.
O numero 1 Representara onde a magia ira acertar
O Numero 0 Será somente espaço onde você pode colocar o Numero 1
-Spells.xml-
<instant group="attack" spellid="137" name="NOME DA MAGIA" words="OQUE O PLAYER DIGITARA PARA MANDAR A MAGIA" lvl="30" mana="45" selftarget="1" prem="1" cooldown="4000" groupcooldown="2000" needlearn="0" script="attack/exemplo.lua">
<vocation name="Sorcerer"/>
<vocation name="Master Sorcerer"/>
</instant>
Grat'Z DeadLock
Quem Está Navegando
0 membros estão online
Nenhum usuário registrado visualizando esta página.