Git Product home page Git Product logo

lcs-save-editor's Introduction

GitHub release

GTA:LCS Save Editor

๐Ÿ’พ A save editor for Grand Theft Auto: Liberty City Stories.

Features

  • All versions of the game are supported: PS2, PSP, Android, and iOS.
  • Edit various player attributes including outfit, max health and armor, weapons, spawn point, and perks, including perks not used in the vanilla game like fast reload!
  • A comprehensive garage editor that lets you change many aspects of your saved vehicles. Edit vehicle model, color, extra parts like rollbars or liveries, vehicle orientation, and special properties like BP/CP/FP/EP and more! You can even spawn unused vehicles like the Maverick or Hunter.
  • A stats editor/viewer that lets you change any statistic in the game as well as preview how that change will look in the in-game Stats menu.
  • A global variables editor that gives you total control of the game state.
  • A collectible map to help you find remaining Hidden Packages, Rampages, and Unique Stunt Jumps.
  • Edit many other aspects of the game, including game settings, weather, time, and even some unused features to spice up your Liberty City experience.
  • Built-in updater so you'll get the latest feature updates as soon as they're available.

System Requirements

You may also choose to run the standalone version of this tool, which includes the .NET runtime bundled inside the executable, but at the cost of a much larger file size.

Extracting Save Files

In order to edit save files, you'll need to extract them from your console or mobile device.

Android

Save files are located at /data/data/com.rockstargames.gtalcs/files/. You'll need a rooted device to access save files.

iOS

Save files are located in the Documents folder. You'll need a jailbroken device to access save files if you're using iOS 8.3 or newer.

PS2

You'll need a cheat device, memory card reader, or a softmodded console to extract save files from the memory card. If you're using PCSX2, use mymc to access the files on the virtual memory card. Use PS2 Save Builder PS2 Save Builder to extract the raw save files after getting them off your memory card.

  1. Open you save archive in PS2 Save Builder.
  2. Right-click on a file and select "Extract".
    1. NOTE: Most GTA:LCS save files contain a colon (:) in the name. This character is invalid in Windows file names and the file will fail to extract. Triple-click on the file in PS2 Save Builder to rename it and remove this character.
  3. Open the extracted file in the GTA:LCS Save Editor and make your edits.
  4. Add your edited file(s) back into the savedata by right-clicking in the file list and selecting "Add File".
  5. Save the file and copy the save onto your console using whatever tool you used to extract it initially (e.g. mymc).

PSP

PSP saves are encrypted, so you'll have to decrypt them before the save editor will be able to read them. You can use PPSSPP, the PSP emulator, to decrypt saves.

  1. Download and install PPSSPP
  2. Disable save encryption.
    1. Open the following file in a text editor: <documents>/PPSSPP/memstick/PSP/SYSTEM/ppsspp.ini
    2. In the [SystemParam] section, add/edit the following line: EncryptSave = False
    3. Restart PPSSPP
  3. Locate the GTA:LCS save directory: <documents>/PPSSPP/memstick/PSP/SAVEDATA/<game_id>/ If you have not played GTA:LCS on PPSSPP before, create the save directory by playing through the first mission and saving the game.
  4. Pick a save slot and replace all the files in the folder with the files from the save you want to edit.
  5. Boot up GTA:LCS, load your game, and save it again. This will decrypt the save.
  6. Your decrypted save file will be loacted in: <documents>/PPSSPP/memstick/PSP/SAVEDATA/<game_id>/DATA.BIN Open this file in the GTA:LCS Save Editor and have fun! You do not need to re-encrypt the file unless you plan to play on a real PSP.

Support

Questions? Comments? Suggestions? Bugs? ๐Ÿ›๐Ÿœ
๐Ÿ‘‰ Open an issue on GitHub.
๐Ÿ‘‰ Visit the official GTAForums topic and partake in discussion.

If you like my work, buy me a coffee to show your support! โ˜•

Credits

Special thanks to GTAKid667 for designing the logo and for extensive feedback and support during development.

Thanks to Packing_Heat, _CP_, Inadequate, Lethal Vaccine, Stallion458, The Hero, Parik, AztecaEh, Username.gta, NightmanCometh96, and GTAshnik177 for providing save files and other information for research and testing.

Version History

1.0.1

10 October 2020

  • Fixed a bug that would crash the program when attempting to view the Garages tab on Windows 7.
  • Fixed a bug that would crash the program after downloading an update on some systems.
  • Improved the update dialog.
  • Minor visual tweaks.

1.0.0

20 September 2020

  • Initial release

Additional Screenshots

Legal

Copyright (C) 2016-2020 Wes Hampson

lcs-save-editor's People

Contributors

whampson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lcs-save-editor's Issues

Global Variables on PSP are misaligned

mumboking on Twitter:
Hi! I've been playing through GTA LCS in PPSSPP and just used your save editor to locate the last 2 hidden packages.
According to the map, they were number 27 and 77.
I got a bit disappointed when the packages were not there, so I thought my save was bugged.

Out of curiosity, I tried looking at the global variables.
That told me that 28 and 78 were the missing ones.
So I found those on the editor map, drove over to them, and sure enough, there the packages were!

I then tried unchecking the "Show Saved Variables Only" and found that all the variable names were 1 row behind where they should be.

image
image

Might mess with script-controlled garage doors on PS2

Over_Pro123 on August 24, 2021
I have a problem with pay and spray garage door in all islands and car bomb shop,every single garage door is stuck in a wall like this https://imgur.com/a/dhzqWEp and they won't close when i get in.That happens whanever i edit something in this editor and save it.Bug was also there when i started new game,and i only got it fixed by deleting this save file which was edited and the rest ones,which were not edited in save editor but also got affected.It's problem with the PS2 version,idk about the other versions.

Need to investigate.

ColorPicker causes UI crash on Win7

UI crashes when the Garages tab is selected on Windoes 7 machines. Issue stems from the Xceed.Wpf.Toolkit.ColorPicker class.

Error: System.Windows.Markup.XamlParseException: '{DependencyProperty.UnsetValue}' is not a valid value for property 'DropDownBackground'.
 ---> System.InvalidOperationException: '{DependencyProperty.UnsetValue}' is not a valid value for property 'DropDownBackground'.
   at System.Windows.DependencyObject.GetEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, RequestFlags requests)
   at System.Windows.DependencyObject.GetValueEntry(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, RequestFlags requests)
   at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
   at System.Windows.StyleHelper.GetChildValueHelper(UncommonField`1 dataField, ItemStructList`1& valueLookupList, DependencyProperty dp, DependencyObject container, FrameworkObject child, Int32 childIndex, Boolean styleLookup, EffectiveValueEntry& entry, ValueLookupType& sourceType, FrameworkElementFactory templateRoot)
   at System.Windows.StyleHelper.GetChildValue(UncommonField`1 dataField, DependencyObject container, Int32 childIndex, FrameworkObject child, DependencyProperty dp, FrugalStructList`1& childRecordFromChildIndex, EffectiveValueEntry& entry, ValueLookupType& sourceType, FrameworkElementFactory templateRoot)
   at System.Windows.StyleHelper.GetValueFromTemplatedParent(DependencyObject container, Int32 childIndex, FrameworkObject child, DependencyProperty dp, FrugalStructList`1& childRecordFromChildIndex, FrameworkElementFactory templateRoot, EffectiveValueEntry& entry)
   at System.Windows.StyleHelper.ApplyTemplatedParentValue(DependencyObject container, FrameworkObject child, Int32 childIndex, FrugalStructList`1& childRecordFromChildIndex, DependencyProperty dp, FrameworkElementFactory templateRoot)
   at System.Windows.StyleHelper.InvalidatePropertiesOnTemplateNode(DependencyObject container, FrameworkObject child, Int32 childIndex, FrugalStructList`1& childRecordFromChildIndex, Boolean isDetach, FrameworkElementFactory templateRoot)
   at System.Windows.FrameworkTemplate.InvalidatePropertiesOnTemplate(DependencyObject container, Object currentObject)
   at System.Windows.FrameworkTemplate.HandleBeforeProperties(Object createdObject, DependencyObject& rootObject, DependencyObject container, FrameworkElement feContainer, INameScope nameScope)
   at System.Windows.FrameworkTemplate.<>c__DisplayClass45_0.<LoadOptimizedTemplateContent>b__2(Object sender, XamlObjectEventArgs args)
   at System.Xaml.XamlObjectWriter.OnBeforeProperties(Object value)
   at System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx)
   at System.Xaml.XamlObjectWriter.WriteStartMember(XamlMember property)
   at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
   --- End of inner exception stack trace ---
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
   at System.Windows.Markup.XamlReader.RewrapException(Exception e, Uri baseUri)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)
   at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject container, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)
   at System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren)
   at System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)
   at System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)
   at System.Windows.FrameworkElement.ApplyTemplate()
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Control.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Control.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Border.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Control.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run()
   at LCSSaveEditor.GUI.App.Main()

Auto-Updater Crash

2021/02/23 17:55:04.831  Info: (C) 2016-2020 Wes Hampson
2021/02/23 17:55:04.831  Info: ========================================
2021/02/23 17:55:04.831  Info: Operating System: Microsoft Windows 10.0.15063
2021/02/23 17:55:04.831  Info:     .NET Runtime: .NET Core 3.1.8
2021/02/23 17:55:04.831  Info: GTASaveData.Core: 1.3.1.988
2021/02/23 17:55:04.831  Info:  GTASaveData.LCS: 1.1.2.177
2021/02/23 17:55:04.831  Info:  Save Editor EXE: 1.0.1.1733
2021/02/23 17:55:04.835  Info: Standalone build.
2021/02/23 17:55:04.847  Info: Loading settings...
2021/02/23 17:55:04.848  Info: Settings file not found. Using default settings.
2021/02/23 17:55:04.882  Info: Loading carcols...
2021/02/23 17:55:04.893  Info: Loaded 101 car colors.
2021/02/23 17:55:04.904  Info: Loading GXT...
2021/02/23 17:55:05.434  Info: Loaded 5990 GXT entries from 91 tables.
2021/02/23 17:55:09.188  Info: Checking for updates...
2021/02/23 17:55:09.374  Info: Searching for GTA:LCS save files...
2021/02/23 17:55:10.299  Info: Search completed. Found 1 save files.
2021/02/23 17:55:10.600 Error: System.NullReferenceException: Object reference not set to an instance of an object.
   at LCSSaveEditor.GUI.Utils.Updater.GetHttpResponse(HttpWebRequest req)
   at LCSSaveEditor.GUI.Utils.Updater.GitHubApiGet(String url)
   at LCSSaveEditor.GUI.Utils.Updater.GetReleaseInfo()
   at LCSSaveEditor.GUI.Utils.Updater.CheckForUpdate()
   at LCSSaveEditor.GUI.ViewModels.MainWindow.CheckForUpdates(Boolean popupIfNoneFound)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_0(Object state)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run()
   at LCSSaveEditor.GUI.App.Main()
2021/02/23 17:55:10.695  Info: A catastrophic error has occurred. Please report this issue to [email protected].

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.