2okin: ага, задумку понял. Если вы проверяете дистанцию между ГГ и вейпоинтом - проблем быть не должно. Т.е. если self - ГГ, то дистанция будет определяться независимо от положения ГГ в мире (если, конечно, он не перейдейт в другой мир, ZEN в плане ;D). Если бы скриптовой язык готики имел больше функций обработки массивов, то можно было бы получить 6 дистанций, загнать их в массив, найти минимальное значение, вернуть ключ и вуаля.
А так прихдится писать разветвленную и громозкую систему условий. Возможно где-то в ней ошибки. Например, я быстренько сделал вот такой скрипт (Г1), дистанция пишется в дневник вполне исправно.
Код:
instance MapRing(C_Item){ name = NAME_Ring; mainflag = ITEM_KAT_MAGIC; flags = ITEM_RING; value = 0; visual = "ItMi_Ring_01.3ds"; visual_skin = 0; material = MAT_METAL; on_equip = Equip_MapRing; on_unequip = UnEquip_MapRing; description = "Кольцо"; text[2] = ""; text[3] = ""; text[5] = NAME_Value; count[5] = value;};func void Equip_MapRing(){ var int oc; var int nc; oc=Npc_GetDistToWP(self, "OCC_CENTER_1"); nc=Npc_GetDistToWP(self, "NC_DAM"); Log_CreateTopic("Дистанция",LOG_NOTE); Log_CreateTopic("Старый Лагерь",LOG_NOTE); Log_CreateTopic("Плотина",LOG_NOTE); if (oc<nc) { B_LogEntry("Дистанция", "Старый Лагерь ближе плотины."); } else if (oc>nc) { B_LogEntry("Дистанция", "Плотина ближе Старого Лагеря"); } else { B_LogEntry("Дистанция", "Расстояния одинаковы"); }; B_LogEntry("Старый Лагерь", IntToString(oc)); B_LogEntry("Плотина", IntToString(nc)); };func void UnEquip_MapRing(){};
Если ГГ использует кольцо в любой точке мира oldworld.zen - информация выводится вполне корректно ;)