Jump to content
×
×
  • Create New...

script [Tutorial] Básico Sobre CreatureScripts


Recommended Posts

Tutorial Básico sobre CreatureScripts

CreatureScripts = São scripts que serão ativados após uma determinada ação criada pelo monstro ou personagem. Essas ações são determinadas como funções. Existem varias funções utilizadas para a criação de creaturescripts e estas são:


onDeath(cid, corpse, killer)-- que é executada ao morrer.
onPrepareDeath(cid, lastHitKiller, mostDamageKiller) -- semelhante a onDeath.
onAttack(cid, target) -- executa ao atacar.
onCombat(cid, target) -- semelhante ao onAttack.
onLogin(cid) -- executa ao logar.
onLook(cid, thing, position, lookDistance) -- executa ao dar look.
onAdvance(cid, skill, oldLevel, newLevel) -- executa ao upar skills/levels.
onStatsChange(cid, attacker, type, combat, value) -- executa ao perder ou ganhar life/mana/condições.
onLogout(cid) -- executa ao deslogar.
onKill(cid, target, lastHit) -- executa ao matar.
onThink(cid, interval) -- executa em determinado tempo.
onJoinChannel(cid, channelId, users) -- executa ao entrar em um chat.
onReceiveMail(cid, sender, item, openBox) -- executa ao receber um parcel/carta.
onReportBug(cid, comment) -- executa ao reportar bug.

Para criar esse tipo de script, primeiramente vai na pasta data/creaturescripts/scripts e duplica um arquivo e salve com "nomedesejado";
Agora você vai determinar que função você vai precisar para criação do seu script. Para exemplo vou usar a função "onAdvance"(ao upar).
Neste exemplo, quando o player upar level 100 ele irá ganhar 1kk:

1 function onAdvance(cid, skill, oldLevel, newLevel)
   
2 if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
3      doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
4       setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
5       doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
6       doSendMagicEffect(getCreaturePosition(cid), 30) 
7   end
8   return true
9 end

Numerei as linhas para melhor entendimento, nos seus scripts vocês não devem numerar.

linha 1 = Inicio da função onAdvance, essa linha recebe algumas informações do player que upou, como seu cid, seus skills o velho level e o novo level. Obs: cid = creature id, numero de identificação do player/monstro.
linha 2 = Inicia-se um if onde verifica se o level do player é igual a 100 e verifica a storage do player . Se for verdadeiro, o script executa as linhas 3,4 e 5, senão pula direto a linha 6.
linha 3 = Adiciona 100 itens com o id 2160 ao player.
linha 4 = define a storage do player para que não pegue o premio duas vezes
linha 5 = Manda uma mensagem parabenizando o player
linha 6 = Solta o efeito de numero 30, na posição em que o player esta.
linha 7 = Finaliza a verificação do if.
linha 8 = Retorna verdadeiro. Obs: sempre é necessario ela linha no final de seu código. 
linha 9 = Finaliza a função onAdvance.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Por fim para funcionamento do seu script é necessario adicionar 2 tags:
1º- No "data/creaturescripts/creaturescripts.xml"
2º- No arquivo "data/creaturescripts/scripts/login.lua", Obs: se o script que você for fazer for de função onLogin, não precisa adicionar a segunda tag.

1º Tag: Vai em data/creaturescripts/creaturescripts.xml e cole a tag:

<event type="advance" name="QualquerNome" event="script" value="nomedesejado.lua"/> 

O type="" , será o nome da função de seu script após a palavra "on" e sempre tudo em minusculo.
O name="", use qualquer nome porem esse nome vai ser usado para registrar no script onLogin na tag2.
O value="", é o nome com qual você salvou seu script.

Agora em data/creaturescripts/scripts/login.lua, sempre antes do último return true:


registerCreatureEvent(cid, "QualquerNome") 

QualquerNome é o name que você adicionou na tag1 do creaturescripts.xml.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Acho que é isso aew, espero ter ajudado a galera que esta iniciando.smile_positivo.gif

Dica para criação de scripts:
Para melhor edição e organização use Notepad++: http://www.baixaki.c...ad/notepad-.htm

E sempre pesquise por scripts prontos e tutoriais para ter uma base.


CREDITOS:

 

JHON pelo tutorial completo!

Edited by JuuHPavani
Link to post
Share on other sites

Olha amigo, apenas dê uma incrementada em seu script, para que fique algo simples e funcional.

Exemplo:
Linha 2: if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then
Adionado a opção >=, pois eu ot com exp alta, o player pode pular do level 99 para o 101 por exemplo e também uma checagem por storage para verificar se ele já pegou a premiação, para evitar que ele fique se matando e pegando várias vezes a premiação

E por fim, colocando uma linha para atribuir o valor da storage caso ele pegue a recompensa.
setPlayerStorageValue(cid, 1234, 1)

Ficando assim o resultado:

function onAdvance(cid, skill, oldLevel, newLevel)
	if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
		doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
		setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
		doSendMagicEffect(getCreaturePosition(cid), 30)
	end
	return true
end
Edited by Bruno Minervino
Link to post
Share on other sites

 

Olha amigo, apenas dê uma incrementada em seu script, para que fique algo simples e funcional.

 

Exemplo:

Linha 2: if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then

Adionado a opção >=, pois eu ot com exp alta, o player pode pular do level 99 para o 101 por exemplo e também uma checagem por storage para verificar se ele já pegou a premiação, para evitar que ele fique se matando e pegando várias vezes a premiação

 

E por fim, colocando uma linha para atribuir o valor da storage caso ele pegue a recompensa.

setPlayerStorageValue(cid, 1234, 1)

 

Ficando assim o resultado:

function onAdvance(cid, skill, oldLevel, newLevel)
	if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
		doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
		setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
		doSendMagicEffect(getCreaturePosition(cid), 30)
	end
	return true
end

Obrigado! topico Editado. grato pela ajuda.

Edited by JuuHPavani
Link to post
Share on other sites

Tutorial aprovado e movido, obrigado por compartilhar conosco.

Sugiro que apenas revise o comentário da linha 2, pois além de checar o level, ele checa a storage também.

Link to post
Share on other sites

Tutorial aprovado e movido, obrigado por compartilhar conosco.

Sugiro que apenas revise o comentário da linha 2, pois além de checar o level, ele checa a storage também.

Ok obrigado irei alterar o tutorial, muito obrigado pelas dicas :D

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By Braveheart
      Baiak-Fantasy Site : https://www.baiak-fantasy.com/ !!! Baixe Nosso OTClient V8 Com Bot Completo !!! Baiak-Fantasy - Download - 24H ONLINE - DEDICADO NO CANADA Contando com todos os Eventos atuais: 🐱‍🚀 Zombie Event Capture the Flag Snowball War Event Battlefield Desert War Defend The Tower Fire storm Boss King Conta também com: Castle 24h Castle 48h Vip1 e Vip2 Free Area Donate SuperUp Dodge e Critical system Extra Cidade com mais houses MiniGames Sistema de !autoloot já instalado Quest Promotion 2 Npc que troca itens por EventCoins Monstros exclusivos Baiak-Fantasy - 24H ONLINE - DEDICADO NO CANADA Contando com todos os Eventos atuais: 🐱‍🚀 Zombie Event Capture the Flag Snowball War Event Battlefield Desert War Defend The Tower Fire storm Boss King Conta também com: Castle 24h Castle 48h Vip1 e Vip2 Free Area Donate SuperUp Dodge e Critical system Extra Cidade com mais houses MiniGames Sistema de !autoloot já instalado Quest Promotion 2 Npc que troca itens por EventCoins Monstros exclusivos Site : https://www.baiak-fantasy.com/ #tibia #ots #otserver #otserv #tibiabr
    • By Black Tall
      Sejam Bem Vindos ao Samebra Global!
      Olá a todos, Abriu oficial nosso servidor Samebra Global 19/04/2021, venham fazer parte do nosso servidor!
      contamos muitos sistemas proprio e com todos os update 2020:(Rascoohan Outfits, Raccoon backpack, Exotic Cave Spider cave, PiRat Mines), (Claustrophobic Inferno, Rotten Wasteland, Mirrored Nightmare, Soul War Quest).
      Update 2019: (Issavi-new city, Kilmaresh-new island, Cobra Bastion, Kilmaresh Quest-new mount), (Barren Drift, Zarganash, Brain Grounds, Netherworld), e todos os anteriores.
      contamos com um servidor completo mais não perfeito, somos uma equipe dedicada e profissional ao primeiro erro iremos corrigir o mais rapido possivel. contamos com a ajuda de todos.
      Site: http://samebra.macabraservers.com.br/Samebra/   criem suas contas que 18h vai ser uma corrida para alcansarem o top lvl e as top skill boa sorte a todos. as 100 primeiras contas ganha outfits que eles vam ter no jogo.
      Sobre o Servidor:
      Acessos Full Liberado tem alguns que precisa falar com 1 npc ou matar Bosses;
      Client Novo 12.65, login com Account e Senha Igual globa no Site Login com E-mail ta desativado;
      Cliente: 12.65, 10.0, App Mobile, Otcliente, Loucher Cliente.
      Update 2020 full 100%
      update 2019 full 100%
      update 2018 full 100%
      Host BR 100%
      Sistema P.A com beneficios 100%
      Store com bota vip e foods especiais 100%
      Novas Deep Desert;
      Bestiary 100%
      Charms 100%
      Imbuiments 100%
      Prey 98% talvez esteja faltando algumas criaturas. assim que notarem avisem para ser corrigido rapidamente.
      Venda de Chares 100% In game por comandos e pelo site.
      Hunts dos Lions 100% Indo por Edron no Campo Lions. Boss Drume Funcionando 100% so matar 3 Commander urchers e o Drume aparece.
      Boss King Zelos 100% pega missão no npc Jack em Thais mate o Zelos e Ganha o Outfits Ao reportar o Npc que matou o Zelos.
      Sistema de Points Online 100%
      Eventos Rolleta sendo 6 normal podendo usar com 1 bilhete e 2 de items raros precisando usar 10 bilhetes 100%
      Cults Bosses nas cidades de Carlin, Edron, Thais, Darashia etc Todos 100%
      Bosses Dukes 100%
      Rascoohan 80%
      Exotic Cave Spider cave 100%
      Custodian 100%
      Grave Danger Quest 100%
      Koshei The Deathless Quest 100%
      Ferumbras Ascendant 100%
      Acessos Elfs de Fogo e Gelo + Bosses Diferente todos os Dias 100%.
      Mini Bosses pelo mapa 100% os Were, Cobras, Lions, Falcons etc todos 100%.
      Novos Bosses 95% faltando apenas da Soul War.
      Boss Scarlet, Oberon, Drume todos 100% com mecanicas.
      Boss FacelessBane 100% com mecanica.
      Sistema Proprio do servidor de Npc de Taks 100%
      Issavi 100%
      Hirelings 100%
      Magias Novas 100%
      Hunt Hyenas 100%
      Novas Mounts e Outfits 100%
      Items Soul 100%
      Golden Outfit 100%
      Novas Falcons 100%
      Novas MOTA extension 100%
      Novas Deathlings 100%
      Daily Reward 100%
      Prey system 100%
      Novas Asuras 100%
      Quickloot 100%
      Exercise Training 100%
      Raids 100%
      GAZ todo final de semana 100%
      Ferumbras todo final de mes 100%
      Monstros 100%
      Trainer Offline 100%
      Trainer Online 100%
      Database Completa 100%
      War System 100%
      Acessos Liberados 100%
      Muitas correçõe.
      Balanceamento de vocações 95%
      Desejamos a todos um bom jogo e que todos se divirtam muito jogando nossos servidores.
       
    • By jenison06
      Alguem consegue adaptar sistema de contagem, o meu nao esta contando apenas no abra e msmo assim so conta 1 ball.
       
      Action ( Catch.lua)
       
      Lib (catch system.lua)
      Checatch (Talkaction)
      function onSay(cid, words, param, channel) if param == "" then return true end getBrokesIn(cid, param) return true end  
    • By KaboFlow
      Versão do Servidor: TFS - 0.3.4 Tipo de Script: actions Código: que cura metade da vida do pokémon
       
      uma poção que cura em%
      exemplo
      usar a poção cura você em 50% da vida do pokémon
    • By Haka
      alguem sabe alguma base open source com level system pra me disponibilizar ??