21 Ocak 2011

Saç Nasıl Örülür?

Sakalını örmek isteyen orman kaçkını metalciler, kız arkadaşının saçını öremeyenler ve kızların saçını örerek onlara yakınlaşmaya çalışan bütün dostlarıma saç örmeyi anlatacağım. Başta ben de hiç anlamamıştım ama 5dk algoritmaya bakınca insan kavrıyor.

Öncelikle saçı 3 parçaya bölmemiz lazım. Her saç parçasına birer ID verdiğimizi farz edelim. En soldaki saç A, ortadaki B, sağdaki de C olsun. Basit bir psuedomsu kod ile yapacağımız işlemi ifade etmek gerekirse:

BAŞLANGIÇ
A>>B
C>>A
B>>C
BAŞLANGICA DÖN

Hatta direk C'de yazalım şu yapacağımız işi :D

while(1){
ustuneAt(sac[1],sac[2]);
ustuneAt(sac[3],sac[1]);
ustuneAt(sac[2],sac[3]);
if(sacinSonu){
tokaTak();
break;
}
}




Aşağıda kendi kendime 3 farklı renkteki kablo ile pratik yaptığım resmi görebilirsiniz.


Not: Şimdi anladınız mı neden saçını örebileceğim bir sevgilimin olmadığını? :P

11 Aralık 2010

Sony PSP SDK

Sony PSP'ye C dilinde "homebrew"(ev yapımı) program/oyun yazabilmenizi sağlayan toolchain ve saz arkadaşlarını yedekledim.

SDK yazdım aslında tam olarak öyle değil, ps2dev.org sitesi uzun zamandır kapalı. Başka bir ayna adresinde hala gerekli dosyalar duruyordu ben de hepsini çekip belki o site de kapanır diye megaupload'a yükledim. Ev yapımı oyunlar yapmanız için gereken bütün kütüphaneler vs. dahil... Bilgisi olan arkadaşlar .svn klasörüne bakabilir.

PSP programlama ile ilgileniyorsanız:
http://www.psp-programming.com/tutorials/

Subversion ile çektiğim dosyalar: (Valla trunk'ın içinde ne varsa çektim :D

SDL/
SDL_gfx/
SDL_image/
SDL_mixer/
SDL_ttf/
TinyGL/
aalib/
binutils-psp/
bzip2/
cal3D/
cpplibs/
cppunit/
freetype/
google-perftools/
gxemul-psp/
jpeg/
libTremor/
libbulletml/
libctrl/
libdoc/
libmad/
libmikmod/
libogg/
libpng/
libpspvram/
libpthreadlite/
libvorbis/
lua/
microwindows/
mikmodlib/
nidattack/
ode/
openssl/
prxtool/
pspdis/
pspgl/
pspirkeyb/
psplibraries/
psplink/
psplinkusb/
psppacker/
pspsdk/
psptoolchain/
python/
sqlite/
tests/
zlib/
zziplib/

İndirmek için:
http://www.megaupload.com/?d=65X8G1KT

01 Aralık 2010

Basit C++ XOX oyunu.


#include <iostream>
using namespace std;
//field arrayimiz, XOX oyunundaki her 9 haneyi temsil ediyor. Her haneye bir numara verdik, oyuncu hareketlerini bu numaralara gore yapacak.
int field[9]={1,2,3,4,5,6,7,8,9};
//asagidaki arrayin amaci sadece sirasi gelen veya kazanan oyuncunun adini soylerken bize kolaylik saglamak.
char choice[2]={'O','X'};
//main'deki donguden cikmamizi saglayarak oyunumuzu bitiren boolean
bool gameOver=false;

void input(int step){
int move;
while(1){
//hamle sirasi tek ise X, cift ise O hamle yapar.
cout<<"Player "<<choice[step%2]<<", make your move:";
cin>>move;
//oyuncu onceden hamle yapilmis veya alakasiz bir yere giderse hata yazdirip dongunun basina aliyoruz ve butun girdi islemini tekrar yaptiriyoruz.
if(field[move-1]==0||field[move-1]==-1||move<1||move>9)
cout<<"You can't select that field!\n";
//oyuncu yanlis bir numara girmedi, donguden cikaralim.
else
break;
}
//integer olan field arrayinda X hamle yaptiysa hanenin degeri -1, O hamle yaptiysa da 0(sifir) oluyor.
field[move-1]=-1*(step%2);
}

//oyun kagidimizin goruntusunu cizdiriyoruz. 3 satir ve 3 sutun icin iki adet for dongusu kullandim.
void draw(){
int place=0;
for(int row=1; row<=3; row++){
for(int col=1; col<=3; col++){
//arraydaki bir hanenin degeri -1 ise X, 0 ise O, baska bir sey ise oldugu gibi yazdiriyoruz; zaten hane numaralarini en basta yazmistik.
if(field[place]==-1)
cout<<"X";
else if(field[place]==0)
cout<<"O";
else
cout<<field[place];
place++;
}
cout<<endl;
}
}

//bu fonksiyonla field arrayimizdaki 3 hanenin ayni olup olmadigini kontrol ediyoruz
bool check(int a, int b, int c){
if(field[a]==field[b]&&field[b]==field[c])
return true;
else
return false;
}

void checkTable(){
//once yatay satirlari kontrol ediyoruz
for(int i=0; i<=6; i+=3){
if(check(i,i+1,i+2)){
gameOver=true;
draw();
cout<<choice[field[i]*-1]<<" wins!\n";
break;
}
}
//sonra dikey sutunları kontrol ettiriyoruz
for(int i=0; i<=2; i++){
if(check(i,i+3,i+6)){
gameOver=true;
draw();
cout<<choice[field[i]*-1]<<" wins!\n";
break;
}
}
//en son da caprazlama kontrol ediyoruz
if(check(0,4,8)||check(2,4,6)){
gameOver=true;
draw();
cout<<choice[field[4]*-1]<<" wins!\n";
}
}

int main(){
//tablomuzda 9 hane oldugundan en fazla 9 adim atilabilir, dongude her adimdan once kazanan var mi diye kontrol ettiriyoruz. Eger kazanan varsa oyun bitiyor. Yoksa dongugen cikana kadar devam ediyor ve donguden kazanan olmadan cikarsak oyun berabere bitiyor.
for(int step=1; step<=9; step++){
checkTable();
if(gameOver)
return 0;
draw();
input(step);
}
draw();
cout<<"DRAW!\n";
return 0;
}

http://codetidy.com/319

18 Ekim 2010

PSP test sallayıcısı

PSP'ye C dilinde yazdığım ilk program... Aşağıda videosu, kaynak kodu ve isteyene derlenmiş hali var(PSP'nizin homebrew çalıştırabilir olması gerekmekte ve klasörü /PSP/GAME150 klasörüne koymanız gerekmektedir). Evet farkındayım özenti işi 8bit müzik ascii art isim falan keygen yazmadım ama eğleniyorum xD (C pek bilmiyorum, callback kısımlarını anlamadım ama Allaha emanet gidiyoruz işte)

Kaynak kodu + eboot.pbp(binary) indirmek için:
http://www.megaupload.com/?d=ZN7Y8858
Video:
http://www.facebook.com/video/video.php?v=448383189177


#include <pspkernel.h>
#include <pspdebug.h>
#include <pspdisplay.h>
#include <pspctrl.h>
#include <stdlib.h>
#include <time.h>

PSP_MODULE_INFO("Test Sallayicisi", 0, 1, 0);

#define printf pspDebugScreenPrintf

char asciiTag[180]=" ______ \n / ____/\n / /___ _____ _ __\n \\____ \\ / __| | | |_ \\\n _____/ / | |__| | | | | |\n/______/ \\___|_| |_| |_|\n /_/\n------------------------------\n";
int x=0;

/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}

return thid;
}

void sorunoYaz(int soruno)
{
if(soruno<10)
{
printf("\n %i) ", soruno);
}
else if(soruno>=10)
{
printf("\n%i) ", soruno);
}
}
void soruSalla()
{
unsigned int iseed = (unsigned int)time(NULL);
srand (iseed);
int soruSayisi = 1;
int i = 0;
SceCtrlData pad;
printf("%sO:Arttir, []:Azalt, X:Onayla\nSoru sayisi: %i", asciiTag, soruSayisi);
while(1) {
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_CIRCLE && soruSayisi<25) {
pspDebugScreenClear();
soruSayisi++;
printf("%s", asciiTag);
printf("O:Arttir, []:Azalt, X:Onayla\nSoru sayisi: %i", soruSayisi);
for(i=0; i<10; i++) {
sceDisplayWaitVblankStart();
}
}
else if(pad.Buttons & PSP_CTRL_SQUARE && soruSayisi>1) {
pspDebugScreenClear();
soruSayisi--;
printf("%s", asciiTag);
printf("O:Arttir, []:Azalt, X:Onayla\nSoru sayisi: %i", soruSayisi);
for(i=0; i<10; i++) {
sceDisplayWaitVblankStart();
}
}
else if(pad.Buttons & PSP_CTRL_CROSS) {
break;
}
}
pspDebugScreenClear();
printf("%sYeni bir test sallamak icin /\\ tusuna basiniz.", asciiTag);

int soruno;
for (soruno=1; soruno<=soruSayisi; soruno++)
{
sorunoYaz(soruno);
switch(rand()%5) {
case 0:
printf("A |#----|");
break;
case 1:
printf("B |-#---|");
break;
case 2:
printf("C |--#--|");
break;
case 3:
printf("D |---#-|");
break;
case 4:
printf("E |----#|");
break;
}

}
x=0;
while(1)
{
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_TRIANGLE)
{
pspDebugScreenClear();
break;
}
}
}

int main() {
pspDebugScreenInit();
SetupCallbacks();
SceCtrlData pad;
printf("%sSan'in test sallayicisina hosgeldiniz!\nBu benim PSP icin C dilinde yazdigim ilk program.\n\nBaslamak icin /\\ tusuna basiniz!", asciiTag);
while(1)
{
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_TRIANGLE)
{
pspDebugScreenClear();
break;
}
}
while(1)
{
soruSalla();
}
sceKernelSleepThread();
return 0;
}

21 Eylül 2010

Ubuntu WebGL testleri

Ubuntu 10.04'te 3 tarayıcıda WebGL performanslarını karşılaştırdım. Kullandığım tarayıcılar Chromium 7.0.529.0, Google Chrome 7.0.517.8 ve Firefox 4.0b7 (Beta olduğu için adı Minefield diye geçiyor). Bu üçü ppa'dan yükleyebileceğiniz en son sürümler. Diğer sistem bilgilerini de aşağıya yazıyorum:
2.6.32-24-generic-pae kernel
Intel i7 930 @3.30Ghz
6GB ddr3 ram
Nvidia GeForce GTX 470 (fabrika ayarları)
Nvidia kapalı kaynak sürücüleri v195.36.24

Sadece 2 demo ile test yaptım, ne kadar bilimseldir, ne kadar sağlıklı testler olmuştur bilmiyorum ama yine de bir fikir veriyor. İlk olarak akvaryum testi:
http://webglsamples.googlecode.com/hg/aquarium/aquarium.html

Firefox - ~26fps


Google Chrome - ~26fps


Chromium - ~45fps



İkinci ve son olarak çimen testi:
http://webglsamples.googlecode.com/hg/field/field.html

Firefox - ~18fps


Google Chrome - ~25fps


Chromium - ~69fps



Sonuç olarak Chromium'un Linux'ta diğer tarayıcılardan performans olarak üstün olduğunu yine kendi gözlerimle gördüm. (Daha önce Peacekeeper testinde bunu görmüştüm) Ancak son testte bu kadar fark atması beni çok şaşırttı doğrusu... Hatta kardeşi Google Chrome'a bile bu kadar fark attı, işte açık kaynağın zaferi. :)

20 Ağustos 2010

Pardus ile nasıl CS:S sunucusu yapılır?

Dün laptopuma kurduğum sunucuyu gerçek oyuncularla test ettik. Gördüm ki 10mbit indirme, 1mbit gönderme hızı olan internete bağlı 1.6Ghz çift çekirdekli bir sunucu çok rahat 6 kişilik bir oyun kaldırıyor. Ülkemizde 8mbit adsl bağlantısına sahip birilerini bulmak o kadar da zor değil. Eğer böyle bir bağlantınız varsa ve elinizin altında eski bir bilgisayar varsa siz de onu arkadaşlarınızla takılacağınız, istediğiniz haritalarda oynayacağınız özel bir sunucu haline getirebilirsiniz. Hatta 1mbit internetle bile 2 kişi teke tek oynayabilirsiniz.

Bugün, bunun Pardus 2009.2 işletim sistemi ile nasıl yapacağınızı anlatacağım. Yapacağımız şey Pardus'u çok temel bir şekilde bilgisayara kurmak, bu kurulumdan sonra eski bilgisayarınızı yavaşlatan ve bir sunucu için gereksiz olan grafik arayüzü olmayacak. İnternet bağlantısını sağlayacağız, sunucu dosyalarını indireceğiz, modem ayarlarını yaptıktan sonra mani admin plugin kuracağız ve sunucumuz hazır olacak.

Pardus Kurulumu

Ekleme: ozgurlukicin.com forumlarında bir kullanıcı tam da bizim ihtiyacımız olan şeyi yapmış ve bir adet temel sistem iso'su yapmış. Eğer elinizde bir Pardus CD'si yoksa veya daha sonradan Pardus'u normal bir şekilde kurmayı düşünmüyorsanız aşağıdaki forum başlığındaki linkten CD'yi indirebilirsiniz. Bizim ihtiyacımız olan dosyalar var sadece içinde. Ve boyutu sadece 180mb:
http://www.ozgurlukicin.com/forum/gonullu-calismalar/17530/

Öncelikle http://www.pardus.org.tr/indir/ adresinden Pardus'u indiriyoruz. Boş bir CD'ye yazıyoruz, ve bilgisayara takıp CD'den çalıştırıyoruz. Önümüze bir menü açılır açılmaz aşağıda Açılış Seçenekleri yazan kısmın yanına yali4=baseonly yazıp entera basıyoruz. (Bununla ilgili başka bir yerden bulduğum bir resim)

Kurulumu bilmeyenler için de anlatacağım. GPL'i kabul edin, diski doğrulamaya gerek yok, klavyeyi seçerken eğer klavye ingilizce klavyeyse ingilizce seçmeniz daha iyi olabilir. Türkçe karakterlere pek ihtiyacınız olmayacak ama bazı özel karakterlere ihtiyacınız olacak, sorun çıkmaması için. Kullanıcı adı ve parolanızı girin, yönetici parolanızı aklınızda tutun.

Disk bölümlendirmeye geldiğinizde Hayır diski kendim bölümlendireceğim'i seçin. Bilgisayarda boş bir bölüm olmalı, eğer yoksa varolan Windows bölümlerinizle vedalaşmak isteyebilirsiniz :) Boş alan'ı seçip Pardus sistem dosyaları için(/) bir bölüm oluşturun, 5GB yeterli olacaktır, ancak en iyisi en az 10GB lık bir bölüm oluşturmak. Ardından yine boş alana tıklayıp bir takas alanı oluşturun. Bu bölüm bilgisayarım RAM'inin yetmemesi durumunda RAM gibi kullanılacaktır. 2-4GB bir şeyler verebilirsiniz, veya ne kadar olursa. İleri diyin, eğer ne yaptığınızı bilmiyorsanız Önyükleyici seçimi kısmında bir şeye dokunmadan ileri diyerek kurulumu başlatın.

Pardus'u Ayarlamak

Kurulum bittikten sonra Pardus'ta bazı ayarlar yapmamız gerekecek. Bilgisayarı açın, komuta satırından oluşan bir pencere ile karşılaşacaksınız. Sistem ayarları yapacağımız için kullanıcı adınızı kullanarak girmeyin. Kullanıcı adına root, şifreye de yönetici şifrenizi girin.

Şimdi interneti ayarlayacağız, network create yazın. Sorusu geldiğinde IP numarasını kendiniz girmeyi seçin, (Enter IP adress manually). Benim girdiğim IP'ler:
Adress: 192.168.1.200
Mast: 255.255.255.0
Gateway: 192.168.1.1 (modem)
DNS olarak Google DNS seçtim(8.8.8.8) :D
Eğer IP'lerin otomatik olarak alınmasını(DHCP) seçerseniz pek de sorun olmayabilir, zira çoğu dağıtım IP'yi alırken bilgisayarın parmak izi olan MAC adresine göre alıyor, yani her seferinde aynı oluyor. Ama işinizi sağlama almanız ve benim yaptığım gibi girmeniz faydanıza.
Sonunda bir profil ismi girin, internet1 gibi. Aşağıdaki komutla interneti çalıştırın:
network up internet1
ve bağlantıyı kontrol edin...
ping -c 3 www.google.com

Source Dedicated Server kurulumu

Kısaca SRCDS, bu program sayesinde CS:S, HL2:DM, TF2 gibi oyunlara sunucu kurabilirsiniz. Ben CS:S sunucusu kuracağım. wget isimli bir pakete ihtiyacımız olacak, onu kurun.
pisi install wget
Yönetici olark oturum açmıştık, daha güvenli olması için normal kullanıcı olarak oturum açın:
su kullanıcıadı
srcds için bir klasör oluşturup o dizine gidin,
mkdir /home/kullanıcıadı/srcds
cd /home/kullanıcıadı/srcds
Şimdi srcds yükleyicisini indirelim, adı hldsupdatetool(half-life dedicated server update tool). Bununla eski CS 1.6 sunucusu da kurabilirsiniz.
wget http://www.steampowered.com/download/hldsupdatetool.bin
indirdiğimiz dosyayı çalıştırılabilir hale getirip çalıştıralım:
chmod +x hldsupdatetool.bin
./hldsupdatetool.bin
Uzun sözleşmeyi okuduktan sonra kabul edin(şaka şaka, direk kabul edin işte :P). Bulunduğumuz dizinde steam diye bir dosya oluşacak, onu çalıştırın ve Steam güncellensin.
./steam

Şimdi, geldik asıl kısma. Eğer benim gibi CS:S sunucusu kuracaksanız, yaklaşık 3GB dosya indireceksiniz demektir. İnternetiniz hızlı olsa da dosyalar yavaş inebiliyor ve bu işlem uzun sürebiliyor. TF2 sunucusu kurmak istiyorsanız bende "Counter-Strike Source" yazan kısma "tf", CS1.6 sunucusu kurmak istiyorsanız da "cstrike" yazınız. -retry parametresini koymayı unutmayınız, bu parametre hayat kurtarıyor. Eğer bağlantı koparsa 30sn de bir tekrar deniyor. 2 Kere onu girmeden indirmeyi denedim bütün zamanım boşa gitti, bağlantı bir koptu mu kaldığınız yerden devam edemiyorsunuz. Neyse, aşağıdaki komutu girin ve gidin uyuyun, ders çalışın, TV izleyin, sokağa çıkın, kız/erkek arkadaşınız varsa onunla buluşun(Zaten kız/erkek arkadaşınız varsa bu tür işlerle uğraşmayın hiç, bütün zamanınızı onunla geçirmenizi tavsiye ederim).
./steam -command update -game "Counter-Strike Source" -retry -dir .

Bütün dosyalar indikten sonra aslında çalışan bir sunucunuz var demektir!!! Sunucuyu çalıştırmak için aşağıdaki komutu girin:
Ama önce orangebox klasörüne gidin...
cd orangebox
ve işte beklenen an!
./srcds_run -console -game cstrike +map de_dust +maxplayers 16 -autoupdate

Bundan sonra yapmanız gereken modeminizi ayarlamak, bir sürü modem çeşiti olduğundan ve bunun nasıl yapılacağı hakkında bilgi bulmanız çok kolay olduğundan burada anlatmayacağım. Yapmanız gereken 27015 portunu açıp bilgisayarınızın yerel ağdaki IP'sine yönlendirmeniz(Mesela en başta kurarken ben 192.168.1.200 yazmıştım). Tabii isterseniz başka bir port açıp, oyunu çalıştırırken "-port ..." parametresini de ekleyebilirsiniz. Eğer bu sunucu işine niyetliyseniz aylık 2-3tl vererek statik IP almanızı savsiye ederim, aksi taktirde modem her kapandığında değişen IP'nizi sabit tutan bir servise(no-ip) üye olmanız gerekecek ve bu işler hakkında pek bir bilgim yok açıkçası... Modem ile olan işlerinizi hallettiniz kabul ediyorum ;)

Not: Aynı yerel ağ üzerindeki bir bilgisayarda sunucu gözükmüyorsa merak etmeyin, yerel ağ IP'sini kullanarak bağlansanız da dışarı bağlanan IP'niz ile evden bağlanamayabilirsiniz. Bir arkadaşınızdan kontrol etmesini rica etmeniz gerekecek.

Sunucu ayarları

Bundan sonra yapmak isteyeceğiniz şey sunucunuzu ayarlamak olacak... server.cfg dosyasını ayarlamak lazım. Eğer İngilizce bilmiyorsanız CS:S için her parametreyi Türkçe tek tek anlatan bir dosya yok. Uygun bir zamanım olduğunda bu dosya ayarlarını yapmanızı sağlayan Linux'ta çalışan Türkçe bir program yapmayı denerim ama ;) Eğer bu yazıyı okuyorsanız sıkınız dişinizi.
Server.cfg'yi linux komut satırında ayarlamanızı sağlayan bir Python scripti yazdım. cstrike klasörünüze gidin
cd cstrike
şimdi sever-cfg-olusturucusu dosyasini indirelim ve tardan cikaralim, ve calistiralim.
wget http://lys01.0fees.net/server-cfg-olusturucusu.py.tar.gz
tar -xvzf server-cfg-olusturucusu.py.tar.gz
python server-cfg-olusturucusu.py
Oradaki adımları takip edin, iyice okuyun. Her bilgiyi girmek zorunda değilsiniz, eğer girmemek istiyorsanız "gec" yazmanız yeterli olacaktir. İşiniz bittikten sonra orangebox klasörüne geri dönünüz.
cd ..

Admin mod kurulumu

Sunucumuza Mani Admin plugin kuracağız. Adı üstünde bu bir plugin, yani eklenti ve Meta Mod üzerinde çalışıyor. Yapacağımız işler daha çok komutlarla olacak, hadi başlayalım:
mod klasörümüze gidelim: (bu oyundan oyuna değişir, ve eğer sunucuyu yine çalıştırmak isterseniz bir üst klasöre dönmeniz gerekecek, cd .. yazarak bir yukarı dönebilirsiniz. Nerede olduğunuzu görmek için de pwd yazın.)
cd /home/kullanıcıadı/srcds/orangebox/cstrike
http://www.sourcemm.net/ adresinden bulduğumuz Linux linki ile metamod'u indiriyoruz.
wget http://www.sourcemm.net/downloads/mmsource-1.8.3-linux.tar.gz/2
Hazır onu indirmişken, http://www.mani-admin-plugin.com/ adresinden bulduğumuz link ile de Mani Admin plugini indirelim :)
wget http://maniadminplugin.googlecode.com/files/mani_admin_plugin_v1_2v_orange.zip
Şimdi Meta Mod'u tar'dan çıkaralım...
tar -xvzf mmsource-1.8.3-linux.tar.gz
addons klasörü içine metamod.vdf diye bir dosya oluşturup gerekli ayarları girelim
mkdir addons
nano addons/metamod.vdf
ve aşağıdakileri yazalım:
"Plugin"
{
"file" "../cstrike/addons/metamod/bin/server"
}

Ctrl+O'ya basarak kaydettikten sonra Ctrl+X ile nano metin düzenleyicisinden çıkalım.
Sıra Mani'ye geldi, Mani'yi zip'ten çıkaralım. Meta Mod'un aksine Mani zip dosyası, komutu da farklı.
unzip mani_admin_plugin_v1_2v_orange.zip
Meta Mod'un Mani'yi açılışta çalıştırmasını sağlamamız lazım.
nano addons/metamod/mani_admin_plugin.vdf
aşağıdakileri yazdıktan sonra kaydedip kapatalım.
"Metamod Plugin"
{
"alias" "Mani Admin Plugin"
"file" "addons/mani_admin_plugin/bin/mani_admin_plugin_mm"
}


Admin eklemek

Admin eklemek için clients.txt diye bir dosya oluşturmamız lazım. * işaretlerinin arasına yazdıklarımı sizin değiştirmeniz gerekiyor.
SteamID: SteamID'nizi http://steamidfinder.com/ adresine Steam profilinizin linkini yazarak veya oyunda tek kişilik oyun açıp konsola "status" yazın, adınızın sağında STEAM:_0:0:123456 ya benzeyen şey sizin SteamID'niz.
nano /cfg/mani_admin_plugin/clients.txt
"clients.txt"
{
"version" "1"

"players"
{
"*OyundakiAdınız*"
{
"name" "*adınız*"
"steam" "*SteamID'niz*"
"flags"
{
"Admin" "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e"
"Admin" "f g i k l m o p q q2 q3 r s t v w x y z admin client"
"Admin" "grav pban spray"
"Immunity" "a b c d e f g h i j k l m n o p q r s t u v x y afk ping autojoin grav Immunity"
}
}
}
}


İşte bu kadar! Artık çalışan bir sunucunuz var, hem de Pardus!!! ;) Unutmayın SRCDS Linux'ta Windows'ta olduğundan çok daha hızlı çalışır, grafik arayüzü olmaması da performans açısından çok büyük bir artı. Özellikle bu yazıda anlatmak istediğim bir süperbilgisayara değil, el altındaki eski bir bilgisayara veya öylesine duran bir laptopa nasıl sunucu kurulacağı olduğu için bunlar önemli. İyi eğlenceler!

Not: Yazıyı yazdıktan sonra Özgür Bozkurt isminde birisinin hazırladığı çok güzel bir sunucu kurulumu videosu buldum, yalnız bu Windows için. Belki yardımcı olabilir, eğer admin modla veya portlarla falan sorun yaşıyorsanız izlemenizi tavsiye ederim.
http://blog.ozgurbozkurt.com/counter-strike-source-server-kurulumu-videolu-anlatimi.html