Postado Agosto 12, 2017 7 anos opa, creio que o sistema de task do meu servidor esteja com algum problema, o player vai até o npc fala "hi" tasks" dae mostra as taks tudo certo, em seguida o player pega a task desejada, como por ex: Minotaurs. a contagem vai até os 5.000 minos, o problema começa se o player deslogar. EX: Fulano matou 5000 minos, mas se fulano deslogar e logar ele perde a task. EX2: Fulano matou 5000 minos, ele vai no npc, fala "hi", "report", "yes" o npc entrega o acessso mas o player não recebe esse mesmo acesso. CREATURESCRIPT.XML Spoiler function onKill(cid, target, lastHit) local started = getPlayerStartedTasks(cid) if isPlayer(target) or isSummon(target) then return true end if started and #started > 0 then for _, id in ipairs(started) do if isInArray(tasks[id].creatures, getCreatureName(target):lower()) then if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < 0 then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, 0) end if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < tasks[id].killsRequired then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) .. "/" .. tasks[id].killsRequired .. " " .. tasks[id].raceName .. " already killed.") end end end end return true end LIB- 000-constant Spoiler NORTH = 0 EAST = 1 SOUTH = 2 WEST = 3 SOUTHWEST = 4 SOUTHEAST = 5 NORTHWEST = 6 NORTHEAST = 7 COMBAT_FORMULA_UNDEFINED = 0 COMBAT_FORMULA_LEVELMAGIC = 1 COMBAT_FORMULA_SKILL = 2 COMBAT_FORMULA_DAMAGE = 3 CONDITION_PARAM_OWNER = 1 CONDITION_PARAM_TICKS = 2 CONDITION_PARAM_OUTFIT = 3 CONDITION_PARAM_HEALTHGAIN = 4 CONDITION_PARAM_HEALTHTICKS = 5 CONDITION_PARAM_MANAGAIN = 6 CONDITION_PARAM_MANATICKS = 7 CONDITION_PARAM_DELAYED = 8 CONDITION_PARAM_SPEED = 9 CONDITION_PARAM_LIGHT_LEVEL = 10 CONDITION_PARAM_LIGHT_COLOR = 11 CONDITION_PARAM_SOULGAIN = 12 CONDITION_PARAM_SOULTICKS = 13 CONDITION_PARAM_MINVALUE = 14 CONDITION_PARAM_MAXVALUE = 15 CONDITION_PARAM_STARTVALUE = 16 CONDITION_PARAM_TICKINTERVAL = 17 CONDITION_PARAM_FORCEUPDATE = 18 CONDITION_PARAM_SKILL_MELEE = 19 CONDITION_PARAM_SKILL_FIST = 20 CONDITION_PARAM_SKILL_CLUB = 21 CONDITION_PARAM_SKILL_SWORD = 22 CONDITION_PARAM_SKILL_AXE = 23 CONDITION_PARAM_SKILL_DISTANCE = 24 CONDITION_PARAM_SKILL_SHIELD = 25 CONDITION_PARAM_SKILL_FISHING = 26 CONDITION_PARAM_STAT_MAXHEALTH = 27 CONDITION_PARAM_STAT_MAXMANA = 28 CONDITION_PARAM_STAT_SOUL = 29 CONDITION_PARAM_STAT_MAGICLEVEL = 30 CONDITION_PARAM_STAT_MAXHEALTHPERCENT = 31 CONDITION_PARAM_STAT_MAXMANAPERCENT = 32 CONDITION_PARAM_STAT_SOULPERCENT = 33 CONDITION_PARAM_STAT_MAGICLEVELPERCENT = 34 CONDITION_PARAM_SKILL_MELEEPERCENT = 35 CONDITION_PARAM_SKILL_FISTPERCENT = 36 CONDITION_PARAM_SKILL_CLUBPERCENT = 37 CONDITION_PARAM_SKILL_SWORDPERCENT = 38 CONDITION_PARAM_SKILL_AXEPERCENT = 39 CONDITION_PARAM_SKILL_DISTANCEPERCENT = 40 CONDITION_PARAM_SKILL_SHIELDPERCENT = 41 CONDITION_PARAM_SKILL_FISHINGPERCENT = 42 CONDITION_PARAM_PERIODICDAMAGE = 43 CONDITION_PARAM_BUFF = 44 CONDITION_PARAM_SUBID = 45 CONDITION_PARAM_FIELD = 46 COMBAT_PARAM_TYPE = 1 COMBAT_PARAM_EFFECT = 2 COMBAT_PARAM_DISTANCEEFFECT = 3 COMBAT_PARAM_BLOCKSHIELD = 4 COMBAT_PARAM_BLOCKARMOR = 5 COMBAT_PARAM_TARGETCASTERORTOPMOST = 6 COMBAT_PARAM_CREATEITEM = 7 COMBAT_PARAM_AGGRESSIVE = 8 COMBAT_PARAM_DISPEL = 9 COMBAT_PARAM_USECHARGES = 10 COMBAT_PARAM_TARGETPLAYERSORSUMMONS = 11 COMBAT_PARAM_DIFFERENTAREADAMAGE = 12 COMBAT_PARAM_HITEFFECT = 13 COMBAT_PARAM_HITCOLOR = 14 COMBAT_PARAM_ELEMENTTYPE = 15 COMBAT_PARAM_ELEMENTDAMAGE = 16 CALLBACK_PARAM_LEVELMAGICVALUE = 1 CALLBACK_PARAM_SKILLVALUE = 2 CALLBACK_PARAM_TARGETTILE = 3 CALLBACK_PARAM_TARGETCREATURE = 4 COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 CONDITION_NONE = 0 CONDITION_POISON = 1 CONDITION_FIRE = 2 CONDITION_ENERGY = 4 CONDITION_BLEEDING = 8 CONDITION_HASTE = 16 CONDITION_PARALYZE = 32 CONDITION_OUTFIT = 64 CONDITION_INVISIBLE = 128 CONDITION_LIGHT = 256 CONDITION_MANASHIELD = 512 CONDITION_INFIGHT = 1024 CONDITION_DRUNK = 2048 CONDITION_EXHAUST = 4096 CONDITION_FOOD = 8192 CONDITION_REGENERATION = 8192 CONDITION_SOUL = 16384 CONDITION_DROWN = 32768 CONDITION_MUTED = 65536 CONDITION_ATTRIBUTES = 131072 CONDITION_FREEZING = 262144 CONDITION_DAZZLED = 524288 CONDITION_CURSED = 1048576 CONDITION_PACIFIED = 2097152 CONDITION_GAMEMASTER = 4194304 CONDITION_HUNTING = 8388608 CONDITION_SPELLCOOLDOWN = 16777216 CONDITIONID_DEFAULT = -1 CONDITIONID_COMBAT = 0 CONDITIONID_HEAD = 1 CONDITIONID_NECKLACE = 2 CONDITIONID_BACKPACK = 3 CONDITIONID_ARMOR = 4 CONDITIONID_RIGHT = 5 CONDITIONID_LEFT = 6 CONDITIONID_LEGS = 7 CONDITIONID_FEET = 8 CONDITIONID_RING = 9 CONDITIONID_AMMO = 10 CONDITIONID_OUTFIT = 11 EXHAUST_OTHER = 0 EXHAUST_SPELLGROUP_NONE = 1 EXHAUST_SPELLGROUP_ATTACK = 2 EXHAUST_SPELLGROUP_HEALING = 3 EXHAUST_SPELLGROUP_SUPPORT = 4 EXHAUST_SPELLGROUP_SPECIAL = 5 EXHAUST_MELEE = 6 MUTED_BUFFER = 0 MUTED_YELL = 1 MUTED_MAIL = 2 MUTED_TRADE = 3 MUTED_TRADE_ROOK = 4 GAMEMASTER_INVISIBLE = 0 GAMEMASTER_IGNORE = 1 GAMEMASTER_TELEPORT = 2 CONST_SLOT_FIRST = 1 CONST_SLOT_HEAD = CONST_SLOT_FIRST CONST_SLOT_NECKLACE = 2 CONST_SLOT_BACKPACK = 3 CONST_SLOT_ARMOR = 4 CONST_SLOT_RIGHT = 5 CONST_SLOT_LEFT = 6 CONST_SLOT_LEGS = 7 CONST_SLOT_FEET = 8 CONST_SLOT_RING = 9 CONST_SLOT_AMMO = 10 CONST_SLOT_LAST = CONST_SLOT_AMMO CONST_ME_DRAWBLOOD = 0 CONST_ME_LOSEENERGY = 1 CONST_ME_POFF = 2 CONST_ME_BLOCKHIT = 3 CONST_ME_EXPLOSIONAREA = 4 CONST_ME_EXPLOSIONHIT = 5 CONST_ME_FIREAREA = 6 CONST_ME_YELLOW_RINGS = 7 CONST_ME_GREEN_RINGS = 8 CONST_ME_HITAREA = 9 CONST_ME_TELEPORT = 10 CONST_ME_ENERGYHIT = 11 CONST_ME_MAGIC_BLUE = 12 CONST_ME_MAGIC_RED = 13 CONST_ME_MAGIC_GREEN = 14 CONST_ME_HITBYFIRE = 15 CONST_ME_HITBYPOISON = 16 CONST_ME_MORTAREA = 17 CONST_ME_SOUND_GREEN = 18 CONST_ME_SOUND_RED = 19 CONST_ME_POISONAREA = 20 CONST_ME_SOUND_YELLOW = 21 CONST_ME_SOUND_PURPLE = 22 CONST_ME_SOUND_BLUE = 23 CONST_ME_SOUND_WHITE = 24 CONST_ME_BUBBLES = 25 CONST_ME_CRAPS = 26 CONST_ME_GIFT_WRAPS = 27 CONST_ME_FIREWORK_YELLOW = 28 CONST_ME_FIREWORK_RED = 29 CONST_ME_FIREWORK_BLUE = 30 CONST_ME_STUN = 31 CONST_ME_SLEEP = 32 CONST_ME_WATERCREATURE = 33 CONST_ME_GROUNDSHAKER = 34 CONST_ME_HEARTS = 35 CONST_ME_FIREATTACK = 36 CONST_ME_ENERGYAREA = 37 CONST_ME_SMALLCLOUDS = 38 CONST_ME_HOLYDAMAGE = 39 CONST_ME_BIGCLOUDS = 40 CONST_ME_ICEAREA = 41 CONST_ME_ICETORNADO = 42 CONST_ME_ICEATTACK = 43 CONST_ME_STONES = 44 CONST_ME_SMALLPLANTS = 45 CONST_ME_CARNIPHILA = 46 CONST_ME_PURPLEENERGY = 47 CONST_ME_YELLOWENERGY = 48 CONST_ME_HOLYAREA = 49 CONST_ME_BIGPLANTS = 50 CONST_ME_CAKE = 51 CONST_ME_GIANTICE = 52 CONST_ME_WATERSPLASH = 53 CONST_ME_PLANTATTACK = 54 CONST_ME_TUTORIALARROW = 55 CONST_ME_TUTORIALSQUARE = 56 CONST_ME_MIRRORHORIZONTAL = 57 CONST_ME_MIRRORVERTICAL = 58 CONST_ME_SKULLHORIZONTAL = 59 CONST_ME_SKULLVERTICAL = 60 CONST_ME_ASSASSIN = 61 CONST_ME_STEPSHORIZONTAL = 62 CONST_ME_BLOODYSTEPS = 63 CONST_ME_STEPSVERTICAL = 64 CONST_ME_YALAHARIGHOST = 65 CONST_ME_BATS = 66 CONST_ME_SMOKE = 67 CONST_ME_INSECTS = 68 CONST_ME_DRAGONHEAD = 69 CONST_ME_NONE = 255 CONST_ME_LAST = CONST_ME_DRAGONHEAD CONST_ANI_SPEAR = 0 CONST_ANI_BOLT = 1 CONST_ANI_ARROW = 2 CONST_ANI_FIRE = 3 CONST_ANI_ENERGY = 4 CONST_ANI_POISONARROW = 5 CONST_ANI_BURSTARROW = 6 CONST_ANI_THROWINGSTAR = 7 CONST_ANI_THROWINGKNIFE = 8 CONST_ANI_SMALLSTONE = 9 CONST_ANI_DEATH = 10 CONST_ANI_LARGEROCK = 11 CONST_ANI_SNOWBALL = 12 CONST_ANI_POWERBOLT = 13 CONST_ANI_POISON = 14 CONST_ANI_INFERNALBOLT = 15 CONST_ANI_HUNTINGSPEAR = 16 CONST_ANI_ENCHANTEDSPEAR = 17 CONST_ANI_REDSTAR = 18 CONST_ANI_GREENSTAR = 19 CONST_ANI_ROYALSPEAR = 20 CONST_ANI_SNIPERARROW = 21 CONST_ANI_ONYXARROW = 22 CONST_ANI_PIERCINGBOLT = 23 CONST_ANI_WHIRLWINDSWORD = 24 CONST_ANI_WHIRLWINDAXE = 25 CONST_ANI_WHIRLWINDCLUB = 26 CONST_ANI_ETHEREALSPEAR = 27 CONST_ANI_ICE = 28 CONST_ANI_EARTH = 29 CONST_ANI_HOLY = 30 CONST_ANI_SUDDENDEATH = 31 CONST_ANI_FLASHARROW = 32 CONST_ANI_FLAMMINGARROW = 33 CONST_ANI_SHIVERARROW = 34 CONST_ANI_ENERGYBALL = 35 CONST_ANI_SMALLICE = 36 CONST_ANI_SMALLHOLY = 37 CONST_ANI_SMALLEARTH = 38 CONST_ANI_EARTHARROW = 39 CONST_ANI_EXPLOSION = 40 CONST_ANI_CAKE = 41 CONST_ANI_WEAPONTYPE = 254 CONST_ANI_NONE = 255 CONST_ANI_LAST = CONST_ANI_CAKE TALKTYPE_SAY = 1 TALKTYPE_WHISPER = 2 TALKTYPE_YELL = 3 TALKTYPE_NPC_TO = 4 TALKTYPE_NPC_FROM = 5 TALKTYPE_PRIVATE = 6 TALKTYPE_CHANNEL = 7 TALKTYPE_CHANNEL_MANAGEMENT = 8 TALKTYPE_GAMEMASTER_BROADCAST = 12 TALKTYPE_GAMEMASTER_CHANNEL = 13 TALKTYPE_GAMEMASTER_PRIVATE = 14 TALKTYPE_CHANNEL_ORANGE = 15 TALKTYPE_MONSTER_SAY = 19 TALKTYPE_MONSTER_YELL = 20 TALKTYPE_FIRST = TALKTYPE_SAY TALKTYPE_LAST = TALKTYPE_CHANNEL_ORANGE TALKTYPE_MONSTER_FIRST = TALKTYPE_MONSTER_SAY TALKTYPE_MONSTER_LAST = TALKTYPE_MONSTER_YELL TALKTYPE_TYPES = { ["say"] = TALKTYPE_SAY, ["whisper"] = TALKTYPE_WHISPER, ["yell"] = TALKTYPE_YELL, ["private-playernpc"] = TALKTYPE_NPC_TO, ["private-npcplayer"] = TALKTYPE_NPC_FROM, ["private"] = TALKTYPE_PRIVATE, ["channel-yellow"] = TALKTYPE_CHANNEL, ["channel-white"] = TALKTYPE_CHANNEL_MANAGEMENT, ["channel-redanonymous"] = TALKTYPE_CHANNEL_MANAGEMENT, ["broadcast"] = TALKTYPE_GAMEMASTER_BROADCAST, ["channel-red"] = TALKTYPE_GAMEMASTER_CHANNEL, ["private-red"] = TALKTYPE_GAMEMASTER_PRIVATE, ["channel-orange"] = TALKTYPE_CHANNEL_ORANGE, ["monster"] = TALKTYPE_MONSTER_SAY, ["monster-yell"] = TALKTYPE_MONSTER_YELL } MESSAGE_STATUS_CONSOLE_RED = 18 MESSAGE_EVENT_ORANGE = 19 MESSAGE_STATUS_CONSOLE_ORANGE = 20 MESSAGE_STATUS_WARNING = 21 MESSAGE_EVENT_ADVANCE = 22 MESSAGE_EVENT_DEFAULT = 23 MESSAGE_STATUS_DEFAULT = 24 MESSAGE_INFO_DESCR = 25 MESSAGE_STATUS_SMALL = 26 MESSAGE_STATUS_CONSOLE_BLUE = 27 MESSAGE_FIRST = MESSAGE_STATUS_CONSOLE_RED MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_BLUE MESSAGE_REPORT = MESSAGE_EVENT_ADVANCE MESSAGE_LOOT = MESSAGE_INFO_DESCR MESSAGE_TRADE_NPC = MESSAGE_INFO_DESCR MESSAGE_EVENT_GUILD = MESSAGE_INFO_DESCR MESSAGE_PARTY_MANAGEMENT = MESSAGE_INFO_DESCR MESSAGE_PARTY = MESSAGE_INFO_DESCR MESSAGE_HOTKEY_USE = MESSAGE_INFO_DESCR MESSAGE_DAMAGE_DEALT = MESSAGE_STATUS_DEFAULT MESSAGE_DAMAGE_RECEIVED = MESSAGE_STATUS_DEFAULT MESSAGE_HEALED = MESSAGE_STATUS_DEFAULT MESSAGE_EXPERIENCE = MESSAGE_STATUS_DEFAULT MESSAGE_HIDDEN = -1 MESSAGE_DAMAGE_OTHERS = MESSAGE_HIDDEN MESSAGE_HEALED_OTHERS = MESSAGE_HIDDEN MESSAGE_EXPERIENCE_OTHERS = MESSAGE_HIDDEN MESSAGE_TYPES = { ["advance"] = MESSAGE_EVENT_ADVANCE, ["event"] = MESSAGE_EVENT_DEFAULT, ["white"] = MESSAGE_EVENT_DEFAULT, ["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE, ["info"] = MESSAGE_INFO_DESCR, ["green"] = MESSAGE_INFO_DESCR, ["small"] = MESSAGE_STATUS_SMALL, ["blue"] = MESSAGE_STATUS_CONSOLE_BLUE, ["red"] = MESSAGE_STATUS_CONSOLE_RED, ["warning"] = MESSAGE_STATUS_WARNING, ["status"] = MESSAGE_STATUS_DEFAULT } COLOR_BLACK = 0 COLOR_BLUE = 5 COLOR_GREEN = 18 COLOR_LIGHTGREEN = 66 COLOR_DARKBROWN = 78 COLOR_LIGHTBLUE = 89 COLOR_MAYABLUE = 95 COLOR_DARKRED = 108 COLOR_DARKPURPLE = 112 COLOR_BROWN = 120 COLOR_GREY = 129 COLOR_TEAL = 143 COLOR_DARKPINK = 152 COLOR_PURPLE = 154 COLOR_DARKORANGE = 156 COLOR_RED = 180 COLOR_PINK = 190 COLOR_ORANGE = 192 COLOR_DARKYELLOW = 205 COLOR_YELLOW = 210 COLOR_WHITE = 215 COLOR_NONE = 255 MAPMARK_TICK = 0 MAPMARK_QUESTION = 1 MAPMARK_EXCLAMATION = 2 MAPMARK_STAR = 3 MAPMARK_CROSS = 4 MAPMARK_TEMPLE = 5 MAPMARK_KISS = 6 MAPMARK_SHOVEL = 7 MAPMARK_SWORD = 8 MAPMARK_FLAG = 9 MAPMARK_LOCK = 10 MAPMARK_BAG = 11 MAPMARK_SKULL = 12 MAPMARK_DOLLAR = 13 MAPMARK_REDNORTH = 14 MAPMARK_REDSOUTH = 15 MAPMARK_REDEAST = 16 MAPMARK_REDWEST = 17 MAPMARK_GREENNORTH = 18 MAPMARK_GREENSOUTH = 19 ITEM_TYPE_NONE = 0 ITEM_TYPE_DEPOT = 1 ITEM_TYPE_MAILBOX = 2 ITEM_TYPE_TRASHHOLDER = 3 ITEM_TYPE_CONTAINER = 4 ITEM_TYPE_DOOR = 5 ITEM_TYPE_MAGICFIELD = 6 ITEM_TYPE_TELEPORT = 7 ITEM_TYPE_BED = 8 ITEM_TYPE_KEY = 9 ITEM_TYPE_RUNE = 10 ITEM_GROUP_NONE = 0 ITEM_GROUP_GROUND = 1 ITEM_GROUP_CONTAINER = 2 ITEM_GROUP_CHARGES = 6 ITEM_GROUP_SPLASH = 11 ITEM_GROUP_FLUID = 12 CONST_PROP_BLOCKSOLID = 0 CONST_PROP_HASHEIGHT = 1 CONST_PROP_BLOCKPROJECTILE = 2 CONST_PROP_BLOCKPATHFIND = 3 CONST_PROP_ISVERTICAL = 4 CONST_PROP_ISHORIZONTAL = 5 CONST_PROP_MOVABLE = 6 CONST_PROP_BLOCKINGANDNOTMOVABLE = 7 CONST_PROP_SUPPORTHANGABLE = 8 CHASEMODE_STANDSTILL = 0 CHASEMODE_FOLLOW = 1 FIGHTMODE_ATTACK = 0 FIGHTMODE_BALANCED = 1 FIGHTMODE_DEFENSE = 2 SECUREMODE_ON = 0 SECUREMODE_OFF = 1 TRADE_NONE = 0 TRADE_INITIATED = 1 TRADE_ACCEPT = 2 TRADE_ACKNOWLEDGE = 3 TRADE_TRANSFER = 4 MANAGER_NONE = 0 MANAGER_NEW = 1 MANAGER_ACCOUNT = 2 MANAGER_NAMELOCK = 3 PLAYERSEX_FEMALE = 0 PLAYERSEX_MALE = 1 PLAYERLOSS_EXPERIENCE = 0 PLAYERLOSS_MANA = 1 PLAYERLOSS_SKILLS = 2 PLAYERLOSS_CONTAINERS = 3 PLAYERLOSS_ITEMS = 4 STATSCHANGE_HEALTHGAIN = 0 STATSCHANGE_HEALTHLOSS = 1 STATSCHANGE_MANAGAIN = 2 STATSCHANGE_MANALOSS = 3 SKILL_FIRST = 0 SKILL_FIST = SKILL_FIRST SKILL_CLUB = 1 SKILL_SWORD = 2 SKILL_AXE = 3 SKILL_DISTANCE = 4 SKILL_SHIELD = 5 SKILL_FISHING = 6 SKILL__MAGLEVEL = 7 SKILL__LEVEL = 8 SKILL__EXPERIENCE = 9 SKILL_LAST = SKILL_FISHING SKILL__PRE_LAST = SKILL__LEVEL SKILL__LAST = SKILL__EXPERIENCE SKILL_NAMES = { [SKILL_FIST] = "fist fighting", [SKILL_CLUB] = "club fighting", [SKILL_SWORD] = "sword fighting", [SKILL_AXE] = "axe fighting", [SKILL_DISTANCE] = "distance fighting", [SKILL_SHIELD] = "shielding", [SKILL_FISHING] = "fishing", [SKILL__LEVEL] = "level", [SKILL__MAGLEVEL] = "magic level" } SKILL_IDS = { ["fist"] = SKILL_FIST, ["club"] = SKILL_CLUB, ["sword"] = SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["dist"] = SKILL_DISTANCE, ["shielding"] = SKILL_SHIELD, ["shield"] = SKILL_SHIELD, ["fishing"] = SKILL_FISHING, ["fish"] = SKILL_FISHING, ["level"] = SKILL__LEVEL, ["magic"] = SKILL__MAGLEVEL } GUILD_MEMBER = 1 GUILD_VICE = 2 GUILD_LEADER = 3 SKULL_NONE = 0 SKULL_YELLOW = 1 SKULL_GREEN = 2 SKULL_WHITE = 3 SKULL_RED = 4 SKULL_BLACK = 5 SKULL_ORANGE = 6 SKULL_LAST = SKULL_ORANGE SHIELD_NONE = 0 SHIELD_WHITEYELLOW = 1 SHIELD_WHITEBLUE = 2 SHIELD_BLUE = 3 SHIELD_YELLOW = 4 SHIELD_BLUE_SHAREDEXP = 5 SHIELD_YELLOW_SHAREDEXP = 6 SHIELD_BLUE_NOSHAREDEXP_BLINK = 7 SHIELD_YELLOW_NOSHAREDEXP_BLINK = 8 SHIELD_BLUE_NOSHAREDEXP = 9 SHIELD_YELLOW_NOSHAREDEXP = 10 SHIELD_LAST = SHIELD_YELLOW_NOSHAREDEXP EMBLEM_NONE = 0 EMBLEM_GREEN = 1 EMBLEM_RED = 2 EMBLEM_BLUE = 3 WORLDTYPE_OPTIONAL = 1 WORLDTYPE_OPEN = 2 WORLDTYPE_HARDCORE = 3 DATABASE_NONE = 0 DATABASE_MYSQL = 1 DATABASE_SQLITE = 2 DATABASE_POSTGRESQL = 3 GAMESTATE_STARTUP = 1 GAMESTATE_INIT = 2 GAMESTATE_NORMAL = 3 GAMESTATE_MAINTAIN = 4 GAMESTATE_CLOSED = 5 GAMESTATE_CLOSING = 6 GAMESTATE_SHUTDOWN = 7 RELOAD_ACTIONS = 1 RELOAD_CHAT = 2 RELOAD_CONFIG = 3 RELOAD_CREATUREEVENTS = 4 RELOAD_GAMESERVERS = 5 RELOAD_GLOBALEVENTS = 6 RELOAD_GROUPS = 7 RELOAD_HIGHSCORES = 8 RELOAD_ITEMS = 10 RELOAD_MONSTERS = 11 RELOAD_MOUNTS = 12 RELOAD_MOVEEVENTS = 13 RELOAD_NPCS = 14 RELOAD_OUTFITS = 15 RELOAD_QUESTS = 16 RELOAD_RAIDS = 17 RELOAD_SPELLS = 18 RELOAD_STAGES = 19 RELOAD_TALKACTIONS = 20 RELOAD_VOCATIONS = 21 RELOAD_WEAPONS = 22 RELOAD_MODS = 23 RELOAD_ALL = 24 BAN_NONE = 0 BAN_IP = 1 BAN_PLAYER = 2 BAN_ACCOUNT = 3 BAN_NOTATION = 4 PLAYERBAN_NONE = 0 PLAYERBAN_REPORT = 1 PLAYERBAN_LOCK = 2 PLAYERBAN_BANISHMENT = 3 CHANNEL_GUILD = 0 CHANNEL_RVR = 3 CHANNEL_PARTY = 8 CHANNEL_HELP = 9 CHANNEL_DEFAULT = 0xFFFE CHANNEL_PRIVATE = 0xFFFF STACKPOS_GROUND = 0 STACKPOS_TOP_CREATURE = 253 STACKPOS_TOP_FIELD = 254 STACKPOS_TOP_MOVABLE_ITEM_OR_CREATURE = 255 WEAPON_NONE = 0 WEAPON_SWORD = 1 WEAPON_CLUB = 2 WEAPON_AXE = 3 WEAPON_DIST = 4 WEAPON_SHIELD = 5 WEAPON_FIST = 6 WEAPON_WAND = 7 WEAPON_AMMO = 8 RECURSE_FIRST = -1 RECURSE_NONE = 0 RECURSE_ALL = 1 ITEM_GOLD_COIN = 2148 ITEM_PLATINUM_COIN = 2152 ITEM_CRYSTAL_COIN = 2160 ITEM_SCARAB_COIN = 2159 ITEM_FISH = 2667 ITEM_WORM = 3976 ITEM_MECHANICAL_FISH = 10224 ITEM_NAIL = 8309 ITEM_MECHANICAL_FISHING_ROD = 10223 ITEM_GREEN_PERCH = 7159 ITEM_RAINBOW_TROUT = 7158 ITEM_NORTHERN_PIKE = 2669 ITEM_PARCEL = 2595 ITEM_LABEL = 2599 ITEM_ACTION_BOOK = 1977 ITEM_MAGIC_WALL = 1497 ITEM_WILD_GROWTH = 1499 ITEM_FOOD_MEAT = 2666 ITEM_FOOD_HAM = 2671 ITEM_FOOD_GRAPE = 2681 ITEM_FOOD_APLE = 2674 ITEM_FOOD_BREAD = 2689 ITEM_FOOD_ROOL = 2690 ITEM_FOOD_CHEESE = 2696 RETURNVALUE_NOERROR = 0 RETURNVALUE_NOTPOSSIBLE = 1 RETURNVALUE_NOTENOUGHROOM = 2 RETURNVALUE_PLAYERISPZLOCKED = 3 RETURNVALUE_PLAYERISNOTINVITED = 4 RETURNVALUE_CANNOTTHROW = 5 RETURNVALUE_THEREISNOWAY = 6 RETURNVALUE_DESTINATIONOUTOFREACH = 7 RETURNVALUE_CREATUREBLOCK = 8 RETURNVALUE_NOTMOVABLE = 9 RETURNVALUE_DROPTWOHANDEDITEM = 10 RETURNVALUE_BOTHHANDSNEEDTOBEFREE = 11 RETURNVALUE_CANONLYUSEONEWEAPON = 12 RETURNVALUE_NEEDEXCHANGE = 13 RETURNVALUE_CANNOTBEDRESSED = 14 RETURNVALUE_PUTTHISOBJECTINYOURHAND = 15 RETURNVALUE_PUTTHISOBJECTINBOTHHANDS = 16 RETURNVALUE_TOOFARAWAY = 17 RETURNVALUE_FIRSTGODOWNSTAIRS = 18 RETURNVALUE_FIRSTGOUPSTAIRS = 19 RETURNVALUE_CONTAINERNOTENOUGHROOM = 20 RETURNVALUE_NOTENOUGHCAPACITY = 21 RETURNVALUE_CANNOTPICKUP = 22 RETURNVALUE_THISISIMPOSSIBLE = 23 RETURNVALUE_DEPOTISFULL = 24 RETURNVALUE_CREATUREDOESNOTEXIST = 25 RETURNVALUE_CANNOTUSETHISOBJECT = 26 RETURNVALUE_PLAYERWITHTHISNAMEISNOTONLINE = 27 RETURNVALUE_NOTREQUIREDLEVELTOUSERUNE = 28 RETURNVALUE_YOUAREALREADYTRADING = 29 RETURNVALUE_THISPLAYERISALREADYTRADING = 30 RETURNVALUE_YOUMAYNOTLOGOUTDURINGAFIGHT = 31 RETURNVALUE_DIRECTPLAYERSHOOT = 32 RETURNVALUE_NOTENOUGHLEVEL = 33 RETURNVALUE_NOTENOUGHMAGICLEVEL = 34 RETURNVALUE_NOTENOUGHMANA = 35 RETURNVALUE_NOTENOUGHSOUL = 36 RETURNVALUE_YOUAREEXHAUSTED = 37 RETURNVALUE_PLAYERISNOTREACHABLE = 38 RETURNVALUE_CANONLYUSETHISRUNEONCREATURES = 39 RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE = 40 RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER = 41 RETURNVALUE_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE = 42 RETURNVALUE_YOUMAYNOTATTACKAPERSONWHILEINPROTECTIONZONE = 43 RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE = 44 RETURNVALUE_YOUCANONLYUSEITONCREATURES = 45 RETURNVALUE_CREATUREISNOTREACHABLE = 46 RETURNVALUE_TURNSECUREMODETOATTACKUNMARKEDPLAYERS = 47 RETURNVALUE_YOUNEEDPREMIUMACCOUNT = 48 RETURNVALUE_YOUNEEDTOLEARNTHISSPELL = 49 RETURNVALUE_YOURVOCATIONCANNOTUSETHISSPELL = 50 RETURNVALUE_YOUNEEDAWEAPONTOUSETHISSPELL = 51 RETURNVALUE_PLAYERISPZLOCKEDLEAVEPVPZONE = 52 RETURNVALUE_PLAYERISPZLOCKEDENTERPVPZONE = 53 RETURNVALUE_ACTIONNOTPERMITTEDINANOPVPZONE = 54 RETURNVALUE_YOUCANNOTLOGOUTHERE = 55 RETURNVALUE_YOUNEEDAMAGICITEMTOCASTSPELL = 56 RETURNVALUE_CANNOTCONJUREITEMHERE = 57 RETURNVALUE_TILEISFULL = 58 RETURNVALUE_NAMEISTOOAMBIGUOUS = 59 RETURNVALUE_CANONLYUSEONESHIELD = 60 RETURNVALUE_YOUARENOTTHEOWNER = 61 RETURNVALUE_YOUMAYNOTCASTAREAONBLACKSKULL = 62 RETURNVALUE_NOTENOUGHSKILL = 63 RETURNVALUE_YOUMAYNOTATTACKIMMEDIATELYAFTERLOGGINGIN = 64 RETURNVALUE_YOUCANONLYTRADEUPTOX = 65 CONTAINER_POSITION = 0xFFFF EMPTY_STORAGE = -1 EMPTY_RESULT = -1 ITEMCOUNT_MAX = 100 WAR_GUILD = 0 WAR_ENEMY = 1 AUTOID_PLAYERS = 0x10000000 AUTOID_MONSTERS = 0x40000000 AUTOID_NPCS = 0x80000000 CLIENTOS_LINUX = 1 CLIENTOS_WINDOWS = 2 CLIENTOS_FLASH = 3 CLIENTOS_OTCLIENT_LINUX = 10 CLIENTOS_OTCLIENT_WINDOWS = 11 CLIENTOS_OTCLIENT_MAC = 12 PLAYERFLAG_CANNOTUSECOMBAT = 0 PLAYERFLAG_CANNOTATTACKPLAYER = 1 PLAYERFLAG_CANNOTATTACKMONSTER = 2 PLAYERFLAG_CANNOTBEATTACKED = 3 PLAYERFLAG_CANCONVINCEALL = 4 PLAYERFLAG_CANSUMMONALL = 5 PLAYERFLAG_CANILLUSIONALL = 6 PLAYERFLAG_CANSENSEINVISIBILITY = 7 PLAYERFLAG_IGNOREDBYMONSTERS = 8 PLAYERFLAG_NOTGAININFIGHT = 9 PLAYERFLAG_HASINFINITEMANA = 10 PLAYERFLAG_HASINFINITESOUL = 11 PLAYERFLAG_HASNOEXHAUSTION = 12 PLAYERFLAG_CANNOTUSESPELLS = 13 PLAYERFLAG_CANNOTPICKUPITEM = 14 PLAYERFLAG_CANALWAYSLOGIN = 15 PLAYERFLAG_CANBROADCAST = 16 PLAYERFLAG_CANEDITHOUSES = 17 PLAYERFLAG_CANNOTBEBANNED = 18 PLAYERFLAG_CANNOTBEPUSHED = 19 PLAYERFLAG_HASINFINITECAPACITY = 20 PLAYERFLAG_CANPUSHALLCREATURES = 21 PLAYERFLAG_CANTALKREDPRIVATE = 22 PLAYERFLAG_CANTALKREDCHANNEL = 23 PLAYERFLAG_TALKORANGEHELPCHANNEL = 24 PLAYERFLAG_NOTGAINEXPERIENCE = 25 PLAYERFLAG_NOTGAINMANA = 26 PLAYERFLAG_NOTGAINHEALTH = 27 PLAYERFLAG_NOTGAINSKILL = 28 PLAYERFLAG_SETMAXSPEED = 29 PLAYERFLAG_SPECIALVIP = 30 PLAYERFLAG_NOTGENERATELOOT = 31 PLAYERFLAG_CANTALKREDCHANNELANONYMOUS = 32 PLAYERFLAG_IGNOREPROTECTIONZONE = 33 PLAYERFLAG_IGNORESPELLCHECK = 34 PLAYERFLAG_IGNOREWEAPONCHECK = 35 PLAYERFLAG_CANNOTBEMUTED = 36 PLAYERFLAG_ISALWAYSPREMIUM = 37 PLAYERFLAG_38 = 38 -- ignore PLAYERFLAG_39 = 39 -- ignore PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION = 40 PLAYERFLAG_HASINFINITESTAMINA = 41 PLAYERFLAG_CANNOTMOVEITEMS = 42 PLAYERFLAG_CANNOTMOVECREATURES = 43 PLAYERFLAG_CANREPORTBUGS = 44 PLAYERFLAG_45 = 45 -- ignore PLAYERFLAG_CANNOTBESEEN = 46 PLAYERFLAG_HIDEHEALTH = 47 PLAYERFLAG_CANPASSTHROUGHALLCREATURES = 48 PLAYERCUSTOMFLAG_ALLOWIDLE = 0 PLAYERCUSTOMFLAG_CANSEEPOSITION = 1 PLAYERCUSTOMFLAG_CANSEEITEMDETAILS = 2 PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS = 3 PLAYERCUSTOMFLAG_NOTSEARCHABLE = 4 PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES = 5 PLAYERCUSTOMFLAG_CANTHROWANYWHERE = 6 PLAYERCUSTOMFLAG_CANPUSHALLITEMS = 7 PLAYERCUSTOMFLAG_CANMOVEANYWHERE = 8 PLAYERCUSTOMFLAG_CANMOVEFROMFAR = 9 PLAYERCUSTOMFLAG_CANUSEFAR = 10 PLAYERCUSTOMFLAG_CANLOGINMULTIPLECHARACTERS = 11 PLAYERCUSTOMFLAG_CANLOGOUTANYTIME = 12 PLAYERCUSTOMFLAG_HIDELEVEL = 13 PLAYERCUSTOMFLAG_ISPROTECTED = 14 PLAYERCUSTOMFLAG_ISIMMUNE = 15 PLAYERCUSTOMFLAG_NOTGAINSKULL = 16 PLAYERCUSTOMFLAG_NOTGAINUNJUSTIFIED = 17 PLAYERCUSTOMFLAG_IGNOREPACIFICATION = 18 PLAYERCUSTOMFLAG_IGNORELOGINDELAY = 19 PLAYERCUSTOMFLAG_CANSTAIRHOP = 20 PLAYERCUSTOMFLAG_CANTURNHOP = 21 PLAYERCUSTOMFLAG_IGNOREHOUSERENT = 22 PLAYERCUSTOMFLAG_CANWEARALLADDONS = 23 PLAYERCUSTOMFLAG_ISWALKABLE = 24 PLAYERCUSTOMFLAG_25 = 25 -- ignore PLAYERCUSTOMFLAG_HASFULLLIGHT = 26 maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336} doors = {[1209] = 1211, [1210] = 1211, [1212] = 1214, [1213] = 1214, [1219] = 1220, [1221] = 1222, [1231] = 1233, [1232] = 1233, [1234] = 1236, [1235] = 1236, [1237] = 1238, [1239] = 1240, [1249] = 1251, [1250] = 1251, [1252] = 1254, [1253] = 1254, [1539] = 1540, [1541] = 1542, [3535] = 3537, [3536] = 3537, [3538] = 3539, [3544] = 3546, [3545] = 3546, [3547] = 3548, [4913] = 4915, [4914] = 4915, [4916] = 4918, [4917] = 4918, [5082] = 5083, [5084] = 5085, [5098] = 5100, [5099] = 5100, [5101] = 5102, [5107] = 5109, [5108] = 5109, [5110] = 5111, [5116] = 5118, [5117] = 5118, [5119] = 5120, [5125] = 5127, [5126] = 5127, [5128] = 5129, [5134] = 5136, [5135] = 5136, [5137] = 5139, [5138] = 5139, [5140] = 5142, [5141] = 5142, [5143] = 5145, [5144] = 5145, [5278] = 5280, [5279] = 5280, [5281] = 5283, [5282] = 5283, [5284] = 5285, [5286] = 5287, [5515] = 5516, [5517] = 5518, [5732] = 5734, [5733] = 5734, [5735] = 5737, [5736] = 5737, [6192] = 6194, [6193] = 6194, [6195] = 6197, [6196] = 6197, [6198] = 6199, [6200] = 6201, [6249] = 6251, [6250] = 6251, [6252] = 6254, [6253] = 6254, [6255] = 6256, [6257] = 6258, [6795] = 6796, [6797] = 6798, [6799] = 6800, [6801] = 6802, [6891] = 6893, [6892] = 6893, [6894] = 6895, [6900] = 6902, [6901] = 6902, [6903] = 6904, [7033] = 7035, [7034] = 7035, [7036] = 7037, [7042] = 7044, [7043] = 7044, [7045] = 7046, [7054] = 7055, [7056] = 7057, [8541] = 8543, [8542] = 8543, [8544] = 8546, [8545] = 8546, [8547] = 8548, [8549] = 8550, [9165] = 9167, [9166] = 9167, [9168] = 9170, [9169] = 9170, [9171] = 9172, [9173] = 9174, [9267] = 9269, [9268] = 9269, [9270] = 9272, [9271] = 9272, [9273] = 9274, [9275] = 9276, [10276] = 10277, [10274] = 10275, [10268] = 10270, [10269] = 10270, [10271] = 10273, [10272] = 10273, [10471] = 10472, [10480] = 10481, [10477] = 10479, [10478] = 10479, [10468] = 10470, [10469] = 10470, [10774] = 10776, [10775] = 10776, [10779] = 10780, [10781] = 10782, [10783] = 10785, [10784] = 10785, [10788] = 10789, [10790] = 10791} closingDoors = {1224, 1226, 1228, 1230, 1242, 1244, 1246, 1248, 1256, 1258, 1260, 1262, 3541, 3543, 3550, 3552, 5104, 5106, 5113, 5115, 5122, 5124, 5131, 5133, 5289, 5291, 5293, 5295, 6203, 6205, 6207, 6209, 6260, 6262, 6264, 6266, 6897, 6899, 6906, 6908, 7039, 7041, 7048, 7050, 8552, 8554, 8556, 8558, 9176, 9178, 9180, 9182, 9278, 9280, 9282, 9284, 10279, 10281, 10283, 10285, 10474, 10476, 10483, 10485, 10780, 10782, 10789, 10791} verticalOpenDoors = {1211, 1220, 1224, 1228, 1233, 1238, 1242, 1246, 1251, 1256, 1260, 1540, 3546, 3548, 3550, 3552, 4915, 5083, 5109, 5111, 5113, 5115, 5127, 5129, 5131, 5133, 5142, 5145, 5283, 5285, 5289, 5293, 5516, 5737, 5749, 6194, 6199, 6203, 6207, 6251, 6256, 6260, 6264, 6798, 6802, 6902, 6904, 6906, 6908, 7044, 7046, 7048, 7050, 7055, 8543, 8548, 8552, 8556, 9167, 9172, 9269, 9274, 9278, 9282, 10270, 10275, 10279, 10283, 10479, 10481, 10483, 10485, 10789, 10791} horizontalOpenDoors = {1214, 1222, 1226, 1230, 1236, 1240, 1244, 1248, 1254, 1258, 1262, 1542, 3537, 3539, 3541, 3543, 4918, 5085, 5100, 5102, 5104, 5106, 5118, 5120, 5122, 5124, 5136, 5139, 5280, 5287, 5291, 5295, 5518, 5734, 5746, 6197, 6201, 6205, 6209, 6254, 6258, 6262, 6266, 6796, 6800, 6893, 6895, 6897, 6899, 7035, 7037, 7039, 7041, 7057, 8546, 8550, 8554, 8558, 9170, 9174, 9272, 9276, 9280, 9284, 10273, 10277, 10281, 10285, 10470, 10472, 10474, 10476, 10780, 10782} specialDoors = {1223, 1225, 1241, 1243, 1255, 1257, 3542, 3551, 5105, 5114, 5123, 5132, 5288, 5290, 5745, 5748, 6202, 6204, 6259, 6261, 6898, 6907, 7040, 7049, 8551, 8553, 9175, 9177, 9277, 9279, 10278, 10280, 10475, 10484, 10781, 10790} keys = {2086, 2087, 2088, 2089, 2090, 2091, 2092, 10032, 10091} enchantableGems = {2147, 2146, 2149, 2150} enchantableItems = {2342, 2383, 7383, 7384, 7406, 7402, 2429, 2430, 7389, 7380, 2454, 2423, 2445, 7415, 7392, 2391, 2544, 8905} enchantingAltars = { {7504, 7505, 7506, 7507}, {7508, 7509, 7510, 7511}, {7516, 7517, 7518, 7519}, {7512, 7513, 7514, 7515} } enchantedGems = {7760, 7759, 7761, 7762} enchantedItems = { [2383] = {7744, 7763, 7854, 7869}, [7383] = {7745, 7764, 7855, 7870}, [7384] = {7746, 7765, 7856, 7871}, [7406] = {7747, 7766, 7857, 7872}, [7402] = {7748, 7767, 7858, 7873}, [2429] = {7749, 7768, 7859, 7874}, [2430] = {7750, 7769, 7860, 7875}, [7389] = {7751, 7770, 7861, 7876}, [7380] = {7752, 7771, 7862, 7877}, [2454] = {7753, 7772, 7863, 7878}, [2423] = {7754, 7773, 7864, 7879}, [2445] = {7755, 7774, 7865, 7880}, [7415] = {7756, 7775, 7866, 7881}, [7392] = {7757, 7776, 7867, 7882}, [2391] = {7758, 7777, 7868, 7883}, [2544] = {7840, 7839, 7850, 7838}, [8905] = {8906, 8907, 8909, 8908} } Config_meta = { __index = function(t, k) if(k == "type") then return function() return "Config" end end return getConfigValue(k) end, __newindex = function(t, k, v) return false end } CONFIG = {} setmetatable(CONFIG, Config_meta) Storage_meta = { __index = function(t, k) if(k == "type") then return function() return "Storage" end end return getStorage(k) end, __newindex = function(t, k, v) return doSetStorage(k, v) end } STORAGE = {} setmetatable(STORAGE, Storage_meta) WAR_GUILD = 0 WAR_ENEMY = 1 tasks = { ['demon'] = {storage = 14006, amount = 666}, ['crocodile'] = {storage = 14007, amount = 300}, ['tarantula'] = {storage = 14008, amount = 300}, ['carniphila'] = {storage = 14009, amount = 150}, ['stone golem'] = {storage = 14010, amount = 200}, ['mammoth'] = {storage = 14011, amount = 300}, ['ice golem'] = {storage = 14012, amount = 300}, ['quara constrictor scout'] = {storage = 14013, amount = 300}, ['quara hydromancer scout'] = {storage = 14013, amount = 300}, ['quara mantassin scout'] = {storage = 14013, amount = 300}, ['quara pincher scout'] = {storage = 14013, amount = 300}, ['quara predator scout'] = {storage = 14013, amount = 300}, ['quara constrictor'] = {storage = 14014, amount = 300}, ['quara hydromancer'] = {storage = 14014, amount = 300}, ['quara mantassin'] = {storage = 14014, amount = 300}, ['quara pincher'] = {storage = 14014, amount = 300}, ['quara predator'] = {storage = 14014, amount = 300}, ['water elemental'] = {storage = 14015, amount = 70}, ['massive water elemental'] = {storage = 14015, amount = 70}, ['earth elemental'] = {storage = 14016, amount = 70}, ['massive earth elemental'] = {storage = 14016, amount = 70}, ['energy elemental'] = {storage = 14017, amount = 70}, ['massive energy elemental'] = {storage = 14017, amount = 70}, ['fire elemental'] = {storage = 14018, amount = 70}, ['massive fire elemental'] = {storage = 14018, amount = 70}, ['mutated rat'] = {storage = 14019, amount = 200}, ['giant spider'] = {storage = 14020, amount = 500}, ['hydra'] = {storage = 14021, amount = 2000}, ['sea serpent'] = {storage = 14001, amount = 2000}, ['behemoth'] = {storage = 14022, amount = 2000}, ['serpent spawn'] = {storage = 14002, amount = 1500}, ['pirate buccaneer'] = {storage = 14005, amount = 3000}, ['pirate corsair'] = {storage = 14005, amount = 3000}, ['pirate cutthroat'] = {storage = 14005, amount = 3000}, ['pirate ghost'] = {storage = 14005, amount = 3000}, ['pirate marauder'] = {storage = 14005, amount = 3000}, ['pirate skeleton'] = {storage = 14005, amount = 3000}, ['minotaur'] = {storage = 14004, amount = 5000}, ['minotaur archer'] = {storage = 14004, amount = 5000}, ['minotaur guard'] = {storage = 14004, amount = 5000}, ['minotaur mage'] = {storage = 14004, amount = 5000}, ['necromancer'] = {storage = 14003, amount = 4000}, ['priestess'] = {storage = 14003, amount = 4000} } LIB- 104-KillingInTheNameOf Spoiler RANK_NONE = 0 RANK_JOIN = 1 RANK_HUNTSMAN = 2 RANK_RANGER = 3 RANK_BIGGAMEHUNTER = 4 RANK_TROPHYHUNTER = 5 RANK_ELITEHUNTER = 6 REWARD_MONEY = 1 REWARD_EXP = 2 REWARD_ACHIEVEMENT = 3 REWARD_STORAGE = 4 REWARD_POINT = 5 REWARD_ITEM = 6 QUESTSTORAGE_BASE = 1500 JOIN_STOR = 100157 KILLSSTORAGE_BASE = 65000 REPEATSTORAGE_BASE = 48950 POINTSSTORAGE = 2500 tasks = { --Tasks for level 6 to 49. [1] = {killsRequired = 100, raceName = "Trolls", level = {6, 19}, premium = true, creatures = {"troll", "troll champion", "island troll", "swamp troll"}, rewards = { {type = "exp", value = {200}}, {type = "money", value = {200}} }}, [2] = {killsRequired = 150, raceName = "Goblins", level = {6, 19}, premium = true, creatures = {"goblin", "goblin assassin", "goblin leader"}, rewards = { {type = "exp", value = {300}}, {type = "money", value = {250}} }}, [3] = {killsRequired = 300, raceName = "Crocodiles", level = {6, 49}, premium = true, creatures = {"crocodile"}, rewards = { {type = "exp", value = {800}}, {type = "achievement", value = {"Blood-Red Snapper"}}, {type = "storage", value = {35000, 1}}, {type = "points", value = {1}} }}, [4] = {killsRequired = 300, raceName = "Badgers", level = {6, 49}, premium = true, creatures = {"badger"}, rewards = { {type = "exp", value = {500}}, {type = "points", value = {1}} }}, [5] = {killsRequired = 300, raceName = "Tarantulas", level = {6, 49}, premium = true, creatures = {"tarantula"}, rewards = { {type = "exp", value = {1500}}, {type = "achievement", value = {"No More Hiding"}}, {type = "storage", value = {35001, 1}}, {type = "points", value = {2}} }}, [6] = {killsRequired = 150, raceName = "Carniphilas", level = {6, 49}, premium = true, creatures = {"carniphila"}, rewards = { {type = "exp", value = {2500}}, {type = "achievement", value = {"Rootless Behaviour"}}, {type = "storage", value = {35002, 1}}, {type = "points", value = {3}} }}, [7] = {killsRequired = 200, raceName = "Stone Golems", level = {6, 49}, premium = true, creatures = {"stone golem"}, rewards = { {type = "exp", value = {2000}}, {type = "points", value = {3}} }}, [8] = {killsRequired = 300, raceName = "Mammoths", level = {6, 49}, premium = true, creatures = {"mammoth"}, rewards = { {type = "exp", value = {4000}}, {type = "achievement", value = {"Meat Skewer"}}, {type = "storage", value = {35003, 1}}, {type = "points", value = {3}} }}, [9] = {killsRequired = 300, raceName = "Gnarlhounds", level = {6, 49}, premium = true, creatures = {"gnarlhound"}, rewards = { {type = "exp", value = {1000}}, {type = "points", value = {2}} }}, [10] = {killsRequired = 300, raceName = "Terramites", level = {6, 49}, premium = true, creatures = {"terramite"}, rewards = { {type = "exp", value = {1000}}, {type = "points", value = {2}} }}, [11] = {killsRequired = 300, raceName = "Apes", level = {6, 49}, premium = true, creatures = {"kongra", "sibang", "merklin"}, rewards = { {type = "exp", value = {1000}}, {type = "points", value = {2}} }}, [12] = {killsRequired = 300, raceName = "Thornback Tortoises", level = {6, 49}, premium = true, creatures = {"thornback tortoise"}, rewards = { {type = "exp", value = {1500}}, {type = "points", value = {2}} }}, [13] = {killsRequired = 300, raceName = "Gargoyles", level = {6, 49}, premium = true, creatures = {"gargoyle"}, rewards = { {type = "exp", value = {1500}} }}, --Tasks for level 50 to 79. [14] = {killsRequired = 300, raceName = "Ice Golems", level = {50, 79}, premium = true, creatures = {"ice golem"}, rewards = { {type = "exp", value = {12000}}, {type = "achievement", value = {"Breaking The Ice"}}, {type = "storage", value = {35004, 1}}, {type = "points", value = {2}} }}, [15] = {killsRequired = 400, raceName = "Quara Scouts", level = {50, 79}, premium = true, creatures = {"quara pincher scout", "quara predator scout", "quara hydromancer scout", "quara constrictor scout", "quara mantassin scout"}, rewards = { {type = "exp", value = {10000}}, {type = "points", value = {2}} }}, [16] = {killsRequired = 400, raceName = "Mutated Rats", level = {50, 79}, premium = true, creatures = {"mutated rat"}, rewards = { {type = "exp", value = {10000}}, {type = "achievement", value = {"Twisted Mutation"}}, {type = "storage", value = {35005, 1}}, {type = "points", value = {2}} }}, [17] = {killsRequired = 250, raceName = "Ancient Scarabs", level = {50, 79}, premium = true, creatures = {"ancient scarab"}, rewards = { {type = "exp", value = {15000}}, {type = "achievement", value = {"Crawling Death"}}, {type = "storage", value = {35006, 1}}, {type = "points", value = {2}} }}, [18] = {killsRequired = 300, raceName = "Wyverns", level = {50, 79}, premium = true, creatures = {"wyvern"}, rewards = { {type = "exp", value = {12000}}, {type = "points", value = {2}} }}, [19] = {killsRequired = 300, raceName = "Lancer Beetles", level = {50, 79}, premium = true, creatures = {"lancer beetle"}, rewards = { {type = "exp", value = {8000}}, {type = "points", value = {2}} }}, [20] = {killsRequired = 400, raceName = "Wailing Widows", level = {50, 79}, premium = true, creatures = {"wailing widow"}, rewards = { {type = "exp", value = {12000}}, {type = "points", value = {3}} }}, [21] = {killsRequired = 250, raceName = "Killer Caimans", level = {50, 79}, premium = true, creatures = {"killer caiman"}, rewards = { {type = "exp", value = {10000}}, {type = "points", value = {2}} }}, [22] = {killsRequired = 300, raceName = "Bonebeasts", level = {50, 79}, premium = true, creatures = {"bonebeast"}, rewards = { {type = "exp", value = {12000}}, {type = "achievement", value = {"Spareribs for Dinner"}}, {type = "storage", value = {35007, 1}}, {type = "points", value = {2}} }}, [23] = {killsRequired = 300, raceName = "Crystal Spiders", level = {50, 79}, creatures = {"crystal spider"}, premium = true, rewards = { {type = "exp", value = {15000}}, {type = "achievement", value = {"Arachnoise"}}, {type = "storage", value = {35008, 1}}, {type = "points", value = {3}} }}, [24] = {killsRequired = 300, raceName = "Mutated Tigers", level = {50, 79}, premium = true, creatures = {"mutated tiger"}, rewards = { {type = "exp", value = {12000}}, {type = "points", value = {2}} }}, --Taks for level 80 to 129. [25] = {killsRequired = 600, raceName = "Underwater Quara", level = {80, 129}, premium = true, creatures = {"quara hydromancer", "quara predator", "quara constrictor", "quara mantassin", "quara pincher"}, rewards = { {type = "exp", value = {15000}}, {type = "achievement", value = {"Back into the Abyss"}}, {type = "storage", value = {35009, 1}}, {type = "points", value = {3}} }}, [26] = {killsRequired = 500, raceName = "Giant Spiders", level = {80, 129}, premium = true, creatures = {"giant spider"}, rewards = { {type = "exp", value = {20000}}, {type = "achievement", value = {"Choking on Her Venom"}}, {type = "storage", value = {35010, 1}}, {type = "points", value = {3}} }}, [27] = {killsRequired = 300, raceName = "Werewolves", level = {80, 129}, premium = true, creatures = {"werewolf"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Howly Silence"}}, {type = "storage", value = {35011, 1}}, {type = "points", value = {4}} }}, [28] = {killsRequired = 400, raceName = "Nightmares", level = {80, 129}, premium = true, creatures = {"nightmare", "nightmare scion"}, rewards = { {type = "exp", value = {25000}}, {type = "achievement", value = {"Dream is Over"}}, {type = "storage", value = {35012, 1}}, {type = "points", value = {3}} }}, [29] = {killsRequired = 600, raceName = "Hellspawns", level = {80, 129}, premium = true, creatures = {"hellspawn"}, rewards = { {type = "exp", value = {25000}}, {type = "achievement", value = {"Scorched Flames"}}, {type = "storage", value = {35013, 1}} }}, [30] = {killsRequired = 800, raceName = "High Class Lizards", level = {80, 129}, premium = true, creatures = {"lizard chosen", "lizard dragon priest", "lizard high guard", "lizard legionnaire"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Zzztill Zzztanding!"}}, {type = "storage", value = {35014, 1}}, {type = "points", value = {3}} }}, [31] = {killsRequired = 600, raceName = "Stampors", level = {80, 129}, premium = true, creatures = {"stampor"}, rewards = { {type = "exp", value = {20000}}, {type = "achievement", value = {"Stepped on a Big Toe"}}, {type = "storage", value = {35015, 1}}, {type = "points", value = {3}} }}, [32] = {killsRequired = 500, raceName = "Brimstone Bugs", level = {80, 129}, premium = true, creatures = {"brimstone bug"}, rewards = { {type = "exp", value = {15000}}, {type = "achievement", value = {"Something Smells"}}, {type = "storage", value = {35016, 1}}, {type = "points", value = {3}} }}, [33] = {killsRequired = 400, raceName = "Mutated Bats", level = {80, 129}, premium = true, creatures = {"mutated bat"}, rewards = { {type = "exp", value = {20000}}, {type = "achievement", value = {"Kapow!"}}, {type = "storage", value = {35017, 1}}, {type = "points", value = {2}} }}, --Tasks for level 130+ [34] = {killsRequired = 650, raceName = "Hydras", level = {130, 9999}, premium = true, creatures = {"hydra"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"One Less"}}, {type = "storage", value = {35018, 1}}, {type = "points", value = {3}} }}, [35] = {killsRequired = 800, raceName = "Serpent Spawns", level = {130, 9999}, premium = true, creatures = {"serpent spawn"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Hissing Downfall"}}, {type = "storage", value = {35019, 1}}, {type = "points", value = {4}} }}, [36] = {killsRequired = 500, raceName = "Medusas", level = {130, 9999}, premium = true, creatures = {"medusa"}, rewards = { {type = "exp", value = {40000}}, {type = "achievement", value = {"The Serpent's Bride"}}, {type = "storage", value = {35020, 1}}, {type = "points", value = {5}} }}, [37] = {killsRequired = 700, raceName = "Behemoths", level = {130, 9999}, premium = true, creatures = {"behemoth"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Just Cracked Me Up!"}}, {type = "storage", value = {35021, 1}}, {type = "points", value = {4}} }}, [38] = {killsRequired = 900, raceName = "Sea Serpents and Young Sea Serpents", level = {130, 9999}, premium = true, creatures = {"sea serpent", "young sea serpent"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"The Drowned Sea God"}}, {type = "storage", value = {35022, 1}}, {type = "points", value = {4}} }}, [39] = {killsRequired = 250, raceName = "Hellhounds", level = {130, 9999}, premium = true, creatures = {"hellhound"}, rewards = { {type = "exp", value = {40000}}, {type = "achievement", value = {"The Gates of Hell"}}, {type = "storage", value = {35023, 1}}, {type = "points", value = {5}} }}, [40] = {killsRequired = 500, raceName = "Ghastly Dragons", level = {130, 9999}, premium = true, creatures = {"ghastly dragon"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Beautiful Agony"}}, {type = "storage", value = {35024, 1}}, {type = "points", value = {5}} }}, [41] = {killsRequired = 900, raceName = "Drakens", level = {130, 9999}, premium = true, creatures = {"draken spellweaver", "draken warmaster", "draken abomination", "draken elite"} , rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Enter zze Draken!"}}, {type = "storage", value = {35025, 1}}, {type = "points", value = {3}} }}, [42] = {killsRequired = 650, raceName = "Destroyers", level = {130, 9999}, premium = true, creatures = {"destroyer"}, rewards = { {type = "exp", value = {30000}}, {type = "achievement", value = {"Best there was!"}}, {type = "storage", value = {35026, 1}}, {type = "points", value = {4}} }}, [43] = {killsRequired = 400, raceName = "Undead Dragons", level = {130, 9999}, premium = true, creatures = {"undead dragon"}, rewards = { {type = "exp", value = {50000}}, {type = "achievement", value = {"Back from the Dead"}}, {type = "storage", value = {35027, 1}}, {type = "points", value = {6}} }}, --Special tasks. [44] = {killsRequired = 6666, raceName = "Demons", level = {130, 9999}, rank = RANK_ELITEHUNTER, premium = true, creatures = {"demon"}, rewards = { {type = "storage", value = {41300, 1}} --Storage that let's you to start Demon Oak }}, [45] = {killsRequired = 500, raceName = "Green Djinns or Efreets", level = {1, 9999}, rank = RANK_JOIN, premium = true, creatures = {"green djinn", "efreet"}, rewards = { --Requires an storage (Gained on The Djinn War - Marid Faction) {type = "exp", value = {10000}}, {type = "money", value = {5000}}, {type = "storage", value = {35028, 1}} }}, [46] = {killsRequired = 500, raceName = "Blue Djinns or Marids", level = {1, 9999}, rank = RANK_JOIN, premium = true, creatures = {"blue djinn", "marid"}, rewards = { --Requires an storage (Gained on The Djinn War - Efreet Faction) {type = "exp", value = {10000}}, {type = "money", value = {5000}}, {type = "storage", value = {35029, 1}} }}, [47] = {killsRequired = 3000, raceName = "Pirates", level = {1, 9999}, rank = RANK_JOIN, premium = true, creatures = {"pirate ghost", "pirate marauder", "pirate cutthroad", "pirate buccaneer", "pirate corsair", "pirate skeleton"}, rewards = { --Requires an storage (Gained on The Shattered Isles Quest) {type = "exp", value = {10000}}, {type = "money", value = {5000}}, {type = "storage", value = {35030, 1}} }}, [48] = {killsRequired = 3000, raceName = "Pirates second task", level = {1, 9999}, storage = {REPEATSTORAGE_BASE + 47, 3}, norepeatable = true, premium = true, creatures = {"pirate ghost", "pirate marauder", "pirate cutthroad", "pirate buccaneer", "pirate corsair", "pirate skeleton"}, rewards = { --Requires an storage (Gained completing Raymond Striker's first task three times.) NOTE: The required storage to start this task is: base + first pirate task id (47) {type = "exp", value = {10000}}, {type = "money", value = {5000}}, {type = "storage", value = {35031, 1}} }}, [51] = {killsRequired = 5000, raceName = "Minotaurs", level = {1, 9999}, rank = RANK_JOIN, premium = true, creatures = {"minotaur", "minotaur mage", "minotaur archer"}, rewards = { --Requires an storage (Gained on The Djinn War - Marid Faction) {type = "storage", value = {35032, 1}} }}, [50] = {killsRequired = 4000, raceName = "Necromancers and Priestess", level = {60, 9999}, norepeatable = true, premium = true, creatures = {"necromancer", "priestess"}, rewards = { --Requires an storage (Gained on To Outfox a Fox Quest) {type = "storage", value = {35033, 1}}, {type = "storage", value = {12800, 1}} --storage to stark the second Necromancers and Priestess task. }}, [49] = {killsRequired = 1000, name = "Necromancers and Priestess second task", raceName = "Necromancers and Priestess", level = {60, 9999}, storage = {12800, 1}, norepeatable = true, premium = true, creatures = {"necromancer", "priestess"}, rewards = { --Requires an storage (Gained on To Outfox a Fox Quest) {type = "exp", value = {40000}}, {type = "storage", value = {35033, 1}} }}, } tasksByPlayer = 3 repeatTimes = 3 function getPlayerRank(cid) return (getPlayerStorageValue(cid, POINTSSTORAGE) >= 100 and RANK_ELITEHUNTER or getPlayerStorageValue(cid, POINTSSTORAGE) >= 70 and RANK_TROPHYHUNTER or getPlayerStorageValue(cid, POINTSSTORAGE) >= 40 and RANK_BIGGAMEHUNTER or getPlayerStorageValue(cid, POINTSSTORAGE) >= 20 and RANK_RANGER or getPlayerStorageValue(cid, POINTSSTORAGE) >= 10 and RANK_HUNTSMAN or getPlayerStorageValue(cid, JOIN_STOR) == 1 and RANK_JOIN or RANK_NONE) end function getTaskByName(name, table) local t = (table and table or tasks) for k, v in pairs(t) do if v.name then if v.name:lower() == name:lower() then return k end else if v.raceName:lower() == name:lower() then return k end end end return false end function getTasksByPlayer(cid) local canmake = {} local able = {} for k, v in pairs(tasks) do if getCreatureStorage(cid, QUESTSTORAGE_BASE + k) < 1 and getCreatureStorage(cid, REPEATSTORAGE_BASE + k) < repeatTimes then able[k] = true if getPlayerLevel(cid) < v.level[1] or getPlayerLevel(cid) > v.level[2] then able[k] = false end if v.storage and getCreatureStorage(cid, v.storage[1]) < v.storage[2] then able[k] = false end if v.rank then if getPlayerRank(cid) < v.rank then able[k] = false end end if v.premium then if not isPremium(cid) then able[k] = false end end if able[k] then table.insert(canmake, k) end end end return canmake end function canStartTask(cid, name, table) local v = "" local id = 0 local t = (table and table or tasks) for k, i in pairs(t) do if i.name then if i.name:lower() == name:lower() then v = i id = k break end else if i.raceName:lower() == name:lower() then v = i id = k break end end end if v == "" then return false end if getCreatureStorage(cid, QUESTSTORAGE_BASE + id) > 0 then return false end if (getCreatureStorage(cid, REPEATSTORAGE_BASE + id) >= repeatTimes) or (v.norepeatable and getCreatureStorage(cid, REPEATSTORAGE_BASE + id) > 0) then return false end if getPlayerLevel(cid) >= v.level[1] and getPlayerLevel(cid) <= v.level[2] then if v.premium then if isPremium(cid) then if v.rank then if getPlayerRank(cid) >= v.rank then if v.storage then if getCreatureStorage(cid, v.storage[1]) >= v.storage[2] then return true end else return true end end else return true end end else return true end end return false end function getPlayerStartedTasks(cid) local tmp = {} for k, v in pairs(tasks) do if getCreatureStorage(cid, QUESTSTORAGE_BASE + k) > 0 and getCreatureStorage(cid, QUESTSTORAGE_BASE + k) < 2 then table.insert(tmp, k) end end return tmp end function isSummon(cid) return getCreatureMaster(cid) ~= nil or false end NPC/scripts/Grizzly Adams.xml Spoiler local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local choose = {} local cancel = {} local available = {} local grizzlyAdamsConfig = { ranks = { huntsMan_rank = { {id=11208, buy=0, sell=50, name='antlers'}, {id=10549, buy=0, sell=100, name='bloody pincers'}, {id=11183, buy=0, sell=35, name='crab pincers'}, {id=10573, buy=0, sell=55, name='cyclops toe'}, {id=10564, buy=0, sell=30, name='frosty ear of a troll'}, {id=11193, buy=0, sell=600, name='hydra head'}, {id=11366, buy=0, sell=80, name='lancer beetle shell'}, {id=10578, buy=0, sell=420, name='mutated bat ear'}, {id=11222, buy=0, sell=400, name='sabretooth'}, {id=11367, buy=0, sell=20, name='sandcrawler shell'}, {id=10547, buy=0, sell=280, name='scarab pincers'}, {id=11365, buy=0, sell=60, name='terramite legs'}, {id=11363, buy=0, sell=170, name='terramite shell'}, {id=11184, buy=0, sell=30000, name='terrorbird beak'}, {id=7398, buy=0, sell=500, name='cyclops trophy'}, {id=11315, buy=0, sell=15000, name='draken trophy'}, {id=11330, buy=0, sell=8000, name='lizard trophy'}, {id=7401, buy=0, sell=500, name='minotaur trophy'} }, bigGameHunter_rank = { {id=7397, buy=0, sell=3000, name='deer trophy'}, {id=7400, buy=0, sell=3000, name='lion trophy'}, {id=7394, buy=0, sell=3000, name='wolf trophy'} }, trophyHunter_rank = { {id=7393, buy=0, sell=40000, name='demon trophy'}, {id=7396, buy=0, sell=20000, name='behemoth trophy'}, {id=7399, buy=0, sell=10000, name='dragon lord trophy'}, {id=10518, buy=1000, sell=0, name='demon backpack'}, }, } } local Topic = {} function greetCallback(cid) Topic[cid] = 0 return true end local function setNewTradeTable(table) local items = {} for _, v in ipairs(table) do items[v.id] = {itemId = v.id, buyPrice = v.buy, sellPrice = v.sell, subType = 0, realName = v.name} end return items end local function setNewLineTable(oldTable, newTable) for k, v in pairs(oldTable) do table.insert(newTable, k, v) end return true end function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if (msgcontains(msg, "hi") or msgcontains(msg, "hello")) and (not npcHandler:isFocused(cid)) then if (getPlayerStorageValue(cid, 100157) == -1) then npcHandler:say("Welcome "..getCreatureName(cid)..". Would you like to join the 'Paw and Fur - Hunting Elite' or say {trade} to buy stamina?", cid) npcHandler:addFocus(cid) talkState[talkUser] = 5 else npcHandler:say("Welcome back old chap. What brings you here this time?", cid) npcHandler:addFocus(cid) talkState[talkUser] = 0 end return true end if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "bye") or msgcontains(msg, "farewell") then selfSay("Happy hunting, old chap!", cid, TRUE) Topic[talkUser] = 0 npcHandler:releaseFocus(cid) npcHandler:resetNpc(cid) end if (isInArray({"yes", "join"}, msg:lower()) and talkState[talkUser] == 5) then setPlayerStorageValue(cid, 100157, 1) npcHandler:say("Great! A warm welcome to our newest member: "..getCreatureName(cid).."! Ask me for a {task} if you want to go on a hunt.", cid) talkState[talkUser] = 0 elseif (msg:lower() == "no" and talkState[talkUser] == 5) then npcHandler:say("No problem old chap. Come back if you change your mind.", cid) end if (getPlayerStorageValue(cid, 100157) == -1) then npcHandler:say("You'll have to {join} us to get more information.",cid) return false end if isInArray({"offer", "trade"}, msg:lower()) then if getPlayerRank(cid) >= 2 then if getPlayerRank(cid) == 2 or getPlayerRank(cid) == 3 then tradeRank = grizzlyAdamsConfig.ranks.huntsMan_rank elseif getPlayerRank(cid) == 4 then tradeRank = grizzlyAdamsConfig.ranks.bigGameHunter_rank setNewLineTable(grizzlyAdamsConfig.ranks.huntsMan_rank, grizzlyAdamsConfig.ranks.bigGameHunter_rank) elseif getPlayerRank(cid) == 5 or getPlayerRank(cid) == 6 then tradeRank = grizzlyAdamsConfig.ranks.trophyHunter_rank setNewLineTable(grizzlyAdamsConfig.ranks.huntsMan_rank, grizzlyAdamsConfig.ranks.bigGameHunter_rank) setNewLineTable(grizzlyAdamsConfig.ranks.huntsMan_rank, grizzlyAdamsConfig.ranks.trophyHunter_rank) end local items = setNewTradeTable(tradeRank) local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks) if ignoreCap == false and (getPlayerFreeCap(cid) < getItemWeightById(items[item].itemId, amount) or inBackpacks and getPlayerFreeCap(cid) < (getItemWeightById(items[item].itemId, amount) + getItemWeightById(1988, 1))) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You don\'t have enough cap.') end if items[item].buyPrice then doPlayerRemoveMoney(cid, amount * items[item].buyPrice) for i = 1, amount do if inBackpacks then local backpack = doCreateItemEx(1988, 1) doAddContainerItem(backpack, items[item].itemId, amount) else doPlayerAddItem(cid, items[item].itemId, amount, true) end end return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You bought '..amount..'x '..items[item].realName..' for '..items[item].buyPrice * amount..' gold coins.') end return true end local function onSell(cid, item, subType, amount, ignoreCap, inBackpacks) if items[item].sellPrice then doPlayerAddMoney(cid, items[item].sellPrice * amount) doPlayerRemoveItem(cid, items[item].itemId, amount) return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You sold '..amount..'x '..items[item].realName..' for '..items[item].sellPrice * amount..' gold coins.') end return true end openShopWindow(cid, tradeRank, onBuy, onSell) return selfSay('It\'s my offer.', cid) else return selfSay('You don\'t have any rank.', cid) end end if isInArray({"tasks", "task", "mission"}, msg:lower()) then local can = getTasksByPlayer(cid) if (getPlayerStorageValue(cid, 100157) == -1) then return (npcHandler:say("You'll have to {join}, to get any {tasks}.",cid)) end if #can > 0 then local text = "" local sep = ", " table.sort(can, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(can) do t = t + 1 if t == #can - 1 then sep = " and " elseif t == #can then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#can > 1 and "s" or "") .. " that you can choose " .. (#can > 1 and "are" or "is") .. " " .. text, cid) talkState[talkUser] = 0 else selfSay("I don't have any task for you right now.", cid) end elseif msg ~= "" and canStartTask(cid, msg) then if #getPlayerStartedTasks(cid) >= tasksByPlayer then selfSay("Sorry, but you already started " .. tasksByPlayer .. " tasks. You can check their {status} or {cancel} a task.", cid) return true end local task = getTaskByName(msg) if task and getCreatureStorage(cid, QUESTSTORAGE_BASE + task) > 0 then return false end selfSay("In this task you must defeat " .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Are you sure that you want to start this task?", cid) choose[cid] = task talkState[talkUser] = 1 elseif msg:lower() == "yes" and talkState[talkUser] == 1 then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + choose[cid], 1) selfSay("Excellent! You can check the {status} of your task saying {report} to me. Also you can {cancel} tasks to.", cid) choose[cid] = nil talkState[talkUser] = 0 elseif (msg:lower() == "report" or msg:lower() == "status") then local started = getPlayerStartedTasks(cid) local finishedAtLeastOne = false local finished = 0 if started and #started > 0 then for _, id in ipairs(started) do if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) >= tasks[id].killsRequired then for _, reward in ipairs(tasks[id].rewards) do local deny = false if reward.storage then if getCreatureStorage(cid, reward.storage[1]) >= reward.storage[2] then deny = true end end if isInArray({REWARD_MONEY, "money"}, reward.type:lower()) and not deny then doPlayerAddMoney(cid, reward.value[1]) elseif isInArray({REWARD_EXP, "exp", "experience"}, reward.type:lower()) and not deny then doPlayerAddExperience(cid, reward.value[1]) doPlayerSendDefaultCancel(cid, "You gained " .. reward.value[1] .. " experience points.") elseif isInArray({REWARD_ACHIEVEMENT, "achievement", "ach"}, reward.type:lower()) and not deny then if doPlayerAddAchievement then doPlayerAddAchievement(cid, reward.value[1], true) end elseif isInArray({REWARD_STORAGE, "storage", "stor"}, reward.type:lower()) and not deny then doCreatureSetStorage(cid, reward.value[1], reward.value[2]) elseif isInArray({REWARD_POINT, "points", "point"}, reward.type:lower()) and not deny then doCreatureSetStorage(cid, POINTSSTORAGE, getCreatureStorage(cid, POINTSSTORAGE) + reward.value[1]) elseif isInArray({REWARD_ITEM, "item", "items", "object"}, reward.type:lower()) and not deny then doPlayerAddItem(cid, reward.value[1], reward.value[2]) end if reward.storage then doCreatureSetStorage(cid, reward.storage[1], reward.storage[2]) end end if tasks[id].norepeatable then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + id, 2) else doCreatureSetStorage(cid, QUESTSTORAGE_BASE + id, 0) end doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, 0) if getCreatureStorage(cid, REPEATSTORAGE_BASE + id) < 1 then doCreatureSetStorage(cid, REPEATSTORAGE_BASE + id, 0) end doCreatureSetStorage(cid, REPEATSTORAGE_BASE + id, getCreatureStorage(cid, REPEATSTORAGE_BASE + id) + 1) finishedAtLeastOne = true finished = finished + 1 end end if not finishedAtLeastOne then local started = getPlayerStartedTasks(cid) if started and #started > 0 then local text = "" local sep = ", " table.sort(started, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(started) do t = t + 1 if t == #started - 1 then sep = " and " elseif t == #started then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#started > 1 and "s" or "") .. " that you started " .. (#started > 1 and "are" or "is") .. " " .. text, cid) Topic[cid] = 1 else selfSay("Awesome! you finished " .. (finished > 1 and "various" or "a") .. " task" .. (finished > 1 and "s" or "") .. ". Talk to me again if you want to start a {task}.", cid) end else selfSay("You haven't started any task yet.", cid) end end elseif msg:lower() == "started" then local started = getPlayerStartedTasks(cid) if started and #started > 0 then local text = "" local sep = ", " table.sort(started, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(started) do t = t + 1 if t == #started - 1 then sep = " and " elseif t == #started then sep = "." end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end selfSay("The current task" .. (#started > 1 and "s" or "") .. " that you started " .. (#started > 1 and "are" or "is") .. " " .. text, cid) else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "cancel" then local started = getPlayerStartedTasks(cid) local task = getTaskByName(msg) local text = "" local sep = ", " table.sort(started, (function(a, b) return (a < b) end)) local t = 0 for _, id in ipairs(started) do t = t + 1 if t == #started - 1 then sep = " or " elseif t == #started then sep = "?" end text = text .. "{" .. (tasks[id].name or tasks[id].raceName) .. "}" .. sep end if started and #started > 0 then selfSay("Cancelling a task will make the counter restart. Which of these tasks you want cancel?" .. (#started > 1 and "" or "") .. " " .. text, cid) talkState[talkUser] = 2 else selfSay("You haven't started any task yet.", cid) end elseif getTaskByName(msg) and talkState[talkUser] == 2 and isInArray(getPlayerStartedTasks(cid), getTaskByName(msg)) then local task = getTaskByName(msg) if getCreatureStorage(cid, KILLSSTORAGE_BASE + task) > 0 then selfSay("You currently killed " .. getCreatureStorage(cid, KILLSSTORAGE_BASE + task) .. "/" .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ". Cancelling this task will restart the count. Are you sure you want to cancel this task?", cid) else selfSay("Are you sure you want to cancel this task?", cid) end talkState[talkUser] = 3 cancel[cid] = task elseif getTaskByName(msg) and Topic[cid] == 1 and isInArray(getPlayerStartedTasks(cid), getTaskByName(msg)) then local task = getTaskByName(msg) if getCreatureStorage(cid, KILLSSTORAGE_BASE + task) > 0 then selfSay("You currently killed " .. getCreatureStorage(cid, KILLSSTORAGE_BASE + task) .. "/" .. tasks[task].killsRequired .. " " .. tasks[task].raceName .. ".", cid) Topic[cid] = 0 else selfSay("You haven't started any task yet.", cid) end elseif msg:lower() == "yes" and talkState[talkUser] == 3 then doCreatureSetStorage(cid, QUESTSTORAGE_BASE + cancel[cid], -1) doCreatureSetStorage(cid, KILLSSTORAGE_BASE + cancel[cid], -1) selfSay("You have cancelled the task " .. (tasks[cancel[cid]].name or tasks[cancel[cid]].raceName) .. ".", cid) talkState[talkUser] = 0 elseif isInArray({"points", "rank"}, msg:lower()) then if getCreatureStorage(cid, POINTSSTORAGE) < 1 then selfSay("At this time, you have 0 Paw & Fur points. You " .. (getPlayerRank(cid) == 6 and "are an Elite Hunter" or getPlayerRank(cid) == 5 and "are a Trophy Hunter" or getPlayerRank(cid) == 4 and "are a Big Game Hunter" or getPlayerRank(cid) == 3 and "are a Ranger" or getPlayerRank(cid) == 2 and "are a Huntsman" or getPlayerRank(cid) == 1 and "are a Member" or "haven't been ranked yet") .. ".", cid) elseif getCreatureStorage(cid, POINTSSTORAGE) >= 1 then selfSay("At this time, you have " .. getCreatureStorage(cid, POINTSSTORAGE) .. " Paw & Fur points. You " .. (getPlayerRank(cid) == 6 and "are an Elite Hunter" or getPlayerRank(cid) == 5 and "are a Trophy Hunter" or getPlayerRank(cid) == 4 and "are a Big Game Hunter" or getPlayerRank(cid) == 3 and "are a Ranger" or getPlayerRank(cid) == 2 and "are a Huntsman" or getPlayerRank(cid) == 1 and "are a Member" or "haven't been ranked yet") .. ".", cid) end talkState[talkUser] = 0 end end npcHandler:setMessage(MESSAGE_FAREWELL, "Happy hunting, old chap!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) @Vodkart
Postado Agosto 12, 2017 7 anos Isso aqui: Spoiler function onKill(cid, target, lastHit) local started = getPlayerStartedTasks(cid) if isPlayer(target) or isSummon(target) then return true end if started and #started > 0 then for _, id in ipairs(started) do if isInArray(tasks[id].creatures, getCreatureName(target):lower()) then if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < 0 then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, 0) end if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < tasks[id].killsRequired then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) .. "/" .. tasks[id].killsRequired .. " " .. tasks[id].raceName .. " already killed.") end end end end return true end não deve estar no seu creaturescripts.xml né? No seu creaturescripts.xml tem a tag para esse script. Você registrou o evento no arquivo login.lua? Se não, faça isso. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 12, 2017 7 anos Autor 10 minutos atrás, Dwarfer disse: Isso aqui: Mostrar conteúdo oculto function onKill(cid, target, lastHit) local started = getPlayerStartedTasks(cid) if isPlayer(target) or isSummon(target) then return true end if started and #started > 0 then for _, id in ipairs(started) do if isInArray(tasks[id].creatures, getCreatureName(target):lower()) then if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < 0 then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, 0) end if getCreatureStorage(cid, KILLSSTORAGE_BASE + id) < tasks[id].killsRequired then doCreatureSetStorage(cid, KILLSSTORAGE_BASE + id, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getCreatureStorage(cid, KILLSSTORAGE_BASE + id) .. "/" .. tasks[id].killsRequired .. " " .. tasks[id].raceName .. " already killed.") end end end end return true end não deve estar no seu creaturescripts.xml né? No seu creaturescripts.xml tem a tag para esse script. Você registrou o evento no arquivo login.lua? Se não, faça isso. ja tem a tag. <event type="kill" name="KillingInTheNameOf" event="script" value="killinginthenameof.lua"/> login registerCreatureEvent(cid, "KillingInTheNameOf") Editado Agosto 12, 2017 7 anos por Strung (veja o histórico de edições)
Postado Agosto 12, 2017 7 anos E no login.lua na sua pasta de creaturescripts tem o evento registrado? registerCreatureEvent(cid, "KillingInTheNameOf") Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Agosto 12, 2017 7 anos Autor 22 minutos atrás, Dwarfer disse: E no login.lua na sua pasta de creaturescripts tem o evento registrado? registerCreatureEvent(cid, "KillingInTheNameOf") tem...
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.