Jump to content

  •  

Photo

Бонус карт


This topic has been archived. This means that you cannot reply to this topic.
10 replies to this topic

#1 Infarkt

Infarkt

    Poring

  • Members
  • Pip
  • 17 posts

Posted 29 January 2012 - 11:33 AM

Подскажите пожалуйста как сделать что-бы работало только определенное количество карт в одной вещи ?

Допустим если вставить 3 танатос карты в одно оружие, то работать будут только 2 ? Напримере данной карты:

4399,Thanatos_Card,Memory of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ bonus bMaxHPrate,5; bonus bMatkRate,10; bonus bAtkRate,10; bonus bDef,-15; bonus bFlee,-15; },{},{}


#2 Lilith

Lilith

    ^.^

  • Core Developers
  • 342 posts

Posted 29 January 2012 - 02:19 PM

Я конечно не проверял, но попробуй... должно работать




// callfunc "GetCardCount",<CARD_ID>;
// Пример, если у игрока в каком либо предмете вставлены 3 карты Танатоса
// и мы хотим ограничиться 2-мя картами, то пишем.
// callfunc "GetCardCount",4399;
// 4399,(...),{ if(callfunc("GetCardCount",4399) < 3) { тут код } },{},{}



function script GetCardCount {

getinventorylist;

for(set .@a,0; .@a < getarraysize(@inventorylist_id); set .@a,.@a+1){
if(@inventorylist_card1[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card2[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card3[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card4[.@a] == getarg(0)) set .@b,.@b+1;
}

deletearray @inventorylist_id[0],getarraysize(@inventorylist_id);
deletearray @inventorylist_amount[0],getarraysize(@inventorylist_amount);
deletearray @inventorylist_equip[0],getarraysize(@inventorylist_equip);
deletearray @inventorylist_refine[0],getarraysize(@inventorylist_refine);
deletearray @inventorylist_identify[0],getarraysize(@inventorylist_identify);
deletearray @inventorylist_attribute[0],getarraysize(@inventorylist_attribute);
deletearray @inventorylist_card1[0],getarraysize(@inventorylist_card1);
deletearray @inventorylist_card2[0],getarraysize(@inventorylist_card2);
deletearray @inventorylist_card3[0],getarraysize(@inventorylist_card3);
deletearray @inventorylist_card4[0],getarraysize(@inventorylist_card4);
deletearray @inventorylist_expire[0],getarraysize(@inventorylist_expire);

return .@b;
}

Edited by Lilith, 29 January 2012 - 02:20 PM.


#3 Infarkt

Infarkt

    Poring

  • Members
  • Pip
  • 17 posts

Posted 29 January 2012 - 02:43 PM

Нет, работает больше 2-х карт.

#4 Oxxy

Oxxy

    Poporing

  • Members
  • PipPipPipPip
  • 108 posts

Posted 30 January 2012 - 03:26 PM

В скрипте вещи, первые скобки.
THAN заменить на Айди Танатос Карты к примеру.
  • if (isequipped(THAN)) { bonus bInt,0; }
  • if (isequipped(THAN) ==2) { bonus bInt,-25; }
и т.д.

Edited by Oxxy, 31 January 2012 - 02:05 PM.


#5 Infarkt

Infarkt

    Poring

  • Members
  • Pip
  • 17 posts

Posted 31 January 2012 - 01:41 AM

[Error]: Loading NPC file: npc/flower/GetCardCount.txt
script error on npc/flower/GetCardCount.txt line 7
parse_simpleexpr: unmatch ')'
2 :
3 : getinventorylist;
4 :
5 : for(set .@a,0; .@a < getarraysize(@inventorylist_id); set .@a,.@a+1){
6 : if (isequipped(4399)) { bonus bAllStats,5; bonus bMaxHPrate,5; bonus bM
atkRate,10; bonus bAtkRate,10; bonus bDef,-15; bonus bFlee,-15; };
* 7 : if(iseequipped'('4399) ==2) { bonus bAllStats,-5; bonus bMaxHPrate,-5;
bonus bMatkRate,-10; bonus bAtkRate,-10; bonus bDef,-15; bonus bFlee,-15; };
8 : if(@inventorylist_card1[.@a] == getarg(0)) set .@b,.@b+1;
9 : else if(@inventorylist_card2[.@a] == getarg(0)) set .@b,.@b+1;
10 : else if(@inventorylist_card3[.@a] == getarg(0)) set .@b,.@b+1;
11 : else if(@inventorylist_card4[.@a] == getarg(0)) set .@b,.@b+1;
12 : }


function script GetCardCount {

getinventorylist;

for(set .@a,0; .@a < getarraysize(@inventorylist_id); set .@a,.@a+1){
if (isequipped(4399)) { bonus bAllStats,5; bonus bMaxHPrate,5; bonus bMatkRate,10; bonus bAtkRate,10; bonus bDef,-15; bonus bFlee,-15; };
if (iseequipped(4399) ==2) { bonus bAllStats,-5; bonus bMaxHPrate,-5; bonus bMatkRate,-10; bonus bAtkRate,-10; bonus bDef,-15; bonus bFlee,-15; };
if(@inventorylist_card1[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card2[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card3[.@a] == getarg(0)) set .@b,.@b+1;
else if(@inventorylist_card4[.@a] == getarg(0)) set .@b,.@b+1;
}

deletearray @inventorylist_id[0],getarraysize(@inventorylist_id);
deletearray @inventorylist_amount[0],getarraysize(@inventorylist_amount);
deletearray @inventorylist_equip[0],getarraysize(@inventorylist_equip);
deletearray @inventorylist_refine[0],getarraysize(@inventorylist_refine);
deletearray @inventorylist_identify[0],getarraysize(@inventorylist_identify);
deletearray @inventorylist_attribute[0],getarraysize(@inventorylist_attribute);
deletearray @inventorylist_card1[0],getarraysize(@inventorylist_card1);
deletearray @inventorylist_card2[0],getarraysize(@inventorylist_card2);
deletearray @inventorylist_card3[0],getarraysize(@inventorylist_card3);
deletearray @inventorylist_card4[0],getarraysize(@inventorylist_card4);
deletearray @inventorylist_expire[0],getarraysize(@inventorylist_expire);

return .@b;
}


#6 Lilith

Lilith

    ^.^

  • Core Developers
  • 342 posts

Posted 31 January 2012 - 06:28 AM

Забудь мой скрипт.

4399,Thanatos_Card,Memory of Thanatos Card,6,20,,10,,,,,,,,2,,,,,{ if(isequippedcnt(4399) < 3) { bonus bMaxHPrate,5; bonus bMatkRate,10; bonus bAtkRate,10; bonus bDef,-15; bonus bFlee,-15; } },{},{}


НО в таком случае если карты 3 и более, то никакой эффект не проявляется...

Вероятно тут нужна модификация исходников.

#7 Infarkt

Infarkt

    Poring

  • Members
  • Pip
  • 17 posts

Posted 31 January 2012 - 07:10 AM

Спасибо, пусть будет хоть так.

#8 Oxxy

Oxxy

    Poporing

  • Members
  • PipPipPipPip
  • 108 posts

Posted 31 January 2012 - 02:05 PM

Infarkt, читай внимательнее, я написал в код ВЕЩИ, а не в скрипт.

#9 Evil

Evil

    Drops

  • Members
  • PipPip
  • 25 posts

Posted 09 July 2012 - 12:08 PM

Мое решение: http://rus-ea.ru/for...posts&p=165#165
Сейчас не могу опробовать, но хотел бы узнать, верно или нет :)

Edited by Evil, 09 July 2012 - 12:08 PM.


#10 Lilith

Lilith

    ^.^

  • Core Developers
  • 342 posts

Posted 09 July 2012 - 01:09 PM

Проверил на поринге - работает.
4001,Poring_Card,Poring Card,6,20,,10,,,,,,,,16,,,,,{ d+=1; if( d < 2) { bonus bLuk,2; bonus bFlee2,1; } if (isequippedcnt(4001) == d ) {d = 0;} },{},{}
Хорошая смекалка ;)

#11 Evil

Evil

    Drops

  • Members
  • PipPip
  • 25 posts

Posted 10 July 2012 - 10:00 AM

Спасибо.