Kết quả 1 đến 2 của 2
-
22-06-15, 03:59 PM #1
- Ngày tham gia
- Jan 2015
- Bài viết
- 103
- Thanks
- 18
- Thanked 11 Times in 11 Posts
Xin giúp đỡ Gọi tên Nhân vật và thực hiện lệnh trên nhân vật đó
Hiện tại mình đang viết thẻ GM cho Jxlinux nhưng mình gặp vướng mắc ở Đoạn .lua này và thực hiện lệnh trên ID của nhân vật được chọn , Mong bạn nào giải giúp mình xíu với ạ !!
function one()
n=GetTask(8000)
if ((n*10+1)>GetPlayerCount()) then
Msg2Player("Kh«ng cã nh©n vËt nµy xin kiÔm tra l¹i.");
else
SetTask(8000,n*10+1)
gmName=GetName()
gmidx=PlayerIndex
PlayerIndex=GetTask(8000)
PlayerIndex=gmidx
Msg2Player("Tªn ngêi ch¬i: "..gmName.."");
Say(wel1, 10, it, sk, mov, kic, inv, bufftp, exppp, buffskills, cscs, can);
end
end;
Chỗ mình bôi đỏ ấy .
Mình có dùng code GM của sv jx win như sau :
function one()
n=GetTask(8000)
if ((n*10+3)>GetPlayerCount()) then
Msg2Player("Kh«ng cã nh©n vËt nµy xin kiÔm tra l¹i.");
else
SetTask(8000,n*10+3)
gmName=GetName()
gmidx=PlayerIndex
PlayerIndex=GetTask(8000)
ObjName=GetName()
PlayerIndex=gmidx
Msg2Player("Tªn ngêi ch¬i: "..ObjName.."");
if GetName() == "GameMaster" then
Say(wel1, 10, it, sk, mov, kic, inv, bufftp, exppp, buffskills, cscs, can);
elseif GetName() == "GameMaster2" then
Say(wel1, 7, it, sk, mov, kic, bufftp, inv, can);
else
Say(wel1, 6, it, sk, mov, kic, inv, can);
end
end
end;
Nếu dùng như code jx win nó bị lỗi chỗ ObjName .
mình cần gọi đúng tên nhân vật theo ID mình chọn. nhưng mà chưa thực hiện dc mong mọi người giúp đỡ .Khách viếng thăm hãy cùng Slayer xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
22-06-15, 05:58 PM #2
Ðề: Xin giúp đỡ Gọi tên Nhân vật và thực hiện lệnh trên nhân vật đó
ý bạn là thực hiện lệnh cho người chơi đúng không
(n*10) + x = id người mình chọn
n: giá trị lưu vị trí chọn hàng chục : 0-9 dc lưu trong Task 8000 -- nên lưu dạng TaskTemp
x: giá trị lưu vị trí chọn hàng đơn vị :0-9
ví dụ chọn người chơi có ID = 52 thì n = 5 và x = 2 --những giá trị này có dc khi mình chọn trong menu
theo mình thì có thể ntn:
khi chọn member có ID = 1 sẽ chạy hàm one() này.. Task 8000 lưu tạm id của người cần thực hiện lệnh. lần đầu thấy cái task 8k
ở đây code xài hàm GetPlayerCount() không ổn cho lắm lý do: hàm này sẽ trả về số người chơi đang online, không phải trả về giá trị ID người chơi lớn nhất.
vì thế nếu if ((n*10+1)>GetPlayerCount()) sẽ có lúc không check dc.
--login acc 1 => id sẻ là 1, GetPlayerCount() = 1
--login acc 2 => id sẻ là 2, GetPlayerCount() = 2
bây giờ out acc 1 ra dùng acc 2 check => thì id:2 và GetPlayerCount() = 1
vậy nếu ta muốn thực hiện lênh cho acc 2 thì n=0,x=2 if ((n*10+2)>GetPlayerCount()) luôn luôn đúng => Msg2Player("Kh«ng cã nh©n vËt nµy xin kiÔm tra l¹i.");
mặc dù acc 2 vẫn đang online, coi như sống ngoài vòng pháp luật
mình sẽ tạm làm như sau
function one()
local n = GetTaskTemp(8000) ---lấy giá trị hàng chục dc lưu trong task
.......local gmidx = PlayerIndex --- lưu ID của bản thân lại
........PlayerIndex = n*10+1 ----chuyển Index qua người chơi
.......gmName=GetName() -- lấy tên
.......PlayerIndex=gmidx ---chuyển Index về lại bản thân
if gmName ~= "" then
.......Msg2Player("Tªn ngêi ch¬i: "..gmName..""); lên TV cho admin
Say(wel1, 10, it, sk, mov, kic, inv, bufftp, exppp, buffskills, cscs, can);
else
.......Msg2Player("Kh«ng cã nh©n vËt nµy xin kiÔm tra l¹i.");
end
end;Lần sửa cuối bởi tinhhack, ngày 22-06-15 lúc 06:13 PM.
Khách viếng thăm hãy cùng tinhhack xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!