Ir para conteúdo
  • 0

Alavanca De Sumonar Monstro Com Custo


godpank

Pergunta

Olá! Gostaria de um script onde o player puxasse uma alavanca e pudesse sumonar 02 monstros. Cada monstro sumonado teria que descontar do player algum valor. Quando o espaço dos monstros sumonados forem ocupados, o player não poderia perder dinheiro quando continuasse puxando. Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Respostas 33
  • Created
  • Última resposta

Top Posters For This Question

Top Posters For This Question

Posts Recomendados

  • 0

Vê se esse serve pra você:

 

 

-- configurações:
local NOME_MONSTRO = "Cooperative Mode" -- nome do monstro
local LIMITE_MONSTROS = 6 -- max de monstros sumonados pelo player de uma só vez
local CUSTO_PRA_SUMONAR = 0 -- preço a pagar em gold (para cada monstro sumonado, se sumonar 2 de uma vez, vai pagar 2x o preço)
local QUANTIDADE_CRIADA_POR_VEZ = 2 -- quantos monstros vão ser criados a cada puxada
local EFEITO_AO_CRIAR_MONSTRO = CONST_ME_TELEPORT -- efeito que aparece quando o monstro é criado

local playerMonsterCount = {}

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

   local summonedCount = 0

   if not playerMonsterCount[getPlayerGUID(cid)] then
    playerMonsterCount[getPlayerGUID(cid)] = {}
   else
    for _, mid in pairs (playerMonsterCount[getPlayerGUID(cid)]) do
	    if not isCreature(mid) then
		    playerMonsterCount[getPlayerGUID(cid)][_] = nil
	    else
		    summonedCount = summonedCount + 1
	    end
    end
   end

   if summonedCount >= LIMITE_MONSTROS then
   return doPlayerSendCancel(cid, "Você não pode sumonar mais monstros.")
   end

   local removeMoney, newMonsters = false, {}

   for sCount = 1, QUANTIDADE_CRIADA_POR_VEZ do
    local newMonster = doCreateMonster(NOME_MONSTRO, getThingPos(cid), false)
    if not newMonster then break end
    table.insert(newMonsters, newMonster)
    removeMoney = true
    if #newMonsters + summonedCount >= LIMITE_MONSTROS then break end
   end

   if removeMoney and doPlayerRemoveMoney(cid, CUSTO_PRA_SUMONAR * #newMonsters) then
    for _, mid in pairs (newMonsters) do
	    doSendMagicEffect(getThingPos(mid), EFEITO_AO_CRIAR_MONSTRO)
	    table.insert(playerMonsterCount[getPlayerGUID(cid)], mid)
    end
   else
    for _, mid in pairs (newMonsters) do
	    doRemoveCreature(mid)
    end
    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para sumonar monstros.")
   end

return doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
end

 

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

  • 0

editei o dele

-- configurações:
local NOME_MONSTRO = "Cooperative Mode" -- nome do monstro
local LIMITE_MONSTROS = 6 -- max de monstros sumonados pelo player de uma só vez
local CUSTO_PRA_SUMONAR = 0 -- preço a pagar em gold (para cada monstro sumonado, se sumonar 2 de uma vez, vai pagar 2x o preço)
local QUANTIDADE_CRIADA_POR_VEZ = 2 -- quantos monstros vão ser criados a cada puxada
local EFEITO_AO_CRIAR_MONSTRO = CONST_ME_TELEPORT -- efeito que aparece quando o monstro é criado
local playerMonsterCount = {}
function onUse(cid, item, frompos, item2, topos)
   local summonedCount = 0
   if not playerMonsterCount[getPlayerGUID(cid)] then
	    playerMonsterCount[getPlayerGUID(cid)] = {}
   else
	    for _, mid in pairs (playerMonsterCount[getPlayerGUID(cid)]) do
			    if not isCreature(mid) then
					    playerMonsterCount[getPlayerGUID(cid)][_] = nil
			    else
					    summonedCount = summonedCount + 1
			    end
	    end
   end

   if summonedCount >= LIMITE_MONSTROS then
   return doPlayerSendCancel(cid, "Você não pode sumonar mais monstros.")
   end
   local removeMoney, newMonsters = false, {}
   for sCount = 1, QUANTIDADE_CRIADA_POR_VEZ do
	    local newMonster = doCreateMonster(NOME_MONSTRO, getThingPos(cid), false)
	    if not newMonster then break end
	    table.insert(newMonsters, newMonster)
	    removeMoney = true
	    if newMonsters + summonedCount >= LIMITE_MONSTROS then break end
   end

   if removeMoney and doPlayerRemoveMoney(cid, CUSTO_PRA_SUMONAR * #newMonsters) then
	    for _, mid in pairs (newMonsters) do
			    doSendMagicEffect(getThingPos(mid), EFEITO_AO_CRIAR_MONSTRO)
			    table.insert(playerMonsterCount[getPlayerGUID(cid)], mid)
	    end
   else
	    for _, mid in pairs (newMonsters) do
			    doRemoveCreature(mid)
	    end
	    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para sumonar monstros.")
   end

return doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
end

Link para o comentário
Compartilhar em outros sites

  • 0

hm veja agora

 

-- configurações:
local NOME_MONSTRO = "Cooperative Mode" -- nome do monstro
local LIMITE_MONSTROS = 6 -- max de monstros sumonados pelo player de uma só vez
local CUSTO_PRA_SUMONAR = 0 -- preço a pagar em gold (para cada monstro sumonado, se sumonar 2 de uma vez, vai pagar 2x o preço)
local QUANTIDADE_CRIADA_POR_VEZ = 2 -- quantos monstros vão ser criados a cada puxada
local EFEITO_AO_CRIAR_MONSTRO = CONST_ME_TELEPORT -- efeito que aparece quando o monstro é criado
local playerMonsterCount = {}
function onUse(cid, item, frompos, item2, topos)
   local summonedCount = 0
   if not playerMonsterCount[getPlayerGUID(cid)] then
			    playerMonsterCount[getPlayerGUID(cid)] = {}
   else
			    for _, mid in pairs (playerMonsterCount[getPlayerGUID(cid)]) do
							    if not isCreature(mid) then
											    playerMonsterCount[getPlayerGUID(cid)][_] = nil
							    else
											    summonedCount = summonedCount + 1
							    end
			    end
   end

   if summonedCount >= LIMITE_MONSTROS then
   return doPlayerSendCancel(cid, "Você não pode sumonar mais monstros.")
   end
   local removeMoney, newMonsters = false, {}
   for sCount = 1, QUANTIDADE_CRIADA_POR_VEZ do
			    local newMonster = doCreateMonster(NOME_MONSTRO, getThingPos(cid), false)
			    if not newMonster then break end
			    table.insert(newMonsters, newMonster)
			    removeMoney = true
			    if newMonsters + summonedCount >= LIMITE_MONSTROS then break end
   end

   if removeMoney and doPlayerRemoveMoney(cid, CUSTO_PRA_SUMONAR * newMonsters) then
			    for _, mid in pairs (newMonsters) do
							    doSendMagicEffect(getThingPos(mid), EFEITO_AO_CRIAR_MONSTRO)
							    table.insert(playerMonsterCount[getPlayerGUID(cid)], mid)
			    end
   else
			    for _, mid in pairs (newMonsters) do
							    doRemoveCreature(mid)
			    end
			    return doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para sumonar monstros.")
   end

return doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
end

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa amigo, eu tinha colocado um # onde não deiva, mas logo depois eu editei o meu post, acredito que você pegou o código antes de dar tempo de editá-lo

 

é só pegar meu script de novo, você coloca essa tag no actions.xml:

 

<action actionid="8000" event="script" value="NOME_DO_SCRIPT.lua"/>

 

e coloca na alavanca o action id 8000, ou então se você modificar esse número, coloque o mesmo n º no action id da alavanca que você escolher para a tag

Link para o comentário
Compartilhar em outros sites

  • 0

ah servidor 7.6 é muito diferente, mas não funcionou por quê?

deu algum erro ou simplesmente não aconteceu nada?

configurou a tag no actions.xml certinho e o action ou unique id na alavanca no mapa?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Brun123!

 

Coloquei tudo certinho, desculpe não ter postado o erro.

 

O que acontece agora é o seguinte, quando vou carregar o server, dá a seguinte mensagem em "actions": Missing Script Tag", mas não impede de ligar o servidor.

Quando vou na alavanca, no jogo, a mensagem continua "you can not use this object".

 

Não tenho conhecimento em scripts, mas fiz uma mudança em um que tinha, ficando assim:


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

  • if item.uid == 3334 and doPlayerRemoveMoney(cid,500) == 1 then

  • doPlayerSendTextMessage(cid,22,"teste.")

  • doSummonCreature("demon",topos)

  • doSendMagicEffect(topos,13)

  • else

  • doPlayerSendCancel(cid,"Você está sem gps.")

  • end

  • return 1

  • end

Mas se o player ficar clicando na alavanca e não tiver mais espaço para sumonar monstro, fica descontando o valor dele sempre, sem sumonar mais por falta de espaço.

 

Link do script pelo pastebin: http://pastebin.com/2GtvHCLJ

 

Obs. O script que coloquei no link acima é básico demais, e como informei antes, não tenho conhecimento nenhum em Lua.

 

Obrigado.

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

Visitante
Este tópico está impedido de receber novos posts.

×
×
  • Criar Novo...