singapur22
И на ночь глядя последний вопрос на сегодня\завтра :-)
Чтобы "не умножать сущности без необходимости" (как говаривал Оккам), решил сделать вместо десятка функций по отбору ставок у ГГ - одну. Но чтобы брала точно по индексу включенного поршня (ну то есть в соответсвии с поршнем, который привязан к фразе со ставкой)
--\ функция забирающая сумму ставки у ГГ в соответствии с выбранной фразой\включенным поршнем
local stavka = {500, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000}
function transfer_money()
local tab = {"frase_1","frase_2","frase_3,"frase_4",
"frase_5","frase_6","frase_7","frase_8","frase_9",
"frase_10"}
local s = stavka[a]
for a,v in ipairs(tab) do
if db.actor:has_info(v) then --\ или так? if db.actor:has_info("frase_"..a) then
db.actor:transfer_money(s, nps)
end
end
end
форум зараза не воспринимает i в квадратных скобках
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
function name()
for n, s in ipairs(stavka) do
if db.actor:has_info("frase_"..n) then
db.actor:transfer_money(s, nps)
end
end
end
Как говорится, хватит и одной (таблицы).
P.S. не на ночь, а под утро. У нас уже 5:00
отредактировал(а) singapur22: 01-09-2009 01:05 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
помогите уменя MOD SIMBION стоит короче я научился менять стоймость оружия и артефактов и изменяю их свойства увел патроны в магазине и убираю отдачу как менять цену брони я этот файл нашёл но там нет надписи cost или я не тот файл вскрыл:-G
наши проиграли в ванкувере потому что все питались в макдональдсе. у америкосов имунитет на эту еду. но в сочи победим мы. потому-что только у нас имунитет на чебуреки ашота.
сталкер gluk
ну как этот нет? А это что
;--/ КОСТЮМ НОВИЧКА
;---------------------------------------------------------------------------------------------
[novice_outfit]:outfit_base
cost = 1000
singapur22
У нас получается разница в три часа :-)
а вместо i, v, k, значит можно любые символы использовать...так ну теперь с твоей поправкой последней функции можно уже в диалог все вставлять и проверять первый (упрощенный вариант) тотализатора.
Только вот че то я загнался кое с чем :
как в эту функцию добавить
function bablo()
local j = math.random(10)
local summa = sums[j]
db.actor:give_money(summa)
db.actor:give_info_portion("prize_"..j)
end
еще и отбор денег - db.actor:transfer_money(summa, nps) - для проигрыша - пока ведь в ней только выигрыш дается...
интересно а в таблице ставок отрицательные числа можно использовать?
добавлено спустя 2 минут
S.н.а.й.п.е.р.
config\creatures
отредактировал(а) erlik: 01-09-2009 09:12 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Точно. А я чёта и не подумал. Зачем делать рандом на выигрыш\проигрыш, когда можно в ту же таблицу просто внести отрицательные числа. А уже в функции проверять на больше\меньше ноля. Только вот придётся переделывать систему с поршнами. Ты мне объясни, как у тебя происходит работа в диалоге? Что открывают в них поршны?
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Хотя с другой стороны это конечно и не обязтально - так как сумма ставки(которая отбирается в любом случае сразу же ) может превышать сумму выигрыша из таблицы выигрышных сумм.
Но с другой - хотелось попробовать и с тем вариантом, когда ГГ может уйти в очень большой минус при серьезном проигрыше...
B-A-R-O-N
я делал новый ранг - но это долго расписывать...
там надо game_relation ковырять. В общем смотри под спойлером.
типа так
Мой новый ранг - general
;шкалы для вывода названий вместо чисел
;рейтингов, репутаций и благосклонности в интерфейсе
rating_names = novice, 300, experienced, 600, veteran, 900, master, 1500, general
сюда пишешь новый ранг и цифры которые будут ему соответствовать - например 1500, имя ранга
singapur22
система такая.
10 фраз для ГГ со ставками:
Типа " Сегодня ставим по 10 тыщ." --\ выпадает рандомом - функция выдачи поршней рандомно выдает поршни для фраз
Отказываюсь --\ фраза для отказа \ выпадает всегда вместе с рандомной фразой
Дальше при активации фразы со ставкой - функция отбора суммы ставки отбирает сумму - ориентир выданный поршень. Здесь же - на фразе - активация функции рандомных выигрышей. Она же выдает другую серию поршней - для обуславливания фраз ответов NPC.
В конце диалога всем выданным поршням делалется kill спец. функцией.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Ну да. Вообщето ты прав. Здесь не должно быть отрицательных чисел. Но у тебя есть такой глюк. У тебя все ситуации выигрышные. Тоесть, как минимум 50% должно быть с выигрышем раном нулю.
А с минусами можно решить так. Делать ставки в долг (как и делается в реале). Тоесть. Например у ГГ в наличии 5000, он делает ставку на 100000 и проигрывает. В итоге он остаётся должен 95000 тугриков.
добавлено спустя 4 минут
erlik А как у тебя фиксируется, какая фраза выпала? Как ты определяешь, какую сумму выщитывать у актора для ставки?
отредактировал(а) singapur22: 01-09-2009 10:04 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Почему все выигрышные?
Если например выпадет ставка 40 тыщ (денежка тут же отнимется), а выигрыш будет 500 р...
У меня пока таблица ставок и таблица выигрышей совпадают - то есть в них одни и те же суммы.
В этом варианте от 500 р. до 40 тыщ.
а для проверки ко-ва бабла у ГГ в кармане надо делать функцию... или не надо?
добавлено спустя 3 минут
Так вот же функция
--\ функция забирающая сумму ставки у ГГ в соответствии с выбранной фразой\включенным поршнем
local stavka = {500, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000}
function name()
for n, s in ipairs(stavka) do
if db.actor:has_info("frase_"..n) then
db.actor:transfer_money(s, nps)
end
end
end
какой поршень был для фразы то по индексу поршня будет и сумма из таблицы браться
то есть фразе_1 (поршень для фразы\ставки) будет соответстовать 500р. фразе_2 - 1000 р.
и т.д.
добавлено спустя 2 минут
хотя суммы ставок надо подкорректировать
отредактировал(а) erlik: 01-09-2009 10:18 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik В том то и дело, что выигрышные. Ты ведь, хоть 500 но выигрываешь. А нужно ещё сделать без выигрышные варианты. Добавь в таблицу ещё и 0.
Конечно нужно. А без этого, вылета не миновать.
Делаем типа так. Создаём некую переменную в теле файла, в которой будет сохраняться долг. Затем в функции проверяем сумму в наличии у ГГ. Если больше ставки, то просто выщитываем сумму ставки. Если меньше, то из ставки выщитываем сумму в наличии у ГГ, отбираем, и остаток сохраняем в переменной долга. После выигрыша, проверять наличие суммы в долге и если у ГГ появилась хоть какая то сумма, то погасить её в честь долга.
добавлено спустя 1 час 8 минут
erlik Вот, я составил схему тотализатора, на скорую руку. Принцип данной схемы:
1. Выигрыш всегда превышает сумму ставки (можно переделать)
2. На выигрыш даётся всего 25%
3. Выигрыш разбит на 4 типа выигрыша. (можно разбить на больше)
а. 12.5% на то, что выиграешь сумму ставки умноженную в двое.
b. 6% на то, что выиграешь сумму ставки умноженную в трое.
c. 4% на то, что выиграешь сумму ставки умноженную в четверо.
d. 2.5% на то, что выиграешь сумму ставки умноженную в пятеро.
При каждом типе выигрыша, выдаётся свой поршен.
Если проиграл, то ничего не выдаётся. В этом случае, в диалоге производить проверку на отсутствие всех четырёх поршней.
Использовал систему с долгом. Просмотри, тебе это пригодится, для своей разработки.
local dolg = 0
function stavka_100(actor, npc)
local stavka = 100
this.transfer_money(actor, npc, stavka)
end
function stavka_500(actor, npc)
local stavka = 500
this.transfer_money(actor, npc, stavka)
end
function stavka_1tysh(actor, npc)
local stavka = 1000
this.transfer_money(actor, npc, stavka)
end
function stavka_5tysh(actor, npc)
local stavka = 5000
this.transfer_money(actor, npc, stavka)
end
function stavka_10tysh(actor, npc)
local stavka = 10000
this.transfer_money(actor, npc, stavka)
end
function stavka_50tysh(actor, npc)
local stavka = 50000
this.transfer_money(actor, npc, stavka)
end
function stavka_100tysh(actor, npc)
local stavka = 100000
this.transfer_money(actor, npc, stavka)
end
function transfer_money(actor, npc, stavka)
local summa = actor:money()
if summa >= stavka then
actor:transfer_money(stavka, nps)
else
dolg = stavka - summa
actor:transfer_money(summa, nps)
end
this.totalizator(actor, npc, stavka)
end
function totalizator(actor, npc, stavka)
if math.random(100) <= 25 then --выиграл или проиграл
local c = math.random(100)
if с >= 0 and c <= 50 then
actor:give_money(stavka * 2)
game_stats.money_quest_update (stavka * 2) --выиграл в двое больше
actor:give_info_portion("vyigrysh_2")
elseif c > 50 and c <= 75 then
actor:give_money(stavka * 3)
game_stats.money_quest_update (stavka * 3) --выиграл в трое больше
actor:give_info_portion("vyigrysh_3")
elseif c > 75 and c <= 90 then
actor:give_money(stavka * 4)
game_stats.money_quest_update (stavka * 4) --выиграл в четверо больше
actor:give_info_portion("vyigrysh_4")
elseif c > 90 and c <= 100 then
actor:give_money(stavka * 5)
game_stats.money_quest_update (stavka * 5) --выиграл в пятеро больше
actor:give_info_portion("vyigrysh_5")
end
local summa = actor:money()
if dolg > 0 then
if summa >= dolg then
actor:transfer_money(dolg, nps) --при выигрыше, погасить долг
dolg = 0
else
dolg = dolg - summa
actor:transfer_money(summa, nps) --ну или хотябы частично, если выигрышь меньше долга.
end
end
end
end
function save_dolg(p) --функция сохранения долга
p:w_u32(dolg)
end
function load_dolg(r) --функция загрузки долга
dolg = r:r_u32()
end
Данный тип тотализатора хорош тем, что выигрышь увеличивается с увеличением ставки.
добавлено спустя 1 час 1 минуту
Мужики У кого есть возможность отредактировать, например АК47, в 3DsMaxe?
отредактировал(а) singapur22: 01-09-2009 13:31 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
B-A-R-O-N
На вики, хотя это и очень полезная база знаний, того, о чем ты спрашивал - нет.
Так как, чтобы сделать то что хочешь необходимо написать довольно сложный скрипт.
Его примеры ты можешь найти в модах - например АМК или Симбионе, в который входят коды из АМК.
Например скрипт watcher_act.script в АМК или m_watcher.script - в Симбионе. Эти схемы и являются скриптами дающими неписям возможность "собирательства" вещей с трупов или артов с земли.
Внедрить эти схемы в оригинал простым переносом файлов вряд ли получится, так как они завязаны с другими файлами, и нужно установить все внутренние взаимосвязи, которые потом так же нужно будет внести в файлы оригинальной игры .
Если хочешь научится писать скрипты, то тебе надо для сходить к примеру на _http://www.lua.ru/doc/ почитать официальное руководство по языку lua. (вещь конечно не простая, но зато дающая базовые представления о программировании на lua).
На вики есть всего лишь одна статья Начальные сведения о скриптах
которая посвящена общему понятию о скриптах. И по ней писать скрипты не научишься.
Так что флуд разных незнаек с "орегинальным" ником - не слушай.
добавлено спустя 3 часа 48 минут
singapur22
придумал еще один вариант тотала...рандомность намечается просто жесть, но не знаю будет ли работать.
В общем составил для каждой ставки по таблице выигрышей - где то по 100-120 вариантов призовых сумм. Суммы повторяются - скажем для миним. ставки - 15 раз по 0, 14 раз по 500р, 13 раз по 1000, и тд. Суммы по прежнему фиксированные, просто их набор в каждой таблице (своя для каждой ставки) разный - с уменьшением числа безвыигрышных вариантов и числа мелких выигрышей в пользу крупных - это для максим ставки.
local prize = {0, 500, 1000, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 100000, 200000, 300000, 400000, 500000, 1000000}
local sums_1 =
local sums_2 =
local sums_3 =
и т.д
таблицы сюда не пишу, так очень большие, но принцип я думаю ты понял.
сама функция (точнее ее начало)
function totalizator()
if db.actor:has_info("frase_1") then --\ если бы получен поршень такой -то, то делаем перебор вариантов выигрышей - из той таблицы, которая соответствует ставке\поршню
local c = math.random(120) --\ по числу сумм в таблице
local summa = sums_1[c] --\ полученное число назначем сумме из таблице sums_1 с соответсвующим индексом
db.actor:give_money(summa) --\ выдаем эктору сумму
for k, v in ipairs(prize) do --\ здесь нужно сравнить полученную сумму с суммами в таблице prize - присвоить ей индекс и назначить его поршню\новости
if summa == v then --\ вот здесь не уверен как правильно делать
summa = v --\ надо ли это или как то иначе скажем просто присвоить summa = v и все без всяких сравнений.
db.actor:give_info_portion("prize_"..k) либо news_manager.send_tip(db.actor, "news_"..k)
elseif db.actor:has_info("frase_2") then
local c = math.random(фиг знает - пока не считал)
local summa = sums_2[c]
db.actor:give_money(summa)
for k, v in ipairs(prize) do
if summa == v then
db.actor:give_info_portion("prize_"..k) либо news_manager.send_tip(db.actor, "news_"..k)
отредактировал(а) erlik: 02-09-2009 15:04 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Подскажите пожалуйста.
Я создал нового сталкера. Задал ему координаты а он там не появляется.Че делать?
я слышал че-то про game vertex и level vertex. Может из-за этого проблема? если да, то где это и че туда вписать?
добавлено спустя 2 минут
Стрелок-монолит либо в папке с игрой, либо в общих документах в папке STALKER-SHOC
отредактировал(а) S.н.а.й.п.е.р.: 02-09-2009 15:13 GMT3 час. Хорошо смеется тот , кто стреляет первым.
S.T.A.L.K.E.R. 1st mini-mod вышел=) скачать в журнале.
S.н.а.й.п.е.р.
Тебе только модель+текстуры ПКМ надо? Или конфиг тоже...иконку, иконку пулеметной ленты...
Ты как снимал координаты и как его спавнил - через ACDC или скриптом?
в любом случае надо после координат позишен x, y, z писать значения level_vertex_id и game_vertex_id
Например в скрипте
function name() alife():create("npc_1",vector():set(-218.20,-20.2,-145.63), 35362,47)
end
зеленым выделен level_vertex_id
красным = game_vertex_id
эти же значения пишешь и в секции спавна непися в all.spawn
вот ссылка на статью как снимать координаты и вертексы
S.н.а.й.п.е.р.
анимация и так в модель вшита... иконку - ну я тогда весь файл иконок от симбиона положу в архив вместе с моделькой - ссыль скину в личку - где то через полчаса (инет медленный).
Снимай координаты как в статье написано, а не как ты делаешь.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
Так копипастом это недолго - главное чтобы работало. Там с началом функции есть ошибки? - я ведь ее навскидку набросал, чтобы пример тебе показать...
добавлено спустя 1 час 32 минут
S.н.а.й.п.е.р.
я тебе ссыль давно кинул в личку - ты свои сообщения то посмотри :-)
отредактировал(а) erlik: 02-09-2009 18:14 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Если честно, я сёдня тормознутый. Не могу сконцентрироваться. Давай в следующий раз. Я сёдня загружен по полной совершенно другим делом. Пытаюсь найти 3D редактор, в котором можно было бы создавать видео, как в 3DsMaxe. Ну и естественно, чтобы при этом понимал формат .obj
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Доброго вечера!!! Я вот столкнулся с такой проблемкой. Мне ну очень срочно надо знать как сделать так что бы выводились всякие разные сообщения во время игры, мол Сталкеры сообщают о том что где кто погиб где кого зверюшки разорвали и тому подобное. И еще надо что бы при обыске трупов попадались денежки. Народ ПОМОГИТЕ!!!!
singapur22
Ок. жаль что помочь тебе не могу - триD редакторы и видеoмонтаж- не мой профиль, вот PageMaker или там InDesign - в этом еще смыслю :-)
Marshal777
Скачай мод
Lootmoney MOD v1.0. Автор: Babuin 119
с трупов можно снимать бабло. Правда он идет вроде как аддон к АМК, поэтому не знаю пойдет ли на чистой игре.
А по поводу сообщений - наивный вопрос: если знаешь скрипты - lua в зубы и пиши схему, если нет - ищи мод где это есть и ставь себе. Или смотри как это сделано там - а это довольно сложно, - и делай также.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
#erlik : singapur22
Ок. жаль что помочь тебе не могу - триD редакторы и видеoмонтаж- не мой профиль, вот PageMaker или там InDesign - в этом еще смыслю :-)
Marshal777
Скачай мод
Lootmoney MOD v1.0. Автор: Babuin 119
с трупов можно снимать бабло. Правда он идет вроде как аддон к АМК, поэтому не знаю пойдет ли на чистой игре.
А по поводу сообщений - наивный вопрос: если знаешь скрипты - lua в зубы и пиши схему, если нет - ищи мод где это есть и ставь себе. Или смотри как это сделано там - а это довольно сложно, - и делай также.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.