 |
|
 |
|
JASP |
Ty3uK | Дата: Понедельник, 02 Апрель 2012, 12:26:42 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| - небольшой препроцессор для языка Jass2, который запускается перед парсером vJass (JassHelper). Полную информацию о возможностях вы можете прочитать в мануале, все ссылки внизу.
|
|
|
| |
lawson | Дата: Понедельник, 07 Май 2012, 00:33:00 | Сообщение # 176 |
10 уровень
Группа: Проверенные
Сообщений: 3088
Награды: 0
Репутация: 269
Блокировки: 
| Quote (SirNikolas) ++i + ++i? Хмм ни разу такого не видел, но по идеи - сначала должны выполниться инкременты, а только потом складывать возвращенное значение.
Nic nie wiem bo mam chuj. Кароче делаю ИИ на JASS
Сообщение отредактировал lawson - Понедельник, 07 Май 2012, 00:34:19 |
|
|
| |
SirNikolas | Дата: Понедельник, 07 Май 2012, 09:16:23 | Сообщение # 177 |
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки: 
| http://lurkmore.to/++i_+_++i
|
|
|
| |
Ty3uK | Дата: Суббота, 02 Июнь 2012, 15:50:14 | Сообщение # 178 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| Я не модератор и темы закрывать не умею Добавлено (02 Июнь 2012, 15:50:14) --------------------------------------------- Возможно, кого-то это заинтересует, а кого-то заставит плясать Итак, я научил жасп взаимодействовать с cJass, т.е. их взаимное использование с этого момента возможно и даже нужно Комментим, господа
|
|
|
| |
SirNikolas | Дата: Суббота, 02 Июнь 2012, 16:40:16 | Сообщение # 179 |
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки: 
| Ну что еще сказать)
|
|
|
| |
Ty3uK | Дата: Воскресенье, 03 Июнь 2012, 18:34:37 | Сообщение # 180 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| SirNikolas, сам тихо радуюсь  Добавлено (03 Июнь 2012, 18:34:37) --------------------------------------------- бтв, я переписываю жасп на с# все готовимся к катострофе
|
|
|
| |
Dreii | Дата: Воскресенье, 03 Июнь 2012, 19:01:17 | Сообщение # 181 |
10 уровень
Группа: Проверенные
Сообщений: 4518
Награды: 0
Репутация: 574
Блокировки: 
| Иди учи матан!
|
|
|
| |
Ty3uK | Дата: Воскресенье, 03 Июнь 2012, 19:10:34 | Сообщение # 182 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| какой матан, ты же в 11 классе : trollface:
|
|
|
| |
Like_a_Noob | Дата: Понедельник, 04 Июнь 2012, 11:29:47 | Сообщение # 183 |
6 уровень
Группа: Проверенные
Сообщений: 216
Награды: 0
Репутация: 74
Блокировки: 
| Quote (Ty3uK) бтв, я переписываю жасп на с# все готовимся к катострофе trollface хочу это увидеть
|
|
|
| |
Ty3uK | Дата: Понедельник, 04 Июнь 2012, 12:10:56 | Сообщение # 184 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| Code using System; using System.IO; using System.Windows.Forms; using System.Collections.Generic; using SFMpq;
class JASP {
private static int MPQ; private static string[] war3map; private static List<string> script = new List<string>();
//==========================================================================================// // // **Main API** // //==========================================================================================//
private static void SplitComments() { for (int i = 0; i < war3map.Length; i++) { if (war3map[i].IndexOf("//") != -1) { int index = war3map[i].IndexOf("//"); war3map[i] = war3map[i].Substring(0, index); } } }
private static void ReplaceSpaces() { for (int i = 0; i < war3map.Length; i++) { while (war3map[i].IndexOf(" ") != -1) { war3map[i] = war3map[i].Replace(" ", " "); } war3map[i] = war3map[i].Trim(); if (war3map[i].Length > 0) script.Add(war3map[i]); } }
private static int FindBraces(int start) { int OB = 0, CB = 0, end = 0; for (int i = start; i < war3map.Length; i++) { if (war3map[i].IndexOf("{") != -1) OB++; if (war3map[i].IndexOf("}") != -1) { CB++; if (CB == OB) { end = i; break; };
} } return end; }
private static void ParseFunctions() { int start = 0, end = 0; string temp = ""; do { if (war3map[start].IndexOf("{") != -1 && war3map[start].IndexOf("library") == -1 && war3map[start].IndexOf("scope") == -1 && war3map[start].IndexOf("struct") == -1 && war3map[start].IndexOf("define") == -1 && war3map[start].IndexOf("enum") == -1) { end = FindBraces(start); for (int i = start; i < end; i++) { temp += war3map[i] + "\n"; } start = end; } start++; } while (start < war3map.Length); }
private static void ExtractScript(string aName) { MPQ = SF.MpqOpenArchiveForUpdate(aName, SF.MOAU_OPEN_EXISTING + SF.MOAU_MAINTAIN_LISTFILE, 0); SF.MpqExtractFileTo(MPQ, "war3map.j", "war3map.j"); war3map = File.ReadAllLines(@"war3map.j"); }
private void AddScript() { SF.MpqAddFileToArchiveEx(MPQ, "war3map.j", "war3map.j", SF.MAFA_REPLACE_EXISTING + SF.MAFA_COMPRESS, SF.MAFA_COMPRESS_DEFLATE, SF.Z_BEST_COMPRESSION); SF.MpqCompactArchive(MPQ); SF.MpqCloseUpdatedArchive(MPQ, 0); }
//==========================================================================================// // // End **Main API** // //==========================================================================================//
static void Main() { if (File.Exists(SF.DLL)) { ExtractScript("ololo.w3x"); SplitComments(); ReplaceSpaces(); //ParseFunctions(); //File.WriteAllLines("123.txt", war3map); } else { MessageBox.Show("File \"SFMpq.dll\" isn't exists.\nSorry :(", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
} Пока так. Бтв, юзаю собсьвенный апишник для SFmpq.dll (перенес из апишника для плюсов)
|
|
|
| |
SirNikolas | Дата: Понедельник, 04 Июнь 2012, 12:31:21 | Сообщение # 185 |
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки: 
| Вон ты какой хитрый. А я думал, работаешь с посимвольным вводом.
|
|
|
| |
Ty3uK | Дата: Понедельник, 04 Июнь 2012, 15:25:41 | Сообщение # 186 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| ник, на дворе 2012 год (: Добавлено (04 Июнь 2012, 15:25:41) --------------------------------------------- до этого жасп вообще на регулярках одних был сейчас стараюсь без них ибо парсинг цжасса не получалось на них сделать (:
|
|
|
| |
SirNikolas | Дата: Понедельник, 04 Июнь 2012, 15:26:10 | Сообщение # 187 |
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки: 
| Судя по private static void ParseFunctions(), он будет некорректно обрабатывать однострочные define'ы.
|
|
|
| |
Ty3uK | Дата: Понедельник, 04 Июнь 2012, 15:34:39 | Сообщение # 188 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| он и не должен их обрабатывать. согласен, алгоритм так себе, но все же лучше, чем без цжасса (;
|
|
|
| |
DragoN | Дата: Понедельник, 04 Июнь 2012, 17:37:00 | Сообщение # 189 |
Инквизитор
Группа: Ветераны
Сообщений: 4045
Награды: 6
Репутация: 2200
Блокировки: 
| Quote (Dreii) Иди учи матан! матан не матчасть, если что апишник видел ещё не в готовом вариант, молодец)
|
|
|
| |
Ty3uK | Дата: Понедельник, 04 Июнь 2012, 17:59:30 | Сообщение # 190 |
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки: 
| спасибо :3
|
|
|
|
|
|
 |
|
 |
|
|