RU 📌 Pinned

Как сделать?

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

evp,

evp:

Включает в себя интервал 12:00…14:59

Эт уже я затупил,ты все верно написал!

Я прошу прощения,еще один тупой вопрос.
Допустим 2 перса разговаривают, как сделать так чтоб если я например 5й раз нажимаю действие “поговорить” второй перс сказал чтоб я отвалил.Чтобы не читерить отношения например.
Я так понимаю нужно сделать локацию с заглушкой,где второй перс говорит чтоб я отстал,а как сделать так чтоб именно на 5й раз эта заглушка открылась?

aplesin:

если я например 5й раз нажимаю действие “поговорить” второй перс сказал чтоб я отвалил

act 'Поговорить':
Kol_blabla+=1
  if Kol_blabla<5:
   'Бла-бла'
  else 
   'Отвали, задолбал.'
  end 
end

Правда, тебе еще надо придумать как сбросить эту переменную в 0. А иначе это будет одноразовое ограничение.

Как-то так:

act "Поговорить":
    if время_последнего_разговора: счетчик_разговоров = iif(время - время_последнего_разговора >= 24*60, 0, счетчик_разговоров + 1)
    время_последнего_разговора = время
    if счетчик_разговоров < 5:
        !разговор
    else
        *nl 'Отвали!'
    end
end

Через сутки можно будет поговорить снова. Можно, разумеется поменять интервал “неразговорчивости”. Даже сделать его случайным по продолжительности в разумных пределах.

Edited at 04.11.2016 17:43 (9 years ago)
прохожий #1866 05.11.2016 16:42 (9 years ago)

Доброго времени суток. Скажите, как в диалоговое окно засунуть несколько условий? Если сделать так:
if a=1 : MSG ‘a’
if b=1 : MSG ‘b’
то вылезет 2 окна по очереди. А если сделать так:
MSG:
if a=1 : ‘a’
if b=1 : ‘b’
то будет ошибка синтаксиса. Как в одно диалоговое окно запихать несколько условий?

Aleks Versus Moderator 05.11.2016 17:44 (9 years ago)

прохожий,

if a=1 : $messaga+='a' 
if b=1 : $messaga+='b'
if a=1 or b=1: msg $messaga

если я правильно понял.

прохожий #1866 05.11.2016 20:39 (9 years ago)

Aleks Versus, спасибо большое, именно то, что было нужно.

St-john,
evp,

Спасибо большое за помощь :)
evp,
Это нужно ввести “счетчик_разговоров” и “время_последнего_разговора”,вот если с “счетчик_разговоров” проблем нет,а “время_последнего_разговора” как вычислить ?

aplesin,
У тебя календарь в игре как реализован? Время как отсчитывается?

St-john,

St-john:

aplesin,
У тебя календарь в игре как реализован? Время как отсчитывается?

Календаря нет,не нужен пока,а время.

!время
время=время
дни=время/(24*60) 
часы=(время-дни*24*60)/60 
минуты=время-часы*60-дни*24*60 
минуты_прошедшие_с_начала_суток = время - дни*(24*60)

aplesin, я тебе дал готовый код, в котором вычисляется время последнего разговора. Ничего дополнительно делать не надо. Если тебе что-то не понятно в примере, надо просто прочитать справку по использованным операторам, а если это не поможет - задать вопрос.

Конкретно время_последнего_разговора определяется, внезапно, в этой строчке:

время_последнего_разговора = время

evp,
Я может чего не понимаю и вообще не в свое дело лезу, но просто логику понять не могу. Не правильнее ли будет вариант:

act "Поговорить": 
    счетчик_разговоров = iif(время - время_последнего_разговора >= 24*60, 0, счетчик_разговоров + 1)     
    if счетчик_разговоров < 5: 
        !разговор 
        время_последнего_разговора = время
    else        
        *nl 'Отвали!' 
    end 
end

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

evp,

evp:

aplesin, я тебе дал готовый код, в котором вычисляется время последнего разговора. Ничего дополнительно делать не надо. Если тебе что-то не понятно в примере, надо просто прочитать справку по использованным операторам, а если это не поможет - задать вопрос.

я дико извиняюсь…я только учусь! Спасибо!

St-john:

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

а оно так и не выполняется пока раз 5 не нажмешь =) Я подкорректировал маленько,работает как надо)

St-john:

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

То есть, вы утверждаете, что у меня логическая ошибка? Докажите.

aplesin, вас это тоже касается.

Вы оба вводите в заблуждение читателей.
Вот мой код:

Spoiler
time = 1
act "Поговорить":
	if lasttime: counter = iif(time - lasttime >= 24*60, 0, counter + 1) 
	lasttime = time 
	if counter < 5:
		time += 5
		*nl 'разговор ' & counter 
	else 
		time += 1
		*nl 'Отвали!' 
	end 
end

Вот результат:

Spoiler
разговор 0
разговор 1
разговор 2
разговор 3
разговор 4
Отвали!
Отвали!
Отвали!
Отвали!
Отвали!
Отвали!

Что же касается время_последнего_разговора = время, то расположение этого оператора зависит исключительно от того, что вы хотите получить. В моем варианте NPC не будет с вами говорить, если с момента вашего последнего обращения к нему прошло меньше суток. В вашем варианте NPC учитывает только состоявшийсяразговор. Мой NPC менее лоялен к бессмысленному троллингу :)

Log in or Register to post comments.