
divine.216
Member-
Posts
65 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Events
Everything posted by divine.216
-
Here's a start: http://www.research.att.com/~bs/C++.html
-
Annoyed at your slow computer? Ditch C#.
-
You'll need to route PORT and PORT+1, to your hosting box. This will provide general server help This may have some answers to your particular question.
-
blah blah buzzword blah blah
-
Most you talk about sex like it's a disgusting or bad thing (or that "they would only agree because it feels good so they would giggle"...that's the only reason to)... it's clouding rational judgment, so I'd just as soon they didn't change any "age of consent" laws and just continued to not enforce them. That said, "there ain't nothing wrong, with a little bump and grind".
-
Position packets do include velocity, I imagine it might look like -*BAD WORD*- if you try to extrapolate roll from periodic position/velocity updates. What you see on your screen is already an extrapolation of location based on time/start/velocity of the preceding position packet, I guess you could just calc the roll based on the preceding two position packets (you could calc a rough estimate of accel. from two pos packets with velocity) -- perhaps priitk has tested this and found it to look like -*BAD WORD*- and just not be worth the overhead.
-
My glasses used to have a built in C# compiler, but the executables from C# v1.0 didn't run on C# v1.1, so I had to install the runtime libraries for v1.1 which, in turn, broke everything I wrote for v1.0... and now I'm blind in both eyes with $400 in less-than-deprecated software... maybe I'll try VB. note: I don't wear glasses, this is just another bad joke
-
Nothing is nowhere... or everywhere.
-
Because ships always have to have a location.
-
A band that made it's name via file sharing? Radiohead (before signing onto major label) You also asked for a band that was played on MTV. MTV is owned and controlled by the same people who own and control all the other conventional music distribution channels. You talk about these "huge" artists and say that they used traditional paths to achieve their success. You misunderstand both how they got there and you misunderstand what "success" actually is to a musician. How they got there Britany Spears et al did not "achieve" their success, they were selected by the recording companies as "artists" who could be fashioned and marketed in a manner such that the companies could control. Success to a musician Success to musicians is largely the ability to rely on their musical career as a full time job, the ability to freely explore their music, and 'connecting' with fans. For the vast, vast majority of even the very dedicated musicians this is not a possibility due to the high price of entry into the music distribution market. File sharing, P2P file sharing particularly, removes this high price of entry into the market. Musicians don't need to be mega-millionaires to be considered "successful", the sad reality of late is that the restrictions being forced on the industry by the RIAA have made it so that musicians are either millionaires or starving -- they don't allow for variety which results in the crappy unoriginal filth that we call pop-music.
-
I don't really think I can politely investigate the VB/Merv -> C/Pbot analogy so I'll refrain to avoid pissing off too many people (I'm in the wrong forum to be exploring that analogy). That said, the reason I don't write a merv version of brackets is because I don't write merv plugins -- I am not intimate with the core's abstraction nor do I think it's really worth my time to become so. Lately, I have only been writing utility bots as needed for my zone and I won't undertake any large projects (either porting or from scratch) that aren't targeted towards ASSS.
-
Post his code snippet into this: http://home.planet.nl/~faase009/Ha_bf_online.html It will make it all clear to you.
-
We're talking about binaries. (or Evil Jin was)
-
This simple enough for you? http://home.planet.nl/~faase009/Ha_BF.html
-
Look up the definitions to words before you use them, sorry. File sharing has nothing to do with an artist receiving payment. Signing onto a record label that will take all of the revenue from your work does. Suing your customers and fans. Hiding from technology and the future it demands. These things all contribute to an artist not receiving payment -- not file sharing. File sharing actually represents the vast majority of artists single hope for receiving payment: they don't need to sign horribly contracts with record companies in order to get their music distributed anymore. Radio When music was first played on the radio, the recording industry tried to ban it, claiming no one would buy records if they could hear music for free on the radio. That !@#$%^&*ertion was patently absurd. To appease the recording industry, radio stations agreed to pay small fees to licensing agencies such as ASCAP and BMI each time a song was played. This !@#$%^&*ured that the record company would receive payment for music in the form of royalties. The royalties they received were soon a pittance compared to what they paid out. It was almost instantly clear that radio was a better form of promotion than the music industry had ever dreamed of. People who heard music on the radio did buy records. When music fans heard a song they liked, they had to have a record of it, and the stores couldn't keep them in stock. Soon this promotion was not free. If you produced a record, you wanted to sell it, and the only way to do that was to get it on the radio. To get that, you had to pay DJs and radio stations. Slip them a copy of the record with a one hundred dollar bill in the jacket, and they would play it. This was called "Payola". It has been proven by study after study that file trading is a great form of promotion. In its infancy, fans heard a new song on Napster, and had to have the CD. They rushed out and bought it. Unlike radio, the industry didn't have to produce any payola to get a song listed on Napster. It was free! CD sales went up. At some point, greedy individuals decided that this was wrong. People were hearing the music they wanted almost on demand, and they didn't have to pay for it, beyond paying for internet access. Record executives, radio executives, and independent promoters could not stand it, nor could a few already wealthy artists like Metallica's Lars Ulrich. No one should be able to hear music without paying for it, so they claimed. Just as radio had done in the early days, Napster tried to come to licensing terms with the recording industry, but the labels, save Bertelsmann, would not even talk to them. They ran crying to Congress and the courts until Napster was no more. Guess what? CD sales plummeted, and they tried to blame it all on "Piracy". Not only had they looked the gift horse of a new and free promotion channel in the mouth, but they had it put down like an old nag. In some cases, the recording labels such as EMI messed up their own corrupt system of payola using their "copy protected" discs. They sent promotional copies of discs (read more) to radio stations in the hope of getting them played and promoted, but the stations had computer based CD players. The discs did not work. It was poetic justice that this hurt the recording label, but sad that it hurt the artists. read more... "Bars can't have TVs bigger than 55 inches. Teddy bears can't include tape decks. Girl Scouts who sing "Puff, the Magic Dragon" owe royalties. Copyright law needs to change." Stupid laws _should_ be broken.
-
Theft: 1. (Law) The act of stealing; specifically, the felonious taking and removing of personal property, with an intent to deprive the rightful owner of the same; larceny. Please, stop the "thief" FUD. The RIAA is a conglomerate of corporations. The reason they are so violently opposed to file sharing has nothing to do with "protecting the artists." The RIAA and all it's member recording companies provide certain services to their artists: recording and distribution (marketing manufacturing etc.). The high cost of distribution and marketing of a band is what keeps many small recording companies out of the market, while at the same time allowing the large recording companies to exert further control over popular music (read: shove crappy music down our throats). File sharing presents, if not completely free, a drastically reduced means of distribution and marketing. This threatens the corporate music industry because the artists don't need them anymore. Legally, file sharing might be "wrong" -- but so is jaywalking, speeding, consensual sex with a 17 year old, underage drinking, mix taps, backing up software... Laws are not moral or ethical standards -- especially when you can write your own for a price. http://www.dontbuycds.org http://www.eff.org/IP/P2P/ http://www.eff.org/IP/P2P/music-to-our-ears.php note: I guess it's only fair if I admit that I am a tad biased as I have been investigated and charged with file sharing by the MPAA (it was settled w/o any real punishment, except for a few stressful hours of yanking drives and stashing them).
-
Active Development An actively developed client. this is the wishlist after all...
-
open? I don't -*BAD WORD*- on the first date.
-
Here is my function for promoting a user. You have to handle the case where someone advances but any number of preceeding duels of his future opponents may still be going. Here are excerpts from a few data structs that I used: #define PLAYERS_PER_BOX 2 // kind of silly, not a real magic number typedef struct BoxT{ //... zero in .players[x][0] implies empty slot char players[PLAYERS_PER_BOX][MAX_NAME_LEN+1]; //... removed some that is beyond scope of this } BoxT,*Box; #define MAXBOXCOUNT ((1 << MAXROUNDS)) // MAXROUNDS is arbitrary typedef struct UDataT{ // ... more removed ... int boxcount; BoxT brackets[MAXBOXCOUNT]; // ... more removed ... } UDataT,*UData; // A player's main data struct is found by FP(name) // A player's game info struct is found by GPI(data,p) // where 'data' is the main bot data struct and p is the player data struct typedef struct PInfoT{ // ... more removed... int box; // id of the box they are in, else BOX_NONE int player; // their player id in their box (0 or 1) // ... more removed... } PInfoT,*PInfo; PInfo GPI(BotData *data,Player *p); // Here are a few macros I used for the binary tree #define PARENT(node) (((node)-1)/2) #define LCHILD(node) ((node)*2+1) #define RCHILD(node) ((node)*2+2) #define ISLCHILD(node) ((node)%2) #define ISRCHILD(node) (!((node)%2)) The function ContainsOpponents returns true if there is anyone in tree rooted at the given box. int ContainsOpponent(UData ud,int box) { if(box > ud->boxcount-1) return 0; if(ud->brackets[box].players[0][0] || ud->brackets[box].players[1][0]) return 1; if(ContainsOpponent(ud,LCHILD(box)) || ContainsOpponent(ud,RCHILD(box))) return 1; return 0; } The function PromoteBox is given a box id. It will correctly handle any promotions of player(s) in that box. If there are two players in the box it does nothing. If the box has no players, it does nothing. If the box has one player then it will first check to see if there are any pending duels that the one player is waiting for, by calling ContainsOpponents on the opposite child tree. If there are no opponents coming, it will advance the player to the next round and recursively call itself on the next box that it has advanced the player to. void PromoteBox(BotData *data,UData ud,int box) { Player *p; PInfo pi; int oneopen=0,twoopen=0,containsopp; if(box < 0) return; if(!ud->brackets[box].players[0][0]) oneopen = 1; if(!ud->brackets[box].players[1][0]) twoopen = 1; containsopp = ContainsOpponent(ud,(twoopen ? RCHILD(box) : LCHILD(box))); if(oneopen != twoopen && !containsopp){ p = FP(ud->brackets[box].players[oneopen]); pi = GPI(data,p); if(pi){ if(!box){ // he wins it all (promoted past finals) pi->box = BOX_NONE; return; } pi->box = PARENT(box); // copy his data to the next box, update his player info data twoopen = ISRCHILD(box); strncpy(ud->brackets[pi->box].players[twoopen], ud->brackets[box].players[pi->player], MAX_NAME_LEN); ud->brackets[pi->box].players[twoopen][MAX_NAME_LEN] = 0; pi->player = twoopen; // physically move his ship to the next box PutToSpot(data,ud,p); // clear out his name from the old box ud->brackets[box].players[oneopen][0] = 0; // if he has an opponent waiting for him if(ud->brackets[pi->box].players[!pi->player][0]){ // ... start their match ... // ... code removed because beyond scope ... }else{ // he doesn't have an opponent waiting for him, // recursively try to promote him PromoteBox(data,ud,pi->box); } } } } Whenever a player is removed from the game for any reason (killed, quit, specced etc.) I simply do ud->brackets[pi->box].players[pi->player][0] = 0; PromoteBox(data,ud,pi->box); // ... check victory ... // basically, if the opponent ends up with a box == BOX_NONE // then he has won. Hope that helps.
-
The alias revealed!! (my tongue is stuck to my cheek)
-
PM has every right and responsibility to defend what he feels is his and/or his zone's. brackets is mine and anyone is free to use it -- in fact I have given out the src to anyone who has asked w/ a decent reason. Also, (and I don't suggest this for brackets because I'm already working on it) if you are going to clone bots, it might make sense to write them as ASSS modules instead of as bots. Especially if you are starting from scratch anyways.
-
no matter how complicated/confusing the config would ever be for a sysop, it couldn't be more confusing than learning an entire discipline (programming). -*BAD WORD*-, most of the sysops are fairly used to complicated config's from using subgame anyways. It would be worth the time and would make the entire thing more usable -- you'd have a handful of coders who would work on updating the "core" (which would actually itself be a module) and a whole slew of technically disinclined sysops reporting back / making feature requests. Would be far more productive than the current hack-compile-repeat_until_errorless process. Again, it's easy for me to suggest this because I won't be doing it. But if you want to be useful instead of just known... Also, I wasn't ripping on merv coders; everyone starts somewhere, I was not making a character judgment as much as a tactical judgment.
-
I wrote the brackets bot that is used in eg and aswz. There was not too much of it that is too complicated (binary trees lend themselves to recursive solutions if you are comfortable with them). The only part where it became a bit complicated was in the arrangement of players within the tournament such that it could start at any time while at the same time minimizing the number of "bye"s that any player would receive: ie, when you have 4 players you don't want one player to get a bye to the finals while the other 3 fight amongst each other... similarly you don't want 2 people to get byes to the semifinals in a tournament of 16 and have the other 14 fight amongst each other etc. I came up with a generic solution to this problem that I thought was pretty nifty and elegant. After some pondering and a little scientific inquiry (sitting thoughtfully on my throne in the bathroom) I noticed that the path to the appropriate box in an ideal configuration was simply the interpretation of the current player count as the binary path to the appropriate node -- from least to most significant. That is to say, if there are 4 rounds, and 0 players already joined, then the appropriate path to the next node is given by the 4 digit binary representation of 0: 0000, LEFT LEFT LEFT LEFT. Similarly, if there are 5 rounds and 6 players already joined, then the appropriate path to the next node is given by the 5 digit binary representation of 6: 00110, LEFT RIGHT RIGHT LEFT LEFT. This was a pretty neat observation and leads to an elegant and scalable solution. Given the number of players ('count') and the number of total rounds ('rounds') in the tournament, the appropriate box for the next player to be placed into ('box') is calculated as follows: If you're storing the binary tree as an array, where the root is at index 0 and all left children are in index*2+1 and right children are in index*2+2. int i,j,box; for(box=0,i=1,j=(1<<rounds);i<j;box*=2,box+=1+!!(count&i),i<<=1); Or if you are using a linked list representation of a binary tree, here is some pseudo-code, that should be a little more straightforward than the preceeding: Node *NextNode(int count, Node *root) { Node *node = root; foreach(bit in count from least to most significant){ if(!node->left || !node->right) return node; if(bit == 1) Node = node->right; else Node = node->left; } } If you didn't follow that here's a (hopefully) simplified explanation: For each bit (from least to most significant) in the current player count, starting at the root of the tree you take a step to the left child if the bit is low and a step to the right child if the bit is high. After you have made a step for each round of the tournament, you will find yourself at the appropriate box for the next player in the tournament. You may want to run some numbers through this, just to convince yourself that it works.
-
could be a bug in any number of drivers -- when the system messes up deep inside, the output to your sound card could get disrupted while the system is cleaning up which would make it reiterate over the same clip... so it's not necessarily in the sound card drivers per se. there was a really nasty bug in my video card drivers a few years back that would have the effect of lock my system for a moment, and it would repeat the same short clip of sound repeatedly for a moment just before a full hardware failure (powerdown). new version of drivers fixed problem. new vid/net/sound card/drivers? new OS? check for updated drivers.
-
Cont 0.39pr1 In alt+tabbed chat. When the backlog is not enough to fill a full screen. The scroll bar is disabled (as it should be -- nowhere to scroll). Using the mouse-wheel you can still "scroll" and scrolling down results in odd results (not crashes). Nothing major, maybe just need to ignore mousewheel scrolling when you disable scrollbar.