All pastes #513651 Raw Edit

Anonymous

public cpp v1 · immutable
#513651 ·published 2007-05-27 10:53 UTC
rendered paste body
#include "cs_blcak_inc_def"struct Receipt{    int item_basetype;    int metal;    int ingots;};const int INGOT_INVALID     = 0;const int INGOT_ADAMANTITE  = 1;const int INGOT_AGAPITE     = 2;const int INGOT_BRONZE      = 4;const int INGOT_COBALT      = 8;const int INGOT_COPPER      = 16;const int INGOT_DULL        = 32;const int INGOT_GOLD        = 64;const int INGOT_IRON        = 128;const int INGOT_MITHRIL     = 256;const int INGOT_PLATINUM    = 512;const int INGOT_SHADOW_IRON = 1024;const int INGOT_SILVER      = 2048;const int INGOT_VALORITE    = 4096;const int INGOT_VERITE      = 8192;// Print debug messagevoid Debug(string message);// ...int GetIngotCost(int base_type, int armor_type = 0);// ...int IsMold(string resRef);// ...int IsIngot(string resRef);// ...string GetItemName(int base_type);// ...string GetMetalName(int ingot_type);// ...int GetMoldItemBaseType(string resRef);// ...struct Receipt FindValidReceipt(object container);//..int GetIsReceiptValid(struct Receipt receipt);void Debug(string message){    AssignCommand(GetModule(), SpeakString(message, TALKVOLUME_SHOUT));}int GetIngotCost(int base_type, int armor_type = 0){    switch (base_type)    {        case BASE_ITEM_BASTARDSWORD:            return 30;                case BASE_ITEM_BATTLEAXE:            return 60;        case BASE_ITEM_CLUB:            return 10;                    case BASE_ITEM_DAGGER:            return 10;                    case BASE_ITEM_DIREMACE:            return 60;                    case BASE_ITEM_DOUBLEAXE:            return 100;                    case BASE_ITEM_DWARVENWARAXE:            return 30;                    case BASE_ITEM_FALCHION:            return 70;                    case BASE_ITEM_FLAIL:            return 30;                    case BASE_ITEM_GREATAXE:            return 90;                    case BASE_ITEM_GREATCLUB:            return 24;                    case BASE_ITEM_GREATSWORD:            return 90;                    case BASE_ITEM_HALBERD:            return 90;                    case BASE_ITEM_HANDAXE:            return 20;                    case BASE_ITEM_HEAVYFLAIL:            return 80;                    case BASE_ITEM_KAMA:            return 16;                    case BASE_ITEM_KATANA:            return 70;                    case BASE_ITEM_KUKRI:            return 12;                    case BASE_ITEM_LIGHTFLAIL:            return 20;                    case BASE_ITEM_LIGHTHAMMER:            return 20;                    case BASE_ITEM_LIGHTMACE:            return 20;                    case BASE_ITEM_LONGSWORD:            return 24;                    case BASE_ITEM_MACE:            return 30;                    case BASE_ITEM_MORNINGSTAR:            return 24;                    case BASE_ITEM_RAPIER:            return 24;                    case BASE_ITEM_SCIMITAR:            return 40;                    case BASE_ITEM_SHORTSWORD:            return 16;                    case BASE_ITEM_SCYTHE:            return 50;                    case BASE_ITEM_SHURIKEN:            return 2;                    case BASE_ITEM_SICKLE:            return 10;                    case BASE_ITEM_SPEAR:            return 20;                    case BASE_ITEM_THROWINGAXE:            return 6;                case BASE_ITEM_TWOBLADEDSWORD:            return 80;                    case BASE_ITEM_WARHAMMER:            return 50;                case BASE_ITEM_WARMACE:            return 60;                    case BASE_ITEM_LARGESHIELD:            return 0;                    case BASE_ITEM_SMALLSHIELD:            return 0;                    case BASE_ITEM_TOWERSHIELD:            return 0;                case BASE_ITEM_HELMET:        case BASE_ITEM_ARMOR:            {                switch (armor_type)                {                    case 0:                        break;                }                                return 0;            }            break;    }        return 0;}int IsMold(string resRef){    if (GetStringLength(resRef) < 13)        return 0;    return GetStringLeft(resRef, 13) == "n2_crft_mold_";}// I HATE ABIGALS STUPID TAG NAMING CONVENTIONS!int IsIngot(string resRef){    if (GetStringLength(resRef) < 24)        return INGOT_INVALID;    if (resRef == "uoacraft_resource_adamantite_hi" ||        resRef == "uoacraft_resource_adamantite_med" ||        resRef == "uoacraft_resource_adamantite_low")         return INGOT_ADAMANTITE;            if (resRef == "uoacraft_resource_agapite_hi" ||        resRef == "uoacraft_resource_agapite_med" ||        resRef == "uoacraft_resource_agapite_low")         return INGOT_AGAPITE;        if (resRef == "uoacraft_resource_bronze_hi" ||        resRef == "uoacraft_resource_bronze_med" ||        resRef == "uoacraft_resource_bronze_low")        return INGOT_BRONZE;            if (resRef == "uoacraft_resource_cobalt_hi" ||        resRef == "uoacraft_resource_cobalt_med" ||        resRef == "uoacraft_resource_cobalt_low")        return INGOT_COBALT;        if (resRef == "uoacraft_resource_copper_hi" ||        resRef == "uoacraft_resource_copper_med" ||        resRef == "uoacraft_resource_copper_low")        return INGOT_COPPER;            if (resRef == "uoacraft_resource_dull_hi" ||        resRef == "uoacraft_resource_dull_med" ||        resRef == "uoacraft_resource_dull_low")        return INGOT_DULL;            if (resRef == "uoacraft_resource_gold_hi" ||        resRef == "uoacraft_resource_gold_med" ||        resRef == "uoacraft_resource_gold_low")        return INGOT_GOLD;            if (resRef == "uoacraft_resource_iron_hi" ||        resRef == "uoacraft_resource_iron_med" ||        resRef == "uoacraft_resource_iron_low")        return INGOT_IRON;            if (resRef == "uoacraft_resource_mithril_hi" ||        resRef == "uoacraft_resource_mithril_med" ||        resRef == "uoacraft_resource_mithril_low")        return INGOT_MITHRIL;            if (resRef == "uoacraft_resource_platinum_hi" ||        resRef == "uoacraft_resource_platinum_med" ||        resRef == "uoacraft_resource_platinum_low")        return INGOT_PLATINUM;            if (resRef == "uoacraft_resource_shadow_hi" ||        resRef == "uoacraft_resource_shadow_med" ||        resRef == "uoacraft_resource_shadow_low")        return INGOT_SHADOW_IRON;            if (resRef == "uoacraft_resource_silver_hi" ||        resRef == "uoacraft_resource_silver_med" ||        resRef == "uoacraft_resource_silver_low")        return INGOT_SILVER;            if (resRef == "uoacraft_resource_valorite_hi" ||        resRef == "uoacraft_resource_valorite_med" ||        resRef == "uoacraft_resource_valorite_low")        return INGOT_VALORITE;            if (resRef == "uoacraft_resource_verite_hi" ||        resRef == "uoacraft_resource_verite_med" ||        resRef == "uoacraft_resource_verite_low")        return INGOT_VERITE;            return INGOT_INVALID;}string GetItemName(int base_type){    switch (base_type)    {        case BASE_ITEM_BASTARDSWORD:            return "bastard sword";                case BASE_ITEM_BATTLEAXE:            return "battle axe";        case BASE_ITEM_CLUB:            return "club";                    case BASE_ITEM_DAGGER:            return "dagger";                    case BASE_ITEM_DIREMACE:            return "dire mace";                    case BASE_ITEM_DOUBLEAXE:            return "doubleaxe";                    case BASE_ITEM_DWARVENWARAXE:            return "dwarven waraxe";                    case BASE_ITEM_FALCHION:            return "falchion";                    case BASE_ITEM_FLAIL:            return "flail";                    case BASE_ITEM_GREATAXE:            return "greataxe";                    case BASE_ITEM_GREATCLUB:            return "greatclub";                    case BASE_ITEM_GREATSWORD:            return "greatsword";                    case BASE_ITEM_HALBERD:            return "halberd";                    case BASE_ITEM_HANDAXE:            return "handaxe";                    case BASE_ITEM_HEAVYFLAIL:            return "heavy flail";                    case BASE_ITEM_KAMA:            return "kama";                    case BASE_ITEM_KATANA:            return "katana";                    case BASE_ITEM_KUKRI:            return "kukri";                    case BASE_ITEM_LIGHTFLAIL:            return "light flail";                    case BASE_ITEM_LIGHTHAMMER:            return "light warhammer";                    case BASE_ITEM_LIGHTMACE:            return "light mace";                    case BASE_ITEM_LONGSWORD:            return "longsword";                    case BASE_ITEM_MACE:            return "mace";                    case BASE_ITEM_MORNINGSTAR:            return "morningstar";                    case BASE_ITEM_RAPIER:            return "rapier";                    case BASE_ITEM_SCIMITAR:            return "scimitar";                    case BASE_ITEM_SHORTSWORD:            return "short sword";                    case BASE_ITEM_SCYTHE:            return "scythe";                    case BASE_ITEM_SHURIKEN:            return "shuriken";                    case BASE_ITEM_SICKLE:            return "sickle";                    case BASE_ITEM_SPEAR:            return "spear";                    case BASE_ITEM_THROWINGAXE:            return "throwing axe";                case BASE_ITEM_TWOBLADEDSWORD:            return "two-bladed sword";                    case BASE_ITEM_WARHAMMER:            return "warhammer";                case BASE_ITEM_WARMACE:            return "warmace";                    case BASE_ITEM_LARGESHIELD:            return "large shield";                    case BASE_ITEM_SMALLSHIELD:            return "small shield";                    case BASE_ITEM_TOWERSHIELD:            return "tower shield";                case BASE_ITEM_HELMET:            return "helmet";    }        return "";    }string GetMetalName(int ingot_type){    switch (ingot_type)    {        case INGOT_INVALID:            return "[invalid ingot]";                case INGOT_ADAMANTITE:            return "adamantite";                case INGOT_AGAPITE:            return "agapite";                    case INGOT_BRONZE:            return "bronze";                 case INGOT_COBALT:            return "cobalt";                    case INGOT_COPPER:            return "copper";                    case INGOT_DULL:            return "dull";                    case INGOT_GOLD:            return "gold";                    case INGOT_IRON:            return "iron";                    case INGOT_MITHRIL:            return "mithril";                    case INGOT_PLATINUM:            return "platinum";                    case INGOT_SHADOW_IRON:            return "shadow iron";                    case INGOT_SILVER:            return "silver";                    case INGOT_VALORITE:            return "valorite";                    case INGOT_VERITE:            return "verite";    }        return "[invalid ingot]";}int GetMoldItemBaseType(string resRef){    resRef = GetStringRight(resRef, GetStringLength(resRef) - 13);    Debug("GetMoldItemBaseType: " + resRef);    // //////////////// UNORDERED PROBABLY MOST FREQUENT MOLDS        if (resRef == "swdg") // Dagger        return BASE_ITEM_DAGGER;            if (resRef == "swls")        return BASE_ITEM_LONGSWORD;            if (resRef == "swss")        return BASE_ITEM_SHORTSWORD;        // //////////////// ORDERED LIST /////////////////////////            if (resRef == "hvbm") // Banded mail        return 0;            if (resRef == "swbs") // Bastard sword        return BASE_ITEM_BASTARDSWORD;            if (resRef == "axbt") // Battle axe        return BASE_ITEM_BATTLEAXE;        if (resRef == "mdbp") // Breastplate        return 0;            if (resRef == "ltcs") // Chain shirt        return 0;            if (resRef == "mdcm") // Chainmail        return 0;            if (resRef == "blcl") // Club        return BASE_ITEM_CLUB;            if (resRef == "axdv") // Dwarven Battle Axe        return BASE_ITEM_DWARVENWARAXE;            if (resRef == "swfl")        return BASE_ITEM_FALCHION;            if (resRef == "blfl") // Flail        return BASE_ITEM_FLAIL;            if (resRef == "hvfp") // Full Plate        return 0;            if (resRef == "axgr")        return BASE_ITEM_GREATAXE;            if (resRef == "swgs")        return BASE_ITEM_GREATSWORD;            if (resRef == "plhb")         return BASE_ITEM_HALBERD;            if (resRef == "hvhp") //Half Plate        return 0;        if (resRef == "axhn")        return BASE_ITEM_HANDAXE;        if (resRef == "shhv") // heavy shield        return 0; // BASE_ITEM_HEAVY_SHIELD;            if (resRef == "mdhd") // Hide armour        return 0;            if (resRef == "spka")        return BASE_ITEM_KAMA;            if (resRef == "swka")        return BASE_ITEM_KATANA;            if (resRef == "spku")        return BASE_ITEM_KUKRI;            if (resRef == "ltlt") // Leather armour        return 0;            if (resRef == "blhl")        return BASE_ITEM_LIGHTHAMMER;            if (resRef == "shlt") // Light shield        return 0; //BASE_ITEM_LIGHT_SHIELD;    if (resRef == "blml")        return BASE_ITEM_MACE;            if (resRef == "blms")        return BASE_ITEM_MORNINGSTAR;            if (resRef == "ltpd") // Padded armour        return 0;            if (resRef == "swrp")        return BASE_ITEM_RAPIER;            if (resRef == "mdsm") // Scale mail        return 0;          if (resRef == "swsc")        return BASE_ITEM_SCIMITAR;            if (resRef == "plsc")        return BASE_ITEM_SCYTHE;            if (resRef == "spsc")        return BASE_ITEM_SICKLE;            if (resRef == "plss")        return BASE_ITEM_SPEAR;            if (resRef == "ltsl") // Studded leather armour        return 0;            if (resRef == "shtw")        return 0; //BASE_ITEM_TOWERSHIELD;            if (resRef == "blhw")        return BASE_ITEM_WARHAMMER;         if (resRef == "bldm")        return BASE_ITEM_WARMACE;            return 0;}struct Receipt FindValidReceipt(object container){    struct Receipt res;    res.item_basetype = 0;    res.metal = INGOT_INVALID;    res.ingots = 0;        if (!GetIsObjectValid(container))        return res;        object item = GetFirstItemInInventory(container);    while (GetIsObjectValid(item))    {        if (res.item_basetype == 0)        {            if (IsMold(GetResRef(item)))            {                string resRef = GetResRef(item);                int base = GetMoldItemBaseType(resRef);                            Debug("Mold found: " + resRef + "; Result: " + IntToString(base));                            if (base > 0)                {                    res.item_basetype = base;                    item = GetFirstItemInInventory(container);                    continue;                }            }        }        else        {            int ingot = IsIngot(GetResRef(item));            if (ingot != INGOT_INVALID)            {                if (res.metal == INGOT_INVALID)                {                    res.metal = ingot;                    res.ingots = GetIngotCost(res.item_basetype);                                        break;                    //res.ingots = 1;                }                /*                else                {                    if (res.metal == ingot)                        res.ingots += 1;                }                */            }        }        item = GetNextItemInInventory(container);    }        if (res.item_basetype > 0 && res.metal == INGOT_INVALID)        res.item_basetype = 0;        return res;}int GetIsReceiptValid(struct Receipt receipt){    return receipt.item_basetype == 0 || receipt.metal == INGOT_INVALID;}