Вернуться   CoderX :: Forums > Lineage II > L2Walker Corrector
Войти через OpenID

L2Walker Corrector Изначальный проект закрыт, однако на его основе появился новый от Alexxxxx

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 27.09.2017, 16:53   #31
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от SeregaZ Посмотреть сообщение
пили структуру
у структур пролема с привязкой к элементам управления, придётся классы
cvillian вне форума   Ответить с цитированием
Старый 27.09.2017, 17:58   #32
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

эм... вобще меня не слушай я французским не владею... классы или структуры разницы не знаю. в моем PureBasic все просто, я думал везде так просто

типа:
Код:
structure mob
  id.i
  flagaataka.a
  flagspoil.a
  name$
endstructure
Dim MassivMoby.mob(1000)
хотя было бы удобней, если в ладве мобы бы шли по порядку по возрастанию айди. но там как попало какая-то часть есть, где-то провал. в идеале было бы сделать чуть по другому - узнать максимальный айди и влепить размер массива по максимуму. то есть массив гонять тогда в цикле не нужно, пока нужный id попадет. а сразу id чтоб был номером в массиве. неудобство что из-за этих провалов в нумерации - стотыщьпятсот ячеек в массиве будут незаполнены.
Код:
structure mob
  flagaataka.a
  flagspoil.a
  name$
endstructure
Dim MassivMoby.mob(100500)
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 27.09.2017, 20:09   #33
Местный
 
Регистрация: 22.10.2014
Сообщений: 122
Сказал Спасибо: 1
Имеет 8 спасибок в 7 сообщенях
alexov пока неопределено
По умолчанию

Цитата:
Сообщение от SeregaZ Посмотреть сообщение
было бы удобней, если в ладве мобы бы шли по порядку по возрастанию айди. но там как попало какая-то часть есть, где-то провал. в идеале было бы сделать чуть по другому - узнать максимальный айди и влепить размер массива по максимуму.
Dictionary тебе в руки.
alexov вне форума   Ответить с цитированием
Старый 27.09.2017, 21:20   #34
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

пробежался глазами... мало что понял с моими то тремя классами церковноприходской...

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

на сервере скажем 3 моба в файле:
Код:
id="3" mob="skelet"
id="5" mob="zombi"
id="6" mob="vampir"
первый вариант, массив меньше, но время доступа больше из-за необходимости цикла для кручения айди по массиву в поисках нужного:
Код:
Enumeration
  #File
EndEnumeration

Structure mob
  id.i
  name$
  spoilflag.a
  atackflag.a
EndStructure

Dim Moby.mob(0)


If ReadFile(#File, "D:\moblist.txt")
  ; мотать файл до конца
  While Eof(#File) = 0
    ; обнуление переменных
    id = 0
    name$ = ""
    
    ; читать строчку текста до символа перевода каретки
    tmp$ = ReadString(#File)
    
    ; разбор строчки текста
    id = Val(StringField(tmp$, 2, Chr(34)))
    ; Val() - превращение текста в цифру
    ; StringField - разбитие текста tmp$, по символу - Chr(34), то есть это кавычки
    ; и возврат 2 блока при разбитии
    ; сама текстовая строка выглядит так:
    ; id="3" mob="skelet"
    ; при разбитии по кавычкам:
    ; id=    1 блок
    ; 3      2 блок
    ;  mob=  3 блок
    ; skelet 4 блок
    
    name$ = StringField(tmp$, 4, Chr(34))
    
    If name$
      ; если в переменной name$ что-то есть,
      ; то значит разбор прошел успешно
      ; надо увеличить массив на 1 единичку
      size = ArraySize(Moby()) + 1
      ReDim Moby(size)
      
      ; и внести туда данные
      Moby(size)\id    = id
      Moby(size)\name$ = name$
      
    EndIf
    
  Wend
  
  ; закрыть открытый файл
  CloseFile(#File)
EndIf

; теперь когда массив готов и приходят с сервера id мобов,
mobid = 3

; то получаем о них инфу:
For i = 0 To ArraySize(Moby())
  If mobid = Moby(i)\id
    Debug Moby(i)\name$
    Break
  EndIf
Next

вариант второй - цикл получается не нужен, чтение будет быстрее... но сам размер массива будет в разы больше с кучей пустых ячеек - в данном случае пустые будут 1, 2 и 4, а сам размер массива будет равен самому максимальному id.
Код:
Enumeration
  #File
EndEnumeration

Structure mob
  ;id.i id в структуре становится не нужен. удаляем
  name$
  spoilflag.a
  atackflag.a
EndStructure

Dim Moby.mob(0)


If ReadFile(#File, "D:\moblist.txt")
  ; мотать файл до конца
  While Eof(#File) = 0
    ; обнуление переменных
    id = 0
    name$ = ""
    
    ; читать строчку текста до символа перевода каретки
    tmp$ = ReadString(#File)
    
    ; разбор строчки текста
    id = Val(StringField(tmp$, 2, Chr(34)))
    ; Val() - превращение текста в цифру
    ; StringField - разбитие текста tmp$, по символу - Chr(34), то есть это кавычки
    ; и возврат 2 блока при разбитии
    ; сама текстовая строка выглядит так:
    ; id="3" mob="skelet"
    ; при разбитии по кавычкам:
    ; id=    1 блок
    ; 3      2 блок
    ;  mob=  3 блок
    ; skelet 4 блок
    
    name$ = StringField(tmp$, 4, Chr(34))
    
    If name$
      ; если в переменной name$ что-то есть,
      ; то значит разбор прошел успешно
      ; надо увеличить массив до числа id
      size = ArraySize(Moby())
      If size < id
        ReDim Moby(id)
      EndIf
      
      ; и внести туда данные
      Moby(id)\name$ = name$
      
    EndIf
    
  Wend
  
  ; закрыть открытый файл
  CloseFile(#File)
EndIf

; теперь когда массив готов и приходят с сервера id мобов,
mobid = 3

; то получаем о них инфу без цикла, используя id как номер в массиве:
Debug Moby(mobid)\name$
а вот с хранением инфы об галках атаки и спойла будут проблемы ежели всюююю инфу писать в файл, аналогично как лист мобов, то есть:
Код:
id="3" ataka="1" spoil="0"
id="5" ataka="1" spoil="1"
id="6" ataka="0" spoil="0"
то при изменении одного галимого параметра - придется переписывать веееееееесь файл. а что если во время записи произойдет ошибка? столько лет внесения в базу флагов атаки и спойла - все на смарку

можно конечно будет создавать отдельный файл с id в названии 3.txt:
Код:
ataka="1" spoil="0"
тогда изменение будет записываться в один маленький файл. удобно писать, удобно при потере информации - потеряется только 1 файл, основная база останется целой. но стописят тыщь файлов по 1 килобайту - жесткий диск скажет тебе большое "спасибо". он такую мелочь не любит.

поэтому всякие сикуели и нужны, но это поддерживает твой язык, не поддерживает... нужны доп библиотеки, не нужны... нужны всякие дополнительные программы и сервисы или не нужны... и кто его знает как там с защитой базы на случай ошибки записи предусмотрено.
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 27.09.2017, 21:32   #35
Местный
 
Регистрация: 22.10.2014
Сообщений: 122
Сказал Спасибо: 1
Имеет 8 спасибок в 7 сообщенях
alexov пока неопределено
По умолчанию

Цитата:
Сообщение от SeregaZ Посмотреть сообщение
пробежался глазами... мало что понял с моими то тремя классами церковноприходской...
Плохо пробежался, там есть пример для PureBasic:

; Создали ассоциативный массив.
NewMap Country.s()

; Заполнение массива данными.
Country("GE") = "Germany"
Country("FR") = "France"
Country("UK") = "United Kingdom"

Debug Country("FR") ; Вывод результата "FR" в отладочное окно.

; Перебор всех элементов с отображением их значений в отладочном окне.
ForEach Country()
Debug Country()
Next


У тебя просто проблема с базовыми типами данных, нужно взять книгу по твоему языку и почитать первые несколько глав, это сильно поможет.
И вообще, если не секрет, зачем разрабатываешь на такой экзотике? переходи на C++, Delphi, C# или Java лучше. Тогда проще будет ответы на вопросы находить
alexov вне форума   Ответить с цитированием
Старый 28.09.2017, 14:48   #36
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

так я не занимаюсь профессионально. на заре моих занятий херомантией стоял вопрос в том, что мне были нужны вин апи для автоматизации запуска наших непутевых налоговых программ. типа хочу чтоб все запускалось с 1 клика, а в стоке там надо было нажать туда, суда, ввести пароль и тд и тп. вот и попалась ссылка на этот PB... так и застрял за NewMap Country.s() спасибо, видимо действительно проглядел... пойду товарища на форуме пытать как это работает. не верится мне что все так просто зная раздолбайство разработчика моего недоязыка - думаю там все-таки цикл спрятан.

Добавлено через 15 часов 28 минут
посовещались на своем форуме скорость все-таки будет ниже из-за того, что обращение к массиву идет по текстовой переменной. с цифрами все-ж быстрее. но так очень удобно - не нужно следить за размером массива и удобно удалять. обычный массив в PB, если нужно удалить ячейку где-то в середине - потребует кучу танцев.
__________________
хочу картинку в подпись!

Последний раз редактировалось SeregaZ, 28.09.2017 в 14:48. Причина: Добавлено сообщение
SeregaZ вне форума   Ответить с цитированием
Старый 28.09.2017, 20:38   #37
Местный
 
Регистрация: 22.10.2014
Сообщений: 122
Сказал Спасибо: 1
Имеет 8 спасибок в 7 сообщенях
alexov пока неопределено
По умолчанию

Возьмусь предположить что обращаться к словарю совсем не обязательно по текстовой переменной, подойдет любой объект. Если это не так, то автор языка действительно мудак. Но повторюсь, я в это не верю.

А вот типы которые лежат в словаре указываются при его создании, пример который я сбросил там .s - строка, все написано в документации, совсем не обязательно спрашивать товарища на форуме)
alexov вне форума   Ответить с цитированием
Старый 28.09.2017, 21:08   #38
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

так он на этом языке собаку съел

пока еще не применял в своем проекте. пару дней чот плохо сплю и потом хожу как терминатор с торможениями... ваще не садился за проект. а так мне будет полезно по текстовой метке читать то, что надо без необходимости каждый раз цикл лепить и гонять - даже если на низком уровне в этом функционале и спрятан цикл - все равно через этот ассоциативный массив гораздо удобнее работать, чем с обычным массивом. как пример в обычном массиве удалить ячейку в середине - целая история. массив по сути пересоздавать и переписывать надо. в случае с ассоциативным там всего одной командой. так что обязательно попробую применить вдохновение надо только... и чтоб заночь доделать все что хотел. это будет шедеееевррррррр
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 28.09.2017, 21:58   #39
Местный
 
Регистрация: 22.10.2014
Сообщений: 122
Сказал Спасибо: 1
Имеет 8 спасибок в 7 сообщенях
alexov пока неопределено
По умолчанию

Шедевр на бейсике, ну это врядли Впрочем, удачи))
alexov вне форума   Ответить с цитированием
Старый 28.09.2017, 23:29   #40
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

шедевр шедевр онлайн база мелодий и саундэффектов сега игр для замены оригинальных звуков и мелодий Dune:
https://www.youtube.com/watch?v=P9FIDzWZNyQ

редактор графики юнитов:
https://www.youtube.com/watch?v=Qy2O9IMuoos

это причем из нового. а старого там уже на 50 тыщ строчек кода шедевр!
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2Walker Corrector


Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:02.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!