RU 📌 Pinned

Как сделать?

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

кто подскажет как в такой системе боя

Spoiler

http://qsp.su/index.php?option=com_content&view=article&id=82:fight-10&catid=36:2009-02-19-06-11-21&Itemid=76

прикрутить другие способы атаки, в т.ч. и именные. Т.е. есть у меня маг (при выборе персонажа стоит Маг =1(я это условие использую для изображений и вариантов диалогов)) и у него есть огненный шар. Понятно, что у воина его быть не должно. Как заставить что бы в бою в игре за мага было действие огненный шар, а у война, к примеру, сильный удар.

Драккан,

IF тип_бойца = 1:
	act 'Огненный шар':
	....
	end
ELSE
	act 'Сильный удар':
	....
	end
END

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

Spoiler

if hp<=0:
‘Вас убил <<$имя_врага>>.’
act ‘Конец’:gt ‘поражение_свалка_крыса’
if stam<=0:
‘Вы упали без сознания и вас загрызли.’
act ‘Конец’:gt ‘поражение_свалка_крыса’
else
act ‘Атаковать’:

этот вариант не пашет

Ни одного end-a, вот и не пашет.

Драккан,

IF hp < 0:
   'Вас убил <<$имя_врага>>.' 
   ACT 'Конец':GT 'поражение_свалка_крыса' 
   IF stam < 0: 
   'Вы упали без сознания и вас загрызли.' 
    ACT 'Конец':GT 'поражение_свалка_крыса' 
ELSE 
   ACT 'Атаковать':
 END
END

Надеюсь, END’ы в других частях кода расставлены… :D

Oliver:

Надеюсь, END’ы в других частях кода расставлены… big_smile

конечно, без IF stam < 0:
‘Вы упали без сознания и вас загрызли.’
ACT ‘Конец’:GT ‘поражение_свалка_крыса’ всё прекрасно работало. Просто непривычно видеть как при мертвецкой усталости еще и мечем махают.

Oliver:

IF hp < 0:
‘Вас убил <<$имя_врага>>.’
ACT ‘Конец’:GT ‘поражение_свалка_крыса’
IF stam < 0:
‘Вы упали без сознания и вас загрызли.’
ACT ‘Конец’:GT ‘поражение_свалка_крыса’
ELSE
ACT ‘Атаковать’:
END
END

к сожалению, код не работает, пропадает действие “атаковать”, остается лишь “сильный удар”. пришлось сделать так

Spoiler

$ONNEWLOC = ‘ONNEWLOC’
IF (stam < 10) AND (уснул= 0):
уснул = 1
GOTO ‘поражение’
END

можно как нибудь сделать, что бы вот так засыпать только на улице? А в бою выносливость опускалась до 0 и персонаж умирал, игнорируя приведенный мною пример.

IF hp < 0: 
   'Вас убил <<$имя_врага>>.' 
   ACT 'Конец':GT 'поражение_свалка_крыса' 
END
IF stam < 0: 
   'Вы упали без сознания и вас загрызли.' 
    ACT 'Конец':GT 'поражение_свалка_крыса' 
ELSE 
   ACT 'Атаковать': 
      ...код атаки...
   END 
END
Белый Шарик #100 15.07.2015 07:13 (10 years ago)

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

Белый Шарик,

! где-то в локациях переменные приняли значения
variableA = 1
variableB = 2
variableC = 3
variableD = 4
!Теперь работаем с ними
variables[] = variableA
variables[] = variableB
variables[] = variableC
variables[] = variableD
! определяем наибольшее значение
choise = MAX('variables')
! определяем имя переменной с наибольшим значением
choise = ARRPOS('variables', choise)
if choise = 0:
    $choise = 'variableA'
elseif choise = 1:
    $choise = 'variableB'
elseif choise = 2:
    $choise = 'variableC'
else
    $choise = 'variableD'
end
*nl 'Наибольшее значение имеет переменная под именем ' + $choise

Дальше с этими результатами можешь делать что угодно. Но подумай, что будет, если 2 или больше переменные будут иметь одинаковое значение и это значение будет наибольшим. Например: 1,2,5,5.

Белый Шарик,
evp всё уже объяснил, но я составил свой способ, без переписывания в новый массив. Как бы то же самое, но долгоиграющее…

Spoiler
first = rand (10)
second = rand (10)
third = rand (10)
forth = rand (10)

'<<first>>
<<second>>
<<third>>
<<forth>>'

IF MAX (first, second, third, forth) = first: 
	'Первый' 
ELSEIF MAX (first, second, third, forth) = second: 
	'Второй' 
ELSEIF MAX (first, second, third, forth) = third: 
	'Третий' 
ELSEIF MAX (first, second, third, forth) = forth: 
	'Четвёртый' 
END

act 'Again': gt $curloc

evp:

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

В предложенных примерах большим будет первое значение среди равных. Если в условии задачи возможно исполнение всех равных, то тогда можно записать условие через 4 однострочных IF’а

Белый Шарик #100 15.07.2015 09:29 (10 years ago)

Премного благодарен!

И еще один вопрос. Сейчас я использую такую карту локаций

Spoiler

if $selobj = ‘Карта’:
$loc_menu[0]=‘лок1: loc_1’
$loc_menu[1]=‘лок2: loc_2’
$loc_menu[2]=‘лок3: loc_3’
$loc_menu[3]=‘лок4: loc_4’
$loc_menu[4]=‘лок5: loc_5’
$loc_menu[5]=‘лок6: loc_6’
$loc_menu[6]=‘ОБНОВИТЬ: loc_reload’
menu ‘$loc_menu’
unsel
end

и просто добавляю в инвентарь персонажа предмет “Карта” через которую он может путешествовать по локациям (это сделано для того, что бы не перегружать действиями окно действий). Но вот в чем суть вопроса: Локации открыты сразу все, а мне нужно что бы персонаж их находил и они добавлялись по мере нахождения. Нахождения можно сделать через RAND, а вот как сделать что бы они добавлялись постепенно? Или какую сделать менюшку вместо предмета “карта”?
за основу взят вот этот файл

Spoiler

qsp.su/storage/files/1388/menu_svoystva.qsp

Это вместо одного клика, для перехода надо сделать 2? Весьма спорная идея.

Лучше уж 6 иконок локаций внизу экрана, если не хотите перегружать меню действий.

ладно, сам с этим разберусь.
еще вопрос, как сделать ежедневные квесты с вероятностью их респа. Поясняю, ежедневный квест с проверкой каждый новый день в полночь. Шанс 40 процентов что квест будет не доступен, 60 % что будет доступен. За основу взято времяисчисление от сюда http://qsp.su/attachments/time.qsp

Log in or Register to post comments.