PDA

نسخه کامل مشاهده نسخه کامل : اموزش ساخت اسلحه در UDK (از ابتدا بدون ویرایش یک خط کد اماده ) !!!!



silsin
31-10-2011, 21:30
سلام
می دونم که خیلی ها منتظر این اموزش از طرف من بودن . فقط چند دقیقه صبر کنید تا شروع کنم به نوشتن!!!!!!!


قسمت اول

اگه اموزش قبلی من در مورد ساخت نارنجک رو دنبال کرده باشین من یه مجموعه اسلحه معرفی کردم بهتون که واسه انریله . و به راحتی می تونی توی اون انواع اسلحه ها رو واسه بازیتون بگیرید و استفاده کنید . توی این اموزش هم من از اسلحه های اون پک استفاده کردم


بخش اول :

وارد کردن :::

ابتدا برای استفاده از اسلحه مورد نظرتون باید اون رو در نرم افزار تری دی مکس ساخته . بون های مربوطه به نقاط شلیک و هر نوع بون دیگری را ساخته و بعد به داخل انجین وارد کنید /

قدم دوم :
بررسی ساختمان منابع ما :

همه پکیج های اسلحه ما دارای یک پیشوند مانند زیر هستند :
WP_CX

هر پکیج اسلحه گروه های یکسانی از قبیل :
انیمیشن ها
افکت ها
متریال ها
مش ها
صدا ها
و تکسچر هستند
برای مثال »:
مسیر افکت مربوط به یک اسلحه به دین شکل است »:
WP_CX_Siderm.Effects.P_WP_Cx_SideArm_MuzzleFlash

توجه داشته باشید . برای اینکه بتوانید ساده تر این مسائل رو درک و متوجه بشید حتما لازمه که با این ساختار ها اشنا باشید

قدم بعدی :
شروع به ساخت فایل های UC

خب IDE مورد نظرتون رو واسه اسکریپت نویسی باز کنید :

دوستان توجه کنید که اگر در نظر دارید اسلحه های بیشتری بسازید بهتره کلاس پایه تون رو UTWeapon.uc قرار بدید .

خب قدم بعد ::
حالا باید بریم سراغ ساخت کلاس هامون :

خب برای این اسلحه ما نیار به سه فایل .uc داریم

کلاس مربوط به تعیین میزان اسیب زدن
وظیفه این کلاس کنترل میزان اسیب زدن گلوگه ها در بازی است .
پس به عنوان مثال ما نام این کلاس را RTDmgType_Pistol


دومین کلاس مربوط میشه به کلاس زیر بنیایی اسلحه
این کلاس کدهای کنترل کننده اسلحه را در خود نگه میدارد . به عنوان مثال ایجاد کنید :» RTWeap_Pistol

و کلاس اخر مربوط میشه به کلاس اتصال دهنده !!!

کنرتل ان چیزی که ما در حالت سوم شخص خواهیم دید((توضیحاتش قبلا داده شده
خب یه کلاس به نام زیر ایجاد کنید . RTAttachment_Pistol

خب حالا باید کدها رو وارد کنیم
اول از کدهای مربوط به اسیب رسانی شروع می کنیم
کلاس مربوط به تعیین اسیب رسانی را از کلاس UTDamageType مشتق بگیرید
و کدهای زیر را در ان وارد کنید :


defaultproperties
{
bBulletHit=True
GibPerterbation=0.250000
DamageWeaponClass=Class'RIFT.RTweap_Pistol'
KillStatsName="KILLS_ENFORCER"
DeathStatsName="DEATHS_ENFORCER"
SuicideStatsName="SUICIDES_ENFORCER"
RewardCount=15
RewardAnnouncementSwitch=7
RewardEvent="REWARD_GUNSLINGER"
bNeverGibs=True
bCausesBloodSplatterDecals=True
KDamagelmpulse=200.000000
VehicleDamageScaling=0.750000
}





خب این کد رو یکمی توضیح میدم:

bBulletHit=True
ایا می خواهید موقع برخورد اثری از خود به جا بگذارد>؟


DamageWeaponClass=Class'RIFT.RTweap_Pistol'
چه اسلحه ای را می خواهید به این کلاس نسبت بدهید





RewardCount=15
RewardAnnouncementSwitch=7
RewardEvent="REWARD_GUNSLINGER
سه کلاس مربوط به تعیین نوع جایزه شما . همون چیزی که بعد از کشتن دشمن ها یارو با صدای خفن میگه و روی صفحه یه چیزی میاد.



bNeverGibs=True
باعث میشود تا هنگامی که به نیروی دوست شلیک کردید بر روی او اثری نداشته باشد


bCausesBloodSplatterDecals=True
این گزینه برای فعال کردن قابلیت پاشیدن خون به کار میرود


KDamagelmpulse=200.000000
باعث میشود اشیائ فیزیکی در هنگام برخورد گلوله از خود واکنش فیزیکی نشان دهند مانند ماشین ها

خب این از این
کلاس بعدی مربوط میشه به کلاس مربوط به ویژگی های که می خواهیم به این اسلحه بچسبانیم
خب کلاس مربوط به این فایل خود را از کلاس UTWeaponAttachment مشتق بگیرید و کد های زیر را در ان وارد کنید »:


DefaultProperties
{
TraceerTemplate=ParticleSystem'WP_Cx_Effects.Effec ts.P_WP_Cx_Effects_Tracer2'


Begin Object Name=Skeletalmeshcomponent0
Skeletalmesh=Skeletalmesh'WP_Cx_Sidearm.Mesh.SK_WP _CX_Sideram_3p'
cullDistance=5000.000000
Scale=0.180000
End Object
Mesh=Skeletalmeshcomponent0
MuzzleFlashSocket="MuzzleFlashSocjet"

bMakeSplash=True
MuzzleFlashLightClass=Class'UTGame.UTRocketMuzzleF lashLight'
MuzzleFlashDuration=0.330000



ImpactEffects/ALtInpactEffects Here!!!!

WeaponClass=Class'Rift.RTWeap_Pistol"
WeapAnimType=EWAT_Pistol
}


توضیحات این بخش :

TraceerTemplate=ParticleSystem'WP_Cx_Effects.Effec ts.P_WP_Cx_Effects_Tracer2'
افکتی که هنگام شلیک از دهانه اسلحه بیرون میاید مانند دود و این چیزا


skeletalmesh

مشخص کننده اسلحه ای که ما در حالت دید سوم شخص خواهیم دید



bMakeSplash=True
ایا می خواهید نسبت به اب واکنشی داشته باشد؟


WeaponClass=Class'Rift.RTWeap_Pistol"
WeapAnimType=EWAT_Pistol
به چه کلاسی متصل شود؟





MuzzleFlashLightClass=Class'UTGame.UTRocketMuzzleF lashLight'
MuzzleFlashDuration=0.330000
اولی مربوط به کلاس muzzle flsh و دومی فکرکنم عمق دیدش . یعنی از چه فاصلیه ای دیده بشه .

خب اینم از این
بریم سراغ اخری :

خب چون اول کارین موضع مربوط به شلیک دوم رو نمی گم فعلا .

خب بریم سراغ کلاس پایه امون
خب به ترتیب بنویسید

Fuction Float SuggestAttackStyle()
}
return 0.3 ;

{

Fuction Float SuggestDefanceStyle
}


return -0.4

{


Fuction Byte BestMode()
}

return 0;

{

تعیین می کنه که نوع حمله و شلیک و یا همون استفاده توسط یک بات چه جوری باشه
0 شلیک اصلی و 1 شلیک ثانویه

خب بعد از وارد کردن اون حالا باید مقادیر defaultProperties رو پر ککنید »


defaultProperties
{

FireAnimTime(0) =0.600000
FireAnimTime(1) =0.600000
begin object class=AnimNodeSequence Name=MeshSequenceA
bCauseActorAnimEnd=True
EndObject
Begin Object Name=FirstPersonMesh
Skeletalmesh=Skeletalmesh'WP_CX_Siderm.Mesh.SK_WP_ Cx_Siderm'
Fov=55.000000
Animations=MeshSequenceA
AnimSets(0)=AnimSet'WP_cx_Sidearm.Anims.K_WP_CX_Si derm'
bForceUpdateAttachmentsIntTick=True
Scale=0.900000
End Object
FirstPersonMesh=FirstPersonMesh
BrassClass=Class'RIFT.RTBrass'
BrassStartOffset=(x=2.000000,Y=0.000000,Z=0.000000 0)
BrassVelocity=(x=100.000000,Y=-250.000000,Z=300.000000)
bEjectBrassOnFire=True
bSingleFire=True
bNeedsCocking=True
bSprintPreventsReload=False
InstantHitDamage_Head(0)=100.000000
InstantHitDamage_Head(1) = 100.000000
InstantHitDamageType_Head(0)=class'RIFT.RTDmgType_ Pistol'
InstantHitDamageType_Head(1)=class'RIFT.RTDmgType_ Pistol'
RangeAtten(0)=0.300000
RangeAtten(1)=0.300000
HeadShotRange=(0)=(x=256.000000,Y=768.000000)
HeadShotRange=(1)=(x=256.000000,Y=768.000000)

WeaponEquipSnd=SoundCue' '
WeaponPutDownSnd=SoundCue'
'
WeaponFireSnd(0)=SoundCue ' '
WeaponFireSnd(1)=SoundCue ' '
PickUpSound=SoundCue ' '
FireRecoil(0)=2048.00000
FireRecoil(1)=2048.00000
ViewRecoilFactor=0.250000
MaxAmmo=12
MaxMagAmmo=12
AmmoCount=36
LockerAmmoCount=24
MaxAmmoCount=120
IconX=0
IconY=0
IconWidth=160
IconHeight=50
IconCoordinates=(U=256.000000)
CrossHairCoordinates=(U=256.000000)
InventoryGroup=1
ZoomedRate=30.000000
AttachmentClass='RIFT.RTAttachment_Pistol'
GroupWeight=0.5000000
WeaponColor=(B=64,G=0,R=255,A=255)
MuzzleFlashPSTemplate=ParticaleSystem'WP_CX_Siderm .Effect.P_WP_CX_SideArm_MuzzleFlash'
MuzzleFlashLightClass=Class'UTGame.UTRocketMuzzleF lashLight'
PlayerViewOffset=(x=30.000000,Y=7.500000,Z=-7.000000)
LockerRotation=(Pitch=0,Yaw=0,Roll=-16384)
CurrentRating=0.450000
InstantHitDamage(0)=25.000000
InstantHitDamage(1)=25.000000
InstantHitMomentum(0)=10000.000000
InstantHitMomentum(1)=10000.000000
InstantHitDamageType(0)=Class'RIFT.RTDamageType_Pi stol'
InstantHitDamageType(1)=Class'RIFT.RTDamageType_Pi stol'
bInstantHit=True
ArmsAnimSet=AnimSet'WP_CX_SIDERAM_ANIM_K_WP_CX_Sid eram'
Mesh=FirestPersonMesh
AIRating=0.450000
MaxDesireability=0.4000000
Begin Object Name=PickUpMesh
SkeletalMesh=SkeletalMesh' '
scale=0.250000
End Object
DroppedPickupMesh=PickUpMesh
PickupFactoryMesh=PickUpMesh


دیگه نمی کشم . :41: بقیه رو باشه فردا می گم . البته کد تموم شد فقط توضیحات این کلاس اخری مونده

پس فعلا بای

hamed6618
31-10-2011, 22:40
سلام ميشه روش تعريف كردن كاراكتردربازي رواموزش بدي