Jump to content
xisto Community

TheFury

Members
  • Content Count

    71
  • Joined

  • Last visited

  1. Can you explain the mechanics of the game, its rule set, its setting, if you are going to attempt to DM a forum game, the least we all need to know is what is acceptable part of the game. It is pointless for me to spend 30 mins working out a character like a cyborg with cannons for arms if this game is going to be medieval. So at a minimum, i would need the following information. With that i could then work out a character that would have a fair chance of being acceptable for this game. Setting: PC Classes: PC Races: The Rule set we are playing by:
  2. start what exactly, you did not outline the game, its mechanics nor its rules and how one can join in or participate.
  3. I have a 6 terabyte raid in my media centre and 5 of those are full, things like TV and DVD's soon add up and they take a lot of space, incidentally that is my entire music, dvd, tv, family home movies and pictures all jammed onto it and lets just say, backups are a *****. I could see a use for 3 of those disks in my household, 1 for data and 2 for image backups, you can never be too save when it comes to making backups.
  4. Because most people will buy or harvest the email addresses themselves and not grow their own list over time, and because it is spam, their mail servers will eventually end up on a spam list, or better yet, it is aganst the TOS of most hosting companies to send spam and you will loose your hosting account. However, those who are honest and have some ethical manner in which they operate, will have grown their own lists and will be happily sending the emails from their own servers.
  5. This type of ethical discussion is outside my areas of study, which are mostly applied ethics in the areas of political and environmental sciences, if i had the time i would read up on things and give you a broader response, however i see your dilemma not so much as an ethical one but more of a philosophical one. Kant and Hobbs both have absolutes within their respective ethical frameworks and would be a great place to start any study into this (cant think of anyone who does not off the top of my head, maybe some hard core utilitarian), also i found this in my Uni library, Through the Moral Maze: Searching for Absolute Values in a Pluralistic World by Robert Kane this might also be helpful and a good read into this entire arguument.
  6. I would have to agree here, i use Centos, Virtuialmin, webmin and usermin on all my servers, it is super easy to setup, configure and support multiple user accounts and multiple domains. Really the choice is simple, you want a server OS, you want Linux, but be prepared to have a steep learning curve no matter what OS you choose.
  7. You are correct, there is no longer a classic menu style.
  8. For me, if i was back at school, coding a major project, i would head straight for Ruby, Lua or any other language that lends itself to rapid development. Lets face it, you just do not want to be writing hundreds of lines of support code to get to the point where you start to develop the content part of your program. Take the following snippets for example and tell me which one you would rather code? Both of these functions write to file a player in an MMO style game. The first is in Ruby and the 3nd is in C, In C you have to be careful with how you write stuff to file and it is easy to make a mess of it, in Ruby you call YAML and it deals with it all for you. Also, think about things like memory management, in C you have to allocate the destroy memory yourself, do it at the wrong time and you seg fault or worse still, you have a memory leak and you use up all the system resources and you take out the OS as well when you crash . In Ruby you do not have to worry about memory management, and cleaning up is done with a garbage collector. It took me 2 months to be comfortable working in Ruby, not because it is hard to learn, but rather because i was doing object orientated coding for the first time, and it took me a while to get used to using classes, methods, inheritance and all those neat things you just do not use when you code procedurally. You will learn enough of the syntax to be able to write code in no time at all. The main thing i suggest is to nut out your programs design first, then worry about programming language and then coding it. The latter two will take you next to no time at all if you have a great design. def save_player dMob return if dMob.nil? File.open(sprintf("players/%s.yml", dMob.name.downcase.capitalize), "w") do |f| YAML::dump dMob,f endrescue $log.error "Unable to write to %s's pfile", dMob.name $log.error $!end AND: void fwrite_char( CHAR_DATA * ch, FILE * fp ){ AFFECT_DATA *paf; int sn; short pos; SKILLTYPE *skill = NULL; fprintf( fp, "#PLAYER\n" ); fprintf( fp, "Version %d\n", SAVEVERSION ); fprintf( fp, "Name %s~\n", ch->name ); if( ch->description[0] != STRING_NULL ) fprintf( fp, "Description %s~\n", ch->description ); fprintf( fp, "Sex %d\n", ch->sex ); fprintf( fp, "Class %d\n", ch->Class ); fprintf( fp, "Race %d\n", ch->race ); fprintf( fp, "Languages %d %d\n", ch->speaks, ch->speaking ); fprintf( fp, "Level %d\n", ch->level ); fprintf( fp, "Played %d\n", ch->played + ( int )( current_time - ch->logon ) ); fprintf( fp, "Room %d\n", ( ch->in_room == get_room_index( ROOM_VNUM_LIMBO ) && ch->was_in_room ) ? ch->was_in_room->vnum : ch->in_room->vnum ); fprintf( fp, "HpManaMove %d %d %d %d %d %d\n", ch->hit, ch->max_hit, ch->mana, ch->max_mana, ch->move, ch->max_move ); fprintf( fp, "Gold %d\n", ch->gold ); fprintf( fp, "Exp %d\n", ch->exp ); fprintf( fp, "Height %d\n", ch->height ); fprintf( fp, "Weight %d\n", ch->weight ); if( !xIS_EMPTY( ch->act ) ) fprintf( fp, "Act %s\n", print_bitvector( &ch->act ) ); if( !xIS_EMPTY( ch->affected_by ) ) fprintf( fp, "AffectedBy %s\n", print_bitvector( &ch->affected_by ) ); if( !xIS_EMPTY( ch->no_affected_by ) ) fprintf( fp, "NoAffectedBy %s\n", print_bitvector( &ch->no_affected_by ) ); /* * Strip off fighting positions & store as * new style (pos>=100 flags new style in character loading) */ pos = ch->position; pos += 100; fprintf( fp, "Position %d\n", pos ); fprintf( fp, "Practice %d\n", ch->practice ); fprintf( fp, "SavingThrows %d %d %d %d\n", ch->saving_poison_death, ch->saving_mental, ch->saving_physical, ch->saving_weapons ); fprintf( fp, "Favor %d\n", ch->pcdata->favor ); fprintf( fp, "Balance %d\n", ch->pcdata->balance ); fprintf( fp, "Glory %d\n", ch->pcdata->quest_curr ); fprintf( fp, "MGlory %d\n", ch->pcdata->quest_accum ); fprintf( fp, "Hitroll %d\n", ch->hitroll ); fprintf( fp, "Damroll %d\n", ch->damroll ); fprintf( fp, "Tattoo %ld\n", ch->tattoo ); fprintf( fp, "Armor %d\n", ch->armor ); fprintf( fp, "Remorts %d\n", ch->remorts ); if( ch->wimpy ) fprintf( fp, "Wimpy %d\n", ch->wimpy ); if( ch->deaf ) fprintf( fp, "Deaf %d\n", ch->deaf ); if( ch->pcdata && ch->pcdata->outcast_time ) fprintf( fp, "Outcast_time %ld\n", ch->pcdata->outcast_time ); fprintf( fp, "Password %s~\n", ch->pcdata->pwd ); if( ch->pcdata->rank && ch->pcdata->rank[0] != STRING_NULL ) fprintf( fp, "Rank %s~\n", ch->pcdata->rank ); if( ch->pcdata->bestowments && ch->pcdata->bestowments[0] != STRING_NULL ) fprintf( fp, "Bestowments %s~\n", ch->pcdata->bestowments ); fprintf( fp, "Title %s~\n", ch->pcdata->title ); if( ch->pcdata->homepage && ch->pcdata->homepage[0] != STRING_NULL ) fprintf( fp, "Homepage %s~\n", ch->pcdata->homepage ); if( ch->pcdata->min_snoop ) fprintf( fp, "Minsnoop %d\n", ch->pcdata->min_snoop ); if( ch->pcdata->prompt && *ch->pcdata->prompt ) fprintf( fp, "Prompt %s~\n", ch->pcdata->prompt ); if( ch->pcdata->fprompt && *ch->pcdata->fprompt ) fprintf( fp, "FPrompt %s~\n", ch->pcdata->fprompt ); if( ch->pcdata->pagerlen != 24 ) fprintf( fp, "Pagerlen %d\n", ch->pcdata->pagerlen ); fprintf( fp, "\n" ); /* * If ch is ignoring players then store those players */ { IGNORE_DATA *temp; for( temp = ch->pcdata->first_ignored; temp; temp = temp->next ) { fprintf( fp, "Ignored %s~\n", temp->name ); } } if( IS_IMMORTAL( ch ) ) { if( ch->pcdata->bamfin && ch->pcdata->bamfin[0] != STRING_NULL ) fprintf( fp, "Bamfin %s~\n", ch->pcdata->bamfin ); if( ch->pcdata->bamfout && ch->pcdata->bamfout[0] != STRING_NULL ) fprintf( fp, "Bamfout %s~\n", ch->pcdata->bamfout ); if( ch->trust ) fprintf( fp, "Trust %d\n", ch->trust ); if( ch->pcdata && ch->pcdata->restore_time ) fprintf( fp, "Restore_time %ld\n", ch->pcdata->restore_time ); fprintf( fp, "WizInvis %d\n", ch->pcdata->wizinvis ); if( ch->pcdata->r_range_lo && ch->pcdata->r_range_hi ) fprintf( fp, "RoomRange %d %d\n", ch->pcdata->r_range_lo, ch->pcdata->r_range_hi ); if( ch->pcdata->o_range_lo && ch->pcdata->o_range_hi ) fprintf( fp, "ObjRange %d %d\n", ch->pcdata->o_range_lo, ch->pcdata->o_range_hi ); if( ch->pcdata->m_range_lo && ch->pcdata->m_range_hi ) fprintf( fp, "MobRange %d %d\n", ch->pcdata->m_range_lo, ch->pcdata->m_range_hi ); } if( ch->pcdata->deity_name && ch->pcdata->deity_name[0] != STRING_NULL ) fprintf( fp, "Deity %s~\n", ch->pcdata->deity_name ); if( ch->pcdata->clan_name && ch->pcdata->clan_name[0] != STRING_NULL ) fprintf( fp, "Clan %s~\n", ch->pcdata->clan_name ); fprintf( fp, "Flags %d\n", ch->pcdata->flags ); if( ch->pcdata->release_date ) fprintf( fp, "Helled %d %s~\n", ( int )ch->pcdata->release_date, ch->pcdata->helled_by ); fprintf( fp, "PKills %d\n", ch->pcdata->pkills ); fprintf( fp, "PDeaths %d\n", ch->pcdata->pdeaths ); if( get_timer( ch, TIMER_PKILLED ) && ( get_timer( ch, TIMER_PKILLED ) > 0 ) ) fprintf( fp, "PTimer %d\n", get_timer( ch, TIMER_PKILLED ) ); fprintf( fp, "MKills %d\n", ch->pcdata->mkills ); fprintf( fp, "MDeaths %d\n", ch->pcdata->mdeaths ); fprintf( fp, "IllegalPK %d\n", ch->pcdata->illegal_pk ); fprintf( fp, "AttrPerm %d %d %d %d \n", ch->perm_str, ch->perm_int, ch->perm_dex, ch->perm_con ); fprintf( fp, "AttrMod %d %d %d %d \n", ch->mod_str, ch->mod_int, ch->mod_dex, ch->mod_con ); if( ch->desc && ch->desc->host ) fprintf( fp, "Site %s\n", ch->desc->host ); else fprintf( fp, "Site (Link-Dead)\n" ); for( paf = ch->first_affect; paf; paf = paf->next ) { if( paf->type >= 0 && ( skill = get_skilltype( paf->type ) ) == NULL ) continue; if( paf->type >= 0 && paf->type < TYPE_PERSONAL ) fprintf( fp, "AffectData '%s' %3d %3d %3d %s\n", skill->name, paf->duration, paf->modifier, paf->location, print_bitvector( &paf->bitvector ) ); else fprintf( fp, "Affect %3d %3d %3d %3d %s\n", paf->type, paf->duration, paf->modifier, paf->location, print_bitvector( &paf->bitvector ) ); } fprintf( fp, "Coordinates %d %d %d\n", ch->x, ch->y, ch->map ); if( ch->pcdata->nextquest != 0 ) fprintf( fp, "NextQuest %d\n", ch->pcdata->nextquest ); for( sn = 1; sn < top_sn; sn++ ) { if( skill_table[sn]->name && ch->pcdata->learned[sn] > 0 ) switch ( skill_table[sn]->type ) { default: fprintf( fp, "Skill %d '%s'\n", ch->pcdata->learned[sn], skill_table[sn]->name ); break; case SKILL_SPELL: fprintf( fp, "Spell %d '%s'\n", ch->pcdata->learned[sn], skill_table[sn]->name ); break; case SKILL_WEAPON: fprintf( fp, "Weapon %d '%s'\n", ch->pcdata->learned[sn], skill_table[sn]->name ); break; case SKILL_TONGUE: fprintf( fp, "Tongue %d '%s'\n", ch->pcdata->learned[sn], skill_table[sn]->name ); break; } } fprintf( fp, "End\n\n" ); return;}
  9. Does God Exist? I think that this is the wrong question to be asking on the grounds that there is no way to prove for or against any position on the grounds that there is no direct evidence to support either claim. However, i think a better question might be: Should i believe in a God if one does exist? I think for this question there is at least a rational answer and one that can be worked out mathematically. Pascal's Wager makes an attempt at answering this very question: SEE: https://plato.stanford.edu/entries/pascal-wager/ for original text, there are many other sites which deal with the subject of Pascals Wager.
  10. Windows 7 and Andlinux. Best of both worlds and no need to reboot ever.
  11. Forget about learning a language, that is the wrong way to go about learning to program. Learn the fundamentals of programing, algorithm design and pure maths, then design a program and then choose the best language for the job. If you understand the fundamentals of programming, you can then pick up any language you like and learn it in no time at all. Ultimately pick the highest order language that will fulfill the requirements of your design, why use C/C++ and assembler if Ruby or Lua will achieve your design goals, its all about writing the least amount of code. After all, this is a school project, and you should be trying to MIN/MAX, Minimum effort for Maximum results.
  12. Ruby is an awesome PROGRAMMING LANGUAGE and anyone who thinks that it is only good for scripting simple tasks is being very naive and does not truly understand the subtitles of this debate. Ruby is main stream and there are a lot of companies that use if in production environments. It has its strengths and weaknesses like any programming language and is very useful in certain applications. I mostly work with C/C++, but lately i have worked on a number of Ruby apps, and in certain applications it is brilliant, text handling is just one thing it does well, and for anyone who has worked with strings in C and then tried Ruby will understand just what i mean. No writing 100's of lines of handler code to do simple things, not convoluted iterations over pointers to search for elements in a string, just simple clean methods to do these things. http://forums.xisto.com/no_longer_exists/ Follow the link for Alexa rankings of sites that use Ruby on Rails, interestingly Twitter is on the top of the list, i think that alone shows the true power the Ruby has.
  13. Can you show your compiler output, errors and warnings along with the code, so that we can work out what your doing wrong and replicate it, the more information you show, the easier it will be to show you whats wrong and why. Also, make sure to bookmark this site http://www.cplusplus.com/ it has just about everything you will ever need to know about any reserved work in C/C++.
  14. here is a nice colour parser. /* xterm 256 color code parser by Igor van den Hoven No restrictions on use. 02/11/2009*//* Use <aaa> to <fff> for RGB foreground colors and for RGB background colors yse <AAA> to <FFF>. Use <g00> to <g23> for grayscale foreground colors and <G00> to <G23> for grayscale background colors. With xterm256 disabled ASCII colors are emulated.*//* Syntax: <xyz> with x, y, z being parameters Parameter 'x': ASCII code 0 - Reset all colors and codes to default 1 - Bold 2 - Dim 4 - Underscore 5 - Blink 7 - Reverse 8 - Skip (use previous code) Parameter 'y': Foreground color Parameter 'z': Background color 0 - Black 5 - Magenta 1 - Red 6 - Cyan 2 - Green 7 - White 3 - Yellow 8 - Skip 4 - Blue 9 - Default*/#include <string.h>#include <stdlib.h>#include <stdio.h>#define BUFFER_SIZE 10000void substitute_color(char *string, char *result, int xterm256){ char buffer[BUFFER_SIZE], *pti, *pto; int cnt; pti = string; pto = string != result ? result : buffer; while (*pti) { switch (*pti) { case '<': if (isdigit(pti[1]) && isdigit(pti[2]) && isdigit(pti[3]) && pti[4] == '>') { if (pti[1] != '8' || pti[2] != '8' || pti[3] != '8') { *pto++ = '\033'; *pto++ = '['; switch (pti[1]) { case '2': *pto++ = '2'; *pto++ = '2'; *pto++ = ';'; break; case '8': break; default: *pto++ = pti[1]; *pto++ = ';'; } switch (pti[2]) { case '8': break; default: *pto++ = '3'; *pto++ = pti[2]; *pto++ = ';'; break; } switch (pti[3]) { case '8': break; default: *pto++ = '4'; *pto++ = pti[3]; *pto++ = ';'; break; } pto--; *pto++ = 'm'; } pti += 5; } else if (pti[1] >= 'a' && pti[1] <= 'f' && pti[2] >= 'a' && pti[2] <= 'f' && pti[3] >= 'a' && pti[3] <= 'f' && pti[4] == '>') { if (xterm256) { *pto++ = '\033'; *pto++ = '['; *pto++ = '3'; *pto++ = '8'; *pto++ = ';'; *pto++ = '5'; *pto++ = ';'; cnt = 16 + (pti[1] - 'a') * 36 + (pti[2] - 'a') * 6 + (pti[3] - 'a'); *pto++ = '0' + cnt / 100; *pto++ = '0' + cnt % 100 / 10; *pto++ = '0' + cnt % 10; *pto++ = 'm'; } else { *pto++ = '\033'; *pto++ = '['; cnt = pti[1] - 'a' + pti[2] - 'a' + pti[3] - 'a'; *pto++ = '0' + ((pti[1] > 'd' || pti[2] > 'd' || pti[3] > 'd')); *pto++ = ';'; *pto++ = '3'; *pto++ = '0' + (cnt && pti[1] >= pti[2] ? pti[1] >= pti[3] : 0) + (cnt && pti[2] >= pti[1] ? pti[2] >= pti[3] : 0) * 2 + (cnt && pti[3] >= pti[2] ? pti[3] >= pti[1] : 0) * 4; *pto++ = 'm'; } pti += 5; } else if (pti[1] >= 'A' && pti[1] <= 'F' && pti[2] >= 'A' && pti[2] <= 'F' && pti[3] >= 'A' && pti[3] <= 'F' && pti[4] == '>') { if (xterm256) { *pto++ = '\033'; *pto++ = '['; *pto++ = '4'; *pto++ = '8'; *pto++ = ';'; *pto++ = '5'; *pto++ = ';'; cnt = 16 + (pti[1] - 'A') * 36 + (pti[2] - 'A') * 6 + (pti[3] - 'A'); *pto++ = '0' + cnt / 100; *pto++ = '0' + cnt % 100 / 10; *pto++ = '0' + cnt % 10; *pto++ = 'm'; } else { *pto++ = '\033'; *pto++ = '['; cnt = pti[1] - 'A' + pti[2] - 'A' + pti[3] - 'A'; if (pti[1] > 'D' || pti[2] > 'D' || pti[3] > 'D') { *pto++ = '1'; *pto++ = '0'; } else { *pto++ = '4'; } *pto++ = '0' + (cnt && pti[1] >= pti[2] ? pti[1] >= pti[3] : 0) + (cnt && pti[2] >= pti[1] ? pti[2] >= pti[3] : 0) * 2 + (cnt && pti[3] >= pti[2] ? pti[3] >= pti[1] : 0) * 4; *pto++ = 'm'; } pti += 5; } else if (pti[1] == 'g' && isdigit(pti[2]) && isdigit(pti[3]) && pti[4] == '>') { if (xterm256) { *pto++ = '\033'; *pto++ = '['; *pto++ = '3'; *pto++ = '8'; *pto++ = ';'; *pto++ = '5'; *pto++ = ';'; cnt = 232 + (pti[2] - '0') * 10 + (pti[3] - '0'); *pto++ = '0' + cnt / 100; *pto++ = '0' + cnt % 100 / 10; *pto++ = '0' + cnt % 10; *pto++ = 'm'; } else { *pto++ = '\033'; *pto++ = '['; cnt = (pti[2] - '0') * 10 + (pti[3] - '0'); *pto++ = '0' + (cnt / 6 != 2); *pto++ = ';'; *pto++ = '3'; *pto++ = '0' + (cnt / 12 ? 7 : 0); *pto++ = 'm'; } pti += 5; } else if (pti[1] == 'G' && isdigit(pti[2]) && isdigit(pti[3]) && pti[4] == '>') { if (xterm256) { *pto++ = '\033'; *pto++ = '['; *pto++ = '4'; *pto++ = '8'; *pto++ = ';'; *pto++ = '5'; *pto++ = ';'; cnt = 232 + (pti[2] - '0') * 10 + (pti[3] - '0'); *pto++ = '0' + cnt / 100; *pto++ = '0' + cnt % 100 / 10; *pto++ = '0' + cnt % 10; *pto++ = 'm'; } else { *pto++ = '\033'; *pto++ = '['; cnt = (pti[2] - '0') * 10 + (pti[3] - '0'); if (cnt / 6 == 2) { *pto++ = '4'; } else { *pto++ = '1'; *pto++ = '0'; } *pto++ = '0' + (cnt / 12 ? 7 : 0); *pto++ = 'm'; } pti += 5; } else { *pto++ = *pti++; } break; default: *pto++ = *pti++; break; } } *pto = 0; if (string == result) { strcpy(result, buffer); } return;}/* Compile for an example display of xterm 256 colors*/int main(int argc, char **argv){ char buf[BUFFER_SIZE], tmp[BUFFER_SIZE], out[BUFFER_SIZE]; int x, y, z; /* Foreground */ buf[0] = 0; for (x = 'a'; x <= 'f'; x++) { for (y = 'a'; y <= 'f'; y++) { for (z = 'a'; z <= 'f'; z++) { sprintf(tmp, "<%c%c%c><<880>%c%c%c> ", x, y, z, x, y, z); strcat(buf, tmp); } strcat(buf, "\n"); } } substitute_color(buf, out, 1); printf("%s\n", out); substitute_color(buf, out, 0); printf("%s\n", out); buf[0] = 0; for (x = 0; x < 24; x++) { sprintf(tmp, "<g%02d>%02d<088> ", x, x); strcat(buf, tmp); } substitute_color(buf, out, 1); printf("%s\n", out); substitute_color(buf, out, 0); printf("%s\n", out); /* Background */ buf[0] = 0; for (x = 'A'; x <= 'F'; x++) { for (y = 'A'; y <= 'F'; y++) { for (z = 'A'; z <= 'F'; z++) { sprintf(tmp, "<%c%c%c><<878>%c%c%c><880> ", x, y, z, x, y, z); strcat(buf, tmp); } strcat(buf, "\n"); } } substitute_color(buf, out, 1); printf("%s\n", out); substitute_color(buf, out, 0); printf("%s\n", out); buf[0] = 0; for (x = 0; x < 24; x++) { sprintf(tmp, "<G%02d>%02d<088> ", x, x); strcat(buf, tmp); } substitute_color(buf, out, 1); printf("%s\n", out); substitute_color(buf, out, 0); printf("%s\n", out); return 0;}
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.