Server do mình dev theo kiểu mình nay ko có thời gian để làm tiếp share mọi người ai thix dev lấy về dev tiếp còn ai ko biết down về chơi cũng là ok.
một số chức năng nữa đang làm dang dở chưa xong bao gồm cả ép đồ tím mình đang làm mà chưa xong, ai dev tiếp thì cứ tiếp tục những link phía dưới sẽ có 1 vài tài liệu giúp người nào thix dev sẽ típ tục được. Ai thích thì xài ko thích thì đừng nói lời cay đắng.
Code:
/*
DarkMoon
05/02/2013 3:00 am
hamserver_vina.txt
List ham server
*/
--IncludeLib("FILESYS") : de dung dc ham doc file
--IncludeLib("TASKSYS"): DE DUNG TASK SYS FILE
--IncludeLib("SETTING") : Dung lien wan den ham ST_
--IncludeLib("ITEM") --lien quan ®Õn item
--IncludeLib("TIMER") --liªn quan ®Õn hµm timer (gäi id from tasklist.ini)
--IncludeLib("NPCINFO"): dïng ®Ó gäi hµm level monster
--timer gäi only in tasklist.in
TM_SetTimer(18 * 10, IDTaskTimer, 30, 0)
TM_StopTimer(IDTASKTIMER)
Include("\\script\\dailogsys\\dailogsay.lua"): create ham say
TabFile_Search(path or tªn file muèn ®Æt,zNameRow,DataFind,nRow): dïng ®Ó t×m 1 th«ng tin cña 1 line nµo ®ã trong 1 file.
TabFile_GetRowCount(path or tªn file muèn ®Æt) : count data trong file
TabFile_GetCell(path or tªn file muèn ®Æt,nRow,zNameRow) : dïng ®Ó lÊy th«ng tin tõng roll mÆc ®Þnh bëi tªn ®Çu tiªn cña row
TabFile_Load(path,tªn file muèn ®Æt(vd: "duong")) : kiÓm tra file cã tån t¹i ko (1: cã, 0: ko)
SetAutoHangMapFlag(id so ) : 1 cÊm b¸n hµng + chat trªn mäi tÇng sè
CountFreeRoomByWH(width,height) : tÝnh « trèng trong r¬ng by réng vµ chiÒu cao
CalcFreeItemCellCount() : ®Õm kho¶ng trèng trong hµnh trang by « (1 by 1)
CreateTaskSay({"<dec><npc>".." string want to say","ket thuc/oncancel"})
GetAccount() : hµm lÊy id ®Ó ®¨ng nhËp nh©n vËt
GetLocalDate("%y%m%d") : lÊy ngµy th¸ng cña computer
CreateNewSayEx(zTile,tbOption) : t¹o mét hµm say nh sau
zTile = "test string"
tbOption =
{
{"Option name",function option,paramate}
}
ITEM_SetExpiredTime(ItemIndex, 10080);
SyncItem(ItemIndex); dïng sau khi set thêi gian expired cho 1 trang bÞ hoÆc 1 vËt phÈm nµo.
SetItemBindState(index,-2) : khãa b¶o hiÓm vÜnh viÔn (index = AddItem(...) )
GetItemName(nItemIdx) : dïng ®Ó lÊy tªn vËt phÈm.
RemoveItemByIndex(nItemIdx) : xãa vËt phÈm by index.
CalcEquiproomItemCount( 6, 1, Id VËt PhÈm, CÊp §é ) : ®Õm sè lîng vËt phÈm xÕp chång trong r¬ng dïng cho hµm AddItem(6,1,0...)
ConsumeEquiproomItem(sè lîng trõ,6,1,Id VËt PhÈm,-1): del vËt phÈm xÕp chång dïng cho vËt phÈm AddItem(6..)
CalcEquiproomItemCount(4,id vËt phÈm,1,-1) : ®Õm sè lîng xÕp chång cho vËt phÈm questkey
ConsumeEquiproomItem(sè lîng,4,id vËt phÈm,1,-1): del vËt phÈm xÕp chång dïng cho questkey
ConsumeItem(3,1,lo¹i vËt phÈm (4, or 6 or item),1,Id VËt PhÈm,-1): dïng ®Ó kiÓm tra vËt phÈm cã hay ko nÕu cã th× return 1 vµ xãa lun vËt phÈm hoÆc trang bi
ConsumeItem(-1,nItemCount,tbProp[1],tbProp[2],tbProp[3],-1): dïng ®Ó ®Õm sè lîng(c¶ stack) Item 6 cã bao nhiªu nÕu ®óng sè lîng nItemCount(lÊy tõ CalcItemCount) lµ 1 if not -1, then nã del vËt phÈm ®ã.
CalcItemCount(-1,tbProp[1],tbProp[2],tbProp[3],-1): lÊy sè lîng Item stack cña item 6 trong b¶ng giao
CalcItemCount(3,tbProp[1],tbProp[2],tbProp[3],-1): ®Õm sè lîng vËt phÈm trong hµnh trang
GiveItemUI("tªn cña b¶n giao","chó thÝch cña b¶ng giao","function de thùc hiÖn b¶ng giao") : b¶ng giao vËt phÈm or trang bÞ
GetItemBindState(nItemIndex) : lÊy t×nh tr¹ng cña vËt phÈm (khãa hay ko khãa)
GetGiveItemUnit(nItemRoom) : tr¶ l¹i lÊy index cña vËt phÈm bá vµo b¶ng giao return IndexItem,nItemRoom: sè « cña vËt phÈm bá vµo b¶ng giao
GetItemProp(index item) : return particular,kind of vËt phÈm,id vËt phÈm
GetItemStackCount(idxItem): return sè lîng item xÕp chång bá vµo b¶ng giao by index vËt phÈm bá vµo
GetItemQuality(nItemIndex) : return lo¹i trang bÞ bá vµo b¶ng giao bëi index.
GetItemName(nItemIndex): return l¹i tªn cña vËt phÈm hoÆc trang bÞ bá vµo bëi index
SetItemStackCount( itemidx , 10 ): xo¸ item stack bá vµo ui råi add l¹i sè lîng cßn l¹i.
CalcFreeItemCellCount(): dïng ®Ó ®Õm kho¶ng trèng trong hµnh trang ( CalcFreeItemCellCount() <= 15 : cÇn 15 kho¶ng trèng);
DisabledUseTownP(0 or 1) : khãa sö dông thæ ®Þa phï : 0 më 1: khãa
ForbidChangePK(0 or 1) : khãa pk 1: khãa ,0 : ko
Msg2Map(id map,str) : dïng th«ng b¸o tin nh¾n ®Õn nh©n vËt trong 1 map nµo ®ã
OfflineLive(PlayerIndex) : dïng ®Ó out nh©n vËt d¹ng ñy th¸c.
GetLastDiagNpc(); return index npc ®èi tho¹i
GetNpcName(nNpcIndex) : return tªn npc ®èi tho¹i b»ng index
NPCINFO_GetLevel(nNpcIndex) : dïng ®Ó lÊy level monster fai include IncludeLib("NPCINFO")
NPCINFO_GetSeries(nNpcIndex) : dïng ®Ó lÊy series cña monster
SetMissionS(id, Name): Dïng ®Ó add tªn cña nh©n vËt ë d¹ng task mission
GetMissionS(id) : lÊy tªn nh©n vËt ®îc set b»ng missions s b»ng id
GetSkillExp(Id Skill): dïng ®Ó kiÓm % luyÖn cña skill
AddSkillExp(Id Skill,% exp luyÖn,1,1): add % luyÖn skill
GetSkillName(Skill Id) : return name cña skill
GetCurrentMagicLevel(nSkillId, 0): kiÓm tra level hiÖn t¹i cña skill
GetSkillMaxLevel(nSkillId): lÊy max skill number
AddSkillState(id skill, 1, 1, sè phót * 1080): dïng ®Ó add thÓ tr¹ng skill hiÓn thÞ díi vßng s¸ng hay lµ tiªn th¶o lé
GetSkillState(id skill): dïng ®Ó kiÓm tra t×nh tr¹ng cña skill hiÖu øng
GetTeamMember(i) : lÊy index player by team
GetNpcAroundPlayerList(nNpcIndex, 20); dïng ®Ó kiÓm tra nh©n vËt cã ë gÇn npc ko (npc idnex, kho¶ng c¸ch nv ®Õn npc)
SetNpcParam( index npc,1,sè thø tù); dïng ®Ó ph©n biÖt sè thø tù npc ®îc add vµo sv
SetTireTime(0) : dïng ®Ó reset giê ch¬i
ST_LevelUp(nLevel) : dïng ®Ó add level cho ngêi ch¬i (nlevel : level muèn add) + fai includelib("SETTING")
ST_IsTransLife() : kiÓm tra chuyÓn sinh (IncludeLib("SETTING"))
GetNpcSettingIdx(nNpcIndex) : dïng ®Ó lÊy id npc trong file (npcs.txt) return id npc
ForbidEnmity(0): lock cõu s¸t hay kh«ng cõu s¸t (0: cõu s¸t, 1: cÊm cõu s¸t)
GetNpcPos(nNpcIndex) : return nXIndex,nYIndex,nSubWorldIndex : dïng cho dropitem()
DropItem(nSubWorldIdx ,nX,nY,PlayerIndex,particular type,1,id vat pham,1,0,0,0,0,0,0,0,0): r¬i item or vËt phÈm xuèng ®Êt
AddStackItem(sè lîng,particular,id vËt phÈm,1,1,0,0,0) : dïng ®Ó add vËt phÈm xÕp chång
GetItemCountEx(id vat pham): dïng ®Ó ®Õm sè lîng vËt phÈm questkey
HaveItem(id vat pham): dïng ®Ó ®Õm sè lîng vËt phÈm questkey
DelItemEx(id vat pham): xãa vËt phÈm questkey
AddEventItem(Id vat pham): add vËt phÈm questkey
CheckStoreBoxState(thu tu ruong): kiÓm tra ®· më réng r¬ng cha
SubWorldName(MapIndex): return tªn thµnh thÞ b»ng SubWorld;
AddNpcSkillState(nNpcIndex, Skill ID, Level Skill, 1 (mÆc ®Þnh), thêi gian phót * 18): dïng ®Ó add skill cho npc.
SetNpcAuraSkill(nNpcIndex, Skill ID, Level Skill): dïng ®Ó add skill tr¹ng th¸i buff cho npc.
ChangeOwnFeature(0, 0, -1, -1, -1, -1, -1): Èn m×nh nh©n vËt chØ hiÖn tªn nv th«i, out ra lµ hÕt.
GetLoginTime(): lÊy thêi gian login vµo sv cña nh©n vËt
Time2Tm(GetLoginTime()): dïng ®Ó convert thêi gian login hay logout cña nh©n vËt qua ngµy th¸ng n¨m. vÝ dô: local tb = Time2Tm(GetLoginTime()) str = format("%d/%d/%d-%d/%d/%d", tb[3], tb[2], tb[1], tb[4], tb[5], tb[6])
Tm2Time(2010,7,15,0,0,0): dïng ®Ó convert sang theo ngµy th¸ng: 15/17/2010-0/0/0
Ladder_NewLadder(LadderID,tªn gi¸ trÞ,gi¸ trÞ,type,gi¸ tri 1, gi¸ trÞ 2): dïng ®Ó add ladder (type (0 lµ update liªn tôc, 1 update 1 lÇn))
local tªn gi¸ trÞ, gi¸ trÞ,gi¸ trÞ 1,gi¸ trÞ 2 = Ladder_GetLadderInfo(LadderID, k): dïng ®Ó return l¹i c¸c gi¸ trÞ ladder.
ForbidEnmity(0); cÊm cõu s¸t (1 lµ cÊm, 0 lµ cã thÓ cõu s¸t);
AddItemEx(nItemVer, nRandseed, nQ, nG, nD, nL, nS, nLucky, nMagic0, nMagic1, nMagic2, nMagic3, nMagic4, nMagic5, nMagic6);
--====c¸ch dïng hµm dropitem===----
tbItem = {6,1,ItemID,1,0,0};
local x, y, world = GetNpcPos(nNpcIndex);
DropItem(world, x, y, -1, tbItem[1],tbItem[2], tbItem[3], tbItem[4], tbItem[5], tbItem[6], 0, 0, 0, 0, 0, 0);
----end c¸ch dïng hµm dropitem-------
g_AskClientNumberEx(1, 50, "Xin mêi nhËp sè", {self.goi, {self,50}} ) : ask player for number díi d¹ng class function : 1 lµ hiÖn thÞ sè nhËp, self.goi la function , {self,50} : self lµ default parameter, 50 lµ max count cã thÓ nhËp vµo.
Include("\\script\\dailogsys\\dialogsay.lua"
g_GiveItemUI("Thay ®æi ngo¹i h×nh trang bÞ", "Xin h·y bá vµo trang bÞ cÇn thay ®æi ngo¹i h×nh", {self.goi, {self,3}}): UI giao trang bÞ dïng ®Ó gäi function class, self.goi(3,INDEX): INDEX: self, max input 3
-----------------------------------------------------------------------------------------
=============================================
---dailog: Include("\\script\\dailogsys\\g_dialog.lua")
if NpcName2Replace then
have to use : NpcName2Replace(szNpcName) : return chÝnh x¸c tªn npc ®èi tho¹i.
end
local tbDailog = DailogClass:new(szNpcName)
tbDailog.szTitleMsg = ""
tbDailog:AddOptEntry(string option,function) : dïng cho function ko cã parameter
tbDailog:AddOptEntry(string option,function,{para1,para2,para3,...}): dïng cho function cã parameter
tbDailog:Show() : show list AddOption
--Add Npc tù ®éng: Include("\\script\\global\\autoexec_head.lua")
AutoFunctions: Add(function addnpc) :nã sÏ tù add npc b»ng c¸ch bá function npc vµo para
c¸ch dïng: gäi hµm ra cuèi file AutoFunctions:Add(LoadNpc_ViDu)
------------------------------------
C¸ch dïng hµm DropTemplet:
Include("\\script\\lib\\droptemplet.lua") : header ®Ó dïng ®¬c hµm DropTemplet
tbItem =
{
{szName = "",tbProp = {0,1},nCount = 1, nRate = 20,nQuality = 1, nExpiredTime = 10080} --cho hoµng kim trang bi
{szName = "",tbProp = {4 or 6,1,id vat pham,1,0,0},nCount = 1, nRate = 20, nExpiredTime = 10080}
}
tbDropTemplet:GiveAwardByList(nNpcIndex, -1, tbItem,TitleStr, 1)
: hµm r¬i (TitleStr : "Boss death" or bÊt cø g×)
-------------------------------------------------------------------
==========================================
C¸c hµm liªn quan ®Õn ~ tèng kim
bt_setnormaltask2type() --set task cho c¸i b¶ng
BT_SetView(PL_TOTALPOINT); --®iÓm
BT_SetView(PL_KILLPLAYER); --giÕt ngêi
BT_SetView(PL_KILLNPC);--giÕt npc
BT_SetView(PL_BEKILLED); --bÞ ngêi kh¸c giÕt
-- BT_SetView(PL_SNAPFLAG); --®o¹t cê
BT_SetView(PL_GETITEM); --B¶o vËt lôm ®îc
BT_SetView(PL_MAXSERIESKILL); --liªn tr¶m
BT_SetGameData()
BT_LeaveBattle() : tat ~ clear thong tin
BT_ClearPlayerData() --xoa data cua ~ trong tong kim
BT_SortLadder() : sort thø h¹ng
BT_BroadSelf() : më lªn cho nh×n thÊy th«ng tin trong b¶ng ~
------------------------------------------------------------------------------
==============================================
C¸c hµm liªn quan ®Õn chØnh thêi gian trong s3relay
TaskName("name"):
TaskInterval(time) : sè phót
TaskTime(giê, phót):
TaskCountLimit(0);
------------------------------------------------------------------------------
================================================
Hµm add ®å tÝm + add option ®å tÝm.
--add option ®å tÝm vµ hµm
--add ra ®å t×m 6 dßng: AddQualityItem(2,0,1,2,10,4,0,-1,-1,-1,-1,-1,-1)
--AddItemEx(nItemVer, nRandseed, nQuality, nG, nD, nL, nS, nLucky, nMagic0, nMagic1, nMagic2, nMagic3, nMagic4, nMagic5, nMagic6);
--randsed: trong ®å tÝm nÕu ®Ó 0 nã sÏ random tØ lÖ option cña trang bÞ tõ 1% - 100% tuú theo option thuéc lo¹i nµo.
--vÝ dô: magic id 126 (s¸t th¬ng) trong file magicattriblevel_index.txt cã tû lÖ min lµ 1 vµ 10 lµ max tîng trng cho 1% - 100% nÕu ®Ó randomseed lµ 0 vµ magic level 1 th× s¸t th¬ng sÏ random trong kho¶ng 1%-10%
AddItemEx(4,ransed,2,nGenre, nDetailType, nParticular, nLevel, nSeries, nLuck,290,maglevel[2],maglevel[3],maglevel[4],maglevel[5],maglevel[6])
GetGiveItemUnit(index); return l¹i itemindex (index lµ vËt phÈm ®îc lÊy index tõ GiveItemUi());
ITEM_GetItemRandSeed(itemindex): lÊy randsed
GetItemAllParams(itemindex): lÊy magiclevel tõng option cã thÓ thay ®æi min max b»ng->(liªn quan ®Õn file magicattriblevel_index.txt (c¸ch coi file idmagic - minopt - maxopt))
GetItemProp(itemindex): return tÊt c¶ nGenre, nDetailType, nParticular, nLevel, nSeries, nLuck cña 1 trang bÞ