Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 04/25/11 em todas áreas

  1. [Talka/CS]Ganhe cash ao matar.

    Dark Skalltow e 2 outros reagiu a thalia por uma resposta no tópico

    3 pontos
    Nome: Ganhe cash ao matar alguem. Versão: Testada tfs 0.3.6 (8.54), provavelmente funfa em 8.54 + Créditos: Eu e para o demonbholder por me ajudar a fazer a lista. Como funciona? Quando você mata um player você ganha 100 cash (Pode ser alterado no script), e falano: ~~> /buy nome_do_item (Exemplo: /buy plate armor), você automaticamente comprara o item. ~~> /buy list, você vera os itens que pode ser comprados e o preço deles. ~~> /buy check, verifica quantos de cash você tem. Instalando o sistema ! 1ª: Entre na pasta data/creaturescripts/scripts, e crie um arquivo chamado cash.lua, cole este código dentro: function onKill(cid, target, lastHit) local cash = 150 -- O tanto de cash que ira ganhar ao matar o player if isPlayer(cid) and isPlayer(target) then if getPlayerIp(target) ~= getPlayerIp(cid) then setPlayerStorageValue(cid, 45550, (getPlayerStorageValue(cid, 45550)+cash)) end end return TRUE end 2ªa: Agora em creaturescripts/creaturescripts.xml bote a tag: <event type="kill" name="Kill_Cash" event="script" value="cash.lua"/> 2ªb:Agora em creaturescripts/scripts , localize login.lua (antes do ultimo return true) e cole isto dentro: registerCreatureEvent(cid, "Kill_Cash") 3ª:Voltando em data/talkactions/scripts crie um arquivo com o nome de cash.lua e cole isto dentro: -- Script by: thalia -- local item = { ["plate armor"] = {cash=150, id=2463, amount=1}, ["plate legs"] = {cash=150, id=2647, amount=1}, } function onSay(cid, words, param) itens = item[param] if param == "check" then return doPlayerSendTextMessage(cid,19,'Your total cash is '..getPlayerStorageValue(cid, 45550)..'.') elseif param == "list" then str = nil for name, tab in pairs(item) do str = str == nil and "Item name: "..name.." - Price: "..tab.cash .. "\n" or str .. "Item name: "..name.." - Price: "..tab.cash .. "\n" end doShowTextDialog(cid, 2160, str) return true end if (itens ~= nil) then if getPlayerStorageValue(cid, 45550) >= itens.cash then doSendMagicEffect(getThingPos(cid),28) doPlayerAddItem(cid,itens.id,itens.amount) setPlayerStorageValue(cid, 45550, (getPlayerStorageValue(cid,45550)-itens.cash)) return doPlayerSendTextMessage(cid,19,'Your total cash now is '..getPlayerStorageValue(cid, 45550)..'.') else return doPlayerSendCancel(cid,"Sorry, cash insufficient.") end else return doPlayerSendCancel(cid,"Sorry, this item is not for sale.") end return TRUE end 4ª:Agora em talkactions/talkactions.xml bote está tag: <talkaction log="yes" words="/buy" access="0" event="script" value="cash.lua"/> Prontinho, script istalado... Ai vocês me pergunta: Como adicionar mais itens? E eu respondo: Simples Nesta parte: È só adicionar: BOM È ISSO COMENTEM O QUE ACHARAM! È só fazer isso um em baixo do outro.
  2. [NPC] Apostador de Vegas

    frank007 e um outro reagiu a thalia por uma resposta no tópico

    2 pontos
    Nome: NPC Apostador Las Vegas Versão: Testada na 8.54, mais provavelmente funfa 8.5+ Créditos: 100% by me (: Como "fanuncia"? È um npc de apostar, ele possuiu "por inquanto" dois jogos 21 e Jogo dos 6. ~~> Explicando o 21 <~~ O 21 funciona assim: Você ira ganhar 1 número e o número tem quer ser 21, ou chegar o mais próximo possível sem ultrapassar esse valor. E a mesma coisa será feita com o npc, ele ganhará 1 número. Você pode ir comprando mais números dizendo [comprar] e se quiser parar é só dizer [parar]. Se seu número for maior que o do npc, você leva o triplo do dinheiro apostado. ~~> Explicando o Jogo do 6 <~~ O Jogo do 6 funciona assim: O npc vai rodar um dado, e se cair no número 6 você ganha o sêxtuplo (6 vezes) do valor apostado. Caso não caia no 6, você perde apenas o dinheiro da aposta. Legal né? Instalando o npc -> Vá até a pasta data/npc e crie um arquivo xml com o nome lasvegas.xml e cole esse codigo dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Apostador" script="data/npc/scripts/apostador_la.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="96" body="95" legs="0" feet="95" addons="0"/> <parameters> <parameter key="message_greet" value="Como vai? |PLAYERNAME|, Quer {apostar} comigo?" /> <parameter key="module_keywords" value="1" /> </parameters> </npc> -> Vá até a pasta data/npc/scripts e crie um arquivo lua com o nome apostador_la.lua e cole esse codigo dentro: -- Preços das apostas -- price_21 = 1000 -- 1k ou 1000gold price_jogo6 = 5000 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'apostar')) then selfSay('Eu faço 2 jogos: {21},{Jogo do 6} escolha um deles!', cid) talkState[talkUser] = 5 elseif (msgcontains(msg, 'Jogo do 6') and talkState[talkUser] == 5) then selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no número 6 você ganha o sêxtuplo (6 vezes) do valor apostado.', cid) selfSay('Caso não caia no 6, você perde apenas o dinheiro da aposta.', cid) selfSay('Está pronto para {começar}?.', cid) talkState[talkUser] = 3 elseif(msgcontains(msg, 'começar') and talkState[talkUser] == 3) then selfSay('Você possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid) if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then talkState[talkUser] = 2 else selfSay('Desculpe, mais você não tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then sorteio6 = math.random(1,6) if sorteio6 == 6 then talkState[talkUser] = 3 selfSay('Parábens, o número sorteado foi 6 e você acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que você pagou da aposta.',cid) doPlayerAddMoney(cid,price_jogo6*6) else talkState[talkUser] = 2 selfSay('Que azar, o número sorteado foi '..sorteio6..', mais sorte na proxima.',cid) end elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then selfSay('O 21 funciona assim: Você ira ganhar 1 número e o número tem quer ser 21, ou chegar o mais próximo possível sem ultrapassar esse valor.', cid) selfSay('E a mesma coisa será feita comigo, ganharei 1 número.', cid) selfSay('Você pode ir comprando mais números dizendo [comprar] e se quiser parar é só dizer [parar].', cid) selfSay('Se você ganhar de mim, você leva o triplo do dinheiro apostado.', cid) selfSay('Está pronto para {começar}?.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'começar') and talkState[talkUser] == 0) then selfSay('Você possui o {dinheiro} da aposta ('..price_21..')golds ?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then if doPlayerRemoveMoney(cid, price_21) == TRUE then talkState[talkUser] = 0 local mpn = math.random(1,21) setPlayerStorageValue(cid, 55411,mpn) local pn = getPlayerStorageValue(cid, 55411) selfSay('Seu número é '..pn..', quer comprar mais ou parar?',cid) else selfSay('Desculpe, mais você não tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then local cp = math.random(1,10) setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp) selfSay('Seu número é '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then local npcn = math.random(15,21) setPlayerStorageValue(cid, 2224, npcn) if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224)then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) selfSay('Ganhei, mais sorte na proxima vez.',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) selfSay('Empato, portanto ninguem ganha nada.',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) then selfSay('Meu número é '..getPlayerStorageValue(cid, 2224)..'.',cid) selfSay('Seu número final é '..getPlayerStorageValue(cid, 55411)..'.',cid) local somag = (price_21*3) selfSay('Você ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parábens !!!',cid) doPlayerAddMoney(cid, somag) doPlayerAddMoney(cid, price_21) talkState[talkUser] = 1 else selfSay('Desculpe, mais você não possui dinheiro está aposta',cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Pronto, npc instalado. Qualquer dúvida, tamo ae. Gostou? REP +
  3. [Talkaction] Twitter System

    1215171 e um outro reagiu a Demonbholder por uma resposta no tópico

    2 pontos
    E ai, primeiro post aqui. Vou postar um sistema que eu fiz um tempo atrás, como o título já diz é um twitter no OtServer, não tem nada a ver com o site. Como funciona: É tipo um twitter, eu nunca usei o twitter ai não sei como funciona ele direito, mas eu fiz algo do tipo. Você fala !twitt Blablabla e é adicionada ao seu Twitter no Ot, ai para ver os Twitts dos outros é só falar !follow NomeDoJogador e ver seus twitts. function onSay(cid, words, param) if words == "!twitt" then if getGlobalStorageValue(30070) == -1 then db.executeQuery("ALTER TABLE `players` ADD twits TEXT NOT NULL DEFAULT twitter;") setGlobalStorageValue(30070, 1) end if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. getPlayerGUID(cid) .. ";") local sentense = datas:getDataString("twits") .. "\n" .. tostring(param) .. " " .. os.date("%c") db.executeQuery("UPDATE `players` SET `twits` = '".. sentense .. "' WHERE `id` = ".. getPlayerGUID(cid) .. ";") return TRUE end end if words == "!follow" then if param == "" then doPlayerSendCancel(cid, "Param required.") doSendMagicEffect(getCreaturePosition(cid), 2) else local id = playerExists(tostring(param)) and getPlayerGUIDByName(tostring(param)) or getPlayerGUID(cid) local datas = db.getResult("SELECT `twits` FROM `players` WHERE `id` = ".. id .. ";") local name = id == getPlayerGUID(cid) and getCreatureName(cid) or param doShowTextDialog(cid, 2160, name .. " " .. datas:getDataString("twits")) end end return TRUE end Lembrando que é um Twitter no OtServer, não tem nada a ver com o site. Tag: <talkaction words="!twitt;!follow" script="NomeDoArquivo.lua" /> Servidor Testado: New Styller Yourots 0.7.5 É isso, até mais.
  4. [Resolvido] [URGENTE] Reverse WPT

    Google e um outro reagiu a Guilherme. por uma resposta no tópico

    2 pontos
    http://bit.ly/gU6Rst http://bit.ly/h91IRQ Vê se serve...
  5. [LUA] Lista de funções

    allanzinh reagiu a thalia por uma resposta no tópico

    1 ponto
    [LUA] Lista De Funções Esta lista contêm todas ou quase todas as funções LUA do The Forgotten Server 1. Funções #get getCreatureHealth(cid) getCreatureMaxHealth(cid) getCreatureMana(cid) getCreatureMaxMana(cid) getCreatureMaster(cid) getCreatureSummons(cid) getCreatureOutfit(cid) getCreaturePosition(cid) getCreatureName(cid) getCreatureSpeed(cid) getCreatureBaseSpeed(cid) getCreatureTarget(cid) getCreatureByName(name) getCreatureSkullType(cid) getCreatureCondition(cid, condition[, subId]) getCreatureNoMove(cid) getMonsterInfo(name) getMonsterHealingSpells(name) getMonsterAttackSpells(name) getMonsterLootList(name) getMonsterTargetList(cid) getMonsterFriendList(cid) getPlayerByNameWildcard(name~) getPlayerLossSkill(cid) getPlayerLossPercent(cid, lossType) getPlayerGUIDByName(name[, multiworld]) getPlayerNameByGUID(guid[, multiworld]) getPlayerFood(cid) getPlayerLevel(cid) getPlayerExperience(cid) getPlayerMagLevel(cid[, ignoreBuffs]) getPlayerSpentMana(cid) getPlayerAccess(cid) getPlayerSkillLevel(cid, skillid) getPlayerSkillTries(cid, skillid) getPlayerTown(cid) getPlayerVocation(cid) getPlayerRequiredMana(cid, magicLevel) getPlayerRequiredSkillTries(cid, skillId, skillLevel) getPlayerItemCount(cid, itemid) getPlayerSoul(cid) getPlayerAccountId(cid) getPlayerAccount(cid) getPlayerIp(cid) getPlayerFreeCap(cid) getPlayerLight(cid) getPlayerSlotItem(cid, slot) getPlayerWeapon(cid[, ignoreAmmo]) getPlayerItemById(cid, deepSearch, itemId[, subType]) getPlayerDepotItems(cid, depotid) getPlayerGuildId(cid) getPlayerGuildName(cid) getPlayerGuildRank(cid) getPlayerGuildNick(cid) getPlayerGuildLevel(cid) getPlayerSex(cid) getPlayerLookDir(cid) getPlayerStorageValue(uid, valueid) getPlayerGUID(cid) getPlayerFlagValue(cid, flag) getPlayerCustomFlagValue(cid, flag) getPlayerPromotionLevel(cid) getPlayerGroupId(cid) getPlayerLearnedInstantSpell(cid, name) getPlayerInstantSpellCount(cid) getPlayerInstantSpellInfo(cid, index) getPlayerSex(cid) getPlayerBlessing(cid, blessing) getPlayerStamina(cid) getPlayerExtraExpRate(cid) getPlayerPartner(cid) getPlayerParty(cid) getPlayerPremiumDays(cid) getPlayerBalance(cid) getPlayerRedSkullTicks(cid) getPlayerRates(cid) getInstantSpellInfo(cid, name) getPlayersByAccountId(accountNumber) getPlayersByIp(ip[, mask = 0xFFFFFFFF]) getPlayersOnline() getPartyMembers(lid) getAccountIdByName(name) getAccountByName(name) getAccountIdByAccount(accName) getAccountByAccountId(accId) getIpByName(name) getItemRWInfo(uid) getItemDescriptionsById(itemid) getItemWeightById(itemid, count[, precise]) getItemDescriptions(uid) getItemWeight(uid[, precise]) getItemAttack(uid) getItemExtraAttack(uid) getItemDefense(uid) getItemExtraDefense(uid) getItemArmor(uid) getItemAttackSpeed(uid) getItemHitChance(uid) getItemShootRange(uid) getItemIdByName(name[, reportError]) getItemLevelDoor(itemid) getItemWeaponType(uid) getFluidSourceType(type) getContainerSize(uid) getContainerCap(uid) getContainerCapById(itemid) getContainerItem(uid, slot) getDepotId(uid) getTileItemById(pos, itemId[, subType]) getTileItemByType(pos, type) getTileThingByPos(pos) getTileInfo(pos) getTopCreature(pos) getClosestFreeTile(cid, targetpos[, extended[, ignoreHouse]]) getThingFromPos(pos) getThing(uid) getThingPos(uid) getHouseOwner(houseid) getHouseName(houseid) getHouseEntry(houseid) getHouseRent(houseid) getHousePrice(houseid) getHouseTown(houseid) getHouseAccessList(houseid, listid) getHouseByPlayerGUID(playerGUID) getHouseFromPos(pos) getHouseTilesSize(houseid) getTownId(townName) getTownName(townId) getTownTemplePosition(townId) getTownHouses(townId) getWorldType() getWorldTime() getWorldLight() getWorldCreatures(type) //0 players, 1 monsters, 2 npcs, 3 all getWorldUpTime() getHighscoreString(skillId) getVocationInfo(id) getGuildId(guildName) getGuildMotd(guildId) getSpectators(centerPos, rangex, rangey, multifloor) getSearchString(fromPosition, toPosition[, fromIsCreature[, toIsCreature]]) getWaypointPosition(name) getGameState() getNotationsCount(accId) getBanData(value) getBanList(type[, value]) getBanReason(id) getBanAction(id[, ipBanishment]) getGlobalStorageValue(valueid) getExperienceStage(level) getConfigFile() getConfigValue(key) getLogsDir() getDataDir() 2. Funções #set setCreatureMaxHealth(cid, health) setCreatureMaxMana(cid, mana) setPlayerStorageValue(uid, valueid, newvalue) setPlayerGroupId(cid, newGroupId) setPlayerPromotionLevel(cid, level) setPlayerStamina(cid, minutes) setPlayerExtraExpRate(cid, value) setPlayerPartner(cid, guid) setHouseOwner(houseid, ownerGUID) setHouseAccessList(houseid, listid, listtext) setItemName(uid) setItemPluralName(uid) setItemArticle(uid) setItemAttack(uid, attack) setItemExtraAttack(uid, extraattack) setItemDefense(uid, defense) setItemArmor(uid, armor) setItemExtraDefense(uid, extradefense) setItemAttackSpeed(uid, attackspeed) setItemHitChance(uid, hitChance) setItemShootRange(uid, shootRange) setCombatArea(combat, area) setCombatCondition(combat, condition) setCombatParam(combat, key, value) setConditionParam(condition, key, value) setCombatCallBack(combat, key, function_name) setCombatFormula(combat, type, mina, minb, maxa, maxb) setConditionFormula(combat, mina, minb, maxa, maxb) setGlobalStorageValue(valueid, newvalue) setWorldType(type) 3. Funções #do doCreatureAddHealth(cid, health[, force]) doCreatureAddMana(cid, mana) doCreatureSetDropLoot(cid, doDrop) doCreatureSetSkullType(cid, skull) doCreatureSetLookDir(cid, dir) doCreatureChangeOutfit(cid, outfit) doCreatureSay(cid, text, type[, pos]) doCreatureSetNoMove(cid, cannotMove) doSetCreatureLight(cid, lightLevel, lightColor, time) doSetCreatureOutfit(cid, outfit, time) doRemoveCreature(cid) doMoveCreature(cid, direction) doConvinceCreature(cid, target) doChallengeCreature(cid, target) doChangeSpeed(cid, delta) doSummonMonster(name, pos) doCreateMonster(name, pos) doMonsterChangeTarget(cid) doMonsterSetTarget(cid, target) doCreateNpc(name, pos) doSetMonsterOutfit(cid, name, time) doPlayerBroadcastMessage(cid, message[, type]) doPlayerSetSex(cid, newSex) doPlayerSetTown(cid, townid) doPlayerSetVocation(cid,voc) doPlayerRemoveItem(cid, itemid, count[, subtype]) doPlayerAddExp(cid, exp) doPlayerSetGuildId(cid, id) doPlayerSetGuildRank(cid, rank) doPlayerSetGuildNick(cid, nick) doPlayerAddOutfit(cid,looktype, addons) doPlayerRemoveOutfit(cid,looktype, addons) doPlayerSetRedSkullTicks(cid, amount) doPlayerSetLossPercent(cid, lossType, newPercent) doPlayerSetLossSkill(cid, doLose) doPlayerAddSkillTry(cid, skillid, n) doPlayerAddSpentMana(cid, amount) doPlayerAddSoul(cid, soul) doPlayerAddItem(uid, itemid[, count/subtype[, canDropOnMap]]) doPlayerAddItemEx(cid, uid[, canDropOnMap]) doPlayerSendTextMessage(cid, MessageClasses, message) doPlayerSendChannelMessage(cid, author, message, SpeakClasses, channel) doPlayerSendToChannel(cid, targetId, SpeakClasses, message, channel[, time]) doPlayerAddMoney(cid, money) doPlayerRemoveMoney(cid, money) doPlayerWithdrawMoney(cid, money) doPlayerDepositMoney(cid, money) doPlayerTransferMoneyTo(cid, target, money) doPlayerPopupFYI(cid, message) doPlayerSendTutorial(cid, id) doPlayerAddMapMark(cid, pos, type[, description]) doPlayerAddPremiumDays(cid, days) doPlayerAddBlessing(cid, blessing) doPlayerAddStamina(cid, minutes) doPlayerResetIdleTime(cid) doPlayerLearnInstantSpell(cid, name) doPlayerUnlearnInstantSpell(cid, name) doPlayerFeed(cid, food) doPlayerSendCancel(cid, text) doPlayerSendDefaultCancel(cid, ReturnValue) doPlayerSetExperienceRate(cid, value) doPlayerSetMagicRate(cid, value) doPlayerSetSkillRate(cid, skill, value) doPlayerJoinParty(cid, lid) doPlayerSendOutfitWindow(cid) doCreateItem(itemid, type/count, pos) doCreateItemEx(itemid[, count/subtype]) doAddContainerItemEx(uid, virtuid) doAddContainerItem(uid, itemid[, count/subtype]) doChangeTypeItem(uid, newtype) doDecayItem(uid) doRemoveItem(uid[, n]) doTransformItem(uid, toitemid[, count/subtype]) doSetItemActionId(uid, actionid) doSetItemText(uid, text[, writer[, date]]) doSetItemSpecialDescription(uid, desc) doSetItemOutfit(cid, item, time) doTileAddItemEx(pos, uid) doTileQueryAdd(uid, pos[, flags]) doAddCondition(cid, condition) doRemoveCondition(cid, type[, subId]) doRemoveConditions(cid[, onlyPersistent]) doAreaCombatHealth(cid, type, pos, area, min, max, effect) doTargetCombatHealth(cid, target, type, min, max, effect) doAreaCombatMana(cid, pos, area, min, max, effect) doTargetCombatMana(cid, target, min, max, effect) doAreaCombatCondition(cid, pos, area, condition, effect) doTargetCombatCondition(cid, target, condition, effect) doAreaCombatDispel(cid, pos, area, type, effect) doTargetCombatDispel(cid, target, type, effect) doCombat(cid, combat, param) doTeleportThing(cid, newpos[, pushmove]) doCreateTeleport(itemid, topos, createpos) doSendMagicEffect(pos, type[, creature]) doSendDistanceShoot(frompos, topos, type[, creature]) doSendAnimatedText(pos, text, color[, creature]) doShowTextDialog(cid, itemid, text) doRelocate(pos, posTo) doBroadcastMessage(message, type) doWaypointAddTemporial(name, pos) doSetGameState(id) doAddIpBanishment(ip[, length[, comment[, admin]]]) doAddNamelock(name[, reason[, action[, comment[, admin]]]]) doAddBanishment(accId[, length[, reason[, action[, comment[, admin]]]]]) doAddDeletion(accId[, reason[, action[, comment[, admin]]]]]) doAddNotation(accId[, reason[, action[, comment[, admin]]]]]) doRemoveIpBanishment(ip[, mask]) doRemoveNamelock(name) doRemoveBanisment(accId) doRemoveDeletion(accId) doRemoveNotations(accId) doSaveServer() doReloadInfo() doCleanHouse(houseId) doCleanMap() doRefreshMap() 4. Funções #is isCreature(cid) isMonster(uid) isNpc(uid) isPlayer(cid) isPlayerPzLocked(cid) isItemStackable(itemid) isItemRune(itemid) isItemMovable(itemid) isItemDoor(itemid) isItemContainer(itemid) isItemFluidContainer(itemid) isContainer(uid) isCorpse(uid) isMovable(uid) isSightClear(fromPos, toPos, floorCheck) isIpBanished(ip[, mask]) isPlayerNamelocked(name) isAccountBanished(accId) isAccountDeleted(accId) isInArray({array}, value) 5. Outras funções registerCreatureEvent(uid, eventName) createCombatArea({area}[, {exArea}]) createConditionObject(type[, ticks[, buff[, subId]]]) addDamageCondition(condition, rounds, time, value) addOutfitCondition(condition, lookTypeEx, lookType, lookHead, lookBody, lookLegs, lookFeet) createCombatObject() numberToVariant(number) stringToVariant(string) positionToVariant(pos) targetPositionToVariant(pos) variantToNumber(var) variantToString(var) variantToPosition(var) canPlayerWearOutfit(cid, looktype, addons) executeRaid(name) addEvent(callback, delay, ...) stopEvent(eventid) hasProperty(uid) 6. Funções #db table db.executeQuery(query) db.storeQuery(query) db.escapeString(str) db.escapeBlob(s, length) db.stringComparisonOperator() 7. Funções #result table result.getDataInt(resId, s) result.getDataLong(resId, s) result.getDataString(resId, s) result.getDataStream(resId, s, length) result.next(resId) result.free(resId) 8. Funções #bit table #bit.cast bit.bnot(n) bit.band(type, n) bit.bor(type, n) bit.bxor(type, n) bit.lshift(type, n) bit.rshift(type, n) #bit.arshift #bit.ucast bit.ubnot(n) bit.uband(type, n) bit.ubor(type, n) bit.ubxor(type, n) bit.ulshift(type, n) bit.urshift(type, n) #bit.uarshift 9. Funções iguais table.getPos = table.find doSetCreatureDropLoot = doCreatureSetDropLoot doPlayerSay = doCreatureSay doPlayerAddMana = doCreatureAddMana playerLearnInstantSpell = doPlayerLearnInstantSpell doPlayerRemOutfit = doPlayerRemoveOutfit pay = doPlayerRemoveMoney broadcastMessage = doBroadcastMessage getPlayerName = getCreatureName getPlayerPosition = getCreaturePosition getCreaturePos = getCreaturePosition creatureGetPosition = getCreaturePosition getPlayerMana = getCreatureMana getPlayerMaxMana = getCreatureMaxMana hasCondition = getCreatureCondition isMoveable = isMovable isItemMoveable = isItemMovable saveData = saveServer savePlayers = saveServer getPlayerSkill = getPlayerSkillLevel getPlayerSkullType = getCreatureSkullType getAccountNumberByName = getAccountIdByName getIPByName = getIpByName getPlayersByIP = getPlayersByIp getThingfromPos = getThingFromPos getPlayersByAccountNumber = getPlayersByAccountId getIPByPlayerName = getIpByName getPlayersByIPNumber = getPlayersByIp getAccountNumberByPlayerName = getAccountIdByName convertIntToIP = doConvertIntegerToIp convertIPToInt = doConvertIpToInteger queryTileAddThing = doTileQueryAdd getTileHouseInfo = getHouseFromPos executeRaid = doExecuteRaid saveServer = doSaveServer cleanHouse = doCleanHouse cleanMap = doCleanMap shutdown = doShutdown mayNotMove = doCreatureSetNoMove doPlayerSetNoMove = doCreatureSetNoMove getPlayerNoMove = getCreatureNoMove getConfigInfo = getConfigValue 10. Funções #lua-made doPlayerGiveItem(cid, itemid, amount, subType) doPlayerTakeItem(cid, itemid, amount) doPlayerBuyItem(cid, itemid, count, cost, charges) doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges) doPlayerSellItem(cid, itemid, count, cost) isInRange(pos, fromPos, toPos) isPremium(cid) getMonthDayEnding(day) getMonthString(m) getArticle(str) isNumber(str) getDistanceBetween(firstPosition, secondPosition) doPlayerAddAddons(cid, addon) isSorcerer(cid) isDruid(cid) isPaladin(cid) isKnight(cid) isRookie(cid) getDirectionTo(pos1, pos2) getPlayerLookPos(cid) getPosByDir(fromPosition, direction, size) getPlayerMoney(cid) doPlayerWithdrawAllMoney(cid) doPlayerDepositAllMoney(cid) doPlayerTransferAllMoneyTo(cid, target) playerExists(name) getTibiaTime() doWriteLogFile(file, text) isInArea(pos, fromPos, toPos) getExperienceForLevel(lv) doMutePlayer(cid, time) getPlayerVocationName(cid) getPromotedVocation(vid) doPlayerRemovePremiumDays(cid, days) getPlayerMasterPos(cid) getItemNameById(itemid) getItemPluralNameById(itemid) getItemArticleById(itemid) getItemName(uid) getItemPluralName(uid) getItemArticle(uid) getItemText(uid) getItemWriter(uid) getItemDate(uid) getTilePzInfo(pos) getTileZoneInfo(pos) debugPrint(text) doShutdown() doSummonCreature(name, pos) getOnlinePlayers() getPlayerByName(name) isPlayerGhost(cid) getPlayerFrags(cid) getPartyLeader(cid) isInParty(cid) isPrivateChannel(channelId) doConvertIntegerToIp(int, mask) doConvertIpToInteger(int, mask) getBooleanFromString(str) doCopyItem(item, attributes) exhaustion.check(cid, storage) exhaustion.get(cid, storage) exhaustion.set(cid, storage, time) exhaustion.make(cid, storage, time) table.find(table, value) table.isStrIn(txt, str) table.countElements(table, item) table.getCombinations(table, num) string.split(str) string.trim(str) string.explode(str, sep) OBS: 90% Créditos ao Sukx e 10% a mim por trazer ao TibiaKing e formatar o texto.
  6. [Gesior Acc] Deathknight Template

    Guilherme. reagiu a Renato por uma resposta no tópico

    1 ponto
    Um template recente, por tanto vocês provavelmente nunca viram. E é bem bonito em... eu mesmo adorei. Criador: Aleh Compatibilidade: Gesior Acc http://www.speedysha...deathknight.rar" title="Download do arquivo!" target="_blank"> LINK QUEBRADO. Atualizarei quando encontrar de novo este layout para upar. Paciência
  7. Treinando com slime

    Faahsz reagiu a Renato por uma resposta no tópico

    1 ponto
    Parte Teórica: Iremos trocar o nome da slime mãe, e com o cave bot iremos colocar este nome trocado na lista de "ignore monsters", assim não atacando-o. Colocaremos para que você só ataque se o bixo te atacar, no caso, vai atacar aquele slime summon que chegar do seu lado. Iremos também, retirar o auto follow para evitar mortes. (alguem da exeta res e você com o bixo atacado follow mode irá seguir, ele da target lost e você de bot morre com vários slimes á volta). Com food você deixará treinando ML com mana burning assim impedindo o anti-kick de 15 minutos. Com o esquema montado você está pronto para deixar treinando e ir dormir! Parte Prática: 1 - Abra seu Tibia Auto. 2 - Clique em Creature info, e em Name Changer troque o nome da slime mãe, não esqueça de ativar "battlelist only" para que só apareça os monstros da sua lista de battle, pois ele sempre aparece de todos os andares podendo ter outros slimes. 3 - Sua slime mãe está com o nome trocado. Veja: 1 - Entre no Cave Bot por Auto Attack. 2 - Em monster attacking selecione na lista de "monsters to attack" o monstro "slime" e na lista do ignore monsters o nome da slime mãe. (Atenção, SlimeMother da imagem foi o nome que EU ESCOLHI, se você trocou por um nome diferente, ponha em ignore monsters o nome que você trocou!) 3 - Não esqueça de dar Enable! 1 - Em AFK Tools, ative Food Eater e só, ele já vai comer food sózinho. Em seguida clique em Spell Caster e selecione a aba Mana Burning, ponha a mana para usar a magia e em baixo a magia (aconselho exura para magia para curar-se dos possíveis hits dos slimes) PRONTO - DEIXE TREINANDO! Seu char matou a slime mãe? Possíveis erros: Você não trocou o nome da slime mãe. Você não pois o nome da sua slime mãe na lista de ignore monsters. Ele está atacando slimes de fora impedindo eu treinar. Possível erro: Você esqueceu de ativar "attack only monsters attack you". O char matou o Slime normal, mas este era a mãe! Possível erro: Você trocou o nome do slime summon e não o da mãe. Meu char não está atacando os slimes! Possíveis erros: Você selecionou slime em ignore também. Você esqueceu de dar Enable no Cave Bot. Outros erros pergunte neste tópico. Créditos: Imagens, Texto & Resto: Renato Ribeiro
  8. Como Compilar um OpenTibia no Linux

    Augusto reagiu a Froostiin por uma resposta no tópico

    1 ponto
    Como Compilar um OpenTibia no Linux Requerimentos * lualib5.1 * libboost * libmysql++ * autoconf * automake * subversion * make * g++ apt-get install lua5.1 liblua5.1-0 liblua5.1-0-dev libboost-dev libboost-regex-dev libboost-thread-dev libmysql++-dev libgmp3-dev libxml2 libxml2-dev libxml++2.6-dev subversion autoconf automake make g++ Para executar o comando acima, você deve estar como root, ou utilize o comando "sudo" antes do apt-get. Download das Sources Primeiro, você tem que criar os diretórios do otserv, abra o terminal e digite os comandos: mkdir ~/otserv cd ~/otserv Agora para baixar os os arquivos atualizados do projeto via SVN: svn checkout https://opentibia.svn.sourceforge.net/svnroot/opentibia/otserv/trunk Após baixar os arquivos, mude de diretório cd ~/otserv/trunk Execute o autogen: ./autogen.sh Checando se esta ok para compilar: Para versão MYSQL ./configure --enable-mysql Para versão SQLite: ./configure --enable-sqlite Para versão XML: ./configure Caso algum erro, verifique se o gcc esta instalado, caso negativo, de um "apt-cache gcc" Se tudo estiver dado certo até agora, sem erros, vamos compilar, digite o comando: make Se ouver algum problema, digite: make clean make Deu certo? Vamos compilar! Mova o "config.lua" dentro do diretório mkdir ~/.otserv/ mv config.lua.dist ~/.otserv/config.lua Execute o ot com o comando: ./otserv Aparecera +/- assim: demo@demo-desktop:~/otserv/otserv$ ./otserv :: OTServ Version 0.5.0 :: ==================== :: :: Initializing the random numbers... [done] :: Loading lua script config.lua... [done] :: Loading RSA key...[done] I/O warning : failed to load external entity "data/bans.xml" :: Loading bans... [done] :: Loading data/spells/spells.xml... [done] :: Loading data/actions/actions.xml... [done] :: Loading data/commands.xml... [done] :: Loading data/items/items.otb... [done] :: Loading data/monsters/monsters.xml... [done] :: Worldtype: PVP :: Loading map from: OTBM Map size: 5000x5000 Map description: Created by Subarmy, Nuker and Thax Map description: SimOne MapEditor 0.4.49 Notice: [OTBM Loader] Loading time : 0.325 s I/O warning : failed to load external entity "data/world/map-housestore.xml" I/O warning : failed to load external entity "data/world/map-mapstore.xml" :: :: Running on host pekay-desktop :: Local IP address(es): 127.0.0.1 :: Global IP address: 127.0.0.1 :: :: Starting Server... [done] :: OpenTibia Server Running... Espero ajudar alguns otserv que queiram deichar seu projeto mais sério, pois o linux é mais estavel e MUITO melhor que o Windows para servidores, então, quem for ter um otserv sério, deverá aprender Linux. Créditos : OTServList Google Translate
  9. Função Say para o Tibia (Sem TibiaAPI)

    rahim901 reagiu a DragonBoss por uma resposta no tópico

    1 ponto
    Falaaa galera x.x Tentando dar uma continuidade à programação para tibia sem uso de tibiaapi, vo postar uma função aqui (meio que 'gambiarra', mas, funciona)... No outro tutorial eu expliquei um pouco sobre leitura de memoria.. esse aqui não tem muito a ver, mas, complementa aquele pra quem quer fazer bot sem TibiaAPI x.X Primeira observação: As funções são declaradas abaixo do implementation, e ae podem ser usadas somente completando os argumentos delas... como de costume, minhas funções usam argumentos simples. Segunda observação: Essa função vai digitar letra por letra da mensagem e depois dar um enter. Função Say: function say(mensagem: string):string; var h: HWND; letra: Integer; B: Byte; begin h := FindWindow(nil, 'tibia'); for letra := 1 to Length(mensagem) do begin B := Byte(mensagem[letra]); SendMessage(h, WM_CHAR, B, 0); end; SendMessage(h, WM_CHAR, 13, 0); end; Analisando a função: H = janela do tibia. Mensagem = mensagem que a função vai digitar no tibia. as variáveis Letra e B trabalharam assim: a letra vai de 1 até a quantia de caracteres da mensagem, e o B se torna o byte da letra a ser enviada... e ele envia com a API SendMessage (é uma API do windows, e NÃO tem nada a ver com TibiaAPI ). No fim temos: SendMessage(h, WM_CHAR, 13, 0); Isso será responsável por apertar um Enter após ele terminar de digitar a mensagem ( 13 = VK_return = Enter ). Olhando a primeira linha, vemos como podemos usa-la: function say(mensagem: string):string; Ou seja, é só usar assim: Say('mensagem aqui'); ou com um edit: Say(edit1.text); Pode usar de diversas formas, desde que ele trabalhe com uma string =] Segue em Anexo a source de um projeto somente com a função, e um exemplo de usa-la, com um edit e um botão (você digita a mensagem no edit, e clica no botão.. e ele envia pro tibia \o/ ).... Flw galera, abraços... Sei que tá bem simples, mas, espero que ajude vocês. _____________________________________________________________ Usando Função Say.rar
  10. Comprando Summon

    Renato reagiu a Demonbholder por uma resposta no tópico

    1 ponto
    Fala galera, uma talk que eu fiz esses tempos e vou postar aqui. Como funciona: Você deve criar os monstros e depois adiciona-los ao script para poderem ser comprados. Palavras: !summon - Sumona o seu summon por certo tempo gastando uma certa quantidade de soul, caso você tenha comprado ele já.. !buysummon - Compra o summon por um preço. !sellsummon - Vende o summon por metade do preço que você comprou ele. !offer - Checa as ofertas de summons a venda. Talkaction: function onSay(cid, words, param) local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local offert = "" if words == "!summon" then if getPlayerStorageValue(cid, 22000) ~= -1 then if #getCreatureSummons(cid) == 0 then if getPlayerSoul(cid) >= buyprice[getPlayerStorageValue(cid, 22000)].soul then doSummonPet(cid, getPlayerStorageValue(cid, 22000), buyprice[getPlayerStorageValue(cid, 22000)].seconds) doPlayerSendTextMessage(cid, 4, "Você usou seu summon, dentro de ".. buyprice[getPlayerStorageValue(cid, 22000)].seconds .." ele irá ser removido.") doPlayerAddSoul(cid, - (buyprice[getPlayerStorageValue(cid, 22000)].soul)) else doPlayerSendCancel(cid, "Você não tem soul suficiente.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode mais sumonar.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você ainda não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!buysummon" then if param ~= "" then if getPlayerStorageValue(cid, 22000) == -1 then if getPlayerMoney(cid) >= buyprice[string.lower(param)].price then setPlayerStorageValue(cid, 22000, string.lower(param)) doPlayerSendTextMessage(cid, 4, buyprice[string.lower(param)].message) doPlayerRemoveMoney(cid, buyprice[string.lower(param)].price) else doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar este summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Escolha o summon a ser comprado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!sellsummon" then if getPlayerStorageValue(cid, 22000) ~= -1 then doPlayerAddMoney(cid, (buyprice[getPlayerStorageValue(cid, 22000)].price)*5/10) doPlayerSendTextMessage(cid, 4, "Summon vendido com sucesso.") setPlayerStorageValue(cid, 22000, -1) else doPlayerSendCancel(cid, "Você não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!offer" then for name, _ in pairs(buyprice) do offert = offert == "" and "Summons: \n\n" .. name .. " " .. buyprice[name].price or offert .. "\n" .. name .. " " .. buyprice[name].price end doShowTextDialog(cid, 2160, offert) end return TRUE end Adicione o script acima em data/talkactions/scripts. Tag: <talkaction words="!summon;!buysummon;!sellsummon;!offer" script="NomeDoArquivo.lua" /> Como adicionar mais monstros ao comando: function doSummonPet(cid, name, time) if isMonster(getCreatureByName(name)) then local sum = doSummonMonster(cid, name) if type(time) == "number" then addEvent(doRemovePet, time*1000, cid, name) end else return error("Creature not found!") end end function doRemovePet(cid, name) for y, x in ipairs(getCreatureSummons(cid)) do if isCreature(x) then if string.lower(getCreatureName(x)) == name then doRemoveCreature(x) break end end end end Adicione isso em data/lib/functions para que funcione. É isso, até mais. Funções:
  11. O que está errado no macro ???

    Userie reagiu a Puncker por uma resposta no tópico

    1 ponto
    Tente isso:
  12. [Resolvido] TugBot para 8.72

    Odintrack reagiu a Arthur por uma resposta no tópico

    1 ponto
    Sim, quando sair será atualizado no fórum. Resolvido.
  13. Criando seu tibia bot com TibiaAPI - Parte 3

    1027929 reagiu a Renato por uma resposta no tópico

    1 ponto
    Criando seu tibia bot com TibiaAPI - Parte 3 {Desenvolvendo com TibiaAPI} Depois de ter injetado a DLL como referência começaremos a desenvolver nosso Bot! O Design: Primeiro de tudo vamos criar o Loader, para que possamos carregar nosso char e o bot funcione. No form1, ponha um combobox e um botão escrito Start, ou OK, ou Entrar, ou Abrir Bot, enfim, o que você achar melhor. Se preferir também ponha uma frase para que o player saiba o que fazer. (eu puis: Escolha seu personagem...) segue a foto: Códigos vbnet! Agora vamos partir para os códigos. Os códigos do loader não são complicados. Basta usar a lógica para intender. Na parte á direitas vá em Solution Explorer, clique com botão direito em cima do Form1 e depois em View Code. Ai estará todos os códigos do Form1. Se você não modificou nada, vai estar assim: Public Class Form1 End Class [/code] [b][color=#800080][size=4]Importanto do TibiaAPI[/size][/color][/b] Então terá as duas abas no seu programa, a Form1.vb que é o codigo e a Form1.vb [Designer] que é o design obviamente. No code antes de Public Class Form1, ponha isto: [code]Imports Tibia Imports Tibia.Util Imports Tibia.Objects Imports Tibia.Constants Isto é para importar do DLL, para o resto funcionar. Declarando as Variáveis client e player Então logo depois, vamo definir as variáveis, para nos ajudar a longo do programa Após Public Class Form1, ponha: Public c as client Public p as player[/code] Aqui você declarou que c é Client e p é Player. Em tutoriais pela net você pode encontrar funções com client.Map.. etc, pois eles declararam "Dim client as client" então mude para c.Map... etc O código ficará: [code]Imports Tibia Imports Tibia.Util Imports Tibia.Objects Imports Tibia.Constants Public Class Form1 Public c As Client Public p As Player End Class Form1_Load - Seu char no combobox. Volte no design e clique duas vezes no seu programa (em qualquer parte, menos no botão e no combobox). Verá que foi acrescentado um "Private Sub" no code (o que é isso? R: não te interessa agora). Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub [/code] Você abriu um evento para o Form1 que é o Load, ou seja, tudo que estará ai será executado quando o programa for carregado (quando abrir). Então ponha este código no Form1_Load: [code] For Each cl In Client.GetClients ComboBox1.Items.Add(cl) Next Só entender inglês e usar a lógica para entender o código. Para cara cl em client.GetClients Adiciona o item cl no ComboBox1, Next é o que fecha o For Each. Carregando seu Bot Volte para o designer e clique duas vezes no botão. Aparecerá este code: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub [/code] Reparem que não é mais _Load e sim _Click. Pois o evento será executado quando o botão for clicado e não carregado. Então ponha dentro do Private Sub: [code] Form2.Show() Mas pera ai, "mostrar form2"? Mas nem criamos o form2! Sim, isto é o que veremos no próximo tutorial O código final ficou assim: Imports Tibia Imports Tibia.Util Imports Tibia.Objects Imports Tibia.Constants Public Class Form1 Public c As Client Public p As Player Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each cl In Client.GetClients ComboBox1.Items.Add(cl) Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() End Sub End Class [/code] Seu form2 ficara sublinhado com erro pois ainda não existe. Aguarde. Até mais guys!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo