[NEW] Own your Spawn

Roksas
Por Roksas
em Actions e Talkactions
  • 1
  • 2

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Own Your Spawn!

 

 

divisor.png

 

Como anda galerinha? Hoje tive uma ideia bem legal e vim trazer para vocês, é um sistema que inventei chamado Own your Spawn, mas como funciona?

 

/buyspawn Monster, Quantidade

 

Você paga uma certa quantia e com um comando você cria X monstros para você upar, mas não pode ter players por perto (Anti-PowersAbuse), tudo bem configurável, vamos instalar?

 

 

 

 

 

 

divisor.png

Vá em data/lib, copie algum arquivo desta mesma pasta e cole, renomeio-o para own_spawnlib.lua, abra-o com o bloco de notas e adicione dentro:

 

 

function getPlayersInArea(area)
local players = {}
for x = area.fromx,area.tox do
for y = area.fromy,area.toy do
for z = area.fromz,area.toz do
local m = getTopCreature({x=x, y=y, z=z}).uid
if m ~= 0 and isPlayer(m) then
table.insert(players, m)
end
end
end
end
return players
end

 

 

Muito bem, agora siga para a pasta data/talkactions/scripts, copie algum arquivo desta mesma pasta e cole, renomeie para own_spawn.lua e adicione dentro:

 

 

function onSay(cid, words, param)

local t = string.explode(param, ",")  
local pos = getCreaturePosition(cid)

local cfg = {
max_summon = 9,
price = 100000,
}	  

if #getPlayersInArea({fromx = pos.x+4, fromy = pos.y+4, fromz = pos.z, tox = pos.x-4, toy = pos.y-4, toz = pos.z}) > 1 then
doPlayerSendTextMessage(cid, 20, "Do this in a place where no other players.") return true end

if not t[1] or not t[2] or not tonumber(t[2]) then
doPlayerSendTextMessage(cid, 20, "The command does not recognize these parameters.") return true end

if tonumber(t[2]) > cfg.max_summon then
doPlayerSendTextMessage(cid, 20, "Maximum monsters in your spawn is "..cfg.max_summon..", rushed.") return true end

if not doPlayerRemoveMoney(cid, cfg.price) then
doPlayerSendTextMessage(cid, 20, "You do not have enough money to buy their own spawn!") return true end

for i = 1, t[2] do
doCreateMonster(t[1], {x = pos.x+3, y = pos.y+3, z = pos.z})
end

doPlayerSendTextMessage(cid, 20, "His spawn was summoned, good level up for you!")
return true
end

 

 

Na pasta data/talkactions, abra com um editor de texto o arquivo talkactions.xml e adicione essa tag:

 

<talkaction log="yes" words="!buyspawn;/buyspawn" event="script" value="own_spawn.lua"/>

 

Configuração

 

 

divisor.png

Nesta parte do código:

 

local cfg = {
max_summon = 9,
price = 100000,
}

 

Em "max_summon", você coloca a quantia máxima de monstros que podem dar spawn. E em "price" você coloca o preço para dar o spawn, no caso coloquei 100k :)

 

 

 

 

 

 

 

Utilização

 

 

divisor.png

24pf5ex.jpg


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Obrigado, quem me ajudou nas ideias foi o Mozark, e creio que será bem útil!

 

Seria legal se vendessem um item no OT, que só pode usar o comando com ele, depois é removido :)


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

AlexandreKG

Estudante de TI
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 30/10/11Posts: 1153Gênero: Masculino

Já vai pro meu projeto Roksas,hehehe.

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

Ta evoluindo demais cara, parabéns!

Gostei!

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

AlphaLove

Força de vontade :)
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 12/06/10Posts: 408Char no Tibia: Nakamura

Muito bom cara, curti demais :D

 

Rep +


Fan Bar:

nakamurafans.gif

"A guerra inflige morte, ferimentos e dor para ambos os lados.
A morte de alguém querido é difícil de se aceitar.
Nos convencemos de que não há como eles morrerem.
É apenas natural, particularmente, da nossa geração...
Nós não conhecemos a guerra.
Tentam encontrar significado na morte, mas há apenas dor.
Um ódio insuportável... Mortes sem sentido... Ódio eterno... E a dor que não cura.
É isso que a guerra é."


.

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Obrigado galerinha, façam bom uso!


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

xS0NYx

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 31/07/11Posts: 59

Mas olha, com esse comando o cara pode criar 50 demon e lurar pra onde tem player :s acho que isso causaria um grande problema.. também pessoas invocando no meio da cidade e tal..

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Cara, leia de novo por favor, o máximo para summonar é 9, e se tiver player perto, não sumona!


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Cara, seu script é interessante, mas pfv, melhora essa identação. Isso ai acaba com a beleza de todo um sistema e faz você parecer scripter que acabou de se iniciar na linguagem lua .-.

 

Dica, n precisava criar uma lib própria só pra esse sistema, era melhor colocar a função direto no script.

 

OBS: De onde você tira essas ideias? Tô precisando de algumas :D

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Se o monstro não existir vai dar erro.

 

Poderia ter usado isso.

 

if (#getSpectators({x = pos.x, y = pos.y, z = pos.z}, 9, 9)) then

 

Já há essa função nos otservs .;d.

jeoz.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

@SkyMagnum, obrigado por lembrar, mas essa função retorna se há spectators e não QUANTOS tem, estou certo?

 

@LuckOake, é a minha forma de identar rsrs, não conheço outras, futuramente irei procurar alguns tutos sobre :)

Obrigado pelas dicas, e essas ideias eu pergunto pra alguns amigos, eu tenho umas e eles outras, junto tudo e forma essas geringonças eahhueaheau

 

~~

 

Obrigado galera :D


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Ela retorna uma tabela só não sei com oque uheuheuhe, mas da pra checar com ela(eu acho).

 

Alias erro tosco.

 

if (#getSpectators({x = pos.x, y = pos.y, z = pos.z}, 9, 9) > 1) then

EUEUHEHUE.

jeoz.png

Slicer

Insanity
avatar
Príncipe
Príncipe

INFOS

Grupo: PríncipeRegistrado: 19/08/10Posts: 4014Gênero: Masculino

acredito q uma tabela com os uids ;p -acredito-

"Só a beira do abismo que os seres humanos acham forças para mudar."... E isso me da nojo... ¬¬

"Insanity is doing the exact... same fucking thing... over and over again expecting... shit to change... That. Is. Crazy." -Vass/Einstein

 

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Tipo deve ser isso porque da para usar.

 

for _, tid in ipairs(getSpectators(inferno, math.huge, math.huge)) then
   if isCapiroto(tid) then
     return capetaTaOn
          else
     return capetaTaOff
   end
end

 

é tipo um getPlayersOnline(), só que pega só os que tão na área hueuhehu.

jeoz.png
  • 1
  • 2