İPUCU

Seçenekler

C++ ile nasil pawno icin plugin yapmak //PoisonScorpion

31-01-2012 02:45
#1
PoisonScorpion - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
10/2011
Nereden:
İstanbul
Mesajlar:
1.389
Teşekkür (Etti):
13
Teşekkür (Aldı):
1075
Konular:
431
PoisonScorpion ;


Selamun aleyküm // Aleyküm selam..


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:
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:
#include "./SDK/plugin.h"

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

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

PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports() 
{
	return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}

PLUGIN_EXPORT bool PLUGIN_CALL Load( **** **ppData ) 
{
	pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
	logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];

	logprintf( "Pluginim Hazirlandi." );
	return true;
}

PLUGIN_EXPORT **** 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

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:
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);



//PoisonScorpion

04-03-2012 18:50
#2
Clasic - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2012
Mesajlar:
219
Teşekkür (Etti):
62
Teşekkür (Aldı):
21
Konular:
8
Ellerine sağlık..
Kullanıcı İmzası

4 yıl sonra yeniden..
02-06-2012 22:29
#3
zafer00 - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
11/2009
Mesajlar:
5
Teşekkür (Etti):
0
Teşekkür (Aldı):
2
Konular:
0
Alinti oldugunu belirt

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı