Graal Forums  

Go Back   Graal Forums > Development Forums > NPC Scripting > New Scripting Engine (GS2)
FAQ Members List Calendar Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 02-27-2012, 06:47 PM
fowlplay4 fowlplay4 is offline
team canada
fowlplay4's Avatar
Join Date: Jul 2004
Location: Canada
Posts: 5,200
fowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond repute
GS2 Emulator

We're all aware of the issue regarding being unable to test GS2 without NC, and that GS2 is very similar to JavaScript. It's similar enough with a little bit of replacing that I could get a bunch of basic output scripts to run.

So in order to help newbies get into GS2 and complete the first few (5) parts and first challenge of my tutorial I have created a basic emulator.

This is currently just a learning tool to allow newbies to get their feet wet, anyone who wants to further develop it is welcome to. There's still plenty to do. I.e. Simulated Client-Side/Server-Side functionality (and triggerserver/triggerclient), proper temp prefix functionality, GS2 to JS array conversion, numerous global functions.

Notes:
  • Concatenation symbols (@, SPC, NL, TAB) are replaced with their javascript equivalent.
  • All variables are global so the temp prefix will not work the same way as it does in GS2.
  • Arrays and a vast majority of other functions are currently not emulated. If you want to use array's use [ and ] instead of { } when defining them.

Enjoy.

Link: http://fp4.ca/gs2emulator/
Tutorial: http://public.zodiacdev.com/index.php?title=Fowlplay4
__________________
Quote:

Last edited by fowlplay4; 02-27-2012 at 08:35 PM..
Reply With Quote
  #2  
Old 02-27-2012, 07:19 PM
Cubical Cubical is offline
Banned
Join Date: Feb 2007
Posts: 1,348
Cubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant future
I'm attempting to test it on my phone. This isn't working for me

function onCreated() {
temp.I =0;
Temp.t = { "Paul", "frank", "Sam"};
For(temp.I=0; temp.I<temp.t.size();temp.I++){
Echo(temp.t[temp.I]);
}
}
Reply With Quote
  #3  
Old 02-27-2012, 07:22 PM
Cubical Cubical is offline
Banned
Join Date: Feb 2007
Posts: 1,348
Cubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant future
Attempted using [ and ] for the array
Reply With Quote
  #4  
Old 02-27-2012, 07:26 PM
Cubical Cubical is offline
Banned
Join Date: Feb 2007
Posts: 1,348
Cubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant future
This forest work either
function onCreated() {
Temp.t = [ "Paul", "frank", "Sam"];
For(temp.I : temp.t){
Echo(temp.I);
}
}
Reply With Quote
  #5  
Old 02-27-2012, 07:36 PM
fowlplay4 fowlplay4 is offline
team canada
fowlplay4's Avatar
Join Date: Jul 2004
Location: Canada
Posts: 5,200
fowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond repute
Anything array-based really doesn't work at all unless you know how arrays work in JS.

The temp is case-sensitive, and it's length not size() in JS. What does work is:

PHP Code:
function onCreated() {
  
temp.= ["Paul""frank""Sam"];
  for (
temp.I=0temp.temp.t.lengthtemp.I++){
    echo(
temp.t[temp.I]);
  }

The only GS2 function that is currently implemented is echo().

Keep in mind this emulator is still very much a work-in-progress.
__________________
Quote:
Reply With Quote
  #6  
Old 02-27-2012, 07:39 PM
Tolnaftate2004 Tolnaftate2004 is offline
penguin.
Join Date: Jul 2004
Location: Berkeley, CA
Posts: 534
Tolnaftate2004 is a jewel in the roughTolnaftate2004 is a jewel in the rough
Send a message via AIM to Tolnaftate2004
JavaScript uses for (member in object) { ... } which is like for (member: object.getvarnames()) { ... }. That's probably why it's not working.

e: Good lord is this a horror.

e2: Array.prototype.size = function () { return this.length; }. Do it.
__________________
◕‿‿◕ · pfa · check yer syntax! · src

Killa Be: when i got that locker in 6th grade the only thing in it was a picture of a midget useing a firehose :/
Reply With Quote
  #7  
Old 02-27-2012, 08:02 PM
fowlplay4 fowlplay4 is offline
team canada
fowlplay4's Avatar
Join Date: Jul 2004
Location: Canada
Posts: 5,200
fowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond repute
Cleaned up the source code a little bit, added size since it was right there.

gs2_setup() - Implements some GS2-like functionality.
gs2_script() - Does some small conversions.
gs2_emulate() - Calls setup, clears output, gets script, and evals it as JS.

So if you want to add to it go for it.

This also works now but I would suggest not trying to script on your phone.

PHP Code:
function onCreated() {
  
temp.=0;
  
temp.= ["Paul""frank""Sam"];
  for (
temp.I=0temp.temp.t.size(); temp.I++){
    echo(
temp.t[temp.I]);
  }

__________________
Quote:
Reply With Quote
  #8  
Old 02-27-2012, 08:21 PM
Cubical Cubical is offline
Banned
Join Date: Feb 2007
Posts: 1,348
Cubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant futureCubical has a brilliant future
I was just testing it on my phone. I wouldn't normally use uppercase letters when defining a variable it was just the auto correct on my phone. If I had known it would make a difference I would have changed it.this thing is still pretty nifty
Reply With Quote
  #9  
Old 02-27-2012, 09:13 PM
smirt362 smirt362 is offline
Tee Hee
smirt362's Avatar
Join Date: Feb 2005
Location: Texas
Posts: 2,101
smirt362 has a brilliant futuresmirt362 has a brilliant futuresmirt362 has a brilliant futuresmirt362 has a brilliant futuresmirt362 has a brilliant futuresmirt362 has a brilliant futuresmirt362 has a brilliant future
Send a message via AIM to smirt362 Send a message via MSN to smirt362
Neato!
__________________

Don Hertzfeldt <3
Reply With Quote
  #10  
Old 02-27-2012, 09:16 PM
Hezzy002 Hezzy002 is offline
Registered User
Join Date: Jul 2011
Posts: 247
Hezzy002 is a jewel in the roughHezzy002 is a jewel in the rough
Quite the hack, but I guess it's better than nothing.
Reply With Quote
  #11  
Old 02-27-2012, 09:35 PM
Crono Crono is offline
:pluffy:
Join Date: Feb 2002
Location: Sweden
Posts: 20,000
Crono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond repute
oh graal players, always doing the dirty work "they" should have done ages ago
__________________
Reply With Quote
  #12  
Old 02-27-2012, 09:59 PM
Tricxta Tricxta is offline
The Muffin Man
Tricxta's Avatar
Join Date: Oct 2010
Location: Australia
Posts: 563
Tricxta is a jewel in the roughTricxta is a jewel in the rough
I spose you're still yet to implement for each loops?
Reply With Quote
  #13  
Old 02-27-2012, 10:09 PM
fowlplay4 fowlplay4 is offline
team canada
fowlplay4's Avatar
Join Date: Jul 2004
Location: Canada
Posts: 5,200
fowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond reputefowlplay4 has a reputation beyond repute
Quote:
Originally Posted by Tricxta View Post
implemented for each loops?
They are not, need arrays properly converted before that will happen.
__________________
Quote:
Reply With Quote
  #14  
Old 02-27-2012, 10:24 PM
Hezzy002 Hezzy002 is offline
Registered User
Join Date: Jul 2011
Posts: 247
Hezzy002 is a jewel in the roughHezzy002 is a jewel in the rough
I really wish you never did this. It's never going to get anywhere because it's a weird Javascript parser and preprocessor step rather than an actual VM or even interpreter, yet people in the future will point back to it and go, "Look, it exists! Now shut up." There are so many reasons why this is a bad idea.
Reply With Quote
  #15  
Old 02-27-2012, 10:27 PM
Crono Crono is offline
:pluffy:
Join Date: Feb 2002
Location: Sweden
Posts: 20,000
Crono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond reputeCrono has a reputation beyond repute
Quote:
Originally Posted by Hezzy002 View Post
I really wish you never did this. It's never going to get anywhere because it's a weird Javascript parser and preprocessor step rather than an actual VM or even interpreter, yet people in the future will point back to it and go, "Look, it exists! Now shut up." There are so many reasons why this is a bad idea.
Sure is better than nothing for newbies who want to learn.
__________________
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 03:00 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.