-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
Falha minha, eu achei que existia um SLOT_SHIELD. Existe apenas para mãos SLOT_LEFT e SLOT_RIGHT. Tente um desses. Abraços.
-
Isso.
-
Sources. Item* Player::getWeapon(bool ignoreAmmo) { if(weapon) return weapon; Item* item = NULL; for(int32_t slot = SLOT_RIGHT; slot <= SLOT_LEFT; ++slot) { if(!(item = getEquippedItem((slots_t)slot)) || item->getWeaponType() != WEAPON_DIST) continue; if(!ignoreAmmo && item->getAmmoType() != AMMO_NONE) { Item* ammoItem = getInventoryItem(SLOT_AMMO); if(ammoItem && ammoItem->getAmmoType() == item->getAmmoType()) { if(g_weapons->getWeapon(ammoItem)) { shootRange = item->getShootRange(); return ammoItem; } } } else if(g_weapons->getWeapon(item)) { shootRange = item->getShootRange(); return item; } } return NULL; } Só editar essa linha. Item* ammoItem = getInventoryItem(SLOT_AMMO); Por essa: Item* ammoItem = (getInventoryItem(SLOT_AMMO) || getInventoryItem(SLOT_SHIELD)); Não testado. Abraços.
-
retireCharactersInArrayString(string, array)
tópico respondeu ao caotic de Oneshot em Mods, funções e outros
Legalzinha, mas dá pra fazer tudo isso com um string.gsub, caotic. function removeCharInString(str, pat) pat = table.concat(pat) str = str:gsub("[".. pat .."]", "") return str end Abração. -
Legalzinha a tua função, SmiX. Não vejo muita aplicações dela em scripts, mas é bom para aprendizado. Abraços. Obs: Teria como parar de usar a descrição do Mock no seu nick?
-
Cara, Barzinho do Éks. "Tudo que não é ligado ao Tibia ou ao OTServ pode ser postado aqui. Compre uma cerveja pelo preço de duas e ganhe a segunda de graça!" E depois quer ficar irritadinho porque está sendo zuado? Poste isso na Discussões, Matérias e Entrevistas que você terá um feedback melhor por lá.
-
Se a sua é funcional, não importa o tamanho. Eu fiz a minha meio gambiarra para só quebrar espaços de strings, ou seja uma string gigante de 30 caracteres sem espaços não quebraria.
-
string.skipline = function(s, l) if string.len(s) > l then local x = string.sub(s, 1, l) local y = string.sub(s, (l + 1), string.len(s)) if string.len(y) > l then y = string.skipline(y, l) end s = x .. string.gsub(y, "%s", "\n", 1) end return s end Vê se funciona legal aí. Abraços.
-
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -8100, 0, -8300, 0) function onCastSpell(cid, var) for i = 1, 2 do doCombat(cid, combat, var) end return true end
-
Olá, DoGoZ. As sources do OtClient vem com o parâmetro CMAKE_BUILD_TYPE configurado como Debug por padrão e é por isso que ele fica com um tamanho de cerca de 70MB. Para que seu cliente fique com um tamanho de 10MB, você precisa configurar como Release no CMake. Abraços.
-
Olá, XTibiano. Utilize com maior frequência a barra de pesquisa do fórum. http://www.xtibia.com/forum/topic/137748-tutorialadicionando-efeitos/ Um grande abraço.
-
Account Manager - Adicionando Escolha de Cidade
tópico respondeu ao Oneshot de Oneshot em Linguagens de Programação
Vou fazer algo sobre as cidades premium assim que eu puder. Abraços. -
Olá, XTibiano. Não trabalhamos com conteúdo relacionado a bots, essa área é apenas para pedidos de scripts Lua para Open Tibia. Seu tópico foi fechado.
- 2 respostas
-
- pedido
- tibiabot ng
-
(e 3 mais)
Tags:
-
Mas você está falando o quê para o Account Manager? 'warlord' ou 'a warlord'? Você tem que falar para o account manager, o que estiver no 'name' da vocação.
-
O account manager só lista vocações onde o id seja igual ao fromvoc. Ou seja se o id da vocação 'warlord' é 13, seu fromvoc também tem que ser 13, e, no arquivo, ele está 9. Abraços.
-
Account Manager - Adicionando Escolha de Cidade
tópico respondeu ao Oneshot de Oneshot em Linguagens de Programação
Este é o problema, não existe uma função nos headers para diferir entre uma cidade premium e uma cidade free. Mas irei desenvolver algo assim que puder sobre isso. Abraços. -
Account Manager - Adicionando Escolha de Cidade
um tópico no fórum postou Oneshot Linguagens de Programação
Account Manager Adicionando "Escolha de Cidade" Fala, minha galera do Éks. Vocês sabem que é minoria servidores que possuem site, uma vez que quando queremos criar um servidor (mais por lazer), é meio que inviável hostear um site junto. Os account makers, assim como são chamados os sites de servidores, dão ao jogador a opção de escolher a cidade que ele vai morar. Já o Account Manager, aquele sistema interno de administração da conta de um jogador, não possue uma opção de escolha de cidade, o que o deixa muito limitado. Principalmente para servidores derivados, onde é quase que necessário, que o jogador possa escolher sua cidade. Pensando nisso, desenvolvi uma série de modificações que irão adicionar ao seu servidor, a opção de "escolher uma cidade" no sistema do Account Manager. Instalação Você precisa seguir todos os passos abaixo com atenção o bastante para não pular nenhum, senão poderá ocorrer algum erro na compilação. Vale lembrar que não basta modificar os arquivos passados, você precisa re-compilar seu servidor e, após, substituir o executável. Vamos começar. No arquivo config.lua de seu servidor, procure por: newPlayerSpawnPosX = 95 newPlayerSpawnPosY = 117 newPlayerSpawnPosZ = 7 newPlayerTownId = 1 Apague, substituindo pelas linhas abaixo: newPlayerChooseTown = true newPlayerDefaultTownId = 1 A partir daqui, você irá precisar das sources de seu servidor. No arquivo configmanager.h e procure pelas seguintes linhas: SPAWNPOS_X, SPAWNPOS_Y, SPAWNPOS_Z, SPAWNTOWN_ID, Substitua por: DEFAULT_TOWN_ID, Procure por: START_CHOOSEVOC, Logo abaixo adicione: START_CHOOSETOWN, No arquivo configmanager.cpp, procure por: m_confNumber[sPAWNPOS_X] = getGlobalNumber("newPlayerSpawnPosX", 100); m_confNumber[sPAWNPOS_Y] = getGlobalNumber("newPlayerSpawnPosY", 100); m_confNumber[sPAWNPOS_Z] = getGlobalNumber("newPlayerSpawnPosZ", 7); m_confNumber[sPAWNTOWN_ID] = getGlobalNumber("newPlayerTownId", 1); Substitua por: m_confNumber[DEFAULT_TOWN_ID] = getGlobalNumber("newPlayerDefaultTownId", 1); Procure por: m_confBool[sTART_CHOOSEVOC] = getGlobalBool("newPlayerChooseVoc", false); Adicione logo abaixo: m_confBool[sTART_CHOOSETOWN] = getGlobalBool("newPlayerChooseTown", true); No arquivo iologindata.h, procure por: bool createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex); Substitua por: bool createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex, uint32_t townId); No arquivo iologindata.cpp, procure por: bool IOLoginData::createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex) { if(playerExists(characterName)) return false; Vocation* vocation = Vocations::getInstance()->getVocation(vocationId); Vocation* rookVoc = Vocations::getInstance()->getVocation(0); uint16_t healthMax = 150, manaMax = 0, capMax = 400, lookType = 136; if(sex % 2) lookType = 128; uint32_t level = g_config.getNumber(ConfigManager::START_LEVEL), tmpLevel = std::min((uint32_t)7, (level - 1)); uint64_t exp = 0; if(level > 1) exp = Player::getExpForLevel(level); if(tmpLevel > 0) { healthMax += rookVoc->getGain(GAIN_HEALTH) * tmpLevel; manaMax += rookVoc->getGain(GAIN_MANA) * tmpLevel; capMax += rookVoc->getGainCap() * tmpLevel; if(level > 8) { tmpLevel = level - 8; healthMax += vocation->getGain(GAIN_HEALTH) * tmpLevel; manaMax += vocation->getGain(GAIN_MANA) * tmpLevel; capMax += vocation->getGainCap() * tmpLevel; } } Database* db = Database::getInstance(); DBQuery query; query << "INSERT INTO `players` (`id`, `name`, `world_id`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `skull`, `skulltime`, `save`, `rank_id`, `guildnick`, `lastlogout`, `blessings`, `online`) VALUES (NULL, " << db->escapeString(characterName) << ", " << g_config.getNumber(ConfigManager::WORLD_ID) << ", 1, " << accountId << ", " << level << ", " << vocationId << ", " << healthMax << ", " << healthMax << ", " << exp << ", 68, 76, 78, 39, " << lookType << ", 0, " << g_config.getNumber(ConfigManager::START_MAGICLEVEL) << ", " << manaMax << ", " << manaMax << ", 0, 100, " << g_config.getNumber(ConfigManager::SPAWNTOWN_ID) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_X) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_Y) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_Z) << ", 0, " << capMax << ", " << sex << ", 0, 0, 0, 0, 1, 0, '', 0, 0, 0)"; return db->query(query.str()); } Substitua por: bool IOLoginData::createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex, uint32_t townId) { if(playerExists(characterName)) return false; Vocation* vocation = Vocations::getInstance()->getVocation(vocationId); Vocation* rookVoc = Vocations::getInstance()->getVocation(0); Town* town = Towns::getInstance()->getTown(townId); uint16_t healthMax = 150, manaMax = 0, capMax = 400, lookType = 136; if(sex % 2) lookType = 128; uint32_t level = g_config.getNumber(ConfigManager::START_LEVEL), tmpLevel = std::min((uint32_t)7, (level - 1)); uint64_t exp = 0; if(level > 1) exp = Player::getExpForLevel(level); if(tmpLevel > 0) { healthMax += rookVoc->getGain(GAIN_HEALTH) * tmpLevel; manaMax += rookVoc->getGain(GAIN_MANA) * tmpLevel; capMax += rookVoc->getGainCap() * tmpLevel; if(level > 8) { tmpLevel = level - 8; healthMax += vocation->getGain(GAIN_HEALTH) * tmpLevel; manaMax += vocation->getGain(GAIN_MANA) * tmpLevel; capMax += vocation->getGainCap() * tmpLevel; } } Database* db = Database::getInstance(); DBQuery query; query << "INSERT INTO `players` (`id`, `name`, `world_id`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `skull`, `skulltime`, `save`, `rank_id`, `guildnick`, `lastlogout`, `blessings`, `online`) VALUES (NULL, " << db->escapeString(characterName) << ", " << g_config.getNumber(ConfigManager::WORLD_ID) << ", 1, " << accountId << ", " << level << ", " << vocationId << ", " << healthMax << ", " << healthMax << ", " << exp << ", 68, 76, 78, 39, " << lookType << ", 0, " << g_config.getNumber(ConfigManager::START_MAGICLEVEL) << ", " << manaMax << ", " << manaMax << ", 0, 100, " << townId << ", " << town->getPosition().x << ", " << town->getPosition().y << ", " << town->getPosition().z << ", 0, " << capMax << ", " << sex << ", 0, 0, 0, 0, 1, 0, '', 0, 0, 0)"; return db->query(query.str()); } No arquivo player.h, procure por: int32_t managerNumber, managerNumber2; Substitua por: int32_t managerNumber, managerNumber2, managerNumber3; No arquivo player.cpp, procure por: editListId = maxWriteLen = windowTextId = rankId = 0; Adicione logo abaixo: managerNumber3 = g_config.getNumber(ConfigManager::DEFAULT_TOWN_ID); Procure por: case MANAGER_ACCOUNT: Muita atenção neste passo. Você precisará substituir todo o conteúdo do case pelo conteúdo abaixo, ou seja: Substitua isso: case MANAGER_ACCOUNT: { ... } Por isso: ZD3xYbg4[/pastebin] Demonstração Testado em The Forgotten Server 0.4 rev3884. Pode não funcionar em versões anteriores. -
Adeus, caro contemporâneo.
-
Realmente Modern Warfare você vai achar por esse preço mesmo, principalmente por que é o primeiro de três jogos, ou seja bem old já. Se você usar o Buscapé, dá até para achar umas boas ofertas, o problema é a confiança na loja em questão.
-
Bom e barato na categoria de FPS são duas palavras opostas.
-
Certo, depois poste a sua resolução aqui. Abraços.
-
não vlw, e eu tenho permição de moderar o forum todo, se eu ver uma irregularidade ou poder mover uma duvida sanada, e etc. eu posso e isso é sinal que vocês não estão fazendo os seus devidos trabalhos! Bju gato! permição permição permição permição permição permição permição permição A parte mais engraçada é que como Coordenador de Websites, você devia concentrar a maioria dos seus esforços lá, e não deixar aquela área fraca e praticamente abandonada como está atualmente. Além de analfabeto, belo coordenador, você hein? Não vem se achar o foda em cima dos outros, quando você é um bosta inútil atrás de um nick verde. Mas não vou levar pro lado pessoal não. Estamos no Barzinho para descontrair. "Bjo gato"
-
Desculpe minha grosseria, mas infelizmente só aí no seu servidor problemático. Testei aqui. Grande abraço.
-
Caro Piabeta, você que gosta de se meter na moderação dos outros e fechar os tópicos do Barzinho, faça um grande favor e feche o seu próprio tópico. Abraço.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.