Jump to content
ℹ️ Intermittent Download History issues ×

QQuix

Members
  • Posts

    716
  • Joined

  • Last visited

Everything posted by QQuix

  1. A compromise: 1- The city itself in a different world space. High walls (or clouds) won't let you look down, so no need for a moving landscape mesh. 2- When the player is in Tamriel, a simplified version of the city floats around in the skies. 3- If you want to go fancy, the city could have an 'observation deck' - a small room with a view - the room would actually float in Tamriel skies, so you look at the actual landscape, but you only have to move the room and the player, not the whole city. @Vagrant: But doesn't the animation move in only one direction? Or are you talking about a generic landscape? Just to see some land moving down below, not a replica of the actual one.
  2. Yes . . . I remember you mentioning some time ago that if the anchor point of a large mesh is not in a loaded cell, the whole thing disappears (which makes sense). So a single, large mini landscape mesh would not work because it would have to be moved far away, in all directions, to fake the city movement. AFAIK, animation can only move the mesh back and forth in one direction, so won't work either. A lot of small pieces would also not work because the farther ones would be in unloaded cells and would not show up. Hmmm . . . what about a single, large mini landscape mesh in an interior cell that behaves like exterior?
  3. The moving is kind of crazy, but, with OBSE arrays, it is quite possible. I've done it with ships ( ). Each ship is composed of about 30 objects that are moved and positioned every frame. I would guess that 100 objects could be moved without FPS drop. Maybe 200. But, as Vagrant already said, there are very serious problems to solve: 1) MOVEMENT: When you move statics, their collision stays behind, so you have to enable+move+disable them in different frames. But, then, it would flicker. I have tried alternating between 2 sets of identical objects, but it still flickers. There is a solution, tweaking with the mesh, that makes the collision go along, but I am no modeler and don't know how to do it. 2) DOORS: Major problem is that interior doors lead to an exterior door marker and this door marker would have to move along with the city. OBSE has functions to do this, and that would allow the player to go in and out correctly, but NPCs can't deal with this moving destination, so every time you need an NPC to change cells, you have to do it by script, forcing the NPC to activate the proper door (Door.Activate NPC 1) 2) PATH: Path nodes cannot be moved. One theoretical solution would be to create a network of XMarkers and script the NPCs to go to one after another until he reaches his destination. Agreed!! All in all, insane amount of work. I guess the moving background (underground?) would be much easier. But, with screenshots, it would look flat. I wonder if it would be possible to create a miniature 3D mesh corresponding to Tamriel landscape.
  4. 27. Mirabelle Monet, the owner of The Fo'c's'le, a boarding house for sailors at the Anvil docks, sleeps with her customers. A different one every night!! No wonder people start talking: Things like "Mirabelle Monet runs quite a boarding house. I understand all of the sailors leave very satisfied." (And I am about to release a mod to expand her activities. Hmmm !?!!!)
  5. You may try SetActorAlpha. I suppose the game physics works on invisible actors. I read that the F key crashes the editor when there is nothing for the object to land on. I am no modeler and a few weeks back I asked the community for a flat, havoked horizontal plane . . . that stays horizontal. I mean: when falling, if any part of it touches anything, it stops falling and stays horizontal, even if the obstacle is at one of the corners, it would stay (unnaturally) horizontal. Pretty much like when you press F in the CS. I've got no answers, unfortunately.
  6. GetLOS does not work for what you need. It does work for detecting collision on most objects, but not for ground (it only returns false - no LOS - one or two feet below ground). If you are interested in details, I released a mod just for this demonstration - check the file QQuix Test Environment - GetLOS V1 The best way I have found, so far, to detect ground in a specific spot is dropping an actor and check when it stops falling, but it may take a second or more, as you already said. I used this technique to position the crop on the ground in QQuix Conceptual - Realistic Farming V1a (or YouTube: ) The second best, is using MoveTo on an actor. An Vagrant daid, MoveTo snaps the actor on the nearest path grid, which may or may not be where you want it. Either way, when the actor (I usually use a customized dog, scaled to 0.01) is in position, you can move your object to it. Nothing better than that, I am afraid.
  7. I got these instruction From TomBrightblade when i asked how to make an static apple. I am not a modeler, had never used NifScope before and it worked
  8. From OBSE doc: SetCellWaterHeight - changes the water height of the specified cell. In order for the command to take full effect, the cell must be reloaded (con_PurgeCellBuffers can be used to forcibly unload it if it is still in memory). If used to alter the water height in a loaded cell, the water shader will reflect the new height and actors will switch between swimming and walking animations appropriately. However, floating physics and the water surface will not be updated until the cell is reloaded. This command has no effect in exteriors or in cells which have no water. (waterHeightChanged:bool) SetCellWaterHeight cell:ref newHeight:float
  9. Well, on my previous tests I was moving the player from a worldspace to an interior, Just retried and it works fine. But I found that moving a mounted player within Tamriel does not work. After trying several approaches, the best I could come up with was dismount the player, wait until the dismounting finishes and, then, move the player and the horse. The final script is this: scn aaqqxxTestTrigSCRIPT short bIsActivated ref refTarget ref refActor ref refHorse ref reff begin OnTriggerActor if bIsActivated == 0 set refTarget to aaqqxxTestMarker set refActor to getActionRef if refActor == player if refActor.IsRidingHorse set bIsActivated to 3 PlaySound DRSCreakyOpen01 if eval refActor.GetParentWorldspace == tamriel let refHorse := refActor.GetHorse refHorse.activate player 1 else refActor.MoveTo refTarget endif endif endif elseif refActor.IsRidingHorse == 0 ;=== first frame after dismounting === set bIsActivated to 0 refHorse.MoveTo refTarget refActor.MoveTo refTarget endif end
  10. You set up a timer, but you are not checking it. Therefore the TriggerZone is moving the actor every frame, which is the likely cause of the problem. An "if rActor.IsRidingHorse && fTimer <= 0" should do the trick (but the TriggerZone will only move one actor per second) Obs: The OnTrigger block runs every frame while there is an actor triggering it.
  11. The little I can remember from tests I did a year ago, you just move the NPC. The horse should go along automatically. But the NPC dismounts at the destination, so you have to move each one back individually.
  12. Rules are the same for shorts, floats, refs, etc In your case, you forgot the "to". Should be "set VTWEAKhungry.hungry TO -100 "
  13. OBSE v17 added a SetCellWaterHeight. But only for interior cells and has some limitations if the player is in the target cell.
  14. The way I am implementing it, the ranking system does not directly determine which one to select. The system determines the odds of choosing each of the candidates, including a good chance of not selecting anyone and drink alone. This way, each time an NPC enter the bar, her decision will be different. Another factor to consider is that, from the 40+ NPCs, only a handful will be at the bar at any given moment, so the chances of meeting the same group twice are very low. For the first version, there would be only one-to-one conversations, not groups. So the arriving NPC will consider only the 'free' customers. Also, they stay at the bar just for a short period, so the NPC will select and talk to just one of the patrons each time she/he goes to the bar. Group talk would be just one step ahead in complexity. It, also, would not be difficult to make the NPC reevaluate his options every few minutes, so she/he may decide to leave the group and, maybe, join another group. Back on topic, the main technical difficulty I see when considering NPCs interacting with each other is that NPCs don't do much when the player is not around. For example, using the bar scenario, when the player enters the bar and there are, say, 8 NPCs there . . . which ones are talking to which? Remember that when the NPCs went to the bar, the bar-cell was not loaded and the NPC selection algorithm did not run. And what if the player leaves the bar and returns one hour later? The scenario should be different. But if the player just leaves and returns, everything is supposed to be pretty much the same as before. I say it is quite a challenge to cover all the situations. Of course, this is just a side discussion/consideration, and does not apply to main subject raised by khravv, namely an improved NPC-Player interaction.
  15. I am pretty much experimenting with the concept of total control of NPCs with scripts, instead of predefined AI packages. It is kind of a proof of concept, which results I plan to apply to my The Evolving Society mod. I have just finished the code for them to decide what they 'want' to do next. Drinking at the bar is one of the candidate activities. If and when an NPC decides to go to the bar, the implementation goes as follows: - There are a number of predefined conversation subjects (Politics, Religion etc) - Each NPC has a degree of interest in each subject (hardcoded) - Arriving at the bar, his interests are matched against the interests of each one at the bar and he will approach the NPC that has the best match. This approach implies that their personal interests are public. A more interesting alternative would be not knowing up front, but, instead, learning about each other interests over time (by chatting at the bar) and each NPC 'ranking' the others as more or less 'fit' to be his pal. As a matter of fact, I don't think I will implement this particular bar-pal thing, but I do have NPCs 'ranking' each other based on other factors. Either way, the 'engine' is exactly the same.
  16. I am working on a mod that has something along the lines that you guys are discussing here. In this mod, I have a few dozen NPCs that interact with each other and the result of their interaction will affect their decisions in the future. For example: an NPC goes to a bar and spend some time talking to one of the NPCs that are there. If they have some common interests and enjoy the conversation, the next time the NPC goes to the bar, he may look for his 'friend'. Given enough interactions, the group will tend to divide into subgroups with common interests. In this mod, this is possible because I am controlling every single step of the NPCs. Kind of replacing the game AI with my own. I mention it just to confirm that it is possible for a limited number of NPCs. At first glance, I can't imagine a way to make it generic.
  17. What does PPEnemyScan do? Why not placing the GetFirst/nextREf loop in a function? I don't see where you reset 'Position' to 0.
  18. Objects found in the world are references. Therefore GetCrosshairRef returns references. AddItem needs a Base Object as a parameter. To get the Base Object of the book, add a "Set Crosshair to Crosshair.GetBaseObject" before the AddItem line.
  19. "Let" is an OBSE command. You have to load the Construction Set thru the OBSE loader, so the OBSE part of the compiler can recognize its commands and functions. The OBSE docs explain how. The best way is to create a desktop shortcut. Mine is pointing at "C:\Program Files (x86)\Oblivion\obse_loader.exe" -editor (with the quotes)
  20. Contradicting Slawter500 (with the risk of irritating a dear contributor The Evolving Society), here you go: Enter the CS, create a new quest and attach the following script to it (requires OBSE). If you are not familiar with the CS, just ask and I am sure somebody will do it for you. I am afraid I cannot do more than this, as I have my hands full with other projects of mine. For fun, I challenged myself to do a quick and dirty mod for this in less than 10 minutes . scn aaqqkbPlayerHeadingWithKeyboardSCRIPT float fQuestDelayTime float angZ float angX begin gamemode set fQuestDelayTime to .01 if IsKeyPressed3 80 ; NUM2 let angX := player.getangle X + 1 if angX <= 89 player.setangle X angX endif endif if IsKeyPressed3 75 ; NUM4 let angZ := player.getangle Z - 1 player.setangle Z angZ endif if IsKeyPressed3 77 ; NUM6 let angZ := player.getangle Z + 1 player.setangle Z angZ endif if IsKeyPressed3 72 ; NUM8 let angX := player.getangle X - 1 if angX >= -89 player.setangle X angX endif endif end
  21. I was thinking more in terms of turning off all lights at once. Turning them off individually would be a little more complex, but maybe still possible. But, first, let's consider that we are talking about four groups of objects here: (A) Light bulbs - emits light (that reflects in nearby objects) but don't have a visible object (B) Lights that have a mesh: emit light and do have a visible object © Fake light objects: static objects that appears to shine (like (B)) but don't actually emit light (D) The 'off' counterparts - an 'extinguished' version of (B) and © objects For example, for the fat candle, check (B) CandleFat01Blue128 , © CandleFat01Fake and (D) CandleFat01Off. Notice that (B) and © look the same: CandleFat01Blue128 emits light while CandleFat01Fake just look like a lit candle. You may also check the interior cell 'WarehouseLight ' in the CS. It has many pairs of matching ©(D) objects. You would need to disable/enable all (A), (B) and © objects: Light bulbs may be just enabled and disabled, but (B) and © objects must be replaced by their (D) counterparts - here is where you need the long list of base objects I mentioned (there are hundreds of them). But the concept itself raises a major concern: how to put things back in their original state? The problem is that you want to reset things when and if the player leaves the cell without turning every single light back on, but when the player leaves the cell you cannot access/manipulate those objects by script anymore. I can't see how to solve this without a very complex 'system' to keep track of every single light the player has turned off and every time the player enters a new cell check if there is any lights to reset on that cell. Even with such a system, there would be still a problem if the player deactivates the mod. If you used PlaceAtMe, you would leave a string of (D) objects behind, which is the very concept of savegame bloating. By using predefined, persistent objects created in the CS, you would have a limit, true, but you could move them from cell to cell as needed. The problem with this idea is that you would have to create hundreds of persistent objects. I am not familiar with spells. Maybe by having a time limit, they could, somehow, be used to reset things.
  22. If I may suggest a simpler approach . . . Turning the lights off: Just walk all lights in the cell with GetFirst/nextRef and disable all that are within a given radius from the player (Ref.GetDistance player < 500 (?)). Save the disabled lights references in an array. Turning the lights Back on: Using the array of saved refs, turn all back on (enable them). This takes care of the real light sources. Now, to get rid of the fakes: two possibilities: (1) a simple one: disable/ enable them just as you did with the lights. They will vanish, but since the place will be dark, it may not be a problem. Or, to get fancy, (2) replace them with a correspondent 'no-flame' kind of object (would look better as you could see the extinguished candle or the turned off wall light. For (1) you will need a list of all base objects that you want to disable. For (2) you will need the same list with the matching no-flame objects. You can prepare the lists either by going thru all the inns and houses taking note of the fake lights there, or go thru the statics list in the CS and pick all fake lights there. Either way, a hard, boring task. I would advise against PlaceAtMe for the temporary no-flame objects. Create half a dozen of each in a hidden cell and use/reuse them. Be aware that, even disabling all lights, the rooms will not be completely dark as the cell itself usually have its own Ambient and Directional Lights, which, AFAIK, cannot be changed dynamically. Good luck, anyway.
  23. Hi, andy. I guess I already mentioned that I did like your ideas. Quite elaborated and aligned with the general idea of the mod. A couple of concepts were added to the "Possibilities" list (meaning they may or may not be included in the main engine): A rival village - I am planning on some pirates from some unnamed, undetermined nearby island raiding the colony every so often. Not sure how difficult it would be to 'materialize' their home. Not even sure if I will materialize the pirates themselves. Maybe they only raid when the player is not looking and you only see the damage afterwards. Taxes - I am still not sure whether there will be any currency in the colony. I am pretty much decided not to use the vanilla currency so the initial player's wealth would not affect the evolution of the colony. A local currency, when the colony starts getting some sophistication is a possibility. And a few minor details don't match the way the engine is being built, e.g. I am planning on food/farming being the very first resource/activity and the major factor on the population growth. Most everything else is pretty much aligned with the way the engine is being build and may be used when the time comes to decide on the storyline and side quests. Thanks again.
  24. RandomArt, I guess that when I mentioned 'medieval', I meant the final 'feel' of the town and people, not necessarily the architecture style. I am no modeler, so I am planning on using mostly vanilla meshes. I have not looked into the esp you mentioned, but from the pictures, it seems it will fit nicely on the first stages of the colony. Thanks. Kamoba & RandomArt, the main (pratical) problem with advisors is that, for them to give good advice, the script behind them must be rather complex. Pretty much the same difficulty I foresee with a plan I have for one or more of the initial settlers becoming the player's best friend(s) and right arm(s), so he/she/them could run things when the player is elsewhere. Anyway, the suggestion (and variations) is registered. grmblf, programming in general and, for the time being, scripting Oblivion is my hobby. My motivation is the challenge of doing things (with scripts) that are at or beyond the edges of the game capabilities. This is why I started this project of growing a city from zero. I am working only on the technical (script) side until I am certain that this mod is possible at all. There are still many potential issues open. A second reason is that I have absolutely no talent for creating and writing stories, plots and the like. Also, I still cannot ask anybody to do any continuous work on the story side (or any other aspect of the mod) until I am sure the mod is technically feasible. This is why I started this thread in the first place, so you guys could add/build up ideas in a volunteer basis while I work on the technical stuff. Another aspect of it is that, being a hobby of mine, I take my time doing the pieces, building blocks and occasional sideway scripts, so I can enjoy every moment of it. Therefore, as opposed to most things in real life, there is no deadline for any part or for the whole. Anyway, this entire preamble is to thank you both, grmblf and andy12750, for the contributions. I appreciated those and would appreciate additional ideas/elaborations whenever you may feel like writing them down. As always, I feel bad for not commenting the details of the ideas presented, but, as I already said many times, I like them all and it is too early to start the selection process.
×
×
  • Create New...