[Action] Pedra Invocação De Player

meubk
Por meubk
em Actions e Talkactions
  • 1
  • 2

meubk

@miillerdomingues
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/04/08Posts: 311

Invocação de Player

 

Sabe quando você e seu amigo está caçando em um lugar muito longe, e você morre, e o espertinho de seu amigo fica vivo, não dá aquela raiva, de ter que voltar todo caminho, e ainda sozinho ? Pensando nisso, foi que eu tive uma ideia de uma Pedra, aonde seu amigo pode usar ela no seu corpo se você ainda estiver tiver online, e aceitar seu convite, você é teleportado para cima do corpo.

 

Observe a Imagem:



 

2w5ksk5.jpg

Bom, agora que já está explicado a ideia vamos ao script:

 

  • Crie um arquivo com o nome de invoc.lua na pasta actions/scripts e cole o seguinte código:
     
    local configs = {
    	minLvL = 0, -- level minimo necessário[ 0 para não precisar ]
    	mana = 0, -- mana necessária [ 0 para não precisar ]
    	magicLvL = 0, -- magic level necessário [ 0 para não precisar ]
    	vocs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, -- vocações que podem usar
    	premium = false, -- precisa de premium [ true ou false ]
    	removeCorpse = true, -- remover o corpo depois de invocar [ true or false ]
    	removeStone = true, -- remover a pedra após usar [ true or false ]
    	invite = true  -- o dono do corpo precisa aceitar [ true or false ]
    }
    
    function SendMessageInvoc(cid, pid)
    if getPlayerStorageValue(pid, 22254) ~= 1 then return true end
    if not isCreature(cid) or not isCreature(pid) then return true end
    doPlayerSendTextMessage(pid, 27, "O Player "..getCreatureName(cid).." quer te invocar digite /invoc aceitar ou /invoc rejeitar.")
    addEvent(SendMessageInvoc, 10000, cid, pid)
    end
    
    function onUse(cid, item, frompos, item2, topos)
    
    if getPlayerLevel(cid) < configs.minLvL then
    	return doPlayerSendCancel(cid, "Você precisa de level "..configs.minLvL.." para invocar alguem.")
    elseif getPlayerMana(cid) < configs.mana then
    	return doPlayerSendCancel(cid, "Você precisa de "..configs.mana.." de mana para invocar alguem.")
    elseif getPlayerMagLevel(cid) < configs.magicLvL then
    	return doPlayerSendCancel(cid, "Você precisa de magic level "..configs.magicLvL.." para invocar alguem.")
    elseif not isInArray(configs.vocs, getPlayerVocation(cid)) then
    	return doPlayerSendCancel(cid, "Sua Vocação não é permitido invocar alguem.")
    elseif not isPremium(cid) and configs.premium then
    	return doPlayerSendCancel(cid, "Você precisa de premium account para invocar alguem.")
    end
    
    if isCorpse(item2.uid) then
    	if not getItemAttribute(item2.uid, "description") then
    		return doPlayerSendCancel(cid, "Este não é corpo de um player.")
    	end
    	local name = (getItemAttribute(item2.uid, "description")):match("You recognize (.-)%.")
    	local pid = getPlayerByName(name)
    	if pid then
    		if not configs.invite then
    			doTeleportThing(pid, topos)
    			doSendMagicEffect(topos, 10)
    			doSendAnimatedText(topos, "Invoked", math.random(1, 250))
    			doPlayerSendTextMessage(cid, 27, "O Player "..name.." foi invocado com sucesso.")
    			doPlayerSendTextMessage(pid, 27, "O Player "..getCreatureName(cid).." te invocou.")
    			if configs.removeCorpse then
    				doRemoveItem(item2.uid)
    			end
    		else
    			if getPlayerStorageValue(pid, 22254) ~= 1 then
    				setPlayerStorageValue(pid, 22254, 1)
    				setPlayerStorageValue(pid, 22255, topos.x)
    				setPlayerStorageValue(pid, 22256, topos.y)
    				setPlayerStorageValue(pid, 22257, topos.z)
    				if configs.removeCorpse then
    					setPlayerStorageValue(pid, 22258, "yes")
    				end
    				setPlayerStorageValue(pid, 22259, cid)
    				SendMessageInvoc(cid, pid)
    				doPlayerSendTextMessage(cid, 27, "Você envio convite para "..name.." para ser invocado.")
    			else
    				return doPlayerSendCancel(cid, "Este corpo já foi invocado por alguem.")
    			end
    		end
    		if configs.removeStone then
    			doRemoveItem(item.uid, 1)
    		end
    		return doCreatureAddMana(cid, - configs.mana)
    	else
    		return doPlayerSendTextMessage(cid, 27, "O Player não esta online.")
    	end
    else
    	return doPlayerSendCancel(cid, "Isto não é um corpo.")
    end
    end
    


     

  • Depois na pasta actions procure pelo arquivo actions.xml e adicione a tag:
     
    <action itemid="8303" event="script" value="invoc.lua"/>


     

  • Agora entre na pasta talkactions/scripts e crie outro arquivo com o nome de invoc.lua novamente e cole o código:
     
    function onSay(cid, words, param)
    if getPlayerStorageValue(cid, 22254) == 1 then
    	if param == "aceitar" then
    		if not isPlayer(getPlayerStorageValue(cid, 22259)) then
    			setPlayerStorageValue(cid, 22254, 0)
    			doPlayerSendTextMessage(cid, 27, "O Player que te invocou não está mais online por isso foi cancelado o pedido.")
    		end
    		local pos = {x=getPlayerStorageValue(cid, 22255), y=getPlayerStorageValue(cid, 22256), z=getPlayerStorageValue(cid, 22257)}
    		doTeleportThing(cid, pos)
    		doSendMagicEffect(pos, 10)
    		doSendAnimatedText(pos, "Invoked", math.random(1, 250))
    		if getPlayerStorageValue(cid, 22258) == "yes" then
    			for i = 0, 255 do
    				pos.stackpos = i
    				local tile = getTileThingByPos(pos)
    				if isCorpse(tile.uid) then
    					if (getItemAttribute(tile.uid, "description")):match("You recognize (.-)%.") == getCreatureName(cid) then
    						doRemoveItem(tile.uid)
    						break
    					end
    				end
    			end
    		end
    		doPlayerSendTextMessage(cid, 27, "O Player "..getCreatureName(getPlayerStorageValue(cid, 22259)).." te invocou.")
    		doPlayerSendTextMessage(getPlayerStorageValue(cid, 22259), 27, getCreatureName(cid).." foi invocado com sucesso.")
    		setPlayerStorageValue(cid, 22254, 0)
    	elseif param == "rejeitar" then
    		if not isPlayer(getPlayerStorageValue(cid, 22259)) then
    			setPlayerStorageValue(cid, 22254, 0)
    			doPlayerSendTextMessage(cid, 27, "O Player que te invocou não está mais online por isso foi cancelado o pedido.")
    		end
    		doPlayerSendTextMessage(cid, 27, "Você rejeitou o pedido de "..getCreatureName(getPlayerStorageValue(cid, 22259))..".")
    		doPlayerSendTextMessage(getPlayerStorageValue(cid, 22259), 27, getCreatureName(cid).." rejeitou seu pedido de invocação.")
    		setPlayerStorageValue(cid, 22254, 0)
    	end
    else
    	doPlayerSendTextMessage(cid, 27, "Você não tem convites.")
    end
    return true
    end
    


     

  • Depois na pasta talkactions procure o arquivo talkactions.xml e adicione a seguinte tag:
     
    <talkaction words="/invoc" hide="yes" event="script" value="invoc.lua"/>


     

 

Segue as configurações no script, se vai remover o corpo, se vai remover a pedra, o level, magic level, premium, ou até mesmo se o player que vai ser invocado precisar aceitar algum convite, tudo pode ser configurado no script nesta parte:

 

local configs = {
	minLvL = 0, -- level minimo necessário[ 0 para não precisar ]
	mana = 0, -- mana necessária [ 0 para não precisar ]
	magicLvL = 0, -- magic level necessário [ 0 para não precisar ]
	vocs = {0, 1, 2, 3, 4, 5, 6, 7, 8}, -- vocações que podem usar
	premium = false, -- precisa de premium [ true ou false ]
	removeCorpse = true, -- remover o corpo depois de invocar [ true or false ]
	removeStone = true, -- remover a pedra após usar [ true or false ]
	invite = true  -- o dono do corpo precisa aceitar [ true or false ]
}

 

Caso estiver usando o sistema de convite os comandos são:

 

  • /invoc aceitar
  • /invoc rejeitar

 

Bom eu deixei configurado com aquela pedra rosa como na foto, fica ao seu critério deixar ela ou escolher outra só mudar na tag do xml:

 

action itemid="8303"

 

Obrigado a todos, e se gostaram comente :)

Tchau ;*

alldakie

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 28/07/11Posts: 1223

Ainda não testei, mais me parece bom!

Parabéns, acredito que seja um ótimo script, e a função e melhor ainda!

REP+ Adiantado!

ereveworld1

Greco
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/04/11Posts: 85

Nossa, surgiram milhares de ideias na minha cabeça.

Ótimo script, ainda não testei

Rep+

Jeffee90

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/07/11Posts: 17Char no Tibia: NaumTenho

Olá.

Testei Em Um OTServer Baiak 8.60 e Deu Erro =(

 

Mesmo Assim REP+ :button_ok:

783bcc9bea8743d6b665726b2deaaf82.0.gif

 

Gosto Da Um REP+ Clica No addkr.png La No Cantinho.

Valeuu!

 

 

MSN : Jefferson.2025@Hotmail.com

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Faltou a checagem para ver se o jogador tem mana suficiente.

Oie :D

zemzinho

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/06/09Posts: 1Char no Tibia: Deleted :P

Parece ser bom.. Mas ainda nao testei.

REP+

 

 

 

 

 

 

 

~~~~~~~tudoporumavida.tumblr.com~~~~~~~~~~

k2lan

Na vida tudo passa, não importa o que tu faça
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 17/12/07Posts: 217

pelo jeito nao funciona baiak 8.6 né

Ltkshow

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/08/11Posts: 92Char no Tibia: Deleted

Mano Funfa Em Baiak 8.60? Se Funfa Pode Ter Certeza Que Meu Rep+ Ta Garantido.

 

 

 

 

 

 

 

 

YOURS;LTK :button_ok:

FrozenGames

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/08/11Posts: 21Char no Tibia: Meu pau de Toca

Pelo que eu vi , deve ser otima mesmo mais , pare para pensar .

 

Vamos supor que Eu morri . a pessoa q tiver a pedra vai usa no meu corpo la ai quando eu for para la ele me mata ?

 

Ex : O cara me mato , uso a pedra no meu corpo eu volto pro luga de onde morri e ele me mata de novo ? . intao tenq elaborar + . Mais fora isso fikou otimo .

1284795_2.png

 

Sou FAN do :

BOZO

FrozenGames

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/08/11Posts: 21Char no Tibia: Meu pau de Toca

Pelo que eu vi , deve ser otima mesmo mais , pare para pensar .

 

Vamos supor que Eu morri . a pessoa q tiver a pedra vai usa no meu corpo la ai quando eu for para la ele me mata ?

 

Ex : O cara me mato , uso a pedra no meu corpo eu volto pro luga de onde morri e ele me mata de novo ? . intao tenq elaborar + . Mais fora isso fikou otimo .

1284795_2.png

 

Sou FAN do :

BOZO

Subwat

GAUCHO MACHO
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/07/09Posts: 1516Char no Tibia: Gean Riot

que script loko '-'

mas e se o cara ti puxar pra ti matar '-'

Entrem Server online desde o dia 22/02/2013 Monster 24HORAS dedicado!

IP: monster24h.com

PROTOCOL:8.60

PORT:7171

 

RATES:

Exp: 9999x~10x

Skills:800x

Magic:200x

Loot:2x

Pvp-e Advanced: 1.1x Ao matar players de level semelhante.

 

Accounts Pelo Account Manager!

SkyDangerous

Deus Kalec
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 17/01/09Posts: 2098Char no Tibia: Adra Sata

Grande Ideia

Script muito bom.

 

@Demon

 

A checagem de mana não seria nisso

 

  elseif getPlayerMana(cid) < configs.mana then
               return doPlayerSendCancel(cid, "Você precisa de "..configs.mana.." de mana para invocar alguem.")

Me segui lá (:

 

b906.png

http://ageofwar.servegame.com/

IP: ageofwar.servegame.com

TIBIA: 10.78

GLOBAL PERFECT CUSTOM

meubk

@miillerdomingues
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/04/08Posts: 311

Creio que funfe em um serve 8.6 até por que não usei nenhuma função diferente da versão 8.6..

 

Sky e Demonholder, a checagem de mana está ai sim, aonde o Sky disse mesmo...

 

e enquanto o cara querer puxar pra te matar, eu estou fazendo aqui irei postar amanhã:

 

quando o player clicar no corpo ira mandar um convite para o player se ele ker ser invocado, tendo accept e reject..

 

Obrigado aos elogios..

 

Fui ;*

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Ah sim, não havia visto hahaha. Parabéns pelo script, mas poderia estar melhor, como implantar um sistema onde o jogador tenha que aceitar ser teleportado.

Oie :D

SkyDangerous

Deus Kalec
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 17/01/09Posts: 2098Char no Tibia: Adra Sata

kk'

 

Eu sou d + , só falta aprender a mecher nos script , porque traduzir o script eu sei bastante ;D

 

Vai ser muito show esse script , se quiser ideias só perguntar ;D

Me segui lá (:

 

b906.png

http://ageofwar.servegame.com/

IP: ageofwar.servegame.com

TIBIA: 10.78

GLOBAL PERFECT CUSTOM

  • 1
  • 2