PDA

View Full Version : [TLBB] Share script mẫu của BOSS Ngô Vĩnh (Sát Tinh)



Sói Đẹp Trai
31-08-14, 05:49 PM
Như tiêu đề đây là script mẫu, dựa vào nó có thể Mod các con khác. Lưu ý con Hoa Dung thì hơi khó nhé...



--Th§p nh¸ Sát Tinh
--Ngô Vînh
--Author: Hoàng Steven

--******************--
x900155_g_ScriptId=900155
--******************--
x900155_g_Boss_Name="Ngô Vînh" --Tên cüa BOSS
--******************--
x900155_g_Last_Time=1 --Th¶i gian l¥n trß¾c g÷i phøc binh
x900155_g_Last_Color=2 --Màu s¡c phøc binh (1~Ðö, 2~Vàng, 3~Tím)
x900155_g_Last_Died=3 --Phøc binh l¥n trß¾c ðã chªt
x900155_g_Last_Told=4 --Ðã nói sau khi phøc binh l¥n trß¾c chªt chßa
--******************--
x900155_g_Soldier_Index={
[1]=13706, --H°ng s¡c phøc binh
[2]=13706, --Hoàng s¡c phøc binh
[3]=13706 --TØ s¡c phøc binh
}
x900155_g_Soldier_Name={
[1]="H°ng s¡c phøc binh", --H°ng s¡c phøc binh
[2]="Hoàng s¡c phøc binh", --Hoàng s¡c phøc binh
[3]="TØ s¡c phøc binh" --TØ s¡c phøc binh
}
--******************--
x900155_g_Impact_Immune=1579 --Hi®u Ñng mi­n d¸ch
x900155_g_Impact_Lost_HP=1708 --M¤t máu sau khi tiêu di®t ðúng phøc binh
--******************--
x900155_g_Next_Time_Call=60000 --Khoäng cách 2 l¥n g÷i phøc binh liên tiªp
--******************--
x900155_g_Monster_Dialogue={ --L¶i nói cüa Boss
[1]="Ngày này nåm sau s¨ là ngày d² cüa các ngß½i... Ъn cä ðây...", --Boss m¾i xu¤t hi®n
[2]="Phøc binh nghe l®nh cüa ta... H°ng trang t¯ khöa...", --G÷i phøc binh ðö
[3]="Phøc binh nghe l®nh cüa ta... Hoàng lß½ng mÛ mµng...", --G÷i phøc binh vàng
[4]="Phøc binh nghe l®nh cüa ta... TØ khí ðông lþi...", --G÷i phøc binh tím
[5]="Các ngß½i ðã giªt chªt phøc binh cüa ta r°i...", --Khi phøc binh chªt
[6]=x900155_g_Boss_Name.." ðã vào chiªn ð¤u!", --Boss vào chiªn ð¤u
[7]="Ta... Ta... Dù có chªt ta cûng không tha cho các ngß½i!", --Boss tØ nÕn
}
--******************--

--**********************************--
--* On Init *--
--**********************************--
function x900155_OnInit(sceneId,selfId)

x900155_ResetMyAI(sceneId,selfId) --Set lÕi các thuµc tính cho Boss

end
--**********************************--
--* On Heart Beat *--
--**********************************--
function x900155_OnHeartBeat(sceneId,selfId,nTick) --Hàm này s¨ check liên tøc m²i mili giây khi nào Boss còn s¯ng

--******************--
if LuaFnIsCharacterLiving(sceneId,selfId)~=1 then --Nªu Boss ðã chªt thì ng×ng hoÕt ðµng cüa Script
return
end
--******************--
local nColor=MonsterAI_GetIntParamByIndex(sceneId,selfId ,x900155_g_Last_Color) --L¤y màu s¡c cüa phøc binh
if nColor==0 then
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Died,1) --Ðánh d¤u phøc binh l¥n trß¾c ðã chªt
else
if x900155_IsLastSoldierDied(sceneId,selfId)==1 then --Phøc binh l¥n trß¾c ðã chªt
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Died,1) --Ðánh d¤u phøc binh l¥n trß¾c ðã chªt
else
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Died,0) --Ðánh d¤u phøc binh l¥n trß¾c chßa chªt
end
end
--******************--
local Last_Time=MonsterAI_GetIntParamByIndex(sceneId,sel fId,x900155_g_Last_Time) --L¤y th¶i gian trß¾c ðó g÷i phøc binh
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Time,Last_Time-nTick) --C§p nh§t lßþt g÷i phøc binh t¾i
if Last_Time-nTick<=0 then
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Time,x900155_g_Next_Time_Call)--Reset th¶i gian g÷i phøc binh l¥n t¾i
end
--******************--
local Last_Died=MonsterAI_GetIntParamByIndex(sceneId,sel fId,x900155_g_Last_Died) --Ki¬m tra phøc binh l¥n trß¾c ðã chªt chßa (0~Chßa, 1~Ðã chªt)
if Last_Died==0 then --Nªu phøc binh chßa chªt thì không làm gì næa
return
end
--******************--
local Last_Told=MonsterAI_GetIntParamByIndex(sceneId,sel fId,x900155_g_Last_Told) --Boss ðã nói sau khi phøc binh l¥n trß¾c chªt chßa
if Last_Told==0 then --Nªu phøc binh ðã chªt mà chßa ðßþc thông báo
MonsterTalk(sceneId,selfId,"",x900155_g_Monster_Dialogue[5]) --Boss phàn nàn phøc binh ðã chªt
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Told,1) --Ðánh d¤u Boss ðã nói
LuaFnCancelSpecificImpact(sceneId,selfId,x900155_g _Impact_Immune) --Xóa bö trÕng thái mi­n d¸ch cüa Boss
LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfI d,selfId,x900155_g_Impact_Lost_HP,0) --Boss b¸ giäm 10% máu
x900155_DelSoldiersBeside(sceneId) --Del các phøc binh khác không liên quan
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Time,x900155_g_Next_Time_Call+1)--Reset th¶i gian g÷i phøc binh l¥n t¾i
end
--******************--
local Last_Time=MonsterAI_GetIntParamByIndex(sceneId,sel fId,x900155_g_Last_Time) --L¤y th¶i gian trß¾c ðó g÷i phøc binh
if Last_Time==x900155_g_Next_Time_Call then --Nªu ðã qua 1 phút
local x,y=GetWorldPos(sceneId,selfId) --L¤y t÷a ðµ cüa Boss
x900155_CallSoldiers(sceneId,selfId,x,y) --G÷i phøc binh xung quanh Boss
local Talk_Index=MonsterAI_GetIntParamByIndex(sceneId,se lfId,x900155_g_Last_Color) --L¤y màu s¡c cüa phøc binh chính là chï s¯ tß½ng Ñng trong l¶i nói cüa Boss
MonsterTalk(sceneId,selfId,"",x900155_g_Monster_Dialogue[Talk_Index+1]) --Câu g÷i phøc binh cüa Boss
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Told,0) --Chßa thông báo
LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfI d,selfId,x900155_g_Impact_Immune,0) --Boss ðßþc mi­n d¸ch
end
--******************--

end
--**********************************--
--* On Enter Combat *--
--**********************************--
function x900155_OnEnterCombat(sceneId,selfId,enmeyId)

--******************--
MonsterTalk(sceneId,selfId,"",x900155_g_Monster_Dialogue[1]) --Câu nói khai chiªn cüa Boss
x900155_GlobalNews(sceneId,x900155_g_Monster_Dialo gue[6]) --Thông báo Boss ðã vào chiªn ð¤u cho toàn th¬ ng߶i ch½i
--******************--

end
--**********************************--
--* On Leave Combat *--
--**********************************--
function x900155_OnLeaveCombat(sceneId,selfId)

--******************--
x900155_ResetMyAI(sceneId,selfId) --Set lÕi các thuµc tính cho Boss
--******************--

end
--**********************************--
--* On Kill Character *--
--**********************************--
function x900155_OnKillCharacter(sceneId,selfId,targetId)

--******************--
local PlayerName=GetName(sceneId,targetId)
MonsterTalk(sceneId,selfId,"","Ha ha... "..PlayerName..", ngß½i ðã tØ nÕn r°i, tên nào s¨ là nÕn nhân tiªp theo ðây... Ha ha...!") --Boss chª di­u ng߶i ch½i b¸ giªt
--******************--

end
--**********************************--
--* On Die *--
--**********************************--
function x900155_OnDie(sceneId,selfId,killerId)

--******************--
MonsterTalk(sceneId,selfId,"",x900155_g_Monster_Dialogue[7]) --Câu nói cüa Boss lúc chªt
--******************--
x900155_DelSoldiersBeside(sceneId) --Xóa các phøc binh
--******************--

end
--**********************************--
--* Reset My AI *--
--**********************************--
function x900155_ResetMyAI(sceneId,selfId)

--******************--
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Time,x900155_g_Next_Time_Call+1) --Kh·i tÕo th¶i gian ra phøc binh tr· v« th¶i gian xu¤t hi®n Boss
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Color,0) --Kh·i tÕo màu s¡c v×a ra là 0
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Told,0) --Ðã nói sau khi phøc binh binh l¥n trß¾c chªt
--******************--

end
--**********************************--
--* Is Last Soldier Died *--
--**********************************--
function x900155_IsLastSoldierDied(sceneId,selfId)

--******************--
local nMonsterNum=GetMonsterCount(sceneId)
local nColor=MonsterAI_GetIntParamByIndex(sceneId,selfId ,x900155_g_Last_Color) --L¤y màu s¡c cüa phøc binh
for i=0,nMonsterNum-1 do
local MonsterId=GetMonsterObjID(sceneId,i)
if LuaFnIsCharacterLiving(sceneId,MonsterId)==1 and (GetName(sceneId,MonsterId)==x900155_g_Soldier_Nam e[nColor]) then --Nªu phøc binh møc tiêu ðã chªt
return 0
end
end
--******************--
return 1
--******************--

end
--**********************************--
--* Del Soldiers Beside *--
--**********************************--
function x900155_DelSoldiersBeside(sceneId)

--******************--
local nMonsterNum=GetMonsterCount(sceneId)
for i=0,nMonsterNum-1 do
local MonsterId=GetMonsterObjID(sceneId,i)
if LuaFnIsCharacterLiving(sceneId,MonsterId)==1 and (GetName(sceneId,MonsterId)==x900155_g_Soldier_Nam e[1] or GetName(sceneId,MonsterId)==x900155_g_Soldier_Name[2] or GetName(sceneId,MonsterId)==x900155_g_Soldier_Name[3]) then --Nªu phøc binh møc tiêu ðã chªt
SetCharacterDieTime(sceneId,MonsterId,100)
end
end
--******************--

end
--**********************************--
--* Call Soldiers *--
--**********************************--
function x900155_CallSoldiers(sceneId,selfId,Boss_X,Boss_Y)

--******************--
local x,y
local ran=random(3) --Phøc binh ngçu nhiên s¨ ðßþc ch÷n làm ði¬m yªu cüa Boss
--******************--
MonsterAI_SetIntParamByIndex(sceneId,selfId,x90015 5_g_Last_Color,ran) --Ðánh d¤u màu s¡c phøc binh yªu ði¬m cüa Boss
--******************--
x=Boss_X+random(2)-random(2) --Ngçu nhiên t÷a ðµ cüa phøc binh xung quanh Boss
y=Boss_Y+random(2)-random(2)
local MonsterID=LuaFnCreateMonster(sceneId,x900155_g_Sol dier_Index[1],x,y,27,1,-1) --G÷i phøc binh màu ðö
SetCharacterName(sceneId,MonsterID,x900155_g_Soldi er_Name[1]) --Set tên cho phøc binh
--******************--
x=Boss_X+random(2)-random(2) --Ngçu nhiên t÷a ðµ cüa phøc binh xung quanh Boss
y=Boss_Y+random(2)-random(2)
local MonsterID=LuaFnCreateMonster(sceneId,x900155_g_Sol dier_Index[2],x,y,27,1,-1) --G÷i phøc binh màu vàng
SetCharacterName(sceneId,MonsterID,x900155_g_Soldi er_Name[2]) --Set tên cho phøc binh
--******************--
x=Boss_X+random(2)-random(2) --Ngçu nhiên t÷a ðµ cüa phøc binh xung quanh Boss
y=Boss_Y+random(2)-random(2)
local MonsterID=LuaFnCreateMonster(sceneId,x900155_g_Sol dier_Index[3],x,y,27,1,-1) --G÷i phøc binh màu tím
SetCharacterName(sceneId,MonsterID,x900155_g_Soldi er_Name[3]) --Set tên cho phøc binh
--******************--

end
--**********************************--
--* Global News *--
--**********************************--
function x900155_GlobalNews(sceneId,Tips)

--******************--
local nHumanCount = LuaFnGetCopyScene_HumanCount(sceneId)
for i=0,nHumanCount-1 do
local nHumanId = LuaFnGetCopyScene_HumanObjId(sceneId,i)
if LuaFnIsObjValid(sceneId,nHumanId)==1 and LuaFnIsCanDoScriptLogic(sceneId,nHumanId)==1 and LuaFnIsCharacterLiving(sceneId,nHumanId)==1 then
BeginEvent(sceneId)
AddText(sceneId,Tips)
EndEvent(sceneId)
DispatchMissionTips(sceneId,nHumanId)
end
end
--******************--

end


Ai thấy hay cho xin cái THANKS nhỉ :D

Sói Đẹp Trai
31-08-14, 10:42 PM
Ai có câu hỏi hay thắc mắc nào liên quan đến cái "khó hiểu" của code hoặc suy ra các script cho con khác hoặc không hiểu cấu trúc hàm nào vui lòng comment bên dưới mình sẽ giải đáp. Nên nhớ là mỗi câu hỏi của bạn là tài liệu quý giá cho những người khác tham khảo khi gặp trường hợp tương tự đó..

--- Chế độ gộp bài viết ---

Trong này có một cấu trúc hơi lạ là biến global cho riêng Monster (Cái này giống với Copy Scene). Ai đọc thì chú ý,

skythienlong
02-09-14, 09:42 AM
bạn có cái script nào nhận trân thú không cho mình xin mẫu.............

Sói Đẹp Trai
02-09-14, 11:09 AM
Tham khảo script nhận đồng hành ở bản 3.0 có...

skythienlong
02-09-14, 05:00 PM
Tham khảo script nhận đồng hành ở bản 3.0 có...

bạn up mình cái script đó đi sv 3.0 mình không còn giữ cái nào......