Ir para conteúdo

Vodkart

Herói
  • Total de itens

    3406
  • Registro em

  • Última visita

  • Dias Ganhos

    113

Tudo que Vodkart postou

  1. function onSay(cid, words, param, channel) local sto,lvl,days = 399710,150,1 if getPlayerStorageValue(cid, sto) >= 1 then doPlayerSendCancel(cid, "Voce ja testou a sua VIP.") return true elseif getPlayerLevel(cid) < lvl then doPlayerSendCancel(cid, "Voce precisa ser level "..lvl.." para ganhar vip test") return true end vip.addVipByAccount(getPlayerAccount(cid) ,vip.getDays(tonumber(days))) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Foram adicionados "..tonumber(days).." dias de vip.") setPlayerStorageValue(cid, sto, 1) return true end
  2. http://www.xtibia.com/forum/topic/177979-level-protection/
  3. 1° script name.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local pos,topos = {x = 446, y = 1392, z = 5},{x = 450, y = 1397, z = 5} local x = getTopCreature(pos).uid if x > 0 then doSendMagicEffect(pos, CONST_ME_POFF) doTeleportThing(x, topos) doSendMagicEffect(topos, CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid == 9825 and 9826 or 9825) return true end actons.xml <action actionid="7778" script="script name.lua"/> 2° oq vai ser removido além do item para sala ser aberta? o item q vc fala é uma porta ou uma parede? 2° function onUse(cid, item, fromPosition, itemEx, toPosition) local id,pos,x = 1050,{x=160, y=58, z=7, stackpos = 1},true if getTileItemById(pos, id).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(pos).uid,1) else doCreateItem(id, 1, pos) end doBroadcastMessage("".. (x == true and "A sala de atendimentos foi aberta" or "A sala de atendimentos foi fechada") .."") doTransformItem(item.uid, item.itemid == 9825 and 9826 or 9825) return true end id -- id da item que vai ser removido e criado pos -- onde o item vai estar só
  4. resolvido por msn, é pq o server dele era sql ai tinha que ser outra query local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") abraços
  5. @up ok @leoxtibia me manda seu msn q eu vejo onde vc configuro errado, ai te dou suporte por lá
  6. sei, é porque você não copio ela toda, só uma parte.
  7. edited-- me esqueci de colocar por ponto, mas é simples só colocar uma variável na tabela de task '-' --edited2 resolvido vc vai colocar a variável chamada de points, exemplo: ["minotaur mage"] = {storage = 91001,count = 12,points = 1, exp = 1000,reward = {{2656,1},{7730,1},{2152,20}}}, ai vc adc ela em todas ok? points = ?? -- quanto de pontos ela vai dar ao terminar a task ---------------------------------------- na SimpletaskLib.lua vc adc isso: storage_rank_task = 200154 function getRankStorage(cid, value, max, RankName) -- by vodka local str ="" str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n" local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > max then break end str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str) end em creaturescript/script taskcount.lua vc usa essa: function onKill(cid, target) if(isMonster(target) == TRUE) then local n = getCreatureName(target) local name_monster = tasktabble[string.lower(n)] if(name_monster) then local contagem = getPlayerStorageValue(cid, name_monster.storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > name_monster.count then return true end setPlayerStorageValue(cid, name_monster.storage, contagem+1) if contagem == name_monster.count then doPlayerSendTextMessage(cid, 18, "Congratulations! You finished the task of "..n) if getPlayerStorageValue(cid, storage_rank_task) == -1 then setPlayerStorageValue(cid, storage_rank_task, 0) end setPlayerStorageValue(cid, storage_rank_task, getPlayerStorageValue(cid, storage_rank_task)+name_monster.points) end end end return TRUE end e em talkactions task_complete.lua vc usa essa: function onSay(cid, words, param) if param == "rank" then getRankStorage(cid, storage_rank_task, 10, "Rank Task") return true end local str = "" str = str .. "Task Completed :\n\n" for k, v in pairsByKeys(tasktabble) do local contagem = getPlayerStorageValue(cid, v.storage) if (contagem == -1) then contagem = 1 end str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n" end str = str .. "" return doShowTextDialog(cid, 8983, str) end ai só usar !task rank -- ver rank dos jogadores na task !task -- para ver a suas lista de task obs: Para atualizar o seu lugar no rank da task o jogador deve relogar, porque é uma query, abraços
  8. é põe como jhon falou, esqueci do return false flw
  9. local spellConfig = { {effect = 49, area = createCombatArea({ {1, 1, 1}, {1, 2, 1}, {1, 1, 1}}) }, {effect = 21, area = createCombatArea({ {1, 1, 0, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 2, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 0, 1, 1}}) }, {effect = 31, area = createCombatArea({ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}}) }, {effect = 39, area = createCombatArea({ {1, 0, 1, 0, 1}, {0, 1, 1, 1, 0}, {0, 1, 2, 1, 0}, {0, 1, 1, 1, 0}, {1, 0, 1, 0, 1}}) }, {effect = 31, area = createCombatArea({ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}}) }, {effect = 49, area = createCombatArea({ {1, 1, 0, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 2, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 0, 1, 1}}) } } local combats = {} for k, config in ipairs(spellConfig) do combats[k] = createCombatObject() onTargetTile = function(cid, pos) local basePos = getThingPosition(cid) local fromPos = {x=basePos.x-6, y=basePos.y-8, z=basePos.z} doSendDistanceShoot(fromPos, pos, 30) end setCombatCallback(combats[k], CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatParam(combats[k], COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combats[k], COMBAT_PARAM_EFFECT, config.effect) setCombatFormula(combats[k], COMBAT_FORMULA_LEVELMAGIC, -0.250, -650, -0.250, -650) setCombatArea(combats[k], config.area) end local function castingSpellTime(p) if(isCreature(p[1]) == TRUE) then doCombat(unpack(p)) end end function onCastSpell(cid, var) if vip.hasVip(cid) == FALSE then doPlayerSendCancel(cid, "Desculpe,Só jogadores vips usam está magia.") else for k, combat in ipairs(combats) do addEvent(castingSpellTime, (100*k), {cid, combat, var}) end end return true end
  10. Muito generosa da sua parte, rep + pela iniciativa! parabéns safadénha
  11. tem que editar as source! Player.ccp bool Player::canWalkthrough(const Creature* creature) const { if(!creature) return true; if(creature == this) return false; const Player* player = creature->getPlayer(); if(!player) return false; if(g_game.getWorldType() == WORLD_TYPE_NO_PVP && player->getTile()->ground && player->getTile()->ground->getID() != ITEM_GLOWING_SWITCH) return true; uint32_t protectionLevel = g_config.getNumber(ConfigManager::PROTECTION_LEVEL); if(player->getLevel() < protectionLevel && player->getTile()->ground && player->getTile()->ground->getID() != ITEM_GLOWING_SWITCH) return true; return player->isGhost() && getGhostAccess() < player->getGhostAccess(); } ou esse código: bool Player::canWalkthrough(const Creature* creature) const { if(!creature) return true; if(creature == this) return false; const Player* player = creature->getPlayer(); if(!player) return false; if(g_game.getWorldType() == WORLD_TYPE_NO_PVP && player->getTile()->ground && player->getTile()->ground->getID() != ITEM_GLOWING_SWITCH) return true; return player->isGhost() && getGhostAccess() < player->getGhostAccess(); } abraços
  12. essa cid na função RemoveAll é totalmente desnecessária : function RemoveAll() for _, pid in pairs(getPlayersOnline()) do doRemoveCreature(pid, true) end end addEvent(RemoveAll, 10000)
  13. global events/script script.lua function onThink(interval, lastExecution) local config = { days = {"Sunday", "Tuesday", "Friday"}, storage = 102590, hours = 24 } if isInArray(config.days, os.date("%A")) and getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+config.hours*60*60) doBroadcastMessage("sua exp rate agr foi aumentada em 50% por "..config.hours.." horas! Aproveite.") end return true end globalevents.xml <globalevent name="ExpBonus" interval="60" event="script" value="script.lua"/> creaturescript/script script.lua function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end creaturescript.xml <event type="kill" name="ExpBonus" event="script" value="script.lua"/> creaturescript/script/login.lua adc registerCreatureEvent(cid, "ExpBonus") Ai você pode melhorar o script com textos de mensagens com tempo de quanto falta para acabar o bônus pq to sem saco pra faze, etc... Obs: já está configurado para dar 50% de extra exp para os jogadores, e sim, é com stages (: flw
  14. automático? não entendi.Mas como eu tenho o sistema do dota aqui irei te passar: http://www.sendspace.com/file/zdf3qf https://www.virustotal.com/file/15901d214e460dd6ec00745f86cc28da998677829624b5c4fce0e57338a4fa91/analysis/1333074302/
  15. acho que não são os if... eu acho que você ultrapassou o limite de variáveis locais, que no caso é 60
  16. Vodkart

    Remove Frags

    function onUse(cid, item, fromPosition, item2, toPosisition) if getCreatureSkullType(cid) < 3 then return doPlayerSendCancel(cid,"You don't remover your frags and skulls.") elseif getTilePzInfo(getCreaturePosition(cid)) == FALSE then return doPlayerSendCancel(cid,"você precisa estar em protection zone.") elseif getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then return doPlayerSendCancel(cid,"Você precisa estar sem battler.") end db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ")") doCreatureSetSkullType(cid, 0) doCreatureSay(cid, "Your frags and skulls is cleaned!", 19) doSendMagicEffect(getPlayerPosition(cid), 26) doRemoveItem(item.uid, 1) return TRUE end
  17. porque o jhon em mapping? ele ajuda na área de script... OTServe/Scripting
  18. só usar doBroadcastMessage("msg")
  19. function onUse(cid, item, frompos, item2, topos) local config = { porta_fechada = 12193, -- id door locked porta_aberta = 12194, -- id open door mlevel = 10 } if getPlayerMagLevel(cid) < config.mlevel then return doPlayerSendCancel(cid, "vc precisa de "config.mlevel.." para passar aqui.") elseif item.itemid == config.porta_fechada then doTransformItem(item.uid,config.porta_aberta) elseif item.itemid == config.porta_aberta then doTransformItem(item.uid,config.porta_fechada) end return TRUE end
  20. você tem que ir em movements.xml por exemplo essa armor: <movevent type="Equip" itemid="8870" slot="armor" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="8870" slot="armor" event="function" value="onDeEquipItem"/> está configurado para voc 1,5,2,6 usarem se vc quiser colocar para knight tbm usar vc colocaria assim: <movevent type="Equip" itemid="8870" slot="armor" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> <vocation id="4"/> <vocation id="8" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="8870" slot="armor" event="function" value="onDeEquipItem"/>
  21. rsrs, não vai esperar 4 horas né? coloca lá só para testar 60 ou 120 segundos '-'
  22. está tudo certo, testei no meu servidor 8.54 e 8.60 e funcionou deve ser por causa da versão do seu servidor =[
  23. creaturescript/script time_item.lua function onLogin(cid) registerCreatureEvent(cid, "Time_Login") registerCreatureEvent(cid, "Time_Logout") setPlayerStorageValue(cid, 45751, os.time()+0) return true end function onLogout(cid) setPlayerStorageValue(cid, 45751,0) return true end creaturescript.xml <event type="login" name="Time_Login" event="script" value="time_item.lua"/> <event type="logout" name="Time_Logout" event="script" value="time_item.lua"/> globalevents/script items_time.lua function onThink(interval) local config = { hours = 4, items = {{2173,1},{2160,50},{2494,1}} } for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, 45751) - os.time() <= -3600*config.hours then local r = config.items[math.random(#config.items)] doPlayerAddItem(cid, r[1], r[2] or 1) doPlayerSendTextMessage(cid, 19, "você ganhou um "..r[2].." "..getItemNameById(r[1])..", próximo prêmio em "..config.hours.." horas") setPlayerStorageValue(cid, 45751, os.time()+0) end end return true end globalevents.xml <globalevent name="TimeItem" interval="60" event="script" value="items_time.lua"/>
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...