RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2436681 views

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

Какой-то непонятный глюк, наверняка кто-то сталкивался:

Делаю меню картинками посредством html - то есть вешаю на экран несколько картинок с названиями пунктов меню, к каждой цепляю ссылку.
Выглядит в коде примерно так:
‘<div><a href = “exec:gt ‘loc1’”><img src=“1”></a></div>’
‘<div><a href = “exec:gt ‘loc2’”><img src=“2”></a></div>’
‘<div><<a href = “exec:gt ‘loc3’”>><img src=“3”></a></div>’

Но возникает такая проблема - по каким-то причинам активная зона нажатия ссылки распределена неравномерно по картинке!
То есть ставлю один пункт меню - вся картинка активна.
Добавляю второй - на первой становится активной лишь половина картинки. Добавляю третий пункт - первая картинка становится неактивной! Как будто зона нажатия вытесняется куда-то…
Причем (совсем бред) активная зона меняется даже оттого, в каком порядке идут строчки в коде! т.е. если написать код так:
‘<div><a href = “exec:gt ‘loc2’”><img src=“2”></a></div>’
‘<div><<a href = “exec:gt ‘loc3’”>><img src=“3”></a></div>’
‘<div><a href = “exec:gt ‘loc1’”><img src=“1”></a></div>’

то активная зона меняет своё местоположение.
Никто не знает, как решать эту проблему? Указание точных размеров div-а не помогают.

Grey Rush:

<<a href = “exec:gt ‘loc3’”>>

А что это за странное оформление html-тега <a>?

Grey Rush,
проблема скорее всего в том что HTML теги выводятся без указания оператора, а это аналог *PL, как результат выводятся лишние переводы строки, вот они и перекрывают
попробуй сделать вывод через *P
*P ‘<div><a href = “exec:gt ‘‘loc1’’”><img src=“1”></a></div>’ и т.д.

werewolf:

проблема скорее всего в том что HTML теги выводятся без указания оператора, а это аналог *PL, как результат выводятся лишние переводы строки, вот они и перекрывают
попробуй сделать вывод через *P
*P ‘<div><a href = “exec:gt ‘‘loc1’’”><img src=“1”></a></div>’ и т.д.

Точно! Должно быть в этом и проблема, потому что разрывы активной зоны всегда имеют размер точно в ширину строки.
Благодарю!

UPD: Только что проверил - теперь всё работает как часы. Ещё раз огромное спасибо - у меня из-за этой проблемы вся игра накрывалась.

Товарищи у меня значит следующий вопрос, точнее 2:
1. Как сделать сокращение кода? Что я имею ввиду, допустим у меня в локации 50 строчек какого-то отлаженного кода, далее у меня идёт другая часть кода, как сделать так чтобы я мог сократить эти 50 строчек чтобы не проматывать каждый раз, решение такой проблемы есть например в MS Visual Studio, где ты можешь просто выделить необходимое количетсво строк и одним нажатием сократить их до одной строчки, как например “+ g = a + b…” и при нажатии это всё разворачивается. Тут я как то тоже случайно сделал сокращение строк только не понял как это работает. Подскажите как это сделать?
2. Так же такой вопрос(я видно очень плохо прочитал мануал если этого не понял): как мне вывести инфу в область инвентаря? Ну то есть я хочу чтобы там был обычный текст а не как объекты в инвентаре. Как добавить текст или его надо просто добавить с помощью какого-нить AddObj?

Добавлено: Во втором вопросе я имел ввиду нельзя как-то сделать постоянную обработку текста в области инвентаря как например в строке состояния путём команды pl

Edited at 31.10.2012 12:11 (13 years ago)

1. Сворачивание блока кода делается с помощью табуляции(клавиша “Tab” в левой части клавиатуры). Всю часть блока, которую мы желаем сворачивать, выделяем отступами. Пример:

Строка1 без табуляции
    Строка2 с табуляцией(или пробелами) в начале
    Строка3 с табуляцией(или пробелами) в начале
Строка4 без табуляции

Можно отступ делать табуляцией, можно пробелами. Строки 2 и 3 будут свернуты при нажатии “-”.

Как правило, с помощью отступов выделяются блоки “IF … END”, а также “ACT … END”. Это повышает читаемость кода.

2. В инвентарь можно добавлять только предметы. Если тебе нужно вывести дополнительную информацию для игрока, то для этого есть специальное окно “дополнительного описания”.

Благодарю за помощь, у меня следующий вопрос: могу ли я запихнуть в массив не переменную а целый список действий? Ну например не просто рандомное выскакивающие число а например если вдруг выберется этот элемент события то будет происходить какое-то действие и если это возможно то как это правильно написать? Так - random_event[1]: gt ‘something’?

такое поведение можно реализовать несколькими путями
1) офрмить каждое событие отдельной локой, соответственно в массиве хранить название лок

$random_event[] = 'first event'
$random_event[] = 'second event'
$random_event[] = 'third event'
gt $random_event[rand(0, ARRSIZE('$random_event')-1)]

2) хранить все события в одной локе и выбирать нужное по ключу, в массиве соответственно хранить ключ

#events_loc
if $args[0] = 'first':
	! код первого события
else if $args[0] = 'second':
	! код второго события
else
	! событие по умолчанию
end
- 

$random_event[] = 'first'
$random_event[] = 'second'
gt 'events_loc', $random_event[rand(0, ARRSIZE('$random_event')-1)]

3) хранить в массиве код события и вызвать его через dynamic

$random_event[] = {
	! код первого события
}
$random_event[] = {
	! код второго события
}
dynamic $random_event[rand(0, ARRSIZE('$random_event')-1)]

Спасибо тогда такой вопрос - можно ли одной строчкой задать одинаковое значение многим элементам массива, допустим:
$random[1] =  
$random[2] =  
А в ячейках с 3 по n(допустим 100) стоит одинаковое значение, не копировать же 100 строчек подряд?

Добавлено: и как работает оператор mod(можно на конкретных примерах) а то делаю так a = 17 mod 4 и он выдаёт 0 вместо 25

Edited at 01.11.2012 13:44 (13 years ago)

лучше тогда сохранить 3 элемента в массиве и изменить получение

random = rand(1, 100)
if random > 2: random = 3
dynamic $random_event[random]

mod возвращает остаток от деления, в твое примере должно быть 1 (а не 25 :)) - проверяй, может переменная потом еще меняется

А поподробнее с mod можно? ну например если тот 17/4 то будет 4,25 что будет делать mod?

поскольку в куспе поддерживаются только целые числа то 17/4 = 4
остаток от деление получится если от делимого отнять результат деление(без дробной части) умноженный на делитель
17 mod 4 = 17 - 4*4 = 1

Товарищчи! У меня вопрос:
Есть ли какая-нибудь команда (если нет, то как можно добиться похожего эффекта) которая одновременно означает все цифровые значения (меня кто нибудь понял?) Попытаюсь объяснить:
Мне надо сделать что-то типа закона. Размещу я его в Счетчике. В моем сознании все выглядит так:

ВСЕ_ЧИСЛОВЫЕ_ЗНАЧЕНИЯ = (КОМАНДА ОПРЕДЕЛЯЮЩАЯ ВСЕ ЧИСЛОВЫЕ ЗНАЧЕНИЯ)
if player[<<ВСЕ_ЧИСЛОВЫЕ_ЗНАЧЕНИЯ>> + ',телосложение'] = 100: $player['<<ВСЕ_ЧИСЛОВЫЕ_ЗНАЧЕНИЯ>> + ,телосложение'] = "Нормальное"

Можно конечно написать сей код для каждого игрока, однако это ужасно геморойно.

AKA,
1. Нельзя использовать для этих целей COUNTER.
2. Тебе нужно сделать цикл. У нас нет подробных уроков по использованию циклов.

Log in or Register to post comments.