Что то вот сидел я сегодня и думал, что мир у нас какой то не
фэнтэзийный получается. Магия есть, единороги там всякие,
драконы, а цветных бревен нет.
Не хорошо это, поэтому давайте забабацаем цветные логи. Чтобы
игроку было приятно иметь с ними дело, рекомендуется давать им
цвет кислотно - маниакальный.
Дело не долгое и не сложное, как говорится не так страшен черт,
как его малютка.
Так вот, что бы были цветные логи их надо сначала создать, а
создать их надо не иначе как в папке с вашим скилом для
лесо-рубо-строения, а
по-заморски он звучит как lumberjacking, нашли такую папочку,
здорово. Теперь создадим в ней фаил itemdesc.cfg в который
запишем следующее:
Item 0x????
{
Name strong log
Graphic 0x1bdd
Color тут какой нить супер кислотный цвет
Desc strong log
Movable 1
Weight 1
VendorSellsFor 500
VendorBuysFor 10
}
Item 0x????
{
Name fantastish log
Graphic 0x1bdd
Color цвет тоже что нить типа фантастиш, например ярко розовый.
Desc fantastish log
Movable 1
Weight 1
VendorSellsFor 800
VendorBuysFor 30
}
Item 0x????
{
Name super log
Graphic 0x1bdd
Color нужный цвет
Desc super log
Movable 1
Weight 5 - гы, потяжелее :)
VendorSellsFor 1500
VendorBuysFor 60
}
Вобщем так можно писать до опупения, пока фантазия не иссякнет.
У меня вот уже иссякла. Но просто само существование логов нам
не нужно, нам их нужно вырубать,
а для этого лезем в lumbejack.src, находим функцию Do_chops и
после слов var points := CInt((GetEffectiveSkill(me,
SKILLID_LUMBERJACKING) + 10));
if(CheckSkill(me, SKILLID_LUMBERJACKING, difficulty, points))
вставим такое var beda:= RandomInt(100); потом описываем что за
беда:
if(beda = 1)
SendSysMessage(me, "Ooo NEEET! Your breaks tool stupid!");
DestroyItem (axe);
return 0;
endif
if (beda = 50)
sendsysmessage(me, "Bly, po noge popal :~(");
ApplyRawDamage( me, Cint(RandomInt(60)+1) );
PerformAction( me, randomint(35));
PlaySoundEffect( me, 0x0136 +randomint(22) );
return 0;
endif
endcase
потом после слов wood_amount := HarvestResource... вставляем
нашу вырубку логов, я буду использывать их вырубку в зависимости
от скила, хотя зависимость может
быть от чего угодно, и так бацаем:
if (Cint(randomint(110) + 92) < skill)
CreateItemInBackpack(me, ******, wood_amount);
SendSysmessage(me, "You put some super logs in your backpack");
return 1;
elseif (Cint(randomint(160) + 94) < skill)
CreateItemInBackpack(me, *****, wood_amount);
SendSysmessage(me, "You put some strong logs in your backpack");
return 1;
elseif (Cint(randomint(200) + 80) < skill)
CreateItemInBackpack(me, ******, wood_amount);
SendSysmessage(me, "You put some fantastish logs in your
backpack");
return 1;
else
CreateItemInBackpack(me, UOBJ_LOGS, wood_amount);
SendSysmessage(me, "You put some logs in your backpack");
return 1;
endif
вместо ***** вставьте номер лога который вы определили в
itemdesk.cfg, например если в кфг файле вы определили super логу
номер 0xaaa, то пишите CreateItemInBackpack(me, 0xaaaa,
wood_amount);
Вот, теперь цветные логи рубятся, игроки довольны сил нету. Но
вам все равно чего то не хватает, дайте угадаю, вы хотите делать
из разных логов оружие с различными бонусами, угадал?
Ну что ж и это поправимо, ищем файлец bladed.src, нашли? Далее
ищем строки:
elseif (what == UOBJ_BOW)
if(SubtractAmount(logs, material))
bow := CreateItemInBackpack(who, what);
и дописываем
bow.color := logs.color;
и так прописываем для всех ваших арбалетов и т.д.
Щас немного объясню что мы сделали. Мы покрасили только что
сделанный лук в определенный цвет, далее при навешивании
бонусов, мы просто замутим простой оператор case,
который от цвета будет вешать ту или иную плюшку на предмет.
Потом в функцию setquality(who, bow) или можно написать свою
функцию и вызывать ее после сеткволити, вобщем не суть, главное
написать:
case (bow.color)
0x???: bow.dmg_mod := Cint((bow.quality) * 22);
SendSysmessage( character, "bonus= " + bow.dmg_mod);
SendSysmessage( character, "quality= " + bow.quality);
0x???: bow.dmg_mod := Cint((bow.quality) * 18);
SendSysmessage( character, "bonus= " + bow.dmg_mod);
SendSysmessage( character, "quality= " + bow.quality);
0x???: bow.dmg_mod := Cint((bow.quality) * 18);
SendSysmessage( character, "bonus= " + bow.dmg_mod);
SendSysmessage( character, "quality= " + bow.quality);
default: if (bow.quality = 1.5)
bow.dmg_mod := Cint((bow.quality*6));
SendSysmessage( character, "bonus= " + bow.dmg_mod);
SendSysmessage( character, "quality= " + bow.quality);
endif
endcase
если вы хотите добавить например вред ядом посоху сделанному из
соответствующего дерева, то в карпентри, опять же проверяя цвет
добавьте var hits := GetObjProperty(theitem,"OnHit");
if(hits)
hits.append("poisonhit");
SetObjProperty(theitem,"OnHit",hits);
else
SetObjProperty(theitem,"OnHit",{"poisonhit"});
endif
Ну, вроде пока все.
Статью прислал: Slayer
Comments:
висняк - CyMKuH (Registered) at 07:16:58 AM on 8/4/2003
попробовал твой скрипт...
логи делаются... всё нормально
но как тока я начинаю рубить дерево...
происходит висняк... вообще наглухо...
ПОЛ занимает 96% процессора... и виснет... не отвечает на
команды... в консоле ничего не пишет..
подскажи что надо делать... какие-нить мысли хотябы...
не прёт - VANYS (Anonymous) at 07:57:47 PM on 4/17/2004
даже скомпилить не смог
не прёт - VANYS (Anonymous) at 07:57:49 PM on 4/17/2004
даже скомпилить не смог
С луками проблы... - anubis (Anonymous) at 06:18:37 PM on
6/12/2004
Не могу делать луки и подобное:(
don't work - winner (Anonymous) at 04:57:58 AM on 3/21/2005
пробовал целый день. почему то когда все исправлю в документах
иземеню, и запушу опять сервер, она сам автоматом закрывается...
незнаю что сделать. вроде все правильно. * надо ли
откампилировать?* вроде делал, и тогда все летело :( у меня
стоит пол 95.
Кто может - помогите