Dom_152 Posted July 27, 2006 Share Posted July 27, 2006 Help me with reading files! At the moment my Mod is only reading the first word in the file (This is for a word filter) but there are 2 others below it. The filedump shows that all 3 have been read and tehre is a \n character separating them. How can I get my mod to read all of the words? I want it to read the first word, check if that word is in the sentence if it is star it out... then move onto the next word in the list. Here is my current code: if(mpx_wordFilter.integer == 1) { len = trap_FS_FOpenFile("wordlist.txt", &file, FS_READ);//Open the bad word list if(file) { fileDump = BG_TempAlloc(len+1); //Allocate memory for the file dump word = BG_TempAlloc(25); //Allocate memory for the bad word trap_FS_Read(fileDump, 1024, file); trap_FS_FCloseFile(file); CmdAll(va("print \"Filedump: %s\n\"", fileDump)); if(len) //only check for bad words if the file has something in it { while(i < len+1) //We just keep going through the file { while(y < 25) //25 = max Word length { if(fileDump[y * (i+1)] == "\n") //If the character is a space then it will NOT be copied { y++; //STOP! If there is a space that's the end of the word } else { word[y] = fileDump[y * (i+1)]; y++; } } //OK By this point we should have a word so lets check if it's in the file //So we check to see if the bad word is ANYWHERE in the sentence value = stristr(p, word); if(value != NULL) { start = p - value; if(start < 0) { start = -start; } while(x < strlen(word)) { p[start + x] = '*'; x++; } } //i++; CmdAll(va("print \"I = %i\n\"", i)); i += 25; //Increase I by 25 as this is the size of a word } } BG_TempFree(25); BG_TempFree(len+1); } } Link to comment Share on other sites More sharing options...
ensiform Posted July 27, 2006 Share Posted July 27, 2006 whats the file format? also, use .dat instead because .txt cannot be used opened after first run or on pure servers. Link to comment Share on other sites More sharing options...
Dom_152 Posted July 27, 2006 Author Share Posted July 27, 2006 OK. The format was .txt. Link to comment Share on other sites More sharing options...
ensiform Posted July 27, 2006 Share Posted July 27, 2006 i meant the contents of file like how is it layed out. like the special admin sys i have called shrubbot is layed out like this: [admin] name = Admin's Name ip = xxx.xxx.xxx.xxx level = 9 flags = * im assuming you just have some comma delimited string like this: word,word,word,word? btw that parse script is god awful edit: just a thought but, why don't you check out this: http://linespeed.net/projects/etpub/browser/trunk/src/game/g_censor.c?format=txt Link to comment Share on other sites More sharing options...
ensiform Posted July 27, 2006 Share Posted July 27, 2006 btw... when checking for \n you shouldn't be doing "\n", try '\n' instead because \n is really 1 character. Link to comment Share on other sites More sharing options...
razorace Posted July 28, 2006 Share Posted July 28, 2006 whats the file format? also, use .dat instead because .txt cannot be used opened after first run or on pure servers. How exactly does that work? Link to comment Share on other sites More sharing options...
ensiform Posted July 28, 2006 Share Posted July 28, 2006 huh? i dunno but ive used .txt before and it eats sh1t after a map_restart and wont load the file anymore. and pure server of course it wont load because it is not one of the valid out-of-pk3 files that can be read. These are the only valid ones: .dat .menu .cfg .game .dm_26 Link to comment Share on other sites More sharing options...
Dom_152 Posted July 28, 2006 Author Share Posted July 28, 2006 Thanks for the link. The format of the file is simply: word word more words Oh and it was '\n' but I changed it because I was trying different things. I have never tried writing parsing scripts before. Most of the stuff I'm doing in this Mod is new to me so that's why it's probably no good. Link to comment Share on other sites More sharing options...
stubert Posted July 29, 2006 Share Posted July 29, 2006 i still think making a space for C++ language runtime is a better idea than figuring out old C style bull**** Link to comment Share on other sites More sharing options...
Dom_152 Posted August 7, 2006 Author Share Posted August 7, 2006 I made some progress. But I'm gonna scrap it and start again. How can I read multi line files and then grab each individual line for use with the filter? Link to comment Share on other sites More sharing options...
ensiform Posted August 7, 2006 Share Posted August 7, 2006 i still think making a space for C++ language runtime is a better idea than figuring out old C style bull**** be my guest and write an idStr and idLexer class stu. Link to comment Share on other sites More sharing options...
dumbledore Posted August 10, 2006 Share Posted August 10, 2006 u could try this, didn't get a chance to test it extensively :S if(mpx_wordFilter.integer == 1) { len = trap_FS_FOpenFile("wordlist.txt", &file, FS_READ);//Open the bad word list if(file) { fileDump = BG_TempAlloc(len+1); //Allocate memory for the file dump word = BG_TempAlloc(25); //Allocate memory for the bad word trap_FS_Read(fileDump, len, file); trap_FS_FCloseFile(file); if(len) //only check for bad words if the file has something in it { while(fileDump[i]) { if(fileDump[i] == '\n') //If the character is a space then it will NOT be copied { word[y] = 0; i++; //STOP! If there is a space that's the end of the word while( value = stristr(p, word) ) { start = value - p; x = 0; while(x < y) { p[start + x] = '*'; x++; } } y = 0; } else { word[y++] = fileDump[i++]; } } } BG_TempFree(25); BG_TempFree(len+1); } } of course the real solution would be to rewrite it using com_parse, but if it's that simple you probably don't need to Link to comment Share on other sites More sharing options...
Dom_152 Posted August 13, 2006 Author Share Posted August 13, 2006 Hmm, how does Com_Parse work? How can I use it? I'm lookign through the code at the moment seeing how it's used. Link to comment Share on other sites More sharing options...
stubert Posted August 15, 2006 Share Posted August 15, 2006 i have a better idea only huge tools have word filters don't do it Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.