Search the Community
Showing results for tags 'Coding'.
-
Hi I am heavily working on my own user interface system at them moment and I wonder if there is a easy way to resize a loaded font. Example pseudo code for the functionality I am searching for: --Pseudo Code self.font = Font:Load("Arial", 6, Font.Smooth) --Load Font self.font:SetSize(10) --Change size during runtime I have a solution for this by preloading the font in all sizes and then change the rendered font. But this isn't memory efficient, or are Fonts so small that it makes no diffrence, either way it does create a lot of code Thanks for ideas in advance Markus from Phodex
-
Hi, I was thinking about a day night cycle for my next project. I found shadmars day night cycle shader, but can't find any working download link? However, even if I get my hands on his shader, I think I still need to adjust some stuff. Do you know any good tutorial/documentation, or can explain how I generally would create a day night cylce in Leadwerks? Thanks! Markus form Phodex
-
Hi Simple question, I cannot find a GetAnimation and GetAnimationFrame function in the API. I realised those functions in my own AnimationManager script manually, but since there is the "new" entity:PlayAnimation function how to get access to this functions? Any ideas or suggestion? EDIT: Would also be good to know how to get animation index by name and the other way around. Something like: self.entity:GetAnimationName(0) or self.entity:GetAnimationIndex("Idle"))
-
EDIT: Just found out that the error was somewhere else ^^. The below code just works fine. Anyway thank you for the help :). Hi there, I faced some weird behavior, testing and debugging my project. The following shows the structure of my code, it would be very kind of you, if you could tell me if you can find any error, because I dont. Maybe I messed around with global/local/script variables, which I know, often cause such errors. Explanation: Of course this script makes no sense, but it should only representate the structure, because it would be way to complicated to explain the issue within the actual script. So what is the problem? When I apply the "Main Script" to one entity, everything works fine and I get printed the data. but if I apply the "Main Script" to more than one, for example two, then the problem occurs. In the output I get the "Send my data!"-message, but now comes the weird thing. It prints the data and then, even if the "Test"-function is just called once it prints "Variable data is nil!" twice. And this happens for both entitys. So this is my output with two entities with the "Main Script": Send my data! Test Variable data is nil! Variable data is nil! Send my data! Test Variable data is nil! Variable data is nil! Main Script: Script.dataToSend = "Test" Script.data = nil import "exampleScript.lua" function Script:Start() self.myLuaClass = testClass(self) end function Script:Test(data) if data ~= nil then System:Print(data) else System:Print("Variable data is nil!") end end The "exampleScript.lua" Script: function testClass(script) local container = {} function container:CallMeFromAnywhereToSendSomething() self:SendSomething(script.dataToSend) end function container:SendSomething(sendData) if sendData ~= nil then script.data = sendData end if script.data ~= nil then System:Print("Sent my data!") script:Test(script.data) end end return container end Addition: I was able to work around this issue by simply checking if the variable is nil, or not (I actually need/do stuff with the "data" variable in my actual script), but still I am confused. Maybe you can help me out. If you find other mistakes, or have improvement suggestions for my "Class" system please tell me. Thanks for reading
-
Hey guys, I was searching the forums for a releated subject, but I couldnt find one, but I could imagine there is one, if so I am sorry to post the same topic again So I am currently trying to come up with a way to handle diffrent objects rendering in the right order. What solutions have you for this problem. For example: I have a trading menu, but my cursor is rendered behind the inventory slots and buttons rendered by the NPC Trader entity. (elements of my trading menu are rendered by two diffrent entities (Player and NPC Trader)) I was thinking about something where you can set a variable "renderPriority" which indicates in which order objects are rendered. So if render Priority is 1 those objects "PostRender" function is called before all the others, then come entities with priority 2,3 and so on. Thats the point I am stuck . How to make the other PostRender functions "wait" unitl the PostRender function of an specific entity is finished. This I a problem I occured pretty often and havent found a solution yet, I mean that you control the order entities call functions like UpdateWorld() or PostRender(). Would really appreciate if somebody can come up with an idea
-
Hello, I have recently purchased the Leadwerks game engine and Professional DLC. The DLC is installed correctly and I can see the .cpp source files in the script editor. I was about to create a few of my own classes but noticed that although I can open .cpp files in the editor I am only able to save new source files in .lua Does the built in script editor support new .cpp files, what am I missing? Cheers.
-
Hi guys, I searched the forum a bit and found out that other people had the same issue as I have now. You maybe know that if you have a key check (like window:KeyHit() or window:MouseHit()) in multiple scripts then only ONE of the works as expected. I read that its because Leadwerks sets the hit check value to false right after you checked it. However I tried to find a solution for this, by making a "class" where I call all keychecks, unfortunately the problem remains, maybe you can help me? What have you come up with? Thats my attempt: Thats the class script: function KeyCheck(script) local key = {} function key:MouseClicked(command) if command == "Left" then return window:MouseHit(1) elseif command == "Right" then return window:MouseHit(2) end end return key end These are two test scripts: import "Scripts/+Morra Scripts/System/KeyCheck.lua" local keyCheck function Script:Start() self.loadClass = KeyCheck keyCheck = self:loadClass() end function Script:UpdateWorld() if keyCheck:MouseClicked("Left") then System:Print("Test1") end end import "Scripts/+Morra Scripts/System/KeyCheck.lua" local keyCheck function Script:Start() self.loadClass = KeyCheck keyCheck = self:loadClass() end function Script:UpdateWorld() if keyCheck:MouseClicked("Left") then System:Print("Test2") end end I only get printed "Test1", due to this script seems to be called faster than the second one.
-
Hi Leadwerkers , Currently I am figuring out what would be the best way to save my game. What options there are for saving a table or varibles in general, and what options have you come up with? What I am working on at the moment was, to write a savedata table into a file like this and call it back with "dofile": return { someData = "Test"; someOtherData = "Tes2t"; } But this method is pretty tricky, not only have do you have to convert the variables into strings to save them, but it also is complicated and I think its no clean and fast solution because you have to work with the stream and filesystem command and "manually" write your data into a lua file. There is the System:SetProperty() command, but there you only can save strings as well. Are there any other commands Leadwerks offers? Another engine I worked before had a save command, where you can save any lua variable in (tables, strings, numbers everything) and then call it back. So tell me your attempt, what have you come up with? I want a system, where I just say: Save that variable and load that variable back on demand. If leadwerks does not offer such function itself I would be very thankful if you can link me tutorials, ideas or anything else which helps me building my own savesystem. Sorry if the english is not perfect Phoenix
-
Hi there, I have a problem, maybe you guys can help me. I will make it quick. Following is what I have (just an example): function Script:Start() FileSystem:CreateFile("Data/Save Data/someData.lua") self.stream = FileSystem:WriteFile("Data/Save Data/someData.lua") end function Script:UpdateWorld() --I created this to find the error and to test it out if window:KeyHit(Key.K) then self.stream:WriteLine("Some text goes here") System:Print("It should work!") end end So I get printed "It should work!" AND the file gets created, but I can click "K" as often as I want, the text which should be written does not show up in the file. I need this to save data for my game. Whats the mistake. I noticed, that sometimes it gets written, after I close the application, but sometimes is has also been written while "ingame", but mostly it doesnt, especially with the scenario you can see above. Anyways this stream:WriteLine() seams to behave very akward. Further then solving my problem, what are your solutions for saving massive, or not so massive data (object positions, player position, npc states etc)? Thanks for your answers! EDIT: Just checked the data file again, and now the data is written a hundred times??? But I triple check if it gets written after I pressed "K". The problem is I need the file to be written immediately, because I grab the file again with dofile (I normally write code into the file that gets called (a simple "return" and some data))
-
What would be the best way to get a specific type of entity in an area? I am currently working on my AI and I want it to search a weapon, if it has no at the moment. So I want it to check its sourrounding for a weapon. Whats the best way to do it. Or I could need it that my AI can check for enemies in its sourrounding. I thought of getting all entities in the scene (world) check their distance to the AI and if it is smaller then the AIs sense radius, then it checks them for the type (for example if it is a weapon or not) and returns to the AI. So whats the best way to get specific entities in a defined area (for example around a NPC)? Any ideas on how to make it better then the concept I have?
-
Hello, currently I am working on my AI system, but I have a problem setting up multiple NPCs. What you need to know: - My AI is able to randomly move around in the world using waypoints. - I coded an own animation manager "class" The Problem: I set one NPC to not move around and the other to do so. It works fine. One is moving, one is standing still, BUT the one moving is not playing an animation. So he is kind of floating around. The one who is standing is playing the walk animation. So I printed some values to find the error. By the way if I just have on NPC active everything works fine without any trouble. This is the code of my animation manager class: function AnimationManager(script) local model = {} function model:StartAnimation(animation, speed, objects, playOnce, reset, blendMultiplier) --some code self.objects = objects local printIt = self.objects[1]:GetKeyValue("name") System:Print(printIt) end function model:DrawAnimation() --some code end return model end The scripts are called like this: function Script:Start() --Load Classes self.loadClass = AnimationManager self.animManager = self:loadClass() --Start Animation self.animManager:StartAnimation(argument1, argument2, ...) end function Script:Draw() --To play an animation self.animManager:DrawAnimation() end I only put the nessecary information in the code block, that you understand what I am talking about. My NPCs have diffrent names in the editor. The moving one is named "Fox" the standing one "Jacob". The class works, that is not the problem. In the AI code I printed the name of the NPC who is calling the StartAnimation() function. It prints "Fox", so the correct NPC is calling StartAnimation(). The NPC called "Jacob" is NOT calling StartAnimation(). The NPC is sending his entity (self.entity) so the animation manager knows on which model to perform the animation. In the animation manager if I print the name of the entity to play the Animation on it prints "Jacob". o.O Why does this happen how is it possible that the two NPC scripts seems to communicate with each other. Why does the AI script of "Jacob" send its information? I am really, really confused. I am pretty sure I am doing something wrong. I watched this behavior before, but now it was the time to ask you guys for help, because I dont find the error. P.S.: In function Script:Start() of the AI script I set self.npcModel[1] = self.entity to be able to play the animation on multiple models at once. self.npcModel is then sent to the animation manager.
-
Hi Leadwerks fellows, I run into some trouble creating an save system. I noticed that when I saved I couldnt immediatly reload my save, to load it I had to restart the "game". I will make it simple. To exclude other errors, I wrote this short line of code: if window:KeyHit(Key.F1) then self.test = FileSystem:WriteFile("test.lua") self.test:WriteLine("Test") System:Print("executing") end And again I noticed that while I am executing the programm and hit F1 (put a print function there to double check) and alt+tab the game and check the file, its empty. I use notepad++ to watch the file, and if I hit F1 it detectes a change and after reloading the file still nothing. Even if I close the application now, still empty. I need to close the whole file and open it again then I can see the text, but its not only a matter of visibility, I also tried to read the written text after saving it in the same session, doesnt work. So I guess the stream:WriteLine() operation gets executed on exit? Is there any way of how to work around this or am I missing something. Maybe its possible to refresh the scene/word/app etc? I dont know, but I remember loading and saving in the same session was possible once... However I would be very glad if someone would help me out P.S.: Lua sandbox is DISABLED!
- 2 replies
-
- Stream
- FileSystem
-
(and 2 more)
Tagged with:
-
I am not 100% sure if this is a bug, but the Transform:Point() function has a weird behavior for me. If it is my mistake then I am sorry and would also be glad if it can be sovled easily. This is the code I have: local direction = Transform:Point(0, 0, 10, self.entity:FindChild(0), nil) I use it for an NPC, that he is able to pick objects in the world. But my code didnt work so I tried to find the problem. After placing a small box at the "direction" vector I found out that it isnt at the transformed point, other than this it remains at the entity it should be transformed to (the "self.entity:FindChild(0)"). After that I tired to make the "Transform" function work seperatly from my npc, for testing purpose. I created a pivot and an other pivot attached to the first one. The parent pivot has the following script: function Script:Start() local direction = Transform:Point(0, 0, 10, self.entity:GetChild(0), nil) local model = Model:Box(0.05,0.05, 0.05) model:SetPosition(direction) end The direction seems to be the same as the entitys position, no matter what Vector I set in the "Transform" function (for example: local direction = Transform:Point(964, 0, 66, self.entity:GetChild(0), nil)). It does not move, but if I put the exact same code, and pivots into another project it works?? And the raycasting of my player, which is in the same scene and project, works as well. However, I also tried it creating a new map in my project but doesnt seem to work. The player has the following code for the direction: local direction = Transform:Point(0, 0, self.useDistance, self.entity:GetChild(0), nil) --self.entity:GetChild(0) is the "player eye" a pivot infront of the player Sorry if it is my fault, but I just dont know why it doesnt work, without reason??? EDIT: After some more testing I found out that setting the Transform option to the following: Transform:Point(Vec3(0, 0, 999999), self.entity:GetChild(0), nil) just works. The local space of the object seems to be extemley "sensitive". But why is this? EDIT2 (Solution): After like hours of finding the error I found it -.- I was because my npc models scale was 0.001 and not 1.0, I didnt collapsed the model in the model editor. And the Eye pivots scale was 0.001 as well. I am not sure if this is a bug or not? But I guess the local position of an object should not change, depending of its scale or am I wrong???
-
Hi community, I would like to talk about how to create a minimap. I made myself some thoughts latley how to realise a minimap. And I would like to collect some useful toughts here. I actually found a solution, so tell me what you think of it. It currently just works as a normal map, not as a minimap... Maybe it is very complicated what I do but thats why I created this post. Ok so I will start explaining. First of all I took a screenshot from the topview of my map. Out of this I made a simple Map, by exporting the shot to gimp or something similar. The important thing is that the map has the same propotions than the real map size. The main idea is to grab the players 3D Position and convert it to a 2D position fitting to the map size and displaying a rect at the converted 2D Position. The conversion works like this: I tell my script the real map size (you can find it out in the viewports) and the pixel size of my map. Because my map and the real map size are propotional, I can calculate a "minimap multiplier" by doing this calculation: real map size X / map size X = multiplier. Thats the first part of the puzzle I need. Second I would like to know where to draw the player start position on the minimap. Because I have nothing I can relate to, I create a "minimap origin" pivot in the scene setting it to the zero-point of our map (not the origin of the viewport!!). To convert the player start position to a 2D Vector we do the following trick explained by this code: self.playerPos = self.entity:GetPosition() local myPos = self.mapOrigin:GetPosition() self.mapOrigin:SetPosition(myPos.x, self.playerPos.y, self.playerPos.z) self.playerStartPos.x = self.mapOrigin:GetDistance(self.entity:GetParent()) self.mapOrigin:SetPosition(self.playerPos.x, self.playerPos.y, myPos.z) self.playerStartPos.y = self.mapOrigin:GetDistance(self.entity:GetParent()) self.mapOrigin:SetPosition(myPos) As you can see I move the map Origin to get the correct X and Y values for the needed 2D Vector. If you didnt forget to also tell the script where the map origin of the 2D Map is in screen space, then you can now draw the player start position correctly on your map. To calculate the movement of the player, better said his current position I do the following: self.playerOffset = Vec2((playerStartPos.x - currentPlayerPos.x) * self.minimapMultiplier, (currentPlayerPos.z - playerStartPos.z) * self.minimapMultiplier) Now you can correctly draw a rect on your map on the correct player position: local minimapOriginX = context:GetWidth() * 0.5 - (self.mapSize.x / 2) + 50 local minimapOriginY = context:GetHeight() * 0.5 + (self.mapSize.y / 2) - 10 local playerX = (minimapOriginX + (playerStartPos.x * self.minimapMultiplier) + self.playerOffset.x) local playerY = (minimapOriginY - (playerStartPos.y * self.minimapMultiplier) + self.playerOffset.y) context:SetColor(Vec4(0,0,0,255)) context:DrawRect(playerX, playerY, 10, 10) Tell me what you think of this method? If you have ideas how to improve my script just let me know. After I was recieving some help from the community I wanted to give something back. However I you think this is a very bad solution, I would be glad to know what other methods there are, I am just an amateur coder
-
Hello, Because I made myself some thoughts about a saving mechanic for my current project, I searched the web and especially the Leadwerks site for how to save simple game data, like the players health or position. The only kind of useful thing I found which works for LUA was this: http://www.leadwerks.com/werkspace/topic/2103-save-data-to-lua-syntax-as-textcompressed/page__hl__save+data and this: http://www.leadwerks.com/werkspace/topic/1853-howto-using-lua-script-as-data-file/ I actually was able to create a data file and read it into my code with "dofile". However I didnt find out how to create/save a file with lua yet. I searched the Leadwerks API and found the Stream and FileSystem Class. So I tried the following code: function Script:Start() local gamedata = FileSystem:WriteFile("Test.txt") end It didnt work, and I also dont know how it works. Where has the file been created? I searched my PC and the Projectsfolder but couldnt find such a file and I also dont get any kind of error message. I guess this is completely wrong, but I was just playing around, because I don't have that much experience with Lua and Leadwerks. The file you can download in the first thread I posted ("TStoreData.lua") doesnt work anymore and I cant find where he saves data. That you clearly undersand what I want. I would like to do something like this: function Script:Start() local gamedata = {} gamedata.playerHealth = 100 gamedata.playerWeapon = "Sword" gamedata.playerPos = Vec3(10, 100, 53) FileSystem:WriteFile("gamedata.lua", gamedata) end This is just some code that you know what I mean. I know this doesnt work xD. So could you please help me out a little bit . PS.: I kind of understood what AndyGFX wrote in his post, I just couldnt find anything how to save a file.
-
Hi, I was wondering that I couldn't find any tutorial about creating simple UI elements. I searched the web and the forum for a while, and because I couldnt find anything useful I started this thread. The problem is I dont get how to check whether my mouse cursor is hovering over an element or not. To give you an more exact example: I just finished a simple inventory generation system where you can choose how many columns and slots it has and some other stuff. This works very well. However now I want to implement that, if you click on one of the items collected and shown in the inventory, that they get used/activated. The method I know from previous game developing experience is that you cast a ray from your camera origin through the mouse position and grab the UI elements which get intersected. My questions so far: Info: I only code in LUA. - How to check if my mouse hovers an context object (for example an image drawn with context:DrawImage()) - How to unlock my mouse so that I can move it around freely You would do me a great favor, if you tell me how this works in Leadwerks. Phoenix
-
Veteran programmers, and veterans of Leadwerks
spacepunchgaming posted a topic in General Discussion
I highly encourage some one who wants to make a bit of extra money on the side to spend some time creating a course for Leadwerks on www.udemy.com I am sure that every single one of the people who buy this engine would love a full blown course for the engine as well, to make sure they get the most out of their learning experience. I know I would. So please consider it, I would be the first one to purchase it. Teach LUA scripting and the over all API of Leadwerks in general in the course, that would be fantastic! -
Hello, I do use *.fx Shader files and try to get them going at my LE-Project. Got an external Tool, The ShaderTool on Steam. In the desprition it reads, that the current Version supports LE. How can I use this Effect files? The Shader-Files I used so far are *.shader Files (Lua based). Got the Standart Version of the LE. Do I have to install necessaryly a Visual Studio Express to work with these *.fx files? Or could I run the *.fx-files anyway, also without the Visual Studio. Might someone know an answer? That would be great. C.U. REZ
-
I want to hire a programmer to code a Login System or HWID lock with an online database. So I can manage my tool sales easier... I managed to make the tool but I don't know if I'm able to make the login system in LUA. I'm willing to pay someone to do this!
-
- LUA
- programmer
-
(and 3 more)
Tagged with:
-
Hello again, I hate bothering you guys with what seems to be bacis stuff. I need some help editing or writing my own code for ai and melee weapons. I have their animations all imported (both weapon and monsters) and have set up some basic scenes to test them. I took a look at the prefab monster code as well as the prefab fps weapon code. I thought simply changing the code with my own values and equipping them would work for now, but it doesn't. I dont even know where to begin. Is there a tutorial for a basic ai and melee weapon system? Lua or c++ would work for it. Any packages possibly for me to take a look at? I am sorry so very lost.