Quantcast

Jump to content

» «
Photo

Custom Ingame menu

27 replies to this topic
PatrickW
  • PatrickW

    GTA Juggernaut

  • Moderator
  • Joined: 07 Jan 2004
  • Netherlands

#1

Posted 29 June 2005 - 01:28 AM Edited by PatrickW, 20 August 2005 - 05:25 AM.


This posting will present all the new opcodes to create ingame menu's

I've coined the name "panel" for these things, as they are not only used to display ingame menu's (like in ammunations, mod-chops ) but also to display static/dynamic information ( e.g. during missions).

A panel consists of one or more columns of information, and can contain upto 12 rows of data.

Here's a screen from a custom menu ( still needs some good texts) that I'm working on for my new mod:
user posted image

Here's a listing of all the opcodes involved in panels:

08d4=9, Create_panel
param 1: title, displayed in the SA font at the top of the panel
param 2: left panel position ( for some reason a float)
param 3: top panel position ( for some reason a float)
param 4: width ( for some reason a float)
param 5: number of columns
param 6: interactive-flag, if set the panel acts as a menu, with a row selected
param 7: background-flag, panel has a dark background
param 8: default alignment of text ( 0=centre, 1=left, 2=right)
param 9: handle, the created panel

08da=1,Remove_panel
param 1: handle of the panel to be removed

08db=15,Set_panel_column_data
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: column header
param 4..5: column_data

08ee=5,Set_panel_data_text1
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: row number [0..11]
param 4: column data text
param 5: column data int argument

08ef=6,Set_panel_data_text2
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: row number [0..11]
param 4: column data text
param 5: column data int argument 1
param 6: column data int argument 2

09db=3,Set_panel_column_width
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: column width ( this time it's an int )

08d6=3,Set_panel_column_alignment
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: alignment of text ( 0=centre, 1=left, 2=right)

08d9=3,Set_panel_row_enable
param 1: handle of the panel
param 2: row number [0..11]
param 3: 0->disabled, 1->enabled

090e=2,Set_panel_active_row
param 1: handle of the panel
param 2: row number [0..11]

08d7=2,Get_panel_active_row
param 1: handle of the panel
param 2: variable to receive the row number [0..11]

08d8=2,Get_panel_selected_row
param 1: handle of the panel
param 2: variable to receive the row number [0..11]


The difference between the last two opcodes, is not completely clear. the first one is used, while the "select"-key (spacebar) is still pressed, and the latter is used after it has been released again. This is how R* code uses them.

A simple example of a menu with three items
CODE

0512: permanent text box 'CLOTHA'
01B4: set player $PLAYER_CHAR frozen state  0 (frozen)
08D4: 'DNC_019' 29.0 145.0 200.0 2 1 1 1 $my_panel  
08DB: $my_panel  0 'MTOR02C' 'IE1' 'IE2' 'IE3' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  

:keywait
0001: wait  0 ms
if 0
00E1:   key pressed  0  15
jf ��test_select    
;;-------------------------
; menu aborted
;;-------------------------
08DA: $my_panel
03E6: remove text box
01B4: set player $PLAYER_CHAR frozen state  1 (unfrozen)
jump ��the_end          
:test_select
if 0
00E1: key pressed  0  16
jf ��keywait  
;;--------------------------
; item selected
;;--------------------------
08D7: $my_panel $choice
08DA: $my_panel
03E6: remove text box

; do someting useful with $choice


:the_end







DexX
  • DexX

    Black Hat

  • Feroci Racing
  • Joined: 16 May 2002

#2

Posted 29 June 2005 - 02:29 AM

excellent work patrick smile.gif

now, time to change the font of that "The master!" text... biggrin.gif

Eclipse_nl
  • Eclipse_nl

    Grand Tani Islands

  • Members
  • Joined: 11 Sep 2004

#3

Posted 29 June 2005 - 07:15 PM

Nice Patrick smile.gif ...I'm going to play with it.

Timonator
  • Timonator

    Player Hater

  • Members
  • Joined: 29 Jun 2005

#4

Posted 29 June 2005 - 07:36 PM

good work patrick i can use that:)

MrTi
  • MrTi

    Crackhead

  • Members
  • Joined: 07 Jun 2003

#5

Posted 29 June 2005 - 08:05 PM

awesome find, patrick. gonna implement this in some of my mods.

Quadropheniac90
  • Quadropheniac90

    Confused Clown

  • Andolini Mafia Family
  • Joined: 15 Feb 2005

#6

Posted 10 July 2005 - 09:46 PM

Just one question: What do you do with choice? Do I have to make an if-check like:

:Choice1
00D6: if 0
CODE: $choice == 0 (The first row)
CODE: jump_if_false Choice2
0001: wait 0 ms
CODE: create_car #BANSHEE
CODE: end_thread

:Choice2
00D6: if 0
CODE: $choice == 1 (The second row)
CODE: jump_if_false Choice3
0001: wait 0 ms
CODE: create_car #BULLET
CODE: end_thread

Etcetera...

Or something else? confused.gif

PatrickW
  • PatrickW

    GTA Juggernaut

  • Moderator
  • Joined: 07 Jan 2004
  • Netherlands

#7

Posted 10 July 2005 - 10:31 PM

QUOTE (teun.steenbekkers @ Jul 10 2005, 23:46)
Just one question: What do you do with choice? Do I have to make an if-check like:

:Choice1
00D6: if 0
CODE: $choice == 0 (The first row)
CODE: jump_if_false Choice2
0001: wait 0 ms
CODE: create_car #BANSHEE
CODE: end_thread

:Choice2
00D6: if 0
CODE: $choice == 1 (The second row)
CODE: jump_if_false Choice3
0001: wait 0 ms
CODE: create_car #BULLET
CODE: end_thread

Etcetera...

Or something else? confused.gif

That completely depends on your mod, if you only have two or three choices, your method will do, but when you get to a situation where you have more choices there are two prefered alternatives:
* Use the jumptable opcodes (0871&0872), which basicly implements a switch-statement ( as availabl in most proper programming languages:
something like this
CODE

switch($choice) {
case 0:
   jump label_for0
   break;
case 1:
   jump label_for1
   break;
case 2:
   jump label_for2
   break;
default:
   jump label_for_default
   break;
}


would lead to the following opcode:
CODE

0871: init_jump_table $choice total_jumps  3  1 label_for_default jumps  0 label_for0 1 label_for1  2 label_for2  0 -1 0 -1  0 -1  0 -1

params:
1 : switch variable
2 : number of regular cases
3 : default availalble flag (if default case is not needed, this is 0 )
4 : jump label for the default case
5 : case-value for the first case
6 : jump_label for the first case
7-18 : case-value/jump_labe; pairs for the other cases.

If there are more than 7 cases, the rest of the cases should be given in subsequent 0872: opcodes, which can hold opto 9 case-value/jump_label pairs.


* a second method of using the $choice, would be to use it as an index for an array.



Hope this helps you further...

am0n
  • am0n

    Player Hater

  • Members
  • Joined: 16 Jan 2005

#8

Posted 13 July 2005 - 05:49 AM

GTA San Andreas - MAIN.SCM Script Menu Generator (BETA1)

Quadropheniac90
  • Quadropheniac90

    Confused Clown

  • Andolini Mafia Family
  • Joined: 15 Feb 2005

#9

Posted 13 July 2005 - 07:56 AM

Thanks, am0n, that really helps!

Does the Menu Title have to be in the .gxt file?

am0n
  • am0n

    Player Hater

  • Members
  • Joined: 16 Jan 2005

#10

Posted 13 July 2005 - 08:20 AM

QUOTE (teun.steenbekkers @ Jul 13 2005, 07:56)
Thanks, am0n, that really helps!

Does the Menu Title have to be in the .gxt file?

yes smile.gif

Quadropheniac90
  • Quadropheniac90

    Confused Clown

  • Andolini Mafia Family
  • Joined: 15 Feb 2005

#11

Posted 13 July 2005 - 08:27 AM

Yay, the menu works, now I just have to get a piece of code which lets the game do something when an option is selected... Dunno how to continue the thread, do I have to change this:

CODE
:CUSTOM_MENU_6
; selected button 'OPTION1' (0)
0002: jump CUSTOM_MENU_END


to this:

CODE
:CUSTOM_MENU_6
; selected button 'OPTION1' (0)
0002: jump CUSTOM_MENU_END
0002: jump CUSTOM_MENU_CHOICE1


or something?

am0n
  • am0n

    Player Hater

  • Members
  • Joined: 16 Jan 2005

#12

Posted 13 July 2005 - 08:34 AM

QUOTE (teun.steenbekkers @ Jul 13 2005, 08:27)
Yay, the menu works, now I just have to get a piece of code which lets the game do something when an option is selected... Dunno how to continue the thread, do I have to change this:

CODE
:CUSTOM_MENU_6
; selected button 'OPTION1' (0)
0002: jump CUSTOM_MENU_END


to this:

CODE
:CUSTOM_MENU_6
; selected button 'OPTION1' (0)
0002: jump CUSTOM_MENU_END
0002: jump CUSTOM_MENU_CHOICE1


or something?


example :
CODE
:CUSTOM_MENU_6
; selected button 'OPTION1' (0)
00A1: put_actor $PLAYER_ACTOR at  428.3045 2536.698  16.37552
0002: jump CUSTOM_MENU_END

Quadropheniac90
  • Quadropheniac90

    Confused Clown

  • Andolini Mafia Family
  • Joined: 15 Feb 2005

#13

Posted 13 July 2005 - 08:37 AM

OK, thanks. Still need to sort some sh*t out...

am0n
  • am0n

    Player Hater

  • Members
  • Joined: 16 Jan 2005

#14

Posted 14 July 2005 - 04:36 PM

QUOTE (virlan2004 @ Jul 13 2005, 13:10)
Ok so what's wrong with my code? I'm a newbye at coding but i tried to do my best and still can't find whats wrong ... the game just crashes ... oh and about all those threads well i wanted to show where i put my create_thread is it there were it should be ? (MAIN) ... or is that what's wrong ... ?
Please help me
Thanks

It seems that you pasted the _whole_ code at the MAIN part of script; only 'create_thread' part belongs there, move everything else outside, ie. at the end of script.

AmonRa
  • AmonRa

    Player Hater

  • Members
  • Joined: 26 Jun 2005

#15

Posted 18 July 2005 - 03:32 PM

is it possible to create a menu with the options to type in values?
like number of ammo or even coords

PatrickW
  • PatrickW

    GTA Juggernaut

  • Moderator
  • Joined: 07 Jan 2004
  • Netherlands

#16

Posted 18 July 2005 - 06:51 PM

Nope, there is no easy data entry method for the menu, of course you could use the method used to determine the bet-amount in casino's. And there's also some data-entry code in the high-score handling of the ingame video-games, but these are very complicated to code.

AmonRa
  • AmonRa

    Player Hater

  • Members
  • Joined: 26 Jun 2005

#17

Posted 18 July 2005 - 10:15 PM

well as my father (and half of mankind) used to (and still) say little is better then nothing
thanks

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#18

Posted 15 August 2005 - 05:40 AM

QUOTE (PatrickW @ Jun 28 2005, 21:28)
09d6=3,Set_panel_column_alignment
param 1: handle of the panel
param 2: column number [0,1,2.......]
param 3: alignment of text ( 0=centre, 1=left, 2=right)

09d6=3,Set_panel_row_enable
param 1: handle of the panel
param 2: row number [0..11]
param 3: 0->disabled, 1->enabled

Uhhh... Wtf?

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#19

Posted 18 August 2005 - 09:31 PM

Maybe I wasn't clear but those two opcodes above me are wrong.

Craig Kostelecky
  • Craig Kostelecky

    GTA:LC Team Leader

  • The Connection
  • Joined: 28 Jan 2004

#20

Posted 18 August 2005 - 09:38 PM

Well, what's wrong with them? Are they incorrectly named? Or are the parameters wrong? You didn't really elaborate at all (even in your second post) about why it's wrong. dontgetit.gif

spaceeinstein
  • spaceeinstein

    巧克力

  • Members
  • Joined: 17 Jul 2003

#21

Posted 18 August 2005 - 10:17 PM

blink.gif How can you not see it?
09d6=3,Set_panel_column_alignment
09d6=3,Set_panel_row_enable
They are the same, and 09d6 has 5 params.

Un3462
  • Un3462

    Mack Pimp

  • Members
  • Joined: 27 Jun 2002

#22

Posted 18 August 2005 - 10:32 PM

in my ini i have
08d6=3,set_panel_col_alignment
08d9=3,set_panel_row_enabled
but that might be an incorrect guess.

PatrickW
  • PatrickW

    GTA Juggernaut

  • Moderator
  • Joined: 07 Jan 2004
  • Netherlands

#23

Posted 20 August 2005 - 05:28 AM

Thanks for spotting those space-einstein. cookie.gif
The ones that CyQ ( cookie.gif ) listed are indeed the correct ones..

So much for ctrl-C/ctrl-V being a handy tool suicidal.gif

I've corrected the first post..

Quadropheniac90
  • Quadropheniac90

    Confused Clown

  • Andolini Mafia Family
  • Joined: 15 Feb 2005

#24

Posted 21 August 2005 - 02:39 PM Edited by teun.steenbekkers, 21 August 2005 - 07:16 PM.

How many 'options' can the menu have?

GTASan Andreas CJ Rules
  • GTASan Andreas CJ Rules

    ARMax_King

  • Awaiting Authorisation
  • Joined: 23 Mar 2005

#25

Posted 28 August 2005 - 06:17 PM

can sum1 like explain this is in n00b format. (i can spawn cars tho)

GTASan Andreas CJ Rules
  • GTASan Andreas CJ Rules

    ARMax_King

  • Awaiting Authorisation
  • Joined: 23 Mar 2005

#26

Posted 08 September 2005 - 03:25 PM

any1

Demarest
  • Demarest

    what could be

  • BUSTED!
  • Joined: 12 Jul 2003

#27

Posted 08 September 2005 - 03:44 PM

No. It's already as simple as it can get. If that's above your coding level, then either develop your skills, get somebody to do it for you, or abandon the idea.

Of course, if you just explained which part you feel is over your head, maybe somebody would be better able to explain it. Just saying you'd like it in newbie terms doesn't get you anywhere.

Eclipse_nl
  • Eclipse_nl

    Grand Tani Islands

  • Members
  • Joined: 11 Sep 2004

#28

Posted 08 September 2005 - 07:35 PM

QUOTE (teun.steenbekkers @ Aug 21 2005, 14:39)
How many 'options' can the menu have?

11 options




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users