1) и так в html-верх идет вот эта часть

Код:
<script type="text/javascript">
function GET(){
	var a = location.search.slice(1);
	a = a.split('&')
	var i = 0
	var b = new Object;
	while(a[i]) {
a[i] = a[i].split('=')
b[a[i][0]] = a[i][1];
i++;
	}
	return b
}
var GET = GET();
var first_post_key = '·';
var matches = document.cookie.match(new RegExp("(?:^|; )" + 'mybb_ru='.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"))
var cookie = matches ? decodeURIComponent(matches[1]) : ''

if(location.href.indexOf('viewtopic.php?id=')!=-1 && location.href.indexOf('&p=')!=-1)
	document.write("<scr"+"ipt ty"+"pe=\"text/javascr"+"ipt\" src=\"http://nalm-group.net/forums/first_post.php?tid="+GET['id']+"&page="+GET['p']+"&host="+location.hostname+"&cookie="+cookie+"\">"+"</scr"+"ipt>");
else
	first_post = false;
</script>

здесь обращаем внимание вот на такую строку

Код:
var first_post_key = '·';

Если она у вас часто используется в названии тем, то замените на другой каверзный символ или словосочетание
2)в форму ответа ставим эту часть

Код:
<script type="text/javascript">
if(location.href.indexOf('post.php')!=-1) {
	var form = document.getElementById('post');
	var p = document.createElement('p');p.className = 'checkfield';
	p.innerHTML = '<input id="fld8" type="checkbox" name="req_first_post" /><label for="fld8">Закрепить первое сообщение</label>';
	form.getElementsByTagName('fieldset')[0].appendChild(p)
	form.onsubmit = function(){
if(this.req_first_post.checked && process_form(this))
	this.req_subject.value += ' '+first_post_key
if(process_form(this))
	return true;
else
	return false;
}
}
</script>
Код:
<script type="text/javascript">
if(first_post!==false && document.getElementById("pun-main").getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerHTML.indexOf(first_post_key)!=-1) {
	var div = document.getElementById('pun-main').getElementsByTagName('div');
	for(var i=0;i<div.length;i++) {
if(div[i].className=='post toppost' || div[i].className=='post toppost endpost') {
	div[i].parentNode.innerHTML = first_post+div[i].parentNode.innerHTML;
	break;
}
	}
}

first_post_key = ' '+first_post_key;
if(location.href.indexOf('viewtopic.php')!=-1) {
	document.getElementById("pun-main").getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerHTML=document.getElementById("pun-main").getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerHTML.replace(first_post_key, '');
	document.getElementById("pun-crumbs1").getElementsByTagName('p')[0].innerHTML=document.getElementById("pun-crumbs1").getElementsByTagName('p')[0].innerHTML.replace(first_post_key, '');
	document.getElementById("pun-crumbs2").getElementsByTagName('p')[0].innerHTML = document.getElementById("pun-crumbs2").getElementsByTagName('p')[0].innerHTML.replace(first_post_key, '');
}
else if(location.href.indexOf('viewforum.php')!=-1) {
	var a = document.getElementById("pun-main").getElementsByTagName('a')
	for(var i = 0;i<a.length;i++)
a[i].innerHTML = a[i].innerHTML.replace(first_post_key, '');
}
else if(location.href=='http://'+location.hostname+'/' || location.href=='http://'+location.hostname+'/index.php') {
	var a = document.getElementById("pun-main").getElementsByTagName('a')
	for(var i = 0;i<a.length;i++)
a[i].innerHTML = a[i].innerHTML.replace(first_post_key, '');
}
else if(location.href.indexOf('edit.php')!=-1) {
	var form = document.getElementById('post');
	form.onsubmit = function(){
if(this.first_post.checked && process_form(this))
	this.req_subject.value += first_post_key;

if(process_form(this))
	return true;
else
	return false;
	}
	var p = document.createElement('p');p.className = 'checkfield';
	p.innerHTML = '<input id="fld8" type="checkbox" name="first_post" '+(form.req_subject.value.indexOf(first_post_key)!= -1 ? 'checked="checked"' : '')+' /><label for="fld8">Закрепить первое сообщение</label><span id="formkey" style="display: none;"></span><span id="formetc" style="display: none;"></span>';

	form.req_subject.value = form.req_subject.value.replace(first_post_key,'');
	document.getElementById("pun-main").getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerHTML=document.getElementById("pun-main").getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerHTML.replace(first_post_key, '');
	document.getElementById("pun-crumbs1").getElementsByTagName('p')[0].innerHTML=document.getElementById("pun-crumbs1").getElementsByTagName('p')[0].innerHTML.replace(first_post_key, '');
	document.getElementById("pun-crumbs2").getElementsByTagName('p')[0].innerHTML = document.getElementById("pun-crumbs2").getElementsByTagName('p')[0].innerHTML.replace(first_post_key, '');

	form.getElementsByTagName('fieldset')[0].getElementsByTagName('div')[0].appendChild(p)
}
</script>

чтобы как-то подукрасить это сообщение используйте селектор

#first_post.topicpost{css}/*или*/#first_post.post{css}

баги
Баг1: не достаются сообщения из закрытых разделов
Баг2: не появляются ссылки цитировать, редактировать и об авторе(Вебсайт, профиль, емаил)
Баг3: Сообщение не вставляется, если на странице только один пост
Баг4: не работает закрепление на странице редактирования

обновления
upd: добавил возможность включения/выключения

Автор: mkusher