Ir para conteúdo
  • Cadastre-se

Tio Rusher

Membro
  • Total de itens

    46
  • Registro em

  • Última visita

Posts postados por Tio Rusher

  1. local respGrande = {"Pupitar", "Tyranitar", "Skarmory", "Magcargo", "Ampharos", "Xatu", "Crobat", "Typhlosion", "Magmar", "Electabuzz", "Cubone", "Marowak", "Electrode", "Charizard", "Oddish", "Paras", "Parasect"}
    
    local respMedio = {"Lanturn", "Dratini", "Dragonair", "Snorlax", "Krabby", "Kingler", "Gengar", "Pidgeot", "Raichu", "Machamp"}
    
    local respPequeno = {"Steelix", "Sudowoodo", "Feraligatr", "Meganium", "Dragonite", "Gyarados", "Pinsir", "Tauros", "Jynx", "Scyther", "Mr. mime", "Horsea", "Seadra", "Tangela", "Grimer", "Muk", "Tentacool", "Tentacruel", "Farfetch'd", "Growlithe", "Arcanine", "Alakazam", "Venusaur", "Blastoise", "Butterfree", "Beedrill", "Ratatta", "Raticate", "Golbat", "Venonat", "Venomoth"}
    
    local shinykarp = {"Magikarp"}
    
    local pokemonMega = {"Alakazam"}
    
    function onSpawn(cid)
    
    
    
    	if isSummon(cid) then
    		return true
    	end
    	
    	if not isCreature(cid) then 
    		return true
    	end
    	
    	if getCreatureName(cid) == "" or getCreatureName(cid) == nil then
    		setPlayerStorageValue(cid, 510, getCreatureNick(cid))
    	end
    	
    	registerCreatureEvent(cid, "GeneralConfiguration")
    	registerCreatureEvent(cid, "WildAttack")
    	registerCreatureEvent(cid, "PokeWalk")
    	 
    	if not ehMonstro(cid) then
    		setPokemonGhost(cid)
    		if getCreatureName(cid):find("Shiny ") then
    			setPlayerStorageValue(cid, storages.EhShiny, 1)
    		end
    		return true
    	end
    	
    	local name = getCreatureName(cid)
    	local pos = getThingPos(cid) 
    	
    	addEvent(function()
    		if not isSummon(cid) and not isShinyName(name) then
    
    			local chance = 0
    			if isInArray(respGrande, doCorrectString(name)) then --alterado v1.9 \/
    				chance = 20 
    			elseif isInArray(respMedio, doCorrectString(name)) then
    				chance = 25
    			elseif isInArray(respPequeno, doCorrectString(name)) then
    				chance = 30
    			elseif isInArray(pokemonMega, doCorrectString(name)) then
    				chance = 10
    			end 
    		
    			local function doShiny(cid, pos, name, mode)
    				if pos and name then
    					name = "Shiny "..name
    				
    					if not pokes[name] then 
    						return true 
    					end	
    					
    					doSendMagicEffect(pos, 18) 
    					doCreateMonsterNick(cid, name, retireShinyName(name), pos, false)
    				end	
    			end	
    		
    			if math.random(1, 1000) <= chance then
    				doRemoveCreature(cid)
    				doShiny(cid, pos, name, 1)
    				return true
    			end
    			
    		local storages = {"Hoodeasy", "Hoodmedium", "Hoodhard", "Hoodexpert", "Hoodlendary"}		
    		for i = 1, #storages do
    			if isShinyName(name) and getPlayerStorageValue(cid, storages[i]) >= 1 then
    				doRemoveCreature(cid)
    			end
    		end
    		
    	end
    
    	local spawn_arrs = {
    		{frompos = {x = 1922, y = 41, z = 7}, topos = {x = 2833, y = 1428, z = 7}},
    	}		
    		
    		for _, arr in pairs(spawn_arrs) do
    			if isInRange(pos, arr.frompos, arr.topos) then
    				if isWild(cid) and string.find(name, "Shiny") and not isInArray({"Shiny Salamence", "Shiny Scizor", "Shiny Magmortar", "Shiny Electivire"}, name) then
    					doRemoveCreature(cid)
    				end
    			end
    		end
    			
    		if isInArray({"Abporygon", "Aporygon"}, name) then
    			doCreatureSetHideHealth(cid, true)
    		end
    		
    		if isWild(cid) and getCreatureName(cid) == "Magikarp" then
    			if math.random(1, 5000) <= 25 then
    				doRemoveCreature(cid)
    				doCreateMonster("Feebas", pos, false)
    			end
    		end
    		
    		if isWild(cid) and isHoenn(getCreatureName(cid)) then
    			if math.random(1, 5000) <= 25 then
    				local sorte = bossName[math.random(#bossName)]
    				doRemoveCreature(cid)	
    				doCreateMonster(sorte, pos, false)				
    			end
    		end				
    		
    		if not isSummon(cid) then
    			adjustWildPoke(cid)
    		end
    	if isPokePassive(cid) then
    	      setPokemonPassive(cid, true)
    	end
    	
    	end, 5)
    	
    	setPokemonGhost(cid)
    	doMarkedPos(cid, getThingPos(cid))
    	setSmeargle(cid)		
    	addEvent(Camouflage, 5, cid)
    	
    	
    
    	
    	return true
    	
    end
    
    
    function Camouflage(cid)
    	if isWild(cid) and getCreatureName(cid) == "Kecleon" then
    		doSetCreatureOutfit(cid, {lookType = 2057}, -1)	
    		doCreatureSetHideHealth(cid, true)		
    	end
    end
    	
    function setSmeargle(cid)
    	if isSummon(cid) then return true end
    	if getCreatureName(cid):find("Smeargle") then
    			local id = math.random(5, 6)
    			if math.random(1, 500) <= 50 then id = math.random(7, 8) end
    			setPlayerStorageValue(cid, storages.SmeargleID, "Smeargle " .. id)
    	end
    end

     

  2. Taskstr = {}
    
    local pokemonTable = {
    	storages = {
    		storeInformations = 432415,
    	},
    	NpcName = "Gabriel",
    	reward = {{2160, 100}, {15645, 10}},
    	exp = 2000,
    	pokemons = {
    		["KISAME_NAME"] = 2,
    		["OROCHIMARU_NAME"] = 3,
    	},
    	doOnlyOne = true,
    }
    
    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 onThink() npcHandler:onThink() end
    
    function onCreatureSay(cid, type1, msg)
    	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    
    	if msg:lower() == "hi" then
    		if getPlayerStorageValue(cid, pokemonTable.storages.storeInformations) == -1 then
    			Taskstr[talkUser] = {}
    			for a, b in pairs(pokemonTable.pokemons) do
    				table.insert(Taskstr[talkUser], b.." "..a.."s")
    			end
    			local KAKAMESSAGE = doConcatTable(Taskstr[talkUser], ", ", " e ")
    			selfSay("Olá, eu posso te dá task de "..KAKAMESSAGE..".", cid)
    			talkState[talkUser] = 1
    		elseif getPlayerStorageValue(cid, pokemonTable.storages.storeInformations) == 1 then
    			selfSay("Não preciso mais da sua ajuda, obrigado!", cid)
    		else
    			local tab = string.explode(getPlayerStorageValue(cid, pokemonTable.storages.storeInformations), "|")
    			selfSay("Você já terminou a minha task?", cid)
    			talkState[talkUser] = 3				
    		end
    		
    	elseif talkState[talkUser] == 1 and (pokemonTable.pokemons[doCorrectString(msg)] or isInArray({"yes", "sim"}, msg:lower())) then
    		pName = doCorrectString(msg)
    		selfSay("Você tem certeza disso?", cid)
    		talkState[talkUser] = 2
    		
    	elseif talkState[talkUser] == 2 then
    		if isInArray({"yes", "sim"}, msg:lower()) then
    		
    			Taskstr[talkUser] = {}
    			for a, b in pairs(pokemonTable.pokemons) do
    				table.insert(Taskstr[talkUser], a..","..b)
    			end
    			setPlayerStorageValue(cid, pokemonTable.storages.storeInformations,pokemonTable.NpcName.."|"..table.concat(Taskstr[talkUser], "|"))
    			selfSay("Ok, vá terminar a task!", cid)
    			
    		elseif isInArray({"no", "não", "nao"}, msg:lower()) then
    		
    			selfSay("Você quem sabe.", cid)
    			talkState[talkUser] = 0	
    		end
    	elseif talkState[talkUser] == 3 then
    		if isInArray({"yes", "sim"}, msg:lower()) then
    			local tab = string.explode(getPlayerStorageValue(cid, pokemonTable.storages.storeInformations), "|")
    			if not tab[2] then
    				doPlayerAddExperience(cid, pokemonTable.exp)
    				doSendAnimatedText(getThingPos(cid), pokemonTable.exp, 215)
    				for a, b in pairs(pokemonTable.reward) do
    					doPlayerAddItem(cid, b[1], b[2])
    				end
    				if pokemonTable.doOnlyOne then
    					setPlayerStorageValue(cid, pokemonTable.storages.storeInformations, 1)
    				else
    					setPlayerStorageValue(cid, pokemonTable.storages.storeInformations, -1)
    				end
    				-- setPlayerStorageValue(cid, stoNumber, Value)
    				selfSay("Você finalizou a task! Pegue seus prêmios.", cid)
    				talkState[talkUser] = 0
    			else
    				talkState[talkUser] = 0
    				local str1 = {}
    				local tab = string.explode(getPlayerStorageValue(cid, pokemonTable.storages.storeInformations), "|")
    				for i = 2, #tab do
    					expe = tab[i]:explode(",")				
    					table.insert(str1, expe[2].." "..expe[1]..(tonumber(expe[2]) > 1 and "s" or ""))
    				end			
    
    				selfSay("Está faltando você matar ".. doConcatTable(str1, ", ", " e ") .." desta espécie!", cid)
    			end
    		elseif isInArray({"no", "não", "nao"}, msg:lower()) then
    			selfSay("Ok, então vá terminar de matá-los!", cid)
    			talkState[talkUser] = 0
    		elseif isInArray({"left", "leave", "desistir"}, msg:lower()) then
    			setPlayerStorageValue(cid, pokemonTable.storages.storeInformations, -1)	
    			selfSay("Ok, pedirei ajuda a alguém mais corajoso!", cid)
    			talkState[talkUser] = 0			
    		end
    	end
    end
    	
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

     

  3. local config = {
      -- item que irá usar, nome do monstro, cowdown, remover?
      [19846] = {name = "Guardião1", cd = 2 * 60 * 60, remove = true},
      [19847] = {name = "Guardião2", cd = 2 * 60 * 60, remove = true},
      [19848] = {name = "Guardião3", cd = 2 * 60 * 60, remove = true}
      
      local cdStorage = 53799
    function onUse(cid, item, frompos, item2, topos)
    	local usedItem = config[item.itemid]
    		if usedItem then
    			if getPlayerLevel(cid) >= 120 then
    			local att = getPlayerStorageValue(cid, cdStorage)
    				if att == -1 or os.time() >= tonumber(att)+usedItem.cd or isGod(cid) then
    					if getChanceCard(item.uid) >= 1 then
    						doCreateNpcWithFocus(usedItem.name, getClosestFreeTile(cid, getCreaturePosition(cid)), cid)
    						setPlayerStorageValue(cid, cdStorage, os.time())
    						--setPlayerStorageValue(cid, 2152525, 1)
    						removeChanceCard(item.uid)
    						doSendMsg(cid, "Para mais informações sobre, visite: https://pokerusher.com/c/teste")
    					else
    						if usedItem.remove then
    							doRemoveItem(item.uid, 1)
    						end
    					end
    				else
    					stringTime = math.floor(((tonumber(att)+usedItem.cd)-os.time()))
    					stringMinOrSec = "segundos"
    					if stringTime > 60 then
    						stringTime = math.floor(stringTime/60)
    						stringMinOrSec = "minutos"
    					end
    					doPlayerSendCancel(cid, "Você poderá usar novamente em: "..stringTime.." "..stringMinOrSec)
    				end
    			end
    		else
    			doPlayerSendCancel(cid, "Você precisa de level 120 para poder este item.")
    	end
    	return true
    end
     

     

  4. no arquivo  config.lua
    altere ip = "localhost" para

    ip = "127.0.0.1"

     

    altere sqlType = "mysql" para

    sqlType = "sqlite"

     

    altere sqlDatabase = " para

    sqlDatabase = ""


     altere sqlFile = "" para

    nomeDoArquivo.sb3 -- qualquer arquivo .sb3(ao menos acho que é assim o formato, não tenho ctz) disponivel na pasta do servidor

     

  5. toda database online é obrigatóriamente em .SQL, as dll são para outras coisas não relacionadas, se a sql não estiver disponivel nos arquivos do game você pode tentar setar as tabelas de outro poketibia e ir corrigindo as que faltar

    ex:
     

    CREATE TABLE IF NOT EXISTS `accounts` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(32) NOT NULL DEFAULT '',
      `password` varchar(255) NOT NULL,
      `premdays` int(11) NOT NULL DEFAULT '0',
      `lastday` int(10) unsigned NOT NULL DEFAULT '0',
      `email` varchar(255) NOT NULL DEFAULT '',
      `key` varchar(128) NOT NULL DEFAULT '',
      `blocked` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'internal usage',
      `warnings` int(11) NOT NULL DEFAULT '0',
      `group_id` int(11) NOT NULL DEFAULT '1',
      `viptime` int(11) NOT NULL DEFAULT '0',
      `page_access` int(11) DEFAULT NULL,
      `page_lastday` int(11) DEFAULT NULL,
      `email_new` varchar(255) DEFAULT NULL,
      `email_new_time` int(15) DEFAULT NULL,
      `rlname` varchar(255) DEFAULT NULL,
      `location` varchar(255) DEFAULT NULL,
      `created` int(16) DEFAULT NULL,
      `email_code` varchar(255) DEFAULT NULL,
      `next_email` int(11) DEFAULT NULL,
      `premium_points` int(11) DEFAULT NULL,
      `nickname` char(48) DEFAULT NULL,
      `avatar` char(48) DEFAULT NULL,
      `about_me` text,
      `create_ip` int(11) NOT NULL,
      `create_date` int(11) NOT NULL,
      `last_post` int(11) NOT NULL,
      `flag` int(11) NOT NULL,
      `vip_time` int(15) NOT NULL DEFAULT '0',
      `guild_points` int(15) NOT NULL DEFAULT '0',
      `vote` int(15) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4838 ;
    
    --
    -- Extraindo dados da tabela `accounts`
    --
    
    INSERT INTO `accounts` (`id`, `name`, `password`, `premdays`, `lastday`, `email`, `key`, `blocked`, `warnings`, `group_id`, `viptime`, `page_access`, `page_lastday`, `email_new`, `email_new_time`, `rlname`, `location`, `created`, `email_code`, `next_email`, `premium_points`, `nickname`, `avatar`, `about_me`, `create_ip`, `create_date`, `last_post`, `flag`, `vip_time`, `guild_points`, `vote`) VALUES
    (2, 'kkkkk32515', 'f67870b4480dc562d8ccd0bc85e51e867485d7fd', 0, 1558209029, '', '', 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0),
    (1682, 'adm', '42ef63e7836ef622d9185c1a456051edf16095cc', 90, 1558214143, '[email protected]', '', 0, 0, 1, 0, NULL, NULL, NULL, NULL, '', '', NULL, NULL, NULL, 0, 'Allan harlen', NULL, NULL, 0, 0, 0, 0, 0, 0, 0);
    
    --
    -- Gatilhos `accounts`
    --
    DROP TRIGGER IF EXISTS `ondelete_accounts`;
    DELIMITER //
    CREATE TRIGGER `ondelete_accounts` BEFORE DELETE ON `accounts`
     FOR EACH ROW BEGIN
    	DELETE FROM `bans` WHERE `type` IN (3, 4) AND `value` = OLD.`id`;
    END
    //
    DELIMITER ;

     

  6. O projeto foi comprado a um tempo atrás, open-source client/servidor

    Porem, sem a pasta 'dev-cpp', então eu criei um novo projeto em .DEV, e ao compilar seta alguns erros, minhas duvidas são se seriam erros no código ou erro na configuração do projeto? E se eu deveria incluir uma pasta com arquivos tipo .PO que esta junto nas sources?


    image.png.9b1d1d3320afef46c190e2502353a595.pngimage.thumb.png.3d4b71b1a90c810e28c1ac04715cebf1.png

    image.thumb.png.8c2423bc02101a2f9b489dc9eda121f4.png

    image.png

  7. local config = {
        removeOnUse = "yes",
        usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
        splashable = "no",
        realAnimation = "no", -- make text effect visible only for players in range 1x1
        healthMultiplier = 1.0,
        manaMultiplier = 1.0
    }
    
    config.removeOnUse = getBooleanFromString(config.removeOnUse)
    config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
    config.splashable = getBooleanFromString(config.splashable)
    config.realAnimation = getBooleanFromString(config.realAnimation)
    
    local POTIONS = {
        [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
        [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
        [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 11, 12}, vocStr = "knights and paladins"}, -- strong health potion
        [7591] = {empty = 7635, splash = 2, health = {450, 550}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
        [8473] = {empty = 7635, splash = 2, health = {860, 890}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion
    
        [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion
        [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
        [7590] = {empty = 7635, splash = 7, mana = {350, 410}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion
    
        [8472] = {empty = 7635, splash = 3, health = {360, 450}, mana = {350, 390}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
    }
    
    local storageCoolDown = 6547 -- Valor da Storage,
    local storageTime = 5 -- Tempo em Segundos
    
    function onUse(cid, item, fromPosition, itemEx, toPosition)
        local potion = POTIONS[item.itemid]
        if(not potion) then
            return false
        end
    
        if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
            if(not config.splashable) then
                return false
            end
    
            if(toPosition.x == CONTAINER_POSITION) then
                toPosition = getThingPos(item.uid)
            end
    
            doDecayItem(doCreateItem(2016, potion.splash, toPosition))
            doTransformItem(item.uid, potion.empty)
            return true
        end
    
        if player:getStorageValue(storageCoolDown) < os.time() then
            player:setStorageValue(storageCoolDown, os.time() + storageTime * 1000)
            combat:execute(creature, var)
    
            addEvent(function()
                combat:execute(creature, var)
            end, time_between_hits * 1000)
        else
            player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Você deve aguardar no mínimo " .. storageTime .. " segundos antes de utilizar esse feitiço.")
            return false
        end
    
        return true
    end
    
        if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and
            not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))
        then
            doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
            return true
        end
    
        local health = potion.health
        if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
            return false
        end
    
        local mana = potion.mana
        if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
            return false
        end
    
        doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
        if(not realAnimation) then
            doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
        else
            for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
                if(isPlayer(tid)) then
                    doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
                end
            end
        end
    
      doRemoveItem(item.uid, 1)
         doPlayerAddItem(cid, potion.empty, 1)
        return true
    end

     

  8. testa assim

     

     function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60001 then
    if getPlayerStorageValue(cid,60001) == -1 then
     
    
    getContainerSize(uid) => 10 then -- 10 representa a quantidade de espaços necessarios
    local bag = doPlayerAddItem(cid,12764,1) -- Mude para o ID da BP
    doPlayerSendTextMessage(cid,25,"Voce completou a quest")
    doAddContainerItem(bag,12634,1) -- ID dos itens dentro do bau
    doAddContainerItem(bag,12664,1)
    doAddContainerItem(bag,12683,1)
    doAddContainerItem(bag,12697,1)
    doAddContainerItem(bag,12698,1)
    doAddContainerItem(bag,12716,1)
    doAddContainerItem(bag,12757,1)
    doAddContainerItem(bag,2672,100)
    doAddContainerItem(bag,12775,100)
    doAddContainerItem(bag,12776,100)
     
    setPlayerStorageValue(cid,60001,1)
    else
    doPlayerSendTextMessage(cid,25,"Voce ja pegou o item ou tem espaço insuficiente na sua mochila, são necessarios 10 Slots para essa quest")
    end
    return true
    end
    end

     

  9. Estou com o tempo bem apertado, mas pode usar isso como base


    Servidor/mods/nome.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <mod name="Double Exp Global" enabled="yes" author="MatheusMkalo/Tio Rusher" forum="Xtibia/Tibia King">
    
    <!-- Configuração -->
    <config name="PotionExpConfigs"><![CDATA[
    
    ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
    configs = {
    time = 720, ---- Tempo em minutos
    needpa = FALSE, 
    needlvl = {FALSE, level = 1},
    costmana = {FALSE, mana = 1},
    addrate = 100, -- Exp que vai adicionar em %
    removeonuse = TRUE
    }
    
    function getTime(s)
    local n = math.floor(s / 60)
    s = s - (60 * n)
    return n, s
    end
    
    CreatureEventChecker = function(event, ...)
    if isCreature(arg[1]) then
    event(unpack(arg))
    end
    end
    
    creatureEvent = function(event, delay, ...)
    addEvent(CreatureEventChecker, delay, event, unpack(arg))
    end
    
    function getPlayerExtraExpRate(cid)
    return (getPlayerRates(cid)[8]-1)*100
    end
    ]]></config>
    
    <!-- exppotion.lua -->
    <action itemid="7440" event="script"><![CDATA[ -- ID do item
    domodlib('PotionExpConfigs')
    if getPlayerStorageValue(cid, 62164) >= 1 then
    doRemoveItem(item.uid, 1)
    return broadcastMessage("Um Double Exp foi ativado, e bla bla bla", MESSAGE_STATUS_CONSOLE_BLUE)
    end
    
    if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce precisa ser uma conta premmium para usar este item.")
    end
    
    if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce precisa do nivel " .. configs.needlvl.level .. " para usar este item")
    end
    
    if configs.costmana[1] then
    if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce precisa " .. configs.costmana.mana .. " mana para usar este item")
    else
    doCreatureAddMana(cid, -configs.costmana.mana)
    end
    end
    
    if configs.removeonuse then
    doRemoveItem(item.uid, 1)
    end
    
    for i = configs.time*60, 1, -1 do
    local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
    if #a < 4 then
    a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
    end
    if i == configs.time*60 then
    creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "O efeito do Elexir do Conhecimento se esgotou")
    end
    creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O Efeito do Elixir do conhecimento expira em: "..a.."minutos")
    end
    
    doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
    creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
    doPlayerSendTextMessage(cid, 22, "Agora voce esta sob o efeito do Elixir do conhecimento e ganhara double exp")
    setPlayerStorageValue(cid, 62164, os.time())
    caixinha = creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
    return TRUE
    ]]></action>
    
    <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
    domodlib('PotionExpConfigs')
    local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then
    doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
    creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
    creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)
    
    for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do
    local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
    if #a < 4 then
    a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
    end
    if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then
    creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "O Efeito do Elixir do conhecimento chegou ao fim")
    end
    creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "O Efeito do Elixir do conhecimento expira em: "..a.." minutos")
    end
    end
    return TRUE
    ]]></creaturescript>
    </mod>

     

  10. data/creaturescripts/scripts
     

    local key = 500000 -- numero da storage 
    
    function onDeath(cid, corpse, deathList)
    local killer = deathList[1]
    if not isPlayer(killer) then
    	return true
    end
    
    doCreatureSetStorage(killer, key, 1)
    doPlayerSendTextMessage(killer, MESSAGE_INFO_DESCR, "Voce acaba de matar o grande ".. getCreatureName(cid) .."e realizou a conquista Morte Colossal, Parabéns!")
    return true
    end

     

    creaturescripts.xml

    <event type="death" name="onDeathStorage" event="script" value="ondeath_storage.lua"/>


    No arquivo XML da criatura
     

    <script>
    <event name="onDeathStorage"/>
    </script>

     

  11. Bom dia

    Base com as mesmas sprites do pxg provavelmente não vai encontrar amigo, mas tem um grande leque de bases disponiveis, as mais atualizadas provavelmente seriam as que foram postadas mais recentemente, disponiveis aqui
     
    A respeito da segunda pergunta.. sim, é extremamente demorado e dificil fazer um Servidor sozinho, (ao menos algo bem feito é claro), pois é composto por varias coisas, ex: scripts, sprites, mapas, site, sistemas, etc

  12. Glr, em teoria o nickname nao deveria ficar no ultimo quadrado(32x32) do lado direito da sprite? aqui aparentemente nao esta automatico, mas sim setado para o nick ser criado em uma posição exata..

    A área vermelha é o tamanho exato da sprite, entao o texto(nick) deveria ficar a cima dela..
    Qual parte dos codigos é responsavel por isso?
    image.thumb.png.13a173c1f933228689f7c5054e18d5e8.png
     

    Sem alterar a source nao teria como pegar a posição do nick, e adicionar uma borda a mais via module?

  13. XML

    
    <globalevent name="UpdateOfert" time="18:54" event="script" value="atualizaShop.lua"/>



    LUA

    function onTimer()
    		db.executeQuery('DELETE FROM shop_offer WHERE id = 1')
    		db.executeQuery('INSERT INTO shop_offer (`id`, `points`, `category`, `type`, `item`, `count`, `description`, `name`) VALUES (1, 299, 2, 8, 19244, 1, "Ao abrir o Addon Box, voce encontrara um Addon eleatorio", "Addon Box"')
    		return true	
    end

     

    PRINT
    image.thumb.png.26ed0885771f04127fefadc7f78c9dbb.png


    Testei assim tbm, mas da na mesma
     

    function onTimer()
    		db.executeQuery('DELETE FROM shop_offer WHERE id = 1')
    		db.executeQuery("INSERT INTO shop_offer (`id`, `points`, `category`, `type`, `item`, `count`, `description`, `name`) VALUES (1, 299, 2, 8, 19244, 1, 'Ao abrir o Addon Box, voce encontrara um Addon eleatorio', 'Addon Box'")
    		return true	
    end

     

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo