Ir para conteúdo
  • 0

Script de alavanca onde apareça monstro e gaste dinheiro


markim1986

Pergunta

Nome do Script: Script de alavanca onde apareça monstro e gaste dinheiro

Tipo do Script: Nao sei!

Versão Utilizada: 8.60

Servidor Utilizado: TheLostServer

Nível de Experiência: Complicado.

Informações Extras: --

 

Ola, gostaria de um script aonde o player puxara uma alvanca e ao seu redor (configuravel) aparecera "X" monstros (configuravel) e o mesmo gaste "X" de dinheiro para puchar essa alavanca, ou seja, um respow por alavanca cobrando uma taxa para ser puxada!

 

Agradeço desde ja

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Use essa script:

Fiz o mesmo esquema de como sumona criaturas, basta editar a tabela monsters.

Se quiser algo do tipo monstro de acordo com level do player etc, só pedir

 

local delay = {}

function onUse(cid, item, frompos, item2, topos)

   local maxSummons = 8   -- máximo de summons permitidos por player
   local timeForReuse = 5 -- segundos para usar novamente
   local cost = 1500	 -- gold para sumonar
   local monsters = {	   -- tabela com monstros, e a quantidade que vai sumonar
   ["Rat"] = 3,
   ["Tiger"] = 2,
   }

   if delay[0] and delay[0] - os.time() > 0 then
    return doPlayerSendCancel(cid, "Espere "..(delay[0] - os.time()).." segundos para puxar a alavanca novamente.")
   end

   local monsterCount = 0
   local guid = getPlayerGUID(cid)

   if delay[guid] then
    for _, mid in pairs(delay[guid]) do
	    if isCreature(mid) then
		    monsterCount = monsterCount + 1
	    else
		    delay[guid][_] = nil
	    end
    end
   end

   if monsterCount >= maxSummons then
    return doPlayerSendCancel(cid, "Há muitos monstros sumonados por você, mate-os primeiro!")
   end

   if not doPlayerRemoveMoney(cid, cost) then
    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para pagar!")
   end

   delay[0] = os.time() + timeForReuse
   monsterCount = 0

   for monsterName, number in pairs(monsters) do
    for _ = 1, number do
	    local newMonster = doCreateMonster(monsterName, getClosestFreeTile(cid, getThingPos(cid), true), false)
	    if isCreature(newMonster) then
		    monsterCount = monsterCount + 1
		    table.insert(delay[guid], newMonster)
		    doSendMagicEffect(getThingPos(newMonster), CONST_ME_TELEPORT)
		    if monsterCount >= maxSummons then
			    return true
		    end
	    end
    end
   end

return true
end

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

  • 0

Use essa script:

Fiz o mesmo esquema de como sumona criaturas, basta editar a tabela monsters.

Se quiser algo do tipo monstro de acordo com level do player etc, só pedir

 

local delay = {}

function onUse(cid, item, frompos, item2, topos)

local maxSummons = 8   -- máximo de summons permitidos por player
local timeForReuse = 5 -- segundos para usar novamente
local cost = 1500	 -- gold para sumonar
local monsters = {	   -- tabela com monstros, e a quantidade que vai sumonar
["Rat"] = 3,
["Tiger"] = 2,
}

if delay[0] and delay[0] - os.time() > 0 then
	return doPlayerSendCancel(cid, "Espere "..(delay[0] - os.time()).." segundos para puxar a alavanca novamente.")
end

local monsterCount = 0
local guid = getPlayerGUID(cid)

if delay[guid] then
	for _, mid in pairs(delay[guid]) do
		if isCreature(mid) then
			monsterCount = monsterCount + 1
		else
			delay[guid][_] = nil
		end
	end
end

if monsterCount >= maxSummons then
	return doPlayerSendCancel(cid, "Há muitos monstros sumonados por você, mate-os primeiro!")
end

if not doPlayerRemoveMoney(cid, cost) then
	return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para pagar!")
end

delay[0] = os.time() + timeForReuse
monsterCount = 0

for monsterName, number in pairs(monsters) do
	for _ = 1, number do
		local newMonster = doCreateMonster(monsterName, getClosestFreeTile(cid, getThingPos(cid), true), false)
		if isCreature(newMonster) then
			monsterCount = monsterCount + 1
			table.insert(delay[guid], newMonster)
			doSendMagicEffect(getThingPos(newMonster), CONST_ME_TELEPORT)
			if monsterCount >= maxSummons then
				return true
			end
		end
	end
end

return true
end

 

Amigo so esta sumonando 1 bixo e esta dando este erro :

 

[17/01/2013 19:28:18] [Error - Action Interface]
[17/01/2013 19:28:18] data/actions/scripts/summonMonster.lua:onUse
[17/01/2013 19:28:18] Description:
[17/01/2013 19:28:18] data/actions/scripts/summonMonster.lua:46: bad argument #1 to 'insert' (table expected, got nil)
[17/01/2013 19:28:18] stack traceback:
[17/01/2013 19:28:18]  [C]: in function 'insert'
[17/01/2013 19:28:18]  data/actions/scripts/summonMonster.lua:46: in function <data/actions/scripts/summonMonster.lua:3>

 

Vlw tbm por esta ajudando

Link para o comentário
Compartilhar em outros sites

  • 0

Assim:

 

local delay = {}

function onUse(cid, item, frompos, item2, topos)

   local maxSummons = 8   -- máximo de summons permitidos por player
   local timeForReuse = 5 -- segundos para usar novamente
   local cost = 1500    -- gold para sumonar
   local monsters = {	 -- tabela com monstros, e a quantidade que vai sumonar
   ["Rat"] = 3,
   ["Tiger"] = 2,
   }

   if delay[0] and delay[0] - os.time() > 0 then
    return doPlayerSendCancel(cid, "Espere "..(delay[0] - os.time()).." segundos para puxar a alavanca novamente.")
   end

   local monsterCount = 0
   local guid = getPlayerGUID(cid)

   if delay[guid] then
    for _, mid in pairs(delay[guid]) do
	    if isCreature(mid) then
		    monsterCount = monsterCount + 1
	    else
		    delay[guid][_] = nil
	    end
    end
   else
    delay[guid] = {}
   end

   if monsterCount >= maxSummons then
    return doPlayerSendCancel(cid, "Há muitos monstros sumonados por você, mate-os primeiro!")
   end

   if not doPlayerRemoveMoney(cid, cost) then
    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para pagar!")
   end

   delay[0] = os.time() + timeForReuse
   monsterCount = 0

   for monsterName, number in pairs(monsters) do
    for _ = 1, number do
	    local newMonster = doCreateMonster(monsterName, getClosestFreeTile(cid, getThingPos(cid), true), false)
	    if isCreature(newMonster) then
		    monsterCount = monsterCount + 1
		    table.insert(delay[guid], newMonster)
		    doSendMagicEffect(getThingPos(newMonster), CONST_ME_TELEPORT)
		    if monsterCount >= maxSummons then
			    return true
		    end
	    end
    end
   end

return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Assim:

 

local delay = {}

function onUse(cid, item, frompos, item2, topos)

local maxSummons = 8   -- máximo de summons permitidos por player
local timeForReuse = 5 -- segundos para usar novamente
local cost = 1500	-- gold para sumonar
local monsters = {	 -- tabela com monstros, e a quantidade que vai sumonar
["Rat"] = 3,
["Tiger"] = 2,
}

if delay[0] and delay[0] - os.time() > 0 then
	return doPlayerSendCancel(cid, "Espere "..(delay[0] - os.time()).." segundos para puxar a alavanca novamente.")
end

local monsterCount = 0
local guid = getPlayerGUID(cid)

if delay[guid] then
	for _, mid in pairs(delay[guid]) do
		if isCreature(mid) then
			monsterCount = monsterCount + 1
		else
			delay[guid][_] = nil
		end
	end
else
	delay[guid] = {}
end

if monsterCount >= maxSummons then
	return doPlayerSendCancel(cid, "Há muitos monstros sumonados por você, mate-os primeiro!")
end

if not doPlayerRemoveMoney(cid, cost) then
	return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para pagar!")
end

delay[0] = os.time() + timeForReuse
monsterCount = 0

for monsterName, number in pairs(monsters) do
	for _ = 1, number do
		local newMonster = doCreateMonster(monsterName, getClosestFreeTile(cid, getThingPos(cid), true), false)
		if isCreature(newMonster) then
			monsterCount = monsterCount + 1
			table.insert(delay[guid], newMonster)
			doSendMagicEffect(getThingPos(newMonster), CONST_ME_TELEPORT)
			if monsterCount >= maxSummons then
				return true
			end
		end
	end
end

return true
end

 

Perfeito, so gotaria que direcionase os bixos por ex:

Nascer 1 numa ponta e outro na outra (configuravel XYZ)

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz por direção, basta configurar a tabela "dirPref" e ver quais direções você quer dar prioridade pra sumonar:

 

local delay = {}

function onUse(cid, item, frompos, item2, topos)

   local maxSummons = 8   -- máximo de summons permitidos por player
   local timeForReuse = 5 -- segundos para usar novamente
   local cost = 1500    -- gold para sumonar
   local dirPref = {NORTHWEST, SOUTHEAST, NORTHEAST, SOUTHWEST, NORTH, SOUTH, EAST, WEST}
   local monsters = {   -- tabela com monstros, e a quantidade que vai sumonar
   ["Rat"] = 3,
   ["Tiger"] = 2,
   }

   if delay[0] and delay[0] - os.time() > 0 then
    return doPlayerSendCancel(cid, "Espere "..(delay[0] - os.time()).." segundos para puxar a alavanca novamente.")
   end

   local monsterCount = 0
   local guid = getPlayerGUID(cid)

   if delay[guid] then
    for _, mid in pairs(delay[guid]) do
	    if isCreature(mid) then
		    monsterCount = monsterCount + 1
	    else
		    delay[guid][_] = nil
	    end
    end
   else
    delay[guid] = {}
   end

   if monsterCount >= maxSummons then
    return doPlayerSendCancel(cid, "Há muitos monstros sumonados por você, mate-os primeiro!")
   end

   if not doPlayerRemoveMoney(cid, cost) then
    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para pagar!")
   end

   delay[0] = os.time() + timeForReuse
   monsterCount = 0
   local dir = 1

   for monsterName, number in pairs(monsters) do
    for _ = 1, number do
	    local range = 1
	    local pos = getPosByDir(getThingPos(cid), dirPref[dir], range)
	    local loops = 0
	    while doTileQueryAdd(cid, pos, 0, false) ~= 1 and loops <= #dirPref * 2 do
		    dir = (dir + 1) > #dirPref and 1 or dir + 1
		    if dir == 1 then
			   range = range + 1
		    end
		    pos = getPosByDir(getThingPos(cid), dirPref[dir], range)
		    loops = loops + 1
	    end
	    if doTileQueryAdd(cid, pos, 0, false) ~= 1 then
		    pos = getClosestFreeTile(cid, getThingPos(cid), true)
	    end
	    local newMonster = doCreateMonster(monsterName, pos, false)
	    if isCreature(newMonster) then
		    monsterCount = monsterCount + 1
		    table.insert(delay[guid], newMonster)
		    doSendMagicEffect(getThingPos(newMonster), CONST_ME_TELEPORT)
		    if monsterCount >= maxSummons then
			    return true
		    end
	    end
    end
   end

return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Deu esse erro

 

 

[10/04/2014 15:53:12] [Error - LuaScriptInterface::loadFile] data/actions/scripts/summonMonster.lua:73: 'end' expected (to close 'function' at line 2) near 'en'
[10/04/2014 15:53:12] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/summonMonster.lua)
[10/04/2014 15:53:12] data/actions/scripts/summonMonster.lua:73: 'end' expected (to close 'function' at line 2) near 'en'
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...