Как сделать?
…
dmvikar,
Спасибо, попробую еще немного покорпеть.
QSP позволяет это сделать. Уверен на 100%. Даже управление можно щелчком мышки (на поле) сделать. Нет некоторых удобных вещей, но большенство или даже всё можно легко добавить пользовательскими функциями.
Здравствуйте! Я совсем новичок в QSP, и вообще не программист. Как мог искал, но не могу понять как это сделать. У меня рандом гененрирует персонажей, дальше те из них (не все), с которыми игрок знакомится, записываются в записную книжку. А дальше мне нужно чтобы игрок мог зайти в запись конкретного персонажа в записной книжке и увидеть его статы/совершить действия. Вот последний этап у меня и не получается. Логика такая:
1. при формировании персонажа у меня складываются рандомные характеристики:
$gname[gname] !имя
$gsurname[gsurname] !фамилия
!остальные статы
2. Когда происходит знакомство, они переходят в запомненный массив:
fid=fid+1
$friendname[fid]=$gname[gname]
$friendsur[fid]=$gsurname[gsurname]
!остальные статы по той же логике
$fid[fid]=$friendname[fid]+' '+$friendsur[fid]
3. Потом в записной книжке я вывожу этот массив:
i=0
:for
if i<arrsize('$fid'):
'<a href="EXEC:GT''Друг_интеракция''"><<$fid[i]>></a>'
i=i+1
jump 'for'
end
А вот как на новой локации, на которую по EXEC:GT переходит игрок, показать имя и фамилию и другие статы конкретного перса - уже не могу понять. Буду очень благодарен за помощь.
jazzy77,
Это достаточно просто. Вам необходимо вывести на новой локации что-то вроде:
$friendname[x]
$friendsur[x]
$fid[x]
! тут я бы рекомендовал избегать одинаковое название текстовой и числовой переменной ($fid || fid)
...
И другие параметры. Но для этого необходимо подставить под ‘x’ порядочный номер (индекс).
Вы можете сделать это в коде ссылки.
К прим.:
'<a href="EXEC: x = <<i>> & GT''Друг_интеракция''"><<$fid[i]>></a>'
Так, при цикле каждая ссылки при клике будет назначать переменной ‘x’ значения переменной ‘i’, и соответствовать ‘шагу’ массива. Проще говоря, первая ссылка будет назначать переменной значение 0, вторая - 1, третья 2 и т.д.
А на локации будут выводится данные “по иксу”.
Надеюсь, смог помочь.
HronoStranger,
'<a href="exec: gt ''Друг_интеракция'', <<i>>"><<$fid[i]>></a>'
$friendname[args[0]]
$friendsur[args[0]]
Спасибо большое, получилось!
dmvikar:
$act_code=
Код:
“<a href=‘exec:dynamic $act_code’>Выполнить</a>”
Вообще супер код! Теперь в начале всех локаций можно просто создать локацию предустановщик массивов, а потом ссылаться на них в течение всей игры! Это шедевр
Доброго времени суток! Возможно я не по теме, но помогите пожалуйста!!! Во время создания игры через Qgen, был перезагружен пк. Теперь файл игры не открывается, пишет ошибку 105. Как восстановить файл? Игра разрабатывалась несколько лет!!!
HronoStranger,
спасибо большое за помощь, у меня появился новый вопрос. Тех, с кем игрок подружился, он может добавить в группу. Но мне необходимо, чтобы когда игрок распускает группу, добавленные нпс из нее удалялись.
Добавляются в группу они так:
friendactor[id]=1
и нпс в команде может быть несколько. Но добавляются они в локации управления отношениями с конкретным нпс, а распускается группа - совсем в другой локации. Я так понял, что мне нужно перебором массивов найти те записи массива friendactor[id] у которых значение=1.
Это, как я понял, это можно сделать так:
ARRPOS('friendactor',1)
а вот как мне дальше массово поменять значение 1 на 0?
Спасибо!
7Юрий3:
Доброго времени суток! Возможно я не по теме, но помогите пожалуйста!!! Во время создания игры через Qgen, был перезагружен пк. Теперь файл игры не открывается, пишет ошибку 105. Как восстановить файл? Игра разрабатывалась несколько лет!!!
Блокнотом можешь открыть?
jazzy77,
:mark
a=ARRPOS('friendactor',1)
if a!-1:
friendactor[a]=0
jump'mark'
end
Этот код перелопатит весь массив friendactor и все значения 1 поменяет на 0.
jazzy77,
ARRPOS не совсем подойдет. Возможна ошибка, при которой будет возвращаться только первый индекс.
Постараюсь расписать попроще.
Перебор:
x = 0
:Lusia
If friendactor[x] = 1: friendactor[x] = 0
If x <= arrsize('friendactor') + 1: x += 1 & jump 'Lusia'
Это можно записать в отдельной локации. В локации-управлении группой делаем ссылку или ‘Act’ (распишу как однострочное действие) с данным кодом:
Act 'Распустить группу': gs '[имя локации с перебором]' & gt $curloc
*$curloc в кавычки брать не нужно. Код будет работать и в ссылке, но тогда имя локации-перебор нужно брать в две единичные (или две двойные) кавычки.
А теперь спойлер:
Spoiler
Перебор не нужен, если все значения массива необходимо обнулить. Просто в действие пишем ‘killvar “friendactor”’. (одинарные кавычки убираем) И следом обновляем локацию.
Но спойлер не просто так) Я не знаю архитектуру. Советую попробовать оба способа. Если “киллвар” не вызовет ошибок или артефактов (а скорее, не вызовет), то можно оставить его. В противном случае - перебор.
HronoStranger,
dmvikar,
спасибо, действительно, сработал killvar :) Я как-то этой функции побаивался - по серости предполагал, что она удаляет массив, а не обнуляет его :) теперь буду умнее.
jazzy77,
Вообще-то, именно удаляет. Просто в qsp все несуществующие значения числовых переменных равны нолю.
Notepad++ открывает.