Главная | Форум | Гостевая книга | Информация о сайте | Регистрация | Вход Приветствую Вас Гость | RSS
GTA Меню
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 76
Всего голосовало: 76
Обсудить опрос на форуме
Главная » Файлы » Grand Theft Auto Vice City » Программы

Добавлен: 22.08.2010, 17:53


VC Mission Builder
Скачивать файлы могут только Зарегистрированные пользователи.
  • Автор: Не указан
  • Версия: 1.0
  • 521.7 Kb / Просмотров: 2574 / Загрузок: 3 / Добавил: GtaKiller69
  • Оценка: 5.0/1
    Описание:

    BW's GTA VC Mission Builder version v1.3
    ---------------------------------------------------------------

    1 What you get
    1.1 Legal stuff
    1.2 Included files
    1.2.1 My codecreator
    1.2.2 My GTA VC GXT editor
    1.2.3 Source codes
    1.2.4 Stripped mission scripts
    1.2.5 List of opcodes
    1.3 Version info

    2 Installation
    2.1 Starting the mission builder

    3 The IDE
    3.1 Buttons and menues
    3.1.1 The F1 key
    3.2 Working with files

    4 Mission coding
    4.1 Definitions used in this readme
    4.2 The mission script
    4.2.1 The segments
    4.2.2 The MAIN part of the mission script
    4.2.3 The MISSION part of the mission script
    4.3 Data types
    4.3.1 Floating-point numbers
    4.4 Local variables
    4.5 Global variables
    4.6 Equates
    4.7 Arrays
    4.8 Mathematical coding
    4.8.1 Setting variables
    4.8.2 Addition
    4.8.3 Subtraction
    4.8.4 Division
    4.8.5 Multiplication
    4.9 Conditional coding
    4.10 Conditional math coding
    4.10.1 Checking the value of variables
    4.10.2 Using the NOT operator
    4.11 Setting the data type of operations
    4.12 Jump instructions
    4.12.1 Using variables in jump instructions
    4.13 Writing a mission script from scratch
    4.14 Writing a mission from scratch
    4.15 Rules that must be followed when coding
    4.15.1 wait codes
    4.15.2 create_thread commands
    4.15.3 Requesting models
    4.16 Practical Issues

    5 Mission coding for newbies and retards :p

    6 Support

    7 Changes



    ------------------

    1 What you get

    1.1 Legal stuff

    I take no responsibility for any persons use of the
    mission builder in any way. Use it at your own risk.

    Since this mission builder is based on others work and
    since those other people made some rules about what their
    work could be used for, I included some information about
    that in the STUFF folder. You should read through these
    files since some of them have some useful information
    about using the IDE.


    1.2 Included files

    1.2.1 My codecreator

    Use my CodeCreator program to get the world coordinates
    of Tommy (or the player) in the game. More information
    about the codecreator can be found in the readme file
    for it.


    1.2.2 My GTA VC GXT editor

    Use my GTA VC GXT editor to modify the texts showing up
    in the game. More info in its readme file.


    1.2.3 Source codes

    Source codes for mission mods and a discontinued
    delivery man mission is included.


    1.2.4 Stripped mission scripts

    Stripped mission scripts are included. Use these to build
    mission mods and missions on.


    1.2.5 List of opcodes

    The OPCODES.TXT file has most of the opcodes used in the
    mission script. Some math opcodes are not included. It is
    in alphabetical order.


    1.3 Version info

    This version is directly compatible with version 1.2.
    Source codes from version 1.0 and 1.1 can't
    be converted because of a bug in the decompiler in those
    versions of the Mission Builder. Any source codes from
    version 0.13 to version 0.22 can be converted to version
    1.3 (this version)


    ---------------------------------------------------------------

    2 Installation

    Unzip to anywhere. Run 'ViceBuilder13.exe'. The first time
    you run the program, you must specify where you installed Gta Vice.

    NOTE! If you get an arrow with that hour-glass, you can still
    use the arrow to set up the mission builder.




    2.1 Starting the mission builder

    Run 'ViceBuilder13.exe'.

    -----------------------------------

    3 The IDE

    3.1 Buttons and menues

    The menues and buttons should to some extent explain
    themselves. The button that looks like 'open multiple files'
    does something completely different - it disables global
    variable names set in the 'vicescm.ini' file when decompiling.


    3.1.1 The F1 key

    Press F1 to find opcodes and parameters for commands.

    Example, if you write:

    end_thread


    and press the F1 key, the line changes to:

    004E: end_thread


    This feature is pretty complex. It is based on 3 different
    files that are loaded when the mission builder loads. It
    searches for word matches. You can combine words by putting
    and underscore between them. The above example searches for
    the exact match "end thread" (or "end_thread") only. If you
    just write:

    thread


    and press the F1 key, every time you press F1, you get another
    match. When you press F1 on lines that doesn't have any
    underscores at all, the result doesn't include any either.
    With "thread", you get one of these:

    00D7: create thread with wasted busted check ЈЈLabel011C74
    004F: create thread ЈЈLabel0091D0
    004E: end thread
    03A4: name thread "MAIN"


    Another example, you want to know what opcodes are used with
    "create_actor". Every time you press F1, the line toggles
    between these commands:

    0129: $912 = create_actor 8 #HNB in_car $94C driverseat
    01C8: $8F5 = create_actor 10 #CLB in_car $8F8 passenger_seat 0
    009A: $2D3 = create_actor 4 #PGA at 10@ 11@ 12@


    This version also allows you to search for keywords and logic
    synonyms to keywords. Some of these keywords match keywords
    used in GTAMA. Some keywords have up to 5 synonyms.
    The list is in the 'keywords.txt' file. The MB reads this
    list, so if you want more synonyms, you can add them to this
    file.

    If you want to add keywords to this file, you must follow
    these rules:
    - Use letters and numbers only.
    - Spaces and underscores are not allowed inside keywords.
    - After the keyword, add a single space.
    - After the space, add the opcode that the synonym is to
    be linked with. The opcode must be in hexadecimal format
    and always 4 letters (or numbers) long.




    3.2 Working with files

    To load a text file or a .scm file, use the file menu or press
    the 'open file' icon. If you load a .scm file, this happends:
    - The file will be decompiled. The window title shows the progress.
    - A file with the extention .TXT will be created. If you load the
    original main.scm file, a file called main.scm.txt will be created.
    If you load a file called something.scm, a file called
    something.scm.txt will be created.
    - The file being created will be loaded into the mission builder as
    a text file.

    If you load any file other than a .scm file, this happends:
    - The file gets loaded as a text file into the mission builder.

    If you activate the RUN menu and select compile or just press the
    compile icon, this happends:
    - The selected text file loaded into the mission builder editor gets
    compiled into a .scm (mission script) file.
    - If the name of the text file is something.scm.txt, a mission script
    file called something.scm will be generated. If the name of the
    selected text file is something.txt, a mission script file called
    something.txt.scm will be generated.



    ------------------------

    4 Mission coding

    4.1 Definitions used in this readme

    In this readme, a mission script is either a compiled '.scm'
    file or a text file containing script source code.
    A segment is a chunk of compiled code. The term "script code"
    or "code line" is any line of text looking like this:

    03CB: set_camera 807.0 -937.0 36.5625
    | | |
    | | |
    | | |
    | | |_____ *3
    | |
    | |___________________________ *2
    |
    |______________________________________ *1


    *1 This is an opcodes.

    *2 This is the command string. This part is ignored by this
    version of this mission builder (and any future versions).

    *3 This is a number.


    When the opcode is not specified, the code line is processed
    either as a code line containing only math instructions or
    as a code line containing a mix of conditional checks or
    commands related to functions in the mission builders.
    The term "math coding" is related to code lines where the
    opcode is not specified and commands related to math codes
    or conditional checks are used.


    4.2 The mission script

    4.2.1 The segments

    In this readme, a compiled mission script has 4 segments.
    Segment 1 is the mission script memory.
    Segment 2 is a table of 3D objects. When I talk about
    "second segment objects", I talk about these 3D objects.
    Segment 3 is a table of mission pointers.
    Segment 4 is where the script code starts.


    4.2.2 The MAIN part of the mission script

    The MAIN part of the mission script is where the script code
    starts. In other words, in this readme, the MAIN part of the
    code is where the 4th segment starts. To find the MAIN part of
    the mission script in the original decompiled mission script,
    look for a line like this:

    ;-------------MAIN---------------



    4.2.3 The MISSION part of the mission script

    The MISSION part of the mission script is where the MAIN part
    of the mission script ends. To find the mission part of the
    mission script in the original decompiled mission script, look
    for a line like this:

    ;-------------Mission 0---------------


    4.3 Data types

    Data types are used to identify numbers and labels. This version of the
    mission builder uses 5 different data types. Strings that appear in the
    mission scripts are enclosed in quotes.

    DATA TYPE MEANING

    ЈЈ Used with global jump instructions to labels in the MAIN
    part of the mission script.

    Ј Used with local jump instructions in missions to labels
    in missions only.

    @ Stores 16-bit numbers used with internal timers and local
    variables. Variable 0 to 15 is not used as timers. The rest
    of them are. These variables can be set using the
    create_thread command like this (not tested):
    create_thread <label> <parameter 1> <parameter 2>

    $ Used with global variables.

    # Used as equates. To find the numbers, look inside the
    'default.ide' file.



    4.3.1 Floating-point numbers

    All floating point operations require numbers to be set up as floating
    point numbers. To set a number to a floating-point number, make sure it has
    a DOT in it. Valid floating-point numbers: 0.0 1.0 1.2 2.3
    If a number is NOT set up as a floating-point number, it is automatically
    set up as an integer number.


    4.4 Local variables

    Local variables are local to the threads or missions they are used in.
    Variables 16@ and 17@ are used as internal timers. Their values are
    increased or decreased internally. Their values can be set and read
    using script code.


    4.5 Global variables

    Global variables are global to the entire mission script. They can be set
    in the MAIN part of the mission script and used in the mission part of the
    mission script by any mission. They all use 4 bytes of the mission script
    memory regardless of what they contain. The mission builder automatically
    allocates 4 bytes of the mission script memory for each global variable
    used in the mission script. The total size of the mission script memory
    is not set automatically in this version. Use the DEFINE MEMORY command
    to set the total size of the mission script memory.


    4.6 Equates

    Equates are variables set up internally in the mission builder. When
    the mission builder is loading, it reads the 'default.ide' file and
    stores all the definitions it finds in that file into equates. This
    means that if you want to create a car and you need the number of
    the model name of that car, you just use the equate of that car
    instead. Like: $CarModelNumber = #cheetah


    4.7 Arrays

    Use DEFINE ARRAY $<global variable> <size> <INTEGER|FLOAT>
    to set up an array.

    Use
    $<global variable>_index = <index>
    to set the index of the array.

    Use SET_ARRAY $<global variable>
    to set $<global variable><index> to $<global variable>

    Use GET_ARRAY $<global variable>
    to set $<global variable> to $<global variable><index>

    For more information about arrays, look into
    'Mission Mods\CrazyBikeTraffic.txt'



    4.8 Mathematical coding (or math coding, see definitions)

    4.8.1 Setting variables

    To set a global variable to an integer value, use
    $<global variable name> = <integer number>

    To set a global variable to a floating-point value, use
    $<global variable name> = <floating-point number>

    See '4.3.1 Floating-point numbers' for more information
    about floating-point numbers and integer numbers.

    To copy a global variable containing a floating-point number
    to another global variable, use
    FLOAT $<global variable name> = $<global variable name>

    To copy a global variable containing an integer number
    to another global variable, use
    INT $<global variable name> = $<global variable name>
    or INTEGER $<global variable name> = $<global variable name>

    Use the same method to copy local variables to global variables.


    4.8.2 Addition

    To add an integer number to a global variable, use
    $<global variable name> += <integer number>

    To add a floating-point number to a global variable, use
    $<global variable name> += <floating-point number>

    To add a global variable containing an integer value to
    another global variable also containing an integer value, use
    INT $<global variable name> += $<global variable name>

    To add a global variable containing a floating-point value to
    another global variable also containing a floating-point value, use
    FLOAT $<global variable name> += $<global variable name>

    Use the same method with local variables and any combinations
    of global and local variables. See '4.3.1 Floating-point numbers'
    for more information about floating-point numbers and integer numbers.


    4.8.3 Subtraction

    To subtract an integer number from a global variable, use
    $<global variable name> -= <integer number>

    To subtract a floating-point number from a global variable, use
    $<global variable name> -= <floating-point number>

    To subtract a global variable containing an integer value from
    another global variable also containing an integer value, use
    INT $<global variable name> -= $<global variable name>

    To subtract a global variable containing a floating-point value from
    another global variable also containing a floating-point value, use
    FLOAT $<global variable name> -= $<global variable name>

    Use the same method with local variables and any combinations
    of global and local variables. See '4.3.1 Floating-point numbers'
    for more information about floating-point numbers and integer numbers.


    4.8.4 Division

    To divide a global variable with an integer number, use
    $<global variable name> /= <integer number>

    To divide a global variable with a floating-point number, use
    $<global variable name> /= <floating-point number>

    To divide a global variable containing an integer value with
    another global variable also containing an integer value, use
    INT $<global variable name> /= $<global variable name>

    To divide a global variable containing a floating-point value with
    another global variable also containing a floating-point value, use
    FLOAT $<global variable name> /= $<global variable name>

    Use the same method with local variables and any combinations
    of global and local variables. See '4.3.1 Floating-point numbers'
    for more information about floating-point numbers and integer numbers.


    4.8.5 Multiplication

    To multiply a global variable with an integer number, use
    $<global variable name> *= <integer number>

    To multiply a global variable with a floating-point number, use
    $<global variable name> *= <floating-point number>

    To multiply a global variable containing an integer value with
    another global variable also containing an integer value, use
    INT $<global variable name> *= $<global variable name>

    To multiply a global variable containing a floating-point value with
    another global variable also containing a floating-point value, use
    FLOAT $<global variable name> *= $<global variable name>

    Use the same method with local variables and any combinations
    of global and local variables. See '4.3.1 Floating-point numbers'
    for more information about floating-point numbers and integer numbers.



    4.9 Conditional coding

    Example:

    00D6: if 1
    0038: $ONMISSION == 1
    0038: $BUSTED_PICKUP_MADE_FLAG == 1
    004D: jump_if_false ЈЈLabel008FCA

    There are TWO conditional checks in this code. The first
    conditional check checks if the player is currently on a mission.
    The second conditional check checks if the $BUSTED_PICKUP_MADE_FLAG
    variable is equal to 1.

    The first line defines the NUMBER OF CONDITIONS to include in the
    conditional check and if the checking is to be done in an INCLUSIVE
    or EXCLUSIVE manner.

    The example code uses INCLUSIVE checking. With INCLUSIVE checking,
    the number in the first line is equal to the number of lines with
    conditional checks MINUS 1. The BASIC programming language uses
    the operand 'AND' for INCLUSIVE conditional checking.

    With EXCLUSIVE checking, the number in the first line is equal to
    the number of lines with conditional checks PLUSS 19. The BASIC
    programming language uses the operand 'OR' for EXCLUSIVE conditional
    checking.

    This is the BASIC equivalent to the example code above:

    IF $ONMISSION=1 AND $BUSTED_PICKUP_MADE_FLAG = 1 THEN

    With EXCLUSIVE checking the code looks like this:

    00D6: if 21
    0038: $ONMISSION == 1
    0038: $BUSTED_PICKUP_MADE_FLAG == 1
    004D: jump_if_false ЈЈLabel008FCA

    Two conditional checks + 19 for EXCLUSIVE checking = 21 in the first line.

    This is the BASIC equivalent to the example code with EXCLUSIVE
    checking:

    IF $ONMISSION=1 OR $BUSTED_PICKUP_MADE_FLAG = 1 THEN

    When all the conditional checks are checked, the result of all the
    checks is controlled by the '004D: jump_if_false' opcode and
    command. If the result is FALSE, the code "jumps" to the label
    in the command. If the result is TRUE, the code following the
    '004D: jump_if_false' opcode and command is executed.

    See '4.12 Jump instructions' for more information about jump
    instructions.



    4.10 Conditional math coding (comparing variables to numbers and
    other variables)

    Please not that you can't use conditional math coding without
    first using the IF command. See 4.9 Conditional coding for more
    information.

    4.10.1 Checking the value of variables

    To check if a global variable is equal to a specific integer
    number, use
    $<global variable name> == <integer number>

    To check if a global variable is bigger than a specific integer
    number, use
    $<global variable name> > <integer number>

    To check if a global variable is smaller than a specific integer
    number, swap the number with the variable, like
    <integer number> > $<global variable name>

    Use the same method with floating-point numbers.
    You can also use the same method with the operator '>='

    To check if a global variable is equal to a floating-point
    number, use
    $<global variable name> == <floating-point number>

    See '4.3.1 Floating-point numbers' for more information
    about floating-point numbers and integer numbers.

    To check if a global variable containing a floating-point number
    is equal to another global variable, use
    FLOAT $<global variable name> == $<global variable name>

    To check if a global variable containing an integer number
    is equal to another global variable, use
    INT $<global variable name> == $<global variable name>
    or INTEGER $<global variable name> = $<global variable name>

    Use the same method with the operator '>' or '>=' to check if
    a variable is bigger than another variable, like:
    00D6: if 0
    FLOAT $MyVar >= 0@
    004D: jump_if_false ...


    4.10.2 Checking the value of variables using the NOT operator

    To check if a global variable is NOT equal to a specific integer
    number, use
    NOT $<global variable name> == <integer number>

    To check if a global variable is NOT bigger than a specific integer
    number, use
    NOT $<global variable name> > <integer number>

    To check if a global variable is NOT smaller than a specific integer
    number, swap the number with the variable, like
    NOT <integer number> > $<global variable name>

    Use the same method with floating-point numbers.
    You can also use the same method with the operator '>='

    To check if a global variable is NOT equal to a floating-point
    number, use
    NOT $<global variable name> == <floating-point number>

    See '4.3.1 Floating-point numbers' for more information
    about floating-point numbers and integer numbers.

    To check if a global variable containing a floating-point number
    is NOT equal to another global variable, use
    FLOAT NOT $<global variable name> == $<global variable name>

    To check if a global variable containing an integer number
    is NOT equal to another global variable, use
    INT NOT $<global variable name> == $<global variable name>
    or
    INTEGER NOT $<global variable name> = $<global variable name>

    Use the same method with the operator '>' or '>=' to check if
    a variable is NOT bigger than another variable, like:
    00D6: if 0
    FLOAT NOT $MyVar >= 0@
    004D: jump_if_false ...



    4.11 Setting the data type of operations

    This part of the readme is for old users. It explains the
    new feature about using INT and FLOAT.

    Variables can hold integer values or floating-point values.
    Sometimes, one set of opcodes is used with floating-point
    operations and another set of opcodes is used with integer
    operations. When doing math coding (see definition above),
    it is sometimes necessary to specify the data type of
    the operation. These are examples on how to specify the
    data type of operations:

    INT $test = $mycar
    FLOAT $MyXvar = $MyOtherXVar
    FLOAT $MyXvar += $AnotherXVar
    INT $MyXvar = $SomeIntegerVariable

    if
    INT $MyXvar == $SomeIntegerVariable
    jf ...



    4.12 Jump instructions

    All jump instructions (gosub, jump, jump_if_false, create_thread call and such) use
    labels. Labels are defined with a colon in the beginning of a line and referenced
    with the data type 'Ј' or 'ЈЈ'. LOCAL jumps, meaning jump instructions used in missions
    only to labels in missions only, use the data type 'Ј' before the mission label. GLOBAL
    jumps, meaning jump instructions from both the MAIN part of the mission script and from
    the mission part of the mission script, use 'ЈЈ' as data type. GLOBAL jumps ALWAYS
    (except for the DEFINE MISSION command) jump to labels in the MAIN part of the mission
    script.

    There are lots of situations where some commands work and other do not.

    Examples of WORKING jump instructions:

    ;----MAIN
    ...
    :Label1
    ...
    :Label2
    ...
    0002: jump ЈЈLabel1
    ...
    ;---Mission 23
    ...
    0050: gosub ЈЈLabel1
    ...
    004F: create_thread ЈЈLabel2
    0002: jump ЈLabel3
    ...
    :Label3
    ...


    Examples of INCORRECT jump instructions:

    ;----MAIN
    ...
    :Label1
    ...
    :Label2
    ...
    0002: jump ЈLabel1 \\ WRONG. Use 0002: jump ЈЈLabel1
    ...
    0002: jump ЈЈLabel3 \\ NOT ALLOWED. The only way to access mission code from MAIN is to use '0417: start_mission <mission>'
    ...

    ;---Mission 23
    ...
    0002: jump ЈЈLabel1 \\ NOT ALLOWED. Use '0050: gosub ЈЈLabel1' or '004F: create_thread ЈЈLabel1'
    0050: gosub ЈЈLabel3 \\ WRONG. Use 0050: gosub ЈLabel3
    ...
    004F: create_thread ЈLabel3 \\ NOT ALLOWED. All threads must be in MAIN.
    0002: jump ЈЈLabel3 \\ WRONG. Use 0002: jump ЈLabel3
    ...
    :Label3
    ...


    4.12.1 Using variables in jump instructions

    You can use variables with jump instructions. This is however NOT
    recommended if you want your scm files to be readable if they are
    decompiled by others. You can't just recompile decompiled files
    using variables with jump instructions without first manually
    changing the decompiled code. This goes for GTAMA and any other
    mission editor available. To set up a global variable with a jump,
    use a code like this:

    0004: $<global variable> = <data type for local or global jump><label>
    ...
    (any code to alter the global variable goes here)
    ...
    0002: jump $<global variable>

    A topic on GTAFORUMS shows how to do this with GTAMA.



    4.13 Writing a mission script from scratch

    In this mission builder, the user is responsible for
    setting up the first, second and third segments correctly.
    If you decompile a mission script, you never need to do
    this yourself. See '1.2.4 Stripped mission scripts' to get
    files to build on.

    If you want to start a mission script from
    scratch, do this:

    1. Create a new text file.

    2. On the top line, put:
    DEFINE VERSION VICE <version>
    without it, it can't compile.

    3. Start the code with a jump code like:
    0002: jump ЈЈSecondSegment

    4. Put
    DEFINE MEMORY <bytes>
    after that. The DEFINE MEMORY command is used to set up
    the amount of memory to allocate for the mission script.
    You have now defined the first segment.

    5. Put a label at the start of the second segment, like this:
    :SecondSegment

    The start of the second segment is now at the 4th line of your
    text file.

    6. Put another jump instruction in there, like:
    0002: jump ЈЈThirdSegment

    7. Now, set up the second segment using DEFINE OBJECTS and the number
    of objects to define after that, like:
    DEFINE OBJECTS 186

    8. To complete the second segment, use DEFINE OBJECT with the names
    of ALL the objects needed after that, like:
    DEFINE OBJECT (no name)
    DEFINE OBJECT PLAYERSDOOR
    DEFINE OBJECT FAKETARGET
    (and all the rest of them. Note that the first object is not used,
    so you can put your signature there.)

    9. Put another label at the beginning of the third segment, like:
    :ThirdSegment

    10. Define the entry of the MAIN part of the code by using a jump
    instruction here (at the start of the third segment), like:
    0002: jump ЈЈMain

    11. The total number of mission pointers goes next. Use DEFINE MISSIONS
    and the number of missions, like:
    DEFINE MISSIONS 80

    12. After that, set up labels for each missions by using DEFINE MISSION
    <zero-based number of mission> AT <label> like this:

    DEFINE MISSION 0 AT ЈЈSomeNewMajorIntro
    DEFINE MISSION 1 AT ЈЈANewMissionOrSomeThing

    (and the rest of them)

    13. Now, set up the MAIN part of the code. This is a pretty complex
    and big thing. See the original decompiled mission script text
    file for clues.



    4.14 Writing a mission from scratch

    To write a mission from scratch, copy this code and change
    everything enclosed in < > .

    VERY IMPORTANT!!! All this code goes into the MISSION part of the code.

    ;-------------Mission <mission number>---------------

    :Mission<mission number>
    0050: gosub Ј<label where the mission code starts>
    00D6: if 0
    0112: wasted_or_busted
    004D: jump_if_false Ј<label for skipping the mission failure code>
    0050: gosub Ј<label for mission failure code. Executed if player dies or gets arrested during the mission>

    :<label for skipping the mission failure code>
    0050: gosub Ј<label for the mission cleanup code>
    004E: end_thread

    :<label where the mission code starts>
    0317: increment_mission_attempts
    03A4: name_thread "<thread name>"
    0004: $onmission = 1
    0110: player $PLAYER_CHAR wanted_level = 0

    :<Label for mission loop>
    0001: wait 0 ms
    0002: jump Ј<Label for mission loop>

    :<label for mission failure code. Executed if player dies or gets arrested during the mission>
    00BA: text_styled "M_FAIL" 4000 ms 1 \\ MISSION FAILED!
    0051: return

    :<label for the mission cleanup code>
    0004: $ONMISSION = 0
    00D8: mission_cleanup
    0051: return


    When you have done that, change this line 'DEFINE MISSIONS <number of missions>'
    and add this line 'DEFINE MISSION <mission number> AT ЈЈMission<mission number>'.
    Adding code in the MAIN part of the code for starting the new mission is also
    a good idea :-)



    4.15 Rules that must be followed when coding

    Obviessly, when coding with non-math codes, each code line
    must fit the definition of a code line in
    '4.1 Definitions used in this readme'.

    Lines can be remarked using ';' or '\\'.

    Old saved games are not compatible with newer mission scripts.
    This means you must ALWAYS start a new game after modifying
    the mission script.


    4.15.1 wait codes

    You can't code without using wait command. If the script loops and the
    loop doesn't have any wait codes, the game will crash. In the MAIN
    part of the code, it is recommended that you use 250 or higher values
    with the wait code. In the mission part of the code, use 0.


    4.15.2 create_thread commands

    Unless proven otherways, these are the rules:

    - NEVER use the 'create_thread' command unless you actually want your
    missions to run multiple mission codes simultaniously.

    - When using 'create_thread <label>' the label and the code following
    it must in the MAIN part of the code.

    - The 'create_thread' command can be issued from both the MAIN part of
    the code and the MISSION part of the code.

    - In the original script, most of the threads started with the
    'create_thread' command runs in a 'low-priority' manner. Use
    the 'wait' command to set the priority of a thread.

    Example:
    0001: wait $DEFAULT_WAIT_TIME ms

    When using '0001: wait $DEFAULT_WAIT_TIME ms', the priority is set with
    a "wait-state" of 250 milliseconds.

    - It might be possible to "overload" the mission script by running
    a certain number of high priority threads simultaniously. If it is
    possible, it might hurt the frame-rate or the time it takes to
    load the scenery.


    4.15.3 Requesting models

    You can't create anything without loading the models for the stuff
    you want to create. To load the model of something, use

    0247: request_model #<model name>

    When you request something, it isn't loaded instantly. To check if
    the stuff you have requested has been loaded, use a loop like this:

    :LoadStuff
    00D6: if 0
    8248: NOT model #<model name> available
    004D: jump_if_false ЈStuffLoaded
    0001: wait 0 ms
    0002: jump ЈLoadStuff

    :StuffLoaded




    4.16 Practical Issues

    Doing simple changes, speeding stuff up
    - Have the builder and VC running at the same time.
    - Press ESC in VC to exit to the main menu when you
    want to change something.
    - Press Alt-TAB to switch between the builder and VC.
    - Use the same video resolution in the game and in your
    windows "desktop"
    - Use the 'Compile & Copy' feature in the builder to
    compile.
    - Start a new game in VC when changes has been made.
    - Use the F1 key to find the opcodes.


    You can create missions to run in a single- or multi-task manner.
    To make a mission run in multiple tasks, use the 'create_thread'
    or the 'create_thread_with_wasted_busted_check' command.


    You should NEVER EVER remove lines with the DEFINE OBJECT command
    because you must then change ALL the commands in the mission script
    that access these objects by their numbers. If you need to add an
    object, add it to the end of the list and then change the total
    number of objects defined.


    IF YOU THINK IT LOOKS UGLY, YOU CAN CHANGE IT.
    All the commands in my mission builders can be changed.
    Just change the 'vicescm.ini' file. Don't blame me if you
    mess it up. Create a backup first.

    With version 0.125 and later of the Vice mission builders,
    you MUST put a space between the parameters in the
    'vicescm.ini' file.


    ------------------

    5 Mission coding for newbies and retards :p

    You got the mission builder. Got it running yet ? If not, look into
    '2 Installation' and '2.1 Starting the mission builder'.

    When you got it running, read and learn all parts of this readme.

    Learn it twice.

    OK, that part done. Now, load up the Stripped_complete.txt file
    from the 'Stripped scripts' directory. Can't find the 'Stripped
    scripts' directory ? It's where you installed this mission builder.
    You're reading this readme, so you just SHOULD know where it is.

    OK, we got a script loaded. Now we need some coordinates. Load up
    the readme to my 'codecreator'. It's in the 'CodeCreator' directory.

    When you have read the readme to the codecreator, you know how to
    get those coordinates.

    Lets create a parked car. How ? You should not. You read this
    readme didn't you ? This readme says: "write parked_car and press F1".
    So, do that, and create a parked car. In case you don't get any
    parked car, make sure you have found the
    '014C: set_parked_car_generator $Car cars_to_generate_to 101'
    and make sure it is set to generate 101 cars. Still no car ?
    Did you start a new game or load a saved game ? You can't load a saved
    game. If you still haven't got any car, read the lines below, it says
    '6 Support'. That should do it. :-)

    ------------------

    6 Support

    Just go to

    http://www.gtaforums.com for

    for all the support you'll ever need.


    My web sites:
    http://home.c2i.net/barton49
    http://home.no.net/barton57
    http://home.no/bobby-stalefish/


    -----------------------


    7 Changes

    Changes since v1.2:
    - Keywords added to the opcode search function.


    Changes since v1.1:
    - Editing option 'Remark and unremark selected texts' added to IDE.

    - Compiler almost twice as fast

    - More detailed messages with the IF checking feature.

    - Another bug in the decompiler introduced with v1.0 removed.

    - Replaced support for \\ with ;;



    Changes since v1.0:
    - The CodeCreator wasn't compatible at all :( Fixed.

    - When defining arrays bigger than 30 variables, wait codes
    is inserted after every 30 variable checks.

    - A bug in the decompiler has been fixed. Decompiler rewritten and
    optimized. Thanks to masterwakelam for finding it (not really).

    - INT and FLOAT added.



    Changes since v0.22:
    - Changed the description of opcode 0054, 00A0, 00AA and
    01BB because it annoyed me.

    - Added an option to disable the "compiling success"
    messagebox because it annoyed me.

    - Removed data types '?', '??', '&', '&&' and changed data
    type for float operations to GTAMA syntax. ( .0 crap )

    - Direct mission script memory access support removed.

    - Added ARRAY support. 8-)

    - Added my VC GXT editor. It was made to easily port texts
    from GTA 1 to VC. It wasn't released earlier because of
    some weird issues about texts not showing up in the game.

    - Converter improved. More data is included in the
    converted source codes. It can convert all source codes
    from version 0.13 to this version.

    - My code creator updated to better support GTAMA
    floating-point numbers.

    - All math codes now included in the "opcodes guessing
    system" (TM)

    - When coding without specifying the opcode in the
    beginning of each line, the compiler no longer modifies
    the source code.

    - Built-in multi-line non-opcode commands no longer require
    compiling twice.



    Changes since v0.21:
    - Added some opcodes. Less opcodes have to be typed in.
    Fixed messagebox related to direct compiling so it
    makes some sense. Fixed reported size of MAIN and biggest
    mission in the messagebox. Number of decimal places to
    be returned by the CodeCreator can be changed.



    Changes since v0.14 Deluxe:
    - When compiling and copying, if the source file and the
    destination file is the same file, you get a messagebox
    saying just that.

    - If compiling fails, the file being compiled is deleted to
    prevent people from decompile files that have not been
    compiled completely.

    - "Math coding" made easier. You don't need to specify what
    opcodes to use when using commands related to
    math coding like +, -, /=, *=, and conditional
    opcodes like checking if an internal variable is equal to
    a number or another internal variable.

    - Global hotkey F6 in the CodeCreator changed to F4 because it
    conflicted with the F6 key in the mission builder (not good :)

    - Can't remember if I forgot something :p




    Changes since v0.14:
    - Map automod tool, converter and WAR mission 2nd edition.



    Changes since v0.135:
    - Opcodes never used and opcodes from gta 3 added. Thanks for
    those CyQ and TBM2k (and everybody else complaining about
    any lack of credits in this stupid readme).
    - Converter added



    Changes since v0.13:
    - Easier to set up the IDE with <alt>+<enter>. Annoying dialog
    box removed. Everything changed is automatically saved. No
    point in asking about it.

    - Opens last directory accessed when opening files.

    - Mission script size details returned when compiling and
    decompiling.

    - Major cleanup. Almost all opcodes changed. Opcodes that return
    handles has been changed to
    <returned handle> = <function that created handle>.
    Names of old opcodes changed, like init_parked_car_generator,
    parked_car_generator cars_to_generate,
    remove_references_to_actor (from cleanup_actor),
    destroy_actor_instantly, destroy_actor_with_fade (actor fades
    away like a ghost), remove_references_to_object (from
    destroy_object), one of the put_car codes changed to
    unknown_car drive_to_point.

    - Some opcodes needed added info. Info added to decompiled files
    to clear things up, like:
    001C: 1584?? > 4728?? \\ integer values only
    0024: 3008?? > 2996?? \\ floating-point values only
    003A: 6068?? == 5688?? \\ integer values and handles
    004F: create_thread ЈЈLabel010011 \\ Special rules for create_thread commands.
    0058: 2904?? += 3076?? \\ integer values
    0059: 3060?? += 3064?? \\ floating-point values
    0060: 3428?? -= 3440?? \\ integer values
    0061: 3052?? -= 3092?? \\ floating-point values
    0068: 2988?? *= 2924?? \\ integer values
    0069: 3032?? *= 3032?? \\ floating-point values
    0070: 15640?? /= 15876?? \\ integer values
    0071: 27940?? /= 19456?? \\ floating-point values
    0084: 2892?? = 2896?? \\ integer values and handles
    0086: 3052?? = 3088?? \\ floating-point values only

    - Other info added just for kicks:
    00D7: create_thread_with_wasted_busted_check ЈЈLabel012DE1 \\ Special rules for create_thread commands. Read the readme.
    01B1: give_player $PLAYER_CHAR weapon 17? 68? \\ Load the weapon model before using this
    01B2: actor 2892?? weapon = 23? ammo = 9999& \\ Load the weapon model before using this
    01C2: remove_references_to_actor 2892?? \\ Like turning an actor into a random pedestrian
    01C4: remove_references_to_object 10768?? \\ This object will now disappear when the player looks away
    034F: destroy_actor_with_fade 4148?? \\ The actor fades away like a ghost

    - Vice (and gta 3 I guess) opcodes for calculations added.



    Changes since v0.125:
    - It now always overwrite read-only files (usually without asking).
    - Opcode 000E fixed. No more E-nn numbers.
    - Other opcodes corrected / description added.
    - Some bug fixes.
    - Most parts of the ReadMe file has been updated.
    - Added my Saved Games Manager (works with any games)



    Changes since v0.12:
    - Opcodes.txt, findopc.txt, findopc2.txt, F1 key re-enabled,
    CreateFiles.exe (creates new Opcodes.txt, findopc.txt, findopc2.txt files)


    Changes since v0.11:
    - New format, compiler is now more than 3 times faster
    than any earlier mission builders.


    Changes since v0.1:
    - Now compatible with the PC version (and still compatible with
    the PS2 version).
    - Added two new opcodes (used in the PC version only).

Самые Загружаемые Файлы:

[Моды]

[Моды]

[Программы]

[Моды]

[Моды]

[Google Chrome]

[Программы]

[Моды]

[Программы]

[Программы]

      Всего комментариев: 0


      Добавлять комментарии могут только зарегистрированные пользователи.
      [ Регистрация | Вход ]
Профиль
Привет Гость!

Пожалуйста пройдите регистрацию или войдите в свой аккаунт.


Twitter
  • Загрузка
Доп. Функции
Картинка
Баннер сайта


Поиск
Друзья сайта
  • Cкрипты для uCoz,Шаблоны для uCoz Soft Бесплатная раскрутка и многое другое для uCoz на wWw.MnoGo-Softa.Net.Ru
  • Бесплатная раскрутка сайтов!
  • Инфо веб мастеру
  • Все для игры GTA: III

Статистика
Зарег. на сайте:
Всего: 393
Новых за месяц: 0
Новых за неделю: 0
Новых вчера: 0
Новых сегодня: 0
Из них:
Администраторов: 1
Гл. Модераторов: 1
Модераторов: 1
Фотошоперов: 0
Журналистов: 0
Проверенных: 12
Обычных юзеров: 377
Из них:
Парней: 368
Девушек: 25
Счетчики:
Онлайн:
Онлайн всего: 3
Гостей: 3
Пользователей: 0
Сегодня нас посетили:
Сайт оптимизирован под разрешение экрана 1280х1024 и браузеры Opera, Google Chrome и Mozilla Firefox
http://site-about-gta.ru/ © Сайт о GTA 2009 - 2024 | Копирование материалов только с ссылкой на источник
Используются технологии uCoz