Ir para conteúdo
Entre para seguir isso  
pejuge2

Creature Script Melhorado

Recommended Posts

pejuge2    1
pejuge2

Creature Script Melhorado

 

Autor: PeJuGe (Creditos: 1% Roku)

 

Versão do Tibia: 8.5+ (não testado em versões anteriores)

 

Teste: TFS cryingdamsos

 

Comentário:

[spoiler=Comentário]Vi o tópico do roku do comando /invasion (http://forums.otserv.com.br/f286/invasao-de-todos-os-bosses-129772/) e aprimorei o creature scripts, onde agora pode-se usar uma posição base, uma posição determinada e as que já haviam, sumonar no player selecionado e criar NPC. Além disso reorganizei algumas partes do script para ficarem mais *bonitas* e inseri mensagem quando a criação funciona.

 

1º Passo: Script

[spoiler=Instalação]Caso seu servidor já possua o arquivo creature em ...data/talkactions/scripts, substitua o script existente pelo novo, caso contrário crie-o na pasta indicada.

 

local access = 3
local default = {
["demon"] = {x = 94, y = 129, z = 7},
["dragon lord"] = {x = 94, y = 129, z = 7}
}

function onSay(cid, words, param, channel)    

local pos = {}    
local func = doCreateMonster
local t = {}
  for k in string.gmatch(param, "(%P+)") do
     table.insert(t, k)
  end
local effect = CONST_ME_MAGIC_RED

   if words == "/n" then
       func = doCreateNpc
   end

   if param == "" or getPlayerAccess(cid) < access then
      return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
   end

   if getPlayerByNameWildcard(t[2]) then
      pos = getCreaturePosition(getPlayerByNameWildcard(t[2]))
   elseif t[4] then 
      pos = {x = tonumber(t[2]), y = tonumber(t[3]), z = tonumber(t[4])}
   elseif default[(t[1])] and (not t[2]) then
      pos = default[t[1]]
   else pos = getCreaturePosition(cid)   
   end  

   if t[4] and tonumber(t[4]) > 15 then
      pos.z = 14
   elseif t[4] and tonumber(t[4]) < -15 then
      pos.z = -14
   end      

   local ret = func(t[1], pos, false)
   if (tonumber(ret) == nil) then
       effect = CONST_ME_POFF
       pos = getCreaturePosition(cid)
       doPlayerSendDefaultCancel(cid, (ret == false and RETURNVALUE_NOTPOSSIBLE or RETURNVALUE_NOTENOUGHROOM))
   else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, t[1] .. " summoned at position: X = "..pos.x.."; Y = "..pos.y.."; Z = "..pos.z..".")
   end

   return doSendMagicEffect(pos, effect)

end

 

2º Passo: Apenas para quem necessitou criar o arquivo

[spoiler=2º Passo]Caso você tenha criado o arquivo creature.lua na pasta ...data/talkactions/scripts abra o arquivo talkactions na pasta ...data/talkactions, e insira o conteúdo a seguir:

    <talkaction log="yes" words="/n" access="4" event="script" value="creature.lua"/>
   <talkaction log="yes" words="/m" access="4" event="script" value="creature.lua"/>

 

3º Passo: Configuração

[spoiler=Configuração]Access: Para escolher o access minimo basta modificar o número na primeira linha do script:

local access = 3

Localização Prévia: Para escolher uma posição pré determinada para determinado monstro basta fazer como no exemplo:

local default = {

["demon"] = {x = 94, y = 129, z =7},

["dragon lord"] = {x = 157,y = 135, z =7}

}

  1. Deve-se colocar o nome do monstro entre colchetes e aspas: ["nome do monstro"]
  2. Deve-se sempre colocar entre as chaves {} a localização e com x =X; y = Y; z =Z, onde as letras maiúsculas devem ser substituiadas pela posição.
  3. Com exceção do útilmo monstro deve-se utilizar ,.
  4. ["dragon lord"] é diferente de ["Dragon lord"] que é diferente de ["dragon Lord"] e diferente de ["Dragon Lord"], para sumonar na posição pré-determinada deve-se dizer exatamente como está na tabela.
  5. Os parâmetros pré-determinados também são válidos para NPCs.

 

 

4º Passo: Utilização

[spoiler=Utiização]

Criar NPC:

/n Nome do NPC
Criar Monstro na Posição Pré-Determinada:
/m Nome do Monstro
Criar Monstro na Posição de Qualquer Player:
/m Nome do Monstro,Player
Criar Monstro na Ao Lado de Quem Fala:
/m Nome do Monstro,ASDF

ASDF pode ser qualquer coisa que não seja nome de player ou o nome de si mesmo.

Criar Monstro na Posição:
/m Nome do Monstro,PosX,PosY,PosZ
É importante dizer que pode-se usar qualquer tipo de pontuação no lugar da vírgula e que nunca se deve utilizar espaços que não pertençam ao parâmetro entre sua última letra e a pontuação, sendo permitida depois da vírgula e antes do parâmetro.

 

Espero que tenham gostado e comente =D. Caso este script já existe peço desculpas.

Editado por pejuge2

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

Wow, legal :)

Dica: NÃO use string.explode!!! Aprenda patterns, é MUITO melhor!

Movido.

Compartilhar este post


Link para o post
pejuge2    1
pejuge2

Concordo que a utilização de patterns é muito melhor e eu já tinha conhecimento de como utilizá-las. Mas eu estava encontrando muitos erros no momento que fiz o script e optei por usar string.explode, mas já corrigi. OK, CONFEÇO ESTAVA COM PREGUIÇA DE CORRIGIR O SCRIPT ahuauh

 

Isto:

local t = string.explode(param, ",")

Foi substituido por isto:

local t = {}
  for k in string.gmatch(param, "(%P+)") do
     table.insert(t, k)
  end

Deste modo não preciso mudar todas as variáveis do script e pode-se usar qualquer pontuação para separação.

 

SCRIPT EDITADO

Editado por pejuge2

Compartilhar este post


Link para o post
joaokill    0
joaokill

Concordo que a utilização de patterns é melhor tambem!

Compartilhar este post


Link para o post
vione    0
vione

Uau que script :D

muito bom cara, só não curti a parte pré-determinada já, mas não deixa de ser um ótimo script.

Compartilhar este post


Link para o post
pejuge2    1
pejuge2

Bem vione, talvez você goste mais da versão 2.0 que vou lançar.

Compartilhar este post


Link para o post
Pandá s2    0
Pandá s2

Otimo topico mesmo... de Verdade so falta corrigir algunas coisas pra ficar perfect!!!!

Compartilhar este post


Link para o post
pejuge2    1
pejuge2

Que correções você sugere Panda s2?

Compartilhar este post


Link para o post
Pandá s2    0
Pandá s2

patterns bem melhor brother vai por mim

Compartilhar este post


Link para o post
pejuge2    1
pejuge2

Mas já ta com patterns O.o, não estava quando postei só. O.o

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×