The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Game Development > Scripts & Tutorials
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Scripts & Tutorials This forum is for scripts and code, as well as all kinds of tutorials, software, tools and so forth. Remember to give credit!
The thread revival limit does not apply here.


Reply
 
Thread Tools
  #1    
Old July 1st, 2012, 06:28 PM
hansiec's Avatar
hansiec
Scripting Genius
 
Join Date: Aug 2009
Location: Near a laptop
Age: 17
Gender: Male
Nature: Quiet
Ruby helper is a script made to help people to script in xp much easier, instead of saying:

pbAddPokemon(PBSpecies::BULBASAUR,1)

you can say:

give pokemon PBSpecies::BULBASAUR 1

but that's not all, you may input code from: strings, files, and urls!

you may add custom vars/phrases!

phrases are small lines of code to use (give as an example goes to a function call pbAddScene which takes 3 arguments, type1, arg1, arg2 pokemon is the first argument in my example and bulbasaur is the second then lastly 1 the level)

vars are variables (pokemon is a variable as an example again) pokemon = 'pokemon'

NOTE: A FULL FAQ IS IN THE SCRIPT!

Code:
=begin
Version: 1.0
Author: Hansiec
Description:
Allows you to store very commonly stored data into a smaller string executable
by my Script Helper.

Help:
phrases: a phrase usually calls a small code/function
threads: stored scripts that were recently called
custom_vars: like phrases but can be used alongside functions

Features:
make preset codes/functions to help make scripts easier
reads, stores, and executes threads
reads threads from files
reads threads from webpages
allow in-game adding of phrases (best option for in-game updates through various
features)
build in encrypter (not the best)
threads/phrases are saved alongside variables
removes any unwanted data (like putting in: aaa will have no effect unless there
is an argument needing aaa) but this means that you cannot have spaces in your
variables, x = 10 will not work but x=10 will work

Apps:
addPhrase(phrase, value) -- adds a new phrase into the list
removePhrase(phrase) -- removes a phrase
readUrl(url) -- executes a script from a url
readFile(file name) -- executes a script from a file
readThread(thread) -- executes a script from string
encrpyt(string or integer, enc number) -- encrypts a string or integer
decrypt(string or integer, enc number) -- decrypts a string or integer

Faq:

Q:
How do I call the main functions?
A:
For the main function: $RubyHelper.readThread(thread) for other functions:
$RubyHelper.function

Q:
Why should I use this script?
A:
You can make more advanced scripts easier (like mystery gift):
"url_get url_here gift = url.split('\n'); give pokemon gift[0] gift[1]"
Note that this does not check against multipul gifts, but it does work.

Q:
How do I make a newline? (for something like an if statement)
A:
use either 2 functions: ~~ or ; (this is auto added with phrases only applied to
threads not files/urls)

Q:
How do I use functions?
A:
simmilar to normal but slightly different: functionName(argument amount),
the argument amount indicates the amount of arguments in the function.
(this only takes effect in the phrases section otherwise it is normal usage.)

Q:
What are phrases?
A:
Phrases are preset codes/functions which can reduce the amount of work needed
to make a script.

Q:
What are threads?
A:
Threads are code inside strings (example: "phrase arg1" is a thread) threads can
also include phrases and code together (example: "pl print('Bob')" will work) 

Q:
How do I use the encrypter?
A:
"encrypt string integer", the same arguments for decrypting

Q:
What is the ~ in the threads?
A:
This is mostly for variables, what it does though is to notify not to add the ;
at the end of the phrase.

Q:
I get an error with the url functions!
A:
Insert the socket functions included in the demo (poke essentials also includes this)

Q:
I get an error with using phrases!
A:
Many things can go wrong here but try these: spelling
(string still need a '' or "" with them), you can't use phrases as arguments
examples: (encrypt url_get 'http://www.google.com' 10) is wrong use this:
(url_get 'http://www.google.com' encrypt url 10), you may however use custom vars

=end

# var_name => value (no spaces in the name)
$custom_vars = {
"url" => "$url", # url variable
"latest_thread" => "getThread($threads.length-2)", # the last thread besides this thread
"pokemon" => "'pokemon'",
"badge" => "'badge'",
"item" => "'item'",
"egg" => "'egg'",
"money" => "'money'"
# "var_name" => "value (strings still need to be defined with '' or "")"
}

# sample: "give_pokemon PBSpecies::BULBASAUR 2"
$phrases = {
"give" => "pbAddScene(3)",
"makes" => "==~", # used with an if
"done" => "end", # another addition, this allows you to put in done
"give_pokemon" => "pbAddPokemon(2)", # give's a pokemon
"give_item" => "Kernel.pbReceiveItem(1)", # give's an item
"give_egg" => "pbGenerateEgg(1)", # give's an egg
"encrypt" => "encrypt(2)", # encrypt's string/integer
"decrypt" => "decrypt(2)", # decrypt's a string/integer
"url_get" => "$url = pbDownloadToString(1)", # gets a url
"url_post" => "$url = pbPostDataToString(2)", # sends post to a url and get's the output
"url_to_file" => "pbPostToFile(2)", # same as post but saves the text in a file
"print" => "print~", # print function 0 = string
"p" => "print~", # print function
# these are test functions, they may be delted at your own will
"pl" => "print('This is a test to show you how this works!')",
"pl2" => "print('source code of thread: '+getThread())",
# "phrase" => "function or code (argument amount)"
}
$threads = [] # used to store scripts that were called
PHRASEVAR = 24
THREADVAR = 25
class ScriptHelper
  
  def addPhrase(phrase,value)
    # Adds a new phrase to the list
    $phrases[phrase] = value
  end
  
  def saveStatus()
    # save the Phrase/Thread status
    $game_variables[THREADVAR] = $threads
    $game_variables[PHRASEVAR] = $phrases
  end
  
  def loadStatus()
    # load the Phrase/Thread status
    if $game_variables[PHRASEVAR] != 0
    $phrases = $game_variables[PHRASEVAR]
    $threads = $game_variables[THREADVAR]
    end
  end
  
  def removePhrase(phrase)
    # delete a phrase
    $phrases[phrase]=nil
  end
  
  def saveThread(thread)
    # saves a thread
    saveStatus()
    $threads.push(thread)
  end
  
  def getThread(id=-1)
    # get's a thread from the saved list
    return $threads[id] if $threads.length-1 >= id and id > -1
    return $threads[$threads.length-1]
  end
  
  def splitThread(thread)
    # splices the thread into readable strings
    saveThread(thread) # save's the thread
    str = thread.split(" ") # split the thread into different strings
    return str
  end
  
  def readUrl(url)
    act=pbDownloadToString(url).split("\n")
    string=act[0]
    for i in 0..act.length-2
      string+="; #{act[i+1]}"
    end
    self.readThread(string)
  end
  
  def readFile(fname)
    act=IO.readlines(fname)
    string=act[0]
    for i in 0..act.length-2
      string+="; #{act[i+1]}"
    end
    self.readThread(string)
  end
  
  def readThread(thread)
# reads the thread then executes the thread.    
    for i in $custom_vars.keys
      eval(i+" = "+$custom_vars[i])
    end
    loadStatus()
    str = splitThread(thread)
    for i in 0..str.length-1
      oth=str[i].split(".")
      if $phrases[str[i]] != nil
        str[i] = $phrases[str[i]]
        nx = "o"
        nx[0] = str[i][str[i].length-1]
        if nx == "~"
          str[i]=str[i].split("~")[0]
        else
          str[i]="#{str[i]};"
        end
        num=0
        for y in 0..str[i].length-1
          x="a"
          x[0]=str[i][y]
          for xx in 0..9
            if x == "#{xx}"
              num = xx
              break
            end
          end
        end
        if num != 0
          ary=str[i].split("(")
          new=ary[0]+"("+str[i+1].to_s
          for j in 0..num-2
            if str[i+(j+2)] == nil
              break
            else
              new+=","+str[i+(j+2)].to_s
            end
          end
          new+=")"
          str[i]=new
        end
      elsif $phrases[oth[0]] != nil
        nx = "o"
        str[i]=$phrases[oth[0]]
        nx[0] = str[i][str[i].length-1]
        if nx == "~"
          str[i]=$phrases[oth[0]]+"."+oth[1]
          str[i]=str[i].split("~")[0]+str[i].split("~")[1]
        else
          str[i]=$phrases[oth[0]]+"."+oth[1]
          str[i]+=";"
        end
      end
    end
    code=""
    string = false
    string2 = false
    _if = false
    for k in str
      for s in 0..k.length
        # string testing must be done before testing the rest.
        x="1"
        x[0]=k[s] if k[s] != nil
        if x == "'"
          if string == true
            string = false
          else
            string = true
          end
          break
        end
        if x == '"'
          if string2 == true
            string2 = false
          else
            string2 = true
          end
          break
        end
        if x == ";" or k == "~~" or k == "\n" or k == "then"
          _if = false
        end
      end
      for l in 0..k.length
        x="1"
        x[0]=k[l] if k[l] != nil
        allow = false
        for aaa in $phrases.keys
          if $phrases[aaa] == k or $phrases[aaa] == k+"~"
            allow = true
            break
          end
        end
        if k == "if"
          _if = true
        end
        if _if == true or allow == true or string == true or string2 == true or x == "$" or k == "~~" or x == ";" or x == "=" or x == "(" or x == ")" or x == "{" or x == "}" or x == "[" or x == "]" or x == "'" or x == '"'
          if k == "~~" or k == "\n"
            k = " ;"
          end
            code = "#{code} #{k}"
          break
        end
      end
    end
    eval(code)
    return true
  #rescue
    return false
  end
  
  
end

# not the best encrypter but it does somewhat encrypt stuff (only string/integers)

def encrypt(str,val)
  val = val.to_i
  if str.is_a?(String)
    new=""
    for i in 0..str.length-1
      new+=str[i]+val+((i/2).floor)
    end
  else
    new = str * val + 17 / 8 * 88 - val + str * 1142 - 987 - (val+str*2)
  end
  return new
end

def decrypt(str,val)
  val = val.to_i
  if str.is_a?(String)
    new=""
    for i in 0..str.length-1
      new+=str[i]-val-((i/2).floor)
    end
  else
    new = (val+str*2) + 987 + 1142 / str - val + 88 / 8 * 17 - val / str
  end
  return new
end
      
# some extras

def pbAddScene(type, arg1, arg2)
  if type == "pokemon" # pokemon
    pbAddPokemon(arg1, arg2)
  elsif type == "item" # item
    Kernel.pbReceiveItem(arg1)
  elsif type == "egg" # egg
    if $Trainer.party.length < 6
      pbGenerateEgg(arg1)
    else
      Kernel.pbMessage(_INTL("Not enough space in your party for the egg."))
    end
  elsif type == "badge" # badge
    $Trainer.badges[arg1] == arg2
  elsif type == "money" # money
    $Trainer.money += arg1
  end
end

# finally we set the variable

$RubyHelper = ScriptHelper.new
__________________
Things I'm working on:
Pokemon Essentials GTS System
Pokemon Essentials Mach & Acro Bike Script
PvP Script
Random Battle Generator

If you wish to donate to me you can do so here:
https://www.paypal.com/cgi-bin/websc...if%3aNonHosted
Reply With Quote
  #2    
Old July 9th, 2012, 06:13 AM
khkramer's Avatar
khkramer
 
Join Date: Apr 2010
Gender: Male
Hmmm, sounds interesting!
I'll give it a try later today.
__________________
Reply With Quote
  #3    
Old August 11th, 2012, 05:21 PM
nuzamaki90's Avatar
nuzamaki90
Knight of The Volt
 
Join Date: Feb 2008
Location: North Carolina
Age: 20
Gender: Male
Nature: Relaxed
This could actually help me out a ton.

I'll give it a go later :D
Reply With Quote
Reply
Quick Reply

Sponsored Links


Thread Tools

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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 04:50 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.