Editor Introduction

Sourc[e]x · 15111

0 Members and 1 Guest are viewing this topic.

Editor Introduction
on: July 02, 2013, 03:48:30 PM

The JetCraft Editor is a powerful tool included in the main game in which you can craft your very own JetCraft levels.

You can find the work-in-progress manual here.

Editor Features:
 • 32x32 map size
 • 32 save slots
 • Intuitive and fast tile selection system
 • Copy, paste, undo and redo systems
 • Hundreds of different items
 • Item selection by category and search-by-name dialog
 • Tile chain triggering system
 • Custom C-based scripting language (JetScript)
 • Map and script debugging tools

Editor Hotkeys:
Left Mouse Button: Select single tile
Right Mouse Button (click): Clear selection
Right Mouse Button (hold): Drag-select tiles
Shift (hold, while selecting): Add to selection
Alt (hold, while selecting): Remove from selection
Ctrl+A: Select all tiles
Ctrl+I: Invert selection

Spacebar: Insert the currently selected item into the selected tiles
Delete: Clears the selected tiles for items and connections
Shift+Delete: Delete the currently selected item's layer from selection
Alt+Delete: Remove the currently selected item type from selection
Ctrl+C (single tile selected): Clone the content of the selected tile
Ctrl+V (single tile copied): Fills the selected tiles with the content of the cloned tile
Ctrl+C (multiple tiles selected): Copy selected tiles
Ctrl+V (multiple tiles copied): Paste copied tiles
Ctrl+Z: Undo changes
Shift+Z: Redo changes

C: Connect/linking mode
D: Disconnect/unlink selected tiles
X: Open item search menu
S: Retrieve item type from selected tile
G: Toggle grid on/off
Q: Toggle layer coloring on/off
T: Start/stop test play
R (during test play): Reset game
Tab: Minimize/maximize interface

Arrow Keys: Move selection
Shift+Arrow Keys: Move selected tiles
Arrow Keys (game camera): Move camera
Shift+Arrow Keys (game camera): Move camera faster
Ctrl+Numpad #: Save current selection to slot #
Numpad #: Load selection from slot #
Alt+Numpad #: Remove slot # from the current selection
Ctrl+Alt+Numpad #: Add slot # to the current selection
« Last Edit: July 03, 2013, 03:26:19 PM by Sourc[e]x »



Editor Introduction
Reply #1 on: July 03, 2013, 01:03:18 PM

Are you going to put a command list??


Editor Introduction
Reply #2 on: July 03, 2013, 03:05:54 PM

I'm not quite sure what you mean by commands in this case. Care to elaborate?



Editor Introduction
Reply #3 on: July 05, 2013, 01:09:16 PM

I'm not quite sure what you mean by commands in this case. Care to elaborate?
Sorry, I meant like a all the keywords used in Jetscript. I ask because  I can implement a highlighting in this page that fits the Jetscript and you and any user can show it properly using the code tag.

The bbcode would be:
[code=jetscript]if (RandomInt(0,1) == 0)
    Message("Random integer is zero.")
elseif (RandomInt(0,1) == 0)
    Message("Random integer is indeed zero.")
else
    Message("I give up. Random integer is one.")
endif

while (i < 32)
    i++
endwhile[/code]
and the output will be:
Code: Text
  1. if (RandomInt(0,1) == 0)
  2.     Message("Random integer is zero.")
  3. elseif (RandomInt(0,1) == 0)
  4.     Message("Random integer is indeed zero.")
  5. else
  6.     Message("I give up. Random integer is one.")
  7. endif
  8.  
  9. while (i < 32)
  10.     i++
  11. endwhile

Obviously, highlighted :)


Editor Introduction
Reply #4 on: July 05, 2013, 02:20:30 PM

Oh man, JetScript highlighting would've been sweeeeet :)

types: int, bool, fixed, string, void
keywords: global, readonly, free, if, else, elseif, endif, while, endwhile, debug, enddebug, continue, exit, break, //
Operators: =, +, -, *, /, %, +=, -=, *=, /=, %=, ++, --, !, ==, !=, &&, ||, <, >, >=, <=,  [, ]

This might not be possible, but is there a way to automatically space and indent a single line of code using semicolon as the newline delimiter?
e.g. inserting:
Code: [Select]
while (i < 32);i++;endwhilewould become:
Code: [Select]
while (i < 32)
    i++
endwhile
and can be copied as a single string again?

Because copying and pasting the code line by line can be a pain in the ass, and I'm creating a script exporter/importer inside the JetScript editor which takes and returns code in that format.
« Last Edit: July 06, 2013, 04:21:34 PM by Sourc[e]x »



Editor Introduction
Reply #5 on: July 05, 2013, 03:44:45 PM

Oh man, JetScript highlighting would've been sweeeeet :)

types: int, bool, fixed, string
keywords: global, readonly, free, if, else, elseif, endif, while, endwhile, debug, enddebug, //
Operators: =, +, -, *, /, %, +=, -=, *=, /=, %=, ++, --, !, ==, !=, &&, ||, <, >, >=, <=,  [, ]
Ok, it seems a piece of cake. Just one question... Jetscript supports escape keywords?? for example: to insert a quote character in a text in php you use "\" :"He said \"hello\""

Quote
This might not be possible, but is there a way to automatically space and indent a single line of code using semicolon as the newline delimiter?
e.g. inserting:
Code: [Select]
while (i < 32);i++;endwhilewould become:
Code: [Select]
while (i < 32)
    i++
endwhile
and can be copied as a single string again?

Because copying and pasting the code line by line can be a pain in the ass, and I'm creating a script exporter/importer inside the JetScript editor which takes and returns code in that format.
No promises... but I'll check if I can insert a conditional in the highlightning code to do that.


Editor Introduction
Reply #6 on: July 05, 2013, 04:03:53 PM

Ok, it seems a piece of cake. Just one question... Jetscript supports escape keywords?? for example: to insert a quote character in a text in php you use "\" :"He said \"hello\""
JetScript does not support escape characters. Instead, quote and linebreak characters must be inserted with function calls.

No promises... but I'll check if I can insert a conditional in the highlightning code to do that.
If it's not doable, I could add it as part of the MapString Converter.



Editor Introduction
Reply #7 on: July 06, 2013, 07:07:35 AM

JetScript does not support escape characters. Instead, quote and linebreak characters must be inserted with function calls.
Ok, that ease highlightning implementation
Quote
If it's not doable, I could add it as part of the MapString Converter.
If I can't implement it in the same highlightning process, then I'll inform you :)


Editor Introduction
Reply #8 on: July 06, 2013, 01:11:28 PM

Okay :)

EDIT: New upcoming JetScript keywords: exit, continue and break
« Last Edit: July 06, 2013, 04:36:29 PM by Sourc[e]x »



Editor Introduction
Reply #9 on: July 09, 2013, 11:11:24 AM

Could you please give a hand with the supported function names?

I'd like in this format:

Code: PHP
  1. 'exit', 'continue', 'break'

If you want the functions categorized, please group them with the respective html color an style.

I still haven't achieved the ; replacement, but still I have a possible idea about how to do it.


Editor Introduction
Reply #10 on: July 10, 2013, 06:52:19 AM

Could you please give a hand with the supported function names?

I'd like in this format:

Code: PHP
  1. 'exit', 'continue', 'break'

If you want the functions categorized, please group them with the respective html color an style.

I still haven't achieved the ; replacement, but still I have a possible idea about how to do it.

Like this?

Types: bold, #0000ff
Code: PHP
  1. 'int', 'bool', 'fixed', 'string', 'void'

Keywords: #0000ff
Code: PHP
  1. 'global', 'readonly', 'free', 'if', 'else', 'elseif', 'endif', 'while', 'endwhile', 'debug', 'enddebug', 'resize', 'continue', 'exit', 'break'

Functions: bold, #8080ff
Code: PHP
  1. 'EventTile', 'EventKey', 'EventHealthAmount', 'EventHealthType', 'EventEntity', 'IntToString', 'StringToInt', 'IntToFixed', 'FixedToInt', 'FixedToString', 'FixedToStringPrecision', 'StringToFixed', 'BoolToString', 'BoolToInt', 'IntToBool', 'ColorToHex', 'TimeFormat', 'Wait', 'Message', 'ClearMessages', 'RunScript', 'EnableScript', 'CurrentScript', 'VariableExists', 'VariableArrayLength', 'GameEndVictory', 'GameEndDefeat', 'GameKeysTotal', 'GameKeysCollected', 'GameKeysRemaining', 'GameExitIsOpen', 'GameIsMultiplayer', 'GameGetElapsedTime', 'GameSetGravity', 'GameResetGravity', 'ScoreBonusAdditionCreate', 'ScoreBonusPercentCreate', 'ScoreBonusMultiplyCreate', 'LineBreak', 'Quote', 'StringLength', 'SubString', 'StringWord', 'ColorizeString', 'StyleString', 'StringInsertImage', 'PlayerKill', 'PlayerAddHealth', 'PlayerSetHealth', 'PlayerGetHealth', 'PlayerAddScore', 'PlayerAddScoreMultiplier', 'PlayerMoveInstantly', 'PlayerAddFuel', 'PlayerGetFuel', 'PlayerEnableUserControl', 'PlayerSetInvincible', 'PlayerIsInvincible', 'PlayerIsDead', 'PlayerIsWalking', 'PlayerIsFlying', 'PlayerIsClimbing', 'PlayerIsOnLadder', 'PlayerIsFalling', 'PlayerGetX', 'PlayerGetY', 'PlayerSetX', 'PlayerSetY', 'PlayerGetXVelocity', 'PlayerGetYVelocity', 'PlayerSetXVelocity', 'PlayerSetYVelocity', 'PlayerGetKey', 'PlayerKeyIsPressed', 'PlayerCurrentTile', 'PointIsPathable', 'PointContainsPlayer', 'PointContainsEntity', 'DamagePoint', 'DestroyEntitiesInRangeOfPoint', 'DistanceBetweenPoints', 'AngleBetweenPoints', 'Tile', 'TileFromXY', 'TileContainsPlayer', 'TileGetX', 'TileGetY', 'TileGetRow', 'TileGetCollumn', 'TileGetMaxRows', 'TileGetMaxCollumns', 'TileIsPassable', 'TileForcePassable', 'TileActivate', 'TileGetItem', 'TileSwapItem', 'TileGroupCreate', 'TileGroupDestroy', 'TileGroupAdd', 'TileGroupAddRegion', 'TileGroupAddGroup', 'TileGroupRemove', 'TileGroupRemoveRegion', 'TileGroupRemoveGroup', 'TileGroupCount', 'TileGroupHasTile', 'TileGroupClear', 'TileGroupCenterTile', 'TileGroupContainsPlayer', 'TileGroupSwapItem', 'TileGroupLoop', 'TileGroupLoopCurrent', 'TextTagCreate', 'TextTagSetAlignment', 'TextTagSetPosition', 'TextTagAttachToPlayer', 'TextTagFadeOut', 'TextTagDestroy', 'ModelCreate', 'ModelDestroy', 'ModelFadeOut', 'ModelSetPosition', 'ModelSetFacing', 'ModelSetScale', 'ModelSendMessage', 'ModelCreatePlayerCopy', 'InterfaceCreateImage', 'InterfaceCreateLabel', 'InterfaceCreateUIFrame', 'InterfaceSetPosition', 'InterfaceSetSize', 'InterfaceSetText', 'InterfaceSetImageRotation', 'InterfaceSetVisible', 'InterfaceDestroy', 'CameraDetach', 'CameraAttach', 'CameraMove', 'CameraSetDistance', 'CameraSetRoll', 'CameraReset', 'ItemGetName', 'ItemIsPassable', 'ItemIsClimbable', 'ItemIsCollectable', 'ItemIsLethal', 'EntityCreate', 'EntityGetType', 'EntityGetX', 'EntityGetY', 'EntityGetCustomValue', 'EntityGetCurrentTile', 'EntitySetX', 'EntitySetY', 'EntitySetCustomValue', 'EntitySetVelocity', 'EntitySetDirection', 'EntityDestroy', 'PlaySound', 'PlaySoundAtPoint', 'RandomInt', 'RandomFixed', 'Sin', 'Cos', 'Tan', 'ASin', 'ACos', 'ATan', 'ATan2', 'AbsInt', 'AbsFixed', 'Log', 'Log2', 'Exp', 'SquareRoot', 'ModInt', 'ModFixed', 'MaxInt', 'MaxFixed', 'MinInt', 'MinFixed', 'Pow', 'AnchorTopLeft', 'AnchorTop', 'AnchorTopRight', 'AnchorLeft', 'AnchorCenter', 'AnchorRight', 'AnchorBottomLeft', 'AnchorBottom', 'AnchorBottomRight'



Editor Introduction
Reply #11 on: July 10, 2013, 07:52:11 AM

PERFECT!!! now's my turn :) please be patient...


 

Chaos Realm - The world of Game modders and wc3 addicts     WC3JASS.com - The JASS Vault   Jetcraft - A Starcraft II mod