PDA

View Full Version : [KT] Xin hàm lấy giá trị số do nhân vật nhập vào.



mr.rain
24-06-13, 12:49 PM
Mình cần để add vào event, chọn số lượng muốn ghép. Bạn nào có cho mình xin, thấy ở đâu thank ở đó ;)

tkv003
24-06-13, 02:12 PM
Mình cần để add vào event, chọn số lượng muốn ghép. Bạn nào có cho mình xin, thấy ở đâu thank ở đó ;)

Bạn có thể làm như thế này :

function abc:NumberInput()
Dialog:AskNumber("Nhập số lượng muốn ghép: ", self.GhepEvent, self);
end
function abc:GhepEvent(nSLuong)
-- nSLuong : số lượng muốn ghép event
...
end

mr.rain
24-06-13, 11:39 PM
Bạn xem lại dùm mình chút, chứ mình làm như bạn thì code không chạy, hix



function tbnpc:ghephoahong()
Dialog:AskNumber("Nhập số lượng muốn ghép: ", self.mhoahong, self);
end

function tbnpc:mhoahong(nSoLuong)
if me.CountFreeBagCell() < 1 then
Dialog:Say("Túi không đủ chỗ, chừa 1 ô rồi gia công lại.");
return 0;
end

local nMyMoney = me.nCashMoney;
local nCount1 = me.GetItemCountInBags(18, 1, 2548, 1);
local tbItemId1 = {18, 1, 2548, 1, 0, 0};

if nCount1 < nSoLuong then
Dialog:Say("Ngươi không đem đủ <color=green>Hoa Hồng<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

if nMyMoney <= nSoLuong*100000 then
Dialog:Say("Ngươi không đem đủ <color=yellow>nSoLuong*10 vạn<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

me.CostMoney(nSoLuong*100000, 0);
Task:DelItem(me, tbItemId1, nSoluong);
me.AddStackItem(18, 1, 2609, 1, nil, nSoLuong);
end

na.ilusm89
25-06-13, 12:03 AM
Bạn xem lại dùm mình chút, chứ mình làm như bạn thì code không chạy, hix



function tbnpc:ghephoahong()
Dialog:AskNumber("Nhập số lượng muốn ghép: ", self.mhoahong, self);
end

function tbnpc:mhoahong(nSoLuong)
if me.CountFreeBagCell() < 1 then
Dialog:Say("Túi không đủ chỗ, chừa 1 ô rồi gia công lại.");
return 0;
end

local nMyMoney = me.nCashMoney;
local nCount1 = me.GetItemCountInBags(18, 1, 2548, 1);
local tbItemId1 = {18, 1, 2548, 1, 0, 0};

if nCount1 < nSoLuong then
Dialog:Say("Ngươi không đem đủ <color=green>Hoa Hồng<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

if nMyMoney <= nSoLuong*100000 then
Dialog:Say("Ngươi không đem đủ <color=yellow>nSoLuong*10 vạn<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

me.CostMoney(nSoLuong*100000, 0);
Task:DelItem(me, tbItemId1, nSoluong);
me.AddStackItem(18, 1, 2609, 1, nil, nSoLuong);
end



Thử Ngâm Cứu hàm này xem cậu


function tbnpc:ghephoahong()
local nDong = me.nCoin;
if me.CountFreeBagCell() < 5 then
me.Msg("Hành trang không đủ chỗ trống. Hãy sắp xếp còn trống 5 ô rồi quay lại gặp ta!");
return 0;
end
local tbItemId2 = {18,1,2548,1,0,0};
local nCount2 = me.GetItemCountInBags(18,1,2548,1);
if nCount2 < 10 then
Dialog:Say("Bạn không có đủ Hoa Hồng Hoặc Tiền Xin Hãy Xem Xét lại rồi đến gặp ta.");
return 0;
end
else
Task:DelItem(me, tbItemId2, 10);
--me.AddJbCoin(- 2000000);
me.AddStackItem(1,12,2609,1,nil,1);
end
end

mr.rain
25-06-13, 12:10 AM
Thử Ngâm Cứu hàm này xem cậu


function tbnpc:ghephoahong()
local nDong = me.nCoin;
if me.CountFreeBagCell() < 5 then
me.Msg("Hành trang không đủ chỗ trống. Hãy sắp xếp còn trống 5 ô rồi quay lại gặp ta!");
return 0;
end
local tbItemId2 = {18,1,2548,1,0,0};
local nCount2 = me.GetItemCountInBags(18,1,2548,1);
if nCount2 < 10 then
Dialog:Say("Bạn không có đủ Hoa Hồng Hoặc Tiền Xin Hãy Xem Xét lại rồi đến gặp ta.");
return 0;
end
else
Task:DelItem(me, tbItemId2, 10);
--me.AddJbCoin(- 2000000);
me.AddStackItem(1,12,2609,1,nil,1);
end
end

nếu mà là hàm này thì số lượng cố định rồi cậu à, ví dụ mình muốn nó đổi 1, 10, 100 lại phải viết 3 đoạn khác nhau. Cái này thì code mình đang sử dụng nhưng vì muốn đơn giản hóa và code gọn hơn nên mình mới hỏi.

Cảm ơn bạn đã trả lời !

satthupro95
25-06-13, 12:53 AM
Bạn xem lại dùm mình chút, chứ mình làm như bạn thì code không chạy, hix



function tbnpc:ghephoahong()
Dialog:AskNumber("Nhập số lượng muốn ghép: ", self.mhoahong, self);
end

function tbnpc:mhoahong(nSoLuong)
if me.CountFreeBagCell() < 1 then
Dialog:Say("Túi không đủ chỗ, chừa 1 ô rồi gia công lại.");
return 0;
end

local nMyMoney = me.nCashMoney;
local nCount1 = me.GetItemCountInBags(18, 1, 2548, 1);
local tbItemId1 = {18, 1, 2548, 1, 0, 0};

if nCount1 < nSoLuong then
Dialog:Say("Ngươi không đem đủ <color=green>Hoa Hồng<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

if nMyMoney <= nSoLuong*100000 then
Dialog:Say("Ngươi không đem đủ <color=yellow>nSoLuong*10 vạn<color>, hãy thu xếp rồi quay lại gặp ta!");
return 0;
end

me.CostMoney(nSoLuong*100000, 0);
Task:DelItem(me, tbItemId1, nSoluong);
me.AddStackItem(18, 1, 2609, 1, nil, nSoLuong);
end



Cái này bị lỗi chỗ
<color=yellow>nSoLuong*10 vạn<color>
Vì nSoLuong là 1 giá trị nên bắt buộc bạn phải đưa vào ".. nSoLuong*10 .." Vạn

Lưu ý khi sử dụng hàm này là item của bạn phải biết item nó xếp chồng bao nhiêu cái 1 ô
Ví dụ đồ của bạn xếp chồng 100 cái 1 ô , khi bạn kiểm tra ô trống > 1 thì thực thi hàm tiếp theo . Nếu member gia công 300 cái tức là 3 ô mà member chỉ có 2 ô thì nó vẫn add đồ vào nhé ^^ .
Hãy cho tối đa cái giá trị nhập vào nSoLuong < Số Item có thể xếp chồng/1 ô
Nếu Item xếp 1 cái 1 ô thì check < 1 là được r`

mr.rain
25-06-13, 01:25 AM
Cái này bị lỗi chỗ
<color=yellow>nSoLuong*10 vạn<color>
Vì nSoLuong là 1 giá trị nên bắt buộc bạn phải đưa vào ".. nSoLuong*10 .." Vạn

Lưu ý khi sử dụng hàm này là item của bạn phải biết item nó xếp chồng bao nhiêu cái 1 ô
Ví dụ đồ của bạn xếp chồng 100 cái 1 ô , khi bạn kiểm tra ô trống > 1 thì thực thi hàm tiếp theo . Nếu member gia công 300 cái tức là 3 ô mà member chỉ có 2 ô thì nó vẫn add đồ vào nhé ^^ .
Hãy cho tối đa cái giá trị nhập vào nSoLuong < Số Item có thể xếp chồng/1 ô
Nếu Item xếp 1 cái 1 ô thì check < 1 là được r`

Ừm mình hỏi lại cái đoạn 2 chút xíu bạn satthu95:

Như bạn nói thì có phải mình thêm vào 1 điều kiện:


if nSoluong >= 100 then
Dialog: Say("Vui lòng chọn số lượng ít hơn 100");
return 0;
end

Đồ của mình tất cả đều xếp chồng 100 vì vậy mình sửa lại chỗ check thế này:


if me.CountFreeBagCell() < nSoluong/100 then
Dialog:Say("Túi không đủ chỗ, chừa "..nSoluong/100.." ô rồi gia công lại.");
return 0;
end

và có hàm nào để làm tròn và lấy số nguyên cao hơn 1 đơn vị về theo chiều dương không bạn nhỉ

Ví dụ:
tenham(nSoluong/100);-- khi số lượng người chơi nhập vào 76 chẳng hạn thì nó sẽ lên 1, còn nhập 150 thì nó lên 2.

Hoặc là giải pháp của mình thế này bạn thấy được ko nhé :D



local kiemtraotrong = nSoluong/100+1;
if me.CountFreeBagCell() < kiemtraotrong then
Dialog:Say("Túi không đủ chỗ, chừa đủ ô rồi gia công lại.");
return 0;
end



Cảm ơn bạn !

satthupro95
25-06-13, 02:24 AM
Ừm mình hỏi lại cái đoạn 2 chút xíu bạn satthu95:

Như bạn nói thì có phải mình thêm vào 1 điều kiện:


if nSoluong >= 100 then
Dialog: Say("Vui lòng chọn số lượng ít hơn 100");
return 0;
end

Đồ của mình tất cả đều xếp chồng 100 vì vậy mình sửa lại chỗ check thế này:


if me.CountFreeBagCell() < nSoluong/100 then
Dialog:Say("Túi không đủ chỗ, chừa "..nSoluong/100.." ô rồi gia công lại.");
return 0;
end

và có hàm nào để làm tròn và lấy số nguyên cao hơn 1 đơn vị về theo chiều dương không bạn nhỉ

Ví dụ:
tenham(nSoluong/100);-- khi số lượng người chơi nhập vào 76 chẳng hạn thì nó sẽ lên 1, còn nhập 150 thì nó lên 2.

Hoặc là giải pháp của mình thế này bạn thấy được ko nhé :D



local kiemtraotrong = nSoluong/100+1;
if me.CountFreeBagCell() < kiemtraotrong then
Dialog:Say("Túi không đủ chỗ, chừa đủ ô rồi gia công lại.");
return 0;
end



Cảm ơn bạn !

Thứ 1:
Đừng nên làm vậy thử cách của mình , ví dụ vật phẩm khi Gia Công Xong xếp chồng 100 vật phẩm/1 ô
Bạn nên cho tối đa mỗi lần gia công < 100
Hàm lấy nguyên khi chia là hàm math.floor(5/2) = 2

Thứ 2:
"..nSoluong/100.." sẽ lỗi phải là ".. nSoluong/100 .."

Thứ 3:
Kiểm tra thêm item cần sử dụng < 1 thì không cho đặt vào nhé

linhpl2001
25-06-13, 06:49 AM
Mình cần để add vào event, chọn số lượng muốn ghép. Bạn nào có cho mình xin, thấy ở đâu thank ở đó ;)

hôm qua script tui đưa cậu có check sẵn mà sao ko hỏi tui 8-}