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

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

Ответ
 
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
akkolt
Код:
// имеем нативку
// native CreateUnit takes player id, integer unitid, real x, real y, real face returns unit

function IsMPQ takes nothing returns boolean
    local unit u=CreateUnit(Player(0),'AX00',.0,.0,.0)
    if u==null then
        return false
    endif
    return true
endfunction


Я сам точно хз. Я так представляю идею адолфа.
Старый 09.11.2008, 22:29
akkolt

offline
Опыт: 13,826
Активность:
мб просто return u? или я не прав?

akkolt добавил:
Хотя особого значения это не имеет =)
Старый 09.11.2008, 22:38
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
akkolt
Ну т.е. функция возвращает тру, если юнит u существует, т.е. архив mpq имеется.
Старый 09.11.2008, 23:36
akkolt

offline
Опыт: 13,826
Активность:
При помощи этого можно создавать трейнеры для карт... т.е. читерство без пассвордов =) так же можно ввести пассворд на антитрейнер, который выкидывает из игры всех читеров с трейнерами...
Старый 09.11.2008, 23:38
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF затуп... я бы за это не взялся если бы VD не выложил хороший и правильный, работающий пример как это можно использовать. Просто запустил exe и наслаждайся всей мощью japi

долой shitmaking!

NETRAT добавил:
тесты показали что работа с данными в контексте кеша, который был предоставлен разработчиками, реализована великолепно... проблема в том что тот кеш который они нам дали не лучшим образом подходит под наши цели - обычно нам нужно сопоставление int (handle) -> int (handle,float) а дали нам жуткую конструкцию string + string -> int (handle, float, string) которая работает значительно медленнее из-за строк и приведений типов
в-общем, работа с данными прекрасно реализована в натив паке гримойра - list, q, deq, map
Старый 10.11.2008, 00:40
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
в-общем, работа с данными прекрасно реализована в натив паке гримойра - list, q, deq, map
ну это очевидно :Р

кстати сейчас идёт адаптацыя гримоира к 1.22 ... пока всё сыро...
Старый 10.11.2008, 01:31
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
но главное, что надежда есть! а я был полностью уверен что пайп это дело забросил
Старый 10.11.2008, 01:44
ScorpioT1000
Работаем
online
Опыт: отключен
лол завтра близы выпустят новуй патч "1.22s - war'makers sux balls" весом в 3 кб и будет ему щастье.. )
лучше бы было остановиться на чем-то одном ибо особого значения эти смены вара не имеют
Старый 10.11.2008, 03:25
adic3x

offline
Опыт: 108,439
Активность:
я советую akkoltу для начала более подробно изучиться сам жасс, т.к. он предлагает идеи, достаточно просто реализуемые и на самих нативках (я об этом и говорил раньше, что это нужно только про жассерам, а про жассер впринципе может более менее нормально написать .длл)

ADOLF добавил:
Код:
function IsMPQ takes nothing returns boolean
    local unit u=CreateUnit(Player(0),'AX00',.0,.0,.0)
    if u==null then
        return false
    endif
    return true
endfunction


ну если так то тогда уже

Код:
function IsMPQ takes nothing returns boolean
 return CreateUnit(Player(0x00),'AX00',.0,.0,.0)!=null
endfunction


а вообще имхо юнита потом нуно удалить)

;;

Цитата:
ADOLF затуп


эээ?

Цитата:
а дали нам жуткую конструкцию string + string -> int (handle, float, string)


конструкция еще хуже - cache (handle) + string + string

емое, а не кому не приходило в голову делать массив кешей? ;) кстате, как в жасс реализованна передача аргументов? насколько я понимаю там какой то локальный стек из которого жапи при перехвате достает онные данные и передает их в наш?) ну и кого идей по этому поводу нету?)
Старый 10.11.2008, 10:41
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
эээ?
создается впечатление что ты нихрена не понимаешь в ООП

хэндль кеша отношения никакого не имеет - это всего-лишь ссылка на используемый "класс", на скорость не влияет...

а зачем тебе?
скорее всего так
Код:
struct arg
{
  int argtype; // -1 - nothing, 0 - int, 4 - float, 3 - string
  int value; // in case type is a string value is a pointer to wide char array
};
struct function
{
  string name;
  int argscount;
  arg[argscount] input;
  arg output;
};
Старый 10.11.2008, 11:16
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Цитата:
создается впечатление что ты нихрена не понимаешь в ООП
на asm ООП нету ^^
Старый 10.11.2008, 12:55
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
обычно нам нужно сопоставление int (handle) -> int (handle,float) а дали нам жуткую конструкцию string + string -> int (handle, float, string)

если я не ошибаюсь то стринги в джазе это int'ы указатели, и записывая в кеш с ключем-строкой, мы записываем инфу не под строку а под ключем-int указателем этой строки, а учитывая небольшое значение этого указателя (среднестатестическое), весь кеш это как обычный двумерный динамический массив где индексы int'ы, хотя аверно ошибаюсь, но я просто так себе это представлял...

Отредактировано Jon, 10.11.2008 в 13:17.
Старый 10.11.2008, 13:10
NETRAT

offline
Опыт: 83,712
Активность:
а что Адольф только asm и jass знает?!

Jon сначала эта строка размещается в памяти и записи + чтения + преобразования все равно существуют - строки ведь не статические - кеш все равно работает со строками а не только с указателями на них
Старый 10.11.2008, 13:26
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Цитата:
а что Адольф только asm и jass знает?!
true =) но асм на таком уровне, что мне страшно ><
Старый 10.11.2008, 13:47
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
создается впечатление что ты нихрена не понимаешь в ООП

возможно

Цитата:
хэндль кеша отношения никакого не имеет - это всего-лишь ссылка на используемый "класс", на скорость не влияет...

ну дык, в функцию передается параметр, в какой именно кеш писать

к примеру в кешь1 и кешь2 (ссылаются соответсвенно на разные файлы) то при записи по одинаковым строкам дб произойти две записи, а не одна, по которой потом вторая потреться (это че, кешь трехуровневый или я туплю?)

ну анивей ему нужно же найти обьект кешь, который уже ссылается на конеретную область памяти, или делать таблицу, в которую что то кладется по трем параметрам? или я неправ?

Цитата:
а что Адольф только asm и jass знает?!

;'(

Цитата:
асм на таком уровне, что мне страшно ><

этот уровень иначе как задротским назвать нельзя)

Цитата:
struct arg...

мы о разных вещах) ладно... мб я просто что то непонимаю)

Цитата:
если я не ошибаюсь то стринги в джазе это int'ы указатели, и записывая в кеш с ключем-строкой, мы записываем инфу не под строку а под ключем-int указателем этой строки

даже если так - то вару надо проверить существует ли такая строка, и если нет то присвоить ей указатель и добавить ее, если нет - вернуть прошлый указатель, что тоже скорости работы неприбавляет
Старый 10.11.2008, 15:24
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF ты тупишь... посмотри как сделано выделение динамических массивов или list / q / dq / map в гримойре, надеюсь, станет понятно, если нет, то тогда нужно читать основы ООП
никакого трехуровнего кеша(аки трехмерный вектор) тут не нужно, варовский кеш - полный аналог ini файлов (класс IniFile)

да уж, действительно, это нафиг никому не нужно... лучше уж познакомиться с понятием классы, наследование и полиморфизм - это намного интересней чем тупо задрачивать асм

Цитата:
проверить существует ли такая строка
я неуверен что такая проверка происходит, это слишком неразумно - куда проще пихнуть такую же строку чем искать существующую... просто при создании строки отводится память и берется ссылка на нее
Старый 10.11.2008, 16:00
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
я неуверен что такая проверка происходит, это слишком неразумно - куда проще пихнуть такую же строку чем искать существующую...

ну в функции кеша передается дворд, который ссылается на строку, а не сама строка, если вспомнить что в варе при обьявление новой строки оно выделяет новый хендл, то как бы... а дальше то оно может и по этому хендлу искать строку и делать все что ей удобно, но получить жасовскую ссылку то оно должно

Цитата:
лучше уж познакомиться с понятием классы, наследование и полиморфизм

ну я знаком, но чисто теоритически
Старый 10.11.2008, 16:41
NETRAT

offline
Опыт: 83,712
Активность:
вашумашу...
ADOLF когда строки клеятся, клеятся не их хендли, а копируются области памяти, на которые они ссылаются, соответственно кеша хранит не ссылку на строку, а саму строку... при чем тут вообще ссылки... открой registry файл и посмотри хранятся ли там числа-ссылки на память где хранятся строки или сами строки
этой теории тебе явно не хватает
Старый 10.11.2008, 20:51
Toadcop

offline
Опыт: 54,313
Активность:
тема пошла не в ту сторону :Р

вообщем строки апасность ибо это интовый массив =) хотя всё массивы =))) грубо говоря... но строки особено. я вот при написание прог незнаю как бы писал без класса std::string там просто убитьса можно... и вообще многие применяют "лов лвл" не так\там где надо =) имхо.
и + забота о выделение памяти в сегоднишние дни почти неактуальна... (ну я не про утечки :Р) а иммено просто память под процесс и т.п.
как ни странно, тут я с тобой полностью согласен © NT

это тож оффтоп =)

Отредактировано NETRAT, 10.11.2008 в 23:23.
Старый 10.11.2008, 21:29
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
когда строки клеятся, клеятся не их хендли, а копируются области памяти, на которые они ссылаются

мы щас о чем вообще?

т.е. каждая вновь обьявленная строка в жассе требует под себя выделение памяти? или?
разумеется! удивительно откуда такие вопросы © NT

Цитата:
тема пошла не в ту сторону :Р

вот уж правда)

Отредактировано NETRAT, 11.11.2008 в 12:49.
Старый 11.11.2008, 12:09
Ответ

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

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

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

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



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