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.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.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.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.10: Şimdi > Belgelerim > Visual Studio xxxx > Projects > Yazdığınız Plugin İsmi > gelin.11: SDK adında bir klasör oluşturun.12: Şimdi Visual Studio gelelim ve SDK klasörümüzün içine indirmiş olduğumuz dosya ve klasörü sürükleyelim.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.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 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.18: Şimdi > Project > Plugin İsmi Properties... > tıklayalım.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.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.24: Şimdi F5 basalım ve Pluginimiz (.dll) oluşsun.25: Burada Yes basıyoruz.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)27: Şimdi > Belgelerim > Visual Studio xxxx > Project > Plugin İsmi > Debug > PluginIsmi.dll kopyalayın.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);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");
}32: Şimdi modumuzu çalıştıralım ve sonuçlara bakalım.33: Ve sonuç, takıldığınız yerler olursa yorumlarda belirtebilirsiniz.