Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Crystal pro castle


Ir para solução Resolvido por Caronte,

Posts Recomendados

Bom galera, eu gostaria de um script que tipo...

Um crystal no topo do castle do meu ot, e então funcionaria assim:

1º A guild vai mata e conquista o castle (SEM ALAVANCA, APENAS POR MATAR ELE), e essa guild que conquistou, não conseguira atacar o crystal.

2º Ao matar ele, ele nascer em sequencia, quando acabar a life dele, anunciar que tal guild conquistou o castle e a life voltar do começo.

 Por favor, se alguém puder me ajudar ficarei muito grato!

 

 

+REP POR 1 SEMANA!


up

Editado por Peemello (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

qual é a versão da sua distro?

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

qual é a versão da sua distro?

TFS 0.4

Editado por Peemello (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
function onUse(cid, item, frompos, item2, topos) 
 
------------------ Inicio das Config ------------
 
local castle_one_name = "Castle24h"                  -- Nome do castelo 1
local storages = {154154,54321,123123}               -- Storages ( se vc eh iniciante, deixe como está...)
 
 
 
-------PREMIOs  I N D I V I D U A L ---------
 
local premio_por_vezes = 1         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 15            -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 5468                -- ID do Premio
local premio_cont = 1              -- Quantidade do Premio
local premio_reset = 1             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
 
-------FIM PREMIOs I N D I V I D U A L ---------
 
 
 
 
----------------- FIM DAS CONFIG -----------------
 
local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)
 
 
   if isPlayerGuild(cid) == TRUE then
      if sto_ativ == 1 or sto_ativ == -1 then
 
         guildname = getPlayerGuildName(cid)     
         guild = getPlayerGuildId(cid)               
         guild_sto = getGlobalStorageValue(storages[3])
                  
            if guild ~= guild_sto then            
               setPlayerStorageValue(cid,guild_sto,guild)                      
               if getPlayerStorageValue(cid,storages[1]) == -1 then
                  setPlayerStorageValue(cid,storages[1],0)
               end
               
               sto_vezes = getPlayerStorageValue(cid,storages[1])                   
               
               setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
               setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
               
               sto_vezes_total = getPlayerStorageValue(cid,storages[1])
                        
               doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
               doSendMagicEffect(position, 39)  
                 
                 if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                       if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                          doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                          doPlayerAddItem(cid, premio,premio_cont)
                          doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                        -----------------------------------------------  --  
                            if premio_reset == 1 then                    --
                               setPlayerStorageValue(cid,storages[1],0)  --  Resetar a contagem
                            end                                          --
                        -----------------------------------------------  --
                        
                       else
                       doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                       addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                       end
                    end                                        
                 end               
            else
              doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
              doSendMagicEffect(position, 2)
            end
      else
      doPlayerSendCancel(cid,"O sistema está desativado")
      end      
   else
   doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
   doSendMagicEffect(position, 2)
   end
end
 
------------------------- por pc98
 
function additem(cid,premio,premio_cont,premio_reset)
 
 if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
    doPlayerAddItem(cid, premio,premio_cont)
    doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
     if premio_reset == 1 then
        setPlayerStorageValue(cid,storages[1],0)
     end
    stopEvent(additem)
  else
  doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
  addEvent(additem,10000,cid)
  end
end
 
-------------------------  por pc98
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end
Link para o post
Compartilhar em outros sites

Bom, alterei aqui o script, veja se lhe serve:

 

 

No lugar da alavanca você cria um monstro com nome Crystal.

 

Eu criei um exemplo aqui, você altera as coisas ao seu bel prazer:

<?xml version="1.0" encoding="UTF-8"?>
<monster name="Crystal" nameDescription="the crystal is the heart of the castle." race="undead" experience="200" speed="0" manacost="600">
	<health now="240" max="240"/>
	<look typeex="8634" corpse="0"/>
	<targetchange interval="5000" chance="8"/>
	<strategy attack="100" defense="0"/>
	<flags>
		<flag summonable="0"/>
		<flag attackable="1"/>
		<flag hostile="1"/>
		<flag illusionable="1"/>
		<flag convinceable="0"/>
		<flag pushable="0"/>
		<flag canpushitems="1"/>
		<flag canpushcreatures="1"/>
		<flag targetdistance="1"/>
		<flag staticattack="90"/>
		<flag runonhealth="0"/>
	</flags>
	<attacks>
		<attack name="melee" interval="2000" skill="30" attack="70"/>
	</attacks>
	<defenses armor="20" defense="22">
		<defense name="healing" interval="1000" chance="17" min="30" max="50">
			<attribute key="areaEffect" value="blueshimmer"/>
		</defense>
		<defense name="speed" interval="1000" chance="10" speedchange="300" duration="3000">
			<attribute key="areaEffect" value="redshimmer"/>
		</defense>
	</defenses>
	<elements>
		<element holyPercent="50"/>
		<element deathPercent="50"/>
		<element physicalPercent="-15"/>
	</elements>
	<immunities>
		<immunity invisible="1"/>
	</immunities>
	<voices interval="5000" chance="10">
		<voice sentence="Repent Heretic!"/>
		<voice sentence="A prayer to the almighty one!"/>
		<voice sentence="I will punish the sinners!"/>
	</voices>
	<loot>
		<item id="2148" countmax="20" chance="24000"/><!-- gold coin -->
		<item id="2689" chance="20000"/><!-- bread -->
		<item id="1949" chance="18000"/><!-- scroll -->
		<item id="2044" chance="12000"/><!-- lamp -->
		<item id="2015" chance="6666"/><!-- brown flask -->
		<item id="2642" chance="6666"/><!-- sandals -->
		<item id="2467" chance="4000"/><!-- leather armor -->
		<item id="2401" chance="20000"/><!-- staff -->
		<item id="1987" chance="100000"><!-- bag -->
			<inside>
					<item id="2177" chance="3000"/><!-- life crystal -->
					<item id="2193" chance="1500"/><!-- ankh -->
					<item id="2166" chance="700"/><!-- power ring -->
			</inside>
		</item>
	</loot>
</monster>

Agora, vai em creaturescripts/scripts e adicione Crystal.lua

function onKill(cid, target, lastHit) 
    
	if not (isMonster(target) and getCreatureName(target) == "Crystal") then
		return print("Erro")
	end
	
    ------------------ Inicio das config ------------
    
    local castle_one_name = "Castle24h" -- Nome do castelo 1
    local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está ...)
    local monster_name = "Crystal"
    local monster_pos = {x = 100, y = 130, z = 7}
    
    
    -------PREMIOs I N D I V I D U A L ---------
    
    local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. 
    local premio_vezes = 15 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
    local premio = 5468 -- ID do Premio
    local premio_cont = 1 -- Quantidade do Premio
    local premio_reset = 1 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO
	
    
    -------FIM PREMIOs I N D I V I D U A L ---------
    
    
    
    
    ----------------- FIM DAS CONFIG -----------------
    
    local sto_ativ = getGlobalStorageValue(storages[2])
    position = getCreaturePosition(cid)
    
    
    if isPlayerGuild(cid) == TRUE then
        if sto_ativ == 1 or sto_ativ == -1 then
            
            guildname = getPlayerGuildName(cid) 
            guild = getPlayerGuildId(cid) 
            guild_sto = getGlobalStorageValue(storages[3])
            
            if guild ~= guild_sto then 
                setPlayerStorageValue(cid,guild_sto,guild) 
                if getPlayerStorageValue(cid,storages[1]) == -1 then
                    setPlayerStorageValue(cid,storages[1],0)
                end
                
                sto_vezes = getPlayerStorageValue(cid,storages[1]) 
                
                setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
                setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
                
                sto_vezes_total = getPlayerStorageValue(cid,storages[1])
                
                doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
                doSendMagicEffect(position, 39) 
                
                if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                        if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                            doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                            doPlayerAddItem(cid, premio,premio_cont)
                            doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                            ----------------------------------------------- -- 
                            if premio_reset == 1 then --
                                setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem
                            end --
                            ----------------------------------------------- --
                            
                        else
                            doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                            addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                        end
                    end 
                end 
            else
                doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
                doSendMagicEffect(position, 2)
				addEvent( function() doCreateMonster(monster_name, monster_pos) end, 10)
            end
        else
            doPlayerSendCancel(cid,"O sistema está desativado")
			addEvent( function() doCreateMonster(monster_name, monster_pos) end, 10)
        end 
    else
        doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
        doSendMagicEffect(position, 2)
        addEvent( function() doCreateMonster(monster_name, monster_pos, true, true) end, 10)
		return true
    end
end

------------------------- por pc98

function additem(cid,premio,premio_cont,premio_reset)
    
    if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
        doPlayerAddItem(cid, premio,premio_cont)
        doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
        if premio_reset == 1 then
            setPlayerStorageValue(cid,storages[1],0)
        end
        stopEvent(additem)
    else
        doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
        addEvent(additem,10000,cid)
    end
end

------------------------- por pc98
function isPlayerGuild(cid)
    if getPlayerGuildName(cid) ~= "" then
        return TRUE
    else
        return FALSE
    end
end

OBS: Tem 2 variáveis para você editar no script.

local monster_name = "Crystal"
local monster_pos = {x = 100, y = 130, z = 7}

monster_name você só muda se mudar o nome do monstro.

 

 

adicione isso no creaturescripts.xml

<event type="kill" name="crystal" event="script" value="Xcripts/crystal.lua"/>

e adicione isso antes do último return true no login.lua, na pasta creaturescripts/scripts

registerCreatureEvent(cid, "crystal")

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

deu erro na distro

Error - CreaturesCRIPT Interface

In a timer event called from:

data/creaturescripts/scripts/crystal.lua:onkill
luaDoCreateMonster> Cannot create monster: crystal

 

ai quando mata ele nasce em um monte de lugar e fica só o type do monster sem life, sem nome

Editado por Peemello (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

Opa, erro meu.

 

 

Substitua o seu Crystal.lua do creaturescripts/scripts

function onKill(cid, target, lastHit) 
    
	if not (isMonster(target) and getCreatureName(target) == "Crystal") then
		return true
	end
	
    ------------------ Inicio das config ------------
    
    local castle_one_name = "Castle24h" -- Nome do castelo 1
    local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está ...)
    local monster_name = "Crystal"
	local monster_pos = {x = 100, y = 130, z = 7}
    
    
    -------PREMIOs I N D I V I D U A L ---------
    
    local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. 
    local premio_vezes = 15 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
    local premio = 5468 -- ID do Premio
    local premio_cont = 1 -- Quantidade do Premio
    local premio_reset = 1 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO
	
    
    -------FIM PREMIOs I N D I V I D U A L ---------
    
    
    
    
    ----------------- FIM DAS CONFIG -----------------
    
    local sto_ativ = getGlobalStorageValue(storages[2])
    position = getCreaturePosition(cid)
    
    
    if isPlayerGuild(cid) == TRUE then
        if sto_ativ == 1 or sto_ativ == -1 then
            
            guildname = getPlayerGuildName(cid) 
            guild = getPlayerGuildId(cid) 
            guild_sto = getGlobalStorageValue(storages[3])
            
            if guild ~= guild_sto then 
                setPlayerStorageValue(cid,guild_sto,guild) 
                if getPlayerStorageValue(cid,storages[1]) == -1 then
                    setPlayerStorageValue(cid,storages[1],0)
                end
                
                sto_vezes = getPlayerStorageValue(cid,storages[1]) 
                
                setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
                setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
                
                sto_vezes_total = getPlayerStorageValue(cid,storages[1])
                
                doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
                doSendMagicEffect(position, 39) 
				
				
                
                if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                        if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                            doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                            doPlayerAddItem(cid, premio,premio_cont)
                            doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                            ----------------------------------------------- -- 
                            if premio_reset == 1 then --
                                setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem
                            end --
                            ----------------------------------------------- --
                            
                        else
                            doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                            addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                        end
                    end 
                end 
            else
                doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
                doSendMagicEffect(position, 2)
            end
        else
            doPlayerSendCancel(cid,"O sistema está desativado")
        end 
    else
        doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
        doSendMagicEffect(position, 2)
    end
	return addEvent( function() doCreateMonster(monster_name, monster_pos) end, 10)
end

------------------------- por pc98

function additem(cid,premio,premio_cont,premio_reset)
    
    if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
        doPlayerAddItem(cid, premio,premio_cont)
        doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
        if premio_reset == 1 then
            setPlayerStorageValue(cid,storages[1],0)
        end
        stopEvent(additem)
    else
        doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
        addEvent(additem,10000,cid)
    end
end

------------------------- por pc98
function isPlayerGuild(cid)
    if getPlayerGuildName(cid) ~= "" then
        return TRUE
    else
        return FALSE
    end
end

Eu não coloquei pros players da guild dominante não poder atacar...

se não tiver, eles podem burlar, matando o bicho quando ele tiver pouca vida, aí vai renovar a vida, e eles vão poder monopolizar...


Pera aí...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Obrigado Caronte ♡

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo