Omnimaga

Calculator Community => TI Calculators => TI-BASIC => Topic started by: Halifax on August 12, 2006, 06:21:00 pm

Title: [83+ BASIC]RPG topics
Post by: Halifax on August 12, 2006, 06:21:00 pm
I am posting this topic to help people who are trying to start programming an RPG. If anyone wants to they can post their routines for NPC's, hit detection, storyline creation, engine routines, anything to help out the common person
Title: [83+ BASIC]RPG topics
Post by: Risen Phoenix on August 13, 2006, 04:19:00 am
Hmm...

Here is an NPC routine for the RPG starter kit by Tifreak8x

c1-->
CODE
ec1PROGRAM:ZCH
\\code for other checks
:If sub(Str1, T-16,1)="(omega)
\\if person is in front of you
:Then
:prgmZTALK
\\what to say
:ClrHome
:Pause Ans
\\Obviously this is not very pretty, that's your job :p. You can use the arrow keys to scroll if the text goes beyond the screen boundries.
:Output(1,1,Str1
\\returns screen to normal
:Endc2
ec2
c1
-->
CODE
ec1PROGRAM:ZTALK
:If L=1:Then
:If M=1:Then
:If T=56:"What are you doing in my house?
:If T=92:"Hello, did you see what happened yesterday on the news?
:End:End
\\this example is kind of vauge, however it checks for your exact location then saves the corresponding text to the Ans variable. If there is only one person on the screen, you can leave out the "If T=#" part.
c2
ec2
Title: [83+ BASIC]RPG topics
Post by: Halifax on August 13, 2006, 03:34:00 pm
Wow that's pretty cool, if you have any Xlib NPC routines then that would be great.
Title: [83+ BASIC]RPG topics
Post by: Dragon__lance on August 13, 2006, 04:38:00 pm
Here's how i did NPC's with Xlib.I store them their sprites in a matrix,(duh),with an extra decimal,let's say ".4".Then for collusion detection,if the decimal is ".4",it calls a subroutine which-
(1)-retrieves the data from another program,Data is in form of If/Then
(2)-Displays it to the screen via a TextDecoder.
(3)In the data,If/Then,it might modify a list to trigger an event or something.
(4)Returns

If you want any code,i'll have to dig it up ;)wink.gif
Title: [83+ BASIC]RPG topics
Post by: Halifax on August 13, 2006, 04:50:00 pm
No no that's fine I can make my own code thanks a lot thought
Title: [83+ BASIC]RPG topics
Post by: Halifax on August 13, 2006, 04:59:00 pm
O and also here's a little info. People always say use A+(K=26)->A or sumthin of that nature but really think about it. Everytime the TI runs through all that code but with the If statement it will skip the code if the condition is not true. So here's a routine. What is does is displays the character and then waits for a keypress until one is pressed then it will delete the character then it will test the getkey statements and then loop back and display the character in his new spot and basically I use this routine in all my games.

Routine 1:(i got this from xlibman's tutorial)
:While 1
//display character here
:Repeat K
:getkey->K
:End
:If K=34 or (K>=24 or K<=26):then
//delete character
:End
:A+(K=24)-(K=26->A:B-(K=25)+(K=34->B
//ti will only run over this if a key is pressed because of the if statement
:End
Title: [83+ BASIC]RPG topics
Post by: kalan_vod on August 13, 2006, 05:58:00 pm
Ok, if I understand you correctly (forgive me if I take this wrong) is that you want to skip key code or any code if it doesn't add to anything? As if, the arrows weren't pressed so I skip the code. Well it would actually slow down the program than letting it run through the key code. And with the code posted, it would be quicker and smaller to do:
Routine 1:(i got this from xlibman's tutorial)
c1-->
CODE
ec1:While 1
:For(I,1,0,-1
:real(1,Spr_X,Spr_Y,Spr_Width,SprHeight,sPIC_Num,sPIC_X,sPIC_Y,Spr_Method,Spr_Flip,I
:End
:Repeat Ans
:getkey->K
:End
:A+(Ans=24)-(Ans=26->A:B-(K=25)+(K=34->B
:Endc2
ec2
To me what you are saying isn't matching up to what code you posted (I know you said it's kevins code, but I am getting mixed messages with your posted). I hope this helped?
Title: [83+ BASIC]RPG topics
Post by: Dragon__lance on August 14, 2006, 05:18:00 am
Do you mean xlibman's GS tutorial? I think itd be faster to just let the key detection loop run through,(agree with kalan_vod) ;)wink.gif
Title: [83+ BASIC]RPG topics
Post by: DJ Omnimaga on August 14, 2006, 05:42:00 am
fyi the reason why i had the getkey in a repeart or while loop is because i used grayscale in the routine, which looked crappy without the loop
Title: [83+ BASIC]RPG topics
Post by: kalan_vod on August 14, 2006, 05:44:00 am
QuoteBegin-xlibman+Aug 14 2006, 11:42 AM-->
QUOTE (xlibman @ Aug 14 2006, 11:42 AM)
fyi the reason why i had the getkey in a repeart or while loop is because i used grayscale in the routine, which looked crappy without the loop  

 Yeah, I just thought it was old code >.>
Title: [83+ BASIC]RPG topics
Post by: Halifax on August 14, 2006, 05:44:00 am
that was just an example but i(and i think many other people have) have way more detections so I need to make sure a key is pressed cause otherwise it will run through all that code and then the getkey won't be read thus making it slower and less responsive to getkey's but yea in ur case it would be faster to just run through the code.
Title: [83+ BASIC]RPG topics
Post by: DJ Omnimaga on August 14, 2006, 05:48:00 am
i think having it ina loop make it more responsive, however its a bad idea if you are gonna have animations
Title: [83+ BASIC]RPG topics
Post by: Halifax on August 14, 2006, 06:06:00 pm
o yea ic well then what engine type do you use??
Title: [83+ BASIC]RPG topics
Post by: DJ Omnimaga on August 15, 2006, 09:40:00 am
the one you posted above, kinda, but with the actual grayscale commands scattered across the code