Topic hỏi đáp về cách làm map | version 11

Status
Không mở trả lời sau này.
Ai chỉ mình hay cho mình xin cái Demo dạng skill
Cứ 0.50 giây
Create 8 dummy vòng tròn từ trên cao ( Fly ấy ) rồi đám Dummy này từ từ hạ dần xuống đất ( mà cái hướng đầu nó cũng chuối xuống đất )
P.S: 1 dạng giống như skill Volcano của Firelord ( có sẵn của war ) nhưng mình muốn làm = GUI, mấy cục đá lửa là những con Dummy, đại loại thế, thanks trước

Ai có dạng tường này cho mình xin và chỉ mình cách import luôn, cần gấp gấp :| Kiểu của Loarderon Summer
1ba15794a4f6326e6cc0aaa0ff8eb9f1_35654847.v2.jpg
 
Chỉnh sửa cuối:
Thực sự không biết nguyên nhân gì làm cho việc load map trở nên nặng nề , có bạn nào biết cho mình xin vài lý do để biết khắc phục.

Tuy sử dụng toàn code JASS và Trigger không nhìu lắm. Variable cũng không nhiều vì sử dụng JASS chủ yếu.. vậy mà quá trình load maps lại diễn ra khá ì ạch..
Giúp mình câu hỏi này nha.

không biết phải do mỗi Spell mình tạo mình đều đặt vào 1 Scope .. nhiều quá nên load lâu?
hay sao? Có lý do khác chăn?
 
WE nó báo đã max trees/destructibles,mình xây thêm vượt quá mức đó liệu có bị gì không hả mọi người ? :|
Save map thì nó không cho...

6-4.jpg
 
Mình có một Hero đã được chỉnh lại các thông số để nó có thể bay như các unit fly, nhưng không hiểu tại sao khi dùng skill wind walk thì chỉ đi như bình thường và không vượt sông, vượt núi được, có pro nào có thể giúp mình cho nó bay được không?
 
Nguyên nhân gì khiến cho việc LoadMap trở nên nặng nề?

Thực sự không biết nguyên nhân gì làm cho việc load map trở nên nặng nề , có bạn nào biết cho mình xin vài lý do để biết khắc phục.

Tuy sử dụng toàn code JASS và Trigger không nhìu lắm. Variable cũng không nhiều vì sử dụng JASS chủ yếu.. vậy mà quá trình load maps lại diễn ra khá ì ạch..
Giúp mình câu hỏi này nha.

không biết phải do mỗi Spell mình tạo mình đều đặt vào 1 Scope .. nhiều quá nên load lâu?
hay sao? Có lý do khác chăn?

Chắc xài trigger map initialization hoặc Time Elapsed nhiều.Map đặt object quá nhiều ( doodad,unit v.v... ).Muốn load cực nhanh thì xài Widgetizer193 là số một ( khó sử dụng,nguy cơ bị lỗi hoặc không xài đc cho map ! Be Careful )
 
Bonus cho ae cái map mình làm dở, có một số skill dạng loop, cứ tham khảo, à mà cũng có chiêu omnislash của cậu nhưng mà là active, nếu muốn passive thì chuyển events là unit learn a skill, dk là random interger from 1 to 100 less than or equal to bao nhiêu % tùy cậu rồi lấy cái trig của tớ vào sửa tí thôi...
Link: http://www.mediafire.com/?2gnxti7z3ftl8ml
Tks nhưng cái Omnislash minh` cần là chỉ tập trung xoẹt một target duy nhất thôi
 
[spoil]
PHP:
private function Stop takes nothing returns boolean
local unit caster = GetSpellAbilityUnit()
local integer array Buff
local integer tick
set Buff[0] = 'BSTN'
set Buff[1] = 'BPSE'
set Buff[2] = 'Bena'
set Buff[3] = 'Bens'
set Buff[4] = 'Beng'
set Buff[5] = 'BEer'
set Buff[6] = 'BUsl'
set Buff[7] = 'BUsp'
set Buff[8] = 'BUst'
set Buff[9] = 'BNsi'
set Buff[10] = 'BUsp'
set Buff[11] = 'BOhx'
set Buff[12] = 'BUim'
set Buff[13] = 'Bcrs'
set Buff[14] = 'BNso'


                set tick = 0
                   loop
                        exitwhen tick >14
                        
                        if UnitHasBuffBJ(caster,Buff[tick]) ==true then
                            return false
                            else
                            return true
                        endif
                        set tick=tick+1
                    endloop
                   
    return false
   
endfunction
PHP:
private function action ....

if Stop()==true then
// hành động


endif

endfunction
[/spoil]

Cho mình hỏi sao đoạn script này nó không xảy ra.
Chả là mình có ý định check buff. nếu có buff thì action không xảy ra.. do nhìu buff nên gom nó vào 1 function như trên.. nhưng sau khi gom vào thì không có tác dụng nữa.. có ai giải thích cách làm dùm mình với.

1/ Bạn ko thể khởi tạo biến array trong function (tức là biến local đó)
2/ Tại sao bạn lại phải lặp đi lặp lại quá trình thiết lập biến array Buff mỗi lần dùng function mà ko tạo sẵn 1 lần để dùng mãi mãi
3/ Tại sao bạn lại post câu hỏi về jass trong topic GUI to Jass? (đây ko phải lần đầu)

---------- Post added at 22:47 ---------- Previous post was at 22:34 ----------

Cái phần kiểm tra xem có buff hay không đấy, ý bạn là muốn xem Hero có những buff đó thì ko thực hiện Action, làm như trên thì chỉ xét được cái buff đầu tiên trong mảng rùi trả về true or false...mấy cái sau thì không được xét rồi...

Chỉ cần bỏ cái else return true đi, rùi cuối hàm return true là ok

Sửa lại là rùi "cuối hàm return false là ok"
P/S: Mấy cậu thiệt là ... sao toàn nhầm topic à :-ss
Thứ nữa là về cách của Kulka là tối giản cách của mvcthinh ko sai và cũng ko chậm hơn cái kia là bao nhiêu nhưng vote cho cái của Kulka :D
 
1/ Bạn ko thể khởi tạo biến array trong function (tức là biến local đó)
2/ Tại sao bạn lại phải lặp đi lặp lại quá trình thiết lập biến array Buff mỗi lần dùng function mà ko tạo sẵn 1 lần để dùng mãi mãi
3/ Tại sao bạn lại post câu hỏi về jass trong topic GUI to Jass? (đây ko phải lần đầu)

---------- Post added at 22:47 ---------- Previous post was at 22:34 ----------



Sửa lại là rùi "cuối hàm return false là ok"
P/S: Mấy cậu thiệt là ... sao toàn nhầm topic à :-ss
Thứ nữa là về cách của Kulka là tối giản cách của mvcthinh ko sai và cũng ko chậm hơn cái kia là bao nhiêu nhưng vote cho cái của Kulka :D

1. Jass Manual nó có ghi array có thể dùng trong function mà???!!?? Với lại lúc save cũng ko báo lỗi nên mình nghĩ nó xài dc :D
2. Ok thanks bạn.. sẽ xem xét. :)
3. Nó liên quan đến JASS thì mình Post vào.. mục đích của topic đó là như vậy mà.. với lại cũng đâu có ai cấm không được hỏi về JASS ở topic GUI to JASS.. vì mục đích đều là học JASS cả!!

@KuKulKan: thử cách cậu rồi nhưng không được! :|
 
Chỉnh sửa cuối:
Sửa lại là rùi "cuối hàm return false là ok"
P/S: Mấy cậu thiệt là ... sao toàn nhầm topic à :-ss
Thứ nữa là về cách của Kulka là tối giản cách của mvcthinh ko sai và cũng ko chậm hơn cái kia là bao nhiêu nhưng vote cho cái của Kulka :D

cuối hàm return false nốt thì tất cả là false à =))

mvcthinh không sai chỗ nào cơ?
 
Khà khà chưa nhìn kỹ cách của kulka và cả của mvcthinh :"> Thế nên SR cả 3 người (cả anh Tom)

Trước hết là bạn mvcthinh sai là khởi tạo array trong function tức dùng biến local
Mã:
[COLOR="#FF0000"]local [/COLOR]integer [COLOR="#FF0000"]array[/COLOR] Buff
Còn cách kiểm tra ko sai
PHP:
 if UnitHasBuffBJ(caster,Buff[tick]) ==true then
     return false
 else
     return true
 endif

Tối ưu hóa thì như bạn KulKan đã nói
 
Chỉnh sửa cuối:
cách kiểm tra trên có sai, Kan nói vậy còn không rõ à?

nếu viết cái vòng lặp ra thì nó sẽ thế này:
Mã:
 if UnitHasBuffBJ(caster,Buff[0]) ==true then
     return false
 else
     [COLOR="#FF0000"]return true //không có Buff[0][/COLOR]
 endif
 if UnitHasBuffBJ(caster,Buff[1]) ==true then
     return false
 else
     return true //không có Buff[1]
 endif  
//...

đã nhìn ra chưa? nếu không có cái Buff[0] thì chả phải là sẽ return true luôn và các lệnh sau đó sẽ không được chạy (cụ thể là cái loop)
và vì vậy chỉ kiểm tra một cái buff đầu tiên, đúng không? vậy là sai hay đúng?
 
Mình có một Hero đã được chỉnh lại các thông số để nó có thể bay như các unit fly, nhưng không hiểu tại sao khi dùng skill wind walk thì chỉ đi như bình thường và không vượt sông, vượt núi được, có pro nào có thể giúp mình cho nó bay được không?

hỏi lại lần 2................................pro nào giúp mình đi
 
if UnitHasBuffBJ(caster,Buff[tick]) ==true then
return false
else
return true
endif

PHP:
if UnitHasBuffBJ(caster,Buff[tick]) ==true then
     return false
 endif  
set tick = tick + 1
 endloop
return true
endfunction

thế này có loop không ?
 
PHP:
if UnitHasBuffBJ(caster,Buff[tick]) ==true then
     return false
 endif  
set tick = tick + 1
 endloop
return true
endfunction

thế này có loop không ?

đây là cách Kan nói còn gì? :-/
 
lần sau code phải thụt vào đầu dòng cho chuẩn nhé 8-|

PHP:
private function Stop takes nothing returns boolean
	local unit caster = GetSpellAbilityUnit()
	local integer array Buff
	local integer i  //tick -> i, với vòng lặp thì cần gì đặt tên dài? nhg cái này tùy thôi, thấy cách nào "quen" hơn thì theo
	set Buff[0] = 'BSTN'
	set Buff[1] = 'BPSE'
	set Buff[2] = 'Bena'
	set Buff[3] = 'Bens'
	set Buff[4] = 'Beng'
	set Buff[5] = 'BEer'
	set Buff[6] = 'BUsl'
	set Buff[7] = 'BUsp'
	set Buff[8] = 'BUst'
	set Buff[9] = 'BNsi'
	set Buff[10] = 'BUsp'
	set Buff[11] = 'BOhx'
	set Buff[12] = 'BUim'
	set Buff[13] = 'Bcrs'
	set Buff[14] = 'BNso'

	set i = 0
	loop
		exitwhen i >14
		if GetUnitAbilityLevel(caster,Buff[i])>0 then
		    return false
		endif
		set i=i+1
	endloop
                   
    return true
endfunction

sử dụng GetUnitAbilityLevel thay cho UnitHasBuffBJ, vì:
PHP:
function UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean
    return (GetUnitAbilityLevel(whichUnit, buffcode) > 0)
endfunction
 
lần sau code phải thụt vào đầu dòng cho chuẩn nhé 8-|

PHP:
sử dụng [B]GetUnitAbilityLevel[/B] thay cho [B]UnitHasBuffBJ[/B], vì:
[PHP]
function UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean
    return (GetUnitAbilityLevel(whichUnit, buffcode) > 0)
endfunction

ở cái phần thứ 2 này dùng để làm gì vậy anh?
Em check Buff này không phải là check buff trong Spell mà muốn check buff trong Loop.

Tức là e để riêng function đó ra..

sau đó cho chạy loop ở trong một function khác.
VD:
PHP:
        function Action takes nothing returns nothing
            // thiết lập biến
         call PauseUnit(true)
                  loop A>100 //chẳng hạn
                       if Stop() == true then
                               //thực hiện hành động
                                 // Trong hành động có TriggerSleepAction(0.3) để nó chạy từ từ chứ không phải là chạy 1 lần là xong.
                       endif
                      set A=A+1
                  endloop
 call PauseUnit(false)

nghĩa là cứ sau mỗi một lần lập em muốn nó kiểm tra xem bọ bị dính buff hay không, nếu đang trong quá trình cast spell mà dính buff đó thì sẽ ngưng spell lại.
Nhưng làm mãi mà nó cũng không được. Em cũng thử cách như trên anh đưa nhưng mà không nốt luôn.. nó cứ đứng đấy cast xong skill tới khi xong mới ngừng.
 
Chỉnh sửa cuối:
Status
Không mở trả lời sau này.
Back
Top