Ir para conteúdo

Suggestname - monster system - programando c++ opentibia


BananaFight

Posts Recomendados

 

Fala galera, eu resolvi criar esse sistema aonde os montros tem seu dano / defesa / vida definidos pelo level / atributo que são configurados no XML, e eu fiz esse sistema em stream para mostrar um pouco de como trabalhar nas source do TFS 1.2, no sistema trabalhamos editando o MonsterType, Monster, Combat e a estrutura do xml dos monsters, é bastante conteúdo e vale apena conferir, uma boa fonte de aprendizado.

 

 

 

 

 

LINK DO REPOSITÓRIO COM A VERSÃO APRIMORADA DOS SISTEMAS:

 

 

https://bitbucket.org/eduardovicente/pokemo-new-era

 

 

 

 

 

Video

 

 

Essa é uma versão resumida e com uma melhor qualidade no audio - 

 

 

 

 

 

Playlist passo a passo Criando na hora. [ 13 vídeos ] - 

 

 

 

 

 

Imagens

 

 

 

 

 

abb35deda3ed4a35a5bd8112379a2100.png

 

 

 

 

c0Rk1o9.png

 

 

 

 

MrVnEab.png

 

 

 

 

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

Em 17/05/2016 at 09:07, rohfagundes disse:

muito bom parabens =):

desse seu jeito de explicar da para fazer em qualquer versão

aqui msm eu fiz no otx q é baseado na tfs 0.3.7

 

 

Fico muito feliz que tenha conseguido entender tudo que eu fiz no vídeo, e esse é meu objetivo, transmitir conhecimento para a edição da source, não só mostrar como é feito, mas sim ensinar passo a passo de como fazer, para que mesmo em condições diferentes ( como no seu caso é a source é 0.3 e eu fiz na 1.2 ) quem assista o vídeo consiga atingir o resultado final.

 

Tentei transmitir como eu crio meus sistemas, e fazer com que mais pessoas se tornem capacitadas para criar seus próprios sistemas.

 

Essa é uma versão 2.0 do meu sistema.

Adicionei os status do monstro que são usados para calcular a vida, dano e defesa dele com base nos atributos

Os calculos para definir os monstros:

 

(level = random(levelMin, levelMax))

(attribute = attributeBase * level)

(status = statusBase * attribute)

 

(health / healthMax = status.resistence)

(damage = baseDamage + (status.attack / 5))

(defense = baseDefense + (status.defense / 5))

 

A experiencia que ganha quando mata um monstro é multiplicada pelo level dele, ou seja, matar monstros de leveis mais alto rende mais exp.

 

Removi as magias de defesa, e adicionei as magias passivas ( ou seja, são soltas pelos monstros apenas durante combate e de forma aleatória )

 

E agora as magias dos monstros são configuradas unica e exclusivamente no spells.xml

<?xml version="1.0" encoding="UTF-8"?><monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="280" manacost="0">	<look type="35" corpse="5995" />	<spawnLevel min="50" max="120" />	<attributes attack="2" defense="1" resistence="1"/>	<status attack="10" defense="5" resistence="82" />				<targetchange interval="4000" chance="20" />	<attacks>		<attack word="m1" name="Berserk" interval="5000" chance="20" min="-150" max="-250"/>	</attacks>	<passives>		<passive name="Ultimate Healing" interval="10000" chance="5" min="180" max="250"/>				<passive name="Strong Haste" interval="5000" chance="25" speedchange="320" duration="5000"/>	</passives>	<flags>		<flag summonable="1" />		<flag attackable="1" />		<flag hostile="1" />		<flag illusionable="0" />		<flag convinceable="1" />		<flag pushable="0" />		<flag canpushitems="1" />		<flag canpushcreatures="1" />		<flag targetdistance="1" />		<flag staticattack="70" />		<flag runonhealth="0" />	</flags>	<elements>		<element physicalPercent="30" />		<element deathPercent="30" />		<element energyPercent="50" />		<element earthPercent="40" />		<element icePercent="-10" />		<element holyPercent="-10" />	</elements>	<immunities>		<immunity fire="1" />		<immunity drown="1" />		<immunity lifedrain="1" />		<immunity paralyze="1" />		<immunity invisible="1" />	</immunities>	<summons maxSummons="1">		<summon name="fire elemental" interval="2000" chance="10" />	</summons>	<voices interval="5000" chance="10">		<voice sentence="Your soul will be mine!" />		<voice sentence="MUHAHAHAHA!" />		<voice sentence="CHAMEK ATH UTHUL ARAK!" />		<voice sentence="I SMELL FEEEEAAAAAR!" />		<voice sentence="Your resistance is futile!" />	</voices>	<loot>		<item id="2148" countmax="100" chance="60000" /><!-- gold coin -->		<item id="2148" countmax="99" chance="60000" /><!-- gold coin -->		<item id="2152" countmax="6" chance="100000" /><!-- platinum coin -->		<item id="2795" countmax="6" chance="20740" /><!-- fire mushroom -->		<item id="8473" countmax="3" chance="20000" /><!-- ultimate health potion -->		<item id="7590" countmax="3" chance="14285" /><!-- great mana potion -->		<item id="2387" chance="14285" /><!-- double axe -->		<item id="2149" chance="10000" /><!-- small emerald -->		<item id="7368" countmax="5" chance="5263" /><!-- assassin star -->		<item id="2432" chance="3703" /><!-- fire axe -->		<item id="2151" chance="3571" /><!-- talon -->		<item id="2176" chance="2854" /><!-- orb -->		<item id="2393" chance="2000" /><!-- giant sword -->		<item id="2418" chance="1428" /><!-- golden sickle -->		<item id="2165" chance="1333" /><!-- stealth ring -->		<item id="2462" chance="1204" /><!-- devil helmet -->		<item id="1982" chance="1190" /><!-- purple tome -->		<item id="2179" chance="1010" /><!-- gold ring -->		<item id="2171" chance="813" /><!-- platinum amulet -->		<item id="2396" chance="666" /><!-- ice rapier -->		<item id="2520" chance="649" /><!-- demon shield -->		<item id="2214" chance="473" /><!-- ring of healing -->		<item id="5954" chance="467" /><!-- demon horn -->		<item id="2470" chance="413" /><!-- golden legs -->		<item id="2514" chance="389" /><!-- mastermind shield -->		<item id="2164" chance="170" /><!-- might ring -->		<item id="2472" chance="70" /><!-- magic plate armor -->		<item id="7393" chance="100" /><!-- demon trophy -->		<item id="7382" chance="80" /><!-- demonrage sword -->	</loot></monster>

 

Link para o comentário
Compartilhar em outros sites

Show msm
quando eu fiz aqui eu coloquei para ganhar mais exp(de acordo com o level), speed, armor e tinha mexido na parte de drop para ter mais chance de drop
porem eu tirei o sistema do ot por causa de um problema com outro sistema

eu tenho uma ideia aqui sobre um sistema q n sei se executei certo e uma outra ideia q n sei como executar

se vc tiver tempo e quiser me ajudar eu te explico o q fiz aqui
 

Link para o comentário
Compartilhar em outros sites

 

Continuo melhorando o código cada vez mais, agora fiz com que as magias tenham seu dano calculado direto dentro do spells, ele retorna o monstro, level e os status dele.

 

 

 

 

 


local combat = Combat()

combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)

combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_BLOCKHIT)

combat:setArea(createCombatArea(AREA_CIRCLE3X3))

 

function onGetFormulaValues(monster, level, attack, defense, resistence)

local min = (level / 5) + (attack * 1.2) + 7

local max = (level / 5) + (attack * 2.85) + 16

return -min, -max

end

 

combat:setCallback(CALLBACK_PARAM_MONSTER, "onGetFormulaValues")

 

 

function onCastSpell(creature, variant)

return combat:execute(creature, variant)

end

 

 

 

 

Só para ficar mais fácil de ver o level

 

 

LS1FjYD.png

 

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

FICOU INSANO!!!

 

Essas atualizações e melhorias que você faz estão disponíveis no vídeo também?
 

Parabéns pelo sistema muito criativo e útil para novas jogabilidades, abre uma infinidade de opções.

 

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
Em 22/05/2016 at 15:19, lucashgas disse:

FICOU INSANO!!!

 

Essas atualizações e melhorias que você faz estão disponíveis no vídeo também?
 

Parabéns pelo sistema muito criativo e útil para novas jogabilidades, abre uma infinidade de opções.

 

 

Como eu não fiz um videos fazendo elas, vou postar o meu repositório para quem quiser olhar e baixar a vontade:

 

https://bitbucket.org/eduardovicente/pokemo-new-era

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...