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

 
Ответить в эту темуОткрыть новую тему
> Работа С Переменными В Другом Скрипте
Sindo
сообщение 23.11.2010, 17:14
Сообщение #1


*

Registred
Сообщений: 7
Регистрация: 23.4.2007
Группа: Пользователи
Наличность: 0
Из: СПб
Пользователь №: 9.651



ФВУО. Качаем таминг. Хочу чтоб на зверях в одном домашнем загоне на 10 голов скота качалось одновременно несколько чаров.
Есть 2 скрипта: "серверный" и клиентский. Клиентские запускаются для каждого прокачиваемого чара и ссылаются на серверный. Серверный скрипт - по сути база ИДшников и состояний зверья, в которую пишут и из которой читают клиентские скрипты.
Проблема в том, что через некоторое время (~2 круга по зверям) один из клиентских скриптов перестает писать в серверный, в результате чего все соответствующие поля массива заполняются метками второго скрипта (тестилось на примере 2.1) и для него не остается приемлемых целей,в то время как первый продолжает работать/читать нормально. Хотя на первом круге пишут и читают оба скрипта.
Client
Код
// taming  group (1/2) (c) Sindoatan

// структура %arr: каждая строка массива - значения параметров одного животного

// 1 - ИД животного, 2 - индикатор занятости, 3 - индикатор последнего хозяина



set $mark A // метка авторства приручения, должна быть индивидуальна для каждого участвующего тамера

//set #bd 5 // номер потока "северного" скрипта // вещь полезная и логичная, но  в пилоте еще не реализована %), поэтому заменяем в теле скрипта руками (строки отмечены МЕТКОЙ, всего строк 6) маска: set $aN %arr.#bd[#a N]

set $btnRel F6 // say+all_release в клиенте

set $btnUse F12 // LastObject/WFT/LastTarget в ассисте с UseItemType посоха



set $remember remembers

set $success accept

set $tamed already tame

set $failed fail

set $hungry hungry

set $far far away

set $skill changed

set $wait you must wait

set $cant see the target



:loop

set #a 1

    

while #a < 11

    //set lastobjectid 1234567890 // ИД еды для себя

    //send F5 // lastobject

    //set lastobjectid 1234567899 // ИД зеленой палки

    set $a2 %arr.5[#a 2] //обход невозможности использования массивов в if'ах // МЕТКА #bd

    set $a3 %arr.5[#a 3] //обход невозможности использования массивов в if'ах // МЕТКА #bd

    say MyMark><$mark IsFree><$a2 BeastMark><$a3

    if ($a2 = 0) and ($a3 <> $mark) //если зверь свободен и не мы его последний хозяин

        set %arr.5[#a 2] 1 // занимаем его // МЕТКА #bd

        set lasttargetid %arr.5[#a 1] // МЕТКА #bd

    else

        goto next

    end_if

    set #q 0

:repeat

    set #q #q +1

    if #q > 45 // тамим пока не затамим, но это на всякий случай

        goto next

    end_if

    set #i 0

    send $btnUse // LastObject/WFT/LastTarget в ассисте с UseItemType посоха

    wait 1000

    if lastmsg already

        goto next

    end_if

    say пЗверушка № #a, попытка № #q

    while_not lastmsg $success

        if (lastmsg $failed) or (#i > 3) // здесь #i вместо таймера

            goto repeat

        end_if

        repeat 10

            if (lastmsg old) or (lastmsg Loved) or (lastmsg again) or (lastmsg return)

                send {Tab}

                goto next

            end_if

            wait 200

        end_repeat

        if (lastmsg $wait) or (lastmsg $cant) or (lastmsg $hungry) or (lastmsg $skill) or (lastmsg $remember) or (lastmsg $tamed) or (lastmsg $far)

            goto next

        end_if

        set #i #i +1

    end_while

:next

    set %arr.5[#a 3] $mark // отмечаем. что мы - последний хозяин зверя // МЕТКА #bd

    set %arr.5[#a 2] 0 // освобождаем зверя // МЕТКА #bd

    send $btnRel //say all release

    set #a #a +1

end_while

goto loop


Server
Код
// taming group (2/2) (c) by Sindoatan

// структура %arr: каждая строка массива - значения параметров одного животного

// 1 - ИД животного, 2 - индикатор занятости, 3 - индикатор последнего хозяина

// и заставь наконец себя выяснить на кой мы качаем при таминге скотинке спиристпик посохом!!!



set %arr[1 1] 1302049

set %arr[2 1] 1313566

set %arr[3 1] 35768

set %arr[4 1] 1309509

set %arr[5 1] 1242385

set %arr[6 1] 1203135

set %arr[7 1] 1320501

set %arr[8 1] 16166

set %arr[9 1] 31435

set %arr[10 1] 1319811



set %arr[1 2] 0

set %arr[2 2] 0

set %arr[3 2] 0

set %arr[4 2] 0

set %arr[5 2] 0

set %arr[6 2] 0

set %arr[7 2] 0

set %arr[8 2] 0

set %arr[9 2] 0

set %arr[10 2] 0



set %arr[1 3] 0

set %arr[2 3] 0

set %arr[3 3] 0

set %arr[4 3] 0

set %arr[5 3] 0

set %arr[6 3] 0

set %arr[7 3] 0

set %arr[8 3] 0

set %arr[9 3] 0

set %arr[10 3] 0





while 1 = 1

    wait 5m

end_while

Подскажите, плиз, в чем может быть ошибка и как ее/их исправить? Или киньте ссылкой, если уже обсуждалось, не нашел.


--------------------
Я занят.. другой, более важной ерундой

May the Force be with you..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

- Текстовая версия | Версия для КПК Сейчас: 18.5.2024, 12:44
Designed by Nickostyle