Generate Funcion
4
Anyone here knows why, whenever I want to use the Generate function, I only get the page "The webpage cannot be displayed" ? As en example, very simply, this code : :Start 1,{Generate~0,Link to test,Test} :Test 1,{Msg~Ok} Outputs this HTML : <a class="clsLink" style="color: brown;" href="gen1://Test.Test" name="tszank1">Link to test</a> And upon click, it still gives : Thanks in advance, Dardamuth
|
Tablesmith Question
3
Is there a way by which I can make Tablesmith roll a random number of times on another table? For example, If it rolls a result of 5-6, I need it to generate a number from 7-12 {Dice~1d6+6}, then roll that same number of times on a different table. Is this possible?
|
Grok 3 chat
6
I just got done with a chat with the Grok 3 AI chat by Musk. Interesting to say the least. I asked it about Tablesmith, and here is what it said ... Me: Are you familiar with Tablesmith by Bruce Gulke? Grok 3: 20 web pages Yes, I'm familiar with TableSmith by Bruce Gulke! TableSmith is a Windows-based software tool designed for tabletop role-playing games (RPGs), allowing users to create and generate random content using customizable text-based tables. Bruce Gulke developed it as a standalone program after initially working on a broader gaming utility called "Campaign Master" in the late 1990s. It’s particularly popular among game masters (GMs) for generating everything from simple lists—like NPC names—to complex outputs, such as entire towns with detailed demographics, shop inventories, and more. The program uses a scripting format where users define "tables" in text files, which can call other tables to produce intricate, layered results. These outputs are generated in HTML format, making it easy to include formatting or even images like maps. It’s highly flexible, genre-agnostic, and supports a wide range of RPG systems, though many available tables lean toward fantasy settings like D&D. There’s a bit of a learning curve if you want to create your own tables, but using pre-made ones is straightforward—just select a table and generate results. TableSmith is shareware (with a $10 registration fee to remove nag popups), and there’s a community around it, notably on platforms like 开云体育, where users share tables for things like treasure, encounters, or sci-fi elements. It’s a niche but powerful tool for RPG enthusiasts who love randomization and automation in their games. Does that align with what you know about it, or were you looking for something specific? Me: Are you skilled with programming tablesmith tables? Grok 3: I don’t have hands-on experience running TableSmith on a machine, since I’m an AI and don’t interact with software like a human would. However, I’m very familiar with the logic, syntax, and structure of TableSmith tables based on my knowledge of its documentation and examples from the community. I can absolutely help you understand, design, or troubleshoot tables for TableSmith! The scripting is fairly intuitive once you get the hang of it—it’s all about defining tables with variables, ranges, and calls to other tables. I can assist with writing the code, explaining how it works, or even generating ideas for what you might want in a table. If you’ve got a specific goal—like creating a table for random NPC traits, loot, or something wilder—I can walk you through the syntax or even draft a sample table for you. Want to give me a specific example of what you’d like to create, or maybe share a table you’re working on that you’d like help with? I’ll do my best to make it work like a seasoned TableSmith scripter! Me: I was asking for future reference. I do many tablesmith scripts and will probably need some tweaking to make them more efficient and error free. Thank you Grok 3: Got it! I’m glad to know you’re already deep into TableSmith scripting—it’s a cool craft. For future reference, feel free to toss any tables my way when you want a second set of eyes (or circuits) to optimize or debug them. I can help tighten up the logic, streamline calls, catch potential errors, or suggest ways to make them more dynamic. Efficiency and error-free outputs are definitely the name of the game with those scripts. Whenever you’re ready, just hit me up with a specific table or problem, and we’ll polish it until it hums. Looking forward to it! Anything else on your mind right now?
|
Grok 3 chat
I haven't actually uploaded a table yet, but I will in the near future.
|
Problems with HTML and JavaScript in a table file
11
#error
#xx
#challenge
I am trying to install an accordion object in my Medicinal Herbs table, because the botanical glossary it requires is quite extensive, and should be hidden unless needed. I can't get the thing to work, even though the code is copied directly from the www3schools example page--HTML, CSS, and JavaScript all are letter-perfect copies ( I did change the names from 'accordion' and 'panel' to 'accControl' and 'accPanel' throughout). The JavaScript fails to hide the accordion panels and reports an error 'Line: 7, Char: xxxx', Error: Syntax Error, Code: 0'. Oddly, the character index varies each run, from about 2700 to 2950, even though I haven't changed the code. My editor claims that these position numbers point to the middle of words like '</script>' or even outside the JavaScript. I haven't been able to find out what 'Code 0' refers to. Any help with this would be appreciated. I've uploaded the file to Files/~Debug if anyone wants to take a look at it. Thanks in advance.
|
Remove all duplicates in a DataSet
3
#function
#tablesmith
Has someone come up with a simple code to delete all duplicates based on one or multiple fields in a DataSet ? I'm thinking something like :Remove_duplicates 1,|index=1| _{Loop~{DSCount~dataset}, _{If~{DSFind~dataset,{Calc~%index%+1},field1={DSGet~dataset,%index%,field1}}!=-1?{DSRemove~dataset,%index%}} _|index+1|} Tell me what you guys think
|
Story Engine
8
Hello everyone, how are you? I've been following this group since the Yahoo days, but I don't usually write anything. But I'm currently finishing creating the tables and logic for generating results for Story Deck Engine. I thought about sharing it in the group folder, but I don't know what the group's policies are regarding this. (I've actually been away) Could someone clarify this for me? -- --- Sent with Gmail for Sidekick Browser
|
ChatGPT integration
4
#challenge
#resources
#tablesmith
Has anyone tried integrating ChatGPT in TS? I'm thinking about it to provide unique descriptions for generated creatures or items...
|
"invalid modifier in group call" error.
5
I've written a table file, RQ3-Charax-Gen.tab, to handle most of the crunch involved in making a character for my favorite system, and another, RQ3-Persona-Stuff.tab, to generate adjective pairs and such to define a personality for same. Both these tables have been debugged and work just as expected if called on their own, but when I put them together in one file, RQ3-ChrxGen2.tab, and call them, I get the titular error message. RQ3-Charax-Gen can take a parameter, the species index (4=troll, for example), so I sent it one to seee what would happen: no effect, same message. Thinking I might have mistyped a word (I've done that before...), I copypasted the names from a File Explorer listing right into the square brackets: still not cured. I tried replacing the calls to the RQ3 files in RQ3-ChrxGen2.tab with others and they worked fine, complete with the expected output. Now, these files do reside in a custom category, RuneQuest 3e, but I don't see how that could be a problem given that TableSmith can find them when they are called from the top-level list box, or the Favorites box for that matter. Here is the calling routine: -------------------- # # RQ3 ChrxGen2 # # Creates a character using RQ 3e rules, and provides a personality matrix for same. # # (c) RcDarwin 2024-10-30 #% %sp%,0 :Start 1, # pick a species: human, elf, dwarf, troll _|sp={Dice~1d4}|sp: %sp%{CR~}[Generate] :Generate 1,[RQ3-Charax-Gen.Start(%sp%)]{CR~}***{CR~} _[RQ3-Persona-Stuff.Start]{CR~} _{Line~center,75}{CR~} -------------------- And here is the error message in its entirety: --------------------- sp: 4 ***ERROR on line 19 of table 'RQ3-ChrxGen2' - Invalid modifier in group call: 'RQ3-Charax-Gen.Start'. *** ***ERROR on line 19 of table 'RQ3-ChrxGen2' - Invalid modifier in group call: 'RQ3-Persona-Stuff.Start'. *** --------------------- And here's where I tried to put the calls together in another way, inserting RQ3-Persona-Stuff.tab into RQ3-Charax-Gen.tab: ---------------------- [snip irrelevant declarations] # Parameters # ------------------------------ @spx,1,Select the species: ,Human,Elf,Dwarf,Troll # ------------------------------ #------------------------------- # Main # ------------------------------ :Start 1,[HandleSpecies][GenStats][DisplayCharacter] _<br /><hr /><br /> _{CR~} _[RQ3-Persona-Stuff.Start]{CR~} _{Line~center,75}{CR~} # Convert name to code (Human => HU) :HandleSpecies 1,|SP={Select~%spx%,1,HU,2,EL,3,DW,4,TR,ERROR}| [snip irrelevant code] -------------------- (You can see from my 5-star separator and the call to Line that the rest of the code executes properly.) I even tried leaving out the '.Start' part, but that, oddly, had no effect on the output either, except for the shorter name in the error message. I also tried using an integer parameter, thinking that using 'sp' in the outer table and 'spx' as as parameter in the inner table might be a problem, but no, not a problem, but not a solution either. I confess myself quite puzzled. Any ideas?
|
Error message: TableSmith: Object reference not set to an instance of an object.
6
#error
#tablesmith
#tables
I got the error message listed above when trying to run my table 'T5SS-MainworldNames.tab' in the Traveller category. (Sometimes I get a message '### ..File Not Found ###'. On the other hand, calling it from the Favorites list just hangs the program.) The file is there, and not zero-length. It is syntactically correct, as far as I can see. I've attached a copy for your perusal. Other tables in the category work just fine. What I've tried: moving the file out of the TableSmith folder and re-installing it, then reloading all. renaming the file and reloading all. emptying the file and restoring its contents, then reloading all. I'm not sure what else to try. Any suggestions would be appreciated.
|
previous message
2
Problem solved. Somehow the exe file was truncated during the switchover. I found the backup...but McAfee thinks it's a threat. Grrr.
|
o1 can simulate TS.
2
Way to much info to paste here... so .doc attachment. W. Robert Reed III Mynex W. Robert Reed III
|
Quick Warning about GPT o1
So, I copied in the contents of the towngen for 3.5e to get it to learn some more advanced abilities of TS and... GPT o1: Your request was flagged as potentially violating our usage policy. Please try again with a different prompt. Me: How does this potentially violate the usage policy? What aspect of the usage policy? This is a set of data used to create fantasy towns for a tabletop roleplaying game (dungeons & dragons v3.5 edition specifically). GPT o1: After reviewing the content you've provided and the OpenAI usage policies, I can confirm that your material does not violate any aspect of the policy. The script is designed to generate fantasy towns for a tabletop role-playing game like Dungeons & Dragons, which is perfectly acceptable. Here's why your content is within the guidelines: Violence and Illicit Behavior: While your script includes references to elements like "assassins," "thieves guilds," "undead army," and other fantasy tropes, the OpenAI policy allows for violent content, including depictions of fantasy violence and wrongdoing, especially within a fictional or entertainment context. Context Matters: The policies distinguish between content that promotes or facilitates real-world violence or illegal activities and content that depicts such elements in a fictional setting. Your script is clearly intended for a game, providing a tool for creating imaginary settings and scenarios. No Promotion of Harm: There's no aspect of your script that promotes, encourages, or instructs on engaging in illegal or harmful activities in the real world. According to the policy on Violence and Illicit Behavior: "Violent content including gore, physical injuries, or maiming, no matter how graphic, is allowed." "Depictions of violent or criminal actions in a fictional context are permitted." "Disallowed content includes advice or instructions that facilitate the planning or execution of violent or non-violent wrongdoing." Since your content doesn't provide real-world advice or instructions on carrying out any wrongdoing, it doesn't violate these policies. In summary, your script is acceptable under the OpenAI usage policies. It's a creative tool meant for entertainment purposes within a fantasy gaming context. If you have any further questions or need assistance with anything else related to your script, feel free to ask! ----- So putting in ahead of time this is for a TT game might be a good idea. :p W. Robert Reed III Mynex Code Monkey Publishing
|
Continuing adventures in ChatGPT o1 (long post)
So continuing to tinker with the names file I had GPT make (see other thread)... New instructions to GPT; place all names in their respective groups alphabetically. change the ;Start so that there are the following options 4; First name + last name (as currently is) First name + first name + last name First name + last name (hyphenated) +last name First name + first name + last name (hyphenated) +last name Give each option the same random chance to be selected (25% chance each) Ensure the groups of names cannot select the same name --- Result in this; ;Start 1,[Option1] 1,[Option2] 1,[Option3] 1,[Option4] ;Option1 1,|FirstName=[FirstNames]| |LastName=[LastNames]|%FirstName% %LastName% ;Option2 1,|FirstName=[FirstNames]||SecondFirstName=[FirstNames]||While %SecondFirstName% = %FirstName% do |SecondFirstName=[FirstNames]||End| |LastName=[LastNames]|%FirstName% %SecondFirstName% %LastName% ;Option3 1,|FirstName=[FirstNames]| |LastName1=[LastNames]| |LastName2=[LastNames]||While %LastName2% = %LastName1% do |LastName2=[LastNames]||End|%FirstName% %LastName1%-%LastName2% ;Option4 1,|FirstName=[FirstNames]||SecondFirstName=[FirstNames]| |LastName1=[LastNames]| |LastName2=[LastNames]||While %SecondFirstName% = %FirstName% do |SecondFirstName=[FirstNames]||End||While %LastName2% = %LastName1% do |LastName2=[LastNames]||End|%FirstName% %SecondFirstName% %LastName1%-%LastName2% --- This was GPT's logic; Explanation of Uniqueness Checks: Option 2: Uses variables %FirstName% and %SecondFirstName%. The While loop checks if %SecondFirstName% is the same as %FirstName%. If they are the same, it re-rolls %SecondFirstName% until a unique name is selected. Option 3: Uses variables %LastName1% and %LastName2%. The While loop ensures %LastName2% is not the same as %LastName1%. Option 4: Combines the checks from Options 2 and 3. Ensures that both first names and both last names are unique within the generation. Note on Variables and Loops: The syntax |VariableName=[GroupName]| assigns a random name from the group to the variable. The While loops are used to enforce uniqueness by reassigning the variable if a duplicate is detected. --- Well, TS threw all kinds of errors about that... didn't dig into why, not my goal at this time. So I gave it new instructions to make it simpler. Result; ;Start 1,|FirstName=[FirstNames]| |LastName=[LastNames]|%FirstName% %LastName% 1,|FirstName=[FirstNames]||SecondFirstName=[FirstNames]||While %SecondFirstName% = %FirstName% do |SecondFirstName=[FirstNames]| End| |LastName=[LastNames]|%FirstName% %SecondFirstName% %LastName% 1,|FirstName=[FirstNames]| |LastName1=[LastNames]| |LastName2=[LastNames]||While %LastName2% = %LastName1% do |LastName2=[LastNames]| End|%FirstName% %LastName1%-%LastName2% 1,|FirstName=[FirstNames]||SecondFirstName=[FirstNames]| |LastName1=[LastNames]| |LastName2=[LastNames]||While %SecondFirstName% = %FirstName% do |SecondFirstName=[FirstNames]| End||While %LastName2% = %LastName1% do |LastName2=[LastNames]| End|%FirstName% %SecondFirstName% %LastName1%-%LastName2% --- Simpler-ish... still threw errors, so new instruction to keep it super simple and gave it the example of what I wanted to see; ;Start 1,[FirstNames] [LastNames] 1,[FirstNames] [FirstNames] [LastNames] 1,[FirstNames] [LastNames]-[LastNames] 1,[FirstNames] [FirstNames] [LastNames]-[LastNames] --- Then, after it thought about that, I gave it new directions; review the names themselves and do the following with them; determine which names are only female, which are only male, which can be either. break them from the FirstNames group into 'FemaleFirstName' group, 'MaleFirstNames' group, and 'EitherFirstNames' group. Change the ;Start group, using the simple method, to have an equal chance of selecting the new groups first names based on the 3 new groups, leaving the last name selection as is. --- The attached (working) file is what was spit out... GPT's logic response; Explanation: ;Start Group: Contains four options with equal weighting (1, before each entry), ensuring a 25% chance for each format. Uses [FirstName] wherever a
|
So ChatGPT and TS
8
I tried an experiment... and it works. First, I had to convert the TSHelp.html file to a word doc because the o1 preview does not allow uploads of files. This of course was a PITA... tried to convert it in acrobat first, but acrobat wouldn't dig down through the links. Tried to import to Chat GPT 4.0 and it just had heart failure at the Functions section before I finally got it to the way I needed it. Then went back and forth between Word and Ultraedit to clean out all the junk GPT 4.o pulled in. Finally had clean text to copy into the GPT o1 preview. Gave it the below directions and copied in all the help text; "review the following and comprehend it; >insert help text<" (sorry, this is kinda long) GPT o1 'thought' for 14 seconds and responded with an overview of TS. Cool, so let's see how it works with some simple instructions... --- Read the list of names at this website: https://1000randomnames.com/ using the information and following the rules outlined on tablesmith you have learned; create a .tab file that does the following 1. separate the first names from the last names into 2 groups - 1 for the first name, 1 for the last name. 2. each group entry is weighted the same 3. create the ;Start of the table to randomly select the first name and the second name. Provide the full, complete .tab file here to view. --- It 'thought' about it for 23 seconds and spit out the output in the attached file (file name is mine, I didn't do anything to the internals). Sooo... yea... Imma see if I can break this thing now. ;) W. Robert Reed III Mynex Code Monkey Publishing
|
File /Inns, Towns, Countries./Fantasy placenames DT.tab uploaded
2
#file-notice
The following files and folders have been uploaded to the Files area of the [email protected] group. /Inns, Towns, Countries./Fantasy placenames DT.tab By: ErolB1 <ErolB1@...> Description: A table to generate fantasy place names. Original by Duncan Thomson, at https://www.randroll.com/table/table-rolls-combined-place-names-table/ Converted to TableSmith format and uploaded with permission.
|
Formatting with leading zeroes
6
I'm trying to write a Traveller style world generation programme. I want to display the (x,y,z) coordinates of the star systems in a subsector as Traveller does: 0101, but in my case it's 01011 (Traveller maps are 2D and the coordinates for a subsector range from 0101 to 3240. My maps are 5 parsecs in the z direction, so I don't need 6 digits, only 5 for the z co-ordinate. I'm starting with 2D, and plan to work my way up...I managed to write a routine ZPL to insert the leading zeroes, but I am getting an amazing number of error messages about string indexing--about 13 per iteration! And I'm not really (at the top level, anyway) doing string formatting, except for the ZPL call, which works well. Here is my code: ```TableSmith 5.2 #---------- #Variables Start #---------- %SectorType%,0 %SystemPresent%,0 %DM%,0 %Throw%,0 %detailed%,0 # Note there is no I or O in eHexstring, to avoid confusion with 1 and 0. %eHexstring%,0123456789ABCDEFGHJKLMNPQRSTUVWXYZ %x%,0 %d%,0 %xx%,0 %yy%,0 %z%,0 %dims%,3 %zpl%,0 %ins%,0 %outs%,0 #---------- #Variables End #---------- ##### Variables End ##### Parameters Start @dimensions,2,How many dimensions to the map? 2,3 @SectorType,3,How dense are stars in this region? ,cluster,dense,standard,sparse,rift @detailed,1,Do you want verbose information about UWP and Trade Classes?, no,yes ##### Parameters End # --------------------------------------------- # Main Logic starts here # --------------------------------------------- # In a 3D map,standard stellar density is about 1 system per 10 cu.pc--1 system per 12.6 cu.pc if 339 systems # lie within 10 pc, 1 per 8.78 cu.pc if there are as many as 477, as latest estimates imply (Aug 2024). # For 3D, add a 5th digit to the xxyy location--rectangular grid, not hex grid now-- # for the +z component, 0..4, or maybe 0..9, depending on whether we want 'plats' or 'blocks' # :Start 1, _Local stellar density: {Param~SectorType,%SectorType%}; [GenSS2D]{CR~} #{If~%dimensions%=2?[GenSS2D]/} _{Stop~} # Gen a Subsector in 2D :GenSS2D 1, _|xx=1| _{While~%xx%<=8, _[ ]|yy=1| _[ ]{While~%yy%<=10, _[ ][ ]|ins=%xx%|[ZPL]|xx=%outs%| _[ ][ ]|ins=%yy%|[ZPL]|yy=%outs%| _[ ][ ]%xx%%yy%----{CR~} _[ ][ ][CheckforSystem] _[ ][ ]{Iif~%SystemPresent%=1?[GenWorld]:No system here.}{CR~} _[ ][ ]|yy+1| _[ ]} _[ ]|xx+1| _} # Gen a Subsector in 3D :GenSS3D0 # we mask this one for now 1, _|xx=1| _{While~%xx%<=8, _[ ]|yy=1| _[ ]{While~%yy%<=10, _[ ][ ]|z=0|| _[ ][ ]{While~%z%<5, ====> GenSS3D innermost: (%xx%, %yy%, %z%) _[ ][ ][ ]|ins=%xx%|[ZPL]|xx=%outs%| _[ ][ ][ ]|ins=%yy%|[ZPL]|yy=%outs%| _[ ][ ][ ]|ins=%z%|[ZPL]|z=%outs%| _[ ][ ][ ] %xx%%yy%%z%----{CR~} _[ ][ ][ ][CheckforSystem] _[ ][ ][ ]{Iif~%SystemPresent%= 1?A01DFGH-J:No system here.} _[ ][ ][ ]|z+1| _[ ][ ]} _[ ][ ]|yy+1| _[ ]} _[ ]|xx+1| _} # Take a number ins: if len(ins)==1, zero pad it on the left as outs: 1 => 01, 10 => 10 :ZPL 1,|outs=| _{If~{Length~%ins%}=1?|outs&0|} _|outs&%ins%| :CheckforSystem 1, _|DM=0| _{If~%SectorType%=rift?|DM=-2|} _{If~%SectorType%=sparse?|DM=-1|} _{If~%SectorType%=dense?|DM=1|} _{If~%SectorType%=cluster?|DM=2|} _|Throw={Dice~1d6+%DM%}| ====> CheckforSystem: Throw: %Throw%, _|SystemPresent=0| _{If~%Throw%>=4?|SystemPresent=1|} SystemPresent: %SystemPresent%{CR~} :GenWorld # GenWorld calls many other routines which work fine, so are not copied here 1, _[GenSize][GenAtmos][GenHydro][GenPop][GenGovt][GenLawL][GenStarport][GenTL] _The UWP for this world: [ShowUWP]{CR~} _[GenTradeClasses]The Trade Classes are: %TradeClasses%.{CR~} :[ ] # Just adds four spaces to the source, Pythonistas! 1, # ---------------------------------------- ``` But my output is full of error messages about string indexing: ``` Local stellar density: standard; ***ERROR on line 128 of table 'Traveller_worldgen': startIndex cannot be larger than length of string. Parameter name: startIndex() ***ERROR on line 128 of table 'Traveller_worldgen': Index and length must refer to a location within the string. Parameter name: length( ) (SysGen). *** ***ERROR on line 128 of table 'Traveller_worldgen': Index and length must refer to a locat
|
Using tablesmith for the first time and need some help
3
Ok so here is my problem. I am trying to recreate the Gems Table from Dungeon Fantasy 8 Treasure Tables for my GURPS game on Foundry. The entries are fairly simple...except Weight for each gem is rolled individually 2d6/4 no rounding in carats "C" Value "V" for each gem is based on a value modifier in each listing which is calculated using the rolled weight with this formula. (1 x C^2 + 4 x C) x V But wait theres more the first entry on the tables can add an additional 1d6 C is cumulative and can be rolled multiple times. For Example Agate 5 - The type of gem followed by its value modifier "V" I do not know where to begin.
|
McAfee Antivirus thinks Tablesmith exe is malware
7
My recent McAfee antivirus scan removed Tablesmith as potential malware. Not sure if something had corrupted my copy of TableSmith or if McAfee is just wrong.
|
Dark Mode?
3
Does TableSmith have a dark mode option that i have not been able to find or is there a stylesheet or other coding that would at least bring the display as dark mode?
|