Tudo que DukeeH postou
-
Account Manager
Como eu disse, account manager não é algo que você vai achar e alterar facilmente. Se você quer muito trocar teria que trocar a distro, mas sobre criar o char junto da account acredito que todos os account managers façam isso.
-
Bloquear Elfbot
Então procure como diminuir o tempo que o tfs leva para calcular o proximo ataque que é de 500ms por padrão. Se você bloquear o bot como esta dizendo, a attackspeed de todo mundo vai ficar 500, ou menos só quando andarem...
-
Account Manager
Isso ai vem direto da distro, você provavelmente não vai conseguir adicionar, só se trocar sua distro por uma que ja vem com ele. Mas acredito que normalmente elas venham com um igual, eu pelo menos nunca precisei criar conta depois char, sempre fiz direto.
-
baiak 10.9
É 10.1, mas ele ja é compativel com a parte de scripts que falei, apenas usar um executavel 10.90 nesse servidor e vai provavelmente funcionar.
-
[PEDIDO] script pra entregar item no jogo
globalevents/scripts/shop.lua -- ### CONFIG ### -- message send to player by script "type" (types you can check in "data/lib/000-constants.lua") SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE -- time (in seconds) between queries to MySQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM `z_ots_comunication` WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_container, "tid", id) local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') doPlayerSave(cid) db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return true end globalevents/globalevents.xml <globalevent name="website_shop_item_delivery" interval="30000" event="script" value="shop.lua"/> Agora compre um item no shop e ele será entregue em até 30 segundos no char escolhido, automaticamente.
-
(Resolvido)bug cassino urgente
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local function delayMoneyRemoval(item, pos) doRemoveItem(getTileItemById(pos, item).uid) return true end local function placeMoney(amount, table_middle_pos) local remain = amount local crystal_coins = 0 local platinum_coins = 0 if (math.floor(amount / 10000) >= 1) then crystal_coins = math.floor(amount / 10000) remain = remain - crystal_coins * 10000 end if ((remain / 100) >= 1) then platinum_coins = remain / 100 end addEvent(doCreateItem, 550, 2152, platinum_coins, table_middle_pos) addEvent(doCreateItem, 600, 2160, crystal_coins, table_middle_pos) end local function rollDice(roll, cc_count, pc_count, table_left_pos, table_middle_pos, npc) local dice_ids = {5792, 5793, 5794, 5795, 5796, 5797} local random_rollval = math.random(1,6) local total_g = (10000 * cc_count) + (100 * pc_count) local prize_percent = 1.0 -- 80% if ((total_g) <= 500000 and (total_g) >= 10000) then doSendMagicEffect(table_left_pos, CONST_ME_CRAPS) for _, itemId in pairs(dice_ids) do if(getTileItemById(table_left_pos, itemId).uid > 0) then doTransformItem(getTileItemById(table_left_pos, itemId).uid, dice_ids[random_rollval]) end end if (roll == 1 and random_rollval <= 3) then placeMoney(total_g + (total_g * prize_percent), table_middle_pos) addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doCreatureSay, 500, npc, "Acertou mizeravi!", TALKTYPE_SAY, false, 0) elseif (roll == 2 and random_rollval >= 4) then placeMoney(total_g + (total_g * prize_percent), table_middle_pos) addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doCreatureSay, 500, npc, "You win!", TALKTYPE_SAY, false, 0) else addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_BLOCKHIT) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_BLOCKHIT) addEvent(doCreatureSay, 500, npc, "Errou mizeravi!", TALKTYPE_SAY, false, 0) end doCreatureSay(npc, string.format("%s rolled a %d.", getCreatureName(npc), random_rollval), TALKTYPE_ORANGE_1, false, 0, table_left_pos) else addEvent(doCreateItem, 100, 2160, cc_count, table_middle_pos) addEvent(doCreateItem, 150, 2152, pc_count, table_middle_pos) doCreatureSay(npc, "The minimum wager is 10K and the maximum wager is 500K.", TALKTYPE_SAY, false, 0) end return true end function creatureSayCallback(cid, type, msg) -- NPC userdata instance local npc = getNpcCid() -- Game table position userdata instances local table_left_pos = {x = 147, y = 57, z = 7} -- Pos da frente do Npc onde gira o dado local table_middle_pos = {x = 148, y = 57, z = 7} -- Pos do meio onde vai o dinheiro -- Search for coins on the left and middle tables and create item userdata instances local table_middle_cc = getTileItemById(table_middle_pos, 2160) local table_middle_pc = getTileItemById(table_middle_pos, 2152) -- Other variables local cc_count = 0 local pc_count = 0 local ROLL, LOW, HIGH = 0, 1, 2 posplayer = {x=149, y=56, z=7} -- Pos onde o player precisa estar local ppos = getPlayerPosition(cid) if ppos.x == posplayer.x and ppos.y == posplayer.y then if isInArray({"H", "HIGH", "high", "h"}, msg) then ROLL = HIGH elseif isInArray({"L", "LOW", "l", "low"}, msg) then ROLL = LOW else return false end if (table_middle_cc.uid ~= 0) then cc_count = table_middle_cc.type doTeleportThing(table_middle_cc.uid, table_left_pos) addEvent(delayMoneyRemoval, 300, 2160, table_left_pos) end if (table_middle_pc.uid ~= 0) then pc_count = table_middle_pc.type doTeleportThing(table_middle_pc.uid, table_left_pos) addEvent(delayMoneyRemoval, 300, 2152, table_left_pos) end addEvent(rollDice, 500, ROLL, cc_count, pc_count, table_left_pos, table_middle_pos, npc) else return false end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
vocations script
É bem tranquilo editar o vocations... gainmanaticks="3" = Tempo em segundos para ganhar a mana desejada. gainmanaamount="2" = Mana que vai ganhar a cada vez que der o tempo acima. O mesmo funciona para hp, e lembre-se de editar a promotion também.
-
MUDAR VERSÃO
Tecnicamente qualquer versão permite o update... Apenas trocando a distro e tornando os scripts compatíveis.. Mas... O update de 8.6 para 10.9 é BEM complicado. Porque com a mudança do tfs 0.3.6/0.4 para o 1.1, 1.2 (que é o usado no 10.9) a maioria, se não quase todas as funções mudaram, então a maioria dos scripts não vai funcionar. O melhor seria baixar um 10.90 e editar a partir dele, ou usar apenas o seu mapa em um otserv que já é 10.90 e editar a partir dali.
-
baiak 10.9
O update de 8.6 para 10.9 é BEM complicado. Porque com a mudança do tfs 0.3.6/0.4 para o 1.1, 1.2 (que é o usado no 10.9) a maioria, se não quase todas as funções mudaram, então a maioria dos scripts não vai funcionar. O melhor seria baixar o baiak 10.9 que tem aqui e editar, ou pegar o seu mapa e usar em um global/baiak 10.9 e editar com os itens/chão e paredes novos...
-
Bloquear Elfbot
Ela não fica mais rápida que o configurado, ela fica igual o configurado. O the forgotten só checa se o jogador pode atacar a cada 500ms (2 por segundo), para atacar mais rapido que isso apenas andando ou usando bot (o bot tira e coloca o ataque de novo), então para que o elfbot não funcione bote attackspeed em 500 ou multiplos de 500, assim o elfbot e quem não tiver vão atacar igual.
-
(Resolvido)Spear Infinita
weapons.xml procure o id da spear e remova o seguinte: action="removecount"
- (Resolvido)Script Fusao
-
Como deixo um Global Full online?
Tenha bastante RAM, baixe um otserv, configure e abra. "Como configura e abre?" http://www.tibiaking.com/forum/forums/forum/123-come%C3%A7ando-seu-servidor/
-
(Resolvido)Script Fusao
Vamos tentar... Não tenho como testar, e não adicionei a chance ainda. Se funcionar eu adiciono depois, se não eu arrumo os erros depois adiciono. local config = { receita = { 12326, 12325, 12324 }, positions = { {x = EDITAR, y = EDITAR, z = 7, stackpos = 255}, {x = EDITAR, y = EDITAR, z = 7, stackpos = 255}, {x = EDITAR, y = EDITAR, z = 7, stackpos = 255} }, novoItem = {12327, 1} } function onUse(cid, item, fromPosition, itemEx, toPosition) local items = {} for i = 1, #config.positions do local recipe = getThingFromPos(config.positions) if isInArray(config.receita, recipe.itemid) then table.insert(items, recipe) table.remove(config.receita, table.find(config.receita, recipe.itemid)) else local receitatring = "You need ".. getItemArticleById(config.receita[1]) .." ".. getItemNameById(recipe.itemid) for r = 2, #config.receita do receitatring = receitatring ..", ".. getItemArticleById(config.receita[r]) .." ".. getItemNameById(config.receita[r]) end doPlayerSendTextMessage(cid, 22, receitatring ..".") return FALSE end end doPlayerAddItem(cid, unpack(config.novoItem)) doSendMagicEffect(fromPosition, 14) doPlayerSendTextMessage(cid, 22, "You have found ".. config.novoItem[2] .." ".. getItemArticleById(config.novoItem[1]) .. " " .. getItemNameById(config.novoItem[1]) .. ".") return TRUE end
-
(Resolvido)Addon Flor Druid
para a chance ficar 99 é diferente Vou fazer pra você com 50% de chance pra ver. Seguinte, a variavel chance vai receber um valor entre 1 e 100. E embaixo ele vê se essse valor é 1 (1%), então da sucesso, se você mudou pra 50, vai continuar sendo 1%. Colocar mais chance ficaria algo assim: function onUse(cid, item, fromPosition, itemEx, toPosition) local successo = "You got druid addon." --mensagem caso ganhe local falha = "Sorry, you don't got the addon." --mensagem de falha if itemEx.itemid == 5659 then local chance = math.random(1,100) if chance > 50 then doPlayerSendTextMessage(cid, 22, successo) doTransformItem(item.uid, 5937) else doTransformItem(item.uid, 4870) doPlayerSendTextMessage(cid, 22, falha) end doTransformItem(itemEx.uid,5687) end return true end Que ai ele vai sortear um valor entre 1 e 100, e embaixo ele vê se o valor é maior que 50, ai da sucesso, caso o numero seja de 1 a 50 ele da falha.
-
Qual a Melhor Base de Tibia
Não tem muito bem um topico, o melhor a se fazer é baixar direto do github, que ai você vai ter a ultima versão. Tfs: https://github.com/otland/forgottenserver/archive/master.zip Otx: https://github.com/mattyx14/otxserver/archive/otxserv3.zip
-
Qual a Melhor Base de Tibia
The Forgotten Server, sem duvidas. Há algum tempo, se não desde sempre. Uma alternativa seria OTX, que é um fork do TFS com algumas (bastante) edições do Matty.
-
Change name
Criar changename.php na pasta www/pages. <?php if(!defined('INITIALIZED')) exit; $changeNameCost = 600; if($logged) { if($account_logged->getCustomField('premium_points') >= $changeNameCost) { if($action == "") { echo '<span style="color:red;font-weight:bold">CHANGE NAME COSTS ' . $changeNameCost . ' PREMIUM POINTS!</span><br />'; echo '<form action="" mathod="post">'; echo '<input type="hidden" name="subtopic" value="changename" />'; echo '<input type="hidden" name="action" value="change" />'; echo '<b>Select player: </b><select name="player_id">'; $account_players = $account_logged->getPlayersList(); foreach($account_players as $player) { echo '<option value="' . $player->getID() . '">' . htmlspecialchars($player->getName()) . '</option>'; } echo '</select><br />'; echo '<b>New name: </b><input type="text" name="new_name" value="" /><br />'; echo '<input type="submit" value="Change name" />'; echo '</form>'; } elseif($action == "change") { $newchar_errors = array(); $newchar_name = ucwords(strtolower(trim($_REQUEST['new_name']))); if(empty($newchar_name)) $newchar_errors[] = 'Please enter a new name for your character!'; if(!check_name_new_char($newchar_name)) $newchar_errors[] = 'This name contains invalid letters, words or format. Please use only a-Z, - , \' and space.'; $check_name_in_database = new Player(); $check_name_in_database->find($newchar_name); if($check_name_in_database->isLoaded()) $newchar_errors[] = 'This name is already used. Please choose another name!'; $charToEdit = new Player($_REQUEST['player_id']); if(!$charToEdit->isLoaded()) $newchar_errors[] = 'This player does not exist.'; if($charToEdit->isOnline()) $newchar_errors[] = 'This player is ONLINE. Logout first.'; elseif($account_logged->getID() != $charToEdit->getAccountID()) $newchar_errors[] = 'This player is not on your account.'; if(empty($newchar_errors)) { echo 'Name of character <b>' . htmlspecialchars($charToEdit->getName()) . '</b> changed to <b>' . htmlspecialchars($newchar_name) . '</b>'; $charToEdit->setName($newchar_name); $charToEdit->save(); $account_logged->setCustomField('premium_points', $account_logged->getCustomField('premium_points') - $changeNameCost); } else { echo 'Some errors occured:<br />'; foreach($newchar_errors as $e) { echo '<li>' . $e . '</li>'; } echo '<br /><a href="?subtopic=changename"><b>BACK</b></a>'; } } } else echo 'You don\'t have premium points. You need ' . $changeNameCost . '.'; } else echo 'You must login first.'; layouts/tibiacom/layout.php copia algum botão e coloca la embaixo em shop e aponta para o arquivo acima.
-
Como mudar Player Spawn ot 10.90
Como é 10.90 você provavelmente esteja usando site, então você tem que editar o townid no www/config/config.php, os townid estão disponiveis no map editor. Não sei se é necessario também editar a posx, posy e posz dos samples.
-
[AJUDA] Como resolver o erro The loaded map appears to be a items.otb format that deviates from the items.otb loaded by the editor. Do you still want to attempt to load the map [YES] [NO] ?
Copia o items.xml e items.otb da pasta do seu ot e cola em: C:/arquivos de programas/remeres map editor/data/versão
-
push player distance
Hmm, minhas sources são diferentes. Faz o seguinte: if(Position::areInRange<1,1,0>(movingCreature->getPosition(), player->getPosition()) && delay > 0 && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { Alterar para: if(Position::areInRange<1,1,0>(movingCreature->getPosition(), player->getPosition()) && delay > 2000 && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { (isso são 2 segundos, alterar para 1000 caso queira 1)
- item.data
- ME AJUDEM PRECISO RESETAR MEU OT!
- ME AJUDEM PRECISO RESETAR MEU OT!
-
Character.php
qual é o item?