Toby Rice Posted April 5, 2014 Report Posted April 5, 2014 As most of you know, I own BlueHawk Virtual Airways. I'm big into ACARS systems, flight logging, and programs/addons of that kind. So I find FSEconomy. I knew about it before, but never got into it until a few weeks ago. Boy, am I bummed I never got into it earlier!! It's the coolest way to fly ever! If you use it, you know what I mean. www.fseconomy.com Clipped from their site: FSEconomy is a multi-player "persistent world" add-on for flight simulators, with an economical focus. It is "persistent" in that the aspects of the game - the aircraft location and fuel levels, etc. - are controlled by the players. Other players see changes in these items within the "game world". FSEconomy is not a Virtual Airline. There is no schedule; there are no "levels"; there are no requirements to start from the bottom and work your way up. However, many VAs do use the FSEconomy system to operate their VA. FSEconomy strives to be a framework within which players can decide what FSE is to them... their "style of play" is the phrase frequently used. It is an open-ended platform, allowing each member to tailor their experience to their individual liking. Some members choose to use FSEconomy completely on their own; others choose to work with a few other players; and still others choose to join one or more communities of made up of dozens of other players. The basic concept of FSEconomy is that players use aircraft to move virtual passengers or cargo. Players can own their own aircraft, or rent them from other players or from "the system". Players must be aware of their aircraft's capabilities and fuel levels so that they can carry the cargo selected, or to not become stranded at an airport without fuel. There are many expenses associated with every flight - rental charges, fuel costs, etc.; as well as income from the virtual passengers or cargo. The goal is to make more income than associated operating expenses. Just from reading that, you can understand how cool FSEconomy (FSE) is! I started a group for my Virtual Airline, and have now made it so we use FSE instead of our former ACARS system! If you'd like to join my FSE group, PM me your FSE username and I'll invite you manually. Anyway, I opened an FBO at 6TN9 (SCENERY HERE) and it's running fine. Fly in sometime! I think you would all like FSEconomy. Read the manual, and it will be very cool! I thought I'd share FSE with those that don't have it Use this thread to talk all about FSE if you wish. Toby Quote
greggerm Posted April 6, 2014 Report Posted April 6, 2014 Isn't it fun! I had a network down in Tennessee for some time. Had the FBO at KBNA and a host of others for a while. I sorta miss it down there! -Greg Quote
skiflyzander Posted April 6, 2014 Report Posted April 6, 2014 Just signed up for my first flight Quote
ZaneG Posted April 6, 2014 Report Posted April 6, 2014 Is this system Windows based or is there a version for OSX? Quote
eaglewing7 Posted April 6, 2014 Report Posted April 6, 2014 It is plugin based, for X-Plane at least, so any platform can use it. Just download python (for your operating system), python interface, and the X-Economy plugin, and you are up and running. Well, other than signing up for a forum account, and then requesting a game account... Quote
WCT45 Posted April 6, 2014 Report Posted April 6, 2014 One can get addicted to it ! ... as I am 1 Quote
Toby Rice Posted April 6, 2014 Author Report Posted April 6, 2014 One can get addicted to it ! ... as I am "Like" FSE is so cool! If you want to join my group, PM me your username. My group is planning to give good pilots FBOs Not joking. Quote
marty2756 Posted April 6, 2014 Report Posted April 6, 2014 I've heard its mostly for GA.... is there a detailed explanation how works the 'game' for heavys / commercial airliners ? Quote
Toby Rice Posted April 6, 2014 Author Report Posted April 6, 2014 Not really, what you need to know is here: https://sites.google.com/site/fseoperationsguide/ Quote
HarryCYUL Posted April 7, 2014 Report Posted April 7, 2014 which python version do we need? version 2.xx or 3.xx Quote
Toby Rice Posted April 7, 2014 Author Report Posted April 7, 2014 Python 2.7.6 with Python Interface. It's all in the manual. Very detailed!If you have any problems with installing it, the FSE Forums are a great place to start! NOTE: The file I have included is the replacement for the PI_xfse.py file. Use mine instead of the other one! The other would not work for me, and a guy gave me this one. YOU MUST RIGHT CLICK THE FILE, THEN SELECT "SAVE TARGET AS" THEN SAVE OR ELSE IT WILL GO TO THIS: from XPLMMenus import * from XPLMNavigation import * from XPWidgetDefs import * from XPWidgets import * from XPStandardWidgets import * from XPLMProcessing import * from XPLMDataAccess import * from XPLMUtilities import * from XPLMPlanes import * from httplib import * from xml.dom import minidom from re import * from math import * import urllib2 import hashlib import os import sys from urllib import urlopen from XPLMDisplay import * from XPLMGraphics import * class engine: def __init__(self,cht,runtime,chtDamage,mixDamage,engineNumber): self.defaultcht=cht self.runtime=runtime self.chtDamage=chtDamage self.engineNumber=engineNumber self.mixtureDamage=mixDamage self.numberOfEngines=XPLMGetDatai(XPLMFindDataRef("sim/aircraft/engine/acf_num_engines")) print "Engine created #"+str(engineNumber) def clearEng(self): print "Clearing engine" self.runtime=0 self.chtDamage=0 self.mixtureDamage=0 def engineType(self): _engineType=[] XPLMGetDatavi(XPLMFindDataRef("sim/aircraft/prop/acf_prop_type"), _engineType, 0, self.numberOfEngines) return _engineType[self.engineNumber] def currentRPM(self): _currentRPM=[] XPLMGetDatavf(XPLMFindDataRef("sim/flightmodel/engine/ENGN_N2_"), _currentRPM, 0, self.numberOfEngines) return _currentRPM[self.engineNumber] def currentCHT(self): _currentCHT=[] XPLMGetDatavf(XPLMFindDataRef("sim/flightmodel/engine/ENGN_CHT_c"), _currentCHT, 0, self.numberOfEngines) return _currentCHT[self.engineNumber] def currentMIX(self): _currentMIX=[] XPLMGetDatavf(XPLMFindDataRef("sim/flightmodel/engine/ENGN_mixt"), _currentMIX, 0, self.numberOfEngines) return _currentMIX[self.engineNumber]*100 def planeALT(self): _planeALT=XPLMGetDataf(XPLMFindDataRef("sim/flightmodel/position/y_agl")) return _planeALT*float(3.33) def feed(self,sec,rpm,mix,cht,altitude): if rpm>0: self.runtime+=sec if self.defaultcht>0: _diff=abs(cht-self.defaultcht)/float(sec) if _diff>0: self.chtDamage+=_diff self.defaultcht=cht if (mix > 95 and altitude > 1000): self.mixtureDamage += sec def getData(self): return "&mixture"+str(self.engineNumber+1)+"="+str(self.mixtureDamage)+"&heat"+str(self.engineNumber+1)+"="+str(self.chtDamage)+"&time"+str(self.engineNumber+1)+"="+str(self.runtime) def isEngRun(self): _engrun = [] XPLMGetDatavi(XPLMFindDataRef("sim/flightmodel/engine/ENGN_running"), _engrun, 0, self.numberOfEngines) return _engrun[self.engineNumber] class PythonInterface: def XPluginStart(self): self.Name = "X-Economy" self.Sig = "ksgy.Python.XFSEconomy" self.Desc = "X-Economy - plugin for FSEconomy (www.fseconomy.net)" self.VERSION="1.7.1" self.MenuItem1 = 0 self.MenuItem2 = 0 self.flying = 0 self.flightTime = 0 self.rentalTick = 0 self.leaseTime = 0 self.errormessage = 10 self.CurrentTimeCaption="" self.LeaseCaption = 0 self.Arrived = 0 self.CurrentAircraft="" self.isTacho = 0 self.FuelTanks=[] self.stPayload=0 self.stEq=0 self.gsCheat=0 self.globalX=0 self.globalY=0 self.checkfuel=0 self.err1="" self.err2="" self.ACEngine=[] Item = XPLMAppendMenuItem(XPLMFindPluginsMenu(), "X-Economy", 0, 1) self.XFSEMenuHandlerCB = self.XFSEMenuHandler self.Id = XPLMCreateMenu(self, "X-Economy" , XPLMFindPluginsMenu(), Item, self.XFSEMenuHandlerCB, 0) XPLMAppendMenuItem(self.Id, "Open X-Economy", 1, 1) XPLMAppendMenuItem(self.Id, "-", 3, 1) XPLMAppendMenuItem(self.Id, "Set aircraft alias", 2, 1) self.checkACStateCB = self.checkACState XPLMRegisterFlightLoopCallback(self, self.checkACStateCB, 1.0, 0) self.DrawWindowCB = self.DrawWindowCallback self.KeyCB = self.KeyCallback self.MouseClickCB = self.MouseClickCallback self.WindowId = XPLMCreateWindow(self, 50, 600, 300, 400, 1, self.DrawWindowCB, self.KeyCB, self.MouseClickCB, 0) return self.Name, self.Sig, self.Desc def MouseClickCallback(self, inWindowID, x, y, inMouse, inRefcon): return 0 def KeyCallback(self, inWindowID, inKey, inFlags, inVirtualKey, inRefcon, losingFocus): pass def DrawWindowCallback(self, inWindowID, inRefcon): if(self.err1 != "" and self.errormessage > 0): lLeft = []; lTop = []; lRight = []; lBottom = [] XPLMGetWindowGeometry(inWindowID, lLeft, lTop, lRight, lBottom) left = int(lLeft[0]); top = int(lTop[0]); right = int(lRight[0]); bottom = int(lBottom[0]) gResult = XPLMDrawTranslucentDarkBox(left,top+150,right+200,bottom+300) color = 1.0, 1.0, 1.0 gResult = XPLMDrawString(color, left+5, top+132, self.err1, 0, xplmFont_Basic) gResult2 = XPLMDrawString(color, left+5, top+117, self.err2, 0, xplmFont_Basic) def XPluginStop(self): if (self.MenuItem1 == 1): XPDestroyWidget(self, self.XFSEWidget, 1) self.MenuItem1 = 0 XPLMDestroyMenu(self, self.Id) XPLMUnregisterFlightLoopCallback(self, self.checkACStateCB, 0) XPLMDestroyWindow(self, self.WindowId) pass def XPluginEnable(self): return 1 def XPluginDisable(self): pass def XPluginReceiveMessage(self, inFromWho, inMessage, inParam): pass def XFSEMenuHandler(self, inMenuRef, inItemRef): # If menu selected create our widget dialog if (inItemRef == 1): if (self.MenuItem1 == 0): self.CreateXFSEWidget(221, 640, 480, 490) self.MenuItem1 = 1 else: if(not XPIsWidgetVisible(self.XFSEWidget)): XPShowWidget(self.XFSEWidget) elif (inItemRef == 2): if (self.MenuItem2 == 0): self.CreateACAliasWidget(128, 480, 272, 87) self.MenuItem2 = 1 else: if (not XPIsWidgetVisible(self.ACAliasWidget)): XPShowWidget(self.ACAliasWidget) def XFSEpost(self, query): f1 = open(os.path.join('Resources','plugins','PythonScripts','PI_xfse.py'), 'rb') filemd5sum = hashlib.md5(f1.read()).hexdigest() f1.close() stuff = urlopen('http://www.fseconomy.net/fsagentx?md5sum='+filemd5sum+'&'+query).read() stuff = stuff.replace('&',' and ') dom = minidom.parseString(stuff) return dom def isAllEngineStopped(self): _allenginestopped = True try: for ienga in range(self.NumberOfEngines): if self.ACEngine[ienga].isEngRun() > 0: _allenginestopped = False except Exception: _allenginestopped = True return _allenginestopped def chkBrk(self,h,: if h == 1: return True if h == 0 and b < float(1.0): return True return False def checkACState(self, elapsedMe, elapsedSim, counter, refcon): self.errormessage = self.errormessage - 1 _timecompression=XPLMGetDatai(XPLMFindDataRef("sim/time/sim_speed")) if _timecompression==0: _timecompression=1 _groundcompression=XPLMGetDatai(XPLMFindDataRef("sim/time/ground_speed")) XPLMSetDatai(XPLMFindDataRef("sim/time/ground_speed"),1) _totalcompression=1/float(_timecompression) if self.flying==1: if _groundcompression>1: self.gsCheat+=1 if self.gsCheat>10: self.cancelFlight("Excessive time compression used. Your flight has been cancelled") isBrake=XPLMGetDataf(XPLMFindDataRef("sim/flightmodel/controls/parkbrake")) airspeed=XPLMGetDataf(XPLMFindDataRef("sim/flightmodel/position/groundspeed")) if self.ACEngine[0].engineType() == 3 or self.ACEngine[0].engineType() == 5: isHeli = 1 else: isHeli = 0 if _timecompression > 0: #fuel change check _fueltotal=XPLMGetDataf(XPLMFindDataRef("sim/flightmodel/weight/m_fuel_total")) # converting values to integer for comparison. values after decimal were unrelaiable for this purpose. if((int(_fueltotal) * 0.95) > int(self.checkfuel)): self.cancelFlight("Airborn refueling not allowed. Flight cancelled","") self.checkfuel=XPLMGetDataf(XPLMFindDataRef("sim/flightmodel/weight/m_fuel_total")) if XPLMGetDataf(XPLMFindDataRef("sim/time/total_flight_time_sec"))0: self.leaseTime=int(self.leaseTime)-1 if self.LeaseCaption: _leasehours=self.leaseTime/3600 _leasemins=(self.leaseTime-_leasehours*3600)/60 XPSetWidgetDescriptor(self.LeaseCaption, "Lease time left: "+str(_leasehours)+" hours "+str(_leasemins)+" mins" ) if(self.chkBrk(isHeli,isBrake) and self.ACEngine[0].currentRPM()>float(10.0) and airspeed>float(5) and self.ACEngine[0].planeALT()>10): self.flightTime=int(self.flightTime)+1 if self.CurrentTimeCaption: _currhours=self.flightTime/3600 _currmins=(self.flightTime-_currhours*3600)/60 XPSetWidgetDescriptor(self.CurrentTimeCaption, "Current flight time: "+str(_currhours)+" hours "+str(_currmins)+" mins") # engine feed only when flying: pre-heat recommended on ground for iengfeed in range(self.NumberOfEngines): #sec,rpm,mix,cht,altitude): self.ACEngine[iengfeed].feed(1,self.ACEngine[iengfeed].currentRPM(),self.ACEngine[iengfeed].currentMIX(),self.ACEngine[iengfeed].currentCHT(),self.ACEngine[iengfeed].planeALT()) # arrive else: if isHeli == 1: if(self.flightTime>60 and self.isAllEngineStopped() and self.ACEngine[0].planeALT()<50 and airspeed60 and self.isAllEngineStopped() and self.ACEngine[0].planeALT()<50 and isBrake==1.0 and airspeedThat is for v9. For v10, do as the manual says.PI_xfse.py Quote
john82088 Posted April 7, 2014 Report Posted April 7, 2014 A few years ago I was involved with FSE and the only thing I did not like is that the routes primarily went to small airports. Has that changed? Quote
Toby Rice Posted April 7, 2014 Author Report Posted April 7, 2014 A few years ago I was involved with FSE and the only thing I did not like is that the routes primarily went to small airports. Has that changed?There are assignments to tiny airports, and huge airports. I think if it's on a sectional chart, its on FSE I have assignments from 6TN9 to KMEM, and there are others from GGOV to KFST (Sorry, I got it! lol) It's not just little airports anymore. Quote
cruster Posted April 7, 2014 Report Posted April 7, 2014 There are assignments to tiny airports, and huge airports. I think if it's on a sectional chart, its on FSE I have assignments from 6TN9 to KMEM, and there are others from GGOV to KFST (Sorry, I got it! lol) It's not just little airports anymore. I believe the airport data is based on FS9/FSX. If it's in MSFS, it's in FSE. Airport sizes are based on runway lengths, IIRC. I'm coming up on 9 years in FSE at the end of this month. Crazy. Quote
marty2756 Posted April 7, 2014 Report Posted April 7, 2014 Is it possible to use Jar a320 ? didn't see it on supported aircraft.I searched all airports for an a320 available for rent, and no one appeared, is it possible? :/ Quote
Toby Rice Posted April 7, 2014 Author Report Posted April 7, 2014 The heavy aircraft like that are NOT used commonly. They are only for "All-in" jobs described little in the manual: http://www.fseconomy.net/user-guide I will ask an FSE admin about it to see if we can rent A320s soon. Quote
Toby Rice Posted April 14, 2014 Author Report Posted April 14, 2014 I am starting a group (business) on FSE for hauling cargo to FBOs. I will post another thread for it when I finish the details. It's called"Talon Air Service". Quote
Toby Rice Posted April 14, 2014 Author Report Posted April 14, 2014 How to install FSEconomy in X-Plane 9 1. Sign up the on FSE Forums2. Go to the thread where it says "New User Request" (or something like that)3. Request an account by saying "I'd like a game account for FSEconomy please"4. Within a few hours, an admin will send you a PM and reply to your post giving you your info.5. Next, we will install the program. I'm guessing you will use XP9.70 32bit, so this will be easy.6. Download and install Python 2.7.6 here: https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi INSTALL IT In your main C: drive folder, not the XP folder.7. Download Python Interface HERE and put the folder in your X-Plane>Resources>plugins folder.8. In the X-Plane Plugins folder, create a new folder called "PythonScripts"9. Next, right click the file I have included here and click "Save as". It should save it to your PC something called "PI_xfse". 10. Drag that file to the "PythonScripts" folder. Done! Now start X-Plane, go to the "X-Economy" plugin, log in, and do as the manual says for your first flight.Please take a look at the manual! I know it looks long, but trust my experience and others. It works! Also note this:Modifying your airplanes so that FSE recognizes it... You will need to edit your planes in XPlane to match the FSE specifications. A. Using Plane-Maker1. It is recommended that you make a copy of the plane you will be modifying, just in case something goes wrong. (copy the entire Aircraft folder as a backup) 2. In FSeconomy.com, find the plane you want to fly in the Home -> List of Aircraft page and make a note of the type of plane you want. 3. Open Plane-Maker then File -> Open. Go to the folder that has the plane you want to fly in FSE (acf file) Then Open.4. Now... Go to the Standard Menu, then ViewPoint. In the descr box, change the field to match what FSE reads.Close the Viewpoint screen with the X, then save your plane as whatever name you want. Close Plane-Maker.5. Start X-Plane, and prepare your flight as you normally do and go fly.B. Quick way without using Plane-maker.From the "Plugins" menu choose "X-Economy"->"Set aircraft alias" You may change the "Modelname" there for every single airplane without worrying for the acf.file The "trade-off" for this method is that you will need to change "Modelname" every time you change the aircraft you are going to fly. If you have any problems, see the user manual. PI_xfse.py Quote
HarryCYUL Posted April 14, 2014 Report Posted April 14, 2014 I can't login to FSE in XP10.....my login info is correct and I can login on website. are the servers down? Quote
Toby Rice Posted April 14, 2014 Author Report Posted April 14, 2014 Servers are not down.... Did you use the "PI-xfse" file that I gave, or the one meant for XP10 on the usermanual? Quote
HarryCYUL Posted April 15, 2014 Report Posted April 15, 2014 Servers are not down.... Did you use the "PI-xfse" file that I gave, or the one meant for XP10 on the usermanual?I used the download from site, should I use yours? Quote
Toby Rice Posted April 15, 2014 Author Report Posted April 15, 2014 Try mine. If that does not work, post in the FSE forums. 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.