Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Требуется помощь.. ч. 2
oda128
сообщение 19.12.2013, 1:45
Сообщение #1


***

Группа: Пользователи
Наличность: 0
Пользователь №: 15.797



Что означает:

return 0;

return 1;

Дальше не встречал, если знаете еще какие-то варианты, опишите их тоже.


Код:
Код
  var str := GetBaseStrength(who);
  var dex := GetBaseDexterity(who);
  var int := GetBaseIntelligence(who);

      if( str >= 100)
          SendSysMessage( who, "Your strength at the maximum.", 3, 33 );
          SetBaseStrength( who, 100 );
          Sleep(3);
          EraseObjProperty(who, "@Increase" );
          return 0;
      endif

      if( dex >= 150 )
          SendSysMessage(who, "Your dexterity at the maximum.", 3, 33);
          SetBaseDexterity( who, 150 );
          Sleep(3);
          EraseObjProperty(who, "@Increase" );
          return 0;
      endif

      if( int >= 100 )
          SendSysMessage(who, "Your intelligence at the maximum.", 3, 33);
          SetBaseIntelligence( who, 100 );
          Sleep(3);
          EraseObjProperty(who, "@Increase" );
          return 0;
      endif


Этот код вызывается командой, в которой одна функция:

Код
    if( !CheckClasseStatCap(who) )
        SendSysMessage(who, "Your statcap at the maximum.", 3, 33);
        return;
    endif


Итог: не проверяет силу, декс и инту.
Если больше или меньше стата, ничего не проверяет!

Не понимаю, в чем проблема и ошибка?

С уважением.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
RL_ka
сообщение 19.12.2013, 2:45
Сообщение #2


*****

Разработчик Injection
Сообщений: 464
Регистрация: 13.7.2013
Группа: Модераторы
Наличность: 13733
Из: Екатеринбург
Пользователь №: 16.211



Return это возврат какого-либо значения.
Возвращать можно что угодно: числа, строки, массивы, ссылки на объекты и так далее.
Например в твоём скрипте происходит вызов:
Код
var ABC = GetABC();

А твоя функция делает:
Код

function GetABC()
var a := 1;
var b := 2;
return (a+b);
endfunction

В итоге ABC будет равнa трём. Точно так же можно вернуть return "blablabla"; тогда ABC="blablabla".
После return функция завершает свою работу в любом случае. Return без параметра срабатывает просто как остановка функции.
В твоём случае, если силы >= 100, то скрипт завершает свою работу и не проверяет интеллект и декстерити.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
oda128
сообщение 19.12.2013, 12:24
Сообщение #3


***

Группа: Пользователи
Наличность: 0
Пользователь №: 15.797



RL_ka, спасибо за полезную информацию!
А каким образом можно сделать, чтобы return; не заканчивала работу функции, а наоборот, проверила всё до конца? Можно ли это как-то указать в return .... ; или просто убрать её и оставить только в проверке интелекта?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
RL_ka
сообщение 19.12.2013, 14:29
Сообщение #4


*****

Разработчик Injection
Сообщений: 464
Регистрация: 13.7.2013
Группа: Модераторы
Наличность: 13733
Из: Екатеринбург
Пользователь №: 16.211



Цитата(oda128 @ 19.12.2013, 10:24) *

RL_ka, спасибо за полезную информацию!
А каким образом можно сделать, чтобы return; не заканчивала работу функции, а наоборот, проверила всё до конца? Можно ли это как-то указать в return .... ; или просто убрать её и оставить только в проверке интелекта?


Ну, это смотря какие ты требования к скрипту выдвигаешь.
Опиши подробнее что он должен делать по твоей задумке, из твоего скрипта я пока не совсем понимаю для чего это используется. Например что делать если два стата выше "нормы" а один ниже?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
oda128
сообщение 19.12.2013, 18:30
Сообщение #5


***

Группа: Пользователи
Наличность: 0
Пользователь №: 15.797



Суть скрипта, проверка класса определенного персонажа на статы.
Если класс ... , то статы не больше ... .
Путем эксперемента, я добился того, чтобы шла проверка на все статы:

Код

    if( IsClassed( who, CLASSEID_ARTISAN ) )

      if( str > 150 )
          SendSysMessage(who, "Your strength at the maximum.", 3, 33);
          SetBaseStrength( who, 150 );

//          return 0;
      endif

      if( dex > 100 )
          SendSysMessage(who, "Your dexterity at the maximum.", 3, 33);
          SetBaseDexterity( who, 100 );

//          return 0;
      endif

      if( int > 100 )
          SendSysMessage(who, "Your intelligence at the maximum.", 3, 33);
          SetBaseIntelligence( who, 100 );

//          return 0;
      endif

    endif // end of CLASSE



На счет того, если 2 стата выше определенного кол-во - проверка их обрезает до этого количество.
Если другой стат ниже - ничего не происходит.

Если есть поправки, с удовольствием приму!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
PolDev
сообщение 20.12.2013, 9:16
Сообщение #6


****

Группа: Пользователи
Наличность: 0
Пользователь №: 14.164
Возраст: 22



Просто убери все return 0 и будет тебе счастье (IMG:style_emoticons/default/tongue.gif)


--------------------
Оказываю услуги по скриптингу Pol серверов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 21:11
Designed by Nickostyle