You are on page 1of 10

Mnh s tng hp kinh nghim ca mnh t khi bt u n gi cc bn c th d dng lm qu TLBB ny.

. Lu y l ca Newbie tng hp cho Newbie ch khng phi cho Pro th nn ai Pro th c th h thng Newbie bn mnh nha. Guild u tay, nu n cha phi ch no mi ngi cho kin it Script NPC n gin, xemgame Yu cu ca mc ny l bn phi bit s s v mt s ngn ng lp trnh c bn nh Pascal, C, ny ta nm s qua tng cng nh l mt s cu lnh iu kin m ta sp dng n. Cu trc ca mt on code i din cho NPC chuyn v s kin. 1. Phn khi ng: Phn ny l phn m ta phi khai bo ID ca NPC cng nh vit mt s ch t g. 2. Phn m u: Gii thiu s kin, cc mc chn la hoc ch n gin l phn duy nht trong g. 3. Phn iu kin: Khng cn thit phi c. Dng kim tra iu kin cn thit c th v ). 4. Phn thn: y chnh l thn s kin vi cc lnh do chnh bn vit nn. C th ni ci n C ( a s l th ). 5. Cc phn khc: Cc bn c th sng to ra cc hm khc phc v cho on code ca mnh. Chi tit: A/ PHN KHI NG: Phn ny a s ton l ch thch cho ngi c. V ci quan trng nht ca phn ny chnh l NPC. Nu nh khng khai bo kiu ny, mi khi dng mt ci lnh lin quan n ID ca NPC ( lnh vi ci ID , c nhm khng? V xt trng hp nhiu file, v bn l mt ngi ngi sot li ch ai bo ID trn u liu bn c kh chu khng? Mt khuyn co l tt c cc kha t tn tng hm mt cng nn km theo ci ID u tin Mt v d v phn ny nh sau: Code: --NPC: i L --Tn: Si p Zai --Tittle: H tr tn th --Edit: By Si Kool x002097_g_ScriptId = 002097

Gii thch: Nhng k t sau cm du "" u c coi l "ch thch" v khng lin quan g n Ci bin i din cho ID Script kia bn c th t tn no cng c nhng thng nht l t Bin x002097_g_ScriptId s mang gi tr l 002097, gi tr ny i din cho ID ca NPC thc h ng code ny. B/ PHN M U: M u s l li gi ti ci m cc ngn ng lp trnh kia gi l "Chng trnh chnh" hay "H V nh trong game cc bn s thy ci bng ny s hin ln khi bm vo NPC ( ng nhin li g tnh nh ). Cu trc ca phn ny s l Code: function xID_NPC_OnDefaultEvent(sceneId,selfId,targetId) Cc lnh c bn, thng s l lnh vit ra mt ci g end Trong ci ID_NPC l ID ca NPC tng t nh trn. Cn cc ci cn li ng thay i. Mnh Mt v d: Code: function x002097_OnDefaultEvent(sceneId,selfId,targetId) local nam = LuaFnGetName(sceneId,selfId) BeginEvent(sceneId) AddText(sceneId,"Hi "..nam..", have a good day!") AddNumText(sceneId,x002097_g_ScriptId,"Chc nng tn th",1,1) EndEvent(senceId) DispatchEventList(sceneId,selfId,targetId) end

Lu sau du "=" l hm c Lp trnh vin vit sn ch vic dng thi nh ( Hm_Hng ). Nh cc bn thy bn trong l cm lnh bt u bng kha BeginEvent(sceneId) v kt thc bng Hm AddText(sceneId,"Text") tc dng chnh ca n l thm vo mt chui k t, nh trn th h bng ni chuyn ca NPC. V d bn tn Test, ci bng s hin ln "Hi Test, have a good day!", tng t nh printf tro AddNumText(sceneId,NPC_ID,"Text",x,y) n c tc dng ghi ra mt chui k t no m khi ng th s thc hin mt s cu lnh pha sau. Trong "x" l biu tng u ca chui k t ny, v "y" s l "m s" ca ci lnh m n s DispatchEventList(sceneId,selfId,targetId) y l lnh ng ci bng li. Nh cc bn thy trong v d trn, ci bng ca chng ta s hin ra. Code: Hi Test, have a good day! (image) Chc nng tn th Ci (image) chnh l biu tng trong game m c th (image)=1 s ra hnh cun sch cun t hn nhim v cc NPC. V khi bn bm vo ci "Chc nng tn th", n s lm g tip th hy chuyn sang phn sau. C/PHN IU KIN: Tc dng c bn ca phn ny ch l kim tra iu kin ca ngi chi sao cho tha mn vi Cu trc ca phn ny l Code: function xID_NPC_OnConditionCheck(sceneId,selfId ) Mt s lnh end V d mnh s xy dng mt phn iu kin kim tra xem ngi chi c cp 10 v khng Code: function x002097_OnConditionCheck(sceneId,selfId ) local lev=GetLevel(sceneId,selfId) if lev < 10 then BeginEvent(sceneId) AddText(sceneId,"Khi no t cp 11 tr ln hy n tm ta") DispatchEventList(sceneId,selfId,targetId) return 0 EndEvent(sceneId) elseif lev > 50 then BeginEvent(sceneId) AddText(sceneId,"Ln hn cp 50 m gi l tn th ?") DispatchEventList(sceneId,selfId,targetId) return 0 EndEvent(sceneId) end

end Cu lnh if iu kin then thc hin lnh end cc bn t hiu n ging trong cc ngn ng lp elseif iu kin then thc hin lnh end tng t nh if ch khc ci ny l kim tra lnh if ra iu kin sau. Hay theo C++ th n tng ng lnh Code: else if (iu kin) { thc hin lnh; } Ngoi ra cn lnh else na nh. Kt thc else s l kha end v tht ra else cng l mt cu n end v kt thc lnh ny phi c end => Logic pht [TLBB] Hng dn vit Script NPC n gi return 0, ging ht C++, gn nh stop chng trnh lun . Ngoi ra n cn lnh tn l retur bng s kin ban u. D/ PHN THN Cu trc Code: function xID_NPC_OnEventRequest(sceneId,selfId,targetId,eventId) Lnh

end y chnh l phn m cc bn sng to nhiu nht v d ca mnh c hm Add Level cho nhn vt Code: function x002097_OnEventRequest(sceneId,selfId,targetId,eventId) local key = GetNumText() if key == 1 then SetLevel(sceneId,selfId,120) BeginEvent(sceneId) AddText(sceneId,"Chc mng bn thng cp 120 thnh cng") EndEvent(scneneId) DispatchEventList(sceneId,selfId,targetId) end end "==" l php so snh bng nh ging bn C. SetLevel(sceneId,selfId,x) l hm Set cho nhn vt level x ty ( khng vt qu 150 ) local Tn_Bin = Hm_Hng GetNumText() tc l hm ly gi tr n ca ci ch m ngi chi va kick vo ( Hi kh hiu vo ci cm k t m c ch s i din cho cc cu lnh ngm pha sau l 1 ) y c th bao gm nhiu lnh nh, v phn ny l phn i hi ngi vit phi c kin thc E/PHN KHC phn ny cc bn c th sng to cc hm khc cho ring mnh c, v d on code bn trn chng trnh gi ti n. Vn thng nht nh trn thm xID_NPC_Tn_chng_trnh(tham bin) nh Code: --NPC: i L --Tn: Si p Zai --Tittle: H tr tn th --Edit: By Si Kool function x002097_OnDefaultEvent(sceneId,selfId,targetId) local nam = LuaFnGetName(sceneId,selfId) BeginEvent(sceneId) AddText(sceneId,"Welcome "..nam..", have a good day!") AddNumText(sceneId,x002097_g_ScriptId,"Chc nng tn th",1,1) EndEvent(senceId) DispatchEventList(sceneId,selfId,targetId) end function x002097_OnConditionCheck(sceneId,selfId ) local lev=GetLevel(sceneId,selfId) if lev < 10 then BeginEvent(sceneId) AddText(sceneId,"Khi no t cp 11 tr ln hy n tm ta") DispatchEventList(sceneId,selfId,targetId) return 0 EndEvent(sceneId) elseif lev > 50 then BeginEvent(sceneId) AddText(sceneId,"Ln hn cp 50 m gi l tn th ?") DispatchEventList(sceneId,selfId,targetId) return 0 EndEvent(sceneId) end end function x002097_OnEventRequest(sceneId,selfId,targetId,eventId) local key = GetNumText() if key == 1 then x002097_LenLevel(sceneId,selfId) end

end function x002097_LenLevel(sceneId,selfId,targetId) BeginEvent(sceneId) AddText(sceneId,"Chc mng bn thng cp 120 thnh cng") EndEvent(scneneId) DispatchEventList(sceneId,selfId,targetId) end y gi l mt ci hay m cc ngn ng lp trnh khc u c l thut "Chia tr", sau n pt c nhiu phn Lu : Phn bit ch hoa ch thng nn phi cn thn. MT S CU LNH SU TP: Add KNB: Code: YuanBao(sceneId,selfId,targetId,1,y) Trong y l s KNB cn add Add T: Code: ZengDian(sceneId,selfId,targetId,1,y) Trong y l s T cn add Add EXP: Code: LuaFnAddExp(sceneId,selfId,x) Trong x l s kinh nghim ( x<=99999999 ) Add im Mn Phi: Code: SetHumanMenpaiPoint(sceneId,selfId,x) Trong x l s im cn Set Add Item: Code: BeginAddItem(sceneId) AddItem(sceneId,x,1) EndAddItem(sceneId,selfId) AddItemListToHuman(sceneId,selfId) Vi x l ID ca item ( xem trong server hoc client ) Add Skill Code: AddSkill(sceneId,selfId,x) Trong x l ID skill cn add Ghi ra knh h thng: Code: BroadMsgByChatPipe(sceneId,selfId,"Text") Ly tn nhn vt: Code: local Tn_Bin = LuaFnGetName(sceneId,selfId) Ly level nhn vt: Code: local Tn_Bin = GetLevel(sceneId,selfId) Ly s th t mn phi ( 0..9 ) Code: local Tn_Bin = GetMenPai(sceneId,selfId) Gia nhp mn phi: Code: LuaFnJoinMenpai(sceneId,selfId,targetId,x) LuaFnSendSpecificImpactToUnit(sceneId,selfId,targetId,148,0) Trong x l th s t mn phi ( 0..9 ) Add tm php Code:

LuaFnSetXinFaLevel(sceneId,selfId,x,y) Trong x l ID quyn tm php cn thm, y l s im tm php OK nh vy l vit c Script n gin. Cn cc ci cao siu mnh khng ni n nh. V y l 1 script mu nhn tm php v lev 120 cho anh em tham kho Code: --i L NPC --ID: 002097 --Script test code by Si Kool --************************ x002097_g_ScriptId = 002097 --************************ --Kh i ng --************************ function x002097_OnDefaultEvent(sceneId,selfId,targetId) BeginEvent(sceneId) AddText(sceneId,"Cho mng bn n vi Thin Long Bt B edit by Si Kool...C ia nhp mn phi v nhn tm php cp 120 khng ? Nu ng , cc h s lp tc thng ln cp AddNumText(sceneId,x002097_g_ScriptId,"Xc nhn",1,1) AddNumText(sceneId,x002097_g_ScriptId,"Nhn yu quyt phi M Dung",1,2) EndEvent(senceId) DispatchEventList(sceneId,selfId,targetId) end --************************ --Thn chng trnh --************************ function x002097_OnEventRequest(sceneId,selfId,targetId,eventId) local key = GetNumText() local lev = GetLevel(sceneId,selfId) --Gia nhp mn phi if key == 1 then BeginEvent(sceneId) AddText(sceneId,"Hy la chn mn phi mun gia nhp...#r Lu : Cp khng nn dng chc nng ny v n s h cp ca bn xung 120....") AddNumText(sceneId,x002097_g_ScriptId,"Thiu Lm",2,3) AddNumText(sceneId,x002097_g_ScriptId,"Minh Gio",2,4) AddNumText(sceneId,x002097_g_ScriptId,"Ci Bang",2,5) AddNumText(sceneId,x002097_g_ScriptId,"Thin Sn",2,6) AddNumText(sceneId,x002097_g_ScriptId,"#YM Dung",2,7) AddNumText(sceneId,x002097_g_ScriptId,"Nga My",2,8) AddNumText(sceneId,x002097_g_ScriptId,"Tiu Dao",2,9) AddNumText(sceneId,x002097_g_ScriptId,"Tinh Tc",2,10) AddNumText(sceneId,x002097_g_ScriptId,"V ang",2,11) AddNumText(sceneId,x002097_g_ScriptId,"Thin Long",2,12) EndEvent(sceneId) DispatchEventList( sceneId,selfId, targetId ) end --*** if key == 3 then --Thiu Lm --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId,0) --ID 0 l Thiu Lm --Tm php LuaFnSetXinFaLevel(sceneId,selfId,1,120) LuaFnSetXinFaLevel(sceneId,selfId,2,120) LuaFnSetXinFaLevel(sceneId,selfId,3,120) LuaFnSetXinFaLevel(sceneId,selfId,4,120) LuaFnSetXinFaLevel(sceneId,selfId,5,120) LuaFnSetXinFaLevel(sceneId,selfId,6,120) LuaFnSetXinFaLevel(sceneId,selfId,55,120) LuaFnSetXinFaLevel(sceneId,selfId,72,120)

LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Thiu Lm, nhn thnh c thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --*** if key == 4 then --Minh Gio --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 1) --ID 1 l Minh Gio --Tm php LuaFnSetXinFaLevel(sceneId,selfId,7,120) LuaFnSetXinFaLevel(sceneId,selfId,8,120) LuaFnSetXinFaLevel(sceneId,selfId,9,120) LuaFnSetXinFaLevel(sceneId,selfId,10,120) LuaFnSetXinFaLevel(sceneId,selfId,11,120) LuaFnSetXinFaLevel(sceneId,selfId,12,120) LuaFnSetXinFaLevel(sceneId,selfId,56,120) LuaFnSetXinFaLevel(sceneId,selfId,73,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Minh Gio, nhn thnh c hi ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 5 then --Ci Bang --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 2) --ID 2 l Ci Bang --Tm php LuaFnSetXinFaLevel(sceneId,selfId,13,120) LuaFnSetXinFaLevel(sceneId,selfId,14,120) LuaFnSetXinFaLevel(sceneId,selfId,15,120) LuaFnSetXinFaLevel(sceneId,selfId,16,120) LuaFnSetXinFaLevel(sceneId,selfId,17,120) LuaFnSetXinFaLevel(sceneId,selfId,18,120) LuaFnSetXinFaLevel(sceneId,selfId,57,120) LuaFnSetXinFaLevel(sceneId,selfId,74,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Ci Bang, nhn thnh cn ng thi thng ln cp 120...") EndEvent(sceneId)

DispatchEventList(sceneId,selfId,targetId ) end --** if key == 6 then --Thin Sn --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 7) --ID 7 l Thin Sn --Tm php LuaFnSetXinFaLevel(sceneId,selfId,43,120) LuaFnSetXinFaLevel(sceneId,selfId,44,120) LuaFnSetXinFaLevel(sceneId,selfId,45,120) LuaFnSetXinFaLevel(sceneId,selfId,46,120) LuaFnSetXinFaLevel(sceneId,selfId,47,120) LuaFnSetXinFaLevel(sceneId,selfId,48,120) LuaFnSetXinFaLevel(sceneId,selfId,62,120) LuaFnSetXinFaLevel(sceneId,selfId,79,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Thin Sn, nhn thnh c thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 7 then --M Dung --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 9) --ID 9 l M Dung --Tm php LuaFnSetXinFaLevel(sceneId,selfId,64,120) LuaFnSetXinFaLevel(sceneId,selfId,65,120) LuaFnSetXinFaLevel(sceneId,selfId,66,120) LuaFnSetXinFaLevel(sceneId,selfId,67,120) LuaFnSetXinFaLevel(sceneId,selfId,68,120) LuaFnSetXinFaLevel(sceneId,selfId,69,120) LuaFnSetXinFaLevel(sceneId,selfId,70,120) LuaFnSetXinFaLevel(sceneId,selfId,71,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120) BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t M Dung Gia, nhn thnh phi ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 8 then --Nga My --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 4) --ID 4 l Nga My --Tm php LuaFnSetXinFaLevel(sceneId,selfId,25,120) LuaFnSetXinFaLevel(sceneId,selfId,26,120) LuaFnSetXinFaLevel(sceneId,selfId,27,120)

LuaFnSetXinFaLevel(sceneId,selfId,28,120) LuaFnSetXinFaLevel(sceneId,selfId,29,120) LuaFnSetXinFaLevel(sceneId,selfId,30,120) LuaFnSetXinFaLevel(sceneId,selfId,59,120) LuaFnSetXinFaLevel(sceneId,selfId,76,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120) BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Nga My, nhn thnh cng ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 9 then --Tiu Dao --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 8) --ID 8 l Tiu Dao --Tm php LuaFnSetXinFaLevel(sceneId,selfId,49,120) LuaFnSetXinFaLevel(sceneId,selfId,50,120) LuaFnSetXinFaLevel(sceneId,selfId,51,120) LuaFnSetXinFaLevel(sceneId,selfId,52,120) LuaFnSetXinFaLevel(sceneId,selfId,53,120) LuaFnSetXinFaLevel(sceneId,selfId,54,120) LuaFnSetXinFaLevel(sceneId,selfId,63,120) LuaFnSetXinFaLevel(sceneId,selfId,80,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Tiu Dao, nhn thnh cn ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 10 then --Tinh Tc --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 5) --ID 5 l Tinh Tc --Tm php LuaFnSetXinFaLevel(sceneId,selfId,31,120) LuaFnSetXinFaLevel(sceneId,selfId,32,120) LuaFnSetXinFaLevel(sceneId,selfId,33,120) LuaFnSetXinFaLevel(sceneId,selfId,34,120) LuaFnSetXinFaLevel(sceneId,selfId,35,120) LuaFnSetXinFaLevel(sceneId,selfId,36,120) LuaFnSetXinFaLevel(sceneId,selfId,60,120) LuaFnSetXinFaLevel(sceneId,selfId,77,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Tinh Tc, nhn thnh cn ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 11 then --V ang --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 3) --ID 3 l V ang --Tm php LuaFnSetXinFaLevel(sceneId,selfId,19,120) LuaFnSetXinFaLevel(sceneId,selfId,20,120) LuaFnSetXinFaLevel(sceneId,selfId,21,120) LuaFnSetXinFaLevel(sceneId,selfId,22,120) LuaFnSetXinFaLevel(sceneId,selfId,23,120) LuaFnSetXinFaLevel(sceneId,selfId,24,120) LuaFnSetXinFaLevel(sceneId,selfId,58,120) LuaFnSetXinFaLevel(sceneId,selfId,75,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t V ang, nhn thnh cng hi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 12 then --Thin Long --Gia nhp mn phi LuaFnJoinMenpai(sceneId,selfId, targetId, 6) --ID 6 l Thin Long --Tm php LuaFnSetXinFaLevel(sceneId,selfId,37,120) LuaFnSetXinFaLevel(sceneId,selfId,38,120) LuaFnSetXinFaLevel(sceneId,selfId,39,120) LuaFnSetXinFaLevel(sceneId,selfId,40,120) LuaFnSetXinFaLevel(sceneId,selfId,41,120) LuaFnSetXinFaLevel(sceneId,selfId,42,120) LuaFnSetXinFaLevel(sceneId,selfId,61,120) LuaFnSetXinFaLevel(sceneId,selfId,78,120) LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfId,selfId,148,0 ) --Thng cp SetLevel(sceneId,selfId,120)

BeginEvent(sceneId) AddText(sceneId,"Chc mng ngi l t Thin Long, nhn thnh c phi ng thi thng ln cp 120...") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId ) end --** if key == 2 then --Nhn Yu quyt M Dung Gia BeginAddItem(sceneId)

AddItem(sceneId,30308099,1)--YQ 35 AddItem(sceneId,30308097,1)--YQ 45 AddItem(sceneId,30308096,1)--YQ 65 AddItem(sceneId,30308100,1)--YQ 80 EndAddItem(sceneId,selfId) AddItemListToHuman(sceneId,selfId)

Lc Ch Tin Thch Ph Thin Thc Ha Kh Thc Lng Thin Thc

BeginEvent(sceneId) AddText(sceneId,"Chc mng cc h nhn c 1 b yu quyt M Dung Gi x002099_NotifyFailTips(sceneId, selfId, "Nhn c 1 b yu quyt M g Gia.") EndEvent(sceneId) DispatchEventList(sceneId,selfId,targetId) end end --Ghi ln tip function x002098_NotifyFailTips( sceneId, selfId, Tip ) BeginEvent( sceneId ) AddText( sceneId, Tip ) EndEvent( sceneId ) DispatchMissionTips( sceneId, selfId ) end . Lu chuyn m VISCII vit nh GameZone Din n tho lun chung v cc th loi tr chi trc tuyn

You might also like