Цитата(Alexad_D @ Sep 24 2009, 18:24)

Вот я потому и советуюсь как его лучше оптимизировать и где именно эти 15 ненужных циклов.......
Например, кусок твоего кода:
Код
ChangeCharacterAddress(characterFromID("Bertuzzo"), "Santafe_tavern", "goto19");
ChangeCharacterAddress(characterFromID("beatrice"), "Santafe_tavern", "goto20");
LAi_SetHP(characterFromID("beatrice"), 50.0, 50.0);
LAi_SetActorType(CharacterFromID("beatrice"));
LAi_SetActorType(CharacterFromID("Bertuzzo"));
LAi_group_MoveCharacter(CharacterFromID("beatrice"), "beatrice");
LAi_group_MoveCharacter(CharacterFromID("Bertuzzo"), "Bertuzzo");
LAi_SetImmortal(CharacterFromID("Bertuzzo"), true);
Characters[GetCharacterIndex("Bertuzzo")].skill.Fencing = 1;
LAi_ActorAttack(characterFromID("Bertuzzo"), characterFromID("beatrice"), "");
LAi_ActorAttack(characterFromID("beatrice"), characterFromID("Bertuzzo"), "");
LAi_SetCheckMinHP(characterFromID("beatrice"), 30.0, true, "GirlProtection");
LAi_SetActorType(pchar);
LAi_ActorFollow(pchar, characterFromID("Beatrice"), "", 10.0);
В нем 15 раз юзаесть функция characterFromID().
Каждая функция CharacterFromID() - это проход циклом по всем персонажам (TOTAL_CHARACTERS), т.е. 1000 итераций (на деле конечно меньше, т.к. когда найдет нужное, искать дальше перестанет).
Легким движением руки это все можно оптимизировать, и получить, например, это:
Код
ref character1 = CharacterFromID("Bertuzzo");
ref character2 = CharacterFromID("beatrice");
ChangeCharacterAddress(character1, "Santafe_tavern", "goto19");
ChangeCharacterAddress(character2, "Santafe_tavern", "goto20");
LAi_SetHP(characterFromID("beatrice"), 50.0, 50.0);
LAi_SetActorType(character2);
LAi_SetActorType(character1);
LAi_group_MoveCharacter(character2, "beatrice");
LAi_group_MoveCharacter(character1, "Bertuzzo");
LAi_SetImmortal(character1, true);
character1.skill.Fencing = 1;
LAi_ActorAttack(character1, character2, "");
LAi_ActorAttack(character2, character1, "");
LAi_SetCheckMinHP(character2, 30.0, true, "GirlProtection");
LAi_SetActorType(pchar);
LAi_ActorFollow(pchar, character2, "", 10.0);
Итого, вместо 15 * 1000 итераций мы получили 2000.
Но. Не нужно обьявлять переменные в кайсах, т.к. это все одна функция QuestComplete() и обьявление в разных кайсах переменной с одним именем создаст ошибку.
Цитата(Alexad_D @ Sep 24 2009, 18:24)

беру за образец и ореинтируюсь на скрипты от Акеллы
Ну и напрасно.

Поэтому у тебя код и получается неоптимизированным.