Author |
Message |
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Specifically random
I'm currently trying to work lua scripts that give custom units randomized parts ala ronin. One attachable (armour) is supposed to be a specific sprite depending on the randomised head (head frame 1 = armour frame 1, head frame 2 = armour frame 2). Would anyone be willing to provide an example script or to tell me how to get this done?
Last edited by omegadrace on Sun Dec 09, 2012 7:04 am, edited 2 times in total.
|
Thu Nov 15, 2012 9:03 am |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Flying units
Look here: viewtopic.php?f=75&t=31687&hilit=brainfighterYou'll need to know a bit of lua to edit it to your liking, or get help (normally this is where I'd offer to help but I'm backed up in scripts I'm doing for people already and busy in real life). The variables are pretty self explanatory though so I'm sure you'll be able to figure it out even if you don't know lua.
|
Thu Nov 15, 2012 12:57 pm |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Flying units
I just can't wrap my head around lua very well, even after looking at tutorials. Anyway, after trying that code, I'm sorry to say that it is not what I am looking for. What I want is something similar to the aco mod's gunship style of movement. I can't use that code, however, due to it belonging to someone else and the ai not moving when I set them to patrol/go-to/hunt. Nonetheless thank you for providing something.
|
Thu Nov 15, 2012 1:49 pm |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Flying units
Well you should ask him for it. I haven't looked at the script but I imagine it's fairly similar to mine, just more polished and with fancy visuals (and probably forces for more realistic movement stuff). AI is a whole other can of worms. Sorry to be the bearer of bad news but even though flying ai would probably not be too bad compared to the current ai (not to mention a lot could be scavenged) it'd be pretty time consuming and I doubt it'll be made til someone wants to make it for themselves.
And lua's not hard, it just takes time or prior programming knowledge. Keep trying, look at scripts you know the results of and try to figure out how it was done, you'll get it in no time.
|
Fri Nov 16, 2012 1:44 am |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Flying units
Ah. I could ask, but if the main mod itself doesn't have aerial ai then what hope do I have? It looks like I might have to rely on invisible legs for now.
Anyway. While yes I do have some programming experience, I don't have any with lua. And I won't anytime soon. Thank you for your time.
|
Fri Nov 16, 2012 5:18 am |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Flying units
It's possible the game's basic ai is still there and will kick in without a lua ai stuck in, in which case you might be able to get away with that. I haven't looked into that at all so I may be dead wrong. Either way, fair enough, you're welcome and good luck with whatever you're working on.
|
Fri Nov 16, 2012 7:58 am |
|
|
carriontrooper
Joined: Mon Apr 13, 2009 12:27 pm Posts: 813 Location: Yogyakarta, Indonesia. A slice o' paradise.
|
Re: Flying units
I believe Darlos9 had made a stationary flyer in his DarkStorm mod. I've used it in my Shamsy Electric Technology mod, and it works (back in B26/B27 anyways). I think the script could be modified a bit so it'll be closer to ACO though.
|
Fri Nov 16, 2012 6:01 pm |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Flying units
The longer invisible legs gave me the desired effect. Currently I can't figure out why one particular 'flying' actor isn't moving when set to patrol. If any of you guys have any idea of what might be wrong, please tell me.
|
Tue Nov 20, 2012 10:40 am |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Specifically random
First post updated with a new question.
|
Sun Dec 09, 2012 7:03 am |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Specifically random
Alright then, let me just post what I've got so far. The head: Code: function Create(self) i = math.floor(math.random()*6); self.Frame = i; end And the armour: Code: local i = require "Head" function Update(self) self.Frame = i; end The armour is still showing up as random. What am I doing wrong?
|
Wed Dec 12, 2012 5:31 am |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Specifically random
require doesn't work like that. You could perhaps require the script and have the head function return i, then set the body frame to be that returned value. However, it seems much easier to just work from actor entirely, since ahumans have the property self.Head (and limbs as well). So you could do something like this: Code: function Create(self) self.FrameNumber = math.floor(math.rand()*6); end function Update(self) if self.Frame ~= self.FrameNumber then self.Frame = self.FrameNumber; self.Head.Frame = self.FrameNumber; end end I'm not 100% sure the head property is entirely accessible though, so this might not work quite right. In that case you can either find the head attachable by yourself or put the script on the head and find the parent (the actor). There's plenty of examples of how to do this in these forums but, needless to say, post if you need more help. Also, math.rand() goes from 0 to 1 by default. However, you can give it arguments to set its range, in this case it will always return integers (e.g. neither math.rand(1,6) or math.rand(0,1) will return decimal points anywhere). As is, your method will probably result with the frame being 0 sometimes and very, very rarely being 6, since math.floor rounds down. So the former just requires the value to be less than 0.167 while the latter requires it to be exactly 1.
|
Thu Dec 13, 2012 9:49 pm |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Specifically random
I'm afraid that even though I've been trying to use return and require in the scripts, it just won't work. And the script you posted, I have no idea how to make it workable. Sorry, I'm still relatively new to lua.
|
Mon Dec 17, 2012 6:04 am |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Specifically random
Set it as the scriptpath for the actor. If you want working ai, make sure to add whatever lua bindings are necessary to also include ai.
|
Mon Dec 17, 2012 7:22 pm |
|
|
omegadrace
Joined: Sat Nov 10, 2012 3:31 pm Posts: 114 Location: Australia
|
Re: Specifically random
I don't understand what you mean by 'scriptpath for the actor'. Do you mean to set the script to be used in the ini? Because I have already tried that, with no success.
And for the ai issue I had, I solved it by putting the limbpaths back to normal. For some reason making them taller stopped the actor from even attempting to move and/or shoot on it's own.
|
Tue Dec 18, 2012 3:57 am |
|
|
Bad Boy
Joined: Fri Sep 10, 2010 1:48 am Posts: 666 Location: Halifax, Canada
|
Re: Specifically random
Assuming it's for AHumans use this, if it's for crabs or turrets use the relevant AI instead of HumanAI. And yes, I mean the scriptpath in the ini. Take the code, put in in a new lua file (i.e. a renamed text file) and have the scriptpath point to that file. Then, if it doesn't work, post up any console errors. Code: require("Actors/AI/NativeHumanAI") function Create(self) self.AI = NativeHumanAI:Create(self) self.FrameNumber = math.floor(math.rand()*6); end function Update(self) if self.Frame ~= self.FrameNumber then self.Frame = self.FrameNumber; self.Head.Frame = self.FrameNumber; end end function UpdateAI(self) self.AI:Update(self) end
|
Tue Dec 18, 2012 10:01 pm |
|
|
|