Graal Forums  

Go Back   Graal Forums > Development Forums > NPC Scripting
FAQ Members List Calendar Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 05-19-2007, 04:25 PM
theHAWKER theHAWKER is offline
**FLIP OUT**
theHAWKER's Avatar
Join Date: Mar 2006
Location: canada, vancouver
Posts: 768
theHAWKER is an unknown quantity at this point
function...

is there a function like "function onPlayerMoves()" or something that would update the npc every time the player moves??
__________________
**FLIP OUT**
Reply With Quote
  #2  
Old 05-19-2007, 04:26 PM
Chompy Chompy is offline
¯\(º_o)/¯
Chompy's Avatar
Join Date: Sep 2006
Location: Norway
Posts: 2,815
Chompy is just really niceChompy is just really niceChompy is just really nice
Send a message via MSN to Chompy
use a loop to check the players x and y movement
__________________
Reply With Quote
  #3  
Old 05-19-2007, 04:32 PM
Gambet Gambet is offline
Registered User
Join Date: Oct 2003
Posts: 2,712
Gambet is on a distinguished road
You could set two constant clientside variables that monitor the player's LAST x and y coordinates in a system NPC and then do something like:

PHP Code:
//#CLIENTSIDE
function onKeyPressed()
{
 for (
dir 0dir 4dir++)
  {
   if (
keydown(dir))
    {
     if (
player.!= client.lastplayer_x || player.!= client.lastplayer_y)
      {
       
//The player has moved!
      
}
    }
  }

Reply With Quote
  #4  
Old 05-19-2007, 04:33 PM
theHAWKER theHAWKER is offline
**FLIP OUT**
theHAWKER's Avatar
Join Date: Mar 2006
Location: canada, vancouver
Posts: 768
theHAWKER is an unknown quantity at this point
so are you saying that there isn't?
__________________
**FLIP OUT**
Reply With Quote
  #5  
Old 05-19-2007, 04:34 PM
Gambet Gambet is offline
Registered User
Join Date: Oct 2003
Posts: 2,712
Gambet is on a distinguished road
Quote:
Originally Posted by theHAWKER View Post
so are you saying that there isn't?

No, make your own system for it.
Reply With Quote
  #6  
Old 05-19-2007, 04:55 PM
theHAWKER theHAWKER is offline
**FLIP OUT**
theHAWKER's Avatar
Join Date: Mar 2006
Location: canada, vancouver
Posts: 768
theHAWKER is an unknown quantity at this point
Quote:
Originally Posted by Gambet View Post
No, make your own system for it.
umkay, but there should be a built in function for that
__________________
**FLIP OUT**
Reply With Quote
  #7  
Old 05-19-2007, 05:14 PM
Twinny Twinny is offline
My empire of dirt
Twinny's Avatar
Join Date: Mar 2006
Location: Australia
Posts: 2,422
Twinny is just really niceTwinny is just really nice
Send a message via AIM to Twinny
Quote:
Originally Posted by theHAWKER View Post
umkay, but there should be a built in function for that
onPlayermoves() wouldn't be a function: it would be an event. Also, there is no inherit action for moving. Some playerworlds don't use the default movement system for starters.

In short: I doubt there will ever be a onPlayermoves() event since it would be too limited. A keydown loop check can work for whenever the player walks or a timeout check if there are other methods of moving.
Reply With Quote
  #8  
Old 05-19-2007, 05:55 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
PHP Code:
// Custom Events System

//#CLIENTSIDE
// Set Default Flags
function onCreated()
{
  
this.pxy = {player.xplayer.y};
  
this.screen = {screenwidthscreenheight};
  
  
this.onTimeout();
}

function 
onTimeout()
{
  
// function onPlayerMoved(newx, newy) { }
  
if (player.!= this.pxy[0] || player.!= this.pxy[1])
  {
    
this.pxy = {player.xplayer.y};
    
    for (
temp.var : weaponstemp.var.trigger("PlayerMoved"player.xplayer.y);
  }

  
// function onScreenResize(newwidth, newheight) { }
  
if (screenwidth != this.screen[0] || screenheight != this.screen[1])
  {
    
this.screen = {screenwidthscreenheight};
    
    for (
temp.var : weaponstemp.var.trigger("ScreenResize"screenwidthscreenheight); // function onPlayerMoved(newx, newy) { }
  
}
  
  
setTimer(0.05);

Add it to every player. I could only think of two new events, but if others can think of more, you can easily add them.

Enjoy

P.S. Events only work in weapons.
__________________
- Zidane / Zidaya
Reply With Quote
  #9  
Old 05-19-2007, 06:40 PM
Novo Novo is offline
[TServerDeveloper]
Join Date: Jun 2006
Posts: 448
Novo will become famous soon enough
Quote:
Originally Posted by Deadly_Killer View Post
stuff
For ScreenResize, I just do
PHP Code:
function GraalControl.onResize()
{
  
// stuff

Reply With Quote
  #10  
Old 05-19-2007, 07:10 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Quote:
Originally Posted by Novo View Post
For ScreenResize, I just do
PHP Code:
function GraalControl.onResize()
{
  
// stuff

:o?
__________________
- Zidane / Zidaya
Reply With Quote
  #11  
Old 05-19-2007, 07:13 PM
Skyld Skyld is offline
Script-fu
Skyld's Avatar
Join Date: Jan 2002
Location: United Kingdom
Posts: 3,914
Skyld has much to be proud ofSkyld has much to be proud ofSkyld has much to be proud ofSkyld has much to be proud ofSkyld has much to be proud ofSkyld has much to be proud of
Send a message via AIM to Skyld
Quote:
Originally Posted by Deadly_Killer View Post
:o?
GraalControl is the control that contains pretty much the Graal interface. When the window is resized, GraalControl is resized also to match, and GraalControl.onResize() is called.
__________________
Skyld
Reply With Quote
  #12  
Old 05-19-2007, 07:18 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Quote:
Originally Posted by Skyld View Post
GraalControl is the control that contains pretty much the Graal interface. When the window is resized, GraalControl is resized also to match, and GraalControl.onResize() is called.
Sounds cool, I guess.
__________________
- Zidane / Zidaya
Reply With Quote
  #13  
Old 05-19-2007, 10:23 PM
xXziroXx xXziroXx is offline
Malorian
xXziroXx's Avatar
Join Date: May 2004
Posts: 5,289
xXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant future
PHP Code:
//#CLIENTSIDE
function onCreated() GraalControl.width GraalControl.height 50
<3
__________________
Follow my work on social media post-Graal:Updated august 2025.
Reply With Quote
  #14  
Old 05-20-2007, 12:28 AM
DustyPorViva DustyPorViva is offline
Will work for food. Maybe
DustyPorViva's Avatar
Join Date: Sep 2003
Location: Maryland, USA
Posts: 9,589
DustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond repute
Send a message via AIM to DustyPorViva Send a message via MSN to DustyPorViva
Is it a read only thing?
Reply With Quote
  #15  
Old 05-20-2007, 12:47 AM
Rapidwolve Rapidwolve is offline
Registered User
Join Date: Jul 2006
Posts: 1,241
Rapidwolve is an unknown quantity at this point
Quote:
Originally Posted by DustyPorViva View Post
Is it a read only thing?
I was about to ask the same exact thing before you posted :P
Reply With Quote
  #16  
Old 05-20-2007, 01:11 AM
Gambet Gambet is offline
Registered User
Join Date: Oct 2003
Posts: 2,712
Gambet is on a distinguished road
Quote:
Originally Posted by DustyPorViva View Post
Is it a read only thing?

If you're talking about the GraalControl object, then if you look at Ziro's post, you'll see that he altered the height/width, so I wouldn't think so.


Though, I've never used the GraalControl object except for checking whether or not it's the firstresponder.
Reply With Quote
  #17  
Old 05-20-2007, 01:18 AM
Novo Novo is offline
[TServerDeveloper]
Join Date: Jun 2006
Posts: 448
Novo will become famous soon enough
I do believe it is read/write... The problem is that the content not covered by GraalControl is in YOUR duty to generate content... That is... You're responsible for the blank-spots. With that insight, it's best not to play with it unless you're doing something quite... Custom.
Reply With Quote
  #18  
Old 05-20-2007, 01:37 AM
DustyPorViva DustyPorViva is offline
Will work for food. Maybe
DustyPorViva's Avatar
Join Date: Sep 2003
Location: Maryland, USA
Posts: 9,589
DustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond reputeDustyPorViva has a reputation beyond repute
Send a message via AIM to DustyPorViva Send a message via MSN to DustyPorViva
Well he may have posted the script, doesn't mean he used it, which is really why I asked. Not a big deal anyways.
Reply With Quote
  #19  
Old 05-20-2007, 03:12 AM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Yeah.. it totally messes your screen up =(
__________________
- Zidane / Zidaya
Reply With Quote
  #20  
Old 05-20-2007, 03:54 PM
xXziroXx xXziroXx is offline
Malorian
xXziroXx's Avatar
Join Date: May 2004
Posts: 5,289
xXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant future
Quote:
Originally Posted by DustyPorViva View Post
Well he may have posted the script, doesn't mean he used it, which is really why I asked. Not a big deal anyways.
If you logon Mythic, you'll see that I've shrunken the height of it and added a hotkey bar there (which can best be seen when you press F8).
__________________
Follow my work on social media post-Graal:Updated august 2025.
Reply With Quote
  #21  
Old 05-22-2007, 10:13 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
Quote:
Originally Posted by Deadly_Killer View Post
PHP Code:
//#CLIENTSIDE
function onCreated()

  
this.onTimeout();
}

function 
onTimeout()
{
  
// function onPlayerMoved(newx, newy) { }
  
if (player.!= this.pxy[0] || player.!= this.pxy[1])
  {
    
this.pxy = {player.xplayer.y};
    
    for (
temp.var : weaponstemp.var.trigger("PlayerMoved"player.xplayer.y);
  }
  
setTimer(0.05);

Very poor... make it set a player flag to say that the player is moving, don't send every weapon that the player has an event saying that the player has moved. Why would you even need that?
__________________
Reply With Quote
  #22  
Old 05-22-2007, 10:22 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Quote:
Originally Posted by xAndrewx View Post
Very poor... make it set a player flag to say that the player is moving, don't send every weapon that the player has an event saying that the player has moved. Why would you even need that?
Explain why you would waste a timeout on the clientside for 0.05 for something like this.

This is the best solution without creating wasteful timeouts for events. Besides the current events do the same thing too.
__________________
- Zidane / Zidaya
Reply With Quote
  #23  
Old 05-22-2007, 10:28 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
Quote:
Originally Posted by Deadly_Killer View Post
Explain why you would waste a timeout on the clientside for 0.05 for something like this.

This is the best solution without creating wasteful timeouts for events. Besides the current events do the same thing too.
Still, you've just ignored my question! Why are you checking if a player has moved?
If anything, send it to the selected weapon. You could even make it a flag.

HTML Code:
//#CLIENTSIDE
function onCreated()
{
  setTimer(0.05);
}
function onTimeout()
{
  if (player.currentPosition[0] != player.x || temp.currentPosition[1] != player.y)
  {
    player.currentPosition.clear();
    player.currentPosition.addArray(0, {player.x, player.y});
    player.isMoving = true;
  }
    else
  {
    player.isMoving = false;
  }
}
Although, a built in event would be better!
__________________
Reply With Quote
  #24  
Old 05-22-2007, 10:34 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
What if someone needed the event for 10 weapons. Are you going to make 10 timeouts to check for the new flag.
__________________
- Zidane / Zidaya
Reply With Quote
  #25  
Old 05-22-2007, 10:37 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
I'd call you retarded for having 10 different weapons to check if a person has moved.
__________________
Reply With Quote
  #26  
Old 05-22-2007, 10:37 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Quote:
Originally Posted by xAndrewx View Post
I'd call you retarded for having 10 different weapons to check if a person has moved.
Hypothetical situation.
__________________
- Zidane / Zidaya
Reply With Quote
  #27  
Old 05-22-2007, 10:44 PM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
Still, I'd call you retarded! However, since you insist!
I'd be an innovator and create my own movement system, which wouldn't involve ten different weapons having the same check, I'd also create a flag which would only check if the player has moved, that is if the flag exists of cause! I'd also gloat in your face, show how it's done and also post it on video jug [I also insist that you use google for your research!] to show how optimization works!
__________________
Reply With Quote
  #28  
Old 05-22-2007, 10:48 PM
JkWhoSaysNi JkWhoSaysNi is offline
Ruler of the graalaxy
Join Date: Feb 2005
Location: Great Britain
Posts: 488
JkWhoSaysNi is on a distinguished road
Send a message via ICQ to JkWhoSaysNi
Quote:
Originally Posted by xXziroXx View Post
If you logon Mythic, you'll see that I've shrunken the height of it and added a hotkey bar there (which can best be seen when you press F8).
How did you do that?

I want to do that, but I can't create GUI controls outside the GraalControl.
__________________

Coming soon (Hopefully:P)
Reply With Quote
  #29  
Old 05-22-2007, 10:54 PM
Deadly_Killer Deadly_Killer is offline
Registered User
Join Date: Feb 2002
Posts: 227
Deadly_Killer is on a distinguished road
Quote:
Originally Posted by xAndrewx View Post
Still, I'd call you retarded! However, since you insist!
I'd be an innovator and create my own movement system, which wouldn't involve ten different weapons having the same check, I'd also create a flag which would only check if the player has moved, that is if the flag exists of cause! I'd also gloat in your face, show how it's done and also post it on video jug [I also insist that you use google for your research!] to show how optimization works!
I think you're totally off the subject now.
__________________
- Zidane / Zidaya
Reply With Quote
  #30  
Old 05-22-2007, 11:20 PM
xXziroXx xXziroXx is offline
Malorian
xXziroXx's Avatar
Join Date: May 2004
Posts: 5,289
xXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant future
Quote:
Originally Posted by JkWhoSaysNi View Post
How did you do that?

I want to do that, but I can't create GUI controls outside the GraalControl.
I will be delighted to show you how it works!

PHP Code:
//#CLIENTSIDE
function onCreated()
{
  
GraalControl.height GUIContainer.height 56;

  new 
GuiControl("Hotbar_Main") {
    
width screenwidthheight 57;
    
0GUIContainer.height height;
      
    
GUIContainer.addControl(this);  // Note this line in particularly
  
}

__________________
Follow my work on social media post-Graal:Updated august 2025.

Last edited by xXziroXx; 05-23-2007 at 02:13 AM..
Reply With Quote
  #31  
Old 05-23-2007, 02:10 AM
zokemon zokemon is offline
That one guy...
zokemon's Avatar
Join Date: Mar 2001
Location: Sonoma County, California
Posts: 2,925
zokemon is a jewel in the roughzokemon is a jewel in the rough
Send a message via ICQ to zokemon Send a message via AIM to zokemon Send a message via MSN to zokemon Send a message via Yahoo to zokemon
I love how little people know about GUIs
(ie GraalControl)
__________________
Do it with a DON!
Reply With Quote
  #32  
Old 05-23-2007, 02:40 AM
Inverness Inverness is offline
Incubator
Inverness's Avatar
Join Date: Aug 2004
Location: Houston, Texas
Posts: 3,613
Inverness is a jewel in the roughInverness is a jewel in the rough
Quote:
Originally Posted by zokemon View Post
I love how little people know about GUIs
(ie GraalControl)
Then you're a bad scripter. Good scripters try to help the community.
__________________
Reply With Quote
  #33  
Old 05-23-2007, 03:01 AM
zokemon zokemon is offline
That one guy...
zokemon's Avatar
Join Date: Mar 2001
Location: Sonoma County, California
Posts: 2,925
zokemon is a jewel in the roughzokemon is a jewel in the rough
Send a message via ICQ to zokemon Send a message via AIM to zokemon Send a message via MSN to zokemon Send a message via Yahoo to zokemon
Quote:
Originally Posted by xXziroXx View Post
I will be delighted to show you how it works!

PHP Code:
//#CLIENTSIDE
function onCreated()
{
  
GraalControl.height GUIContainer.height 56;

  new 
GuiControl("Hotbar_Main") {
    
width screenwidthheight 57;
    
0GUIContainer.height height;
      
    
GUIContainer.addControl(this);  // Note this line in particularly
  
}


I showed you how it works <3

Quote:
Originally Posted by Inverness View Post
Then you're a bad scripter. Good scripters try to help the community.
This thread already seems answered enough... I help with scripting errors plenty, there is nothing for me to say otherwise here.
__________________
Do it with a DON!
Reply With Quote
  #34  
Old 05-23-2007, 03:10 AM
xXziroXx xXziroXx is offline
Malorian
xXziroXx's Avatar
Join Date: May 2004
Posts: 5,289
xXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant futurexXziroXx has a brilliant future
Quote:
Originally Posted by zokemon View Post
I showed you how it works <3
And so the Apprentice has became the Master.
__________________
Follow my work on social media post-Graal:Updated august 2025.
Reply With Quote
  #35  
Old 05-23-2007, 05:38 AM
Kristi Kristi is offline
Bowie's Deciple
Kristi's Avatar
Join Date: Dec 2003
Location: Boston, MA
Posts: 748
Kristi has a spectacular aura aboutKristi has a spectacular aura about
Send a message via AIM to Kristi Send a message via MSN to Kristi
Can you guys not have a discussion without pride issues and attacking each other?
__________________
Reply With Quote
  #36  
Old 05-23-2007, 06:44 AM
killerogue killerogue is offline
Registered Omega
killerogue's Avatar
Join Date: Apr 2006
Location: United States
Posts: 1,920
killerogue is on a distinguished road
Send a message via AIM to killerogue Send a message via MSN to killerogue
Quote:
Originally Posted by Kristi View Post
Can you guys not have a discussion with pride issues and attacking each other?
Fixed.

And well pride issues are gunna happen hell raven. It's what happen when every scripts a different way and think they're rather damn good at it.
__________________


REMEMBER, IF YOU REP ME, LEAVE A NAME!

Quote:
Originally Posted by haunter View Post
Graal admins don't die. They go to hell and regroup.
Quote:
Originally Posted by Inverness View Post
Without scripters, your graphics and levels wouldn't do anything but sit there and look pretty.
Reply With Quote
  #37  
Old 05-23-2007, 07:36 AM
xAndrewx xAndrewx is offline
Registered User
xAndrewx's Avatar
Join Date: Sep 2004
Posts: 5,260
xAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud ofxAndrewx has much to be proud of
We're man.
__________________
Reply With Quote
  #38  
Old 05-23-2007, 10:53 AM
Twinny Twinny is offline
My empire of dirt
Twinny's Avatar
Join Date: Mar 2006
Location: Australia
Posts: 2,422
Twinny is just really niceTwinny is just really nice
Send a message via AIM to Twinny
Quote:
Originally Posted by xAndrewx View Post
We're man.
You mean 'men'?
Reply With Quote
  #39  
Old 05-24-2007, 02:59 AM
Inverness Inverness is offline
Incubator
Inverness's Avatar
Join Date: Aug 2004
Location: Houston, Texas
Posts: 3,613
Inverness is a jewel in the roughInverness is a jewel in the rough
I do consider myself the most organized in scripting and other things, on Graal at least.
Quote:
Originally Posted by Kristi
Can you guys not have a discussion without pride issues and attacking each other?
If you're referring to me then you missed the joke. I shall now direct you to my title.
__________________
Reply With Quote
  #40  
Old 05-24-2007, 03:05 AM
zokemon zokemon is offline
That one guy...
zokemon's Avatar
Join Date: Mar 2001
Location: Sonoma County, California
Posts: 2,925
zokemon is a jewel in the roughzokemon is a jewel in the rough
Send a message via ICQ to zokemon Send a message via AIM to zokemon Send a message via MSN to zokemon Send a message via Yahoo to zokemon
Quote:
Originally Posted by Inverness View Post
I do consider myself the most organized in scripting and other things, on Graal at least.
If you're referring to me then you missed the joke. I shall now direct you to my title.
I think he was refering to my comment pointing out people's lack of knowledge with GUIs.
__________________
Do it with a DON!
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 01:22 AM.


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