(https://h.eksiup.com/adWLv5.png)
Neler Lazım ?
* Microsoft Visual Studio 2010 veya daha üstü bir sürüm
* SA:MP Plugin SDK dosyaları
SA:MP Plugin SDK Dosyalarını Nereden İndirebilirim ?
Buraya tıklayarak gerekli dosyayı indirebilirsiniz. (https://goo.gl/THr45V)
Her şey hazırsa başlayalım:
1: Microsoft Visual Studio 2010 açalım.2: New Project tıklayalım.3: Sol taraftan Visual C++ seçelim.4: Önümüzdeki ekrandan Win32 Console Application seçelim ve projemize isim verelim.(https://h.eksiup.com/BANjPp.jpg)
5: Şimdi önünüze bir ekran gelecek. Next basın.6: Burada Application Type: DLL seçiyoruz. Additional options kısmından da Empty project seçip Finish diyoruz.(https://h.eksiup.com/7NdjDl.jpg)
7: Şimdi sağ tarafta Solution Explorer kısmından Yazmış olduğunuz plugin ismine sağ tıklayın.8: Sağ tıkladıktan sonra > Add > New Filter tıklayın.9: Bir klasör oluşacak. İsmini SDK yazın.(https://h.eksiup.com/jWpdOJ.jpg)
(https://h.eksiup.com/okpJW2.jpg)
10: Şimdi > Belgelerim > Visual Studio xxxx > Projects > Yazdığınız Plugin İsmi > gelin.11: SDK adında bir klasör oluşturun.(https://h.eksiup.com/dGD994.jpg)
12: Şimdi Visual Studio gelelim ve SDK klasörümüzün içine indirmiş olduğumuz dosya ve klasörü sürükleyelim.(https://h.eksiup.com/7NdjlL.jpg)
(https://h.eksiup.com/bGpPnm.jpg)
13: Tekrardan Plugin İsmine sağ tıklayıp > Add > New Item tıklayın.14: Önümüzdeki ekrandan Code tıklayın. Ordan Module-Definiton File (.def) tıklayıp Add basın.(https://h.eksiup.com/29qb50.jpg)
(https://h.eksiup.com/9dAOq9.jpg)
15: Şimdi ekranınızda tek LIBRARY yazacak. Onu silip aşağıda verdiğim kodu ekleyip CTRL + S yapın.LIBRARY "Yazdığınız Plugin İsmi"
EXPORTS
Supports
Load
Unload
AmxLoad
AmxUnload
(https://h.eksiup.com/Mv2rkQ.jpg)
16: Tekrardan Plugin İsmine sağ tıklayıp > Add > New Item tıklayın.17: Önümüzdeki ekrandan Code tıklayın. Ordan C++ File (.cpp) tıklayıp Add basın.(https://h.eksiup.com/29qb50.jpg)
(https://h.eksiup.com/pWkLW0.jpg)
18: Şimdi > Project > Plugin İsmi Properties... > tıklayalım.(https://h.eksiup.com/1gBXA1.jpg)
19: Burada Module Definition kontrol edeceğiz. Bunun için,20: Configuration Properties > Linker > Input tıklayalım ve sağ tarafta Module Definition File: Source.def olup olmadığını kontrol edelim.21: Eğer Source.def ise tamam basalım.(https://h.eksiup.com/r2p7P7.jpg)
22: Şimdi Source.cpp açıp şu kodları yazalım.#include "..\SDK\amx\amx.h"
#include "..\SDK\plugincommon.h"
typedef void(*logprintf_t)(char* format, ...);
logprintf_t logprintf;
extern void *pAMXFunctions;
cell AMX_NATIVE_CALL Topla(AMX* amx, cell* params)
{
return params[1] + params[2];
}
cell AMX_NATIVE_CALL Cikar(AMX* amx, cell* params)
{
return params[1] - params[2];
}
cell AMX_NATIVE_CALL Bol(AMX* amx, cell* params)
{
return params[1] / params[2];
}
cell AMX_NATIVE_CALL Carp(AMX* amx, cell* params)
{
return params[1] * params[2];
}
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
{
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
logprintf("\n ========================\n");
logprintf(" Plugin Açıldı ! \n");
logprintf(" ========================\n");
return true;
}
PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
logprintf("\n ========================\n");
logprintf(" Plugin Kapatıldı \n");
logprintf(" ========================\n");
}
AMX_NATIVE_INFO PluginNatives[] =
{
{ "Topla", Topla },
{ "Cikar", Cikar },
{ "Bol", Bol },
{ "Carp", Carp },
{ 0, 0 }
};
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
{
return amx_Register(amx, PluginNatives, -1);
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
{
return AMX_ERR_NONE;
}
23: Eğer böyle gözükürse, her şey sıkıntısız olmuş demektir.(https://h.eksiup.com/9dA0DQ.jpg)
24: Şimdi F5 basalım ve Pluginimiz (.dll) oluşsun.25: Burada Yes basıyoruz.(https://h.eksiup.com/7Nd56W.jpg)
26: Eğer aşağıda ki resim gibi sonuç aldıysanız, plugininiz hazır demektir. (Build kısmının 1 olması gerek)(https://h.eksiup.com/1gBqZj.jpg)
27: Şimdi > Belgelerim > Visual Studio xxxx > Project > Plugin İsmi > Debug > PluginIsmi.dll kopyalayın.(https://h.eksiup.com/Mv2m41.jpg)
28: Kopyaladığınız plugini serverinizin plugins klasörünün içine atın ve server.cfg düzenleyin.29: Şimdi include dosyamızı oluşturalım.native Topla(nTopla1, nTopla2);
native Cikar(ncikar1, ncikar2);
native Bol(nBol1, nBol2);
native Carp(nCarp1, nCarp2);
(https://h.eksiup.com/vpVrrp.jpg)
30: Modunuzu açın ve #include <IncludeIsmi> girin.31: Şimdi modunuzun main() kısmına gelin ve şu kodları yapıştırıp F5 basın.main()
{
printf("\n========== PLUGIN TEST ========== \n");
printf(" Toplama: %d", Topla(10, 10));
printf(" Çıkar: %d", Cikar(10, 5));
printf(" Böl: %d", Bol(10, 2));
printf(" Çarp: %d\n", Carp(20, 2));
printf("========== PLUGIN TEST ========== \n");
}
(https://h.eksiup.com/PrN9Y9.jpg)
32: Şimdi modumuzu çalıştıralım ve sonuçlara bakalım.33: Ve sonuç, takıldığınız yerler olursa yorumlarda belirtebilirsiniz.(https://h.eksiup.com/6XbOZv.jpg)