Remember: If the answer to what you're looking for isn't on this list, feel free to post a question in the Support Questions forum.
Resources
- Naming characters
- Sprite rips (Make sure you don't hotlink!)
- Smilie cropper - A tool that can crop animated sprites.
- Sprite and sound wait times
- The delay for "Objection!", "Hold it!", "Take That!", "Gotcha!", "Eureka!" and "Not so fast!" is 150 centiseconds.
- The delay for one gavel smash is 100 centiseconds.
- The delay for three gavel smashes is 150 centiseconds.
- The delay for the gallery speaking is 300 centiseconds.
- The delay for Guilty and Not Guilty is 300 centiseconds.
- The delay for a door opening and closing is 150 centiseconds.
- The delay for one head nod by Phoenix Wright is 100 centiseconds.
- No message actions
Set the wait time to 1 and the action will be run instantly, without creating a pause in the progress. You can stack them and do a lot of things practically at once. However, it is recommended that you merge the statements instead (unless it is not possible). - Automatically set voices
The blip sound used for messages (i.e. male blip, female blip and typewriter) has an auto setting. It is set by the text colour. If it is green, it is typewriter. If it is set as any other colour, it is Male. Female sounds must be set manually. However, it is recommended that you automatically set it as male anyway, rather than relying on the automatic setting. - Sound and music at the same time
Create two statements. Then set the first one with the music and the second one with the sound. Then merge the two statements.
- Time and location dialogues:
Code: Select all
March 16,[#p10] 10:00 AM[#p5] District Courthouse[#p5] Courtroon No. 16
- Pressing all to proceed Cross-Examinations
Note that the following is a complex set of instructions.- First of all, each set of pressing statements needs to have an action to set a variable. Each set needs an individual variable. Name them something like press1 and so on for easy remembering.
- At the end of each set of pressing statements, you need to use the action Evaluate condition. For the expression, use the following format: press1 & press2 & press3. You can set the jump targets to any statement that you want to.
- Repeat the above step at the end of each set of your pressing statements.
If this explanation is a bit confusing, read this topic, which might be easier to understand. - Skip to a random frame
Use the action "test a variable's value", set the variable to be the expression "f:random_int(1, 4)" and set a redirection value for 1, 2, 3, 4, etc. - Increasing a variable
Variables can be used as counters for various purposes. To do this, you need to use an expression. The way to do this is to check the "expression" checkbox in a set variable action. To just increment a variable with 1, use the expression "var + 1".
If you wish to go one step further, you can use this to create loops and other normal program control structures. - The expression engine explained
As a few posts have shown already, we got an expression engine. I felt that someone should give an userfriendly explanation on how it works.
Quick word list:
Operator Thing that does stuff to one or more things. The plus sign is an operator.
Operand A value that an operator operates on.
Function A named chunk of code that does something. It may return a value.
Argument or Parameter A value passed to a function for use by the function.
Prefix Place some text before some other text or the text being placed before.
Evaluate Fancy word for "Do" or "Check"
Expression A string of values and operators that has a value.
As you might already know, it is a custom engine built by unas since he didn't feel like exposing the site to insecure usage of eval.
The engine is fairly easy to use, it has a these operators:- + Add. Add two numbers
- - Subtract. Subtract one number from another number
- - Sign flip. Flip the sign of a number
- / Division. Do an integer only division. Any reminders is thrown away.
- % Modulus, aka reminder. Gives the reminder of a division.
- ^ Power. Gives the first number to the power of the second number.
- & And. Returns a boolean that is true only if both operands is true.
- | Or. Returns a boolean that is true if one or both of the operands is true.
- ! Not. Inverts a boolean. True is false and false is true.
- = Equals. Returns true if both operands are equal.
- < Less than. Returns true if the left operand is less than the right operand.
- > Greater than. Returns true if the left operand is greater than the right operand.
- . Concanation. Joins two strings together.
- !
- ^
- *, / ,%
- +, -
- >, =, <, .
- & and |
You can use parentheses to override the operator order by wrapping the sub expression with them.
If you want to do less than or equal, you got plenty of ways of doing it, you can use <, & and = to do the check, you can use < after adding 1 to the right side and you can use !(x>y). Do the same for greater than or equal.
There are several functions that you can use:- str_begins_with. Checks if one string begins with another.
- str_contains. Checks if one string is in another.
- str_ends_with. Checks if one string ends with another.
- str_first_word. Returns the string up to the first space, the space not being included.
- str_distance. Returns the percentage of difference between two strings. Returns 100 if they have nothing in common, 0 if they are identical.
- evidence_is_revealed. Checks if a given evidence ID is revealed. You must pass the type (In French! 'preuve'='evidence' and 'profil'='profile') as the first argument.
- random_int. Generates a random number. If you call f:random_int(), the number will be chosen between 0 and 100. You can also call f:random_int(5,10) to generate a number between 5 and 10, and so on.
- get_date. f:get_date() returns the current date. The difference between two dates will be the number of milliseconds between them.
The following actions can use expressions:- DefinirVar. Set a variable. You need to check the "expression" checkbox.
- TesterVar. Test a variable. You need to check the "expression" checkbox.
- EvaluerCondition. Test a condition. You do not need to prefix the expression.