Jump to content
  • 0

[ SOLVED ] H>Put announcement in Card Trader


GM Winter

Question


  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.14
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

hello im having an error putting announcement in this card decomposer npc

 

Quote

//===== rAthena Script =======================================
//= Card Trader
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.1 
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Exchange cards for points.
//============================================================

//payon,140,206,5    script    Card Decomposer    4_LEVITATEMAN,{
prontera,188,163,4    script    Card Decomposer    4_LEVITATEMAN,{
    mes "[Card Decomposer]";
    mes "Hi, "+strcharinfo(0)+"!";
    mes "What can I do for you?";
    next;
    switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) {
    case 1:
        mes "[Card Decomposer]";
        mes "Do you find that you've got";
        mes "useless cards lying around?";
        mes "I'll be glad to take them off";
        mes "your hands!";
        next;
        mes "[Card Decomposer]";
        mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each";
        mes "card you give me";
//        mes "^0055FF"+.Points[1]+" Points^000000 for MVP cards.";
        mes "You can trade those points";
        mes "for items later on.";
        mes "How does that sound?";
        emotion ET_MONEY;
        close;
    case 2:
        mes "[Card Decomposer]";
        mes "Select the cards you";
        mes "want to trade in.";
        if (.Level) {
            mes " ";
            mes "They must be dropped";
            mes "by monsters of level";
            mes .Level+" and above.";
        }
        deletearray @sold_nameid[0],getarraysize(@sold_nameid);
        callshop "card_shop",2;
        npcshopattach "card_shop";
        end;
    case 3:
        mes "[Card Decomposer]";
        mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s.");
        callshop "card_shop",1;
        npcshopattach "card_shop";
        end;
    case 4:
        mes "[Card Decomposer]";
        mes "*yawn*";
        mes "See you later!";
        emotion ET_SLEEPY;
        close;        
    }

OnSellItem:
    mes "Cards to sell:";
    mes "-----------------------------------";
    for(set .@i,0; .@i<getarraysize(@sold_nameid); set .@i,.@i+1)
        if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) {
            if (.Level) {
                query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv);
                if (.@lv < .Level) {
                    dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level.";
                    continue;
                }
            }
            set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i];
            set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i];
            set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]);
            mes ((.@mvp)?"  ^FF0000":"  ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000";
            set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0]));
        }
    deletearray @sold_nameid[0], getarraysize(@sold_nameid);
    deletearray @sold_quantity[0], getarraysize(@sold_quantity);
    if (!.@card_id) {
        mes "  ^777777(none)^000000";
        emotion ET_SWEAT;
        close;
    }
    mes " ";
    mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------";
    next;
    if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
        mes "[Card Decomposer]";
        mes "Oh, okay...";
        emotion ET_SCRATCH;
        close;
    }
    for(set .@i,0; .@i<getarraysize(.@card_id); set .@i,.@i+1)
        delitem .@card_id[.@i],.@card_amt[.@i];
    setd .Points$, getd(.Points$)+.@card_total;
    mes "[Card Decomposer]";
    mes "All done!";
    emotion ET_DELIGHT;
    close;

OnBuyItem:
    for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1)
        for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2)
            if (@bought_nameid[.@i] == .Shop[.@j]) {
                set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]);
                break;
            }
    if (.@cost > getd(.Points$)) {
        mes "[Card Decomposer]";
        mes "You don't have enough Points.";
        emotion ET_HUK;
    }
    else {
        mes "Items purchased:";
        mes "-----------------------------------";
        for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) {
            getitem @bought_nameid[.@i], @bought_quantity[.@i];
            mes "  ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000";
        }
        mes " ";
        mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------";
        setd .Points$, getd(.Points$)-.@cost;
        emotion ET_MONEY;
        announce ""+strcharinfo(0)+" just exchanged trash cards into "+getitemname(.@k[0])+" x "+.@k[1]+" from Card Decomposer NPC!",0;
    }
    deletearray @bought_nameid[0], getarraysize(@bought_nameid);
    deletearray @bought_quantity[0], getarraysize(@bought_quantity);
    close;

OnInit:
    set .Level,0;           // Minimum monster level to trade corresponding cards.
    set .Points$,"#Card_Points";    // Variable to store points.
    setarray .Shop[0],        // Card Shop items: <ID>,<point cost>
      616,5,
      4140,20,
      4317,30,
      4068,50,
      4303,150;
    setarray .Points[0],1;    // Points per <normal card>,<MVP card>
//    set .MVP$,            // List of MVP cards.
//      "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,"+
//      "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407";

    npcshopdelitem "card_shop",909;
    for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2)
        npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1];
    OnTimer0050:
        showscript "Card Decomposer", getnpcid(0);
        initnpctimer;
        end;
}
-    shop    card_shop    -1,909:-1

//bg_lobby,42,39,5    duplicate(Card Decomposer)    Card Decomposer#bgl    4_LEVITATEMAN
//prontera,188,163,4    duplicate(Card Decomposer)    Card Decomposer#prt1    4_LEVITATEMAN
//prt_fild08,180,353,4    duplicate(Card Decomposer)    Card Decomposer#prtf    4_LEVITATEMAN
 

 

12345.png

Edited by GM Winter
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  174
  • Reputation:   18
  • Joined:  10/09/14
  • Last Seen:  

-->> getitemname(.@k[0])

where did you create this array .@k ??

Create it first, otherwise you will always get null value sir

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.14
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

26 minutes ago, danielps said:

-->> getitemname(.@k[0])

where did you create this array .@k ??

Create it first, otherwise you will always get null value sir

solved just change it to this 

        announce ""+strcharinfo(0)+" just exchanged trash cards into "+getitemname(@bought_nameid)+" from Card Decomposer NPC!",0;

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  11
  • Topics Per Day:  0.05
  • Content Count:  45
  • Reputation:   25
  • Joined:  09/09/23
  • Last Seen:  

Note, your solution only displays the first item on the list. If they bought multiple cards, then it won't announce the rest.

Example: Player A bought Poring, Drops and Fabre Card - the only one that will be showed on announce is Poring Card

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.14
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

54 minutes ago, Nyaniverse said:

Note, your solution only displays the first item on the list. If they bought multiple cards, then it won't announce the rest.

Example: Player A bought Poring, Drops and Fabre Card - the only one that will be showed on announce is Poring Card

ow i see i try it and your right do you have any idea how to fixed it?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...