|
|||||||
This is a discussion on "Revolutionary New OLC and Scripting" in the Top Mud Sites MUD Coding forum : Check out NiMUD at NiM5 Documentation Index Lots of new features, scripts, the most powerful MUD codebase in existence!... |
|
You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our MUD community today! If you have any problems with the registration process or your account login, please contact us. If you are a registered member of the old TMS forums, please click here
|
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Check out NiMUD at NiM5 Documentation Index
Lots of new features, scripts, the most powerful MUD codebase in existence! |
|
|
|
|
|
#2 |
|
Member
Join Date: Sep 2005
Name: Dave
Location: Oregon
Home MUD: Ansalonmud.com
Posts: 50
![]() |
Re: Revolutionary New OLC and Scripting
It come with Asbestos armor? Lol, kidding, welcome back again Locke. Did you want to list features and explain why it's the most powerful MUD codebase in existence?
Last edited by Zivilyn : 01-30-2009 at 01:35 PM. |
|
|
|
|
|
#3 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
I have to admit it's still being worked on. There are some definite kinks. The bug I found today: if you hurt() in a script, destroying the target, the variable points to a bad part of memory when you next dereference it. Yay. Crashed the MUD hard. This will be fixed soon I hope.
I plan to implement only bug fixes in the hard code. I've noticed I've written a lot but not all of it functions as expected, so that's the only changes I will be making from here on out: making it do what it says it does and making it work as expected. Yes, I'm done adding features. The latest updates not even available yet on SourceForge include fixes to the magic and spell system that I have put off for years. Today I added 6 (yes 6!!) spells, one creates an object, 3 are offensive and 2 create mobs. Once the kinks are ironed out I will be pumping out 100+ spells for an upcoming release demonstrating all of the features of NiMUD. ------- The most advanced features of NiMUD currently are still amazing to use. I'm particularly fond of the "TRACE" feature which permits an immortal to "act out" the actions of a scripted actor in the game. Once in TRACE mode (by typing "trace" from within the script editor), everything you do is recorded and stored in the script. The way I usually create one of these is by creating a new script and then adding the first line: autowait (25); This is a good pace for a script. I then exit the editor and type the 'trace' command to enter 'trace' (or 'tracing') mode. When I'm done acting out the set of activities, I type 'trace' in the script editor one more time to exit this mode and it stops recording my actions. I used this method to create the adventurer guide. I was able to walk for a great distance within the MUD and the adventurer makes it to his destination. At the end of this script I wrap it up by adding these lines by hand: do({:waves and heads back to the Inn.}); jump(5005); At this point, I made sure all the settings were correct, created a couple accompanying scripts that help the player participate, and polished it off with a self-test. I've made several interesting areas with this method and with other scripting features. There are even some room creating features I haven't used in a while that are pretty cool, like the programmable map-room feature. ------ Adding a spell is easy! First, create the spell, then create a script that will be the actions of the caster. I was able to add a creature summoning spell, an offensive spell and a spell that creates an ice sword all with this method. I've created several functions that incorperate the features of the components and gem magick systems. if ( reagents( mana, reglist ), { goto({cast}); }, { goto({failed} } ); <- tests to see if the caster has everything they need mix(mana, reglist); <- casts the actual spell, consuming the reagents and if ( gem({f|w|e|a},20), { goto({cast}); }, { goto({failed}); } ); where gem consumes any available mana stored in magic gems Example: Water-elemental Spell Summons Water Spirit Code:
if ( gem({water},{75}),
{ goto ({cast});
},
{ goto ({failed});
} );
label(failed);
echo({me},{You don't have enough water mana.});
goto({end});
label(cast);
do({:concentrates for a moment.});
wait({20});
do({:conjures the spirit of water to aid in battle.});
breed(self(),27);
label(end);
|
|
|
|
|
|
#4 |
|
Member
Join Date: Sep 2005
Name: Dave
Location: Oregon
Home MUD: Ansalonmud.com
Posts: 50
![]() |
Re: Revolutionary New OLC and Scripting
The trace() sounds great actually Locke. Reminds me of Applescript with 'record new script' then you just do whatever and hit stop when it's done.
|
|
|
|
|
|
#5 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
I released a new version today with new production notes and many fixes enabling the spell system to work with gem magicks. A future version will include the 'natural magic' which takes advantage of hundreds of spell components to create a realistic alchemy.
Download at my website, below: |
|
|
|
|
|
#6 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Does this function read memory it shouldn't?
Code:
/*
* Cuts a sentence like "You arrives through the hole to the surface."
* to be "You arrive through the hole."
*/
char *cut_to( char *p ) {
static char buf[MSL];
char *t=buf;
char *o=p;
boolean found=FALSE;
while ( *o != '\0' && (found= *o != 't' && *(o+1) != 'o' && *(o+2) != ' ') ) ) {
*t=*o; t++;
o++;
if ( o=' ' ) { *t=' '; t++; }
o=skip_spaces(o);
if ( *o == 't' && *(o+1) == 'o' && *(o+2) == ' ' ) { found=true; break; }
}
if ( found ) {
t='.'; t++; t='\0';
return buf;
}
else return p;
}
|
|
|
|
|
|
#7 |
|
Senior Member
Join Date: Jun 2004
Posts: 292
![]() |
Re: Revolutionary New OLC and Scripting
Yes. It's the o+2
You could try this: Code:
while (*o)
{
if (!strcmp(o, "to "))
{
break;
}
*t++ = *o++;
if (*o == ' ')
{
*t++ = ' ';
}
o = skip_spaces(o);
}
if (*o)
{
*t++ = '.';
*t++ ='\0';
return buf;
}
else
{
return p;
}
}
|
|
|
|
|
|
#8 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
The o+2 would not be called if o+1 is checked against '\0', thus:
Code:
/*
* Cuts a sentence or phrase with "the hole to the surface."
* to be "the hole."
*/
char *cut_to( char *p ) {
static char buf[MSL];
char *t=buf;
char *o=p;
bool found=FALSE;
while ( *o != '\0' && (found=(*o!='t' && *(o+1)!='o' && *(o+1) != '\0' && *(o+2)!=' ')) ) {
*t=*o; t++;
o++;
if ( *o==' ' ) { *t=' '; t++; o++; }
o=skip_spaces(o);
if ( *o == 't' && *(o+1) == 'o' && *(o+2) == ' ' ) { found=true; break; }
}
if ( found ) {
*t='.'; t++; *t='\0';
return buf;
}
else return p;
}
|
|
|
|
|
|
#9 |
|
Senior Member
Join Date: Jun 2004
Posts: 292
![]() |
Re: Revolutionary New OLC and Scripting
Hrm.
It may not read invalid memory that way, but it still reads like a hack job. |
|
|
|
|
|
#10 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
It's always a hack-job, Scandum. My method is elegant.
|
|
|
|
|
|
#11 |
|
Member
|
Re: Revolutionary New OLC and Scripting
I find Scandum's method to be more elegant, as well as more "proper". As for the scripts, the trace feature is indeed neat, but the syntax screams "coder" whereas I think in-game scripting should be more builder orientated. If you need a coder to make all the scripts then the benefit of the system is largely negated in my eyes. If you need a coder to do the scripts it's just as easy for them to write them in C.
|
|
|
|
|
|
#12 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
The reason you write a scripting language is not to make it easier, but to make it more powerful. A logical scripted language is capable of a higher degree of variation than without it, plus the headache of dealing with "C" code, timed events, etc, must be formalized somehow.
I think my language could use 1 or 2 changes, but overall it has greatly enhanced the experience and provided far more possibilities for spells, for instance, or area traversal, as well as the "random encounters" aspect of the game -- ![]() |
|
|
|
|
|
#13 | |
|
Member
|
Re: Revolutionary New OLC and Scripting
Quote:
|
|
|
|
|
|
|
#14 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Actually, Fizban, it's very difficult to argue that considering I have personally written every single NIMScript to date and thus have plenty of evidence to the contrary. I would not say it's less work.
Index of /nimscripts The things the scripts allow are multiple ways of 'getting to' the things that were once basic MUD features, but they can involve event-based activities. Also, they provide rudimentary logic and random variation. In fact, it merely moves the "spec_fun", C hardcode world to soft code, decreasing overall reliability and increasing performance requirements (albeit slight). Yes, in part, to open it up, but not really: many scripters don't have the extensive background necessary to undertake doing it on their own, and thus need training and guidance which I also provide. So, while it has yielded better gaming rewards, it has not really been less work at all. The one place where it really pays off is when you want to create many variations on one theme. For instance, let's say you had a generic fireball script and you wanted to make many different strengths of fireballs as separate spells, that would be fairly easy to do. Maybe you just think of it as an offensive spell like fireball, then you can make a bunch of fireball like spells with different timed emotes and different potencies very quickly. Another example is the Pirates part of The Isles. It is fairly easy to create 5 similar adventuring ships based on the first ship. You can just make one ship perfectly, and then use it as a template to make the other 4 ship adventures, swapping in and out different parts to make them different (such as the captain's name, the ship's name, or the types of random encounters and their chance of happening). ![]() Last edited by locke : 03-11-2009 at 05:30 PM. |
|
|
|
|
|
#15 | |
|
Member
|
Re: Revolutionary New OLC and Scripting
Quote:
I wasn't saying they can't save the builder time as well, I was just stating that ideally, at least in my eyes (ie. I'm not saying your opinion is wrong, just simply that it's coming from a different perspective) , a scripting language embedded into a MUD should have simple enough syntax for the majority of the MUD's staff to be able to use it to save the absolute largest amount of time. That way more people can share the workload and builder's can write the scriptsfor their own zones when making the zones instead of having to think up scripts and then request that a coder write them for them. DG Scripts can most likely do 95%+ ofthe things your NIMSCript (I said most likely) but it has syntax which is friendlier to non-coders who would quite likely be intimidated by the syntax used in the NIMScript. I certainly do agree that how powerful and flexible a language is matters, I just disagree on it being the only thing that matters. |
|
|
|
|
|
|
#16 | |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Quote:
Game Statistics --------------- Highest ranking player: Ponnet Played the longest: Ponnet with 11 hours, 108 logins Most diverse skillset: Ponnet with 62 skills Most powerful mage: Ponnet with 13 spells Most experienced: Ponnet with 126495 points Strongest: Fizban with 27 strength Smartest: Ponnet with 30 intelligence Wisest: Ponnet with 30 wisdom Nimblest: Ona with 25 dexterity Toughest: Ponnet with 30 constitution Nicest: Ponnet with 112390 karma Meanest: Kileem with -2178 karma |
|
|
|
|
|
|
#17 | |
|
Member
|
Re: Revolutionary New OLC and Scripting
Quote:
I could easily, very easily in fact make that Game Statistics Page (exception for that most diverse skillset line, it could be done, but not necessarily easily, that would actually be a pain) with just DG Scripts. I'm not exactly sure what all NIMScripts can do but if you can list a few things they can do (5-10) I can list which DG can and can't feasibly do. |
|
|
|
|
|
|
#18 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
The Game Statistics had nothing to do with NiMScripts. In fact, it isn't possible to do that in NiMScripts without specific functions -- I was just sharing that you made a high score.
NiMScripts can: -Appear on a prop, actor or scene, a player or be called as a spell or inside another script -Be called in response to the following game events: SAY, "GIVEN"/"GETS", COMBAT ROUND START, ACTOR DEATH/OBJECT DESTROY, ACTOR BIRTH/OBJECT LOAD/ROOM RESET, SOMEONE ENTERS A SCENE, SOMEONE EXITS A SCENE, A COMMAND IS TYPED IN PROXIMITY TO ACTOR/SCENE/PROP, EACH TICK, EACH PULSE. -Be installed by another script on an entity instance or player -Be triggered by another script that has the owner as target -Generate an updated display using an ASCII graphics renderer which includes line, circle, button etc -Generate MXP and MSP -Dispense objects, breed hirelings -Be fed a special script type called a "Builder Script" which it uses to generate customized dynamically allocated areas -Utilize special functions to be called as a SPELL |
|
|
|
|
|
#19 |
|
Member
|
Re: Revolutionary New OLC and Scripting
The Game Statistics had nothing to do with NiMScripts. In fact, it isn't possible to do that in NiMScripts without specific functions -- I was just sharing that you made a high score.
DG I thought it only listed online players but realized this isn't the case, so DGcan not actually do this either, it could generate those stats among people currently online, but can not read from pfiles. NiMScripts can: -Appear on a prop, actor or scene, a player or be called as a spell or inside another script DG Can be attached to rooms, objects, mobs, or players as of tbaMUD 3.58, the player part is a relatively new addition though -Be called in response to the following game events: SAY, "GIVEN"/"GETS", COMBAT ROUND START, ACTOR DEATH/OBJECT DESTROY, ACTOR BIRTH/OBJECT LOAD/ROOM RESET, SOMEONE ENTERS A SCENE, SOMEONE EXITS A SCENE, A COMMAND IS TYPED IN PROXIMITY TO ACTOR/SCENE/PROP, EACH TICK, EACH PULSE. Object scripts can be triggered when the object is picked up, dropped, given to another player, randomly every 13 seconds, a set amount of time after the object is loaded, when a specific command is typed by someone holding the item, with it in their inventory, or in the room with it (you can also decide in which of those stats a specific trigger will fire), when it is worn, or removed, or loaded, when a spell is cast upon it, when a player/mob leaves the room it is in, when it is opened/closed/locked/unlocked or when it is eaten. Mobile/Player scripts can be triggered randomly every 13 seconds, when a specific command is typed by a player/mob in the same room, when a specific phrase is spoken, when a specific message is sent by act() to the room the mob is in (emotes/socials), when the mob dies, when a player enters or leaves the room with the mob, when the mob itself enters a room, when the mob is given an item, when it is fighting, when it's hp reaches a certain amount of its max, when it is given gold, when it is loaded, when a spell is cast upon it, when it sees a player who it has previously fought, when a door or container in the room with the mob is opened/closed/picked/locked, at a set time of day. Room scripts can be triggered randomly every 13 seconds, by a specific command, by a specific phrase spoken, by a zone reset, by a player/mob entering the room, by an object being dropped in the room, by a spell being cast in the room, by someone leaving the room, by someone open/close/lock/unlocking something in the room, and at a specific time of day. -Be installed by another script on an entity instance or player DG Can do this. -Be triggered by another script that has the owner as target DG can't quite do this, but it can pass variables from one script on an entity to another script on the same entity -Generate an updated display using an ASCII graphics renderer which includes line, circle, button etc DG can not do this. -Generate MXP and MSP DG can not do this either. -Dispense objects, breed hirelings DG can do this -Be fed a special script type called a "Builder Script" which it uses to generate customized dynamically allocated areas DG can not do this, though exits can be created and removed via DG, but rooms can not be made, so DG can change the shape of an existing zone. -Utilize special functions to be called as a SPELL DG can do this by attaching a command script to the player |
|
|
|
|
|
#20 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
NiMScripts can:
-Be called in response to the following game events: SAY, "GIVEN"/"GETS", COMBAT ROUND START, ACTOR DEATH/OBJECT DESTROY, ACTOR BIRTH/OBJECT LOAD/ROOM RESET, SOMEONE ENTERS A SCENE, SOMEONE EXITS A SCENE, A COMMAND IS TYPED IN PROXIMITY TO ACTOR/SCENE/PROP, EACH TICK, EACH PULSE. DG Object scripts can be triggered when the object is picked up, dropped, given to another player, randomly every 13 seconds, a set amount of time after the object is loaded, when a specific command is typed by someone holding the item, with it in their inventory, or in the room with it (you can also decide in which of those stats a specific trigger will fire), when it is worn, or removed, or loaded, when a spell is cast upon it, when a player/mob leaves the room it is in, when it is opened/closed/locked/unlocked or when it is eaten. ---> NIMScripts command functions do not replace existing mud commands by default, a special call to "return(1)" alerts the MUD that it should not continue looking for other commands (command syntax properly entered, so stop here) -- if this is not used, the command executes and then the mud continues to the next command. So, in effect, you can override or augment standard commands like 'wear', 'lock', 'drop', 'get' etc by adding a command like this to a "prop" (similar to Diku "object") .. this can be done for rooms, objects or mobiles (actors,props,scenes) and therefore NiMUD can do all of the things listed as possible in DG scripts. Adding script_update() calls to the source in places listed above is also possible, but I have as yet to find a need for many of those. -Generate an updated display using an ASCII graphics renderer which includes line, circle, button etc DG can not do this. ---> NIMScripts interfaces with "NAGE", the NiMUD ASCII Graphics Engine. The "NAGE" functions are then tied into NiMScript functions. Since NAGE is modular, you could easily extract its functionality from NiMUD and wire it into DG Scripts, with the required attribution of course. -Generate MXP and MSP DG can not do this either. ---> It's probably the addition of only a few functions. -Be fed a special script type called a "Builder Script" which it uses to generate customized dynamically allocated areas DG can not do this, though exits can be created and removed via DG, but rooms can not be made, so DG can change the shape of an existing zone. ---> NiMScript have functions dig() and undig() to do this. In the build() processor, though, scripts can be written which generate player-owned facilities, complete with actors, props, scenes, cues and scripts. One early use of these scripts is a player castle which, when deployed, comes complete with random encounters. -Utilize special functions to be called as a SPELL DG can do this by attaching a command script to the player ---> NiMScripts must be written in a special way (utilizing magic-specific functions for mana drain and checks for special alchemical supplies or spell components), and are attached to spell objects edited in the "SPEDIT" (spell editor) which sets basic information about the spell (level, name, attached scripts). You can also write skills using SKEDIT, and then check against them in a script function (as well as tie them to practitioners). Advanced debugging features: a full screen live debugger, plus other script-related notifications using "NOTIFY" provide information about the script during execution. Last edited by locke : 03-15-2009 at 03:53 PM. |
|
|
|
|
|
#21 |
|
Member
|
Re: Revolutionary New OLC and Scripting
NIMScripts command functions do not replace existing mud commands by default, a special call to "return(1)" alerts the MUD that it should not continue looking for other commands (command syntax properly entered, so stop here) -- if this is not used, the command executes and then the mud continues to the next command. So, in effect, you can override or augment standard commands like 'wear', 'lock', 'drop', 'get' etc by adding a command like this to a "prop" (similar to Diku "object")
DG can do this as well. DG overrides the actual mudcommand by default, but can be set not to. A few examples below: Code:
Name: 'Look', Trigger Intended Assignment: Rooms Trigger Type: Command , Numeric Arg: 100, Arg list: look Commands: if !%arg% %send% %actor% Alas, it is too dark to see anything. end Code:
Name: 'Look', Trigger Intended Assignment: Rooms Trigger Type: Command , Numeric Arg: 100, Arg list: * Commands: if %cmd.mudcommand% == look && !%arg% %send% %actor% Alas, it is too dark to see anything. else return 0 end Code:
Name: 'Look', Trigger Intended Assignment: Rooms Trigger Type: Command , Numeric Arg: 100, Arg list: * Commands: return 0 if %cmd.mudcommand% == look && !%arg% %send% %actor% You notice a movement out of the corner of your eye. end Note: I'm not trying to one up NIMSCript, I'm really mostly comparing because it piques my interest as well, to the best of my knowledge DG was what I'd always considered to be, by far, the most advanced scripting used in any DIKU derived codebase that wasn't just an existing language embedded into the MUD. (ie, I'm not comparing it non mud-specific languages like lua which can be embedded.) |
|
|
|
|
|
#22 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Code:
Name: 'Look', Trigger Intended Assignment: Rooms Trigger Type: Command , Numeric Arg: 100, Arg list: * Commands: return 0 if %cmd.mudcommand% == look && !%arg% %send% %actor% You notice a movement out of the corner of your eye. end Note: I'm not trying to one up NIMSCript, I'm really mostly comparing because it piques my interest as well, to the best of my knowledge DG was what I'd always considered to be, by far, the most advanced scripting used in any DIKU derived codebase that wasn't just an existing language embedded into the MUD. (ie, I'm not comparing it non mud-specific languages like lua which can be embedded.)[/quote] Is it mere coincidence that both languages use %variable% syntax? Probably not. NiMScripts have been made available as early as December 1993, so it's likely that parts of NiM's interpreter ended up as DG Scripts. Here's an example of the mining script: Code:
Vnum: [ 3506] Name: [mine]
Type: [ 0] [COMMAND (When a command is typed.)]
Script:
if ( pre(%astr%,{mine}), { goto({mine}) }, { goto({end}); } );
label(mine);
return(1);
%minehere% is(sector(here()),4);
if ( %minehere%, {}, { goto({nothere}); } );
if ( skill(%actor%,{mining},{0}), { goto({success}); }, { goto({fail}); } );
label(success);
echo(%actor%,{You throw the pick against earth.});
oecho(%actor%,{%name% throws a pick against the earth and a few bits of debris scatter around.});
wait(20);
echo(%actor%,{You rummage through the debris and pick up anything of value.});
if ( check(10), { goto({gem}); } );
if ( check(35), { goto({gold}); } );
echo(%actor%, {You find nothing useful in the debris.});
goto({end});
label(gold);
dispense(%actor%,{17040});
echo(%actor%,{You find a hunk of gold!});
goto({end});
label(gem);
dispense(%actor%,{50});
echo(%actor%,{You find a gem!});
goto({end});
label(nothere);
echo(%actor%,{You cannot mine here.});
goto({end});
label(fail);
echo(%actor%,{You miss and nearly strike your foot!});
goto({end});
label(end);
Here is an example of the script used to manage a pirate ship adventure: Code:
Vnum: [ 6211] Name: [aelmon-shipmate]
Type: [ 1] [EACH_PULSE (Each pulse.)]
Script:
label(start);
%state% {pending};
if ( not(random(0,20)), {goto(boarding);});
if ( not(random(0,20)), {goto(fishing);});
if ( not(random(0,20)), {goto(storm);});
if ( not(random(0,20)), {goto(return)});
wait(6);
label(boarding);
%state% {boarding};
wait(101);
do({shout Merchant ship, ahoy! All hands on deck!});
reset(6215);
reset(6216);
reset(6217);
wait(30);
dig(6210,{east},6215);
do({shout Plank is lowered, board the enemy ship!});
wait(1002);
do({shout all aboard the Aelmon, we set sail soon!});
wait(103);
do({shout Plank is raised, anchor's away!});
undig(6210,{east});
wait(100);
goto(start);
label(fishing);
%state% {fishing};
wait(10);
do({:baits his hook.});
wait(10);
do({:fishes over the side.});
wait(random(50,150));
do({:catches a fish and reels it in!});
do({at 20 oload 6209});
wait(10);
do({drop fish});
wait(10);
if(random(0,1),{goto(start);},{goto(fishing);});
label(return);
%state% {returning};
wait(40);
do({shout Land ho! Starboard!});
wait(15);
recho(6210,{The ship floats safely into the Marina.});
recho(6211,{The ship floats safely into the Marina.});
recho(6212,{The ship floats safely into the Marina.});
recho(6213,{The ship floats safely into the Marina.});
wait(20);
do({shout Drop anchor!});
wait(30);
do({shout We have returned to port!});
moveall(6211,6200,{look});
moveall(6212,6200,{look});
moveall(6213,6200,{look});
moveall(6210,6200,{look});
goto(start);
label(landfall);
wait(10);
do({shout Storm!});
wait(50);
recho(6210,{Wind buffets the ship; you hear the mast break!});
recho(6211,{Wind buffets the ship; you hear the mast break!});
recho(6212,{Wind buffets the ship; you hear the mast break!});
recho(6213,{Wind buffets the ship; you hear the mast break!});
wait(50);
do({shout All hands abandon ship!});
recho(6210,{The boat begins to capsize!});
recho(6211,{The boat begins to capsize!});
recho(6212,{The boat begins to capsize!});
recho(6213,{The boat begins to capsize!});
wait(50);
do({shout Abandon ship!});
moveall(6210,6218,{look});
moveall(6211,6218,{look});
moveall(6212,6218,{look});
moveall(6213,6218,{look});
wait(100);
label(storm);
%state% {storm};
if ( cmp(weather(),3),
{ goto(landfall); } );
if ( cmp(weather(),2),
{ do({shout Batten down the hatches! Lower the misenmast!});
wait(100); } );
goto(start);
Last edited by locke : 03-16-2009 at 11:25 PM. |
|
|
|
|
|
#23 | |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Revolutionary New OLC and Scripting
Quote:
I'm not sure if it's really a "revolutionary new OLC and scripting" if it's been around for 14 years though.... |
|
|
|
|
|
|
#24 | ||
|
Member
|
Re: Revolutionary New OLC and Scripting
Quote:
And Locke, do not let me catch you editing Wikipedia again to add this: Quote:
This is an old revision of this page, as edited by 98.111.199.226 (talk) at 17:36, 4 March 2009. It may differ significantly from the current revision. I'd bet money that 98.111.199.226 is your current IP or was as of two weeks ago. EDIT: (I traced the IP, it's in Pennsylvania, anyone know if that is where Locke lives?) In fact do me a larger favor. Stop editing any and all MUD related wikipedia pages to make references to NiMUD. NiMUD's page was deleted some time ago due to being voted to be of little consequence, relatively unknown, and to have few MUDs running it. Since then you seem to have tried editing almost every other DIKU codebase's page in existence to add mention of NiMUD to it. Why do you bother? I'm guessing vanity, and that hopefully if it is mentioned on enough other pages you will have an easier time making the claim that it is of enough consequence to deserve its own page once again. Frankly I don't care for the reason, I do not want to see NiMUD referenced as being an inspiration for CircleMUD or DG Scripts when it was pre-dated by both. Last edited by Fizban : 03-16-2009 at 03:11 PM. |
||
|
|
|
|
|
#25 | |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Quote:
At the time the only other system available for Merc and that I was aware of aside from MUSHcode was MobProgs. I based the %-% variable method from MS-DOS Batch File language. Since I was at the time developing The Isles using the DJGPP Compiler, and it seemed like something easy to implement. I've since then learned a lot more about programming and my experience has become quite vast. I can see where I could write a better language in retrospect, but don't really see a reason to because writing the software is not profitable for me. I'm also displeased with its illegal sale by Owen Emlen, so my days in MUD development are pretty numbered. Considering many of the advanced features were only recently programmed, and since this thread proves its superior feature set, I would say "revolutionary" and "new" are fine adjectives. Additional evidence to back this up is in the 80 or so downloads since January, proving the software is still a cult classic. Fizban, As for your unfounded claims versus me on Wikipedia, you might want to consider that I have an avid fanbase, many of which do actively use other websites and it is very possible that discussions on my MUD may have lead to others erroneously making claims on other websites. Regards, Locke Last edited by locke : 03-16-2009 at 11:45 PM. |
|
|
|
|
|
|
#26 | |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Quote:
These letters prove the circulation of NiMUD as early as October. I had already uploaded this information to several MUD archival sites, including wuarchive, and other defunct FTP directories services. Bull**** your way out of believing it all you want, but I speak the truth when I talk about the 3Q-4Q of 1993. NIMUD. - rec.games.mud.diku | Google Groups CthulhuMUD (kuh-tool-loo) - rec.games.mud.diku | Google Groups <- October, at least 1 month after it was released to several FTP sites and announced privately on MUD bboards such as at Hidden Worlds MU* Last edited by locke : 03-16-2009 at 11:48 PM. |
|
|
|
|
|
|
#27 | |
|
Member
|
Re: Revolutionary New OLC and Scripting
Quote:
Summary for those with tl;dr syndrome: I make no claims about the history of NiMScript, but I will vehemently deny any claim that DG is a derivative of said language as I have never heard of NiMScript till recently and have worked with Thomas Arp on TBA for five years and know that 99%+ of what is today known as DG Scripts was written by him or was in the initial release by the DG Staff when they released it. (ie. he coded the majority of the differenced between what it was then and is today, not that he coded the initial language that was used on Death's Gate) |
|
|
|
|
|
|
#28 |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Last edited by locke : 03-18-2009 at 05:11 PM. |
|
|
|
|
|
#29 | |
|
Banned
Join Date: Jan 2009
Home MUD: nimud.divineright.org 5333
Posts: 195
![]() |
Re: Revolutionary New OLC and Scripting
Quote:
|
|
|
|
|
|
|
#30 | |
|
Legend
Join Date: Apr 2002
Name: Richard
Location: München
Home MUD: God Wars II
Posts: 1,935
![]() ![]() |
Re: Revolutionary New OLC and Scripting
Quote:
|
|
|
|
|