RU 📌 Pinned

Как сделать?

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

Aaaspavel,
в плеере это не отключается, потому что если отключить, то автор не найдёт, что у него в коде работает неправильно.

Так что либо автор игры найдёт ошибку и исправит, либо придётся терпеть.

Aleks Versus Moderator 05.03.2016 12:46 (9 years ago)

Aaaspavel,
дело не в гифке. Не может такого быть. Дело в атрибутах на <img>. Какой-нибудь onload, onmouse или другое событие, что работает с JS. Или это событие стоит на блоке, в который завёрнуто изображение.

так чето я немного конкретно затупил:
есть лока changestat которая вызывается по gs и ей передается имя переменной и число, например:
gs ‘changestat’, ‘hp’, -100
или
gs ‘changestat’, ‘armor’, 10

сама лока должна к этой переменной добавлять число, но я не могу понять, как там оперировать именно переменной, а не args[0]

p.s. if не предлагать, очень уныло, да и переменных туева хуча.
тоесть
If $args[0] = ‘hp’:
hp += args[1]
end
If $args[0] = ‘armor’
armor += args[1]
end
работает, но не то что надо

Chaos Legion, я так понимаю тебе надо написать функцию для общего случая, чтобы она работала без нагромождений условий. Я бы сделал используя оператор DYNAMIC.
Локация, на которой лежит твоя функция:

gs 'changestat', 'hp', -100

Сама локация ‘changestat’:

DYNAMIC '<<$ARGS[0]>>+=<<ARGS[1]>>'

Здесь:
$ARGS[0] - название переменной, которую нужно изменить
ARGS[1] - на сколько нужно изменить переменную

Спасибо. Не знаю как, но работает.
Даже ограничения работают:

DYNAMIC ‘if <<$ARGS[0]>> < 0 : <<$ARGS[0]>> = 0’
DYNAMIC ‘if <<$ARGS[0]>> > 10000: <<$ARGS[0]>> = 10000’

Chaos Legion, DYNAMIC выполняет код, записанный в виде строки текста. Но прежде чем выполнить код, записанный как текст, он формирует строку, если в ней есть подвыражения(то, что записано в таких скобочках <<какой-то_аргумент>>).
То есть оператор DYNAMIC в твоем случае выполняет не строку

'<<$ARGS[0]>>+=<<ARGS[1]>>'

а строку

hp+=-100

Поэтому оно и работает.

Вот бы в мануале так по-человечески объяснено было, а то там имхо понятно только тому, кто и так это знает. То есть не объяснение, а констатация.

Aleks Versus:

Дело в атрибутах на <img>. Какой-нибудь onload, onmouse или другое событие, что работает с JS. Или это событие стоит на блоке, в который завёрнуто изображение

в том то и проблема, что эта ошибка вылазит не при каждом выводе изображения, а только при первом его воспороизведении, если изображение выводится снова, то ошибка js не выскакивает.

Nex:

в плеере это не отключается, потому что если отключить, то автор не найдёт, что у него в коде работает неправильно.

если отключить, то автор не найдёт - вот именно этот момент меня интересует подробнее… автор потестил и выложил, все работает, как отключить то теперь? я ж не автор, мне само сообщение мешает. или вам религия не позволяет сказать три простых слова: Я НЕ ЗНАЮ?

Aaaspavel,

Aaaspavel:

как отключить то теперь?

Nex:

это не отключается

Nex:

Aaaspavel написал(а):
как отключить то теперь?
Nex написал(а):
это не отключается

зайдём с другой стороны… программа выводит сообщение - значит в программе прописано действие - вывести сообщение. требуется убрать из программы это самое прописанное действие, либо прописать игнор вывода.

задача
выполняются множество последовательных действий, при каждом следующем действии есть выбор продолжить или уйти(будет повышаться шанс неудачи, но это к делу не относится) в итоге получается огромный код. как упростить его (допустим чтобы вариант “уйти” прописать только 1 раз а не в каждом действии)
з.ы. логика что при прерывании действия (неудаче или “уходе”) процесс должен начинаться сначала

вот пример, при 10+ “этапах” просто стена кода

Spoiler

акт”шить платье”:
cla
*clr
img src=“pic/манекен.жпг
“вы начали шить платье”
акт”разрезать ткань”:
cla
*clr
img src=“pic/ткань.жпг
“вы разрезали ткань”
акт”сшить лоскуты”:
cla
*clr
img src=“pic/лоскуты.жпг
“вы сшили лоскуты”
act “Уйти” :
cla
*clr
gs curloc
end
end
act “Уйти” :
cla
*clr
gs curloc
end
end
act “Уйти” :
cla
*clr
gs curloc
end
end

saks:

вот пример, при 10+ “этапах” просто стена кода
Спойлер

извиняй, но это пример чего? где твой рандом, шансы неудачи которого повышаются? если у тебя вылазит ошибка в итоге и ты не понимаешь где именно - разнеси код на 10 локацций, да и всё, рандом - удача гт след локация, неудача - гт начальная

Aaaspavel,
если ты имеешь в виду плеер, то из плеера это не будет убрано, по причинам описанным выше.

Можно только найти баг в самой игре, исправить, тогда сообщение выводиться не будет.

Nex:

из плеера это не будет убрано, по причинам описанным выше

не будет или нельзя вообще?

Aaaspavel:

saks:

вот пример, при 10+ “этапах” просто стена кода
Спойлер

извиняй, но это пример чего? где твой рандом, шансы неудачи которого повышаются? если у тебя вылазит ошибка в итоге и ты не понимаешь где именно - разнеси код на 10 локацций, да и всё, рандом - удача гт след локация, неудача - гт начальная

это пример кода (написаный по памяти) и логики его написания, а не сам код. рандома нет, потому что в игру еще не введены числовые переменные а пишется скелет, да и упомянул я его чтобы наглядней показать поставленную задачу
с кодом у меня проблем нет, проблема с его размером и лучшей оптимизацией однотипных действий. разносить код по локациям не вариант, в игре будет 7-9 таких кодов, 90 локаций както многовато

Log in or Register to post comments.