Difference between revisions of "0542"

From GTAMods Wiki
Jump to navigation Jump to search
m
(highlight)
 
Line 5: Line 5:
 
| syntax1    = 0542: add_property [''int''] to_property_own_stats
 
| syntax1    = 0542: add_property [''int''] to_property_own_stats
 
| p1t        = [''int'']
 
| p1t        = [''int'']
| p1d        = Property index (see below)
+
| p1d        = Property index ([[#Properties|see below]])
 
}}
 
}}
  
 
This opcode adds a property to the "Property Owned" stat ([[GXT]] key <code>PROPOWN</code>). The number of property is incremented by one and the name is added to the list of properties. Values higher than the ones in the game can be used but only the number of properties will be incremented; the property name will not show up.
 
This opcode adds a property to the "Property Owned" stat ([[GXT]] key <code>PROPOWN</code>). The number of property is incremented by one and the name is added to the list of properties. Values higher than the ones in the game can be used but only the number of properties will be incremented; the property name will not show up.
  
{|class="wikitable center-col-1"
+
== Properties ==
 +
{|class="wikitable sortable center-col-1"
 
!Id
 
!Id
 
![[SCM language III/VC definitions#PROP|Enum]]
 
![[SCM language III/VC definitions#PROP|Enum]]
Line 49: Line 50:
 
== Removing an owned property ==
 
== Removing an owned property ==
 
This supplemental code allows you to remove a property from the property owned stat. It uses Sanny Builder with [[CLEO]] for Vice City in an external script (not the main one) and tested on US v1.0.
 
This supplemental code allows you to remove a property from the property owned stat. It uses Sanny Builder with [[CLEO]] for Vice City in an external script (not the main one) and tested on US v1.0.
<syntaxhighlight lang="scm">
+
{{Pre|class=sb-code|1=
:opcode_0542_supplement
+
<span class="nl">:opcode_0542_supplement</span>
// 0@ - input param (property)
+
<span class="c1">// 0@ - input param (property index)</span>
0@ += 0xA10AFD  // base address for property owned
+
<span class="nv">0@</span> += <span class="m">0xA10AFD</span> <span class="c1">// base address for property owned</span>
05E0: 1@ = read_memory 0@ size 1 virtual_protect 0  // get status of property
+
05E0: <span class="nv">1@</span> = read_memory <span class="nv">0@</span> size <span class="m">1</span> virtual_protect <span class="m">0</span> <span class="c1">// get status of property</span>
if
+
<span class="k">if</span>
     1@ == 1  // if it is owned
+
     <span class="nv">1@</span> == <span class="m">1</span> <span class="c1">// if it is owned</span>
then
+
<span class="k">then</span>
     05DF: write_memory 0@ size 1 value 0 virtual_protect 0  // set to not owned
+
     05DF: write_memory <span class="nv">0@</span> size <span class="m">1</span> value <span class="m">0</span> virtual_protect <span class="m">0</span> <span class="c1">// set to not owned</span>
     05E0: 0@ = read_memory 0x978E08 size 4 virtual_protect 0  // get total owned
+
     05E0: <span class="nv">0@</span> = read_memory <span class="m">0x978E08</span> size <span class="m">4</span> virtual_protect <span class="m">0</span> <span class="c1">// get total owned</span>
     0@ -= 1  // decrement by 1
+
     <span class="nv">0@</span> -= <span class="m">1</span> <span class="c1">// decrement by 1</span>
     05DF: write_memory 0x978E08 size 4 value 0@ virtual_protect 0  // set total to new value
+
     05DF: write_memory <span class="m">0x978E08</span> size <span class="m">4</span> value <span class="nv">0@</span> virtual_protect <span class="m">0</span> <span class="c1">// set total to new value</span>
end
+
<span class="k">end</span>
05F6: ret 0
+
05F6: ret <span class="m">0</span>
</syntaxhighlight>
+
}}
  
 
Place this line anywhere within the external script:
 
Place this line anywhere within the external script:
<syntaxhighlight lang="scm">
+
{{Pre|class=sb-code|1=
05F5: call_scm_func @opcode_0542_supplement inputs 1 property [property]
+
05F5: call_scm_func <span class="nl">@opcode_0542_supplement</span> inputs <span class="m">1</span> property_index [int]
</syntaxhighlight>
+
}}
  
 
== Keywords ==
 
== Keywords ==

Latest revision as of 00:14, 28 November 2016

Vice City SET_PROPERTY_AS_OWNED


Description
Adds a property to the property owned stat
Syntax
0542: add_property [int] to_property_own_stats
Parameter
[int]
Property index (see below)

This opcode adds a property to the "Property Owned" stat (GXT key PROPOWN). The number of property is incremented by one and the name is added to the list of properties. Values higher than the ones in the game can be used but only the number of properties will be incremented; the property name will not show up.

Properties

Id Enum GXT key Property
0 PROP_MALIBU STPR_1 The Malibu
1 PROP_PRINTWORKS STPR_2 Print Works
2 PROP_FILMSTUDIO STPR_3 Film Studio
3 PROP_ICECREAM STPR_4 Ice Cream Factory
4 PROP_CARSHOWROOM STPR_5 Car Showroom
5 PROP_TAXICO STPR_6 Taxi Company
6 PROP_BOATYARD STPR_7 Boatyard
7 PROP_STRIPCLUB STPR_8 Pole Position Club
8 PROP_VICEPOINT STPR_9 3321 Vice Point
9 PROP_LINKSVIEW STPR_10 Links View Apartment
10 PROP_EL_SWANKO STPR_11 El Swanko Casa
11 PROP_WASHINGTON_STREET STPR_12 1102 Washington Street
12 PROP_OCEANHEIGHTS STPR_13 Ocean Heights Apartment
13 PROP_SKUMOLESHACK STPR_14 Skumole Shack
14 PROP_HYMAN_CONDO STPR_15 Hyman Condo

Removing an owned property

This supplemental code allows you to remove a property from the property owned stat. It uses Sanny Builder with CLEO for Vice City in an external script (not the main one) and tested on US v1.0.

:opcode_0542_supplement
// 0@ - input param (property index)
0@ += 0xA10AFD  // base address for property owned
05E0: 1@ = read_memory 0@ size 1 virtual_protect 0  // get status of property
if
    1@ == 1  // if it is owned
then
    05DF: write_memory 0@ size 1 value 0 virtual_protect 0  // set to not owned
    05E0: 0@ = read_memory 0x978E08 size 4 virtual_protect 0  // get total owned
    0@ -= 1  // decrement by 1
    05DF: write_memory 0x978E08 size 4 value 0@ virtual_protect 0  // set total to new value
end
05F6: ret 0

Place this line anywhere within the external script:

05F5: call_scm_func @opcode_0542_supplement inputs 1 property_index [int]

Keywords

set, add, increment, property, properties, owned, stat, statistics