Ir para conteúdo

!spells E !rank


MaxxJuba

Posts Recomendados

Tipo do script: Xml

Protocolo (versão do Tibia): 8.50

Servidor utilizado: thyrania

Nível de experiência: médio

Adicionais/Informações: -------

 

Gostaria de pedir o script que mostra para os players qual as magias que eles podem usar quando eles digitam !spells

 

E o script que mostra o rank do server (top lvl, sword, mag lvl, shield, etc)

 

e queria saber também qual é o script que faz com que apareça uma tela com as noticias no seu ot quando um player entra no server.

Ex: Na hr que o player entra aparece um quadro assim -->Para saber como comprar premium account entre no nosso site: www.xxxxxx.com

para saber suas magias que voce pode usar digite !spells

para saber quem esta online digite !online

etc.

 

Agradeço pela atenção.

Link para o comentário
Compartilhar em outros sites

!spells

 

Adicione isso na pasta data/talkactions no arquivo talkactions.xml

<talkaction words="!spells" script="spellsinfo.lua"/>

 

Entre na pasta scripts e crie um novo arquivo .lua, renomeie para spellsinfo e coloqe isso dentro:

function onSay(cid, words, param)

local count = getPlayerInstantSpellCount(cid)
local text = ""
local t = {}
for i = 0, count - 1 do
local spell = getPlayerInstantSpellInfo(cid, i)
if spell.level ~= 0 then
if spell.manapercent > 0 then
spell.mana = spell.manapercent .. "%"
end
table.insert(t, spell)
end
end
table.sort(t, function(a, b) return a.level < b.level end)
local prevLevel = -1
for i, spell in ipairs(t) do
local line = ""
if prevLevel ~= spell.level then
if i ~= 1 then
line = "\n"
end
line = line .. "Spells for Level " .. spell.level .. "\n"
prevLevel = spell.level
end
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
end
doShowTextDialog(cid,2175,text)
return TRUE
end

!rank

 

Adicione isso na pasta data/talkactions no arquivo talkactions.xml

<talkaction words="!rank" event="script" value="ranks.lua"/>

 

Entre na pasta scripts e crie um novo arquivo .lua, renomeie para ranks e coloqe isso dentro:

function getPlayerNameByGUID2(n)
local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";")
if c:getID() == -1  then
   return "SQL_ERROR["..n.."]"
end
   return c:getDataString("name")
end

function onSay(cid, words, param)
        --- você pode usar o script só nao tire os creditos
        --- contato: mock_#####@hotmail.com
        local max = 10

        local letters_to_next = 20

        --
        local skills = {
         ['fist'] = 0,
         ['club'] = 1,
         ['sword'] = 2,
         ['axe'] = 3,
         ['distance'] = 4,
         ['shielding'] = 5,
         ['fishing'] = 6,
         -- outros nomes
         ['dist'] = 4,
         ['shield'] = 5,
         ['fish'] = 6,
        }
        local name_now
        local name = "Rank\n"
        local rkn = 0
        local no_break = 0
        param = string.lower(param)
        dofile('config.lua')
        if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then
        name = name.."Name                  Level             Exp\n"
        local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";")
        repeat
        no_break  = no_break +1
        if v:getID() == -1  then
           break
        end
        rkn = rkn+1
        name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
        space = ""
        for i=1, letters_to_next-l do
          space = space.." "
        end
        name = name..rkn.."º "..name_now..space.."|"..v:getDataInt("level")  .."|           ".."|"..v:getDataInt("experience").."|".."\n"         
        if no_break >= 20 then
           break
        end
        until v:next() == false
        elseif param == "magic" or param == "ml" then
               name = name.."Name                  Level             MLp\n"
               local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";")
               repeat
                     if v:getID() == -1  then
                        break
                     end
                     rkn = rkn+1
                     name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
                     space = ""
                     for i=1, letters_to_next-l do
                         space = space.." "
                     end
                     name = name..rkn.."º "..name_now..space.."|"..v:getDataInt("level").."|  ".."           ".."|"..v:getDataInt("maglevel").."|".."\n"         
                     until v:next() == false
        elseif skills[param] ~= nil then
           name = name.."Name                  "..param.." fighting.\n"
           local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;")
           local kk = 0

           repeat
                 if kk == max or v:getID() == -1 then
                    break
                 end
                 kk = kk+1
                 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("play  er_id")))
                 space = ""
                 for i=1, letters_to_next-l do
                      space = space.." "
                 end
                 if name_now == nil then
                    name_now = 'sql error['..v:getDataInt("player_id")..']'
                 end
                 name = name..kk.."º "..name_now..space.."|"..v:getDataInt("value").."|  \n"
           until v:next() == false
        end
        if name ~= "Ranks By Mock\n" then 
        doPlayerPopupFYI(cid, name)
        end
        --doPlayerSendTextMessage(cid, 25, name)


        return TRUE
end


 

Sobre a noticia eu nao entendi direito, teria como explicar melhor ?

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

Sim.

eu explico.

mas me desculpe por que não dará pra mim explicar agr.

tenho que ir pra escola, estou atrasado.

Mas amanhã eu volto nesse mesmo horario e falo com voce.

espero que voce me ajude.

thanks

Link para o comentário
Compartilhar em outros sites

Script 1 - !spells

data/talkactions/talkactions.xml

<talkaction words="!spells" script="spells.lua"/>

 

data/talkactions/scripts/spells.lua

function onSay(cid, words, param)

 

local count = getPlayerInstantSpellCount(cid)

local text = ""

local t = {}

for i = 0, count - 1 do

local spell = getPlayerInstantSpellInfo(cid, i)

if spell.level ~= 0 then

if spell.manapercent > 0 then

spell.mana = spell.manapercent .. "%"

end

table.insert(t, spell)

end

end

table.sort(t, function(a, b) return a.level < b.level end)

local prevLevel = -1

for i, spell in ipairs(t) do

local line = ""

if prevLevel ~= spell.level then

if i ~= 1 then

line = "\n"

end

line = line .. "Spells for Level " .. spell.level .. "\n"

prevLevel = spell.level

end

text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"

end

doShowTextDialog(cid,2175,text)

return TRUE

end

 

 

 

 

Script 2 - !rank, !rank sword...

data\talkactions\scripts.xml

<talkaction words="!rank" script="ranking.lua" />

 

data\talkactions\scripts\ranking.lua"

local ranks = {

 

['fist'] = {0},

 

['club'] = {1},

['sword'] = {2},

['axe'] = {3},

['distance'] = {4},

['shield'] = {5},

['fish'] = {6},

['magic'] = {7},

['level'] = {8},

 

}

 

 

function onSay(cid, words, param)

 

local msg = string.lower(param)

if ranks[msg] ~= nil then

str = getHighscoreString((ranks[msg][1]))

else

str = getHighscoreString((8))

end

doShowTextDialog(cid,6500, str)

return TRUE

 

end

 

 

 

 

 

Script 3 - !notice

data\talkactions\scripts.xml

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

 

data\talkactions\scripts\notice

--- Script by esK~---

--- Notice System 0.1 Beta ---

function onSay(cid, words, param, channel)

file = io.open('data\noticias.txt','r')

notice = file:read(-1)

doShowTextDialog(cid,7528,notice)

file:close()

end

data\noticias.txt

Digite aqui as noticias do seu server.

 

 

 

 

Créditos:

Script 1 - Gladiador Negro

Script 2 - Mock

Script 3 - esK~

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

Vou te dar uma ajuda pra quando a pessoa entrar ela recebe a mensagem:

 

Va em creaturescript, e abra o login.lua, bote isto no inicio do script

 

local startmessage = [[Para comprar premmium account, basta fazer blablabla]]

 

E antes do ultimo "return TRUE" adicione isso

 

doPlayerPopupFYI(cid, startmessage)

 

Vou te dar um exemplo, abra o spoiler:

 

local startmessage = [[Para comprar premmium account, basta fazer blablabla]]

 

 

function onLogin(cid)

 

registerCreatureEvent(cid, "PlayerKill")

if (InitArenaScript ~= 0) then

InitArenaScript = 1

-- make arena rooms free

for i = 42300, 42309 do

setGlobalStorageValue(i, 0)

setGlobalStorageValue(i+100, 0)

end

end

-- if he did not make full arena 1 he must start from zero

if getPlayerStorageValue(cid, 42309) < 1 then

for i = 42300, 42309 do

setPlayerStorageValue(cid, i, 0)

end

end

-- if he did not make full arena 2 he must start from zero

if getPlayerStorageValue(cid, 42319) < 1 then

for i = 42310, 42319 do

setPlayerStorageValue(cid, i, 0)

end

end

-- if he did not make full arena 3 he must start from zero

if getPlayerStorageValue(cid, 42329) < 1 then

for i = 42320, 42329 do

setPlayerStorageValue(cid, i, 0)

end

end

if getPlayerStorageValue(cid, 42355) == -1 then

setPlayerStorageValue(cid, 42355, 0) -- did not arena level

end

setPlayerStorageValue(cid, 42350, 0) -- time to kick 0

setPlayerStorageValue(cid, 42352, 0) -- is not in arena

 

registerCreatureEvent(cid, "PlayerDeath")

registerCreatureEvent(cid, "PromotedLogin")

--registerCreatureEvent(cid, "MEDALS") This is Nahruto's Metal System for killing someone, Dont add this unless you use it.--

registerCreatureEvent(cid, "KilledMonstersCounter")

registerCreatureEvent(cid, "playeradvance")

doPlayerPopupFYI(cid, startmessage)

return TRUE

 

end

 

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

  • 1 year later...
×
×
  • Criar Novo...