Феневое API

Персонаж: моб или игрок

Доступ к API изнутри мира

  • eval ptc(api())
  • eval ptc(get_char_world("xxx").api())

Поля, доступные только для чтения [ro] и для записи [rw]

Статус Поле Описание
rwPK_flagKILLER, SLAIN, VIOLENT, GHOST, THIEF
rwPK_time_skсколько висит slain и killer
rwPK_time_tсколько висит thief
rwPK_time_vсколько висит violent
rwactact флаги для мобов и plr для игроков (таблицы .tables.act_flags и plr_flags)
rwadd_affected_byрасширение флагов аффектов (таблица .tables.affect_flags)
rwadd_commрасширение поля comm (таблица .tables.add_comm_flags)
roaffectedсписок всех аффектов (List из структур Affect)
rwaffected_byфлаги аффектов (таблица .tables.affect_flags)
roalignMaxназвание самого доброго характера для расы и класса персонажа
roalignMinназвание самого злого характера для расы и класса персонажа
roalignNameназвание характера
rwalignmentхарактер, от -1000 до 1000
roaltarvnum комнаты-алтаря в родном городе персонажа
rwanti_killedсколько жертв не моего align убито
rwarmor0класс брони
rwarmor1класс брони
rwarmor2класс брони
rwarmor3класс брони
rwbank_gзолота в банке
rwbank_sсеребра в банке
rwbatle_promptстрока состояния в бою
rwblessблагословение богов
roboatобъект лодки
rwcarry_numberколичество вещей которое несет чар
rwcarry_weightвес который несет чар
rocarryingпервый объект в списке инвентаря/экипировки
roclanклан (структура .Clan)
rwcommcomm флаги (таблица .tables.comm_flags)
rwcond_bloodlustизменить 'жажда крови' на указанное число баллов
rwcond_drunkизменить 'опьянение' на указанное число баллов
rwcond_fullизменить 'заполненность желудка' на указанное число баллов
rwcond_hungerизменить 'голод' на указанное число баллов
rwcond_thirstизменить 'жажда' на указанное число баллов
rwconfigнастройки чара (таблица .tables.config_flags)
roconnectedtrue если есть связь
rocraftProfessionsmap из названия->уровень мастерства для дополнительных профессий
rocur_chaтекущий параметр: харизма
rocur_conтекущий параметр: телосложение
rocur_dexтекущий параметр: ловкость
rocur_intтекущий параметр: ум
rocur_strтекущий параметр: сила
rocur_wisтекущий параметр: мудрость
rwcurseпроклятье богов
rwdam_typeтип повреждения (таблица .tables.weapon_flags)
rwdamage_numberповреждения моба: сколько раз кидать кубик
rwdamage_typeповреждения моба: кол-во граней кубика
rwdamrollурон
rwdazedaze state (в пульсах, 1 пульс = четверть секунды)
rodeadtrue, если персонаж полностью уничтожен (suicide/remort для pc, смерть для npc)
rwdeathсколько раз умирал
rwdeath_ground_delayсчетчик ловушки
rwdescriptionто что видно по look mob
rwdetectionфлаги детектов (таблица .tables.detect_flags)
rodoppelигрок, которому подражаем с помощью doppelganger. для зеркал - игрок, который их создал
roequipmentсписок всех предметов в экипировке
rwethosдобропорядочность
rwexpсуммарный опыт
roexpToLevelсколько опыта осталось набрать до след уровня
rofightingтот, с кем сражаемся
roflyingtrue если мы GHOST, летаем или верхом на летающем скакуне
rwformформа тела (таблица .tables.form_flags)
rwghost_timeсколько висит ghost
rwgoldзолото
roguarded_byигрок, который нас охраняет
roguardingигрок, которого охраняем с помощью умения guard
rohasDestinyмоб имеет предназначение (квестовые и спец-мобы)
rwhas_killedсколько жертв убито всего
rwhitтекущее здоровье (hit points)
rwhitrollточность
rwhometownродной город (структура .Hometown)
rohostnameIP-адрес соединения
roidуникальный идентификатор персонажа
rwimm_flagsфлаги иммунитета (таблица .tables.imm_flags)
roin_roomкомната, в которой сейчас находимся
rwincog_levelуровень для incognito
roinventoryсписок всех предметов в инвентаре
rwinvis_levelуровень для wisinvis
roisInInterprettrue если игрок в состоянии ввода команд (не ed, не olc, не pager, etc)
rolastAccessTimeвремя последнего захода в мир
rwlast_death_timeкогда последний раз был убит
rwlast_foughtчар, с которым сражались последний раз
rwlast_levelкакой был played, когда набили последний левел
rwleaderлидер группы или тот, кто очаровал
rwlevelнастоящий уровень
rwlinesкол-во строк в буфере вывода
rwlogonвремя последнего захода в мир
rwlong_descrдлинное описание моба
rwloyaltyлояльность по отношению к закону (рулеровскому)
rwmanaтекущая mana
romasterтот, за кем следуем
rwmax_hitмаксимальное здоровье
rwmax_manaмаксимальная mana
rwmax_moveмаксимальные moves
rwmax_skill_pointsкол-во скилпоинтов у чара
romax_train_chaмаксимум тренировки для параметра: харизма
romax_train_conмаксимум тренировки для параметра: телосложение
romax_train_dexмаксимум тренировки для параметра: ловкость
romax_train_intмаксимум тренировки для параметра: ум
romax_train_strмаксимум тренировки для параметра: сила
romax_train_wisмаксимум тренировки для параметра: мудрость
romodifyLevelуровень с учетом бонусов от ремортов
romountна ком мы верхом или кто верхом на нас
rwmoveтекущие moves
rwnameимя
ronextследующий чар в глобальном списке всех чаров, .char_list
ronext_in_roomследующий чар в этой комнате, в списке people у комнаты
rwoff_flagsфлаги поведения моба (таблица .tables.off_flags)
rwonобъект, мебель, на которой сидим
roonlinetrue, если персонаж в мире
ropIndexDataструктура с прототипом для всех мобов с данным vnum(mob index data, т.е. то, редактируется с помощью OLC)
rwpartsчасти тела (таблица .tables.part_flags)
rwpasswordпароль
ropcэкземпляр игрока
rwperm_chaперманентный параметр: харизма
rwperm_conперманентный параметр: телосложение
rwperm_dexперманентный параметр: ловкость
rwperm_hitmax hp без шмота
rwperm_intперманентный параметр: ум
rwperm_manamax mana без шмота
rwperm_movemax move без шмота
rwperm_strперманентный параметр: сила
rwperm_wisперманентный параметр: мудрость
ropetмоб, домашнее животное
rwpositionпозиция (таблица .tables.position_table)
rwpracticeсколько практик
rwpretitleпретитул
rwprofessionкласс (структура .Profession)
rwpromptстрока состояния
rwquestpointsqp
rwraceраса (структура .Race)
rwreligionрелигия (структура .Religion)
roremort_countкол-во ремортов
roreplyчар, который последний говорил с нами. по команде reply реплика отправится именно ему
rwres_flagsфлаги сопротивляемости (таблица .tables.res_flags)
rwridingесли mount!=null: true - мы верхом, false - мы оседланы
rwrussianNameрусские имена с падежами
rwsaving_throwсавесы
rwsexпол (таблица .tables.sex_table)
rwshadowсколько висеть тени (shadowlife) в секундах
rwshort_descrкороткое описание моба
rwsilverсеребро
rwsizeразмер (таблица .tables.size_table)
rwspec_funспец-процедура
rwstart_roomв какой комнате вошли в мир
roswitchedToв какого моба вселились
roterminal_typeтип терминала у mud-клиента
rwtimerсколько минут прошло с последней команды
rwtitleтитул
rwtrainсколько тренировок
rwtrapфлаги ловушки (таблица .tables.trap_flags)
rotrustуровень привилегий
rwuniclassпод-профессия универсала (.Profession)
rwvuln_flagsфлаги уязвимости (таблица .tables.res_flags)
rwwaitwait state (в пульсах, 1 пульс = четверть секунды)
rowas_in_roomкомната, в которой находились перед закапыванием в могилу
rwwearlocсписок слотов экипировки
rwwimpyтрусость. при скольки hp чар будет убегать автоматически

Методы

Метод Описание
act(fmt, args): печатает нам отформатированную строку (с символом конца строки).
addDarkShroud(): повесить темную ауру
add_charmed(victim,time): очаровать victim на время time и добавить нам в последователи
add_follower(master): делает нас последователем master-а
add_pet(pet): добавить пета нам в последователи
affectAdd(.Affect): повесить новый аффект
affectBitStrip(where,bit): снять все аффекты, устанавливающие в поле where (.tables.affwhere_flags) значение bit
affectJoin(.Affect): повесить новый аффект или усилить существующий
affectStrip(skillName): снять все аффекты с именем skillName
api(): печатает этот api
canRecall(): может ли прямо сейчас воспользоваться возвратом
can_drop_obj(obj): может ли избавиться от предмета obj в инвентаре
can_get_obj(obj): может ли поднять предмет obj с земли
can_see_exit(door): видим ли выход под номером door
can_see_mob(ch): видим ли персонажа ch
can_see_obj(obj): видим ли предмет obj
can_see_room(room): видим ли комнату room
char_to_room(room): поместить в комнату room
clear(): очистка всех runtime полей
clearBehavior(): сбросить поведение моба до обычного
damage(vict,dam,skillName,damtype): нанести vict повреждения в размере dam умением skillName и типом damtype (таблица .tables.damage_table)
drink(obj,amount): заполнить желудок так, будто от obj отхлебнули amount глотков
eat(ob): заполнить желудок так, будто obj был съеден
echoOff(): выключает отображение введенного текста в терминале
echoOn(): включает отображение введенного текста в терминале
edReg([ndx[, txt]]): возвращает/устанавливает содержимое регистров редактора
edit(): переводит this в режим редактирования
eraseAttribute(attr): удаляет аттрибут с именем attr
extract(bool): уничтожить полностью (suicide/remort игрока или смерть моба) или не полностью как при выходе из мира
gainExp(exp): добавляет exp очков опыта
getClan(): строка с названием клана
getClanLevel(): клановый уровень, число от 0 до 8
getClass(): строка с названием профессии
getModifyLevel(): уровень, с учетом плюшек от ремортов
getName(): имя игрока или список имен моба
getRace(): строка с названием расы
getRealLevel(): настоящий уровень
getSex(): номер пола (0 neutral, 1 male, 2 female, 3 random - только у прототипов)
get_char_room(name): поиск по имени видимого персонажа в той же комнате
get_char_world(name): видимый для нас чар с именем name в мире
get_eq_char(wearloc): предмет экипировки, надетый на эту локацию
get_liquid_carry(liqname): вернет емкость в инвентаре с заданной жидкостью
get_obj_carry(name): поиск по имени видимого объекта в экипировке или инвентаре
get_obj_carry_type(type): видимый нам объект в инвентаре или equipment с этим типом (таблица .tables.item_table)
get_obj_carry_vnum(vnum): поиск по внуму предмета в инвентаре или экипировке
get_obj_here(name): видимый нам объект в комнате, инвентаре или equipment
get_obj_room(name): поиск по имени видимого объекта в комнате
get_obj_wear(name): поиск по имени видимого объекта в экипировке
get_obj_wear_vnum(vnum): поиск объекта в экипировке по внуму
get_random_room(): случайная комната, куда можно зайти
get_recipe_carry(flag): вернет рецепт в инвентаре с заданным флагом (таблица .tables.recipe_flags)
hasAttribute(attr): true если установлен аттрибут с именем attr
hasOccupation(): моб имеет занятие (shopper,practicer,repairman,quest_trader,quest_master,healer,smithman,trainer,clanguard,adept)
hasWearloc(wearloc): обладает ли данным слотом в экипировке
interpret(msg): интерпретирует строку msg, как будто чар ее набрал сам
interpret_cmd(cmd, args): выполняет команду с аргументами от имени чара
interpret_raw(cmd, arg): выполняет команду с аргументами от имени чара, без предварительных проверок
isAffected(skillName): находится ли под воздействием аффекта с именем skillName
isDead(): умер ли моб
isImmune(damtype, damflag): есть ли иммунитет к типу повреждений из .tables.damage_table с флагом повреждений из .tables.damage_flags
isLawProtected(): охраняется ли моб законом
isVulnerable(damtype, damflag): есть ли уязвимость к типу повреждений из .tables.damage_table с флагом повреждений из .tables.damage_flags
is_immortal(): true, если this бессмертный или кодер
is_npc(): true для мобов, false для игроков
is_safe(vict): защищают ли боги vict от нас
is_same_group(gch): вернет true если мы с персонажем gch в одной группе
look_auto(room): вывести описание комнаты room, будто там набрали look
mortality(): включает-выключает бессмертие для кодеров
move_char(door[,movetype]): переместить персонажа в дверь door, с типом движения movetype('running','crawl'). Вернет true если переместили.
multi_hit(vict): нанести один раунд повреждений жертве
one_hit(vict): нанести vict один удар оружием
print(fmt, args): возвращает отформатированную строку (см. статью вики про ф-ии вывода)
psay(ch, format, args...): произносит вслух реплику, отформатированную как в методе act и видимую только для ch
ptc(msg): print to char, печатает строку msg
raw_kill([bodypart[,killer]]): убить. часть тела из таблицы .tables.part_flags или -1
rawdamage(vict,dam,damtype): нанести vict повреждения в размере dam с типом damtype (таблица .tables.damage_table)
recho(fmt, args): выводит отформатированную строку всем в комнате, кроме нас
restring(skill,key,names,short,long): установить аттрибут для рестринга результатов заклинаний
rtapi(): печатает все поля и методы, установленные в runtime
rvecho(vict, fmt, args...): выводит отформатированную строку всем в комнате, кроме нас и vict
save(): сохранить профайл на диск
saves_spell(caster,level,dam_type[,dam_flag]): спас-бросок против типа повреждения (.tables.damage_table) с флагом повреждения (.tables.damage_flags)
say(format, args...): произносит вслух реплику, отформатированную как в методе act
seeName(ch[, case]): как мы видим имя и претитул ch в падеже case
setClan(name): устанавливает клан по строке с именем
setClanLevel(уровень): клановый уровень, число от 0 до 8
setDead(): пометить моба как умершего
setLevel(level): установить уровень мобу
setName(name): устанавливает имена моба
spell(skillName,level[,vict|argument[,spellbane[,verbose]]]): скастовать заклинания на всю комнату, на vict или с аргументом
stop_fighting(): прекратить битву
stop_follower(): прекращает следование, снимает очарование
switchFrom(): выселиться из моба обратно
switchTo(mob): вселиться в тело моба
transfer(room,actor,msgRoomLeave,msgSelfLeave,msgRoomEnter,msgSelfEnter): actor переносит нас в комнату room
updateSkills(): освежить разученность умений (при входе в мир)
writeWSCommand(cmd,args...): отправить в веб-клиент команду с аргументами

Предмет, объект

Доступ к API изнутри мира

  • eval ptc(get_obj_world("barrel").api())

Поля, доступные только для чтения [ro] и для записи [rw]

Статус Поле Описание
roaffectedсписок (List) всех аффектов на предмете (структура .Affect)
roaveсреднее повреждение оружия или 0
rocarried_byперсонаж, несущий предмет в инвентаре-экипировке, или null
rwconditionсостояние, от 0 [уж.] до 100
rocontainsуказывает на первый предмет, содержащийся внутри этого
rwcostцена в серебре
rodeadtrue если предмет уничтожен
rwdescriptionописание, видимое на земле
rwenchantedвисят ли на предмете аффекты, меняющие его свойства
rwextra_flagsдополнительные флаги (таблица .tables.extra_flags)
roidуникальный идентификатор предмета
roin_objвнутри какого предмета находится этот, или null
roin_roomкомната, на полу которой лежит предмет, или null
roitem_typeтип предмета (таблица .tables.item_table)
roitemsсписок (List) всех предметов внутри этого
rwlevelуровень предмета
rwmaterialназвание материала, из которого сделан предмет
rwnameимена предмета, на которые он откликается
ronextуказывает на следующий предмет в глобальном списке .object_list
ronext_contentуказывает на следующий предмет в том же контейнере или инвентаре
roonlineпредмет сейчас в мире (а не в профайлах)
rwownerимя персонажа-владельца (для трупов и личных вещей)
ropIndexDataпрототип предмета
rwpersonalсделать вещь личной для персонажа по англ имени или null
rwpocketназвание кармана, в котором лежит предмет, или пустая строка
roreal_short_descrописание без учета restring-а
rwshort_descrописание, видимое в инвентаре и при манипуляциях
rospecialобладает ли прототип предмета сложным поведением (через феню или код)
rwtimerчерез сколько тиков исчезнет или -1
rwvalue0поле value0, смысл зависит от типа предмета
rwvalue1поле value1, смысл зависит от типа предмета
rwvalue2поле value2, смысл зависит от типа предмета
rwvalue3поле value3, смысл зависит от типа предмета
rwvalue4поле value4, смысл зависит от типа предмета
rovnumномер прототипа предмета из арии
rwwear_flagsкуда можно надеть предмет (таблица .tables.wear_flags)
rowear_locимя локации, куда надет сейчас, или none
roweightвес предмета
roweightTotalвес предмета с учетом содержимого

Методы

Метод Описание
affectAdd(aff): повесить на предмет указанный аффект (.Affect)
affectStrip(skill): снять с предмета все аффекты от умения по имени skill
affectStripAll(): снять все аффекты
api(): печатает этот API
clear(): очистка всех runtime полей
equip(wearloc): надеть в указанную локацию тому, кто несет предмет
extract(): полностью уничтожить предмет
getCarrier(): персонаж, который несет предмет с учетом вложенности, или null
getRoom(): комната, в которой находится предмет с учетом вложенности, или null
get_extra_descr(key): найти экстра-описание с ключевым словом key
get_obj_content_vnum(vnum): поиск объекта внутри этого по внуму
hasWeaponFlag(flags): выставлен ли хотя бы один из флагов на оружии (таблица .tables.weapon_type2 или строка)
isAffected(skill): находится ли предмет под воздействием аффекта с данным именем
list_obj_content_vnum(vnum): поиск списка (List) объектов внутри этого по внуму
madeOfMetal(): предмет сделан из металла
madeOfWood(): предмет сделан из дерева
materialBurns(): сколько тиков горит (-1 если тушит огонь)
obj_from_char(): deprecated
obj_from_obj(): deprecated
obj_from_room(): deprecated
obj_to_char(ch): дать предмет в руки персонажу ch
obj_to_obj(obj): положить предмет внутрь другого предмета obj
obj_to_room(room): положить предмет на пол в комнате room
random_obj_list([item_type]): случайный объект из списка, начинающегося с этого объекта. поиск ограничивается типом item_type, если задан
rtapi(): печатает все поля и методы, установленные в runtime
set_extra_descr(key, text): установить экстра-описание text по ключевому слову key
unequip(): снимает предмет и кладет в инвентарь тому, кто несет

Комната

Доступ к API изнутри мира

  • eval ptc(in_room.api())

Поля, доступные только для чтения [ro] и для записи [rw]

Статус Поле Описание
rwaffected_byбиты аффектов на комнате (таблица .tables.affect_flags)
roareaэкземпляр Area для этой комнаты
roareanameимя арии
roclanимя клана, которому принадлежит комната
rocontentsуказывает на первый предмет на полу комнаты
rodescriptionописание комнаты
rodownкомната вниз отсюда или null
roeastкомната на восток отсюда или null
roitemsсписок (List) всех предметов на полу
rwlightколичество источников света в комнате
ronameназвание комнаты
ronorthкомната на север отсюда или null
ropeopleуказывает на первого чара в комнате
ropplсписок (List) всех чаров в комнате
roresetMobilesсписок внумов мобов, которые ресетятся в этой комнате
rornextуказывает на след. комнату в глобальном списке .room_list
rwroom_flagsфлаги комнаты (таблица .tables.room_flags)
rosector_typeзначение типа местности (таблица .sector_table)
rosouthкомната на юг отсюда или null
roupкомната вверх отсюда или null
rovnumномер комнаты в арии
rowestкомната на запад отсюда или null

Методы

Метод Описание
api(): печатает этот API
clear(): очистка всех runtime полей
close(имя или номер выхода): закрыть дверь по указанному направлению
count_enemies(ch): кол-во персонажей, сражающихся с ch
dirMsgEnter(имя или номер выхода): сообщение при заходе через этот выход (с юга, с запада)
dirMsgLeave(имя или номер выхода): сообщение при уходе через этот выход (на север, на восток)
doorName(номер выхода): вернет имя выхода
doorNumber(имя выхода): вернет номер выхода
doorTo(room): номер двери, ведущей из этой комнаты в room
echo(fmt, args): выводит отформатированную строку всем неспящим в комнате
echoAround(fmt, args): выводит отформатированную строку всем неспящим в прилегающие комнаты
exitKeyword(имя или номер выхода): ключевые слова, на которые откликается эта дверь или выход
exitShortDescr(имя или номер выхода): название выхода с падежами
exits(ch): список номеров всех доступных выходов для персонажа ch
getExitFlags(имя или номер выхода): флаги этого выхода (таблица .tables.exit_flags)
getRevDoor(имя или номер выхода): вернет номер противоположного направления
getRoom(имя или номер выхода): комната по этому направлению
get_mob_vnum(vnum): поиск первого моба в комнате по его внуму
get_obj_type(type): поиск первого объекта в комнате по его типу (имя или номер из .tables.item_table)
get_obj_vnum(vnum): поиск первого объекта в комнате по его внуму
isCommon(): true если комната доступна всем (т.е. не приватная/клановая/newbie-only/...)
isDark(): true если в комнате темно
list_mob_vnum(vnum): поиск списка мобов в комнате по внуму
list_obj_type(type): поиск списка объектов в комнате по его типу (имя или номер из .tables.item_table)
list_obj_vnum(vnum): поиск списка объектов в комнате по внуму
lock(имя или номер выхода): запереть дверь по указанному направлению
open(имя или номер выхода): открыть дверь по указанному направлению
rtapi(): печатает все поля и методы, установленные в runtime
traverse(depth, walker, sectorsAllow, sectorsDeny): построит путь (список комнат) для чара walker глубины depth, с разрешенными-запрещенными типами местности в виде битовых масок
traverseTo(target, walker, sectorsAllow, sectorsDeny): построит путь до цели target для чара walker, с разрешенными-запрещенными типами местности в виде битовых масок
unlock(имя или номер выхода): отпереть дверь по указанному направлению
zecho(msg): выведет сообщение msg для всех в этой арии

Прототипы предметов и мобов

Доступ к API изнутри мира

  • eval ptc(get_char_world("mermaid").pIndexData.api())
  • eval ptc(get_obj_world("barrel").pIndexData.api())

Примечание

Все поля прототипов доступны только для чтения.

Поля и методы прототипа предмета (obj index data)

Поле/Метод Описание
costцена в серебре
countкол-во экземпляров предметов этого прототипа
descriptionописание, видимое на земле
instancesсписок (List) всех предметов с этим прототипом
item_typeтип предмета (таблица .tables.item_table)
limitмаксимальное кол-во экземпляров существующих одновременно или -1
materialназвание материала, из которого сделан предмет
nameимена предмета, на которые он откликается
reset_numсколько раз этот прототип встречается в ресетах
short_descrописание, видимое в инвентаре и при манипуляциях
value0поле value0, смысл зависит от типа предмета
value1поле value1, смысл зависит от типа предмета
value2поле value2, смысл зависит от типа предмета
value3поле value3, смысл зависит от типа предмета
value4поле value4, смысл зависит от типа предмета
vnumвнум, уникальный номер прототипа
api(): печатает этот API
clear(): очистка всех runtime полей
create(): создать экземпляр предмета
property(name, defaultValue): свойство прототипа с именем name или значение по умолчанию
rtapi(): печатает все поля и методы, установленные в runtime

Поля и методы прототипа моба (mob index data)

Поле/Метод Описание
areaзона, в которой прописан моб (.Area)
countкол-во экземпляров мобов этого прототипа
descriptionописание, видное если посмотреть на моба
groupк какой группе принадлежит моб (нужно для assist)
imm_flagsфлаги иммунитета (таблица .tables.imm_flags)
instancesсписок всех экземпляров мобов с этим прототипом
long_descrкак моба видно в комнате
nameимена, на которые откликается моб
practicerкакие группы умений может практиковать (glist или olchelp groups)
religionкакие религии исповедует (reledit list)
repopPlacesсписок внумов комнат, в которых ресетится моб
short_descrимя, которое видно когда моб совершает действия
spec_funспец-процедура
vnumвнум, уникальный номер прототипа
api(): печатает этот API
clear(): очистка всех runtime полей
create(): создать экземпляр моба
rtapi(): печатает все поля и методы, установленные в runtime

Корневой объект (root)

Доступ к API изнутри мира

  • eval ptc(.api())

Примечание

Поля и методы корневого объекта начинаются с точки.

Поля, доступные только для чтения [ro] и для записи [rw]

Статус Поле Описание
robuildplottrue для мира-стройплощадки
rochar_listсписок всех чаров, поле чара next указывает на следующего
rocurrent_timeтекущее время в секундах
rwdayтекущий день месяца, 0..34
rofeniadbStatsстатистика базы данных скриптовых объектов
rohometownsсписок всех хометаунов
rwhourтекущий час суток, 0..23
romob_index_listсписок (List) всех прототипов мобов
rwmonthтекущий месяц, 0..16
ronannyдоступ к методам 'няни', для процесса создания персонажа
roobj_index_listсписок (List) всех прототипов предметов
roobject_listсписок всех предметов, поле предмета next указывает на следующий
ropcracesсписок рас, доступных игрокам
roplayersсписок (List) всех игроков
roprofessionsсписок всех профессий, доступных игрокам
roracesсписок всех рас
roroom_listсписок всех комнат, поле комнаты rnext указывает на следующую
roschedulerобъект-планировщик
rwskyтекущая погода: 0=безоблачно, 1=облачно, 2=дождь, 3=молнии
rwsunlightвремя суток: 0=ночь, 1=рассвет, 2=день, 3=закат
rotablesдоступ ко всем таблицам
rwtmpструктура где можно хранить глобальные переменные
rwworld_timeвнутримировое время в секундах
rwyearтекущий год

Методы

Метод Описание
Affect([skill[,level,duration,location,mod,where,bits]]): конструктор для аффекта умения skill или пустого
Area(filename): конструктор для зоны по имени файла
Array(): конструктор для массива
Bonus(name): конструктор для бонусов по имени
Clan(name): конструктор для клана по имени
Command(): конструктор для команды
CraftProfession(name): конструктор для дополнительной профессии по имени
FeniaSkill(name): конструктор для нового умения
Hometown(name): конструктор для хометауна по имени
Liquid(name): конструктор для жидкости по имени
List(): конструктор для списка
Map(): конструктор для структуры
Profession(name): конструктор для профессии (класса) по имени
Race(name): конструктор для расы по имени
Religion(name): конструктор для религии по имени
Skill(name): конструктор для умения по имени
abs(n): модуль числа n
api(): печатает этот API
apply(func, this, args): вызвать func с указанным this и списком аргументов args
chance(x): true если x < .number_percent()
chanceOneOf(x): true если .number_range(1, x) == 1
codesource(func): номер сценария, в котором объявлена данная функция
create_money(gold, silver): создает объект-деньги указанной стоимости
date(): строка с датой, как ее видно по команде time
dice(x, y): x раз кинуть кубик с y гранями
discord(msg): послать сообщение в чат Discord от имени бота Хрустальный Шар
eval(expr): выполнить феневое выражение expr
findPlayer(name): поиск игрока по точному имени
find_profession(name): нестрогий поиск профессии по русскому или англ названию
fmt(args): отформатировать строку, см. статью вики про функции вывода
gecho(msg): выдать сообщение msg всем играющим
getCurrentTime(): текущее время в секундах
get_char_world(name): ищет в мире чара с указанным именем
get_mob_index(vnum): возвращает прототип моба с заданным vnum
get_obj_index(vnum): возвращает прототип предмета с заданным vnum
get_obj_world(name): ищет в мире предмет с указанным именем
get_random_room(): произвольная комната из числа общедоступных
get_random_room_vanish(ch): произвольная комната, куда разрешен vanish персонажу ch
get_room_index(vnum): возвращает комнату с заданным vnum
infonet(msg): выдать сообщение msg через хрустальный шар
isset_bit(mask, b): вернет логическое 'и' между mask и b
loadConfig(): считать конфигурацию DreamLand с диска
makeShort(s1,s2,...,s6): конструирует строку с палками из шести строк с падежами
max(a, b): максимальное из двух чисел a и b
min(a, b): минимальное из двух чисел a и b
number_percent(): произвольное число от 1 до 100
number_range(x, y): произвольное число в промежутке от x до y
obj_by_id(id): найти феневый объект по уникальному идентификатору
object(id): поиск феневого объекта по ID (cистемное)
player_attribute(playerName, attrName): значение данного аттрибута игрока
player_clan(name): название клана игрока по его имени
player_exists(name): существует ли в мире игрок с данным именем
player_name(name): английское имя игрока по его русскому/английскому имени
player_russian_name(name): русское имя игрока с падежами по его русскому/английскому имени
print(msg): вывести строку msg в системные логи
repr(obj): попытка привести феневый объект obj к строке
saveConfig(): сохранить конфигурацию DreamLand на диск
set_bit(mask, b): вернет логическое 'или' между mask и b
set_bit_number(mask, n): вернет mask с установленными битом под номером n (т.е. mask | 1<
sync(): test for objects sync (системное)
unset_bit(mask, b): вернет mask со сброшенными битами из b
webcmd(ch,cmd,label): создать линку для веб-клиента, выглядящую как label и выполняющую по клику команду cmd
wiznet(msg): выдать сообщение msg по wiznet

Различные структуры

Доступ к API изнутри мира

Можно посмотреть API для каждой структуры, создав ее и вызвав метод api(), например:

  • eval ptc(.Affect("none").api())
  • eval ptc(.Profession("cleric").api())
  • eval ptc(.Liquid("wine").api())

Affect: аффект, поля и методы

Все поля доступны для чтения и записи.

Поле/Метод Описание
bitvectorкакие биты добавятся полю, указанному в where
durationдлительность, -1 для вечных аффектов
globalсписок значений для where=locations (слоты экипировки), liquids (жидкости), skills, skill groups
levelуровень аффекта
locationполе, на которое аффект воздействует численно (таблица .tables.apply_flags)
modifierна сколько изменится поле, указанное в location
typeназвание умения, которым этот аффект вешается, или none
whereполе, у которого аффект изменяет биты (таблица .tables.affwhere_flags)
api(): печатает этот api
apply(ch): применить действие аффекта на ch, не вешая его

Command: команда, поля и методы

Все поля доступны для чтения и записи.

Поле/Метод Описание
funcфункция команды: function(ch, args)
nameназвание команды
rnameрусское название команды
api(): печатает этот api

Area: зона

Все поля доступны только для чтения.

Поле/Метод Описание
area_flagфлаги зоны (таблица .tables.area_flags)
filenameназвание файла зоны
max_vnumверхняя граница диапазона vnum-ов зоны
min_vnumнижняя граница диапазона vnum-ов зоны
nameимя зоны (как видно по 'where')
api(): печатает этот api

Hometown: родной город

Все поля доступны только для чтения.

Поле/Метод Описание
altnameальтернативное название арии
areanameполное название арии
creditsоригинальное англ название арии
nameанглийское название
recallvnum комнаты возврата (recall)
api(): печатает этот api
isAllowed(ch): доступен ли город персонажу ch

Bonus: календарный или религиозные бонус

Все поля доступны только для чтения.

Поле/Метод Описание
colorбуква цвета в календаре
nameанглийское название
nameRusрусское название
api(): печатает этот api
give(ch,days): дать бонус на days дней. Вернет true, если присвоено успешно.
remove(ch): очистить бонус у персонажа. Вернет true, если было что очищать.

Religion: религия

Все поля доступны только для чтения.

Поле/Метод Описание
alignразрешенные характеры или пустая строка (таблица .tables.align_table)
clansразрешенные кланы или пустая строка (olchelp clan)
classesразрешенные профессии или пустая строка (olchelp class)
descriptionописание (бог чего именно)
ethosразрешенные этосы или пустая строка (таблица .tables.ethos_table)
flagsфлаги религий (таблица .tables.religion_flags)
minstatпо каким параметрам ограничено сверху
nameанглийское название с маленькой буквы
nameRusрусское название с падежами
racesразрешенные расы или пустая строка (olchelp race)
sexпол божества (таблица .tables.sex_table)
shortDescrанглийское название с большой буквы
tattooVnumvnum объекта-татуировки
api(): печатает этот api
available(ch): НОВАЯ ЛОГИКА - доступна ли религия персонажу
isAllowed(ch): доступна ли религия персонажу
reasonWhy(ch): НОВАЯ ЛОГИКА - причина почему недоступна или пустая строка

Profession: класс персонажа

Все поля доступны только для чтения.

Поле/Метод Описание
alignNameрусское имя подходящего характера или 'любой'
ethosсписок подходящих мировоззрений
nameанглийское название
nameMltрусское название во множ.числе с падежами
nameRusрусское название с падежами
pointsдополнительные очки опыта
statPlusкакие параметры увеличиваются у представителей этой профессии
api(): печатает этот api
bestWeapon(ch): vnum лучшего новичкового оружия для расы и класса персонажа ch
goodPersonality(ch): проверить ограничение на характер и этос на профессию для персонажа ch
goodRace(ch): проверить ограничения по расе на профессию для персонажа ch
goodSex(ch): проверить ограничения по полу на профессию для персонажа ch

Race: раса персонажа

Все поля доступны только для чтения.

Поле/Метод Описание
affврожденные аффекты (таблица .tables.affect_flags)
detврожденные детекты (таблица .tables.detect_flags)
formформы тела (таблица .tables.form_flags)
hpBonusбонус на здоровья при создании персонажа этой расы
immврожденный иммунитет (таблица .tables.imm_flags)
manaBonusбонус на ману при создании персонажа этой расы
nameанглийское название
nameFemaleрусское название в женском роде с падежами
nameMaleрусское название в мужском роде с падежами
nameMltрусское название во множ.числе с падежами
partsчасти тела (таблица .tables.part_flags)
pracBonusбонус на кол-во практик при создании персонажа этой расы
resврожденная сопротивляемость (таблица .tables.res_flags)
sizeразмер (таблица .tables.size_table)
vulnврожденные уязвимости (таблица .tables.vuln_flags)
wearlocсписок доступных wear locations
api(): печатает этот api
nameRus(ch): русское название в зависимости от пола персонажа ch

Clan: клан

Все поля доступны только для чтения.

Поле/Метод Описание
colorбуква цвета
indexвнутренний порядковый номер
nameанглийское название
api(): печатает этот api
diplomacy(clan): англ название дипломатии с кланом clan (clan dip list)

CraftProfession: дополнительная профессия

Все поля доступны только для чтения.

Поле/Метод Описание
nameанглийское название
nameMltназвание во множественном числе с падежами
nameRusрусское название с падежами
api(): печатает этот api
gainExp(ch, exp): заработать очков опыта в этой профессии
getExpToLevel(ch): кол-во опыта до следующего уровня мастерства в этой профессии
getLevel(ch): получить уровень мастерства персонажа в этой профессии
getTotalExp(ch): суммарный опыт персонажа в этой профессии
setLevel(ch, level): установить персонажу уровень мастерства в этой профессии

Liquid: жидкость

Все поля доступны только для чтения.

Поле/Метод Описание
colorприлагательное цвета с падежами
flagsфлаги жидкости (таблица .tables.liquid_flags)
fullкак хорошо насыщает
hungerкак хорошо утоляет голод
indexвнутренний порядковый номер
nameанглийское название
short_descrрусское название с цветами и падежами
sip_sizeразмер глотка
thirstкак хорошо утоляет жажду
api(): печатает этот api

Skill: умение или заклинание

Все поля доступны только для чтения.

Поле/Метод Описание
indexпорядковый номер (для value у волшебных предметов)
nameанглийское название
nameRusрусское название
adept(ch): вернуть максимальное значение, до которого можно практиковаться
api(): печатает этот api
effective(ch): узнать процент раскачки у персонажа
giveTemporary(ch[,learned[,days]]): присвоить временное умение персонажу, разученное на learned % (или на 75%), работающее days дней (или вечно). Вернет true, если присвоено успешно.
improve(ch,success[,victim]): попытаться улучшить знание умения на успехе/неудаче (true/false), применен на жертву
learned(ch[,percent]): вернуть разученность или установить ее в percent
removeTemporary(ch): очистить временное умение у персонажа. Вернет true, если было что очищать.
run(ch[,victim or level]): выполнить умение без проверок и сообщений
usable(ch): доступно ли умение для использования прямо сейчас персонажу ch

FeniaSkill: новое умение или заклинание, созданное в фене

Поля доступны и для записи, и для чтения.

Поле/Метод Описание
dammsgсообщение о повреждении с падежами через |
dammsg_genderграм.род сообщения о повреждении (m, f, n, p)
nameназвание умения
nameRusрусское название умения
api(): печатает этот api

Строка

Содержание

Доступ к API изнутри мира

  • eval ptc("".api())

Методы

Метод Описание
api(): печатает этот api
arguments(): разбивает строку на список аргументов (слова или фразы в кавычках)
capitalize(): перевести 1й символ в верхний регистр, остальные в нижний
contains(words): true если эта строка содержит одно из слов из строки words
cutOneArgument(): возвращает строку без первого слова (или без первой фразы в кавычках)
format(width): превращает строку в абзац заданной ширины
getOneArgument(): возвращает первое слово или первую фразу в кавычках
isName(arg): является ли слова из arg одними из полных слов в строке
isRussian(): возвращает true если строка не пуста и содержит только русские буквы
is_name(arg): являются ли слова из arg подсловами в строке
match(regex): true если строка соответствует этому регулярному выражению
matchAndReplace(pattern, str): заменяет в данной строке все вхождения $1..$9 на соответствующие совпадения
matchCase(regex): true если строка соответствует этому регулярному выражению с учетом регистра
matchGroups(pattern): возвращает список (List) из всех групп шаблона
replace(s1,s2): заменяет все вхождения первой подстроки на вторую
ruscase(case): строка в указанном падеже
size(): длина строки
split(sep): возвращает List из подстрок, разбитых по разделителю sep
strPrefix(str): true если эта строка - префикс str
stripColour(): удаляет все символы цвета
substr(offset[,length]): возвращает подстроку начинающуюся с offset длины length или до конца
toLower(): переводит всю строку в нижний регистр
trim(): обрезать лишние пробелы по бокам
upperFirstChar(): возвращает ту же строку, но с большой буквы

Таблицы

Доступ ко всем таблицам флагов или значений осущестляется через поле корневого объекта .tables. Список таблиц также можно увидеть по команде olchelp.

Методы всех таблиц (.tables)

  • .tables.api(): вывести список всех полей .tables, то есть всех доступных таблиц

Методы отдельной таблицы (например, .tables.affect_flags)

Каждая из таблиц имеет такие методы:

  • .tables.affect_flag.api(): вывести список всех полей таблицы и их русский перевод.
  • .tables.affect_flag.names(число): вернет строку из названий флагов, которым соответствует это число.
  • .tables.affect_flag.values(строка): вернет числовое значение флага (флагов) по их английскому названию в строке .
  • .tables.affect_flag.флаг: численное значени того или иного флага, например, .tables.affect_flag.curse.