да какие тут могут быть примеры) вообще, по-хорошему, надо делать так:
1. Создание картины мира (совсем по-хорошему абсолютно полную)
2. И потом по этим данным уже делать действия которые тебе нужны.
через массивы то конечно можно все что угодно сделать)
но TList и класс скажем
TL2Item=class
public
OID,ID:integer;
Count:int64;
Enachant:smallint;
isEquipped:boolean; //и тд
end;
так удобнее, согласись
ну а тут судя по всему придется делать массивы, потом опять же массив нпсов, массив текущего мультиселла, расшифровщик хтмла(наверное) и думаю этого хватит.
Все гораздо проще на мой взгляд...
Я не лазил у NLObP, но в скрипте TAMBIK'a лазил...
Скрипт простой (Тут я имею виду сам алгоритм скрипта на Энчант, а не конкретного автора), до ужаса...
Если Пакет Юз итем=> Записываем ИД скролла (ИЗ пакета берет ОИД, через ГетИтем получаем ИД)
Если пакет Актион (04 вродя), то записываются все нужные даные
Пакет Мультиселла-> Записываем
Потом в циклах: Поиск через ГетИтем Скролла(Записан ИД), Проверка че из этого получилось(Энчант-лвл), Проверка скок там еще свитков (Если мало то: Актион->Мультиселл) если норм, то по новой...
Ну и там всякие навороты типо сист сообщений, Энчант-лвл-макс в чат...
(Я считаю определение ИД скролла по Юзитем пакету тож наворотом, но эт удобна =))
Добавлено через 3 минуты dyh9l, Мы на какие хроники то делаем?
Добавлено через 11 минут
Подсчет свитков тамбик устроил вот так:
delphi Код:
sumskrol:=Getsumitem(skrolID,3,4);
//где 3-Ид скролла, 4-кол-во, а GetsumItem:function Getsumitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0for i:=1tomaxdoif(BaseItems[i,up]=Obj)thenbegin
Result:=Result+BaseItems[i,down];
end;
end;
//TAMBIK(c)
Как видно обходится без массива со всеми скроллами...
А функция лишь для подсчета... (Оч удобно)
В принципе можно скрипт тамбика переделать, а потом на с4 перегнать...
Добавить в Конст Сейф-Энчант-лвл, ИД Обычного скролла и в механизме энчанта вставить Case До сейва и после сев-энч-лвл (2 разных пути, 2 разных ИД)