viewing paste rA/75147-i weapon_shop | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
prontera,156,184,4      script  ksdjfhskhfj     100,{
        mes "blah";
        .@job = .basejob[BaseJob]; // note : if basejob is out of range, will default to novice because its 0
        .@s = select( .menu$[ .@job ] ) -1;
        close2;
        callshop "weapon_shop#"+ getd( ".weaponselect"+ .@job +"["+ .@s +"]" ), 1; // EDITED : optimized a little bit
        end;
OnInit:
        .basejob[JOB_NOVICE] = 0;
        .basejob[JOB_SUPER_NOVICE] = 0;
        .basejob[JOB_SWORDMAN] = 1;
        .basejob[JOB_MAGE] = 2;
        .basejob[JOB_ARCHER] = 3;
        .basejob[JOB_ACOLYTE] = 4;
        .basejob[JOB_MERCHANT] = 5;
        .basejob[JOB_THIEF] = 6;
        .basejob[JOB_KNIGHT] = 7;
        .basejob[JOB_PRIEST] = 8;
        .basejob[JOB_WIZARD] = 9;
        .basejob[JOB_BLACKSMITH] = 10;
        .basejob[JOB_HUNTER] = 11;
        .basejob[JOB_ASSASSIN] = 12;
        .basejob[JOB_CRUSADER] = 14;
        .basejob[JOB_MONK] = 15;
        .basejob[JOB_SAGE] = 16;
        .basejob[JOB_ROGUE] = 17;
        .basejob[JOB_ALCHEMIST] = 18;
        .basejob[JOB_BARD] = 19;
        .basejob[JOB_DANCER] = 19;
        .basejob[JOB_TAEKWON] = 21;
        .basejob[JOB_STAR_GLADIATOR] = 22;
        .basejob[JOB_SOUL_LINKER] = 23;
        .basejob[JOB_GUNSLINGER] = 24;
        .basejob[JOB_NINJA] = 25;
        .basejob[JOB_GANGSI] = 26;
        .basejob[JOB_DEATH_KNIGHT] = 27;
        .basejob[JOB_DARK_COLLECTOR] = 28;
        .basejob[JOB_KAGEROU] = 29;
        .basejob[JOB_OBORO] = 29;
        .basejob[JOB_REBELLION] = 30;
        .basejob[JOB_SUMMONER] = 31;
        setarray .@weaponname$[1],
                "Daggers",
                "One-handed swords",
                "Two-handed swords",
                "One-handed spears",
                "Two-handed spears",
                "One-handed axes",
                "Two-handed axes",
                "Maces",
                "", // <-- stupid unused
                "Staves",
                "Bows",
                "Knuckles",
                "Musical Instruments",
                "Whips",
                "Books",
                "Katars",
                "Revolvers",
                "Rifles",
                "Gatling guns",
                "Shotguns",
                "Grenade launchers",
                "Fuuma Shurikens",
                "Two-handed staves";
        freeloop true;
        for ( .@i = 0; .@i <= 31; ++.@i )
                .@statement$[.@i] = "select sum(aaa) from ( select 1 << view as aaa from item_db where type = "+ IT_WEAPON +" && equip_jobs & 1<<"+ .@i +" group by view ) as zzz";
        query_sql implode( .@statement$, " union all " ), .@weaponbits;
        for ( .@i = 0; .@i <= 31; ++ .@i ) { // job index
                if ( .@i != 13 && .@i != 20 ) { // unused
                        .@c1 = .@c2 = 0;
                        for ( .@j = 1; .@j <= 22; ++.@j ) { // weapon index
                                if ( .@j != 9 ) {
                                        if ( .@weaponbits[.@i] & 1 << .@j ) {
                                                .menu$[.@i] = .menu$[.@i] +"^00CC00"+ .@weaponname$[.@j] +":";
                                                setd ".weaponselect"+ .@i +"["+( .@c1++ )+"]", .@j;
                                        }
                                        else {
                                                .@menu$[.@i] = .@menu$[.@i] +"^FF0000"+ .@weaponname$[.@j] +":";
                                                setd ".@weaponselect"+ .@i +"["+( .@c2++ )+"]", .@j;
                                        }
                                }
                        }
                        .menu$[.@i] += .@menu$[.@i];
                        copyarray getd( ".weaponselect"+ .@i +"["+ .@c1 +"]" ), getd( ".@weaponselect"+ .@i ), .@c2;
                }
        }
        for ( .@i = 1; .@i <= 22; ++.@i ) {// weapon shops
                .@nb = query_sql( "select id from item_db where type = "+ IT_WEAPON +" && view = "+ .@i, .@id );
                npcshopdelitem "weapon_shop#"+ .@i, 501;
                for ( .@j = 0; .@j < .@nb; ++.@j )
                        npcshopadditem "weapon_shop#"+ .@i, .@id[.@j], getiteminfo( .@id[.@j], 0 );
        }
        freeloop false;
        end;
}
-       shop    weapon_shop#1   -1,501:1000
-       shop    weapon_shop#2   -1,501:1000
-       shop    weapon_shop#3   -1,501:1000
-       shop    weapon_shop#4   -1,501:1000
-       shop    weapon_shop#5   -1,501:1000
-       shop    weapon_shop#6   -1,501:1000
-       shop    weapon_shop#7   -1,501:1000
-       shop    weapon_shop#8   -1,501:1000
-       shop    weapon_shop#10  -1,501:1000
-       shop    weapon_shop#11  -1,501:1000
-       shop    weapon_shop#12  -1,501:1000
-       shop    weapon_shop#13  -1,501:1000
-       shop    weapon_shop#14  -1,501:1000
-       shop    weapon_shop#15  -1,501:1000
-       shop    weapon_shop#16  -1,501:1000
-       shop    weapon_shop#17  -1,501:1000
-       shop    weapon_shop#18  -1,501:1000
-       shop    weapon_shop#19  -1,501:1000
-       shop    weapon_shop#20  -1,501:1000
-       shop    weapon_shop#21  -1,501:1000
-       shop    weapon_shop#22  -1,501:1000
Viewed 131 times, submitted by AnnieRuru.