Ir para conteúdo

Posts Recomendados

14y2xlc.jpg

 

 

Aplicações em OTServer

 

 

Saudações queridos alunos, até agora aprendemos o básico, a Lua pura, aonde nós tivemos uma noção do que aprender realmente. Nesta aula estaremos ensinando funções e como criar seus próprios códigos em OTServer.

 

 

divisor.png

Primeiramente irei mostar á vocês as funções [get] que em inglês significa (checar, verificar). Esses tipos de funções checam e verificam X coisa. Irei cá postar a maioria delas e como funcionam.

 

Funções [get]:

 

 

  Mostrar conteúdo oculto

 

 

Funções [is]:

 

 

  Mostrar conteúdo oculto

 

 

Funções [do]:

 

 

  Mostrar conteúdo oculto

 

 

Funções [set]:

 

 

  Mostrar conteúdo oculto

 

 

Nós temos diversos tipos de scripts que podemos criar em OTServ (Actions, Creaturescripts, Globalevents, Movements, Talkactions, etc)

 

Como começar?

 

Actions:

function onUse(cid, item, frompos, item2, topos)oufunction onUse(cid, item, fromPosition, itemEx, toPosition)

 

cid:
CreatureID (Monsters, NPCS, Players);

item:
O item que iremos clicar, podemos informar ele no script ou no .xml;

frompos:
Na posição que estou clicando;

item2:
Items com use with...

topos:
Para a posição;

 

Creaturescripts:

function onLogin(cid)function onLogout(cid)function onDie(cid)function onDeath(cid, corpse, killer)function onAdvance(cid, skill, oldlevel, newlevel)function onAttack(cid, target)function onCombat(cid, target)function onLook(cid, thing, position, lookDistance)function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)function onKill(cid, target, lastHit)function onTextEdit(cid, item, newText)function onStatsChange(cid, attacker, type, combat, value)

 

corpse
: Corpo ao morrer;

killer:
Quem matou;

target:
Quem o cid atacou;

lastHitKiller:
O último a hitar;

mostDamageKiller:
O que mais hitou;

lastHit:
O valor do último hit;

attacker:
Quem atacou o cid;

 

 

Globalevents:

function onThink(interval, lastExecution, thinkInterval)function onTimer()

Movements:

function onEquip(cid, item, slot)function onDeEquip(cid, item, slot)function onStepOut(cid, item, pos)function onStepIn(cid, item, pos)function onAddItem(moveitem, tileitem, pos)function onRemoveItem(moveitem, tileitem, pos)

 

item: O item que o cid equipou / desequipou ou andou em cima;

 

 

 

 

 

 

Talkactions:

function onSay(cid, words, param)

 

words:
Palavras ditas;

param:
Parâmetros das palavras;

 

Explicações:

callbacks -- Nome das funçõesExemplos: onSay, onKill. parameters ou parâmetros -- São tudo que vem depois do callback e entre ( e ).Exemplos: (cid, item)

Criandos os scripts:

 

Primeiramente, devemos saber oque queremos fazer. Se vamos clicar em algo (actions), se vamos falar (talkactions), se vamos colocar / retirar items ou andar (movements), entre outros. Digamos que iremos criar um actions:

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

Agora queremos adicionar ao script, uma verificação. Caso o player tenha level maior que 300, ele irá healar toda sua health e mana:

function onUse(cid, item, frompos, item2, topos)    if getPlayerLevel(cid) >= 300 then    doCreatureAddHealth(cid, 100000)    doCreatureAddMana(cid, 100000)endend

Utilizando operadores relacionais verificamos se o level do cid (player), é 300 ou maior. E assim, adicionar mana e health.

 

 

 

divisor.png

 

Exercícios para casa:

 

1º Exercício: Tente criar um item que ao clicar, me dê 100gps.

2º Exercício: Faça oque puder com oque aprendemos, tente utilizar 10 funções.

3º Exercício: Escolha um script qualquer na internet, e explique ele completo.

Editado por victorfasano
Link para o comentário
https://xtibia.com/forum/topic/220265-aula-7-aplica%C3%A7%C3%B5es-em-otserver-parte-1/
Compartilhar em outros sites

get-verbo: obter, conseguir, receber, adquirir, ganhar, arranjar, comprar, atingir, procurar, ir buscar,

aprender, compreender, ter de, apurar, vir a ser, ser obrigado a, tornar-se.

 

nao vi nd ae de 'checar/verificar' uahauh mas blz...

 

achu q uma parte ali bugo nos quote e code kk' e achu q seria bom dizer q os parametros das funçoes principais ali podem ser qlqr coisa... soh oq realmente importa eh a ordem deles... ;p

Editado por Slicer

Tentei fazer um Script na qual o Player ao usar o item, ganha um item dependendo de seu level.. acho que pode funcionar..

 

  Mostrar conteúdo oculto

 

Editado por victorfasano

/\ na verdade o correto seria isso...

function onUse(cid, item, itemEx, fromPos, toPos)
   if getPlayerLevel (cid) <= 45 then
      doPlayerRemoveItem(cid, 2342, 1)
      doPlayerAddItem (cid, 7834, 1)
      doPlayerSendTextMessage(cid, "Você ganhou 1 Fire Stone!")
   elseif getPlayerLevel(cid) >= 46 then
      doPlayerAddItem(cid, 7834, 2)
      doPlayerRemoveItem(cid, 2342, 1)
      doPlayerSendTextMessage(cid, "VocÊ ganhou 2 Fire Stones!")
   end
return true
end

perceba q no seu, soh players lvl 45- ganhariam a stone... pois o if dos lvls 46+ nunca iria ser executado, ja q ele estava dentro do if dos lvls 45-...

Editado por Slicer

Slicer, na verdade, a sua correção também está uma parte errada.

doPlayerRemoveItem(cid, 2342, 1)

isso só vai remover o item caso ele esteja com o player.

tente doRemoveItem(item.uid)

 

isso fará remover mesmo se estiver no chão.

(sei que vc sabe disso, mas só estou respondendo para que, quem for ler a correção, entender que um script deve ser pensado com possibilidades de bugs ao ser feito :p )

 

 

 

edit: a é, esqueci de falar... parabens Roksas pela criação dos tutoriais... eu não frequento muito mais fóruns de tibia, entrei hoje aqui e vi muita coisa nova no XTibia, inclusive essa seção de aulas, que adorei a ideia e a iniciativa sua de ensinar as pessoas.

parabens.

Editado por DrakyLucas

Muito bom Roksas!

Está bem completo, porém acho que você poderia adicionar, ainda, os comentário nas funções para actions, globalevents, talkactions e etc., assim como você fez na lista de funções get, set, do e is. Apesar de ser de fácil tradução, eu senti falta disso quando era iniciante.

 

Parabéns! Digno de REP+!

  Em 02/09/2013 em 12:37, GustavoCastilho disse:

Muito bom Roksas!

Está bem completo, porém acho que você poderia adicionar, ainda, os comentário nas funções para actions, globalevents, talkactions e etc., assim como você fez na lista de funções get, set, do e is. Apesar de ser de fácil tradução, eu senti falta disso quando era iniciante.

 

Parabéns! Digno de REP+!

Amigo eu faço parte da escolinha e sou um desses aprendizes e o Roksas ainda irar explicar as funções que estão faltando, só estamos dando tempo para o pessoal termina as atividades para que as próximas sejam passadas. wink.png

Editado por infernity

@Slicer Dá pra encurtar esse script e corrigir o que o DrakyLucas falou:

function onUse(cid, item)
	if getPlayerLevel(cid) <= 45 then
		doRemoveItem(item.uid)
		doPlayerAddItem(cid, 7834, 1)
		doPlayerSendTextMessage(cid, "Você ganhou 1 Fire Stone!")
		else
		doPlayerAddItem(cid, 7834, 2)
		doRemoveItem(item.uid)
		doPlayerSendTextMessage(cid, "VocÊ ganhou 2 Fire Stones!")
	end 
	return true
end

@Roksas Achei um erro na aula 6, da uma olhada la

Gente estou começando agora e queria saber se vocês podem me ajudar com o seguinte script:

 

 

function onUse(cid, item, frompos, item2, topos) -- Ainda não entendi quando e qual usar
	if getPlayerMagLevel(cid) == 24 then
		doPlayerSendTextMessage(cid, "Hmmm... Boiola")
	if getPlayerMagLevel(cid) == 25 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o Buff Kienzan")
	if getPlayerMagLevel(cid) == 50 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o buff Flash")
	if getPlayerMagLevel(cid) == 70 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o Buff Punch")
	if getPlayerMagLevel(cid) == 80 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o buff Explosion este e o seu ultimo Buff")
	if getPlayerLevel(cid) == 250 then
		doPlayerSendTextMessage(cid, "Voce ja esta preparado para fazer a Reborn Quest junte a sua party e DIVIRTA-SE")
			doPlayerAddItem(cid, (não sei ainda qual o ID do item), 2)
				doBroadcastMessage(getCreatureName(cid)..'ESTA PREPARADO PARA FAZER A REBORN QUEST')
		end
	return true
	end
 
Editado por cmgabriel

@cmgabriel

Ta errado esse script, não funcionaria, o correto seria assim:

function onUse(cid, item, frompos, item2, topos)
	if getPlayerMagLevel(cid) == 24 then
		doPlayerSendTextMessage(cid, "Hmmm... Boiola")
		elseif getPlayerMagLevel(cid) == 25 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o Buff Kienzan")
		elseif getPlayerMagLevel(cid) == 50 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o buff Flash")
		elseif getPlayerMagLevel(cid) == 70 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o Buff Punch")
		elseif getPlayerMagLevel(cid) == 80 then
		doPlayerSendTextMessage(cid, "Voce ja pode usar o buff Explosion este e o seu ultimo Buff")
		elseif getPlayerLevel(cid) == 250 then
		doPlayerSendTextMessage(cid, "Voce ja esta preparado para fazer a Reborn Quest junte a sua party e DIVIRTA-SE")
		doPlayerAddItem(cid, itemid, 2)
		doBroadcastMessage("ESTA PREPARADO PARA FAZER A REBORN QUEST")
	end
end 

Pra entender seu erro leia a aula 4, e pra entender o que as functions fazem leia a aula 7.

Editado por WillOliveira
  • 4 months later...

Roksas Voce Errou Ali

 

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

    if getPlayerLevel(cid) >= 300 then
    doCreatureAddHealth(cid, 100000)
    doCreatureAddMana(cid, 100000)
end

end

Voce Falou Que Cura Toda A HP E MP Do Player E Esta Errado Pq Se É Um Ot De Exp Alta Provavelmente O Player Tera Mais Do Que 100K De Life Entao Nao Curará Toda A Hp, O Certo Seria

 

doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) 
doCreatureAddMana(cid, getCreatureMaxMana(cid))
Shadownzinho
×
×
  • Criar Novo...