Перейти к содержанию

призыв монстра


Рекомендуемые сообщения

всем привет.

скажите пожалуйста как правильно прописать скрипт в шмотке, чтобы при ее одевании призывался монстр ( Бафомет например ), а при заточке например +7 - 2 бафомета и при снятии шмотки монстры пропадали

и скажите пожалуйста в чем тут проблема?

это происходит при команде @summon 1002

%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.jpeg?referrer=http%3A%2F%2Fpikucha.ru%2F

или где взять нормальную AI.lua

Изменено пользователем Gavard
  • Upvote 1
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты


// Structure of Database:
// ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Upper,Gender,Loc,wLV,eLV,Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }

Тебе нужно следующее:


{ OnEquip_Script },{ OnUnequip_Script }

призывать с помощью

 *summon "Monster name",<monster id>{,<Time Out>{,"event label"}};

убивать наверно с

*killmonster "<map name>","<event label>"{,<type>};

хотя на счет убивать неуверен :)

Ссылка на комментарий
Поделиться на другие сайты

В item_db, в поле OnEquip_Script и OnUnequip_Script соответственно пишем:


callfunc("f_mySummon",1,EQI_HEAD_TOP); //вызываем
и
callfunc("f_mySummon",0,EQI_HEAD_TOP); //убиваем

Создаем скриптовый файл и пишем туда следующее:


function script f_mySummon {

function f_checkSummon;
function f_checkRefine;

set summonRefine,(summonRefine?(f_checkSummon()?summonRefine:0):(getarg(1)?getequiprefinerycnt(getarg(1)):0));

switch(getarg(0)?getarg(0):0)
{
Default:
case 0:
if( f_checkSummon() )
{
for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )
killmonster strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;
set summonRefine, 0;
}
break;
case 1:
if( f_checkSummon() )
dispbottom "You already have "+f_checkRefine(summonRefine)+" summons.",0;
else if( f_checkRefine(summonRefine) )
{
for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )
summon getmonsterinfo(1399,0),1399,86400000,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;
}
break;
}
end;

function f_checkSummon {

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )
{
if( mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i) )
return 1;
}

return 0;

}

function f_checkRefine {

switch(getarg(0))
{
case 5:
case 6:
set .@i, 1;
break;
case 7:
case 8:
case 9:
set .@i, 2;
break;
case 10:
set .@i, 3;
break;
Default:
set .@i, 0;
break;
}
return .@i;
}

}

Должно работать.

@Gavard Нужны скриншоты ошибки из item_db.

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

этот скрипт не работает, но и ошибки не выдает

но старый скрипт работае

function script f_mySummon {

function f_checkSummon;

function f_checkRefine;

set summonRefine, (summonRefine?summonRefine:getequiprefinerycnt(getarg(1)));

switch(getarg(0)?getarg(0):0)

{

Default:

case 0:

if( f_checkSummon() )

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

killmonster strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

set summonRefine, 0;

}

break;

case 1:

if( f_checkSummon() )

dispbottom "You already have "+f_checkRefine(summonRefine)+" summons.",0;

else

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

summon getmonsterinfo(1062,0),1062,-1,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

}

break;

}

end;

function f_checkSummon {

if( mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x1") ||

mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x2") )

return 1;

else

return 0;

}

function f_checkRefine {

switch(getarg(0))

{

case 7:

case 8:

case 9:

case 10:

set .@i, 2;

break;

Default:

set .@i, 1;

break;

}

return .@i;

}

}

только надо изменить жизнь моба до получаса и чтоб заточка влияла на колличество призваных мобов (+5 - 1, +8 - 2, +10 - 3)

  • Upvote 1
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

По порядку, что, где и как писал/делал, что именно не работает?

Только что проверял на тестовом сервере, все идеально работает

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

этот скрипт не работает, но и ошибки не выдает

но старый скрипт работае

function script f_mySummon {

function f_checkSummon;

function f_checkRefine;

set summonRefine, (summonRefine?summonRefine:getequiprefinerycnt(getarg(1)));

switch(getarg(0)?getarg(0):0)

{

Default:

case 0:

if( f_checkSummon() )

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

killmonster strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

set summonRefine, 0;

}

break;

case 1:

if( f_checkSummon() )

dispbottom "You already have "+f_checkRefine(summonRefine)+" summons.",0;

else

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

summon getmonsterinfo(1062,0),1062,-1,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

}

break;

}

end;

function f_checkSummon {

if( mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x1") ||

mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x2") )

return 1;

else

return 0;

}

function f_checkRefine {

switch(getarg(0))

{

case 7:

case 8:

case 9:

case 10:

set .@i, 2;

break;

Default:

set .@i, 1;

break;

}

return .@i;

}

}

только надо изменить жизнь моба до получаса и чтоб заточка влияла на колличество призваных мобов (+5 - 1, +8 - 2, +10 - 3)

Ставь проверки на заточку предмета и вызывай 2 монстра.

Если ты новичок, то это не означает что за тебя будут делать!

Копайся в доках, там много чего полезного для новичков есть.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

По порядку, что, где и как писал/делал, что именно не работает?

Только что проверял на тестовом сервере, все идеально работает

В item_db, в поле OnEquip_Script и OnUnequip_Script соответственно пишем:

callfunc("f_mySummon",1,EQI_HEAD_TOP); //вызываем

и

callfunc("f_mySummon",0,EQI_HEAD_TOP); //убиваем

Работает

Но скрипт который ставится в NPC папке не подходит

ввел самый первый скрипт что ты написал

function script f_mySummon {

function f_checkSummon;

function f_checkRefine;

set summonRefine, (summonRefine?summonRefine:getequiprefinerycnt(getarg(1)));

switch(getarg(0)?getarg(0):0)

{

Default:

case 0:

if( f_checkSummon() )

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

killmonster strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

set summonRefine, 0;

}

break;

case 1:

if( f_checkSummon() )

dispbottom "You already have "+f_checkRefine(summonRefine)+" summons.",0;

else

{

for( set .@i, 1; .@i <= f_checkRefine(summonRefine); set .@i, .@i +1 )

summon getmonsterinfo(1062,0),1062,-1,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

}

break;

}

end;

function f_checkSummon {

if( mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x1") ||

mobcount(strcharinfo(3),"f_mySummon::OnSummon_"+getcharid(3)+"x2") )

return 1;

else

return 0;

}

function f_checkRefine {

switch(getarg(0))

{

case 7:

case 8:

case 9:

case 10:

set .@i, 2;

break;

Default:

set .@i, 1;

break;

}

return .@i;

}

}

и он подошел, но вызывается 1 поринг не зависимо от заточки и жизнь моба не более минуты.

beez0 ответь мне в скайпе, может быстрее разберемся)

как и обещал, отблагодарю)

  • Upvote 1
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

тебе же написали надо

summon getmonsterinfo(1062,0),1062,-1,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

поменять на

summon getmonsterinfo(1062,0),1062,86000000,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

и напиши как у тебя в итем ДБ это дело выглядит и тебе помогут.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

тебе же написали надо

summon getmonsterinfo(1062,0),1062,-1,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

поменять на

summon getmonsterinfo(1062,0),1062,86000000,"f_mySummon::OnSummon_"+getcharid(3)+"x"+.@i;

и напиши как у тебя в итем ДБ это дело выглядит и тебе помогут.

с этими скриптами в интем_дб моб не призывается!

  • Upvote 1
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

Блин кинь мне свой скрипт на якндекс или куда угодно и кинь итемдб где у тебя прописана вещь и кинь ссылку я сейчас тебе сделаю

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
×
×
  • Создать...
Яндекс.Метрика