Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ahmet Ali

Members
  • Joined

  • Last visited

Everything posted by Ahmet Ali

  1. THANK YOU!!!!!! The program is working properly, I did the same as you said, I had to create an array and send the values that way with XPLMSetDatavi , as you said. Extra note: We can use datarefs and XPLMdatarefs together without any problems.
  2. EDİT: A little misunderstanding. The code I tried on my friend's computer yesterday does not work. The reason it worked on his computer was because there was another draw multiaircraft script in the SDK, so my code does not work again and ı dont know why... I fixed what you said but the code still doesn't work. -- Define datarefs for multiplayer planes dataref("dr_plane_x", "sim/multiplayer/position/plane1_x", "writable") dataref("dr_plane_y", "sim/multiplayer/position/plane1_y", "writable") dataref("dr_plane_z", "sim/multiplayer/position/plane1_z", "writable") dataref("dr_plane_the", "sim/multiplayer/position/plane1_the", "writable") dataref("dr_plane_phi", "sim/multiplayer/position/plane1_phi", "writable") dataref("dr_plane_psi", "sim/multiplayer/position/plane1_psi", "writable") dataref("dr_plane_x2", "sim/multiplayer/position/plane2_x", "writable") dataref("dr_plane_y2", "sim/multiplayer/position/plane2_y", "writable") dataref("dr_plane_z2", "sim/multiplayer/position/plane2_z", "writable") dataref("dr_plane_the2", "sim/multiplayer/position/plane2_the", "writable") dataref("dr_plane_phi2", "sim/multiplayer/position/plane2_phi", "writable") dataref("dr_plane_psi2", "sim/multiplayer/position/plane2_psi", "writable") -- Define global plane position datarefs dataref("gPlaneX", "sim/flightmodel/position/local_x", "writable") dataref("gPlaneY", "sim/flightmodel/position/local_y", "writable") dataref("gPlaneZ", "sim/flightmodel/position/local_z", "writable") dataref("gPlaneTheta", "sim/flightmodel/position/theta", "writable") dataref("gPlanePhi", "sim/flightmodel/position/phi", "writable") dataref("gPlanePsi", "sim/flightmodel/position/psi", "writable") -- Define override planepath datarefs as an array of 20 boolean/integer values dataref("override_planepath", "sim/operation/override/override_planepath", "writable") -- Function to read current plane data (optional, if you want to print or log it) function readPlaneData() local plane_x = dr_plane_x local plane_y = dr_plane_y local plane_z = dr_plane_z local plane_theta = dr_plane_the local plane_phi = dr_plane_phi local plane_psi = dr_plane_psi local plane_x2 = dr_plane_x2 local plane_y2 = dr_plane_y2 local plane_z2 = dr_plane_z2 local plane_theta2 = dr_plane_the2 local plane_phi2 = dr_plane_phi2 local plane_psi2 = dr_plane_psi2 end -- Function to set plane data function setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2) -- Set plane 1 data dr_plane_x = plane_x dr_plane_y = plane_y dr_plane_z = plane_z dr_plane_the = plane_theta dr_plane_phi = plane_phi dr_plane_psi = plane_psi -- Set plane 2 data dr_plane_x2 = plane_x2 dr_plane_y2 = plane_y2 dr_plane_z2 = plane_z2 dr_plane_the2 = plane_theta2 dr_plane_phi2 = plane_phi2 dr_plane_psi2 = plane_psi2 end -- Function to update aircraft positions function updateAircraft() local x = gPlaneX local y = gPlaneY local z = gPlaneZ local theta = gPlaneTheta local phi = gPlanePhi local psi = gPlanePsi -- Calculate positions for the two multiplayer planes relative to the player's aircraft local plane_x = x + 50.0 local plane_y = y local plane_z = z + 50.0 local plane_theta = theta local plane_phi = phi local plane_psi = psi local plane_x2 = x - 50.0 local plane_y2 = y local plane_z2 = z - 50.0 local plane_theta2 = theta local plane_phi2 = phi local plane_psi2 = psi -- Set the positions of both planes setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2) -- Override planepath for the two AI aircraft -- Assuming indices 0 and 1 for the AI aircraft override_planepath[1] = 1 -- Enable override for AI aircraft 1 override_planepath[2] = 1 -- Enable override for AI aircraft 2 -- Update positions in the overridden paths -- For demonstration, we'll assume you need to set some parameters -- Replace with the actual way to set positions, if necessary -- For example: -- override_planepath[3] = {plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi} -- Not required if it's just enabling end -- Update aircraft every frame do_every_frame("updateAircraft()")
  3. Thank you so much for your helps. Now ı just try it with different pc and it works! I think the problem is with my computer and the way I downloaded Lua. Just one thing when ı run my program, I get a notification to check the quarantine file, and when I check where my code is, I see that it is in the quarantine file, but my code is working smoothly so far. I thought it could be about overwrite. Do you have any ideas about this?
  4. I am really confused now ı get error again and error says: lua:4: attempt to call a nil value (global 'dataref') same as this error before lua:4: attempt to call a nil value (global 'XPLMFindDataRef') ı just changed those local x = gPlaneX local y = gPlaneY local z = gPlaneZ local theta = get(gPlaneTheta) local phi = get(gPlanePhi) local psi = get(gPlanePsi)
  5. I did it as you told me, but now ı get error again and error says: attempt to perform arithmetic on local "x" (a nil value) . İt gives error for this line local plane_x = x + 50 -- Define datarefs using modern get/set functions with the new dataref format dataref("dr_plane_x", "sim/multiplayer/position/plane1_x") dataref("dr_plane_y", "sim/multiplayer/position/plane1_y") dataref("dr_plane_z", "sim/multiplayer/position/plane1_z") dataref("dr_plane_the", "sim/multiplayer/position/plane1_the") dataref("dr_plane_phi", "sim/multiplayer/position/plane1_phi") dataref("dr_plane_psi", "sim/multiplayer/position/plane1_psi") dataref("dr_plane_x2", "sim/multiplayer/position/plane2_x") dataref("dr_plane_y2", "sim/multiplayer/position/plane2_y") dataref("dr_plane_z2", "sim/multiplayer/position/plane2_z") dataref("dr_plane_the2", "sim/multiplayer/position/plane2_the") dataref("dr_plane_phi2", "sim/multiplayer/position/plane2_phi") dataref("dr_plane_psi2", "sim/multiplayer/position/plane2_psi") -- Define override dataref for plane path dataref("dr_override_planepath", "sim/operation/override/override_planepath") -- Function to set override (1 to override, 0 to disable override) --function setOverridePlanePath(override) --set(dr_override_planepath, override) --end -- Example function to read values function readPlaneData() local plane_x = get(dr_plane_x) local plane_y = get(dr_plane_y) local plane_z = get(dr_plane_z) local plane_theta = get(dr_plane_the) local plane_phi = get(dr_plane_phi) local plane_psi = get(dr_plane_psi) local plane_x2 = get(dr_plane_x2) local plane_y2 = get(dr_plane_y2) local plane_z2 = get(dr_plane_z2) local plane_theta2 = get(dr_plane_the2) local plane_phi2 = get(dr_plane_phi2) local plane_psi2 = get(dr_plane_psi2) end -- Function to set plane data function setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2,setto1) -- Set plane 1 data set(dr_plane_x, plane_x) set(dr_plane_y, plane_y) set(dr_plane_z, plane_z) set(dr_plane_the, plane_theta) set(dr_plane_phi, plane_phi) set(dr_plane_psi, plane_psi) -- Set plane 2 data set(dr_plane_x2, plane_x2) set(dr_plane_y2, plane_y2) set(dr_plane_z2, plane_z2) set(dr_plane_the2, plane_theta2) set(dr_plane_phi2, plane_phi2) set(dr_plane_psi2, plane_psi2) set(dr_override_planepath, setto1) end dataref("gPlaneX", "sim/flightmodel/position/local_x") dataref("gPlaneY", "sim/flightmodel/position/local_y") dataref("gPlaneZ", "sim/flightmodel/position/local_z") dataref("gPlaneTheta", "sim/flightmodel/position/theta") dataref("gPlanePhi", "sim/flightmodel/position/phi") dataref("gPlanePsi", "sim/flightmodel/position/psi") -- Function to update aircraft positions function updateAircraft() local x = get(gPlaneX) local y = get(gPlaneY) local z = get(gPlaneZ) local theta = get(gPlaneTheta) local phi = get(gPlanePhi) local psi = get(gPlanePsi) local plane_x = x + 50 local plane_y = y local plane_z = z + 50 local plane_theta = theta local plane_phi = phi local plane_psi = psi local plane_x2 = x - 50 local plane_y2 = y local plane_z2 = z - 50 local plane_theta2 = theta local plane_phi2 = phi local plane_psi2 = psi local setto1 = 1 -- Enable plane path override --setOverridePlanePath(1) -- Set the positions of both planes setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2,setto1) -- Disable plane path override after setting values (optional) -- setOverridePlanePath(0) end -- Update aircraft every frame do_every_frame("updateAircraft()")
  6. As you told me ı fixed my code(I share my code below) but my angles are still not updating. I didnt get any error from X-plane and flywithlua but when ı run this code on terminal it gives me this error: lua:4: attempt to call a nil value (global 'XPLMFindDataRef') stack traceback: C:\X-Plane\Resources\plugins\FlyWithLua\Scripts\world.lua:4: in main chunk [C]: in ? -- Define datarefs local dr_plane_x = XPLMFindDataRef("sim/multiplayer/position/plane1_x") local dr_plane_y = XPLMFindDataRef("sim/multiplayer/position/plane1_y") local dr_plane_z = XPLMFindDataRef("sim/multiplayer/position/plane1_z") local dr_plane_the = XPLMFindDataRef("sim/multiplayer/position/plane1_the") local dr_plane_phi = XPLMFindDataRef("sim/multiplayer/position/plane1_phi") local dr_plane_psi = XPLMFindDataRef("sim/multiplayer/position/plane1_psi") local dr_plane_x2 = XPLMFindDataRef("sim/multiplayer/position/plane2_x") local dr_plane_y2 = XPLMFindDataRef("sim/multiplayer/position/plane2_y") local dr_plane_z2 = XPLMFindDataRef("sim/multiplayer/position/plane2_z") local dr_plane_the2 = XPLMFindDataRef("sim/multiplayer/position/plane2_the") local dr_plane_phi2 = XPLMFindDataRef("sim/multiplayer/position/plane2_phi") local dr_plane_psi2 = XPLMFindDataRef("sim/multiplayer/position/plane2_psi") -- Define override dataref for plane path local dr_override_planepath = XPLMFindDataRef("sim/operation/override/override_planepath") -- Function to set override (1 to override, 0 to disable override) function setOverridePlanePath(override) XPLMSetDatai(dr_override_planepath, override) end -- Example function to read values function readPlaneData() local plane_x = XPLMGetDatad(dr_plane_x) local plane_y = XPLMGetDatad(dr_plane_y) local plane_z = XPLMGetDatad(dr_plane_z) local plane_theta = XPLMGetDataf(dr_plane_the) local plane_phi = XPLMGetDataf(dr_plane_phi) local plane_psi = XPLMGetDataf(dr_plane_psi) local plane_x2 = XPLMGetDatad(dr_plane_x2) local plane_y2 = XPLMGetDatad(dr_plane_y2) local plane_z2 = XPLMGetDatad(dr_plane_z2) local plane_theta2 = XPLMGetDataf(dr_plane_the2) local plane_phi2 = XPLMGetDataf(dr_plane_phi2) local plane_psi2 = XPLMGetDataf(dr_plane_psi2) end -- Function to set plane data function setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2) -- Set plane 1 data XPLMSetDatad(dr_plane_x, plane_x) XPLMSetDatad(dr_plane_y, plane_y) XPLMSetDatad(dr_plane_z, plane_z) XPLMSetDataf(dr_plane_the, plane_theta) XPLMSetDataf(dr_plane_phi, plane_phi) XPLMSetDataf(dr_plane_psi, plane_psi) -- Set plane 2 data XPLMSetDatad(dr_plane_x2, plane_x2) XPLMSetDatad(dr_plane_y2, plane_y2) XPLMSetDatad(dr_plane_z2, plane_z2) XPLMSetDataf(dr_plane_the2, plane_theta2) XPLMSetDataf(dr_plane_phi2, plane_phi2) XPLMSetDataf(dr_plane_psi2, plane_psi2) end local gPlaneX = XPLMFindDataRef("sim/flightmodel/position/local_x") local gPlaneY = XPLMFindDataRef("sim/flightmodel/position/local_y") local gPlaneZ = XPLMFindDataRef("sim/flightmodel/position/local_z") local gPlaneTheta = XPLMFindDataRef("sim/flightmodel/position/theta") local gPlanePhi = XPLMFindDataRef("sim/flightmodel/position/phi") local gPlanePsi = XPLMFindDataRef("sim/flightmodel/position/psi") -- Function to update aircraft positions function updateAircraft() local x = XPLMGetDatad(gPlaneX) local y = XPLMGetDatad(gPlaneY) local z = XPLMGetDatad(gPlaneZ) local theta = XPLMGetDataf(gPlaneTheta) local phi = XPLMGetDataf(gPlanePhi) local psi = XPLMGetDataf(gPlanePsi) local plane_x = x + 50 local plane_y = y local plane_z = z + 50 local plane_theta = theta local plane_phi = phi local plane_psi = psi local plane_x2 = x - 50 local plane_y2 = y local plane_z2 = z - 50 local plane_theta2 = theta local plane_phi2 = phi local plane_psi2 = psi -- Enable plane path override setOverridePlanePath(1) -- Set the positions of both planes setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2) -- Disable plane path override after setting values (optional) -- setOverridePlanePath(0) end -- Update aircraft every frame do_every_frame("updateAircraft()")
  7. I am grateful for your help. I can't try it now because I will be abroad for 2 days but The reference you sent seems to be very useful for me.
  8. Thank you for your helps ı will continue to my researchs.
  9. Any help would be greatly appreciated ı am new at this topic ı would be very glad if you can you explain me with more detail please. As far as I understand so far, there is no need to introduce datarefs or XPLMdatarefs when I using flywith lua. But should I get these function from somewhere if ı use XLua or XTLua ? for example like this ?? -- first we need ffi module (variable must be declared local) local ffi = require("ffi") -- find the right lib to load local XPLMlib = "" if SYSTEM == "IBM" then -- Windows OS (no path and file extension needed) if SYSTEM_ARCHITECTURE == 64 then XPLMlib = "XPLM_64" -- 64bit else XPLMlib = "XPLM" -- 32bit end elseif SYSTEM == "LIN" then -- Linux OS (we need the path "Resources/plugins/" here for some reason) if SYSTEM_ARCHITECTURE == 64 then XPLMlib = "Resources/plugins/XPLM_64.so" -- 64bit else XPLMlib = "Resources/plugins/XPLM.so" -- 32bit end elseif SYSTEM == "APL" then -- Mac OS (we need the path "Resources/plugins/" here for some reason) XPLMlib = "Resources/plugins/XPLM.framework/XPLM" -- 64bit and 32 bit else return -- this should not happen end -- load the lib and store in local variable local XPLM = ffi.load(XPLMlib) and last question what is the difference between XPLMGetDataf and XPLM.XPLMGetDataf
  10. Greetings, my aim is to draw 2 AI aircraft around the user aircraft so that ı write this code with lua. As seen in the code, the positions of my AI aircrafs change in each frame to be next to my user aircraft as ı wanted, but the angles are not updated in any way. In other words, two AI aircraft are flying next to my user aircraft and following my user aircraft, but since the angles are not updated, they take ridiculous shapes. -- Define datarefs local dr_plane_x = XPLMFindDataRef("sim/multiplayer/position/plane1_x") local dr_plane_y = XPLMFindDataRef("sim/multiplayer/position/plane1_y") local dr_plane_z = XPLMFindDataRef("sim/multiplayer/position/plane1_z") local dr_plane_the = XPLMFindDataRef("sim/multiplayer/position/plane1_the") local dr_plane_phi =XPLMFindDataRef("sim/multiplayer/position/plane1_phi") local dr_plane_psi = XPLMFindDataRef("sim/multiplayer/position/plane1_psi") local dr_plane_x2 = XPLMFindDataRef("sim/multiplayer/position/plane2_x") local dr_plane_y2 = XPLMFindDataRef("sim/multiplayer/position/plane2_y") local dr_plane_z2 = XPLMFindDataRef("sim/multiplayer/position/plane2_z") local dr_plane_the2 = XPLMFindDataRef("sim/multiplayer/position/plane2_the") local dr_plane_phi2 = XPLMFindDataRef("sim/multiplayer/position/plane2_phi") local dr_plane_psi2 = XPLMFindDataRef("sim/multiplayer/position/plane2_psi") -- Example function to read values function readPlaneData() local plane_x = XPLMGetDatad(dr_plane_x) local plane_y = XPLMGetDatad(dr_plane_y) local plane_z = XPLMGetDatad(dr_plane_z) local plane_theta = XPLMGetDataf(dr_plane_the) local plane_phi = XPLMGetDataf(dr_plane_phi) local plane_psi = XPLMGetDataf(dr_plane_psi) local plane_x2 = XPLMGetDatad(dr_plane_x2) local plane_y2 = XPLMGetDatad(dr_plane_y2) local plane_z2 = XPLMGetDatad(dr_plane_z2) local plane_theta2 = XPLMGetDataf(dr_plane_the2) local plane_phi2 = XPLMGetDataf(dr_plane_phi2) local plane_psi2 = XPLMGetDataf(dr_plane_psi2) end function setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, plane_phi2, plane_psi2) -- Set plane 1 data XPLMSetDatad(dr_plane_x, plane_x) XPLMSetDatad(dr_plane_y, plane_y) XPLMSetDatad(dr_plane_z, plane_z) XPLMSetDataf(dr_plane_the, plane_theta) XPLMSetDataf(dr_plane_phi, plane_phi) XPLMSetDataf(dr_plane_psi, plane_psi) -- Set plane 2 data XPLMSetDatad(dr_plane_x2, plane_x2) XPLMSetDatad(dr_plane_y2, plane_y2) XPLMSetDatad(dr_plane_z2, plane_z2) XPLMSetDataf(dr_plane_the2, plane_theta2) XPLMSetDataf(dr_plane_phi2, plane_phi2) XPLMSetDataf(dr_plane_psi2, plane_psi2) -- Print for debug after setting values end local gPlaneX = XPLMFindDataRef("sim/flightmodel/position/local_x"); local gPlaneY = XPLMFindDataRef("sim/flightmodel/position/local_y"); local gPlaneZ = XPLMFindDataRef("sim/flightmodel/position/local_z"); local gPlaneTheta = XPLMFindDataRef("sim/flightmodel/position/theta"); local gPlanePhi = XPLMFindDataRef("sim/flightmodel/position/phi"); local gPlanePsi = XPLMFindDataRef("sim/flightmodel/position/psi"); function updateaircraft() local x = XPLMGetDatad(gPlaneX); local y = XPLMGetDatad(gPlaneY); local z = XPLMGetDatad(gPlaneZ); local theta = XPLMGetDataf(gPlaneTheta); local phi = XPLMGetDataf(gPlanePhi); local psi = XPLMGetDataf(gPlanePsi); local plane_x = x + 50; local plane_y = y; local plane_z = z + 50; local plane_theta = theta; local plane_phi = phi; local plane_psi = psi; local plane_x2 = x - 50; local plane_y2 = y; local plane_z2 = z - 50; local plane_theta2 = theta; local plane_phi2 = phi; local plane_psi2 = psi; setPlaneData(plane_x, plane_y, plane_z, plane_theta, plane_phi, plane_psi, plane_x2, plane_y2, plane_z2, plane_theta2, phi2, plane_psi2) end do_every_frame("updateaircraft()") The angles of my AI planes change completely randomly, but I want them to be the same as my user aircraft. Can you please help me solve this problem?
  11. So, can I do that with the help of FlyWithLua or Lua scripting? Do you know this?
  12. I want to fly at least 4 airplane at the same time automatically. But sometimes, I want to control an airplane manually to make a specific move. In a summary, I want to simulate multiple airplanes on one computer and want to have control of all airplanes. Also, I asked same question to the XP forum you suggested, but I haven't take an answer yet. I hope you can help me, thanks.
  13. Greetings, I aim to use X-Plane 11 to simulate multiple vehicles on one computer. But according to my researches, it does not seem easy to simulate multiple vehicles on one screen. I found the following solutions: 1. Multiplayer mode 2. Virtual Machine method 3. FlywithLua SDK If I understood true, the first method is available for multiple computers. But I can simulate on one computer with multiplayer method by using second method. And there is a third method which is a little bit confusing for me. Could you tell me which method is best option for me and how I can use it effectively? Is there any option that I can use? Thank you in advance for your help.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.