Ir para conteúdo

[Arquivado]Script de Sistema De Montaria


Diogo

Posts Recomendados

Fala desenvolvedores do meu XTibia!

 

O negócio é o seguinte, enquanto os designers preguiçosos super legais do XTibia não cuidam da parte de outfit do sistema, que tal trabalharmos a parte do script?

 

Dêem idéias, desenvolvam... Enfim, façam qualquer coisa aqui. As melhores idéias / scripts serão escolhidas e adicionadas ao script oficial, sendo mantidos os devidos créditos, obviamente.

 

Para começar, o sistema é o seguinte:

 

O cara fala !ride, um contador regressivo dele falando de 5 a 1 aparece.

 

Quando chegar a 0, ele transforma a outfit para a outfit de montaria e a velocidade aumenta.

 

Enquanto estiver "montado", se receber um ataque que tire vida ele sai da montaria e a velocidade volta ao normal.

 

 

Passando para a parte da programação:

 

Variáveis

local inicio_contagem = 5	  -- 5 é o default
local outfit_nova = ???		-- não sei nenhuma para o default
local aumento_velocidade = 25  -- em porccentagem - eu acho

total_aumentado  -- vai guardar quanto de velocidade foi aumentado [numericamente], para reduzir depois
outfit_inicial   -- vai guardar a outfit que o char usava antes de acontecer a troca
hp_atual		 -- guarda a quantidade de HP atual do cara para verificar se perdeu vida no ataque (não tenho certeza se é necessário)

 

Parte 1:

TalkAction para começar (!ride)

SE char tiver comprado montaria

Começar countdown (5... 4... 3... 2... 1...) visível para todos perto

SE char sofrer ataque no processo de countdown

	SE não perder dano

		Transformar outfit

		Aumentar velocidade (25%)

		CHAMAR PARTE 2

	SENÃO

		CANCELAR_MONTARIA()

	FIMSE

FIMSE

SENÃO

Mensagem de que não comprou montaria

FIMSE

 

Parte 2:

SE char for atacado

SE char perder vida

	CANCELAR_MONTARIA()

FIMSE

FIMSE

 

CANCELAR_MONTARIA()

Outift volta para a anterior

Velocidade reduzida de volta

 

 

Foi nisso que pensei, alguém tem alguma sugestão de modificação?

Editado por VaL
Link para o comentário
Compartilhar em outros sites

Isso é chamado algoritmo colega, a partir dele vamos criar o(s) script(s) do sistema de montaria.

 

Como quero que o sistema seja algo desenvolvido em conjunto com os scripters do XTibia, não irei fazer nenhum tipo de programação a menos que seja necessário.

 

Irei apenas dar idéias e coordenar o desenvolvimento.

 

No caso, estou dizendo como seria o sistema:

 

O cara fala !ride, um contador regressivo dele falando de 5 a 1 aparece.

 

Quando chegar a 0, ele transforma a outfit para a outfit de montaria e a velocidade aumenta.

 

Enquanto estiver "montado", se receber um ataque que tire vida ele sai da montaria e a velocidade volta ao normal.

 

É isso =]

Link para o comentário
Compartilhar em outros sites

Muito Bom , Se Foçe Scripter (Quero Ser) Eu Ajudaria ... Mais Como Sou Um Mizero Mapper x.x" , Não Tem Como Ajuda-lo , Mais Se Conseguir E Deixar Bem Massa Colocarei No Meu Otserver ^.- :D

 

 

Atenciosamente , Critical

Link para o comentário
Compartilhar em outros sites

@Kaonic

Isso é demais para sua cabeça, não que você seja burro.

Mas é melhor você não entrar nessa parte ou você pode ficar MUITO confuso.

 

@Tópico

Estou vendo uns scripts aqui em outro fórum e acho que é possivel adaptalos.

Quando eu terminar de ver aqui vou ver se é realmente possivel.

Abraços.

Link para o comentário
Compartilhar em outros sites

@KaKiLo

 

Não iremos adaptar scripts de outros fórums, um sistema desses é tão fácil que não vale a pena a dor de cabeça sobre ripping / plágio que uma modificação inocente pode causar depois.

Link para o comentário
Compartilhar em outros sites

hm achei bom do jeito que você fez

Eu sei muito pouco de c++

 

+ não ficaria melhor em c++ do que em lua ?

 

A ultima vez que entendia uma source era na 7.92 e na epoca era + facil codificar lá do que em lua

 

(até porque o zorzin sabia + c++ do q eu sabia de lua)

 

 

Agora vou explicar pq em c++

 

Tipo antigamente quando se metia um while de grande tempo no caso dele apanhar

O ot travava e dava uns lag lgl...

 

Só prescisamos checar isso agora...

 

Essa quarta é a ultima prova do trimestre ai eu vejo se dou uma mão

Link para o comentário
Compartilhar em outros sites

Opa!

 

Realmente, loops infinitos engolem o processador do PC, maaaaas...

 

Não é possível fazer sem while?

 

Tipo, como funciona a função registerCreatureEvent(uid, eventName) ?

 

Poderíamos também usar a addEvent(callback, delay, ...), para evitar whiles.

 

E a onThink(), só pode ser usada em NPCs ou tem como usar em scripts para players também?

 

Não existe nenhuma forma de manipular todos os eventos que acontecem com um jogador (tipo, AO SER ATACADO)?

 

Eu quero evitar ao máximo ter que editar as sources do OTServ para que qualquer um possa usar o sistema de montarias sem dificuldades.

Editado por VaL
Link para o comentário
Compartilhar em outros sites

eh da pra fazer sem...

 

Eu to muito por fora dessas novas creature scripts

 

No caso ai fariamos uma talk action

 

O problema é saber quando ele tomar dano =~

 

acho que creature events não tem esse comando e do mesmo jeito acho que teria que usar um loop o0

 

Uma coisa que pode funcionar é olhar as novas spells... pode ser q haja alguma função lá :p

Link para o comentário
Compartilhar em outros sites

Cara, ta bem bom isso...

fiquei sabendo que o global tem como andar de cavalo! verdade ???????? O_O

 

mas to loquin pra esta outfit sair logo :D

 

Andar á Cavalo??

 

Onde ouviu isto??

Que locura!!

Link para o comentário
Compartilhar em outros sites

VAL

 

TalkAction para começar (!ride)

 

SE char tiver comprado montaria

 

Começar countdown (5... 4... 3... 2... 1...) visível para todos perto

 

SE char sofrer ataque no processo de countdown

 

SE não perder dano

 

Transformar outfit

 

Aumentar velocidade (25%)

 

CHAMAR PARTE 2

 

SENÃO

 

CANCELAR_MONTARIA()

 

FIMSE

 

FIMSE

 

SENÃO

 

Mensagem de que não comprou montaria

 

FIMSE

 

 

Gostei muito da construção do seu Algoritmo ;)... mais podemos tentar reduzir em apenas 1 script.

 

Dificil, mais n impossivel xD...

 

 

TalkAction Declare_Inicio (!ride)

 

SE char tiver comprado montaria

 

Começa a contagem ("5... 4... 3... 2... 1...") visível para todos perto

 

SE char sofrer ataque no processo de contagem

 

SE char perder vida

 

INICIO

 

CANCELAR_MONTARIA()

 

CASO_CONTRARIO(Senao/Else)

 

Transformar outfit

 

Aumentar velocidade (25%)

 

FIMSE

 

FIMSE

 

SENÃO

 

Mensagem de que não comprou montaria

 

FIMSE

 

 

Eu apenas revisei o script e criei um novo algoritmo com base nos scripts. O seu está muito melhor em relação a programação, pq eh como na criação de um programa, se vc fica declarando Várias VARIAVEIS vc acaba se perdendo (odeio falar de PORTUGOL) hauHAUHuah... C++ ja eh um poko mais complexo, depois que vc fica 1 ano aprendendo a linguagem PASCAL vc se perde qdo começa a usar C xD

 

abraços

Link para o comentário
Compartilhar em outros sites

@up

 

eh verdade um fica + facil...

usar um script só

 

pode usar funções diferentes

+ acho que terá que criar algo em c++ ainda

 

Agora que acabo as provas vou ver se consigo acelerar o que tenho de pendente aqui e dar uma mãozinha...

O dificil é que tenho que programar em 4 linguagens de uma vez e ainda fazer umas coisas em lua...

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

OYOY

 

Tá que o tópico tá beeeeeeeem antigo masss tem tempos que não entro aqui e vim me atualizar RERE

 

Existe algum tempo de uso da montaria ou o player sai da montaria qndo quizer?

E a montaria é permanente ou acaba quando o tempo acabar ou quando o player sair da montaria?

 

 

onThink() n tem jeito de ser usado com players mesmo não (a não ser que as coisas no otserv tenham mudado MUITO nos últimos 2 anos) :p

addCreatureEvent() até onde eu sei não tem o evento de hit (só onLogin, onLogout, onDie, onKill e onAdvance)

Então pensei, na hora de fazer o countdown vamos precisar de um addEvent né? Porquê não checar a life do player a cada número? Colocar um while ali é realmente desnecessário :p

Exemplo (bem escopo):

function countdown(tbl)
if tbl.counter == 0 then
	MONTARIA AQUI!
	RETURN
end

lifestats = getCreatureHealth(tbl.cid)
if lifestats >= tbl.life -- LEVANDO EM CONTA HEALS
	tbl.life = lifestats -- EVITAR QUE O PLAYER LEVE HEAL DE SUPONHAMOS 100
				 -- E LEVE DANO DE 50 E CONTINUE O COUNTDOWN
	doSendMagicEffect(getCreaturePosition(tbl.cid), TYPE)
	doCreatureSay(tbl.cid, tbl.counter .. "!!", TYPE)
	tbl.counter = tbl.counter - 1
	addEvent(countdown,TEMPO,tbl)
end
end

function onSay(cid, words, param)
SE char tiver comprado montaria
	countdown({counter=5, cid=cid, life=getCreatureHealth(cid)})
FIMSE
end

 

P.S.: fiz meio correndo, se tiver alguma coisa errada pm-me :D

e - err - desculpa, não consegui fazer sem misturar Algorítimo com AddEvent :s

Espero que dê pra intender

 

CyA!

 

P.S.: Val, parabéns pelo trabalho que vc tá fazendo aki no fórum, to pagando pal... Se precisar de alguma coisa grita ae que tamo aki qqqq

Editado por frerety
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...