Jump to content
The Dark Mod Forums

Recommended Posts

Posted

Hello! I've read on the wiki about a work around for the string limit in scripts, however I'm struggling to figure out the setGuiStringFromKey() function. 
https://wiki.thedarkmod.com/index.php?title=GUI_Scripting:_GUI::_Parameters
 

 
void set_hint_painter()
{
    entity lock_name = $painter_bribe.getEntityKey("associated_lock");
    string combo = lock_name.getKey("combination");
 
    //Grab string "bribe_text" from spawn key and combine it with unique combination
    // Hits the string limit issue
    $painter_bribe.setKey("page1_body", $painter_bribe.getKey("bribe_text") + combo);
 
    // Work around for string but do not know how this is set up
    $player1.setGuiStringFromKey(overlayHandle, "page1_body", $painter_bribe, "bribe_text");
    //sys.println("LOCK CODE on = " + readable.getName() + " is " + combo );
}

$painter_bribe is my readable and "bribe_text" is the text string in a spawnarg. Its taking the text and combining it with "combo" which is just a random number. I can't seem to get this to work.

I just can't wrap my head around what handle to use or what I am doing wrong here:

$player1.setGuiStringFromKey(myhandle, "myGuiParamName", self, "mySpawnArgName")


Thanks for any help. 

Posted

I have no clue what this is about, but I noticed this:

Quote

scriptEvent void setGuiStringFromKey(float handle, string key, entity src, string srcKey);

This is a kludge. It is equivelant to: setGuiString( handle, key, src.getKey(srcKey) ) However, it's used to bypass the 127 char size limit on script strings.
Spawnclasses responding to this event: idEntity

So it responds to idEntity. But in your code I see this:

Quote

$player1.setGuiStringFromKey

Posted
18 minutes ago, datiswous said:

I have no clue what this is about, but I noticed this:

So it responds to idEntity. But in your code I see this:

Afaik player is a idEntity, everything on the engine is based from idClass->idEntity->all the rest. 

About Kingsal question unfortunately I also don't know what's causing the issue, this seems like something those working on the TDM engine, like stagtilov are better suited to answer. 

Posted (edited)

Ah ok sorry, I thought $player1 is idPlayer.

atdm:player_base
{

	"inherit"						"atdm:entity_base"
	"spawnclass"					"idPlayer"
	"scriptobject"					"player"
	"ragdoll"						"guard_base"

	"editor_displayFolder"			"Internal"
	"editor_usage"					"Base class for the player, defining default values."

 

Edited by datiswous
Posted (edited)
Spoiler

IdPlayer is a extension of idActor that can be traced back to idEntity.

On c++:

class idAnimatedEntity : public idEntity  -----> class idActor : public idAFEntity_Gibbable -> class idPlayer : public idActor 

Sorry for the off topic Kingsal.

Edited by HMart
  • Like 1
Posted

overlayHandle would be a number pointing to your readable gui. It isn't initiated in that function therefore unless it was set globally (outside of the function) it doesn't exist and setGuiStringFromKey doesn't know which gui you are referring to.

Sorry but I can only be of help if I have access to the whole thing.

TDM_Modpack_Thumb_50.png

Posted

Thanks guys, yeah I can't figure out which overlayHandle to use here. I think all readables use the same one.  

@stgatilov Would you mind taking a look at the OP? Is the $player1.setGuiStringFromKey working properly, or am I setting it up wrong? Its the only work around I know of for the 127 (I think it is) character limit. 

Posted
11 hours ago, stgatilov said:

I think there is difference between player overlays and GUI entities.

The script event that you cite only works for player overlays.
And your readable is GUI entity.

Okay, then it seems this function isn't a good candidate for authors to use for the string limit work around. Will keep searching but might have to give up on this route. 

Posted
4 hours ago, kingsal said:

Okay, then it seems this function isn't a good candidate for authors to use for the string limit work around. Will keep searching but might have to give up on this route. 

No way to set GUI text from its spawnargs?

Posted (edited)
On 7/20/2024 at 12:45 AM, stgatilov said:

No way to set GUI text from its spawnargs?

$painter_bribe.setKey("page1_body", $painter_bribe.getKey("bribe_text") + combo);
This works by just setting the key directly on the readable. However it gets cut off from the 127 character string limit. 

Im not sure how to get around that for a readable. I call the readable directly here "painter_bribe" but something just isn't working. 
$player1.setGuiStringFromKey(overlayHandle, "page1_body", $painter_bribe, "bribe_text");

EDIT: maybe a readables gui file can be called out directly? Or this needs to happen as an action script on opening the readable? 

Edited by kingsal
Posted
17 hours ago, kingsal said:

Or this needs to happen as an action script on opening the readable? 

This.

The overlay handle is only valid when the overlay is displayed which only happens when you're looking at the readable. You can see how it works by looking at tdm_readables.script which handles display of readables. There are methods in there that are called by the game code when opening, closing and turning pages, though the whole thing is quite tricky to understand.

You don't really say what you're trying to achieve but it looks as though you want a randomly generated combination for a safe or somesuch so that it is different on each run through a FM. I imagine that this combo is placed in something like a diary that the player must steal first. Unfortunately I think that any attempt at string concatenation in a script will fall foul of the 127 char limit.

  • 5 weeks later...
Posted
On 7/16/2024 at 2:35 AM, kingsal said:

"bribe_text" is the text string in a spawnarg.

What about reading the text string from xdata?

Quote from wiki tdm script reference:

scriptEvent float loadExternalData(string declFile, string prefix);
Load an external xdata declaration.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent Status Updates

    • datiswous

      I moved from Manjaro Linux (rolling release) to Linux Mint (LTS). One of the reasons was that I found the updates a bit too often and long. But now on Mint I get updates every day, although they're usually small updates.
      · 3 replies
    • JackFarmer

      "Hidden Hands: Vitalic Fever" - new update available including subtitles & compressed briefing video (thanks to @datiswous) and several fixes.
      · 0 replies
    • Wolfmond

      🇬🇧

      2025-04-20
      I'd like to track my level design progress a bit more often now, so I'm using the feed in my profile here.
      I've been working intensively on Springheel's YouTube course over the past few days. I'm currently up to lesson 8. There is so much information that needs to be processed and practiced. 
      I have started to create my own house. As I don't have the imagination to create a good floor plan, I grabbed a floor plan generator from Watabou and experimented with it. I chose a floor plan that I will modify slightly, but at least I now have an initial idea. 
      I used two guards as a measuring tape: The rooms are two guards high. It turned out that I can simply double the number of boxes in DarkRadiant in grid size 8 that are drawn in the floor plan. 
      I practiced the simplest things on the floor plan first. Drawing walls, cutting walls, inserting doors, cutting out frames, creating VisPortals, furnishing rooms.
      I have had my first success in creating a book. Creating a book was easier than I thought. I have a few ideas with books. The level I'm creating will be more or less a chill level, just for me, where I'll try out a few things. I don't have an idea for my own mission yet. I want to start small first.
      For the cellar, I wanted to have a second entrance, which should be on the outside. I'm fascinated by these basement doors from the USA, I think they're called Bilco basement doors. They are very unusual in Germany, but this type of access is sometimes used for deliveries to restaurants etc., where barrels can be rolled or lifted into the cellar. 
      I used two Hatch Doors, but they got completely disoriented after turning. I have since got them reasonably tamed. It's not perfect, but it's acceptable. 
      In the cellar today I experimented with a trap door that leads to a shaft system. The rooms aren't practically finished yet, but I want to continue working on the floor plan for now. I'll be starting on the upper floor very soon.

      __________________________________________________________________________________
      🇩🇪

      2025-04-20

      Ich möchte nun mal öfters ein bisschen meinen Werdegang beim Leveldesign tracken, dazu nutze ich hier den Feed in meinem Profil.
      Ich habe mich in den vergangenen Tagen intensiv mit dem Youtube-Kurs von Springheel beschäftigt. Aktuell bin ich bis zu Lektion 8 gekommen. Das sind so viele Informationen, die erstmal verarbeitet werden wollen und trainiert werden wollen. 

      Ich habe mich daran gemacht, ein eigenes Haus zu erstellen. Da mir die Fantasie fehlt, einen guten Raumplan zu erstellen, habe ich mir einen Grundrissgenerator von Watabou geschnappt und damit experimentiert. Ich habe mich für einen Grundriss entschieden, den ich noch leicht abwandeln werde, aber zumindest habe ich nun eine erste Idee. 

      Als Maßband habe ich zwei Wächter genommen: Die Räume sind zwei Wächter hoch. Es hat sich herausgestellt, dass ich in DarkRadiant in Gittergröße 8 einfach die doppelte Anzahl an Kästchen übernehmen kann, die im Grundriss eingezeichnet sind. 

      Ich habe bei dem Grundriss erstmal die einfachsten Sachen geübt. Wände ziehen, Wände zerschneiden, Türen einsetzen, Zargen herausschneiden, VisPortals erstellen, Räume einrichten.

      Ich habe erste Erfolge mit einem Buch gehabt. Das Erstellen eines Buchs ging leichter als gedacht. Ich habe ein paar Ideen mit Bücher. Das Level, das ich gerade erstelle, wird mehr oder weniger ein Chill-Level, einfach nur für mich, bei dem ich ein paar Sachen ausprobieren werde. Ich habe noch keine Idee für eine eigene Mission. Ich möchte erst einmal klein anfangen.

      Beim Keller wollte ich gerne einen zweiten Zugang haben, der sich außen befinden soll. Mich faszinieren diese Kellertüren aus den USA, Bilco basement doors heißen die, glaube ich. Diese sind in Deutschland sehr unüblich, diese Art von Zugängen gibt es aber manchmal zur Anlieferung bei Restaurants etc., wo Fässer dann in den Keller gerollt oder gehoben werden können. 
      Ich habe zwei Hatch Doors verwendet, die allerdings nach dem Drehen vollkommen aus dem Ruder liefen. Inzwischen habe ich sie einigermaßen gebändigt bekommen. Es ist nicht perfekt, aber annehmbar. 
      Im Keller habe ich heute mit einer Falltür experimentiert, die zu einem Schachtsystem führt. Die Räume sind noch quasi nicht eingerichtet, aber ich möchte erstmal am Grundriss weiterarbeiten. In Kürze fange ich das Obergeschoss an.



      · 2 replies
    • JackFarmer

      On a lighter note, thanks to my cat-like reflexes, my superior puzzle skills and my perfect memory, I was able to beat the remastered version of "Tomb Raider: The Last Revelation" in a new superhuman record time of 23 h : 35 m, worship me!
      · 3 replies
    • Goblin of Akenash

      My mapping discord if anyone is interested, its more of a general modding thing rather than just for TDM 
      https://discord.gg/T4Jt4DdmUb

       
      · 0 replies
×
×
  • Create New...