Jump to content

1,166 posts in this topic Last Reply

Highlighted Posts

Posted:
Last Online:  
 

That´s awesome my Friend!

  • Like 2
  • Thanks 1

<<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

URL: https://simforum.de/index.php?forums/18/

Oliver

Share this post


Link to post
Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     

    Learning Note about Effdir:

    It's not very hard (but tedious) to hex edit Effdir, We can get most of the definition as below:

    Spoiler
    
    Red text is updated from previous version
    Function Notes are in Blue Text
    
    ''' Vanilla is 3.1, Rush Hour is 4.2
    WORD - Major Version EFDIR 
    WORD - Minor Version EFDIR 
    
    '''Start Section #1 - Main Section - Terrain Independent FSHs and S3Ds'''
    DWORD (Number of Entries)
    	DWORD
    	DWORD (0x00000000) <<<---Constant
    	DWORD
    	DWORD <<<---Effect Duration Minimum
    	DWORD <<<---Effect Duration Maximum
    	DWORD <<<---Number Released At High Detail
    	DWORD <<<---Repeat flag (=0 runs continuously, >0 runs once)
    	DWORD
    	DWORD
    	DWORD
    	DWORD <<<---Time Delay Minimum
    	DWORD <<<---Time Delay Maximum
    	DWORD <<<---X-Axis Push Minimum
    	DWORD <<<---Z-Axis Push Minimum
    	DWORD <<<---Y-Axis Push Minimum
    	DWORD <<<---X-Axis Push Maximum
    	DWORD <<<---Z-Axis Push Maximum
    	DWORD <<<---Y-Axis Push Maximum
    	DWORD <<<---Initial Velocity Minimum
    	DWORD <<<---Initial Velocity Maximum
    	DWORD <<<---Initial X-Axis Shift Minimum
    	DWORD <<<---Initial Z-Axis Shift Minimum
    	DWORD <<<---Initial Y-Axis Shift Minimum
    	DWORD <<<---Initial X-Axis Shift Maximum
    	DWORD <<<---Initial Z-Axis Shift Maximum
    	DWORD <<<---Initial Y-Axis Shift Maximum
    	DWORD <<<---Initial Size Variation %
    	DWORD <<<---Initial X-Axis Stretch Max
    	DWORD <<<---Initial Spin Variation Max
    	DWORD
    	DWORD <<<---Initial Alpha Variation Max
    	DWORD <<<---Initial Color Variation % (Red)
    	DWORD <<<---Initial Color Variation % (Green)
    	DWORD <<<---Initial Color Variation % (Blue)
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
    		12-Byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
    	DWORD (Number of reps) <<<---Brightness Adjustments Over Time (Percentage)
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---Size Over Time (Percentage)
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---X-Axis Shrink/Stretch Over Time (Percentage)
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---Spin Over Time (Might Be Rotation Speed Spread[Randomized])
    		DWORD reps
    	DWORD (Resource Key) 
    	2 Bytes
    	DWORD
    	DWORD <<<---Direction of Travel Blur (0=none,<>0 decreasing amounts of blur)
    	DWORD <<<---X-Axis Force (Wind)
    	DWORD <<<---Z-Axis Force (Lift/Gravity)
    	DWORD <<<---Y-Axis Force (Wind)
    	DWORD <<<---Carry
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD 
    	DWORD <<<---Spiral Travel Pattern Maximum
    	DWORD (Number of reps)
    		28-byte reps
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD (usually 0xce6e6b28=-1,000,000,000)
    	DWORD (usually0x3f800000 or 0x00000000)
    	DWORD (usually 0x3f800000=1)
    	DWORD (usually 0xc61c4000=-10,000)
    	DWORD (usually 0x461c4000=10,000)
    	DWORD (String Length)
    		String (Only if String Length > 0)
    	DWORD (Usually 0x00010000)
    	DWORD (Usually 0x3f800000=1)
    	DWORD (usually 0x40a00000=5)
    	DWORD (usually 0x40a00000=5)
    	DWORD (usually 0x42480000=50)
    	DWORD (usually 0x42480000=50)
    	DWORD (usually 0x3dcccccc=0.1)
    	DWORD (usually 0x3e4ccccd=0.2)
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD
    	DWORD
    	DWORD (Number of reps) <<<---Coordinate System For Movement
    		32-byte reps <<<---8xFloat32(X,Z,Y,X,Z,Y,Sequence Number, Sequence Number)
    	DWORD
    	DWORD (Number of sub-entries)
    		DWORD (String Length)	
    		String (Only if String Length > 0)
    		DWORD
    	DWORD
    	DWORD
    	DWORD (Number of reps) <<<---List of Resource Keys (Used to place random S3Ds)
    		DWORD reps <<<---Uint32
    	DWORD
    	DWORD
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD (0x40800000) -- End of entry
    0x0001 - End of Section
    
    
    '''Start Section #2 - Terrain Dependent FSHs'''
    DWORD (Number of Entries)
    	DWORD
    	DWORD (Resource Key)
    	1 Byte <<<---Inverse Flag: 00=Normal, 01=No Inverse (i.e. hidden by obstructions), 03=Inverse (Viewed when behind obstruction)
    	1 Byte <<<---Repeat Flag:  01=Repeat Continuously, 02=Run Once-Then Disappear, 03+=Run Once-Then Hold
    	DWORD <<<---Effect Speed (Higher numbers run slower)
    	DWORD (Number of reps) <<<---Rotation Over Time
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---Size Adjustments Over Time (Percentage)
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---Alpha Adjustments Over Time (Percentage)
    		DWORD reps <<<---Float32
    	DWORD (Number of reps) <<<---Color Adjustments Over Time (Percentage of red, green, and blue)
    		12-byte reps <<<---Float32(1st DWORD=Red, 2nd DWORD=Green, 3rd DWORD=Blue)
    	DWORD (Number of reps) <<<---Always 0x00000001
    		DWORD reps <<<---Y-Axis Stretch Adjustments Over Time
    	DWORD <<<---Initial Intensity Variation
    	DWORD <<<---Initial Size Variation
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    0x0000 - End of section
    
    
    '''Start Section #3'''
    DWORD (Number of Entries)
    	DWORD
    	DWORD
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD (Number of reps)
    		DWORD reps
    	5 bytes
    0x0000 End of Section
    
    
    '''Start Section #4 - Terrain Effects? (craters and erosion)'''
    DWORD (Number of Entries)
    	DWORD (Number of reps)
    		12-byte reps
    	DWORD (Number of reps)
    		DWORD reps
    	DWORD
    
    
    
    '''Start Section #5 - Brush (Cursor) Exemplars'''
    DWORD (Number of entries)
    	Two bytes
    	DWORD (Resource Key)
    	DWORD
    	DWORD
    	5 Bytes
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    
    
    '''Start Section #6 - LUA Occupant Groups, Generators, and Attractors'''
    DWORD (Number of Entries)
    	Two bytes <<<---Always 0x0000
    	DWORD (Length of string)
    		String <<<---Points to an entry in the LUA files
    	1 byte <<<---Type ID: 00=Attractor or Generator, 01=Occupant_group
    
    
    '''Start Section #7 -- Earthquakes(Destructive)?+'''
    DWORD (Number of Entries)
    	22 Bytes
    	DWORD
    	4 Bytes
    	DWORD
    	8 Bytes
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	8 Bytes
    
    
    '''Start Section #8 -- Randomized Picks'''
    DWORD (Number of Entries)
    	Two bytes
    	DWORD (Number of sub-entries)
    		DWORD
    		DWORD
    		DWORD (String Length)
    			String <<<---Used to Redirect to Another Entry in Section #13
    	DWORD
    
    
    
    
    '''Start Section #9 - Sounds'''
    DWORD (Number of Entries)
    	6 Bytes <<<---Always 0x000000000000
    	DWORD (Resource Key)
    	DWORD 
    	DWORD <<<---Always 0x00000000
    
    
    '''Begin Section #10''' - Effective Radius? (meteor_shadow_water''', tornado_scuff_terrain, ufo_ma_topbluering''')
    DWORD (Number of entries)
    	DWORD
    	DWORD
    	DWORD
    0X0001 - END OF SECTION
    
    
    
    '''Start section #11 - UDI Collisions?
    DWORD (number of entries)
    	DWORD
    	DWORD (String Length)
    		String (Only if String Length > 0)
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    	DWORD
    0x0002 (End of section)
    
    
    
    '''Start section #12 - Main Script Index'''
    DWORD (Number of Entries)
    	DWORD
    	DWORD (0x01, 0x03, or 0x05 only)
    	DWORD (Number of Primary Indices)
    		DWORD (String Length)
    			String (Only if String Length > 0)
    		Byte (Index Flag) <<<---Indicates which section the Index Key belongs to (See notes below)
    		DWORD
    		DWORD
    		8 Bytes
    		DWORD
    		DWORD
    		DWORD
    		DWORD
    		DWORD
    		DWORD
    		DWORD <<<---X-Axis Shift (Float32)
    		DWORD <<<---Z-Axis Shift (Float32)
    		DWORD <<<---Y-Axis Shift (Float32)
    		DWORD
    		10 Bytes
    		DWORD
    		DWORD
    		DWORD
    		DWORD
    		2 Bytes (Random) <<<---0x0000=Always Appears, Non-Zero=Randomized chance (Can be set into groups with this number)
    		2 Bytes (Random Chance) <<<---% Chance that effect will appear
    		DWORD (Index Key) <<<---Points to entry in appropriate section
    	DWORD (Number of Secondary Indices) <<<---Screen Shake Indices??
    		DWORD
    		DWORD (String Length) 
    			String (Only if String Length > 0)
    		DWORD
    		DWORD (Index Key)
    	DWORD (0x00000000)
    	DWORD (0x00000000)
    	2 DWORDs (0xCCCCCCCC or 0x00000000 each)
    
    
    
    '''Start Section #13 - Main Effect Directory'''
    	DWORD (String Length)
    		String
    	DWORD (Index Key) <<<---Points to entry in section #12
    2 Bytes - End of Section
    
    '''13.5 area'''
    BYTE
    DWORD
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    FLOAT
    
    '''Start Section #14 - Tools FX Linking?''' (Relates to Sections 3 and 5 only)
    DWORD (Number of entries)
    	DWORD (String Length)
    		String <<<---Points to an entry in section #13
    	DWORD (Group Property) <<<---Call from exe or exemplar
    	DWORD (Instance Property) <<<---Call from exe or exemplar
    0x0000 End of section
    
    
    '''Start Final Section #15 - Class ID Calls'''
    DWORD (Number of Entries)
    	DWORD (ClassID) <<<---Class ID Call (from EXE most probably)
    	DWORD (String Length)
    		String <<<---Points to an entry in section #13
    
    
    
    ''Index Flags:\\
    0x00 - Section #1
    0x01 - Section #2
    0x02 - Redirection - String Points to an entry in section #13
    0x03 - Section #4
    0x04 - Section #6
    0x05 - Section #7
    0x06 - Section #8
    0x07 - Section #9
    0x08 - Section #10
    0x10 - Section #11

    I used to try to modify it before, But I made a big mistake about "DWORD",*:blush: Get confused with "Word", (8 bits=1 Byte, Double Word=32 bit=4 Bytes=8 hex bits, eg. 10 00 00 00), Then If we'd like to write an Effdir with a blank Section 1, We should write " 04 00 02 00 00 00 00 00 01 00 ", 

    04 00 = Major Version EFDIR 4

    02 00 = Minor Version EFDIR 2

    00 00 00 00 = DWORD (Number of Entries) -- Since we want no record in this section

    01 00 = 0x0001 - End of Section -- I have no idea how to say it more precisely (In English*:blush:) ,  But In my experience, the Long HEX value in binary is always reverse, eg. In Hex editing, a resource key "4a8b8ec5" should be written as "C5 8E 8B 4A".

    • Like 6

    What is impossible with men is possible with God…!

    5d9ffb6b62888_-1.jpg.d47b771d09c95f9e7590c44cf6711098.jpg

    I've contributed some to Simtropolis

    My Emotion

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    14 hours ago, Raymond7cn said:

    Learning Note about Effdir:

    Here are a couple of files with notes CB and I made for reading in the exported decoded hex of the EffectsDir. This is how we parse out all of the info and then we were working on an actual editor, but the project stalled due to RL things.

    The one with the full notes is how we combined info from the Wiki, the Matlab code in ReadEffDir (Xannepan MatLab Script).m, and the source code of Reader 0.9.3. I gave them a .cpp extension so they open automatically in Notepad++ with pretty color coding.

    Cori Combined Effect Dir Code - (All Consolidated & SpecialSteps).zip

    • Like 6
    • Yes 1
    • Thanks 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    On 8/9/2021 at 1:49 PM, chfzdn said:

    I hope your journey will be successful, @Raymond7cn!

    Thank you @chfzdn, Sorry that I forgot to leave a note about the next plan.*:blush:

    I was learning Python(advice from CoriBoom™), *:DAfter finishing most of models for that secret project, I begun to learn it with my boy, It's his summer vocation, so we could learn and make mistakes together. It did remind me of that time when I started to learn modelling, @Cyclone Boom @mattb325 (Do you remember that, CB and Matt*;).) I made 5 mistakes on printing "Hello World", Ha-ha.:D

    Frankly I have tried to learn a programming language for many times before, but gave up easily, since I couldn't find out an aim that why I need to learn programming, Now, I got a good one.

    This Special game has inspired me in many ways, I got a feeling that I probably can succeed this time, After trying to solve those puzzles Maxis left to us, Including guessing Hardcode, I thought I could understand some theories more better than before, same thing happened on PS's mask and painting as well.*:blush:

    Anyway, There is still a long way to get to the level of Xannepan or Lowkee's, I have written some simple code to read and edit binary file, but have some bugs and need to learn more about functions are related to GUI etc.

    On 8/5/2021 at 7:44 AM, CorinaMarie said:

    Here are a couple of files with notes CB and I made for reading in the exported decoded hex of the EffectsDir. This is how we parse out all of the info and then we were working on an actual editor, but the project stalled due to RL things.

    The one with the full notes is how we combined info from the Wiki, the Matlab code in ReadEffDir (Xannepan MatLab Script).m, and the source code of Reader 0.9.3. I gave them a .cpp extension so they open automatically in Notepad++ with pretty color coding.

    Cori Combined Effect Dir Code - (All Consolidated & SpecialSteps).zip

    Thank you so much Cori!*:thumb: It will be super helpful, Since I was just stuck in guessing what that "2 Bytes - End of Section" was in section 13 and the structure of 13.5.

    May I ask a question about your LUA code, you knew how random my thoughts often can be.*:blush:

    From your The C.O.R.I. Reports and MySim Thought and Speech Balloon Dictionary(your thoughtful comments are more like a tutorial*;)), I could see this "building_groups.????", (???? for RESIDENTIAL or BUS etc), so I presume that this is some built-in functions which can filter out certain type Buildings or Automatas by Occupant Groups in every Building's Exemplar, Is it correct? If so, I get some random thoughts about Lua and Effects(All because of you so that I knew there were possibilities*:thumb:), since I saw some words in tutorial and hardcode as well, (coverage_cells or cell_coverage, target_sequence, target_list, target_destroyed).

    Anyway, My friends, I'll be away on vocation for about two weeks with my boy, sand and beach and Fish&chips!:bunny: See you soon!

    Yours,

    -- Raymond

    • Like 6

    What is impossible with men is possible with God…!

    5d9ffb6b62888_-1.jpg.d47b771d09c95f9e7590c44cf6711098.jpg

    I've contributed some to Simtropolis

    My Emotion

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    11 hours ago, Raymond7cn said:

    I could see this "building_groups.????", (???? for RESIDENTIAL or BUS etc), so I presume that this is some built-in functions which can filter out certain type Buildings or Automatas by Occupant Groups in every Building's Exemplar, Is it correct?

    In the adv_const.lua (FF048A3E) there is the building_groups table and these do correspond to the OccupantGroups we set in exemplars and which can also be referred to in Lua code. What it's doing is setting variable names equal to specific numbers. Said numbers are stored in base 10 decimal format which is why you'll see the hex value passed to the hex2dec function.

    Here's the table:

    Spoiler
    
    building_groups = {}
    
          building_groups.RESIDENTIAL = hex2dec('1000')
          building_groups.COMMERCIAL = hex2dec('1001')
          building_groups.INDUSTRIAL = hex2dec('1002')
         
          building_groups.TRANSPORTATION = hex2dec('1003')
          building_groups.UTILITY = hex2dec('1004')
          building_groups.CIVIC = hex2dec('1005')
          building_groups.PARK = hex2dec('1006')
          building_groups.RAIL = hex2dec('1300')
          building_groups.BUS = hex2dec('1301')
          building_groups.SUBWAY = hex2dec('1302')
          building_groups.POWER = hex2dec('1400')
          building_groups.WATER = hex2dec('1401')
          building_groups.NUCLEAR = hex2dec('1403')
          building_groups.RECYCLE = hex2dec('1404')
          building_groups.TOXIC_DUMP = hex2dec('1405')
           --building_groups.LANDFILL = hex2dec('1402')
          building_groups.LANDFILL = hex2dec('1406')
          building_groups.POLICE = hex2dec('1500')
          building_groups.JAIL = hex2dec('1501')
          building_groups.FIRE = hex2dec('1502')
          building_groups.SCHOOL = hex2dec('1503')
          building_groups.COLLEGE = hex2dec('1504')
          building_groups.LIBRARY = hex2dec('1505')
          building_groups.MUSEUM = hex2dec('1506')
          building_groups.HEALTH = hex2dec('1507')
          building_groups.AIRPORT = hex2dec('1508')
          building_groups.SEAPORT = hex2dec('1509')
          building_groups.LANDMARK = hex2dec('150A')
          building_groups.REWARD = hex2dec('150B')
          building_groups.LANDMARK_QUEUE = hex2dec('150C')
          building_groups.POLICE_BIG = hex2dec('150D')
          building_groups.POLICE_SMALL = hex2dec('150E')
          building_groups.SCHOOL_K6 = hex2dec('150F')
          building_groups.SCHOOL_hs = hex2dec('1510')
          building_groups.COURTHOUSE = hex2dec('1511')
          building_groups.CEMETARY = hex2dec('1700')
          building_groups.PET_CEMETARY = hex2dec('1701')
          building_groups.VIP = hex2dec('1900')
          building_groups.TOURIST = hex2dec('1901')
          building_groups.COUNTRY_CLUB = hex2dec('1902')
          building_groups.TAXI_MAKER = hex2dec('1903')
          building_groups.AMBULENCE_MAKER = hex2dec('1904')
          building_groups.DMV = hex2dec('1905')
          building_groups.STADIUM = hex2dec('1906')
          building_groups.WORSHIP = hex2dec('1907')
          building_groups.NIGHT_CLUB = hex2dec('1908')
          building_groups.OPERA = hex2dec('1909')
          building_groups.TV_STATION = hex2dec('1910')
          building_groups.TV_MAGNET = hex2dec('1911')
          building_groups.FARMLAND = hex2dec('1912')
          building_groups.MAYOR_HOUSE = hex2dec('1938')
          building_groups.Hospital  = hex2dec('1513')
          building_groups.BusStop  = hex2dec('1926')
          building_groups.ArmyBase   = hex2dec('1914')
          building_groups.ArmyMissileRange   = hex2dec('1915')
          building_groups.DeluxePoliceStation   = hex2dec('1515')
          building_groups.Ferry	   = hex2dec('1304')
          building_groups.AreaBase	 	   = hex2dec('1939')
          building_groups.Casino	 	   = hex2dec('1940')
          building_groups.LandingStrip	 	   = hex2dec('1517')
          building_groups.PassengerRail	 	   = hex2dec('1305')
          building_groups.FreightRail 	   = hex2dec('1306')
          building_groups.Marina 	   = hex2dec('1941')
          building_groups.CarFerry	   = hex2dec('1308')
          building_groups.PassengerFerry	   = hex2dec('1309')
          building_groups.Monorail	   = hex2dec('1307')
          building_groups.LargeHealth	   = hex2dec('151A')
    
          --USED by game.mysim_distance_to_closest_building()
          building_groups.FLEAMARKET =  hex2dec('1100')
          building_groups.MIDDLECLASSMALL =hex2dec('1101')
          building_groups.FASHIONCENTRE =hex2dec('1102')
          building_groups.DRIVEIN =hex2dec('1103')
          building_groups.MULTIPLEX =hex2dec('1104')
          building_groups.DINNERTHEATRE =hex2dec('1105')
          building_groups.FLEABAGMOTEL =hex2dec('1106')
          building_groups.FAMILYCOURT =hex2dec('1107')
          building_groups.LUXURYSPA =hex2dec('1108')
          building_groups.GREASEPIT =hex2dec('1109')
          building_groups.SERVICESTATION =hex2dec('110A')
          building_groups.CARCARECENTRE =hex2dec('110B')
          building_groups.USEDCARCHEAP =hex2dec('110C')
          building_groups.CARDEALERSHIP =hex2dec('110D')
          building_groups.LUXURYAUTOCENTRE =hex2dec('110E')
          building_groups.TACOSTAND =hex2dec('110F')
          building_groups.FAMILYDINER =hex2dec('1110')
          building_groups.CHEZFANCY =hex2dec('1111')
          building_groups.CINEMA =hex2dec('1112')
          building_groups.MAXISSIMTHEATRE =hex2dec('1113')
          building_groups.FAMILYINN =hex2dec('1114')
          building_groups.RITZY =hex2dec('1115')
          building_groups.SIMCYS =hex2dec('11160000')
          building_groups.SIMS4THAVE =hex2dec('1117')
          building_groups.WILLIOPIZZA =hex2dec('05FA')
         building_groups.ERNSTUNGUENTS =hex2dec('05FC')
         building_groups.GUSTAVGEWGAWS =hex2dec('05FB')
          building_groups.LENZELECTRONIC =hex2dec('05FD')
          building_groups.MYSIM_RESIDENCE = hex2dec('193A')
          building_groups.FIRE_OCCUPANT = hex2dec('5005')          -- a fire
          building_groups.TOXIC_OCCUPANT = hex2dec('0x5006')       -- a toxic spill
          
          --New building groups for My Sim balloon usage
          building_groups.RES1 = hex2dec('11010') --R$
          building_groups.RES2 = hex2dec('11020')--R$$
          building_groups.RES3 = hex2dec('11030')--R$$$
          building_groups.CO2 = hex2dec('13320') --Commercial office $$
          building_groups.CO3 = hex2dec('13330') --Commercial office $$$
          building_groups.CS1 = hex2dec('13110') ----Commercial Service $
          building_groups.CS2 = hex2dec('13120') ----Commercial Service $$
          building_groups.CS3 = hex2dec('13130') ----Commercial Service $$$
          building_groups.IND_AG = hex2dec('14100') ----Ind-Ag
          building_groups.IND_DIRTY = hex2dec('14200') ----Ind-dirty
          building_groups.IND_MECH = hex2dec('14300') ----Ind-Mech
          building_groups.IND_HT = hex2dec('14400') ----Ind-High Tech
          building_groups.COM_CAR = hex2dec('21000') ----Commercial car
          building_groups.COM_FOOD= hex2dec('21001') ----Commercial food
          building_groups.COM_SHOP = hex2dec('21002') ----Commercial shop
          building_groups.COM_MOVIE= hex2dec('21003') ----Commercial movie
          building_groups.COM_HOTEL = hex2dec('21000') ----Commercial hotel
          building_groups.COM_LARGE= hex2dec('21001') ----Large Commercial , >= stage 6 CO$$$

     

     

    Let's use the first one as an example: building_groups.RESIDENTIAL = hex2dec('1000')

    1. The part before the dot is the table name. In this case building_groups.
    2. The part after the dot is an entry within the table. In this case RESIDENTIAL.
    3. The hex2dec is a function which converts a string of text to decimal. In this case 0x1000 = 4096 decimal.

    So what this does is gives us a long, human readable English name for the number 4096 and it lets Lua code be more intuitively read. (These are generally used as parameters passed to other functions and then used as triggers for game events.)

     

    12 hours ago, Raymond7cn said:

    I saw some words in tutorial and hardcode as well, (coverage_cells or cell_coverage, target_sequence, target_list, target_destroyed).

    You can find the full list of those in adv_citysituations.lua (FF3AC790) and they are used for Missions.

    Spoiler
    
    --automata_list = {},                          -- allowable automaton group(s) for the single drivable automaton
    --target_list = {},                            -- automata or occupant group(s) for target in the situation
    --target_sequence = {},                        -- use instead of target_list to specify a sequence of targets that must be handled in order
    --condition = sit_conditions.REACH_TARGET,     -- determines success/failure of situation
    --time_limit = 0,                              -- time limit for entire situation in real time, 0 == indefinite
    --success_distance = 0,                        -- for some conditions, must be within this many meters of target to succeed
    --success_timeout = 0,                         -- for some conditions, sit succeeds if within success_distance of target for more than this many seconds
    --min_target_distance = 32,                    -- targets chosen by sit must be at least this many meters away from the active automaton
    --max_target_distance = 0,                     -- targets chosen by sit must be within this distance from active automaton (0 == no limit)
    --evade_list = {},                             -- automata or occupant groups you have to evade to succeed the mission
    --evade_distance = 32,                         -- if evade_list is filled, mission will fail if within this distance of any of the evade occupants
    --evade_timeout = 2,                           -- if evade_list is filled, mission will fail if within evade_distance of evade occupants for more than evade_timeout seconds
    --create_target = false,                       -- situation can create a target if none exists?
    --success_text = "",                           -- text of message box on success
    --failure_text = "",                           -- text of message box on failure
    --progress_text = "",                          -- can be a single string to display in between targets if target_sequence is set up, or a table of strings for each target
    --image=sit_constants.SITUATION_IMAGE_DEFAULT, -- determines icon or advisor head that shows up in messages
    --success_image=sit_constants.SITUATION_IMAGE_DEFAULT,     -- icon or advisor head to display in success message
    --success_mood=advice_moods.GREAT_JOB,                     -- mood of advisor head during success dialog
    --failure_image=sit_constants.SITUATION_IMAGE_DEFAULT,     -- icon or advisor head to display in failure message
    --failure_mood=advice_moods.BAD_JOB,                       -- mood of advisor head during failure dialog
    --delay_after_disabled=5.0,                                -- how long (in seconds) to pause after active auto or target
    --service_mission = false,            -- sets whether the player has to play an effect to win the mission
    -- evil_twin = hex2dec('guid'),                            -- guid of mission to suggest as an evil/good alternative to this mission
    -- coverage_type = sit_coverage_type.ZONE,             -- tells the engine which of the following "coverage" properties to use
    -- coverage_zone = zone_tool_types.INDUSTRIAL_RES,     -- for cell_coverage missions, choose an entire zone of this type
    -- coverage_lot = building_groups.CEMETARY,            -- for cell_coverage missions, choose a lot that has a building of this type
    -- coverage_network = network_types.OVER_GROUND,      -- for cell_coverage missions, choose "coverage_count" connected network cells of this type
    -- coverage_rect = { left, top, right, bottom },      -- for cell_coverage missions, specify an explicit cell rectangle in x and z
    -- coverage_cells = { {x,z}, {x,z}, {x,z} },       -- explicit list of cells to cover for cell_coverage missions, where (0,0) is the CITY CENTER
    -- coverage_cells_min = 0,                    -- minimum # of cells you need to cover to succeed, 0 == all of them in the zone or lot
    -- coverage_cells_max = 0,                    -- maximum # of cells you need to cover to succeed, 0 == all of them in the zone or lot
    -- coverage_success_count = 0,                -- # of cells out of total chosen you need to cover to succeed, 0 = all of them in the coverage area
    -- coverage_success_pct = 100,               -- like coverage_success_count, but expressed as a percentage (from 0 - 100) of the total.
    -- success_aura_radius  = 0,                 -- radius (meters) around the active auto to add a desirability boost on success
    -- success_aura_magnitude = 0,               -- magnitude of aura boost around active auto on success
    -- success_effect = "missionsuccess",        -- name of visual effect to play at active auto on success
    -- success_money = 0,                        -- amt of money to give to treasury on success
    -- failure_aura_radius  = 0,                 -- radius (meters) around the active auto to add a desirability boost on failure
    -- failure_aura_magnitude = 0,               -- magnitude of aura boost around active auto on failure
    -- failure_effect = "missionfailure",        -- name of visual effect to play at active auto on failure
    -- failure_money = 0,                        -- amt of money to give to treasury on failure
    -- reward_guid = 0,                          -- GUID of a reward advice (adv_rewards.lua) that will eventually be unlocked by this mission
    -- reward_progress_text = "",                -- if reward_guid is set, and the reward is still not yet available, the text that will display at the end of the success message (e.g. "You're one step closer to unlocking the secret base!")
    -- reward_unlocked_text = "",                -- if reward_guid is set, and the reward is available, the text that will display at the end of the success message (e.g. "You've unlocked the secret base!")
    -- active_radius = 0,                        -- meters around the active automaton (or the effect if service_mission is true) that will count as a "hit"
    -- mysim_mission = false,                    -- indicates whether this is a mission for mysim vehicles
    -- training_mission = false,                 -- marks the mission as a training mission, once completed it will never be offered again
    -- pursuit_mission = false,                  -- if true, groups in the evade_list will help the active auto chase the target
    -- always_create_target = false,             -- if true, will never use a target that already exists (only valid for automata targets)
    
    base_citysituation_advice = 
    {
       _base       = base_advice,
       type        = advice_types . CITY_SITUATIONS,
       mood        = advice_moods . NEUTRAL,
       priority    = tuning_constants.ADVICE_PRIORITY_LOW,
       frequency   = 10,
       no_timeout  = 1,     -- stay current until untriggered
       trigger     = "0",
       once        = 0,
       event       = 0,
       automata_list        = {},
       target_list          = {},
       condition            = sit_conditions.REACH_TARGET,
       time_limit           = 0,
       success_distance     = 24,
       success_timeout      = 0,
       min_target_distance  = 32,
       max_target_distance  = 0,
       evade_list           = {},
       evade_distance       = 32,
       evade_timeout        = 2,
       create_target        = false,
       success_text         = "",
       failure_text         = "",
       progress_text        = "",
       image                = sit_constants.SITUATION_IMAGE_DEFAULT,
       success_image        = sit_constants.SITUATION_IMAGE_DEFAULT,
       success_mood         = advice_moods.GREAT_JOB,
       failure_image        = sit_constants.SITUATION_IMAGE_DEFAULT,
       failure_mood         = advice_moods.BAD_JOB,
       delay_after_disabled = 5.0,
       service_mission      = false,
       evil_twin            = 0,
       coverage_cells_min   = 0,
       coverage_cells_max   = 0,
       coverage_type        = sit_coverage_type.ZONE,             
       coverage_zone        = zone_tool_types.INDUSTRIAL_RES,     
       coverage_lot         = building_groups.CEMETARY,            
       coverage_network     = network_types.OVER_GROUND,      
       coverage_rect        = { 0, 0, 0, 0 },
       coverage_cells       = { },
       coverage_success_count  = 0,
       coverage_success_pct    = 100,
       success_aura_radius     = 0,
       success_aura_magnitude  = 0,
       success_effect          = "",
       success_money           = 0,
       failure_aura_radius     = 0,
       failure_aura_magnitude  = 0,
       failure_effect          = "",
       failure_money           = 0,
       reward_guid             = 0,
       reward_progress_text    = "",
       reward_unlocked_text    = "",
       active_radius           = 0,
       mysim_mission           = false,
       training_mission        = false,
       pursuit_mission         = false,
       always_create_target    = false
    }   

     

     

    12 hours ago, Raymond7cn said:

    I'll be away on vocation for about two weeks with my boy, sand and beach and Fish&chips!:bunny: See you soon!

    Have a good time! *:)

    • Like 4
    • Thanks 1

    Chance favors the prepared mind. ― Louis Pasteur  
    Remember, a few hours of trial and error can save you several minutes of looking at the README. -- I Am Devloper (on Twitter)

    Clickable ---> The Best of Cori's Posts  (scroll down a wee bit there)    Something fun: MySimtropolis - Invitation to become a SimCity 4 MySim

    Are you new here? Check out the Introduction and Guide to Simtropolis.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Have fun @Raymond7cn, I wish you a wonderful and relaxing holiday. *:thumb:

    We all deserve quality time after this covid torture. Just stay safe the two of you! *:yes:

    • Like 3
    • Thanks 1

    The "SimCity 4" vanilla Opera House is the most evil thing in existence. Avoid.

     

    My city journals! *:read:
    - SimCity: Tribalism - seven urbanization concepts clashed together
    Saving Magnasanti... - the most depressing city in history being revitalized

    Also worth checking...
    - "TMC's Drawing Board" - my city designs and plans.
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Exactly! I noticed his absence as well. Give him my regards if you get a chance! :thumb:

    • Like 2

    The "SimCity 4" vanilla Opera House is the most evil thing in existence. Avoid.

     

    My city journals! *:read:
    - SimCity: Tribalism - seven urbanization concepts clashed together
    Saving Magnasanti... - the most depressing city in history being revitalized

    Also worth checking...
    - "TMC's Drawing Board" - my city designs and plans.
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    3 hours ago, Cyclone Boom said:

    His concluding statement ends with the hope of:

    "Anyway, I believe I will return as soon as possible."

    Thanks for sending in news. It's up to us to optimism, wait and wish him a good recovery.

    • Like 3

    "Nenhum sucesso no mundo compensa o fracasso no lar." - "No other success can compensate for failure in the home."
    Como fazer da sua família um time de sucesso! - How to make your family a successful team!
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 5/7/2021 at 12:55 PM, Raymond7cn said:

    Dear Mayors, My friends, Much obliged to your kind words, You would understand that i was almost crying when reading them, since some guy will be more emotional if he's stuck in the hospital for (such) a while.*:blush:

    I have had many words to say, but I'm struck dumb now, I'm confused and could not tell which one i love more, This game or Simtropolis? Or you peeps with warm and helpful and big hearts here. I have no idea, But I can tell you this: It shall not end until my death, I love you and this place and this game. no worries, I just need more weeks to recover my muscle ( I have gotten rid of the plaster *:8)), Dr says that I still can't be sedentary for too long, so I still couldn't go back to my models now, I have to say it really is a Tortureee.*:D

    Many Thanks for your letters when I was laying in the bed, especially to @Cyclone Boom, You did shed some light on this miserable period, Anyways, I will be back as soon as possible! Hope all is well to you as well!! See ya. :}

    Yours Sincerely,

    -- Raymond

    Raymond, I just stumbled onto this. Please pardon my tardiness. You are a wonderful asset to the game and a good person. You have helped me immensely and your kindness is more than notable! 

    • Like 2
    • Yes 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    15 hours ago, Cyclone Boom said:

    We've heard back from Raymond via email yesterday, and he confirms that there's a situation preventing him from accessing Simtropolis which could last about a year. We'll not divulge specific details, but basically it's the circumstances surrounding his ability to visit websites including our own.

    Can't help but notice his complete absence and sure do wish him a safe return! :yes:*;)

    • Like 6

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Hello Family,

    some news about our Master of Desaster Raymond? I´m Missing my Friend and i need to talk to him. He is my Brother.

    To much happens over the last Month... even Years.It would be cool, if Cori Sweety or Mr. CB (Both got a Line to Ray) could feed us with some Informations please.

    The crazy German... Oliver


    <<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

    Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

    URL: https://simforum.de/index.php?forums/18/

    Oliver

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    @City_Slider

    The news on Raymond is the same as of above. We haven't heard back from him since. This is due to the circumstances which he is currently facing, with being unable to access sites outside of his home country for the foreseeable future. As per our post above, Raymond will return when he is able.

    We will post again when there are any new developments.

    • Like 2
    • Yes 1
    • Thanks 2

    Quick Links

    “SimCity 4 is not just a game, but a tool driven by our own imagination and creativity.”

    Buy me a coffee

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Thanks for letting me know Dude. I´ll try another Way.

    -Oliver


    <<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

    Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

    URL: https://simforum.de/index.php?forums/18/

    Oliver

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 24/11/2021 at 6:51 AM, Cyclone Boom said:

    being unable to access sites outside of his home country for the foreseeable future

    What country is he even in? That sounds like North Korea or maybe China...

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    I seriously doubt anyone in North Korea with access to the internet (think about that for a second), would find themselves here. Indeed, China is the winning answer!, but I fear its best not to get into any discussions relating to this.

    If any of this doesn't 'click' with you, I suggest you do some research, because there is a very good reason why as a rule, you never bump into people from China on the Internet.

    • Like 1
    • Yes 2
    • Thanks 1

    Head over to my Lot and Mod Shack to keep abreast of my latest developments.

    Do you like custom textures, but don't like all the work involved creating them?, take a look at the Texture Automation options here. Change the look and feel of your transit networks, with the minimum of effort, for example customised versions of my Sidewalk NAM (SWN) and Terrain Grass NAM (TGN) mods, and much more besides.

    New to the NAM? Check out my tutorials on YouTube. Latest upload: How to: RHW - MHO Roundabout Interchanges. (Nov 25).

    p.s. - I'm MGB over on SC4D and a member of the NAM team.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    China was actually my first guess. It just sounds like they've gone full North Korea, and I probably know why. (If you want the answer, I can PM you or post in a politics-related thread)


      Edited by Wiimeiser  

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    I have to admit I overanalyzed it...

    My speculation was that Ray has actually caused the accident due to browsing the internet while driving and the court laid down some kind of a ban against him due to that. :nyah:

    Just letting my imagination run free, don't take offence with my ramblings!


    The "SimCity 4" vanilla Opera House is the most evil thing in existence. Avoid.

     

    My city journals! *:read:
    - SimCity: Tribalism - seven urbanization concepts clashed together
    Saving Magnasanti... - the most depressing city in history being revitalized

    Also worth checking...
    - "TMC's Drawing Board" - my city designs and plans.
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    As long, as i know, isn´t he in China ;-)

    I talked about a visit to him few Month ago. And yes, im going to meet him in real Life. Not Today, not Tomorrow, but in the Future. He is a good Friend and i need to meet him 4 real.

    -Oliver


    <<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

    Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

    URL: https://simforum.de/index.php?forums/18/

    Oliver

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 25.11.2021 at 3:49 PM, Wiimeiser said:

    China was actually my first guess. It just sounds like they've gone full North Korea, and I probably know why.

    Does it have to do with the Winter Olympics? Not sure why the Internet is considered a threat in this context, though.


    The "SimCity 4" vanilla Opera House is the most evil thing in existence. Avoid.

     

    My city journals! *:read:
    - SimCity: Tribalism - seven urbanization concepts clashed together
    Saving Magnasanti... - the most depressing city in history being revitalized

    Also worth checking...
    - "TMC's Drawing Board" - my city designs and plans.
     

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    1 hour ago, TheMurderousCricket said:

    Does it have to do with the Winter Olympics? Not sure why the Internet is considered a threat in this context, though.

    That is why a moment of silence on the subject is best. The walls have eyes, so to speak.

    • Yes 1

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Ray will find a Way back to his Family... maybe next Month, maybe next Year... but he´ll be back. Trust moi ;-)

    • Like 1
    • Yes 3

    <<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

    Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

    URL: https://simforum.de/index.php?forums/18/

    Oliver

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    And I think it wouldn't help our @Raymond7cn if we talked about it too much! The web has ears!!!

    • Thanks 2

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Sure, but not about Online Games. They are looking for Pepps like Jack :-D (or mine)...


    <<< German , so excuse my English. I forgot the most over the Years. Sad, if you cant spell a Language every Day.

    Feel free to ask away, i´ll answer any Questions you are asking for. But you must be warned, i bite ;-)

    URL: https://simforum.de/index.php?forums/18/

    Oliver

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    On 9/26/2020 at 10:08 PM, Raymond7cn said:

    Just wanted to put this out there: I love this "updated version" but had some dislikes, namely with the snowy coniferous trees in winter (as the only things covered in snow) and the low-res streetlights. So here I have edited .dats to replace the coniferous trees with evergreen variants and the streetlights (with LRM-overridden props). These should work fine with any LRM variant or likely even without since LRM just overrides. There is also an additional patch intended for use with US LRM variants to add streetlight variety by using lights from the LRM Belgium set (only the Models & Props.dat file is required). Just load that folder after the main, and run everything after Raymond7cn's original patch of course. 

     

    JRJ streetside mod.zip

     

    For posterity, the following table lists the hex values that were changed and where:

    image.png.69c205cb72f566a88d6275e96eaed91f.png

    image.png.b2740206ecf913ab8fee540aa69cf963.png

    • Like 3
    • Thanks 3

    Share this post


    Link to post
    Share on other sites

    Sign In or register to comment...

    To comment in reply, you must be a community member

    Sign In  

    Already have an account? Sign in here.

    Sign In Now

    Create an Account  

    Sign up to join our friendly community. It's easy!  

    Register a New Account


    ×

    Thank You for the Continued Support!

    Simtropolis depends on donations to fund site maintenance costs.
    Without your support, we just would not be in our 24th year online!  You really help make this a great community. *:thumb:

    But we still need your support to stay online. If you're able to, please consider a donation to help us stay up and running. This helps sustain a platform where we can share our community creations for years to come.

    Make a Donation, Get a Gift!

    Expand your city with the best from the Simtropolis Exchange.
    Make a Donation and get one or all three discs today!

    STEX Collections

    By way of a "Thank You" gift, we'd like to send you our STEX Collector's DVD. It's some of the best buildings, lots, maps and mods collected for you over the years. Check out the STEX Collections for more info.

    Each donation helps keep Simtropolis online, open and free!

    Thank you for reading and enjoy the site!

    More About STEX Collections