Что здесь неправильно?

 
UA nizovskiy #19.10.2005 18:37
+
-
edit
 

nizovskiy

новичок
Вот код:
code forth
  1.  recall all klan member to me (klan leader)
  2.  
  3.  called as ".klan_to_me"
  4.  
  5.  установка констант
  6.   50000 constant km_change  определяем нашу цену
  7.  
  8.  проверка на лидера клана
  9.   : clan-leader? ( player - flag ) player@ "ClanLeader" p? ;
  10.  
  11.  действие для всех онлайн игроков
  12.   : km_clan_teleport
  13.   list> drop                              раскроем список и уберем лишнее
  14.   player@ "ClanId" p@ = if                игрок принадлежит к этому же клану?
  15.   s>coords drop                           преобразуем координаты и дропаем флаг
  16.   100 coords-randomize jump "You moved by leader klan" show exit  телепортируем, показываем сообщение
  17.   then
  18.   ;
  19.  
  20.  Сама пользовательская команда .klan_to_me
  21.   : user_klan_to_me
  22.   clan-leader? 0 < if "You not klan leader" show exit then
  23.   km_change adena_pay drop                проверка и выплаты денег
  24.   loc@ coords>s                           получаем текущие координаты лидера и преобразуем их в строку
  25.   player@ "ClanId" p@ 2 >list             получаем ID клана и все упаковываем в список
  26.   "km_clan_teleport" p-do-players         выполняем команду для всех игроков онлайн
  27.   ;

простой гамер набирает .klan_to_me
так вот, после проверки на на клан лидера, у него вылазит сообщение что он не клан лидер и все равно выхода нет, и все игроки не состоящие в кланах телепортятся к нему
 
+
-
edit
 

Balancer

администратор
★★★★★
Первое, что лезет в голову, это
code forth
  1. clan-leader? 0 < if "You not klan leader" show exit then


Вообще, правильно так:
code forth
  1. clan-leader? not if "You not clan leader" show exit then


У тебя же выходит вот что. Если игрок не является лидером клана, то возвращается 0. Ноль не меньше, чем ноль, так что условие ложно, и блок выхода из слова не проходит. Т.е. слово обрабатывается для не лидеров клана.

Если же игрок - лидер, то -1 оказывается меньше, чем ноль, условие истинно, происходит выход с сообщением, что он - не лидер клана :)

В остальном с виду всё ок. Если дальше опять что-то работать не будет, пиши, посмотрю :)
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru