Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Бесконечный цикл
virusman
сообщение Jan 2 2005, 20:03
Сообщение #1


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Neverwinter Script Source
oTemp = GetFirstObjectInArea(OBJECT_SELF);
            while(GetIsObjectValid(oTemp))
            {
                if(GetTag(oTemp)=="vir_dw_snow")
                {
                    CreateObject(OBJECT_TYPE_PLACEABLE, "x0_snowdrift", GetLocation(oTemp));
                    DestroyObject(oTemp);
                    oTemp = GetNextObjectInArea(OBJECT_SELF);
                }
            }

Выполнение этого куска скрипта приводит к многократному созданию плейсебла в одной точке + подвисанию и таймауту скрипта. ГДЕ здесь бесконечный цикл создания объекта?! :swoon:

Сообщение отредактировал virusman - Jan 2 2005, 21:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Twin
сообщение Jan 3 2005, 10:36
Сообщение #2


Level 5
**

Класс: Некромант
Характер: Neutral Evil
Раса: Нежить
NWN: Скриптинг [PW]



Вариант рабочий:
Neverwinter Script Source
void main()
{
    int nCount = 0;
    location lTemp;

    object oTemp = GetFirstObjectInArea(GetObjectByTag("AREA001"));

    while ( GetIsObjectValid(oTemp) ) {
        if ( GetTag(oTemp) == "StatueDefaced" ) {
            SetLocalLocation(OBJECT_SELF,
                "TEMP_CreDelItems_"+ IntToString(nCount), GetLocation(oTemp)
            );
            nCount++;

            DestroyObject(oTemp);
        }

        oTemp = GetNextObjectInArea(GetObjectByTag("AREA001"));
    }

    for ( ; nCount >= 0; nCount-- ) {
        lTemp = GetLocalLocation(OBJECT_SELF,
            "TEMP_CreDelItems_"+ IntToString(nCount)
        );
        DeleteLocalLocation(OBJECT_SELF,
            "TEMP_CreDelItems_"+ IntToString(nCount)
        );

        CreateObject(OBJECT_TYPE_PLACEABLE, "plc_impledcrpse1", lTemp);
    }
}

OBJECT_SELF - в данном случае это модуль.

Остается только проблема с созданием новых плейсов на месте старых статичных. Статичеые плейсы не удаляются и в _первом_ цикле участвуют (но потом куда-то из цикла пропадают, странно :xz:). В общем, если девелоппер гарантирует, что все плейсы, заменяемые в цикле будут не статичными, то всё окей. Имхо. :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- virusman   Бесконечный цикл   Jan 2 2005, 20:03
- - Lukas Addon   Возможно надо сделать так чтобы этот скрипт выполн...   Jan 2 2005, 20:42
- - Lex   ВИРЬ, ну ты даешь!! Neverwinter Script So...   Jan 2 2005, 21:15
- - 2GoDoom   И что не понятного? пока oTemp = GetFirstObjectIn...   Jan 2 2005, 21:17
- - virusman   Брр. Опять не тот исходник выложил. У меня и: Neve...   Jan 2 2005, 21:24
- - Lex   Эх..ладно, что-то меня совесть замучила. Сейчас об...   Jan 2 2005, 21:28
- - virusman   Да я знаю, в чем баг скрипта, который в первом пос...   Jan 2 2005, 21:37
- - Comper   Такая же проблема и у меня сегодня возникла. Но я ...   Jan 2 2005, 22:24
- - Lex   я писал скрипты отчистки локации от мусора. Все ра...   Jan 2 2005, 22:31
- - virusman   QUOTE Такая же проблема и у меня сегодня возникла....   Jan 2 2005, 22:33
- - Lex   Neverwinter Script SourceoTemp = GetFirstObjectInA...   Jan 2 2005, 22:35
- - virusman   QUOTE я писал скрипты отчистки локации от мусора. ...   Jan 2 2005, 22:35
- - virusman   QUOTE (Lex @ Jan 2 2005, 22:35) Neverwinter Script...   Jan 2 2005, 22:43
- - Comper   Neverwinter Script Sourcestring sName, sTag; int n...   Jan 2 2005, 23:33
- - Lex   я не работаю с for в скриптах почти никогда. i=1; ...   Jan 2 2005, 23:36
- - Comper   Эффект тот же.   Jan 2 2005, 23:43
- - virusman   Кстати, юзайте Script Debugger. Завтра гляну, что...   Jan 3 2005, 00:02
- - Lex   что за дебагер?   Jan 3 2005, 00:09
- - Twin   Вариант рабочий: Neverwinter Script Sourcevoid mai...   Jan 3 2005, 10:36
- - DBColl   Да, Твин верно заметил, что для уничтожаемых плэйс...   Jan 3 2005, 11:54
- - Vanes   Neverwinter Script Sourcevoid VoidCreateObject(int...   Jan 3 2005, 14:07


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 14th June 2025 - 07:46