c++ ile pano icin plugin yapabilirim

Katılım
17 Nis 2011
Mesajlar
903
Tepki
0
Puan
0
Yaş
25
Konum
34 İSTANBUL
Bu nedir?
Bu anlatacagimin sayesinde artik basit plugin(.dll formatinda) yapabilirsiniz. Mesela Streamer gibi seyler.

Lazim olan seyler nedir?
  • Microsoft Visual 2008 C++ Express edition
  • Bos pawno scripti
  • Pawno bilgi
  • Az cok C++ bilgi
  • SDK include
Nasil yapicam ben bunu?
  • Microsoft Visual 2008 C++ Express edition'u ac
  • Yukarda 'File >> New >> Project'e basiniz
  • Ekrana ciktigi an Win32 Console Application seciniz
  • OK'e basin
  • Win32 Application Wizard ekrani cikicak karsiniza. Next'e tiklayiniz
  • Oradan DLL seciniz ve onun altina Additional Options'da Emty Project sonra Finish'e basiniz
  • Simdi Solution Explorer cikmasi lazim karsiniza(Cikmadiysa: View >> Solution Explorer e tiklayiniz)
  • Solution explorer ekraninda en baste sizin Projeniz var. Maus'da sag tusa basiniz
  • Oradan Configuration Properties >> Linker >> Input'a basiniz
  • Modula definition yazili olan yere main.def yaziniz
  • Tekrar solution explorer ekranina geciniz ve tekrar en bastakine sag maus tusu yapiniz
  • Oradan Add >> New Item seciniz
  • Yeni ekran karsiniza geldigi an Module Definition seciniz ve isim olarak main veriniz (Bu yazdigim orada yoksa C++ sec ve isim olarak main.def ver-
  • Simdi Source yazisinin altinda main.def yazisi gelmesi lazim.
  • main.def'in uzerine iki kere tiklayiniz ve karsiniza bos bir sayfa gelmesi lazim. Oraya sunu kopyalayiniz
Kod: [Seç]EXPORTS
Supports
Load
Unload
AmxLoad
AmxUnload
  • Simdi Solution explorer ekranina tekrar en bastakini secip Add >> New Item seciniz
  • Yeni ekran karsiniza geldigi an C++ sec ve isim olarak main.cpp ver-
  • Simdi main.def altina main.cpp gelmesi lazim. Uzerine iki kere tiklayiniz ve karsiniza bos sayfa gelir
  • Acilan kagidin uzerine bunu kopyalayiniz
Kod: [Seç]#include "./SDK/plugin.h"

typedef void (*logprintf_t)(char* format, ...);

logprintf_t logprintf;
void **ppPluginData;
extern void *pAMXFunctions;

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( "Pluginim Hazirlandi." );
return true;
}

PLUGIN_EXPORT void PLUGIN_CALL Unload( )
{
logprintf( "Pluginim Durduruldu" );
}

AMX_NATIVE_INFO MyProjectNatives[ ] =
{
{ 0, 0 }
};

PLUGIN_EXPORT int PLUGIN_CALL AmxLoad( AMX *amx )
{
return amx_Register( amx, MyProjectNatives, -1 );
}

PLUGIN_EXPORT int PLUGIN_CALL AmxUnload( AMX *amx )
{
return AMX_ERR_NONE;
}
  • SDK dosyasini simdi Belgelerim >> Visual Studio 2008 >> Projects >> Project%d >> ProjectIsimi >> ProjectIsimi >> Ve bunun icine kopyalayiniz
  • Simdi terkrar solution explorer ekranina gecip en bastakine sag tus ile tikliyoruz ve Add >> New Filter seciyoruz ve isim olarak SDK veriyoruz
  • Simdi gelen dosyanin uzerine sag maus tusu ve Add >> Existing Item seciyoruz
  • Simdi SDK'i attiginiz yere gidip amxplugin.cpp seciyoruz
  • Ve son olarak F5 tusuna basarak basari ile hatasiz compile ediyoruz.
  • DLL dosyasi burada bulunuyor: Belgelerim >> Visual Studio 2008 >> Projects >> Project%d >> ProjectIsimi >> Debug
Nerden orgendin?
SA:MP'de bir arkadasim anlatti. Yani anlatim ona ait.

Onemli:
SDK sayesinde DLL'de bulunan nativeleri pawnoda native olarak kullanabiliyoruz.
C++'de new; int olarak yaziliyor;
Float: float olarak;
Karakter [] formatinda.

Nasil callback yaparim?

Kod: [Seç]static cell AMX_NATIVE_CALL sdk_Callbackisimi( AMX* amx, cell* params )
{
//int playerid = params[1]; // mesela
//float x = params[2]]; // istersen bunu ekliyebilirsin. Pawnoda ozaman native Isim(playerid, Float:x); olucak ve boyle devam..
return 1;
}
Bu kod sayesinde pawnoda bu yaptiginizi cagirabilirsiniz timer olarak veya komut icinde native olarak.

Pawnoda nasil olucak lan bu?
Dur simdi panik yapma, önce main.cpp'i ac ve 'AMX_NATIVE_INFO MyProjectNatives[ ] =' arat; bulduktan sonra oraya {0, 0}, 'in yukarsina bunu ekle

Kod:{"PawnodaOlucakIsim", sdk_Callbackisimi},
Simdi pawnoda bos scripti ac ve modun basina
Kod: native PawnodaOlucakIsimi(playerid, bilmemne, kac params olduguna bagli, ekle);
Son soz:
SDK plugini bana ait degildir, daha fazla bilgi icin plugin hakkinda(Plugini buradan indirebilirsiniz icinde invoke'de varn o include sayesinde pawno functionlari kullanabilirsiniz 'GetPlayerPos' gibi
Sorulariniz olursa elimden gelesiye kadar yardim edicem, bende daha yeni baslayan biriyim. Yakinda ogrenip güzel pluginler sunmaya dusunuyorum. Iyi bilmemneler :D(aksamlar, gunler..)


alıntıdır..
 
Katılım
8 Haz 2011
Mesajlar
99
Tepki
0
Puan
0
Yaş
26
Konum
45 MANİSA
Teşekkürler.İşe yarar bilgiler var.
 

Şu anda bu konu'yu okuyan kullanıcılar

Üst