Сейчас 15:04:53 Вторник, 16 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [заказ] генерация текстов
[заказ] генерация текстов
RehanДата: Вторник, 18 Января 2011, 19:57:51 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Нужна наработка генерации текстов.

Суть наработки такова: создаётся N число текстовых баз, каждая текстовая база имеет своё краткое название. Текстовая база представляет собой список разных отрывков текста, причём в каждой базе определённое число отрывков текста.

К примеру так:
База1
Название базы: "NF"
Текст 1: безжалостный
Текст 2: кровожадный
Текст 3: бессердечный

База2
Название базы: "NG"
Текст 1: ублюдок
Текст 2: урод

Названия для баз необходимы для ссылки на них в теге. К примеру строка "Ты [NG] [NF]" при запуске функции должна вернуться в текстовое значение вместо тегов в котором вставлены случайные фрагменты текста из соответствующей текстовой базы.
Для примера приведём все текстовые значения, которые может вернуть функция с вышеописанными базам текстовых значений и введённым текстом "Ты [NG] [NF]"
1) Ты безжалостный ублюдок
2) Ты кровожадный ублюдок
3) Ты бессердечный ублюдок
4) Ты безжалостный урод
5) Ты кровожадный урод
6) Ты бессердечный урод

Почему мы не решили воспользоваться просто массивами текстовых значений и не сцеплять между собой строки? На это есть две причины: нам требуются легкоредактируемые текстовые базы, а вторую причину мы опишем ниже.

В текстовых значениях базы может содержаться тег на текст другой базы. Чтобы было понятнее приведём пример:
База 1
Название "P"
Текст 1: кровожадный [P1]
Текст 2: ненормальный [P1]
Текст 3: зомбированный [P1]
Текст 4: безголовый [P2]
Текст 5: отвратительный [P2]
Текст 6: голодный [P2]
Текст 7: мерзкий [P2]

База 2
Название "P1"
Текст 1: разбойник
Текст 2: бродяга
Текст 3: орк

База 3
Название "P2"
Текст 1: вурдалак
Текст 2: упырь
Текст 3: мертвяк

База 4
Название "G"
Текст 1: мою сестру
Текст 2: моего брата
Текст 3: моего отца
Текст 4: меня
Текст 5: мою жену

База 5
Название "N"
Текст 1: однаждый на [G] напал [P], но мне удалось с ним справиться.
Текст 2: до меня дошли слухи что какой-то [P] убивает жителей за городскими стенами

Разработчик данной системы станет соавтором проекта Генерации Случайного Мира -) кто заинтересован тому в ЛС -)
А, и да, на форуме бытует мнение что мы сектанты, если не боитесь испачкать свою репутацию и имеет желание участвовать в таком необычном проекте то мы будем только рады -)


Требуются тестеры, обращайтесь.


Сообщение отредактировал Rehan - Вторник, 18 Января 2011, 19:58:11
 

DreiiДата: Вторник, 18 Января 2011, 20:14:29 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Rehan, ммм вот я тбе до конца не понял.но если это то что нужно то сделаю
Code
local string NF
local string PG
local integer i
local integer r=GetRandomInt(1,3)
/////NF/////
if r==1 then
set NF=" гавно "
endif
if r==2 then
set NF=" дурак "
endif
if r==3 then
set NF=" чмо "
endif
/////PG/////
if r==1 then
set PG=" японское "
endif
if r==2 then
set PG=" китайское "
endif
if r==3 then
set PG=" американсоке "
endif
call DisplayTextToPlayer(GetLocalPlayer(),0.,0.,"Ты"+NF+PG)


 

RehanДата: Вторник, 18 Января 2011, 20:16:44 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Dreii, нет, увы ты понял не так, нам нужна система с легкоредактируемым и широковарированным контентом

Требуются тестеры, обращайтесь.
 

DreiiДата: Вторник, 18 Января 2011, 20:18:03 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Rehan, мммм) мой мозгэ не способен понять последние 2 слова^^

 

RehanДата: Вторник, 18 Января 2011, 20:32:38 | Сообщение # 5
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Всё просто, запускаешь функцию GetRNDtext("N") и она возвращает случайный текст, опираясь на информацию в базе под именем N
То есть GetRNDtext может вернуть следующие значения:
Однаждый на мою сестру напал мерзкий упырь, но мне удалось с ним справиться
Однаждый на меня напал безжалостный ублюдок, но мне удалось с ним справиться
До меня дошли слухи, что какой-то безголовый мертвяк убивает жителей за городскими стенами
И многие другие варриации текста.
Информация в базах регкоредактируемая а функция может сослаться на любую базу, так-же как и любой отрывок любого текста любой базы может ссылаться на случайный текст другой базы.

Добавлено (18-01-2011, 20:26)
---------------------------------------------
Неправильно написали выше, функция должна принимать текстовое значение в таком виде:
GetRNDtext("[N]") или GetRNDtext("В таверне один пьяница подошёл к вам и сказал: [N]") или GetRNDtext("[P] сражается против [P]")

Добавлено (18-01-2011, 20:32)
---------------------------------------------
Суть такова: каждая база текстов это хэщ-таблица, в ячейке 0:0 хранится показатель количества тектов базы, а в ячейке 0:1 название базы.
В системе должна присутствовать функция создающая базу с определённым названием.
В массиве сохраняются ссылки на все созданные базы.
Так-же в функции должна быть возможность добавления текстовой вариации в последную созданную базу.
При запуске функции изъятия случайного текста сканируется введённый текст и каждый тег [name] заменяется текстом из случайной ячейки базы, если текст ячейки базы тоже содержит теги они тоже заменяются на случайные тексты базы и т. д.


Требуются тестеры, обращайтесь.
 

ImpregnableДата: Среда, 19 Января 2011, 08:33:25 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Rehan идея мне показалась интересной и вот потратив довольно много времени, наработка готова http://ifolder.ru/21412501

Комментарии в самих функциях я не стал оставлять, так что если что-нибдуь надо исправить пиши в ЛС.

 

SirNikolasДата: Среда, 19 Января 2011, 12:26:35 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
http://rghost.ru/3994225
Готово. При вызове функция GetRNDTXT заменяет известные теги на их значения. При этом, если два тега будут ссылаться друг на друга, или произойдет еще какое-нибудь зацикливание (по вине пользователя), игра вылетит. Если нужно поставить просто квадратную скобку, ее следует "экранировать" апострофом (`). Чтобы написать сам апостроф, его нужно удвоить. Например, такая строка:
``Однажды на `[G] напал [P], но мне удалось с ним справиться.``
может быть транслирована в
`Однажды на [G] напал зомбированный орк, но мне удалось с ним справиться.`

Также хочу заметить, что чем длиннее строка, передаваемая в функцию, и чем больше в ней содержится тегов, тем больше будут лаги, так что лучше писать не так:
call DisplayTextToPlayer(GetLocalPlayer(), .0, .0, GetRNDTXT("В таверне один пьяница подошёл к вам и сказал: [N]"))
, а так:
call DisplayTextToPlayer(GetLocalPlayer(), .0, .0, "В таверне один пьяница подошёл к вам и сказал: " + GetRNDTXT("[N]"))

Добавлено (19-01-2011, 12:26)
---------------------------------------------
Ох ты, опоздал. Impregnable, сейчас посмотрю твою версию.




Сообщение отредактировал SirNikolas - Среда, 19 Января 2011, 12:59:40
 

RehanДата: Среда, 19 Января 2011, 12:32:33 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Impregnable, безупречно, всё работает -) обо всё остальном в ЛС

Тему можно закрывать

Добавлено (19-01-2011, 12:32)
---------------------------------------------
SirNikolas, нехорошо получилось, нам жаль -( Надеемся что ты не слишком много времени потратил на наработку?


Требуются тестеры, обращайтесь.
 

SirNikolasДата: Среда, 19 Января 2011, 12:39:24 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Нет, что ты, просто мне пришлось отлучиться на два часа, а саму систему я сделал относительно быстро.

 

RehanДата: Среда, 19 Января 2011, 12:40:41 | Сообщение # 10
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Quote (SirNikolas)
Нет, что ты, просто мне пришлось отлучиться на два часа, а саму систему я сделал относительно быстро.

ну хорошо -)


Требуются тестеры, обращайтесь.


Сообщение отредактировал Rehan - Среда, 19 Января 2011, 13:16:47
 

ImpregnableДата: Среда, 19 Января 2011, 13:48:12 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Посмотрел как сделано у SirNikolas, и стало как-то стыдно, что у меня все по 2 раза надо писать...
Вобщем вот новая версия http://ifolder.ru/21418110
 

RehanДата: Среда, 19 Января 2011, 13:58:50 | Сообщение # 12
6 уровень
Группа: Проверенные
Сообщений: 247
Награды: 0
Репутация: 79
Блокировки:
Impregnable, у нас глюк или ты ЛС не стал читать?

Требуются тестеры, обращайтесь.
 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [заказ] генерация текстов
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz