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

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

Ответ
 
Sebra

offline
Опыт: 5,603
Активность:
В процессе поиска мешающего места удалением выяснилось:
  1. Пустые строки (возможно содержащие табуляцию, пробелы и т.п.) между функциями обзывались глобальными переменными.
  2. Такие же "нехорошие" пустые строки внутри функций автоматически получали префикс "local".
При замене "нехороших" пустых строк на "хорошие" проблема исчезает.
Вобщем, проблемы с анализом пробелов.
Старый 04.05.2009, 18:51
Elf_Stratigo

offline
Опыт: 4,699
Активность:
решил протестить - в свою мапу добавил блок:
Код:
define
    void = takes nothing returns nothing

    int  = integer
    intA  = integer array
    bool = boolean
enddefine 

globals
    unit array P_Unit
    intA PS_Kills
endglobals


оно самоубилось с злобоошибкой на шаге
Build Find'n'Replace table

((((
Старый 05.05.2009, 13:10
adic3x

offline
Опыт: 108,439
Активность:
Elf_Stratigo, приведенный кусок кода у меня сохраняется без ошибок
кстате глобалс/ендглобалс можно не писать
проверь как оно его сохраняет без этого фрагмента кода

Sebra, ну как бы мне твою карту один раз запустить из под отладчика и все станет ясно
табуляции заменяют на пробелы при первом проходе, я хз, какие то еще аски символы используются при форматировании кроме 09h, 20h?
Старый 05.05.2009, 20:39
Sebra

offline
Опыт: 5,603
Активность:
Да вот виноват. :(
Я когда мусор поудалял, её поверх старой записал.
Сейчас искал, больше той карты не нашёл.
Если только в инете найдёшь minidota_v100_open.w3x
А может быть там 0Dh, 0Ah в неправильном порядке или количестве.
И ты мою цитату с пустыми строками смотрел? Что в ней?
Старый 06.05.2009, 01:37
Elf_Stratigo

offline
Опыт: 4,699
Активность:
DEAD URL
вот такое уже убивается...
на том же шаге
Старый 06.05.2009, 09:18
adic3x

offline
Опыт: 108,439
Активность:
Elf_Stratigo, ага, теперь и у меня падает. спасибо, ошибку я нашел - буду разбираться... кстате возможно у Sebra те же проблемы

ADOLF добавил:
Elf_Stratigo, понял, там опечатка была в сорце, боло 20, а должно было быть 20h (ну т.е. 32)
я это исправил в своей версии, но сейчас я ее перепиливаю, там будет много нового... а пока просто удали один пробел после енддефине

ADOLF добавил:
Цитата:
И ты мою цитату с пустыми строками смотрел? Что в ней?

если ты о
Цитата:
Пустые строки (возможно содержащие табуляцию, пробелы и т.п.) между функциями обзывались глобальными переменными.

то я ничего не понял т.к. мне надо увидет код... иначе сложно что то говорить
Старый 06.05.2009, 15:26
Sebra

offline
Опыт: 5,603
Активность:
Извиняюсь, просто меня не было.
Нет, я о 32 сообщении.
Старый 10.05.2009, 20:07
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
А может быть там 0Dh, 0Ah

да, возможно... я просто сейчас новыми фичями занят, а потом когда появится пример то и пофиксю)

ну т.е. я несмогу это фиксить без "карты"
Старый 11.05.2009, 18:27
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Появилась маленькая идея: сделать переобозначение функций (вроде не предлагалось):
Код:
redefine SetUnitX takes unit u, real new_x returns nothing
    if new_x >= 0 and new_x <= 2000 then
        call SetUnitX(u,new_x)
    endif
endredefine

Как работает: меняет "redefine" на "function" и т. п., меняет название функции (к примеру, SetUnitX_25235) и заменяет функцию во всём коде, кроме самой функции SetUnitX_25235.
Мб кому-нибудь пригодится
Старый 11.05.2009, 19:04
adic3x

offline
Опыт: 108,439
Активность:
Код:
function MySetUnitX takes unit u, real x returns nothing
    if x >= 0. && x <= 2000.
        SetUnitX(u, x)
    endif
endfunction

scope xxx

define
    private SetUnitX = MySetUnitX
enddefine

endscope


ADOLF добавил:
ага, сам попробывал сохранить и понял в чем проблема ;)

ADOLF добавил:
заменять будет только то, что в скопе, но это изврат... хм, вобщем я подумаю)
ну у меня сейчас огромный лист того что надо сделать, вобще хз, неделя ли, две... но будет много нового и интересного, ждите)

ADOLF добавил:
жуть, я уже как векс - его попросишь добавить что то простое и понятное, а он тебе начинает втирать о какой то хз как работающей лаже... =)
Старый 11.05.2009, 19:42
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Что-то сам протупил и не подумал о таком простом решении)) Ну хоть помог ошибку найти.
Старый 11.05.2009, 21:51
adic3x

offline
Опыт: 108,439
Активность:
это как раз не простое решение, т.е. не очень удобное

я сделаю символы # и ##, с помощью последнего можно будет сделать что то типа Set ## UnitX, в результате чего программа будет искать слитное написание, и не заменит такое, а при сделующем проходе склеит название фции и уберет ##. это будет имхо елегантное решение)
Старый 12.05.2009, 18:34
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Код:
define
    ARENA_ARRAY_SIZE = 140
enddefine

struct arena
    unit array gexes_u [ARENA_ARRAY_SIZE]
endstruct
=>
Код:
struct arena
unit array gexes_u [140ZE]
endstruct


Код:
define
    arena_array_size = 140
enddefine

struct arena
    unit array gexes_u [arena_array_size]
endstruct

correct
Старый 04.06.2009, 17:52
adic3x

offline
Опыт: 108,439
Активность:
упс, меня небыло давно) в новой версии (она таки вышла, подробности на сайте) это работает нормально

Код:
define ARENA_ARRAY_SIZE = 140
//define arena_array_size = 140 // тоже работает

struct arena
    unit array gexes_u [ARENA_ARRAY_SIZE]
endstruct
Старый 10.06.2009, 12:07
adic3x

offline
Опыт: 108,439
Активность:
http://cjass.xgm.guru/syntax.php

по заявкам трудащихся сделал хук нативок
Старый 11.06.2009, 16:41
Elf_Stratigo

offline
Опыт: 4,699
Активность:
блиииин, оно у меня опять умирает (((

Код:
library blablabla initializer init
define
    consti = constant integer
    end=endfunction
    exf=public function
    void=takes nothing returns nothing
enddefine

globals
    consti a
endglobals

exf init void
end

endlibrary


ну где опять пробел поставить/убрать?(
Старый 11.06.2009, 19:26
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Ну как бы это - не баг cjass, а твое незнание. константы нужно инициализировать, иначе какой в них смысл и это ошибка.
Старый 11.06.2009, 21:26
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
красиво всё выглядит, пойду тестировать =) Спасибо разработчикам
Старый 12.06.2009, 07:39
Elf_Stratigo

offline
Опыт: 4,699
Активность:
Van Damm
просто я быстро набросал код, аналогичный моему, ну и случайно забыл подписать там чтонить...
однако ошибка не из-за этого
1) вроде, AdicHelper не имеет алгоритма поиска синтаксических ошибок
2) легко проверить, что ошибка не в этом: достаточно подписать "=0" и увидеть, что оно всёравно самоубивается с критической ошибкой на томже шаге, что и раньше...
Старый 12.06.2009, 09:55
Monoroh
Don't look at me!
offline
Опыт: 2,777
Активность:
Spell замечательный, синтаксис, самое главное, понятен. Благодарю
Старый 12.06.2009, 12:11
Ответ

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

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

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

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



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