PDA

View Full Version : Các bạn sửa script này giúp mình



f-fantasy
26-07-11, 10:11 AM
Do chơi off nên việc rớt nhiều thuỷ tinh với tinh hồng mình nảy ý định cho tiền trang cất trữ các viên thuỷ tinh và tinh hồng, mình sử dụng SetTask để lưu giữ số lượng thuỷ tinh mình gửi vào tiền trang rồi nếu lôi ra là GetTask, mình đã viết code nó có làm việc, nhưng có 1 lỗi mình ko hiểu xảy ra là ban đầu mình gửi 1 vien tiền trang báo có 1 viên rồi nhưng chờ 1 lúc (chờ 1 lúc trong game chẳng làm gì cả) xem lại thì tièn trang lại báo mình có 0 viên, ý mình ở đây là mình nghĩ có cái SetTask nào đó trùng với cái Task của mình và hàm thời gian khiến nó tự set về không hoặc mình code sai chỗ nào đó vì mình đặt SetTask(200,1) lận cơ mà sao lại có Task trùng được

Mình xài script của TSBD 0.3 và chỉnh sửa edit trên hút hít

Mình attach tạm cái file tiền trang lên bạn nào đọc giúp mình xem mình lỗi chỗ nào nhé, mới chỉ có tạm chức năng gửi Tử Thuỷ Tinh và chưa có gì hết nhưng vì nó bị lỗi mình chịu ko hiểu nổi, vốn ko có kiến thức về code nhiêu nên sợ bản thân sai mà ko biết đành nhờ các bạn.

Quên mất tiện thể hỏi các bạn vấn đề này luôn, giả dụ mình tạo ra cái Task ID mới ví dụ là 200 đi thì ban đầu khi chưa có bất kì cái gì tác động (SetTask ấy) thì giá trị của nó là bao nhiêu, có phải là 0 không (Tức là nếu mình xài GetTask(200) thì lúc đó giá trị trả về là bao nhiêu ) còn GetTask~=nil nữa có nghĩa là nó khác giá trị gì (Mình ko hiểu giá trị nil)

Và tiện thể bạn nào trả lời giúp mình cái code GetUUID() với PlayerIndex nó lấy thông số gì từ game vậy?

Cám ơn các bạn trước!

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

davidtuan25
26-07-11, 02:39 PM
Anh nói khó hỉu wá :P , PlayerIndex hình như là kiểm tra số member đang đứng trên maps
>> Quên mất tiện thể hỏi các bạn vấn đề này luôn, giả dụ mình tạo ra cái Task ID mới ví dụ là 200 đi thì ban đầu khi chưa có bất kì cái gì tác động (SetTask ấy) thì giá trị của nó là bao nhiêu, có phải là 0 không (Tức là nếu mình xài GetTask(200) thì lúc đó giá trị trả về là bao nhiêu ) còn GetTask~=nil nữa có nghĩa là nó khác giá trị gì (Mình ko hiểu giá trị nil) <<
Cái này là nếu chưa SetTask thì kiểm tra nó sẽ = 0 , Nếu anh SetTask(200,1) thì GetTask(200) sẽ = 1 ^^! Bik nhiu thôi mấy câu trên đọc ko hỉu

f-fantasy
26-07-11, 02:52 PM
Uh mình cũng biết là hơi khó hiểu, mình cũng khó diễn đạt cái đoạn đó, đại loại mình muốn viết 1 nhiệm vụ mới và dự định sử dụng Task 90 cho nó. Rồi bây giờ ở cái NPC giao nhiệm vụ mình muốn nó sẽ kiểm tra xem nhân vật của mình đã nhận nhiệm vụ chưa. Đại loại nó thế này


function main()
if GetTask(90) == 0 then
Say("Ban chua nhan Q muon nhan Q ko",2,"Co/yes","Thoat/Exit")
elseif GetTask(90) == 1 then
Talk(1,"","Nhan Q roi còn bon chen vào đây làm gì")
end
end

function yes()
SetTask(90,1)
end


Đấy bây giờ 1 nhân vật mình mới tạo mới toanh thì cái giá trị Task 90 kia của nhân vật đó là bao nhiêu có phải là 0 không, vì nếu nhân vật mới toanh của mình mà Task có ID 90 ấy nó không phải là 0 thì khi nói chuyện với NPC nó ko hiện lên cái dòng nhận Q. Và mình muốn hỏi nhân vật mới toanh đó với cái Task 90 sẽ có giá trị mặc định là bao nhiêu. Và vì mình không hiểu giá trị NIL có nghĩa là gì nên thấy thắc mắc muốn hỏi các bạn

Tiện thể đây mình cũng xin thắc mắc tiếp về script, khi mình viết script cho 1 NPC thường thì trong hàm Say hoặc SayEx các câu thoại khá là dài và mình còn chèn thêm vài cái code color=.....thì cái lúc chạy gameserver vào click vào npc đó chọn cái chức năng mà có câu Say dài kèm code color gameserver hiện cái thông báo đại loại "Exception Have Caught When Execute Script[Một dãy số dài]!!!!!!!"
Và nếu như mình cứ cố đấm ăn xôi nhấn vào NPC này thì vài 3 lần là coi như tèo khỏi đối thoại với nó lun. Lỗi này có nghĩa là gì có phải tại hàm Say quá dài, và cách khắc phục như thế nào

SaoThaiBinh72
26-07-11, 02:55 PM
Em vô mục Global tìm file tasklish.lua xem có task nào là 90 không.

SaoThaiBinh72
26-07-11, 02:58 PM
Tiện thể đây mình cũng xin thắc mắc tiếp về script, khi mình viết script cho 1 NPC thường thì trong hàm Say hoặc SayEx các câu thoại khá là dài và mình còn chèn thêm vài cái code color=.....thì cái lúc chạy gameserver vào click vào npc đó chọn cái chức năng mà có câu Say dài kèm code color gameserver hiện cái thông báo đại loại "Exception Have Caught When Execute Script[Một dãy số dài]!!!!!!!"
Và nếu như mình cứ cố đấm ăn xôi nhấn vào NPC này thì vài 3 lần là coi như tèo khỏi đối thoại với nó lun. Lỗi này có nghĩa là gì có phải tại hàm Say quá dài, và cách khắc phục như thế nào

Đúng là nó quá dài, cách khắc phục thì viết ngắn đi là được.

f-fantasy
26-07-11, 03:13 PM
Cái đó em chỉ ví dụ để hỏi về cái giá trị mặc định của Task khi chưa được kích hoạt thôi mà chứ em xem file tasklist rồi. Nhưng có vẻ server ko load các task id quá cao, em đặt task tới 104 mà nó đã chẳng load được buộc phải đặt về từ 99 tới 103, hoặc giả đã có 1 task như thế tồn tại nhưng chưa có mặt trong tasklist nên em chưa thấy, nếu vậy mò toàn bộ script để tìm được task id thì ái a áu

Còn cái câu Say dài thì em xoá mấy cái color đi thì lại được em tưởng đâu nó load cái đó là code chứ có vào câu thoại đâu nhỉ mà dài với ngắn

SaoThaiBinh72
26-07-11, 03:18 PM
Code quá dài sẽ dẫn đến lỗi báo 1 hàng số.
Còn cái task thì có khi sv qua tay 1 số người họ sử dụng nên mình bị trùng.
Mà trong lúc đó em có bị roll back hay gì không? Có thể quyên mà tắt sv hay khởi động gs nên nó trở về 0.

f-fantasy
26-07-11, 03:32 PM
Không roll đâu anh ạ em chạy bình thường mà, cái game server hút hít này em down trong topic kingmax share đấy, mỗi khi chạy thi thoảng nó hiện cái dòng thông báo
"Saving TenNhanVat<1>'s data, size:<xyz>..."
Đó em để ý cứ mỗi lần cái củ chuối ấy nó nhẩy lên là y rằng lúc đó GetTask của em nhẩy về 0 :D. Em nghĩ code thì em con sửa được nhưng mấy cái dính vô gameserver dính vô hex hay C++ thì nói thật em bó tay

Bây giờ em đặt Task nó về từ 99 đến 103 thì nó hoạt động bình thường rồi code của em ko bị lỗi mà lỗi ở cái ID Task kia thôi, nhưng em đang viết Q mà cũng xài đến TaskID 95 mất rồi chả lẽ lại ko set được Task lên cao nữa sao?