Jump to content

Phodex Games

Members
  • Posts

    275
  • Joined

  • Last visited

Everything posted by Phodex Games

  1. Hi, I have a small problem. I am currently working on a spellsystem. For this I created a "Spell Effects Library.lua" file, which contains any possible effect that a spell could cast to easily access the effects. I have two types of spells. Spells on target and on self. The "on self" spells get casted in the player script: import "Scripts/Spell Effects Library.lua" . . . if KeyHit then self:CastSpell(something) end The script for the Library looks like this: function Script:CastSpell(something) . . . end So far so good. For the "on target" kind of spells the shooten projectile casts the effect on hit. Those code is just for visualization: import "Scripts/Spell Effects Library.lua" . . . if hit then self:CastSpell(something) end So If I shoot a projectile now and it hits its target it says "attempt to call method 'CastEffect' (a nil value)". BUT if I delete the import line at the player script it works just fine. It does not seem to be possible to import the same script into two other scripts? So could you help me please? How to manage this?
  2. Is this only for the Steam Workshop or is there also any Royalty (the 20% taken by Leadwerks), if you offer items on diffrent platforms then the Workshop. For example a model pack for Leadwerks on itch.io?
  3. I faced the same kind of problem with my project. So far I didnt found a perfect solution, but its fair enough. 1. After you rigged and modeled your character, export it without any clothing. 2. Now if depends on what type of clothing you have. I will cover both types: 2.1 Full/Half Body Clothing: Models covering a larger area of your character (trousers, pullovers, tshirts, armors) need to have an own rig. Now export the affiliated cloth model and attach the nessecary skeleton parts to it (for a t-shirt just the bones for the Arms/Hands/Shoulders for instance). In Leadwerks I prefer to add a body and legs slot to my character(s) in form of a pivot. Then I parent the cloth parts to the affiliated pivots. My script plays animations for every model parented to the leg and body pivots as well as for the character body. The cool thing first: You dont need to extra export animations for your clothing, because you can use the "Load Animations" function in Leadwerk's model editor, so if you add new animations you dont have to export all the clothing again. The bad thing is if you want to change your rig than you have to do the same for every clothing part by manual, BUT you normally have finished your skeleton before creating serious armor/clothing asset so its a good deal. 2.2 Thats the cooler thing. If you have just clothing parts like arm protection, leg protection, gloves, weapons etc you can simply parent them to the affiliated body rig bone. So if you have an arm protection like this (http://www.andracor.com/out/pictures/z1/sol_armschienen-warlord-braun_1_z1.jpg) then you can attach it to your arm bone and the clothing will follow this bone and 100% works with any animation played by its parent. So no rigging, no animation loading. I really like it 3. Dont forget to tell you script to play the animations for each cloth part. Note: I tried to add the bodies skeleton scriptwise to equipped clothings, but leadwerks struggles when accessing bones in the editor or with coding. I hope this helped
  4. Hi, Since i installed Windows 10 my leadwerks window is cut off on the right hand side. I have to active monitores, but that did'nt made any trouble when I had Windows 7 installed. Anyone having the same problem, I would really appreciate if you could help me out, its pretty annoying because its hard to grab the scroll bar or click little icons on the right. If I open the script window for lua the first time I start Leadwerks it snaps to the top of the screen, even futher so that I can't click the Close/Maximize/Minimize buttons. I have to resize it a bit to bring it back. Disabling my second monitore didnt help. My main monitore has a resolution of 1920 x 1080 and the problem just occures with Leadwerks. Thanks if you are able to help me Thats how it looks like: https://www.dropbox.com/s/locsgzhubl3lbe0/Leadwerks%20Window%20Problem.PNG?dl=0
  5. First of all, thank you for the answer I think with main loop you mean the Script:UpdateWorld() function, if so yes it is running there. Yes I know I want to overwrite the savefiles every time I save, because otherwise the savedata begins to stack in the file. That is exactly what I am doing and even then it doesnt have to be a lua file, you can call the extension whatever you want, Leadwerks can read it back in. P.S.: Just tried your code and it works! Well I made a very stupid mistake, but I didnt know that it is needed, I am not very common with the stream operations. Yes I needed the stream to be open, BUT I forgot to release it at the end ^^ thats why it only writes my text after I quit the programm. However thank you very much
  6. 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!
  7. What do you mean with "full physics", I guess you want your AI to move on organic terrain like Mountains etc? Do you? Well other than using the Navigation commands, you can create your own kind of movement, using 100 % accurate physics. This works by setting your AI's model (Body) physics to prop for example and handle the movement with force commands. I woudnt recommend this. I actually used a technique featuring this, for a former project, because the engine I was using didn't support any navmeshing or similar tools. Because I havent tried AI/Navmesh behavior for organic landscapes I cant tell you how it works or behaves...
  8. Haha, yes this is actually true, I found it out by doing some research using various System:Print() command. But this little mistake really was a tricky one, hope I can help people with the same error.
  9. Hi aldoz, Maybe you give us some more information, maybe part of the code or something. My tip is you start creating your own AI, search the web, gather information needed from the API Reference. Why? Well thats the best way learing how to fix problems on your own and to understand unfamiliar code and the community is still here to help you if you need it. Now lets come to your problem. In Leadwerks it is very easy to make an entity follow your player or go to a point. You can read more about this features here: Follow: http://www.leadwerks.com/werkspace/page/api-reference/_/entity/entityfollow-r697 Go To Point: http://www.leadwerks.com/werkspace/page/api-reference/_/entity/entitygotopoint-r700 This functions uses navigation mesh, so dont forget to build a NavMesh for your map!! I guess that may be your fault? Because if you use the original MonsterAI.lua there isn't much you can do wrong.
  10. Well, I think I didnt 100% get what you explained, but the problem is how to just draw part of the map. So I have my whole map as an image file. But Leadwerks just offer the "DrawImage" function, how should I hide some part of the map? With this I should apply the "scrolling" of the minimap, that the map knows where the player currently is?
  11. Yes, but I think you dont have that much of drawn objects at the same time, this could maybe appear on a super huge open world map, and for a minimap you can just show nearby object. That question is how to make my map look like a minimap, and how to just show a part of the map. I dont know how this should be possible...
  12. 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???
  13. Does anybody else has an idea for an minimap/map mechanic? And what do you think of my method?
  14. Yes I know this method as well. But it is much more ressource heavy because you need to render everything twice. I also dont like that the minimap looks like ingame graphic. You also have the disadvantage that you only can create square maps. I would like to have my minimap in a specific, editable design.
  15. 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
  16. Ah ok, I previously tried an IO function and was wondering why it didnt work. Thanks to both of you I will try it it now.
  17. I know that my code was wrong, it was just for visualization purpose. However the code you sent me, didnt work, it says stream is a nil value. That was what I wrote before, FileSystem:WriteFile() doesnt seem to work... However System:SetProperty() works fine and thats more what I searched for, but I would also like to know how to save new file, because I maybe would like to have various save files in the future...
  18. 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.
  19. Thank you Rick it worked very well just tested it out.
  20. I will give that a try. I also could try to get some scripting logic out of Hankinators UI after downloading it. Thank you guys. I will reply again if I tried it out.
  21. 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
  22. UPDATE: I merged all the models and made a single house model and it runs waaays smoother now. I am not done with the texturing yet, but I think the merging helped a lot. I attached a pic with much more houses than before and runs with smooth 60 FPS even in debug mode, thats awesome.
  23. Ok thanks for all the help I think this will fix my problem. I once read that CSG brushes are better for performance than Models. Thats why I created a mixture of both. CSG brushes and some props I add to the Brushes. Well will try that out. I actually prefer to make a house just as a single model, this makes it easier for me . Thank you all again. P.S.: Stupid Question: How to disable Vsync in Leadwerks?
  24. @Josh That is what my log says: Syncing Workshop Items... Initializing OpenGL4 graphics driver... OpenGL version 450 GLSL version 450 Device: GeForce GTX 960/PCIe/SSE2 So I think my GTX 960 is the active graphic device. I think what Crazycarpet wrote fixed my problem. I am not 100 % sure if the performance is alright now. In the first 10 - 20 seconds after I run my project I still get some fps drops and lagging but after a while I have constant 60 FPS. This is great , but I still am a bit sceptic. Maybe my eyes fool me but I seem to see micro framedrops, this may happen because my project was lagging all the time and I just think it lags... Well the future will show, when I added more assets and build a real small town. But what was the exact problem now?? I will also post a link where you can download my project, containing my "city". Because I would like to see if it runs smooth on other systems aswell now. Grab it here: https://www.dropbox.com/s/kp5079mxejfmwse/ShareProject.zip?dl=0 P.S.: I dont know if it is normal but in Debug mode I only get 20 - 30 FPS. The 60 FPS I was talking about are in normal Run mode.
×
×
  • Create New...