A really needed addition: the restart command!
-
Well, FLAC is good if you want loads of goodies/tools and a nice protection system. Especialy for people who have little or no knowledge about c++ or c# its good to use it. And, even when its ONLY 35 euro’s, the support is good and Eagle realy tries to think with you.
Yes, its 35 euros, but i haven’t seen one single tool doing the things FLAC does, atleast not on the freemarket. -
We decided to spend 35 Euros on something we think is worth the cash to keep the server cheat free. We think we owe it to our users and I see it the way that I don’t pay for the software but for the time someone spent to create it. We also spend a lot of bucks on a rented server, shouldn’t we do that either?
You are right with this.
But a donation is imho a free choise from fee, and not a minimum amount of cash.A donation is fine if people choose for it.
I don’t want to have it to keep my server up. It’s my own choise. Everybody has fun, that’s my “donation”If somebody makes a program, and tell it’s a minimum donation of 35 euro, than it’s just selling a program.
And not a donation -
It is a donation as you can actually install and run FLAC without paying anything.
I payed a donation and got all parts of the program unlocked for the NiMa server (which is now officially down).
No its not, since that defines as Shareware: http://en.wikipedia.org/wiki/Shareware
Like it or not, FLAC is commercial software and that is the point why I dont like this approach.
Guess how much time others have spent on their mods, tools etc.?
What if HardCMP would cost you 50€?That is the point. Its not about “not everything in the world is free” talk, its about the community. And since FLAC is ATM one of the best anticheat solutions, the business plan works out quite well.
-
Makes me laugh that so many people have a problem paying for FLAC but i bet most of you paid for milkshape.
-
Yo topic was: Re: A really needed addition: the restart command! Â ;D
Not is FLAC good and should we pay for it.
Thats no solution we dont run flac and we’re not going to buy or to run it.
Nothing against the tool itself, i’ve tried it .
But we’re talking about Char restarts like /restart outcast/navy/corsair for Hook -
… have a problem paying for FLAC …
Let me answer with an other quote:
…
239. Never be afraid to mislabel a product
…from the Ferengie rules of aquisition.
It’s up 2 Eagle 2 request money for FLAC.
It’s his stuff, it’s his right 2 request money.
And FLAC will be worth the 35€.
And It’s our right 2 make no use of it, if we don’t like 2 pay.What i don’t like is calling a price a “minimum donation”.
Selling it is business - as Milkshape does.
And everyone has 2 earn some money 2 pay the bills.But this is trying 2 take us 4 fools - and it obviously works,
or did anyone donate some xtra $/€ 2 the Milkshape fellows
in addition 2 the price they request 2 pay. -
I think F!R is right, but, as Mindhunter said, I think we should slowly get back to the original topic of this thread. If you want to continue this discussion, feel free to make a new thread.
-
Makes me laugh that so many people have a problem paying for FLAC
And it makes me wonder how less people know the devenition from the word “donation”
A donation is a free amount of fee, stuff which people can decide how much he/she wanna give.A program like for instance Milkshape, it’s a payed program. If you go to the store, than you buy your shoppings. The price you pay for that, you call that also a donation? i’m not.
So in this case, how good or bad FLAC is, it’s a payed program for commercial use. The price you have to pay for the program is 35 euro. So, this isn’t a donation.
Otherwise he leave the amount of fee up to the people themselvesDon’t care if he ask a price for it, that’s not my point.
Everybody needs to make a living. And if he can sell the program for good bucks, fine.
But pls, be honest than, and don’t call it a
“donation”So, i wouldn’t be laugh to loud if i was you
@Friendlyfire: Sorry, both make the post at the same time.
Right, back to topic -
I run Flshell and Flhook at same time on my server, so I dont have any need for this command hehe.
Sounds like a familiar Combination to me as well. And OPR8R is right, FLShell is older, out of development and we have no access to the source code to fix it. In my case, FLShell’s console key intercepts are snagging the /u admin command, basically neutering any FLHook /u… command in the version we are trying to use, most annoying to some is /uncloak. But even with this “reason” to want FLShell replaced, some of the other items “We” use likely would not allow 64bit anyway. ;D
So for now has any additional progress on a plug-in in this area been made as yet?
AND PLEASE, No more from FLAC camp in the FLHook threads, it is getting as pitiful as sending Ford Car Salesmen to sabotage a Chevrolet auction.
-
No idea how anyone would go about implementing this theory but here are my thoughts on the subject:
–----------------------------------------------------------------------------------------------------------------------------------------------1.Have a folder server side with template FL Files in e.g.
-
1.Smuggler - Imperials
-
2.Smuggler - Rebels
-
3.Heavy Bomber - Imperials
-
4.Heavy Bomber - Rebels
-
5.Pirate
-
6.Civilian
2.A player types /restart in game and he/she is offered that list, they type in the corresponding number
3a)they are kicked, their FL File is deleted and replaced with the template they chose (obviously with the same name and directory)
OR
3b)they are kicked, the contents of the template are copied and pasted into their FL File… -
-
As I stated before I already have solved this and recently ported every feature I wrote for New Universe to a plugin, including the restart command. I did some changes to the restart and so far there were no bugs discovered, so i am thinking about releasing the restart command as a plugin soon. The question is wether to wait until I implemented to change the ship and loadout or not. Depends on what the people want I guess
-
You can release multiple versions; I am sure people are dying for this feature…
-
Someone can will make a plugin based on this code. This is flshell-like restarts
void UserCmd_Dots(uint iClientID, wstring wscParam) { if(set_bAllowRestarts) { WIN32_FIND_DATA FileData; HANDLE hSearch; wchar_t oldDir[MAX_PATH]; GetCurrentDirectoryW(MAX_PATH,oldDir); SetCurrentDirectoryW(set_wscRestartDotsPath.c_str()); BOOL fFinished = FALSE; // Start searching for .fl files in the current directory. hSearch = FindFirstFile("*.fl", &FileData); if (hSearch == INVALID_HANDLE_VALUE) { PrintUserCmdText(iClientID, L"Dots not found"); FindClose(hSearch); SetCurrentDirectoryW(oldDir); return; } wstring wscMsg =L""; string scFileName=""; // while (!fFinished) { // add filename scFileName = FileData.cFileName; size_t len = scFileName.length(); scFileName.erase(len-3,len); if (scFileName[0]!='_') wscMsg+=stows(scFileName)+L" "; if (!FindNextFile(hSearch, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) { PrintUserCmdText(iClientID, L"You can use these restarts:"); PrintUserCmdText(iClientID, wscMsg); fFinished = TRUE; } else { PrintUserCmdText(iClientID, L"Internal server error"); FindClose(hSearch); SetCurrentDirectoryW(oldDir); return; } } } // Close the search handle. FindClose(hSearch); SetCurrentDirectoryW(oldDir); } else { PRINT_DISABLED(); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// void UserCmd_Restart(uint iClientID, wstring wscParam) { if(ClientInfo[iClientID].bAllowRestart) { wstring wscError[] = { L"Error: Invalid parameters", L"Usage: /restart <faction>", }; wstring wscFraction = GetParam(wscParam, ' ', 0); if(!wscFraction.length()) PRINT_ERROR(); // get rank for MaxRank limit int iRank; pub::Player::GetRank(iClientID, iRank); // searching restart string scPathDot=wstos(set_wscRestartDotsPath) + wstos(wscFraction)+".fl"; if(_access( scPathDot.c_str(), 0 )) {// file not exists scPathDot=wstos(set_wscRestartDotsPath) + "_" + wstos(wscFraction)+".fl"; if(_access( scPathDot.c_str(), 0 )) { PRINT_ERROR(); return; } } if (iRank > set_iMaxRank) { PrintUserCmdText(iClientID,L"Error: You must create a new char to restart. Your rank is too high"); return; } wstring wscCharname=Players.GetActiveCharacterName(iClientID); // Kick player CAccount *acc = Players.FindAccountFromClientID(iClientID); HkMsgAndKick(iClientID, L" restarting... ",set_iKickMsgPeriod); acc->ForceLogout(); // get savefile wstring wscDir; if(!HKHKSUCCESS(HkGetAccountDirName(acc, wscDir))) { string err=wstos(L"Restart failed. " + wscCharname + L" not exists. wscDir = "+wscDir); AddLog(err.c_str()); return;// HKE_CHAR_DOES_NOT_EXIST; } wstring wscFile; HkGetCharFileName(wscCharname, wscFile); string scCharFile = scAcctPath + wstos(wscDir) + "\\" + wstos(wscFile) + ".fl"; // delete savefile if(!(_access( scCharFile.c_str(), 0 ))) {// file exists DeleteFile(scCharFile.c_str()); } // rewrite savefile if(!(CopyFile(scPathDot.c_str(),scCharFile.c_str(),FALSE))) { string err=wstos(L"Restart failed. " + wscCharname + L". Files not copied "); AddLog(err.c_str()); return;// HKE_CHAR_DOES_NOT_EXIST; } // restore nickname. Copy&Paste from HkRename wstring wscNewNameString = L""; for(uint i = 0; (i < wscCharname.length()); i++) { char cHiByte = wscCharname[i] >> 8; char cLoByte = wscCharname[i] & 0xFF; wchar_t wszBuf[8]; swprintf(wszBuf, L"%02X%02X", ((uint)cHiByte) & 0xFF, ((uint)cLoByte) & 0xFF); wscNewNameString += wszBuf; } if(HkIsEncoded(scCharFile)) { string scCharFileNew = scCharFile + ".ini"; if(!flc_decode(scCharFile.c_str(), scCharFileNew.c_str())) { string err=wstos(L"Restart failed. Name " + wscCharname + L" not set. File ")+scCharFile; AddLog(err.c_str()); return;// HKE_COULD_NOT_DECODE_CHARFILE; } IniWrite(scCharFileNew, "Player", "name", wstos(wscNewNameString)); if(!flc_encode(scCharFileNew.c_str(), scCharFile.c_str())) { string err=wstos(L"Restart failed. Name " + wscCharname + L" not set. File ")+scCharFile; AddLog(err.c_str()); return;// HKE_COULD_NOT_ENCODE_CHARFILE; } DeleteFile(scCharFileNew.c_str()); } else { IniWrite(scCharFile, "Player", "name", wstos(wscNewNameString)); } } else { PRINT_DISABLED(); } } [/i][/i]</faction>