XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Может я и туплю но такое вот не работает
» code
void Init () {
    trigger t = CreateTrigger()
    int i = 0
    whilenot (i++ >=12) {
    TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_CHANNEL, null)
    }
    TriggerAddCondition( t, Condition( function Spell_Conditions ) )
    TriggerAddAction( t, function Spell_Actions )
    t = null
}
а такое да
» code
void Init () {
    trigger t = CreateTrigger()
    int i = 0
    whilenot (i >=12) {
    TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_CHANNEL, null)
    i ++
    }
    TriggerAddCondition( t, Condition( function Spell_Conditions ) )
    TriggerAddAction( t, function Spell_Actions )
    t = null
}
Старый 26.09.2009, 23:55
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Чего горюешь, братюня?
function Init takes nothing returns nothing
	local trigger t=CreateTrigger()
	local integer i=0
	loop
		exitwhen (i>=12)
		set i=i+1
		call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_CHANNEL,null)
	endloop
	call TriggerAddCondition(t,Condition(function Spell_Conditions))
	call TriggerAddAction(t, function Spell_Actions)
	set t=null
endfunction
это твой вариант 1
function Init takes nothing returns nothing
	local trigger t=CreateTrigger()
	local integer i=0
	loop
		exitwhen (i>=12)
		call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_CHANNEL,null)
		set i=i+1
	endloop
	call TriggerAddCondition(t,Condition( function Spell_Conditions ))
	call TriggerAddAction(t, function Spell_Actions)
	set t=null
endfunction
а это вариант 2
сам найдёшь, где сфейлил?

» На всякий случай ВНЕЗАПНО разгадка
void Init () {
    trigger t = CreateTrigger()
    int i = 0
    do {
        TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_CHANNEL, null)
    } whilenot (++i >= 12)
    TriggerAddCondition( t, Condition( function Spell_Conditions ) )
    TriggerAddAction( t, function Spell_Actions )
    t = null
}
Старый 27.09.2009, 00:22
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Van_Damm, спасибо, понял свою ошибку )
Старый 27.09.2009, 00:37
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
В следующий раз если что-то работает не так, как должно, сначала прсмотри, как оно скомпилировалось (файл war3map_parsed.j в папке AdicHelper).
Старый 27.09.2009, 00:43
ZeToX2007

offline
Опыт: 7,009
Активность:
немешало бы main в cJass)
void main(){
Тра-ля ля ля
ля ля
ля
}
при компиляции:
function cj__main takes nothing retruns nothing
Тра-ля ля ля
ля ля
ля
endfunction
и где то очено далеко
function main takes nothing retruns nothing
....
call ExecuteFunc("cj__main")
endfunction
Как насчёт этого ?
Старый 27.09.2009, 11:35
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
смысл? у векса есть inject main
Старый 27.09.2009, 12:16
adic3x

offline
Опыт: 108,439
Активность:
и инициализация библиотек?
ADOLF добавил:
a = ++b[GetRandomInt(0,1)] и аналогичные констукции в 1.3.4.25 ведут себя коректно
ADOLF добавил:
не, надо что бы вд как то красиво, торжественно написал)
Старый 27.09.2009, 14:17
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Внезапно Completed full rewrite of assignment and increment/decrement parsing logic. О как
Старый 27.09.2009, 14:24
adic3x

offline
Опыт: 108,439
Активность:
внезапненько пока только, внезапно будет после фикса локалок) т.е. тогда дб вообще awesome
Старый 27.09.2009, 14:39
Зевс
Адская Зверюга
offline
Опыт: 152,154
Активность:
Решил покурить сджасс
scope Test initializer Init
//===========================================================================
void Test_Actions () { // Undefined type void
 unit u=GetDyingUnit()
 integer Id=GetUnitTypeId(u)
 real x=GetUnitX(u)
 real y=GetUnitY(u)
 u=CreateUnit(Player(0),Id,x,y,270.)
 u=null // Missing return
}
//===========================================================================
void Init () {  // Undefined type void
    trigger t=CreateTrigger()
    integer i=0
    do {
        TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_DEATH,null)
    } whilenot (++i >= 12)
    TriggerAddAction(t, function Test_Actions)
    t=null // Missing return
}
//===========================================================================
endscope
Ошибки запостил в виде комментариев в коде...
Старый 28.09.2009, 00:40
ScorpioT1000
Работаем
online
Опыт: отключен
include "cj_types.j"
Старый 28.09.2009, 00:42
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
насчёт void - cj_types надо подрубить. А насчёт ретурнов-это из-за этих же войдов может быть.
Старый 28.09.2009, 00:43
Зевс
Адская Зверюга
offline
Опыт: 152,154
Активность:
ололо сдж оказывается с макросами не дружит Оо
Старый 28.09.2009, 19:49
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Зевс, дружит.
Единственный пока не исправленный глюк - если в текстмакро две переменные записываются подряд (напр. $var1$$var2$) исправлено в 1.3.4.29

Отредактировано Van Damm, 30.09.2009 в 22:20.
Старый 28.09.2009, 20:03
Elf_Stratigo

offline
Опыт: 4,699
Активность:
а можно узнать, почему транслятор cJASS написан на ассемблере, а не на паскале/дельфи или томже си?)
Старый 28.09.2009, 21:18
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
потому что ADOLF + masm =

а про паскаль делфи забудь и не упоминай это слово =)
Старый 28.09.2009, 21:36
adic3x

offline
Опыт: 108,439
Активность:
точнее сказать ADOLF + masm = olly
в 1.3.4.29 доработал снос локал, теперь парсер пытается снести и присвоение переменной, если:
  1. в ней используются литералы (цифры, имена функций, строки, буль значения и тюдю)
  2. вызываются некоторые фции (например Cos или Player)
использование других переменных и функций (даже если они обьявленны как константы) будет принуждать парсер разделять обьвление и присвоение
void fx (int i) {
    DoNothing()
    player a = Player(0x00)
    player b = Player(i)
    string ss = "...."
}
// --->
function fx takes integer i returns nothing
local player a=Player(0x00) // !
local player b // обьвленно тут
local string ss="...." // !
call DoNothing()
set b=Player(i) // присвоенно тут, т.к. парсер предпологает, что i 
                // может изменить свое значение
endfunction
отгрузка скоро, следите за новостями
Старый 29.09.2009, 23:05
ScorpioT1000
Работаем
online
Опыт: отключен
хорошо, но не значительно)
ScorpioT1000 добавил:
т.е. я так понимаю в джассе разницы между конструктором и оператором присваения нету.
Старый 29.09.2009, 23:11
adic3x

offline
Опыт: 108,439
Активность:
хорошо, но не значительно)
теперь моя совесть чиста
в джассе разницы между конструктором и оператором присваения нету
я не понял о чем ты) можешь в жабе пояснить впринципе
ADOLF добавил:
кстате, я тут посмотрел
local integer i
set i = 0
//
local integer i = 0
будет обработано варом одинаково. фактически второе является просто компактной формой записи первого, и економит считаные байты в .j коде карты
мелочь, но приятно, что я всетаки сделал это оптимально по возможности =)
Старый 29.09.2009, 23:23
adic3x

offline
Опыт: 108,439
Активность:
по заявкам трудящихся в 1.3.4.31 внезапно появился макрос FUNCNAME. имейте счастливый! (равда он игнорируется в конструкциях типа #if)
так же сделана инстукция #error "all is well!"
сделан инклюд гуард (полезная няшка)
добавлена опциональная решеточка перед инклюд, дефайн и т.д.
еще я хочу накрутить немного перегрузку макросов, хз
Старый 30.09.2009, 23:24
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:09.