Ir para conteúdo

[NEW] Own your Spawn


Roksas

Posts Recomendados

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

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

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 :)

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

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..

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

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

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

@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

Link para o comentário
Compartilhar em outros sites

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.

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

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.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...