-
Total de itens
631 -
Registro em
-
Última visita
-
Dias Ganhos
13
Tudo que jhon992 postou
-
Em "data/globalevensts/globalevents.xml" cola: <globalevent name="raid" interval="18000" event="script" value="raid.lua"/> Ali em interval é o tempo da invação equivalente a segundos, cada 1 minuto = 60 interval. Ou seja, 18000 = 5 horas Na pasta "globalevents/scripts" duplica um arquivo e nomeia para "rad" sem as aspas e nele cola: function onThink(interval, lastExecution, thinkInterval) local pos = {x=2456, y=2462, z=7} -- Posição que monstro vai nascer local monster = "Grynch Clan Goblin" -- Monstro que é pra criar doBroadcastMessage("Ocorreu invação de Grynch Clan Goblin na cidade!") doCreateMonster(monster, pos) return true end Ali em cima edita a posição do respaw e pode editar a mensagem tbm, ou remove a linha da msg. Se quiser mais monstros é sóh ir criando varios arquivos sóh muda os nomes e as tags no globalevents.xml!
- 3 respostas
-
- grynch clan goblins como faze
- tibia
- (e 1 mais)
-
Troca por esse: function onLogin(cid) if (isVip(cid) == true) if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then -- id das vocações que ira voltar doPlayerSetVocation(cid,getPlayerVocation(cid)+4) return TRUE end else if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then -- id das vocações que esta quando vip doPlayerSetVocation(cid,getPlayerVocation(cid)-4) return TRUE end end return TRUE end
-
tenta substituir teus spells.xml por um outro. Vi um cara que fez isso em outro fórum e funcionou, só não tenho o link.
-
Isso aew é na distro do servidor. É no arquivo player.ccp, procura por: void Player::manageAccount(const std::string &text) E por ali tu edita!
-
Sóh muda o script rad.lua: function removeMonster(pid) if (isMonster(pid) == true) then doRemoveCreature(pid) end end function onThink(interval, lastExecution, thinkInterval) local pos = {x=2456, y=2462, z=7} -- Posição que monstro vai nascer local monster = "Morgaroth" -- Boss que é pra criar local tempo = 60000 * 10 -- troque apenas o numero 10, que será o minuto para o monstro sumir doBroadcastMessage("Invação de Morgaroth ao leste da cidade!") pid = doCreateMonster(monster, pos) addEvent(removeMonster, 6000, pid) return true end
-
[Creaturescript] Simple Reputation System !
tópico respondeu ao jhon992 de jhon992 em Globalevents e Spells
Claro que funciona, não fala se tu não sabe usar corretamente! Se tiver dúvida me pergunta, não juga sem saber usar. -
achei esse aqui: http://www.xtibia.com/forum/topic/73983-npc-addon/ sóh que é pra addon 1 e addon2 então vais te que adaptar!
-
Em "data/globalevensts/globalevents.xml" cola: <globalevent name="raid" interval="604800" event="script" value="raid.lua"/> Ali em interval é o tempo da invação equivalente a segundos, cada 1 minuto = 60 interval. Na pasta "globalevents/scripts" duplica um arquivo e nomeia para "rad" sem as aspas e nele cola: function onThink(interval, lastExecution, thinkInterval) local pos = {x=2456, y=2462, z=7} -- Posição que monstro vai nascer local monster = "Morgaroth" -- Boss que é pra criar doBroadcastMessage("Invação de Morgaroth ao leste da cidade!") doCreateMonster(monster, pos) return true end Ali em cima edita o monstro e a posição do respaw e pode editar a mensagem tbm. Se quiser mais monstros é sóh ir criando varios arquivos sóh muda os nomes e as tags no globalevents.xml!
-
Sóh adicionar as tags quest no outfits.xml. Essas números são os storages que o player deve ter para usar essa outfit, assim tu pode for pra ganhar outfit ao falar com npc ou ao completar uma quest e para o player começar com uma certa outfit sóh poem sem essa tag quest. <outfit id="1" quest="40851"> <list gender="0" lookType="129" name="Citizen"/> <list gender="1" lookType="129" name="Citizen"/> </outfit> <outfit id="2" quest="40852"> <list gender="0" lookType="207" name="Knight"/> <list gender="1" lookType="207" name="Knight"/> </outfit> <outfit id="3" quest="40853"> <list gender="0" lookType="213" name="Warrior"/> <list gender="1" lookType="213" name="Warrior"/> </outfit>
-
Existe essa função isVip no teu sistema de vip? se tiver troca esse script por esse mais organizado e manda o erro que der: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "Voce Prescisa De Uma Vip Account Para Acessar Essa Area.", enterMsg = "Bem Vindo a Area Vip", enterEffect = CONST_ME_MAGIC_RED, } if (isPlayer(cid) == true) then if (isVip(cid) == false) then doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerPopupFYI(cid, tileConfig.kickmsg) doPlayerPopupFYI(cid, tileConfig.kickMsg) return TRUE end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return TRUE end end
-
Troca a linha: doPlayerSendTextMessage(cid,21," You opened your Box 1 and received a "..e.nm.."") Por: doCreatureSay(cid, "You opened your Box 1 and received a "..e.nm.."", TALKTYPE_ORANGE_1)
-
[Creaturescript] Simple Reputation System !
tópico respondeu ao jhon992 de jhon992 em Globalevents e Spells
Andei estudando um pouco. E muito obrigado pelo elogio, isso me faz cada vez querer crescer mais! -
Sistema de Rep+ para seu OT : http://www.xtibia.com/forum/topic/173892-creaturescript-simple-reputation-system/
-
[Creaturescript] Simple Reputation System !
tópico respondeu ao jhon992 de jhon992 em Globalevents e Spells
Desculpa aew, nem tinha visto isso, dupliquei a parte ali e esqueci de editar. -
Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação ! Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses. Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk. E o único meio de perder Pontos de Reputação é matando players que não estejam pk. O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Para que Esse Sistema pode ser Útil: Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +) Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -) Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +) Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam: -Entrar em lugares; -Fazer quests; -Usar magias; -Usar outras talkactions; -E várias outras coisas. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora vamos ao que interessa os scripts: Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole: --<Script by jhon992>-- function onKill(cid, target, lastHit) vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+ -- Ao matar monstros do vetMonster, ganhara rep+. for i=0, #vetMonster do if (getCreatureName(target) == vetMonster[i]) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster[i]..".") return TRUE end end -- Ao matar um pk, ganhara rep+. if (isPlayer(target) == true) then if (getCreatureSkullType(target) > 2) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE end Agora em "data/creaturescripts/creaturescripts.xml" cole a tag: <event type="kill" name="RepSystem" event="script" value="repsystem.lua"/> Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag: -- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1, -- Então vamos zera-lo para que sua Reputação comece do 0. if (getPlayerStorageValue(cid, 102087) ~= 1) then setPlayerStorageValue(cid, 102087, 1) setPlayerStorageValue(cid, 102086, 0) end registerCreatureEvent(cid, "RepSystem") Terminamos a parte do Sistema e agora vamos para o talkaction de rank. Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole: function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Reputação\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Pontos | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.") return TRUE end end E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag: <talkaction words="!rep" event="script" value="rankrep.lua"/> Pronto, terminamos o nosso Simple Reputation System! -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Reputation Door----- Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole: function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE end Agora em data/actions/actions.xml cole a tag: <action actionid="2085" script="repDoor.lua"/> E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Quantidade de Reputação para usar determinado item ----- Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole: local quantRep = 30 -- quantidade de reset para usar determinado item function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 102086) < quantRep then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com "..quantRep.." pontos de reputação ou mais, podem usar essa arma!") return FALSE end return TRUE end Agora vai em data/movements/movements.xml abre e adicione a tag: <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemRep.lua"/> Troque os slots na tag acima como desejar, tipos de slots: head armor legs hand shield ring necklace feet pickupable Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Comprar determinado item com Pontos de Reputação ----- Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole: local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true end Agora em data/talkactions/talkactions.xml cole a tag: <talkaction words="!buy" event="script" value="buyrep.lua"/> Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua". Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem". -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Mostrar Reputação no Look (by Vodkart)----- Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole: function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]") end return true end No creaturescripts.xml cole a tag: <event type="look" name="showRep" event="script" value="showrep.lua"/> E no arquivo login.lua, antes do último return true: registerCreatureEvent(cid, "showRep") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Versão 2.0 repsystem.lua ----- Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso: É isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!
-
Primeiro nos "data/items/items.xml" você deve editar os dois rings: <item id="ID DO RING" article="a" name="ring heal"> <attribute key="weight" value="80" /> <attribute key="slotType" value="ring" /> <attribute key="transformEquipTo" value="ID DO RING PISCANDO" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> </item> <item id="ID DO RING PISCANDO" article="a" name="ring heal"> <attribute key="weight" value="100" /> <attribute key="decayTo" value="0" /> <attribute key="transformDeEquipTo" value="2214" /> <attribute key="duration" value="450" /> <attribute key="healthGain" value="1" /> <attribute key="healthTicks" value="1000" /> <attribute key="manaGain" value="4" /> <attribute key="manaTicks" value="1000" /> <attribute key="showduration" value="1" /> </item> Agora vai em "data/movements/movements.xml" e adiciona a tag: <movevent type="Equip" itemid="ID DO RING" slot="ring" event="function" value="onEquipItem"/> <movevent type="Equip" itemid="ID DO RING PISCANDO" slot="ring" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="ID DO RING PISCANDO" slot="ring" event="function" value="onDeEquipItem"/>
-
Problemas Com " Firstskill E Lowlevellock"....help
tópico respondeu ao Denniis de jhon992 em Lixeira Pública
tenta no lugar de reqTries usar a função normal doPlayerAddSkillTry(cid, SKILL_SWORD, getPlayerRequiredSkillTries(cid, SKILL_SWORD, 95)) [29/11/2011 22:34:15] data/creaturescripts/scripts/lowlevellock.lua:4: attempt to call global 'getExperienceForLevel' (a nil value) E se for seguir pela logica, esse erro acima é o mesmo que o primeiro. Então essa função não existe, provavelmente pra concertar tens que criar essa função na libs, ou no distro, ou baixa um distro mais atual que resolve todos seus problemas. -
Entra na pasta do teu otserv, vais achar uma pasta "mods" nela tem um arquivo "buypremium_command" abre ele, dae tu edita ali: days = 90, cost = 10000, maxDays = 360 days = quantidade de dias que compra ao usar o comando. cost = preço por essa quantidade de dias. maxDays = máximo de dias premium que o player pode ter.
-
Problemas Com " Firstskill E Lowlevellock"....help
tópico respondeu ao Denniis de jhon992 em Lixeira Pública
No primeiro a linha errada é essa: doPlayerAddExperience(cid, (getExperienceForLevel(150) - getPlayerExperience(cid))) A função #do certa seria essa: doPlayerAddExp, então: doPlayerAddExp(cid, (getExperienceForLevel(150) - getPlayerExperience(cid))) Já na segunda não tenho certeza mais acho que em todos os getPlayerRequiredMana faltou um espaço para o script poder identificar o valor. Tenta fazer assim, trocar isso: doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid,40))) Por isso: doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, 40))) Ou seja, um espaço após a virgula. Faiz em todos os 3 get e testa o script. -
Acho que isso aqui pode te ajudar: http://www.xtibia.com/forum/topic/126636-lista-de-atribute-keys-para-itensxml/ e para duração: <attribute key="decayTo" value="0" /> <attribute key="duration" value="3600" /> <attribute key="showduration" value="1" />
-
Para tua primeira dúvida, entre no arquivo "data/creaturescripts/scripts/login.lua" e cole isso: if (getPlayerStorageValue(cid, 102522) ~= 1) then doPlayerAddPremiumDays(cid, 3) -- 3 é igual numero de dias setPlayerStorageValue(cid, 102522,1) end E a segunda dúvida, vai em "data/npc" abra o arquivo do seu npc do barco e procure a linha: <parameter key="travel_destinations" value="sul city,2483,2439,7,0;"/> Vou explicar a linha de código acima, no value onde esta sul city seria o nome da sua cidade, {2483,2439,7} é a posição do mapa que o barco vai levar e o último 0 é o preço da passagem. Então basta configurar os zeros no seu npc!
-
tenta usar esse aqui, dei uma configurada. Obs: Não testei! local config = { removeOnUse = "no", 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}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80} -- great spirit potion } local exhaust2 = createConditionObject(CONDITION_EXHAUST_HEAL) setConditionParam(exhaust2, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) 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(getCreatureCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) 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 doAddCondition(cid, exhaust2) local v = getItemParent(item.uid) if(not potion.empty or config.removeOnUse) then return true end if fromPosition.x == CONTAINER_POSITION then for _, slot in ipairs({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}) do local tmp = getPlayerSlotItem(cid, slot) if tmp.itemid == potion.empty and tmp.type < 100 then doChangeTypeItem(item.uid, item.type - 1) return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end else doChangeTypeItem(item.uid, item.type - 1) doCreateItem(potion.empty, 1, fromPosition) return true end if v.uid == 0 then if item.type == 1 and isInArray({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}, fromPosition.y) then doTransformItem(item.uid, potion.empty) else -- serversided autostack should take care of this doPlayerAddItem(cid, potion.empty, 1) doChangeTypeItem(item.uid, item.type - 1) end return true else doChangeTypeItem(item.uid, item.type - 1) local size = getContainerSize(v.uid) for i = 0, size-1 do local tmp = getContainerItem(v.uid, i) if tmp.itemid == potion.empty and tmp.type < 100 then return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end if getContainerSize(v.uid) < getContainerCap(v.uid) then doAddContainerItem(v.uid, potion.empty) else doPlayerAddItem(cid, potion.empty, 1) end end return true end
-
Criei algumas Sprites de armas para meu otserv e resolvi disbonibilizar para vocês! São minhas primeiras Sprites, espero que possam utilizar e aprovar e não só me jugar. Nomes sugestivos: 1º = AK - 47 2º = Mp5 Navy 3º = Elite Beretta 4º = Desert Eagle 5º = Benelli M3 6º = Sniper Rifle 7º = AWP É isso aew, espero ter ajudo e bom proveito!
-
tenta o ultimo script desse tópico aqui quem sabe ajuda: http://www.xtibia.com/forum/topic/173246-spelltransformaganha-skillclubaxesword/
-
Provavelmente tu deve saber que ao trocar a distro, perde-se algumas funções. E essas funções deviam ser utilizadas para o sistema de fly e de surf. A solução agora é migrar para outro sistema de fly e surf ou trocar a distro pela anterior novamente ou achar as funções anteriores para poder adicionar nas sua lib do otserv. Espero ter te dado uma clareada aew!
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.