Script de alavanca onde apareça monstro e gaste dinheiro

markim1986
em Scripts
  • 1
  • 2

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

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

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

data/actions/scripts/summonMonster.lua:

local config = {
  money_requires = 1,
  monsters = {"Rat", "Cave Rat"}, -- Pode colocar mais monstros, o respawn vai ser aleatório
}
function onUse(cid, item)
if doPlayerRemoveMoney(cid, config.money_requires) then
  local monster = doCreateMonster(config.monsters[math.randon(#config.monsters)], getClosestFreeTile(cid, getThingPos(cid)))
  doSendMagicEffect(getThingPos(monster), 21)
  doTransformItem(item.uid, item.itemid+1)
  addEvent(doTransformItem, 2000, item.uid, item.itemid-1)
else
   doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
   return true
end
end

 

tag:

<action itemid="id da alavanca" event="script" value="summonMonster.lua"/>

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

data/actions/scripts/summonMonster.lua:

local config = {
  money_requires = 1,
  monsters = {"Rat", "Cave Rat"}, -- Pode colocar mais monstros, o respawn vai ser aleatório
}
function onUse(cid, item)
if doPlayerRemoveMoney(cid, config.money_requires) then
  local monster = doCreateMonster(config.monsters[math.randon(#config.monsters)], getClosestFreeTile(cid, getThingPos(cid)))
  doSendMagicEffect(getThingPos(monster), 21)
  doTransformItem(item.uid, item.itemid+1)
  addEvent(doTransformItem, 2000, item.uid, item.itemid-1)
else
doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
return true
end
end

 

tag:

<action itemid="id da alavanca" event="script" value="summonMonster.lua"/>

 

Opa rapaz, entao da esse erro:

[16/01/2013 22:05:41] [Error - Action Interface]
[16/01/2013 22:05:41] data/actions/scripts/summonMonster.lua:onUse
[16/01/2013 22:05:41] Description:
[16/01/2013 22:05:41] data/actions/scripts/summonMonster.lua:7: attempt to call field 'randon' (a nil value)
[16/01/2013 22:05:41] stack traceback:
[16/01/2013 22:05:41]  data/actions/scripts/summonMonster.lua:7: in function <data/actions/scripts/summonMonster.lua:5>

 

Teria como fazer por uniqueid?

pq quero criar varios respows e como o script diz que o respow vai ser aleatorio eu quero colocar taxativo, ou seja quando o pião clicar vai vir 5 demons (configuravel) e quando ele matar os demons nao vai mais aparecer, somente se ele clickar dinovo na alavanca e gastar mais x de money

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

local config = {
	  money_requires = 1,
	  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
	  alavancas = {[1945] = 1946, [1946] = 1945},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, getClosestFreeTile(cid, getThingPos(cid)))			
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
	doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
	return true
end
end

 

 

tag:

<action actionid="2032" event="script" value="summonMonster.lua"/>

Botei por actionid mesmo. ^^

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

local config = {
	  money_requires = 1,
	  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
	  alavancas = {[1945] = 1946, [1946] = 1945},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, getClosestFreeTile(cid, getThingPos(cid)))			
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
	doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
	return true
end
end

 

 

tag:

<action actionid="2032" event="script" value="summonMonster.lua"/>

Botei por actionid mesmo. ^^

 

 

Brother, voces sao muito foda ;)

 

Entao cara o que acontece é o seguinte quando voce aperta as alavancas os bixus aparecem em sua volta, logo so podem aparecer 8 bixos, mais que isso da essse erro:

[16/01/2013 23:34:23] [Error - Action Interface]
[16/01/2013 23:34:23] data/actions/scripts/summonMonster.lua:onUse
[16/01/2013 23:34:23] Description:
[16/01/2013 23:34:23] (luaGetThingPosition) Thing not found

 

mas isso nao é um problema até pq eu nao vou usar mais de 3 bixos nessas alavancas, seria bom se podese concertar, mas se nao der nao tem problema nao.

 

Outra duvida é o seguinte teria como colocar os bixus pra nascerem num lugar expecifico "XYZ" ?

 

Eu coloquei assim no script:

			  monsters = {["spider"] = 1, ["cat"] = 1}, -- Nomde do montros e quantidade
			  alavancas = {[2032] = 2033, [2033] = 2032},

 

Aki nessa linha:

				  alavancas = {[2032] = 2033, [2033] = 2032},

 

Como é pra ser configurado ?

o actionID da alavanca é 2032.

 

Abraços

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

local config = {
			  money_requires = 1,
			  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
			  alavancas = {[1945] = 1946, [1946] = 1945},
			  pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])					  
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
		    doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
		    return true
end
end

 

Pronto, agora você só precisa editar as posições. OBS: sempre deixe duas posições na tabela "pos".

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

local config = {
			  money_requires = 1,
			  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
			  alavancas = {[1945] = 1946, [1946] = 1945},
			  pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])					  
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
			doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
			return true
end
end

 

Pronto, agora você só precisa editar as posições. OBS: sempre deixe duas posições na tabela "pos".

 

Cara ainda ta dando erro olha so:

[17/01/2013 00:37:02] [Error - Action Interface]
[17/01/2013 00:37:02] data/actions/scripts/summonMonster.lua:onUse
[17/01/2013 00:37:02] Description:
[17/01/2013 00:37:02] (luaGetThingPosition) Thing not found

 

Eu coloquei assim na action.xml

<action actionid="2032" event="script" value="summonMonster.lua"/>
<action actionid="2033" event="script" value="summonMonster.lua"/>

 

e assim no script:

 

^local config = {
							  money_requires = 1,
							  monsters = {["Rat"] = 1, ["Tiger"] = 1}, -- Nomde do montros e quantidade
							  alavancas = {[2032] = 2033, [2033] = 2032},
							  pos = {{x=1623,y=1075,z=7}, {x=1624,y=1075,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])									
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
					    doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
					    return true
end
end

 

E a alavanca esta com actionID no map editor como "2032" e UnicID "0"

 

Aonde estou errando ?

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

local config = {
							  money_requires = 1,
							  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
							  alavancas = {[1945] = 1946, [1946] = 1945}, -- Id das alavancas
							  pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])									
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
						    doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
						    return true
end
end

Nãp precisa colocar o "uniqueid" e nem a "actionid" no script, só na tag. Em alavancas são os ids das alavancas a serem puxadas.

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

local config = {
							  money_requires = 1,
							  monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
							  alavancas = {[1945] = 1946, [1946] = 1945}, -- Id das alavancas
							  pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])									
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
							doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
							return true
end
end

Nãp precisa colocar o "uniqueid" e nem a "actionid" no script, só na tag. Em alavancas são os ids das alavancas a serem puxadas.

 

Nao mudei o actionid do script como vc disse e deixei somente essa linha no xml

<action actionid="2032" event="script" value="summonMonster.lua"/>

 

Script:

local config = {
															  money_requires = 1,
															  monsters = {["Rat"] = 1, ["Tiger"] = 1}, -- Nomde do montros e quantidade
															  alavancas = {[1945] = 1946, [1946] = 1945}, -- Id das alavancas
															  pos = {{x=1623,y=1075,z=7}, {x=1624,y=1075,z=7}},
}
function onUse(cid, item)
local alavanca = config.alavancas[item.itemid]
if alavanca ~= nil then doTransformItem(item.uid,alavanca[1]) end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])																  
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
													    doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
													    return true
end
end

 

Da esse erro:

[17/01/2013 11:23:08] [Error - Action Interface]
[17/01/2013 11:23:08] data/actions/scripts/summonMonster.lua:onUse
[17/01/2013 11:23:08] Description:
[17/01/2013 11:23:08] data/actions/scripts/summonMonster.lua:9: attempt to index local 'alavanca' (a number value)
[17/01/2013 11:23:08] stack traceback:
[17/01/2013 11:23:08]  data/actions/scripts/summonMonster.lua:9: in function <data/actions/scripts/summonMonster.lua:7>

 

Se eu mudar o action id do script para:

alavancas = {[2032] = 2033, [2033] = 2032}, -- Id das alavancas

 

Ate funciona mas da erro quando vc flooda o click na alavanca!

o erro acredito que esta acontecendo com um montro tenta nascer um em cima do outro.

 

Segue o erro quando eu floodo na alavanca com o action ID alterado no script!

[17/01/2013 11:27:02] [Error - Action Interface]
[17/01/2013 11:27:02] data/actions/scripts/summonMonster.lua:onUse
[17/01/2013 11:27:02] Description:
[17/01/2013 11:27:02] (luaGetThingPosition) Thing not found

juliok80

Já chegou o disco voador!
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 15/11/12Posts: 120Char no Tibia: Ba Rao

Cara, eu acho que você precisa colocar o actionID 2033 na tag também... ai ficaria assim:

 

<action actionid="2032-2033" event="script" value="summonMonster.lua"/>

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

Você está usando estes itens como alavanca?

 

alavancas = {[1945] = 1946, [1946] = 1945}

Se não, use eles e me diga o que acontece.

 

Entao eu estou usando o o item 1945, ja o o item 1946 nao sei o que é, so tem uma alavanca.

 

com esse linha:

[code]alavancas = {[1945] = 1946, [1946] = 1945}

[/code]

o script não funciona, somente aparece os monstros se eu colocar no lugar do ID da alavanca colocar essa linha

alavancas = {[2032] = 2033, [2033] = 2032},

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

local config = {
money_requires = 1,
monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])																  
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
return true
end
end

Deixe aquela tag que você colocou, e não precisa mais colocar nenhum id no scirpt, só mudar as posições e os monstros a serem sumonados.

markim1986

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/04/09Posts: 120

local config = {
money_requires = 1,
monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])																  
  doSendMagicEffect(getThingPos(monster), 10)
end
end
else
doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
return true
end
end

Deixe aquela tag que você colocou, e não precisa mais colocar nenhum id no scirpt, só mudar as posições e os monstros a serem sumonados.

 

Blz cara agora o lance é o seguinte, se a pessoa fica floodando na alavanca da esse erro:

[08/01/2013 14:43:13] [Error - Action Interface]
[08/01/2013 14:43:13] data/actions/scripts/a.lua:onUse
[08/01/2013 14:43:13] Description:
[08/01/2013 14:43:13] (luaGetThingPosition) Thing not found

 

Acredito que seja pq o monstro nao tem lugar para nascer ai fica nascendo um em cima do outro, por isso da esse erro!

 

Se possivel voce puder colocar um tempo para que o player nao possa fica floodando a alavanca por exemplo:

Quando o player clickar rapido na alavanca vir a mensagem "voce nao pode floodar", aonde somente de 2 em 2 segundos a mesma pode ser puxada!

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

local config = {
money_requires = 1,
monsters = {["Rat"] = 3, ["Tiger"] = 2}, -- Nomde do montros e quantidade
pos = {{x=990,y=1048,z=7}, {x=995,y=1049,z=7}},
}
function onUse(cid, item)
if exhaustion.get(cid, 1734) > 0 then
doPlayerSendCancel(cid, "Sorry, you need waint a 5 minuts.")
return true
end
if doPlayerRemoveMoney(cid, config.money_requires) then
for k, v in pairs(config.monsters) do
for i=1, v do
  local monster = doSummonCreature(k, config.pos[1])				 
  doSendMagicEffect(getThingPos(monster), 10)
  exhaustion.set(cid, 1734, 5)
end
end
else
doPlayerSendTextMessage(cid, 27, "Sorry, you need a "..config.money_requires.." for summon monster.")
return true
end
end

 

 

Agora tem que espera 5 segundos pra poder usar denovo..... ta foda esse pedido em ¬¬'

  • 1
  • 2