tag:blogger.com,1999:blog-72826709045893597612009-03-02T07:26:29.477-05:00LazyCodeA blog to follow the development stages of the different programs I am currently in the process of writing.Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.comBlogger6125tag:blogger.com,1999:blog-7282670904589359761.post-24393418987794536002008-04-14T22:19:00.002-04:002008-04-14T22:41:37.792-04:00My SetupThis is less as a post for anyone reading this and more a post for me keeping track of my web development setup.<br /><br /><br /><b>Firefox Add-ons:</b><br /><a href='http://chrispederick.com/work/web-developer/'>Web Developer Toolbar</a><br /><a href='http://www.getfirebug.com'>Firebug</a><br /><a href='http://www.firephp.org'>FirePHP</a><br /><a href='http://fireftp.mozdev.org/'>FireFTP</a><br /><a href='https://addons.mozilla.org/en-US/firefox/addon/1715'>Long Titles</a><br />Talkback (Default)<br />DOM Inspector (Default)<br /><br /><b>Editors:</b><br /><a href='http://eclipse.org'>Eclipse</a> w/PDT (when it isn't being stupid)<br />Dreamweaver 8 (when it isn't being stupid)<br /><a href='http://www.codeplex.com/xmlnotepad'>XML Notepad 2007</a><br /><a href='http://www.vim.org'>Vim</a><br /><br /><b>General Tools:</b><br /><a href='http://www.wampserver.com'>WAMP Server</a><br /><a href='http://www.heidisql.com'>Heidi SQL</a><br /><a href='http://gskinner.com/RegExr/'>Regex Tester</a><br /><a href='http://sourceforge.net/projects/console/'>Console 2</a><br /><a href='http://www.autohotkey.com'>AutoHotkey</a><br /><a href='http://www.ornj.net/citrus/'>Citrus Alarm Clock</a><br /><br /><b>Sanity Aids:</b><br /><a href='http://last.fm'>Last.FM</a> - Online Radio<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-2439341898779453600?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com1tag:blogger.com,1999:blog-7282670904589359761.post-10000344598729628522007-07-24T21:22:00.000-04:002007-07-24T22:23:06.867-04:00More! MORE! Updates Ahoy!Almost too many updates to list but I'll give it a shot. The biggest one is <span style="color: rgb(0, 153, 0);">c</span><span style="color: rgb(255, 255, 0);">o</span><span style="color: rgb(0, 0, 153);">l</span><span style="color: rgb(255, 0, 0);">o</span><span style="color: rgb(204, 102, 0);">ur, </span>glorious colour.<br />Here's a preview of the new login screen with colour. That is just a small bit of the colour implementation since I put it anywhere that a highlight was feasible.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazycode.info/uploaded_images/newtitle-723728.PNG"><img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://www.lazycode.info/uploaded_images/newtitle-723726.PNG" alt="" border="0" /></a><br /><br />If you noticed above, you can now save and load your character from save files. This was a gigantic pain, I had to hack the crap out of the player description to get it to save to file without crashing and then un-hack, as it were, to read it from file unchanged.<br /><br />Here's what the save files look like and a preview of them being loaded.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazycode.info/uploaded_images/load-preview-788026.PNG"><img style="cursor: pointer;" src="http://www.lazycode.info/uploaded_images/load-preview-788024.PNG" alt="" border="0" /></a><br /><br /><div style="position: relative; color: white; left: 20px; background-color: rgb(102, 153, 51); font-family: monospace; width: 70%;">shawn<br />100<br />8<br />0<br />A-weak-human<br />0<br />0<br /></div><br />A quick explanation of what that is:<br />first line is obiously the character name, second line is health %,<br />third is the player's strength, followed by the Room # the player<br />quit at. The fourth is another obvious one, the description. The final<br />two are booleans for isNPC and hasScript which are currently unused<br />at this point.<br /><br /><br />One of the other big things that I added was a file-based scripting system.<br />Each mob can have a script file associated with it <name>.msf. Currently<br />the only command supported is send which (big leap here) sends a say command<br />to the screen upon a certain action.<br /><br />Preview of script file:<br /></name><div style="position: relative; color: white; left: 20px; background-color: rgb(102, 153, 51); font-family: monospace; width: 70%;">2 send Gaaarrrrrrrr!<br />1 send Hello<br />0 send DIE!<br /></div><br />The preceding number sets when this action happens 0 is upon attack, 1 is upon entrance of the room and 2 is upon death. I'll add multi-word argument support and more supported commands later.<br /><br /><br />Here's a list of the minor updates I've made<br /><ul><li><span style="font-style: italic; font-weight: bold;">all</span> arguments to applicable commands, ie. wear all, get all.</li><li>an <span style="font-weight: bold; font-style: italic;">eat </span>command which restores health if you eat an eatable item</li><li>redesigned <span style="font-weight: bold; font-style: italic;">equipment</span> command</li><li><span style="font-weight: bold; font-style: italic;">get</span>, and <span style="font-weight: bold; font-style: italic;">drop</span> commands</li></ul><br /><br />I still have a lot of plans for this:<br />Extending the scripting system, better system for (N)PC, room, item, creation, more item types, experience/levelling system, skills, spells, etc. inf. The list goes on and on, too much work and not enough time.<br /><br />If you want to test the game or you want the source here you are(both are .rar so you need WinRAR):<br /><a href="http://www.lazycode.info/Programs/Arena2.0/Arena2.0-Source.rar">Source</a><br /><a href="http://www.lazycode.info/Programs/Arena2.0/Arena2.0.rar">Game</a><br /><br />Have Fun!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-1000034459872962852?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com1tag:blogger.com,1999:blog-7282670904589359761.post-33635094783566352692007-07-14T08:37:00.000-04:002007-07-14T08:43:09.345-04:00More commands for Arena2.0A few more updates on Arena2.0:<br /><br /><ul><li>I've got the look command fixed so it no longer crashes when it hasn't found a target.</li><li>I've added the get and inventory commands, here's a quick look. I've also added in a tiny bit of the combat system, though it's just barely an "attack" type command.</li></ul><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazycode.info/uploaded_images/get&inv-741277.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.lazycode.info/uploaded_images/get&inv-741274.PNG" alt="" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-3363509478356635269?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com0tag:blogger.com,1999:blog-7282670904589359761.post-91582367726275694622007-07-09T16:02:00.000-04:002007-07-09T16:13:44.805-04:00Arena2.0I've restarted an old project with a completely new direction. My original Arena game was a map-based game where you wandered around an arena killing monsters. In this iteration it's more MUD-esque, it is room-based instead of map-based. It currently has support for rooms, mobiles(both NPCs and players), I have the look, score, and a small portion of the combat system in. The look command is giving me some trouble as it crashes the game when it doesn't find a target, aside from that nasty bug it's going well so far.<br /><br />Here's a little look:<br />Login Screen<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazycode.info/uploaded_images/login-781836.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.lazycode.info/uploaded_images/login-781835.PNG" alt="" border="0" /></a><br /><br /><br /><br /><br /><br /><br />Some commands in action<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lazycode.info/uploaded_images/commands-781890.PNG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.lazycode.info/uploaded_images/commands-781889.PNG" alt="" border="0" /></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-9158236772627569462?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com0tag:blogger.com,1999:blog-7282670904589359761.post-48482322546162585342007-04-15T00:31:00.000-04:002007-06-17T16:43:07.910-04:00Sheathe/Draw SMAUG SnippetAfter much frustration and fiddling I finally got my Sheath/Draw code to work for SMAUG. I'll post it here because you need a lot of the hardcoded stuff for it to work.<br /><pre><br /><code><span style="font: 10pt Courier New;"><span class="cpp1-reservedword">void</span><span class="cpp1-space"> </span><span class="cpp1-identifier">do_sheath(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">CHAR_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-reservedword">char</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*argument</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br />{<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">OBJ_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*w_weapon;<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">OBJ_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*w_sheath;<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">if</span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">=</span><span class="cpp1-space"> </span><span class="cpp1-identifier">get_obj_wear(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">argument</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">==</span><span class="cpp1-space"> </span><span class="cpp1-identifier">NULL</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">send_to_char(</span><span class="cpp1-space"> </span><span class="cpp1-string">"Sheath what?\r\n"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">}<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">if</span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_sheath</span><span class="cpp1-space"> </span><span class="cpp1-symbol">=</span><span class="cpp1-space"> </span><span class="cpp1-identifier">get_eq_char(ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">WEAR_SHEATH</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">==</span><span class="cpp1-space"> </span><span class="cpp1-identifier">NULL</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">send_to_char(</span><span class="cpp1-string">"\nYou must have something to put the weapon into.\r\n"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">}<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">else<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /><br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">separate_obj(w_weapon);<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">obj_from_char(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">=</span><span class="cpp1-space"> </span><span class="cpp1-identifier">obj_to_obj(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_sheath</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch_printf(ch,</span><span class="cpp1-space"> </span><span class="cpp1-string">"You dextrously slide %s into %s"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon->short_descr,</span><span class="cpp1-space"> <br /> </span><span class="cpp1-identifier">w_sheath->short_descr);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;</span><span class="cpp1-space"> <br /> </span><span class="cpp1-symbol">}<br />}<br /><br /></span><span class="cpp1-reservedword">void</span><span class="cpp1-space"> </span><span class="cpp1-identifier">do_draw(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">CHAR_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-reservedword">char</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*argument</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br />{<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">OBJ_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*w_weapon;<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">OBJ_DATA</span><span class="cpp1-space"> </span><span class="cpp1-symbol">*w_sheath;<br /></span><span class="cpp1-space"> <br /> </span><span class="cpp1-reservedword">if</span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">argument</span><span class="cpp1-space"> </span><span class="cpp1-symbol">==</span><span class="cpp1-space"> </span><span class="cpp1-character">'\0'</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">send_to_char(</span><span class="cpp1-space"> </span><span class="cpp1-string">"Draw what?\r\n"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">}<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">if</span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_sheath</span><span class="cpp1-space"> </span><span class="cpp1-symbol">=</span><span class="cpp1-space"> </span><span class="cpp1-identifier">get_eq_char(ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">WEAR_SHEATH</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)</span><span class="cpp1-space"> </span><span class="cpp1-symbol">==</span><span class="cpp1-space"> </span><span class="cpp1-identifier">NULL</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">send_to_char(</span><span class="cpp1-string">"\nYou don't even have a sheath to draw from.\r\n"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">}<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">else<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /><br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">=</span><span class="cpp1-space"> </span><span class="cpp1-identifier">get_obj_list(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">argument,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_sheath->first_content);<br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">if</span><span class="cpp1-symbol">(</span><span class="cpp1-space"> </span><span class="cpp1-symbol">!w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">)<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">{<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">act(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">AT_PLAIN,</span><span class="cpp1-space"> </span><span class="cpp1-string">"There is no $T sheathed."</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">NULL,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">argument,</span><span class="cpp1-space"> <br /> </span><span class="cpp1-identifier">TO_CHAR</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;<br /></span><span class="cpp1-space"> </span><span class="cpp1-symbol">}<br /></span><span class="cpp1-space"> </span><span class="cpp1-comment">// get_obj( ch, w_weapon, w_sheath );<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">obj_from_obj(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">obj_to_char(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);</span><span class="cpp1-space"> <br /> </span><span class="cpp1-identifier">equip_char(</span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">WEAR_WIELD</span><span class="cpp1-space"> </span><span class="cpp1-symbol">);<br /><br /></span><span class="cpp1-space"> </span><span class="cpp1-identifier">ch_printf(ch,</span><span class="cpp1-space"> </span><span class="cpp1-string">"You quickly draw %s from %s"</span><span class="cpp1-symbol">,</span><span class="cpp1-space"> </span><span class="cpp1-identifier">w_weapon->short_descr,</span><span class="cpp1-space"> <br /> </span><span class="cpp1-identifier">w_sheath->short_descr);<br /></span><span class="cpp1-space"> <br /> </span><span class="cpp1-reservedword">return</span><span class="cpp1-symbol">;</span><span class="cpp1-space"> <br /> </span><span class="cpp1-symbol">}<br />}<br /></span></span><br /><br /></code></pre><br /><br />Feel free to ask questions or comment here or send me and email.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-4848232254616258534?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com0tag:blogger.com,1999:blog-7282670904589359761.post-58723677280837114052007-04-05T00:13:00.000-04:002007-04-07T18:23:55.970-04:00Created Dev-Blog[Update] I've got the first bid at $5<br />[Note] After the 18th I will take the auction public to E-Bay/MissionFish<br /><br />I'll use this so for all of you that are at all remotely interested can follow my development states on different programs. Until I find a new project you can find my completed projects <a href="http://www.lazycode.info/programs.html">Here</a> [programs.html].<br /><br /><div style="text-align: left;">Once I get enough requests or lack thereof I will put the site's shirt up for auction.<br />Here's a quick preview image of the front.<br /></div><div style="text-align: center;"><img src="http://www.lazycode.info/ChildsPlayAuction/LC-Shirt_Close2.png" /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7282670904589359761-5872367728083711405?l=www.lazycode.info%2FDevBlog.html'/></div>Shawnhttp://www.blogger.com/profile/09074750795750490606Shawncplus@gmail.com0