Groupe officiel du site communautaire français de Project Zomboid. (projectzomboid.fr)

Post news Report RSS Des nouveaux exemples de script LUA

De nouveaux exemples de scripts LUA et un récapitulatif des news flash.

Posted by on

Comme il est dit plus haut, lemmy101 s'est lancé dans des exemples de scripts en LUA divers et variés, actuellement il y a seulement un exemple de script sur l'ia.

Lemmy101 nous montre un code qui remplace complètement l'ia des zombies (et qui les fait tourner en rond), il dit aussi que le code peut-être la base d'un système d'ia beaucoup plus complexe pour les zombies et les survivants.

Voilà le code en question "Zombie AI": (Le code et commenté en anglais)

-- This makes sure the zombie is in our new state

function ZombieUpdate ( zombie )

-- check if the zombie's current state is lua state

if zombie : getCurrentState ( ) ~= LuaState : instance ( ) then

-- if not, then set it to that state. Zombie will therefore not be processing wander / pathfind code any more and

-- we can override the behaviour.

zombie : changeState ( LuaState : instance ( ) ) ;

-- lock the zombie's state machine so the game code can't change it.

zombie : setLockStates ( true ) ;

end

local data = zombie : getModData ( ) ;

-- If we have no lua state selected then set the default to spin...

if data . state == nil then

data . state = "WalkInCircles" ;

data . spinTimer = ZombRand ( 30 ) ; -- set timer randomly so zombies are all offset.

end

end

-- Function to make zombie turn anticlockwise one compass direction per second, and walk forward.

function DoWalkInCircles ( zombie , data )

data . spinTimer = data . spinTimer - 1 ;

-- if timer ticks down to zero (one second, non frame comp)

if data . spinTimer <= 0 then

data . spinTimer = 30 ;

local dirIndex = zombie : getDir ( ) : index ( ) ; -- get the # index for the current direction.

zombie : setDir ( dirIndex + 1 ) ; -- set the current direction to the index + 1 (N -> NW, E -> NE etc)

end

local dirToMove = zombie : getVectorFromDirection ( ) ;

dirToMove : setLength ( zombie : getPathSpeed ( ) ) ;

zombie : Move ( dirToMove ) ;

end

-- Called once per frame when zombie is in LuaState. Here we can call the relevant behaviour.

function AIStateExecute ( zombie )

local data = zombie : getModData ( ) ;

-- Check all possible states and call relevant function to deal with them.

if data . state == "WalkInCircles" then

DoWalkInCircles ( zombie , data ) ;

elseif data . state == "SomethingElse" then

--DoZombieSomethingElse(zombie);

end

end

-- Since we're locking the state to force the zombie to stay in our state at all times,

-- we need to undo this if the zombie is knocked back or killed.

-- Here we check what state the zombie is in and unlock the state machine if we need to.

function ZombieStateChange ( owner , newState , oldState )

if owner : getObjectName ( ) == "Zombie" then

owner : setLockStates ( false ) ;

end

end

end

Events . OnAIStateChange . Add ( ZombieStateChange ) ;

Events . OnZombieUpdate . Add ( ZombieUpdate ) ;

Events . OnAIStateExecute . Add ( AIStateExecute ) ;


Résultat en vidéo:

C'est tout ce qu'il y a pour le moment, mais c'est déjà pas mal, les moddeurs qui ont une petite expérience en LUA peuvent avoir une idée de comment faire les scripts pour la futur mise à jour.

J'en profite aussi pour faire le point sur les dernières news flash de ces derniers jours.

Dernièrement, CapitainBinky a posté une image sur son twitter où l'on voit une maison, qui provient des
nouvelles zones de la map, ayant non seulement de nouvelles textures mais aussi un toit !

User Posted Image
Ce qui veut dire aussi que les bâtiments des anciennes zones auront aussi un toit qui leur est propre.

Sur le forum d'Indiestone, Binky a posté un message à propos du futur du cycle jour/nuit:
grâce au contenu de la MaJ, les devs peuvent ralentir un peu plus le temps pour que vous puissiez mieux gérer vos journées. Notons aussi qu'à chaque nouvelle Maj, le temps ralentira progressivement.

Un petit pas pour les fans, un grand pas pour la communauté de Project Zomboid !
Un fan-film a récemment été publié sur Youtube pour rendre hommage au jeu.

Oh bien sûr, on peut regretter de voir quelques erreurs comme ouvrir une porte fermée à clé avec son fusil (la chance !). Mais l'important, c'est que le réalisateur/acteur a su respecter l'esprit du jeu et son ambiance !
Et ce n'est que le début ! Je ne serais pas étonné de voir d'autres fan-films ou parodies de Project Zomboid dans les semaines et mois à venir.

Et enfin,comme vous l'avez remarquez un étrange compteur a envahi notre site ! Ce compteur est en fait lié aux tâches restantes que les devs doivent finir avant de sortir la Mise à Jour !
Pour le moment, le rythme est assez régulier : depuis avant-hier, les devs ont fait deux tâches par jour. Mais cela ne veut rien dire puisque les devs précisent que quelques tâches sont plus difficiles (et longues) que d'autres.
La preuve, hier seulement une seule tâche a été finie.
Prions quand même pour que le rythme reste stable!

Et souvenez vous que Indiestone et Project Zomboid France ne seront en aucun cas responsables de votre crise cardiaque lorsque vous verrez un GROS "0" sur le compteur !

Avant de finir, j'ai aussi une bonne nouvelle à vous annoncer :

Un concours aura bientôt lieu sur ce site où vous pourrez gagner une à plusieurs clés desura de Project Zomboid !
Cela serait une bonne occasion de faire découvrir ce jeu prometteur à vos amis, non ? :)

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: