PDA

View Full Version : [KT] hỏi thêm vật phẩm KHÓA trong script này



lyvanbethao
10-03-13, 01:08 PM
trong script như thế này

local tbNpc= Npc:GetClass("xinnian_vowtree");
SpecialEvent.Euro = SpecialEvent.Euro or {};
local Euro = SpecialEvent.Euro or {};

function tbNpc:OnDialog()
local szMsg = "Xin chào, ta có thể giúp được gì?";
local tbOpt=
{
{"Cuồng nhiệt cùng <color=yellow>EURO<color>",self.eventeuro,self},
{"Kết thúc đối thoại"},
};

Dialog:Say(szMsg,tbOpt);
end
function tbNpc:eventeuro()
local szMsg = "Hãy đi tìm những Ngôi sao danh vọng Euro đem về đây ta sẽ đổi cho ngươi phần thưởng xứng đáng!";
local tbOpt =
{
{"Tao muốn đỗi<color=yellow>5<color> ngôi sao", self.ChangePartnerMiJExi, self, 1},--uc van
--{"<color=yellow>20<color> ngôi sao", self.ChangePartnerMiJExi2, self, 1},--ngua 2 skill
--{"<color=yellow>50<color> ngôi sao", self.ChangePartnerMiJExi3, self, 1},--mat na
--{"<color=yellow>100<color> ngôi sao", self.ChangePartnerMiJExi4, self, 1},-- ấn
--{"<color=yellow>300<color> ngôi sao", self.ChangePartnerMiJExi5, self, 1},--hổ cap +3
{"Kết thúc đối thoại"},
};
Dialog:Say(szMsg, tbOpt);
end

function tbNpc:ChangePartnerMiJExi(nLevel)
local tbType = {5} --Số lượng vật phẩm cần đê đổi
local szContent = string.format("Đặt %s <color=yellow>Ngôi sao danh vọng Euro<color> vào đây và ta sẽ thực hiện điều ước của ngươi!", tbType[nLevel]);
Dialog:OpenGift(szContent, nil, {tbNpc.OnOpenGiftOk, tbNpc, nLevel});
end

function tbNpc:OnOpenGiftOk(nLevel, tbItemObj)
local tbType = {5} --Số lượng vật phẩm cần đê đổi
local szPartnerCaiLiao = "18,1,25067,1" ; --Vật phẩm cần để đổi
--数量判断
local nCount = 0;
for i = 1, #tbItemObj do
nCount = nCount + tbItemObj[i][1].nCount;
end
if nCount ~= tbType[nLevel] then
Dialog:Say("Số lượng không đủ", {"Ta biết rồi"});
return 0;
end
--物品判定
for i = 1, #tbItemObj do
local pItem = tbItemObj[i][1];
local szKey = string.format("%s,%s,%s,%s",pItem.nGenre,pItem.nDetail,pItem.nParticular,pIte m.nLevel);
if szKey ~= szPartnerCaiLiao then
Dialog:Say("Loại nguyên liệu không đúng", {"Ta biết rồi"});
return 0;
end
end
--背包判定
if me.CountFreeBagCell() < 1 then
Dialog:Say("Hành trang đã đầy, hãy thu xếp rồi nhận lại",{"Ta biết rồi"});
return 0;
end
--删除交的东西
for i = 1, #tbItemObj do
local pItem = tbItemObj[i][1];
pItem.Delete(me);
end
local pItemEx = me.AddItem(18,1,356,1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
if pItemEx then
pItemEx.Bind(1);
--me.SetItemTimeout(pItemEx, 60*24*30, 0);
EventManager:WriteLog(string.format("[兑换同伴秘籍]获得物品:%s",pItemEx.szName), me);
me.PlayerLog(Log.emKPLAYERLOG_TYPE_JOINSPORT, string.format("[兑换同伴秘籍]获得物品:%s",pItemEx.szName));
else
EventManager:WriteLog(string.format("[兑换同伴秘籍]获得失败,扣除材料%s个",nCount), me);
me.PlayerLog(Log.emKPLAYERLOG_TYPE_JOINSPORT, string.format("[兑换同伴秘籍]获得失败,扣除材料%s个",nCount));
end
GlobalExcute({"Dialog:GlobalNewsMsg_GS", "Người chơi <color=cyan>" ..me.szName.. "<color> đem 5 Ngôi Sao danh Vọng Ero cầu nguyện được 1 huyền tinh vô hạ cấp 9 xin chúc mừng!"});
me.SendMsgToFriend("Hảo hữu của bạn <color=cyan>" .. me.szName
.. "<color>] đem 10 Ngôi Sao danh Vọng Ero cầu nguyện được 1 huyền tinh vô hạ cấp 9 xin chúc mừng!");
Dialog:Say("<color=wheat>Chúc mừng ngươi đã đem 10 Ngôi Sao danh Vọng Ero cầu nguyện được 1 huyền tinh vô hạ cấp 9 xin chúc mừng!!<color>", {"Cảm ơn !"});
end

sẽ nhận được 1 hòa thị bích khóa giờ muốn thêm 2 vũ khí khóa thì mình add như thế này nhận vẫn dc nhưng gs báo lõi


local pItemEx = me.AddItem(18,1,356,1).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
local pItemEx = me.AddItem(2,1,1292,10).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
local pItemEx = me.AddItem(2,1,1292,10).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
if pItemEx then
pItemEx.Bind(1);

bạn nào rành cho mình hỏi add như thế nào để dc thêm trang bị khóa mà gs ko báo lõi nhé thanks :)

nghichtu91
10-03-13, 01:34 PM
trong script như thế này

sẽ nhận được 1 hòa thị bích khóa giờ muốn thêm 2 vũ khí khóa thì mình add như thế này nhận vẫn dc nhưng gs báo lõi


local pItemEx = me.AddItem(18,1,356,1).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
local pItemEx = me.AddItem(2,1,1292,10).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
local pItemEx = me.AddItem(2,1,1292,10).Bind(1); --Vật phẩm nhận được sau khi đổi 10 ngoi sao
if pItemEx then
pItemEx.Bind(1);

bạn nào rành cho mình hỏi add như thế nào để dc thêm trang bị khóa mà gs ko báo lõi nhé thanks :)
lỗi thứ nhất không nên gán lệnh giống nhau pItemEx = me.AddItem(xxx) ,pItemEx = me.AddItem
nếu muốn dùng kiểu như thế thi khai báo như thế này
local pItemEx =
{
{18,1,356,1}, --1
{18,1,356,1},--2
{18,1,356,1},--3
}

khi goi no ra thì nhu me.AddItem(unpak(pItemEx[1])).Bind(1);

và trong kiêm thế ko nên dùng vong lập for ......................

lyvanbethao
10-03-13, 04:06 PM
lỗi thứ nhất không nên gán lệnh giống nhau pItemEx = me.AddItem(xxx) ,pItemEx = me.AddItem
nếu muốn dùng kiểu như thế thi khai báo như thế này
local pItemEx =
{
{18,1,356,1}, --1
{18,1,356,1},--2
{18,1,356,1},--3
};

khi goi no ra thì nhu me.AddItem(unpak(pItemEx[1])).Bind(1);

và trong kiêm thế ko nên dùng vong lập for ......................

sữa lại như thế này thì đổi mất nguyên liệu nhưng ko nhận dc gì gs báo lõi

for i = 1, #tbItemObj do
local pItem = tbItemObj[i][1];
pItem.Delete(me);
end

local pItemEx =
{
{18,1,356,1}, --1
{18,1,356,1},--2
{18,1,356,1},--3
};
if pItemEx then
me.AddItem(unpak(pItemEx[1])).Bind(1);


sai chổ nào vậy :)

nghichtu91
10-03-13, 04:19 PM
sữa lại như thế này thì đổi mất nguyên liệu nhưng ko nhận dc gì gs báo lõi

for i = 1, #tbItemObj do
local pItem = tbItemObj[i][1];
pItem.Delete(me);
end

local pItemEx =
{
{18,1,356,1}, --1
{18,1,356,1},--2
{18,1,356,1},--3
};
if pItemEx then
me.AddItem(unpak(pItemEx[1])).Bind(1);


sai chổ nào vậy :)
if pItemEx then :-? dk là gì

đã cảnh báo script ko nên dùng vòng lập for mà cứ dùng .....

lyvanbethao
10-03-13, 04:32 PM
vậy thì làm thế nào để nhận thêm vật phẩm khóa trên cái script của em vậy em ko rành nhiều về script help!

nghichtu91
10-03-13, 05:00 PM
vậy thì làm thế nào để nhận thêm vật phẩm khóa trên cái script của em vậy em ko rành nhiều về script help!

bác không xác định được script viết về cái gì, và làm gì ... ko biết cách sử dụng hàm .. hàm nào nên dùng , hàm nào ko nên dùng ..

lyvanbethao
10-03-13, 07:43 PM
co ai giúp ko :((............................................... ...........................

__Jie__
10-03-13, 09:20 PM
Đơn giản nhất là không dùng local pItemEx nữa
Mà viết thẳng hàm Add hoặc đổi local pItem = or pItem1 =
rồi đùng
if pItem then
pItem.Bind(1);
end
là nó khóa thôi 8->