Jump to content
The Dark Mod Forums

Dragofer

Development Role
  • Posts

    2631
  • Joined

  • Last visited

  • Days Won

    157

Posts posted by Dragofer

  1. Nice work! It's like you've packed an FM into that machine ;) I think it'd also have potential as a good generic machine prefab with some variants, possibly taking out or replacing some of the more arcade-machine elements like the overhead arch.

    Feedback-wise from here:

    - the screenshots indicate that the parchment texture is a little too small to fit the game, would be worth stretching that GUI window.

    - saving and loading problems generally occur when a scriptobject is stored within a map script (so i.e. nameoffm.script next to nameoffm.map, instead of script/game_blocks.script) or when a script is called from the console. There are also functions that can be added to a scriptobject to Save or Restore, though I have no experience with when that may be a good idea to have.

    - "game_blocks" doesn't occur in core .script files, so the only thing I can suggest is that you might have a leftover .script file floating about in your base install or in a .pk4

  2. 2 hours ago, Geep said:

    @Dragofer, thanks, I followed up on that, but not there yet.

    My implementation uses a atdm:gui_message, with its "gui" spawnarg pointing to my custom gui. This lets me use the timeout mechanism that atdm:gui_message provides. But that doesn't provide me with the gui handle number. A while ago, you indicated that 10 was the default for atdm:gui_message, so I assumed that.  Following the spyglass example, in my GUI's onActivate I added:

               set "gui::MySlideDone" "1";

    In my script (slightly simplified here), I have:

       sys.trigger($atdm_gui_message_slide); // show slide
       float maxtime = $atdm_gui_slide.getFloatKey("show"); // seconds;
       float slide_done == 0;
       while(maxtime > 0)
       {
        slide_done = $player1.getGuiFloat(10, "MySlideDone"); // 10 is default overlayHandle for atdm:gui_message layer
        if(slide_done == 1) // user did gui's onAction, with LMB
            break;
        maxtime -= 0.1; // poll frequency
        sys.wait(0.1);
       }

    While maxtime is working fine, the "MySlideDone" value doesn't seem to be passed. I'm guessing because the handle number isn't 10. Nothing reported to console problem-wise. Any good way to get the handle?

     

    If I'm not misremembering, every time a message GUI entity is triggered, the overlay that's created is assigned the next highest handle, so 0, 1, 2, 3, 4 etc.. So you can't say that a GUI message's handle will be 10.

    When the overlay is created, you can catch its handle like this:

    float GUI_handle = $player1.createOverlay(.....);

     

    So you can store this handle as a variable inside the GUI message entity's scriptobject, roughly like this:

    [scriptobject, custom version that inherits from the stock scriptobject, only needed if the handle isn't already defined as a variable ]
    object gui_message_custom : gui_message
    {
    	....
    	float GUI_handle;
    };
    
    void gui_message_custom::show_message
    {
    	....
    	GUI_handle = $player1.createOverlay(....);
    }

     

    And retrieve it from your global script:

    [global script]
    {
    	gui_message_custom    e            = $atdm_message_entity_1;
    	float                handle        = e.GUI_handle;
    	....
    }

     

    • Like 1
  3. 4 hours ago, Geep said:

    But I also need to tell a script about it, either by setting a global value that the script can poll, or by calling a script function.

    It looks like there's something like that being done with the spyglass, ZoomInRequest, in spyglass.gui and tdm_playertools.script.

  4. 2 hours ago, wesp5 said:

    I think the reallife counterparts of blackjacks were quite heavy and could have brought up to a tremendous speed hitting only a very small area.

    Applying a high pressure over a small area is something you'd want if you wanted to fracture (impact) the bone.

    For achieving concussion, it'd take a lot of kinetic energy to that body part which is passed on underneath, shearing nerve axons and membranes so that their function is disrupted.

    Kinetic energy increases linearly with mass but exponentially with velocity, so maybe a very fast blackjack can attain more KE than a chair that dropped only from a couple meters. But what might be worth imagining: how fast could you swing/throw a chair with one arm, and how would that compare to letting it drop x metres?

     

    Re: the elite guard helmets, I suppose they have better protective layers to dissipate the kinetic energy of the impact.

  5. Seems my tdm_installer.exe can’t get past the first screen anymore. I select “Get custom version” and click on “Next”, which leads to an unusually slow analysis of each of my .pk4’s before getting “ERROR: Minizip error -103”.

    From what little is written on the internet about this, it seems this error means the installer has troubles opening an archive. I noticed that 2 of the core asset .pk4’s had duplicates ending in .pk4.temp, so tried deleting those. Also tried renaming the .zipsync folder – no avail. Checked in my task manager to make sure that there isn’t a TDM or DR process still hanging on.

     

  6. 12 hours ago, MirceaKitsune said:

    Almost done with my little big side project. Am stuck on one more thing as far as scripting goes: How do I make a function in the scriptobject execute when the entity is activated by something targeting it, for instance an atdm:mover_button? There's frob_action_script for frobbing but no such thing as an activate_action_script: I tried used_action_script but this didn't work, I take it that spawnarg is meant to point to a function for items being used by the player.

    It's all in the wiki now: A to Z Scripting

    In your case the page on "Ways of calling a script" would be relevant, as well as "Scriptobjects" since what's what you're dealing with.

  7. 1 hour ago, Klatremus said:

    But i go back to requesting that a total pickpocket count would be very informative in the stats. The load times one is great for ironman.

    The pickpocket count should be quite feasible to add to the mission statistics. I'd do it by 1) adding a basic property to the base class for pickpocketable items like keys and purses, then 2) scanning all AIs in the map to count how many such items have been attached to them to see how many there are in total.

  8. 11 hours ago, PsymH said:

    Not possible to play. During loading screen I get this error message.

    idMoveable 'atdm_moveable_rock_small_flat02_1': cannot load collision model models/_roth_gen/rock_small_flat02_da0c23d745c38ae0.proxy

    What can I do?

    This sounds like a possible case for @stgatilov, concerning his recent proxy model feature.

    @PsymH As a workaround, you could try deleting your darkmod/models/roth_gen folder.

    • Like 1
  9. 20 hours ago, OrbWeaver said:

    Trying to censor speech in advance, on the other hand, involves guesswork and speculation about what might cause violence, which is unprovable and subject to the particular biases and prejudices of the censors.

    A strong link between speech and violence can be demonstrated by performing an interventional study. This would mean selecting a number of comparable towns and generating hate speech in half of them, i.e. by sponsoring inflammatory articles in the local newspapers and hiring troll bots to post in local communities, then observing to see how incidents of violence against specific groups develop.

    This would be highly unethical given the possible consequences, so the next best thing may be to observe the effects of an existing hate speech campaign in certain towns, which may be carried out by far-right political parties/organisations or foreign governments. You don't have exact control over the input in that case, but should still have quite good results.

    A further method may be to systematically analyse public communications, i.e. demonstrating that whenever a local newspaper, politician or organisation publishes an inflammatory speech directed against a group, there's an increased risk of violence in that area in the period thereafter.

    As you imply, a sequence of events is not enough to infer causality on its own. But you are already a good part of the way there if you demonstrate a strong, temporal association; that the greater the exposure to hate speech, the greater the rise in violence; and that your results are reproducible and consistent across a variety of settings and modalities of hate speech. This would further be backed up by demonstrating plausibility through mechanistic studies, such as an experiment in which participants are given two versions of an article making the same arguments about a minority, but in which one is written in an inflammatory way, and comparing how it affects the participants' agreement with statements pertaining to the rights of minorities.

    So it's indeed possible to build a good case that hate speech causes violence. Furthermore, given enough power, studying the link could also identify which parts of the speech are problematic, giving a scientifically validated basis for defining hate speech. By extension it could be developed further into a classification system, ideally reducing human involvement to determining which characteristics are present, just as is done with speech that explicitly calls for violence.

    There are of course flaws to taking a scientific approach, such as that its conclusions are always subject to revision by later research and are by definition never 100% certain. But then, isn't this the fundamental problem of asking for proof that a law is likely to be effective? You don't seem to be asking for such evidence concerning speech that directly calls for violence, presumably because it seems more obviously plausible to cause violence and necessary to forbid, as well as for practical reasons, such as that it seems easier to identify it as well as prove malicious intent?

    • Like 2
  10. On 7/14/2021 at 4:29 PM, JackFarmer said:

    However, I was already wondering how you can get the effect that lights activate when you approach and deactivate when you move away:

    I do have a downloadable Precursor-style lamp in my Scripting thread, which uses trigger brushes to repeatedly activate a lamp to "keep it alive". As Obsttorte and joebarnin suggest you could also do it by defining a S/R radius, though I've used the trigger brush method to be able to define where exactly a lamp should switch on/off. The problem is that because of a TDM bug, AIs stop activating trigger brushes when they stand still, so my lamps can only react to the player.

    • Thanks 1
  11. 2 hours ago, OrbWeaver said:

    And that's an evasive non-answer.

    Do you or do you not agree that "The Koran causes terrorism" involves the same logic as "Hate speech causes violence against minorities"?

    If you agree that they are the same, why do you support censoring "hate speech" but oppose censoring the Koran?

    If you don't agree that they are the same, what is the important difference between the two arguments which makes the first one invalid but the second one valid?

    If the Koran contains passages that would qualify as hate speech, then yes, there's a conflict between the right to religious freedom and the rights of those who are targeted, just as with hate speech.

    Where a right conflicts with another right, it can no longer be automatically absolute. It's the task of society to find a consensus on whether there's a conflict, how severe it is and then what balance should be struck between them, based on the weight of each right.

    On the matter of the Koran, my understanding is that it should offer the faithful guidance on how they should lead their lives. It does say they should seek to spread Islam, but to my knowledge not by force or coercion, which as Destined says would be problematic in a society with human rights. Nor does it dehumanise unbelievers, which may have steered the faithful towards the use of such aggressive methods.

    And the concept of Jihad, as I remember it to be described in the Koran, is more of a spiritual process by which one should come closer to God. The idea of "waging" Jihad as a holy war on infidels seems to have come from those interpreting the text for their own selfish needs. That would seem to be the root of the problems that stem from the practice of religion.

     

    Quote

    Even if you ban the worst types of language, racial slurs and the like, people still find ways to indirectly insult each other with endless comments like "Wrong!", "Learn to read", "Some really stupid comments in this thread", "So much suck and fail" and so on. Perhaps such comments drive away fewer people than directly calling them a "cunt" or a "n*gger", but it's certainly not the case that aggressive moderation automatically leads to a pleasant, welcoming community.

    If a community attracts people who call others "cunts" and use racial slurs, I don't see how that community could thrive without getting them to tone it down or getting rid of them. A welcoming community is definitely thanks to its members, but moderation may be necessary to ensure it stays one.

    Fortunately the majority of insults I've seen here are more like your less severe examples, which I believe are considered tolerable in what is a mature community. There's no clear cut-off for when an interaction becomes unacceptable, but that's a cause for caution and discussion, not a reason to do nothing.

    • Like 1
  12. @OrbWeaver
    enabling a filter would make the emitters disappear completely, whereas the issue is more with DR's preview of the particle obscuring much of the surroundings.

    DR's particle preview isn't very accurate generally speaking: usually there's nothing shown at all, other times it's only very faint and sparse. Larger particles like volumetric fog can be problematic because their previews cause rendering issues over large areas of transparent surfaces like water. And sometimes, like here, the preview becomes opaque when the emitter is selected.

    From a mapping point of view the preview inside the Particle Editor would imo be sufficient, keeping the func_emitters as plain boxes.

  13. I think an important distinction that's not really been adressed is that the primary aim of the moderation taking place on most forums is to maintain a welcoming community in which constructive interactions can take place.

    Threads that start on this kind of premise are, in my opinion, bound to descend into bigotry and toxicity, and some even see hate speech here, even if it's ostensibly not intended.

    I've only just seen the effect bigoted discussions can have on a community when a new private server went up for an old discontinued MMO. The moderation was largely absent at first, leaving the racism/homophobia/toxicity/etc. etc. unchecked. The result was that players were leaving soon after joining because that kind of stuff seemed to be accepted; interested players were advised not to join that server because of the community; and parents said they didn't want to introduce their kids to it. This is the kind of stuff that makes people feel upset and take distance, as some of the comments here indicated.

    We can and should ask everyone who comes here to bring in a basic level of courtesy, out of respect for everyone else. Almost everything in this thread could probably have been said without allegations of hate speech by choosing a calmer way of expression (without apparent "hate").

    Obviously no one wants to take on the role of a schoolyard teacher mediating every single little spat, and this community is mature enough not to need it. But I think a thread dealing with a sensitive subject, such as attitudes toward a part of the population, needs to be moderated to avoid harm to the community.

    We can have the discussion about the extent of free speech if, despite this, there are calls for crimes against humanity, attempts to dehumanise groups based on religion/ethnicity/etc. or other severe incidents.

    • Like 1
  14. @joebarnin
    Nice work, it's somewhat more sophisticated than the system I had in Down by the Riverside for detecting player proximity to certain entities, which was to bind a nodraw func_static custom stim-emitting cube to the player with a script at map start. Yours is probably the correct way to do it.

    @JackFarmer
    In my case, I used such a system to make the glowing footsteps appear when the player goes near. Each pair of footsteps was a patch func_static that was hidden at map start, with a Response that calls a script to fade it in in when the Stim attached to the player comes near.

  15. 43 minutes ago, MirceaKitsune said:

    Also could someone check the model tdm_ceiling_dust.prt please? I'm curious why this one particle model appears to work in DarkRadiant yet in TDM I never see the particles coming from my func_emitter.

    My guess is that it's a single-cycle particle designed for triggered events. You can check this via the particle editor.

    Regarding the numberwheel system, that was originally made for A New Job, but by oversight the script wasn't pasted over into core TDM from the FM. To fix this permanently, someone would have to create a new copy of the asset using a renamed version of the script so that it doesn't conflict with existing missions that have the original script ( = crash to desktop.)

  16. I'd be for closing or deleting threads such as these on sight, not least to prevent everyone trying to engage with it from getting dragged through the dirt. I don't even think this is primarily a matter of free speech in the sense of being able to express an opinion, but of upholding an acceptable standard of discourse in our community.

    • Like 3
    • Thanks 1
  17. There are quite a few customised AIs around, i.e. in Hare in the Snare Pt.1 and ERH+'s submarine WIP. Maybe those who are interested could identify and list them all in one place. Then if the author grants permission they could be extracted as a standalone package and put up for download. If they seem generally useful to other mappers they could be included in core TDM - that was the process for Sotha's automatons.

    • Like 1
  18. On 6/6/2021 at 9:31 AM, stgatilov said:

    Fixed mission should play well in 2.09, except that main menu can look differently, and probably briefing/debriefing video can be skipped.

    This would seem like a good occasion to be able to download different versions of the same FM. Missing a briefing/debriefing video seems quite severe, and reverting a highly customised main menu to default simply because the FM version isn't compatible with the TDM version isn't so nice either.

    So if someone still plays on TDM 2.09 after 2.10 is out, i.e. because of technical problems with 2.10 or any other reason, they'd get a 2.09-compatible version of the FM from the downloader.

    If they manage to upgrade to 2.10+ later on, the downloader offers them an update to the 2.10-compatible version of the FM.

    Maybe such a feature would help with future maintenance and modernisation of FMs for new TDM versions.

  19. @geep It happened anytime I subdivided an open space, i.e.:

    - a house with an accessible roof, an inner yard and surrounded by an outdoor wilderness. The offending visportals were vertical, all around the top of the roof. Turning them into caulk resolved it.

    - a beach with various houses subdivided into a grid with horizontal subdivisions at the level of the rooves. Even when the visportals were bordered by thin caulk pillars instead of adjacent visportals, the map was unplayable.

    I think the problem is just with having a speaker crossing many large visportals, and reaching into areas from several directions.

    I can't say what role info_locations have.

     

    Regarding the visportal discussion, I've moved the remaining 2 posts over here too because the conversation was getting a little disjointed.

    • Thanks 1
  20. "LOD" for lights could be done with a looping script that compares the distance of all lamps on the map to the player's position every 0.5s and turns them on or off. But lamps are really visible because of how they light up a whole area so it'd be quite noticeable.

    And really, the elephant in the room for performance is how open a scene is. For example, in this shot you have long straight streets with islands of buildings, with the result that most of the visportals in this scene would only ever close if you completely turned your camera away from them. The player gets a peek into many visleafs simultaneously.

    m4WBU1x.jpg

    Looking at a mission like Fiasco at Fauchard Street could be really useful for inspiration. Here the streets are narrower and wind their way through closely packed towering buildings, giving lots of easy opportunities for effective visportals and keeping the player wanting to find out what's around the corner. Probably most players enjoy a flat 60fps here with no need for further optimisation from the mapper.

    44_fauchard1_1_0.jpg.29ffea72ebcbc736dccb73ae90e4ae3f.jpg

    Perilous Refuge is a quite open mission thematically because of the harbour, but it uses architectural features like an underpassage, a tunnel and how the streets are laid out around the buildings in order to minimise how many locations are rendered simultaneously.

     

×
×
  • Create New...