Счетчик репортов с сохранением для CRMP/SAMP + исходники
Программы
Когда я был администратором на одном из проектов CRMP, я написал себе программу для подсчета репортов (/ans) так как статистику на всегда скидывали, да и норму выполнять так было проще. Программа сохраняет все результаты, суммируя с прошлыми.
P. S. Программу писал по памяти изучения данного языка в 2009 году, поэтому код очень грубый, при желании можете доработать/переписать.
Если Вы являетесь действующим администратором проекта «Amazing RP» то Вы можете запустить программу и сразу пользоваться, для остальных проектов потребуется изменение кода, делается это очень легко и просто, ниже я опишу как это сделать. Скачать архив с исходниками и самой программой можно в самом низу поста.
Как работать с программой и ее функционал.
Для начала распакуйте архив, там лежат 2 основных файла, Project1.exe и stats.ini программа и файл для сохранения результатов.
Запускаем, в этой версии я уже дописал автоматическое определение ника из реестра, там хранится ник с самого клиента CRMP, поэтому его указывать больше не нужно. Если не нашел ник или он другой, укажите нужный в Multiplayer'e
Вы можете заранее указать уже существующие показания ваших ответов и выданных наказаний. Спешу отметить, что данная программа сохраняет только репорты (/ans) и джаилы (/jail) остальное работает не корректно и требует доработки (Может быть когда-нибудь сяду и перепишу этот быдло код
)
В архиве вас ждет новая версия 3.0, с небольшими доработками. Запускаем и пользуемся.
Как изменить исходник, скомпилировать и пользоваться.
Эта часть самая трудоемкая, если ранее Вы вообще ничего не писали подобного. Вам потребуется установить среду программирования Borland Delphi 7 версии 2002 года, именно на ней я писал эту программу, на ней и буду показывать примеры, она самая легкая, по сравнению с новыми версиями.
Я использую Delphi XE8 2015 года, но там сложная процедура установки, и весит она в разы больше, да и она не нужна Вам для такой простой программы, тут можно обойтись старой версией.
После установки самой среды, скачиваем архив с программой и исходником, распаковываем и запускаем Project1.dbr
И ищем данную процедуру с функцией
procedure TForm1.BitBtn4Click(Sender: TObject);
function CountWords(substr,str: string): Integer;
const
Delims: set of Char=[#10,#13,' ',',','.'];
var
p: Integer;
begin
Result:=0;
str:=' '+str+' ';
substr:=trim(substr);
p:=1;
repeat
p:=PosEx(substr,str,p);
if (p>0) and (str[p-1] in Delims) and (str[p+Length(substr)] in Delims)
then Inc(Result);
Inc(p);
until p=1;
end;
begin
Label12.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text))); // Репорт
Label30.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text))); // Репорт
Label14.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' выдал предупреждение' , Memo1.Text))); // Варны
Label17.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' посадил в деморган' , Memo1.Text))); // Джаилы
Label18.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' наказал' , Memo1.Text))); // Джаилы
Label13.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' кикнул' , Memo1.Text))); // кик
Label16.Caption := IntToStr(StrToInt(Label17.Caption)+StrToInt(Label18.Caption)) ; //
end;
Да, я знаю что это убогий и не правильный код, все можно написать куда проще и лучше, я изучал этот язык сам в далеком 2009 году, поэтому писал по памяти, изобретая те самые «костыли», но мы сейчас не об этом.
Строки типа:
Label12.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text))); // Репорт
Label30.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text))); // Репорт
Label14.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' выдал предупреждение' , Memo1.Text))); // Варны
Label17.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' посадил в деморган' , Memo1.Text))); // Джаилы
Label18.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' наказал' , Memo1.Text))); // Джаилы
Label13.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' кикнул' , Memo1.Text))); // кик
Label16.Caption := IntToStr(StrToInt(Label17.Caption)+StrToInt(Label18.Caption)) ; //
В этом случае в файле ChatLog.txt хранится ответ вот в таком формате:
Администратор NickName [228] для Tom_Friman: Приятной игры!
Мы ищем только:
Администратор NickName [228] для
Их и нужно переписывать, к примеру Вы администратор на другом проекте и у Вас в ChatLog.txt сохраняется текст в таком формате:
Администратор NickName (228) ответил игроку Tom_Friman: Приятной игры!
Переписываем строки
Label12.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text))); // Репорт
Label30.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' [' + Label5.Caption + '] для' , Memo1.Text)));
на
Label12.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' (' + Label5.Caption + ') ответил игроку ' , Memo1.Text))); // Репорт
Label30.Caption := (IntToStr(CountWords('Администратор '+ Label3.Caption + ' (' + Label5.Caption + ') ответил игроку ' , Memo1.Text)));
В этом случае программа уже ищет текст в таком виде:
Администратор NickName (228) ответил игроку
Можете написать строчку ответа со своего проекта в комментарии к данному посту, я подскажу как сделать или скомпилирую программа для вас, если будет время. Остальной код редактируете уже по собственным навыкам, если в этом будет необходимость, или опять же пишите в комментарии, я с радостью отвечу и помогу Вам
Если развернуть окно в Delphi 7, то мы увидим скрытые компоненты, они нужны для корректной работы программы и сохранения копии ChatLog.txt, так как после закрытия, она его отчищает.
Программа сама считает репорты и сохраняет их за все время использования, ее можно запустить даже если Вы уже в игре и ответили несколько репортов, она найдет их и сразу же сохранит. Любой запуск и закрытие программы, удаляет ChatLog.txt, но создает его копию, вдруг пригодится.
Компилируем и собираем проект в исполняемый файл
Project1.exeМожем пользоваться. Проект сохранится в папку с которой Вы его запустили.
Если редактировать ничего не нужно и Вы администратор проекта «Amazing RP» можете сразу запускать программу после распаковки архива и пользоваться. Она максимально простая и компактная, по исходникам можете убедится сами что никаких ваших данных я не получаю и ,вообще, программа не работает с сетью. (
За код прошу извинить )
kotoff_net_stats.rar
Для агентов поддержки // Amazing
agent.rar