I WonT To BeLiVe
Домашняя ] Вверх ]
All what you wont, Last update 12.08.07.


Upload

In Da Forum форум сайта смотрим тут


Новости Сайта

12.08.07 Доработан дизайн.


03.07.07 Добавлены разделы.

02.07.07 Новый дизайн.

22.11.06 Обновление.

10.07.06 Форум упал.

20.06.06 Новый форум.

17.06.06 Форум удален.
 

10.06.06 Новый дизайн.


________________
Происшествия
________________
Предложения и пожелания,нашли неработающую ссылку?

Напишите об этом Администратору
Спасибо !!!
 

 
Скилл Кап

Многие из создателей шардов вводят на них уровни игроков или систему классов, соответственно для этого нужны и ограничения на скиллы. Вот сегодня мы и рассмотрим данное действие.
Для начала сразу расставим все точки над Ы.
1. Скрипт будет примитивно – простым, дабы объяснить суть дела, улучшение кода, как то занесение нужных для ограничения скиилов в cfg файлы, или хранение их на свойствах персонажа или занесения их в массив уже будете делать вы :р.
2. Скрипт будем писать на ограничение скиллов относительно уровня игрока. И будем считать что, уровень игрока будет хранится на проперти чара с именем Level.

И так, для начала немного общей теории. Перед присваиванием очков на скилл, функция AwardRawAttributePoints, отсылает ивент файлу pkg\foundations\hooks\attributeCore.src, который и будет проверять у нас значение скилла.
Открываем фаил attributeCore, находим функцию CheckSkillCap(who, ev) и начинаем там все править к чертовой матери. Для начала проверим того, кого будем проверять (Гы :)), если это НПС или ГМ, то мы не будем их никоим образом резать, для этого напишем следующее:
if(who.npctemplate)
return 1;
endif
if(who.cmdlevel)
return 1;
endif
Получим используемый скилл:
var attributeid := ev.skid;
Далее нам надо получить уровень игрока, следовательно пишем:
var level := Cint(GetObjProperty(who, "level"));
Далее уже будем ограничивать скиллы, скажем, например. Что на 0 уровне игрок может прокачать тактику не более 50, а все остальные скиллы не более 70, на 1 все скиллы можно будет прокачать не более 90, ну а на 2 не более 110. Далее оператором кейс будем для каждого уровня проводить ограничения. И так пишем:
case(level)
0:if(GetAttributeBaseValue(who, ATTRIBUTEID_TACTICS) > 500)
SetAttributeBaseValue(who, ATTRIBUTEID_DETECTINGHIDDEN, 500);
else
if(GetAttributeBaseValue(who, attributeid) > 700 )
SetAttributeBaseValue(who, attributeid, 700);
SendSysMessage(who, "You are not permitted to gain more than 70 in any skill with level 0");
Endif
endif
1: if(GetAttributeBaseValue(who, attributeid) > 900 )
SetAttributeBaseValue(who, attributeid, 900);
SendSysMessage(who, "You are not permitted to gain more than 90 in any skill with level 1");
endif
2: if(GetAttributeBaseValue(who, attributeid) > 1100 )
SetAttributeBaseValue(who, attributeid, 1100);
SendSysMessage(who, "You are not permitted to gain more than 110 in any skill with level 2");
endif
endcase
endfunction

За сим вроде как все, напишите, проверьте, если будут ошибки, глюки или вопросы пишите.

 


 

Новое из разделов:


Юмор:
Комментатор

 


Тюнинг:
Самое мощное авто

 


Web дизайн:
Хитрости

 


Мобильник:
Сервисные коды

 

 


История дня:

Звони по 0,01$


 

 
Hosted by uCoz