Histórico de Curtidas
-
Yamborghinirecebeu reputação de ITALOx em TFS 0.4 ERRO Call stack overflow.Up
-
Yamborghinirecebeu reputação de L3K0T em (Resolvido)[Error] Tela Estendida TFS 0.4não era isso não...
tem que mudar no const.h
#define NETWORK_MAX_SIZE 24590
para
#define NETWORK_MAX_SIZE 300000
apagar a pasta obj e recompilar a source do server.
aconselho atualizar o topico com isso
-
Yamborghinideu reputação a Vodkart em (Resolvido)[ERRO] Effect ao item dropar de um monstro!@Yamborghini
local stone_effects = { --[itemid] = effect, --Ex.: [11447] = 297, [11442] = 298, } local function sendEffStone(cid, pos, stones) if not isCreature(cid) then return true end for i = 1, 255 do pos.stackpos = i local item = getTileThingByPos(pos) if item.uid ~= 0 then if isContainer(item.uid) then if isContainer(item.uid) and getContainerSize(item.uid) > 0 then for slot=0, (getContainerSize(item.uid)-1) do local stone = getContainerItem(item.uid, slot) if isInArray(stones, stone.itemid) and stone_effects[stone.itemid] then doSendMagicEffect({x= pos.x+1, y= pos.y, z= pos.z}, stone_effects[stone.itemid]) end end end end end end end function onKill(cid, target) local stones = {11453, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11454, 12244, 12232, 12242, 12417, 12419, 12245, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414} --id de todas as stones if ehMonstro(target) and isPlayer(cid) then local pos = getThingPos(target) local pid = getCreatureSummons(cid)[1] addEvent(sendEffStone, 150, pid, pos, stones) end return true end
-
Yamborghinideu reputação a Snowsz em Creature Information OffsetFaz tempo que não posto nada, então deu vontade, tava brincando um pouco ai fiz esse sisteminha básico.
• Gifs
Nesse primeiro Gif, ao trocar a direção da Outfit, o nome e as barras de informações como Health, Mana, mudam de posição, isso é bom para ajustar as Outfits de acordo com o seu tamanho, como o Demon, ficar com as informações logo em cima da cabeça, ou Hydra, todos estão com o local padrão.
Aqui era como as informações ficavam com essa Outfit originalmente, no padrão de sempre dos clients.
Comparativo em imagem estática:
Tibia Outfit antes e depois:
Aqui estão algumas outfits que meu primo @Fae1z fez, apliquei o sistema de offset nelas, uma do Graves, uma do Ekko, ambos são personagens do game League of Legends, e uma baseada Uganda Knuckle:
Ekko antes:
Ekko depois:
Graves antes e depois:
Uganda Knuckle antes e depois:
Aqui eu estava brincando de por as informações da Outfit de anão de modo drogado kkk.
• Código
Em Creature.h modifique nesta linha:
void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
Ficando:
void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags)
Embaixo de:
std::string getName() { return m_name; } Adicione:
Point getInformationOffset() { return m_informationOffset; } void setInformationOffset(int x, int y) { m_informationOffset.x = x; m_informationOffset.y = y; }
Embaixo de:
Position m_oldPosition; Adicione:
Point m_informationOffset;
Agora, em Creature.cpp procure por:
void Creature::drawInformation(const Point& point, bool useGray, const Rect& parentRect, int drawFlags) Mude "const Point& point" para "Point& point".
Ficando:
void Creature::drawInformation(Point& point, bool useGray, const Rect& parentRect, int drawFlags) Sim, isso está repetido, é assim mesmo, o processo é necessário em Creature.h e Creature.cpp, nessa função a variável point tem seu tipo alterado de Const para normal.
Ainda em Creature.cpp procure por:
if(!useGray) fillColor = m_informationColor; Pule duas linhas e adicione:
point.x += m_informationOffset.x; point.y += m_informationOffset.y;
Agora, em Luafunctions.cpp procure por:
g_lua.bindClassMemberFunction<Creature>("jump", &Creature::jump); Embaixo adicione:
g_lua.bindClassMemberFunction<Creature>("setInformationOffset", &Creature::setInformationOffset); g_lua.bindClassMemberFunction<Creature>("getInformationOffset", &Creature::getInformationOffset);
A parte da source é só isso.
Foi criada uma variável do tipo Point na classe Creature, que pode armazenar dois valores do tipo Int, sendo eles X & Y, assim detendo uma posição de offset, para ajustar a posição das informações(Health Bar, Mana Bar e Name) da criatura, essa variável é usada na função Creature::drawInformation, onde ocorre todo o desenho de informações das criaturas, lá o offset criado altera a posição de um Point usado como posição base das informações, alterando esse Point todo o resto segue aquela posição, você pode setar o offset diretamente na criatura, as funções podem ser usadas tanto na source usando C++ quanto nos scripts usando Lua, em Lua o uso das funções é o seguinte:
Essa função retorna uma tabela com X & Y, algo como "table = {x = 10, y = 20}", são as posições do offset.
Creature:getInformationOffset() Exemplo de uso:
local Offset = Creature:getInformationOffset() print(Offset.x) print(Offset.y) Isso vai printar no client_terminal do OTClient os valores de X & Y.
Enquanto esta altera as posições usando os valores X & Y.
Creature:setInformationOffset(x, y) Exemplo:
Creature:setInformationOffset(10, -5)
Essa configuração de offset vai aumentar X em 10 Pixels e diminuir Y em 5 Pixels, no meu primeiro gif, na direção Sul do Char, eu usei X diminuindo 13 Pixels e Y diminuindo 8 Pixels, algo como isso:
Creature:setInformationOffset(-13, -8)
Para tudo isso funcionar igual os gifs acima eu fiz um módulo especial, onde dependendo da Outfit e da direção que a criatura está olhando, ele vai alterar o offset de acordo.
Para criar o módulo, siga estes passos:
Na pasta do OTClient em modules/ crie uma pasta chamada game_creatureinformation, dentro crie um arquivo com o mesmo nome e a extensão .otmod, algo como "game_creatureinformation.otmod", o conteúdo do arquivo é este:
Module name: game_creatureinformation description: Changes the position of the informations point to correctly draw names and creature bars. author: Snowsz website: tibiaking.com autoload: true reloadable: true sandboxed: true version: 1.0 scripts: [ game_creatureinformation ] @onLoad: init() @onUnload: terminate()
Crie um arquivo com o mesmo nome e a extensão .lua, algo como "game_creatureinformation.lua", o conteúdo do arquivo é este:
--[[ Directions: North /\ East > South \/ West < Structure: [OutfitID] = { [Direction] = {x = OFFSETX, y = OFFSETY}, } ]] --Lista de offsets para cada Outfit. local OutfitOffsets = { [143] = { --Outfit do primeiro gif [North] = {x = -13, y = -8}, [East] = {x = -17, y = -8}, [South] = {x = -13, y = -8}, [West] = {x = -15, y = -8}, }, [160] = { --Outfit de anão com o nome full drogado. [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = -13, y = -80}, [West] = {x = 0, y = 0}, } } local function translateDir(dir) if dir == NorthEast or dir == SouthEast then return East elseif dir == NorthWest or dir == SouthWest then return West end return dir end local function getOutfitInformationOffset(outfit, dir) if OutfitOffsets[outfit] then return OutfitOffsets[outfit][translateDir(dir)] end return {x = 0, y = 0} end local function onCreatureAppear(creature) local Offset = getOutfitInformationOffset(creature:getOutfit().type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureDirectionChange(creature, oldDirection, newDirection) local Offset = getOutfitInformationOffset(creature:getOutfit().type, newDirection) creature:setInformationOffset(Offset.x, Offset.y) end local function onCreatureOutfitChange(creature, newOutfit, oldOutfit) local Offset = getOutfitInformationOffset(newOutfit.type, creature:getDirection()) creature:setInformationOffset(Offset.x, Offset.y) end function init() connect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) connect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end function terminate() disconnect(LocalPlayer, {onOutfitChange = onCreatureOutfitChange}) disconnect(Creature, { onAppear = onCreatureAppear, onDirectionChange = onCreatureDirectionChange, onOutfitChange = onCreatureOutfitChange }) end
A parte do módulo está finalizada, o que resta agora é configurar as Outfits na tabela com seus determinados Offsets, e não se preocupe, se a outfit não estiver configurada, ela vai seguir o padrão normal, o módulo só altera algo quando determinada Outfit está configurada.
Para configurar o módulo é simples, basta seguir o padrão:
[ID DA OUTFIT AQUI] = { [North] = {x = 0, y = 0}, [East] = {x = 0, y = 0}, [South] = {x = 0, y = 0}, [West] = {x = -0, y = 0}, }, Nos primeiros colchetes coloque o ID da sua Outfit para ter o offset modificado, os colchetes restantes são as direções, não é necessário mexer neles, dentro de cada índice da tabela tem os offsets X & Y, basta modificar o valor de acordo, sendo ele positivo ou negativo. NÃO SE ESQUEÇA DA VÍRGULA NO FINAL "},".
-
Yamborghinirecebeu reputação de 4Unknow em Projeto PokeTibia GBA - Um novo estilo de PokeTibiaBom dia, pessoal!
Estou recrutando uma galera com experiência para fazer um servidor DIFERENCIADO dos demais de hoje... Acho que isso é o que mais falta nos servidores de hoje.
-Qual a ideia?
Bom, a minha ideia, é criar um servidor que lembre nossa época de infância jogando horas um GameBoy....
Minha idéia não é só ter muitos sistemas que existiam no gameboy e fazê-los funcionar no mundo de Tibia, mas também, mudar os gráficos do Tibia, para os gráficos do pokémon no gameboy!
-O que precisa da equipe?
Por ser um pouco trabalhoso, estou precisando de uma galera experiente em suas áreas...
São elas:
•Lua
•C++
•Sprite
Por enquanto é só...
-Qual o progresso ATUAL do servidor?
O servidor já possui todos os seus sistemas básicos, e além deles, possui também:
•Gender System
•Gym System
•Duel System
•Addon System
•Unique item System
•Task System
•HM System
Algumas Imagens:
Então é isso, pessoal!
Quem estiver interessado, mandar PM ou responder esse tópico!
-
Yamborghinirecebeu reputação de Vodkart em Fazer item adicionar uma descrição a outro itemnada aconteceu no look e deu esse erro aqui
[25/06/2018 23:08:57] [Error - Action Interface]
[25/06/2018 23:08:57] data/actions/scripts/HMs/HMRide.lua:onUse
[25/06/2018 23:08:57] Description:
[25/06/2018 23:08:57] data/actions/scripts/HMs/HMRide.lua:14: attempt to call field 'uid' (a number value)
[25/06/2018 23:08:57] stack traceback:
[25/06/2018 23:08:57] data/actions/scripts/HMs/HMRide.lua:14: in function <data/actions/scripts/HMs/HMRide.lua:1>
-
Yamborghinideu reputação a xWhiteWolf em (Resolvido)Spell para ficar intocavelpodia pelo menos me agradecer dando rep no tópico né, to fazendo tudo de boa vontade..
-
Yamborghinideu reputação a xWhiteWolf em (Resolvido)Spell para ficar intocavelahaauhauhauh eu ainda não curto essas idéias de ter que pagar por script.. faço as coisas na boa vontade e espero uma resposta em troca pelo menos do cara falar que gostou ou me contar como ele utilizou no server. Infelizmente muita gente acha que só porque sou suporter é minha obrigação ajudar e pega o script usa no server e nem responde mais nada
-
Yamborghinideu reputação a Pedro. em (Resolvido)Tabela MYSQL faltando!exclui a tabela antiga, manualmente ou por sql.
DROP TABLE `death_list`; e adiciona essa aqui
CREATE TABLE `death_list` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_id` int(11) NOT NULL, `date` bigint(20) unsigned NOT NULL, `level` int(11) NOT NULL, `killer_name` varchar(255) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`player_id`) REFERENCES `players`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB;
-
Yamborghinideu reputação a Pedro. em Top Guilds não funciona GESIORem outras palavras bgl mo hard, to tentando aqui, vou pedir ajuda pra vê se consigo implementar outro sistema de top guilds.
Tendo sucesso vou arrumar esse layout e postar aqui e te marco.
-
Yamborghinirecebeu reputação de Myalitth em Daily TeleportPrimeiramente abra data/globalevents/scripts e crie o seguinte:
teleporteautomatico.lua
local config = { day = "Monday","Wednesday","Friday","Sunday", pos = {x=151, y=77, z=6}, topos = {x=550, y=34, z=7}, time = 5, -- tempo que o teleport ira sumir em minutos msg_open = "O Portal vai se abrir em 5 minutos.", msg_close = "O Portal se fechou." } local function DelTp() local t = getTileItemById(config.pos, 1387) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(config.pos, CONST_ME_POFF) end end function onTimer() if (os.date("%A") == config.day) then doCreateTeleport(1387, config.topos, config.pos) doBroadcastMessage(config.msg_open) addEvent(DelTp, config.time*60*1000) addEvent(doBroadcastMessage, config.time*60*1000, config.msg_close) end return true end adicione em globalevents.xml a seguinte tag:
<globalevent name="Teleport Automatico" time="15:30" event="script" value="teleportautomatico.lua"/> está configurado para 15:30, caso queira trocar.. se pode trocar de 00:00 até 23:59
para configurá-lo é fácil:
day = "Monday","Wednesday","Friday","Sunday", -- Dias em que o teleport irá aparecer
pos = {x=151, y=77, z=6}, -- Posição aonde será criado o teleport
topos = {x=550, y=34, z=7}, -- Posição pra onde o teleport ira levar o player
time = 5, -- tempo que o teleport ira sumir em minutos,
msg_open = "SUA MENSAGEM AO ABRIR O TELEPORT"
msg_close = "MENSAGEM AO FECHAR O TELEPORT"
creditos: @luanluciano93
-
Yamborghinirecebeu reputação de mikaelkelvin em (Resolvido)Abrir Site Ubuntu 12.nada, escolhe como melhor resposta pra fechar o tópico!
-
Yamborghinideu reputação a Fir3element em Testar Proteção de Cliente[Free] -
Yamborghinideu reputação a lordzetros em (Resolvido)[PEDIDO] Raid de aparecer uma Porta!Opa, vou dá uma olhada, daqui a pouco edito aqui.
Edit1: @Yamborghini Testado e funcionando:
Em data/globalevents/scripts/criaPorta.lua
function onTime() local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles / ADICIONEI Wednesday para teste, porque hoje é quarta-feira, caso n queira, só remover local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 100, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end Em data/globalevents/globalevents.xml
<globalevent name="CriaPorta" time="13:29" event="script" value="criaPorta.lua"/> Repare que tem time="13:29", isso é o horário que irá funcionar o evento.
OBS.: Se quiser que ele rode em DETERMINADOS INTERVALOS, como por exemplo, de 30 em 30 min, precisa ser feito algumas outras modificações.
Vai no globalevents.xml, deixe:
<globalevent name="criaPorta" interval="1800000" event="script" value="criaPorta.lua"/> E em criaPorta.lua, deixe:
function onThink(interval, lastExecution) local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 1000, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end
Aí funcionará de 30 em 30 min.
Valeu!
-
Yamborghinideu reputação a lordzetros em (Resolvido)[SUPORTE] NPC RESET não volta level!Certo, então vamos para outra parte, pode me enviar como está na distro agora?
-
Yamborghinideu reputação a lordzetros em (Resolvido)[SUPORTE] NPC RESET não volta level!Teste com esse:
local tab = { [13] = {effect = 58}, -- [vocationID] = {effect = Number} [14] = {effect = 58}, [15] = {effect = 58}, [16] = {effect = 58} } local delay = 3 -- tempo do efeito da aura em segundos function ariseAura(cid) doSendMagicEffect(getThingPos(cid), tab[getPlayerVocation(cid)].effect) addEvent(function() if isPlayer(cid) then ariseAura(cid) end end, delay * 1000) return true end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseAura(cid) end return true end
-
Yamborghinideu reputação a lordzetros em (Resolvido)[SUPORTE] NPC RESET não volta level!Show de bola, fico feliz que tenha dado certo com os problemas, abraço!
-
Yamborghinirecebeu reputação de Gnius em Modern AAC WebSite Poketibia 1.0Bom galera pra queles que estão procurando site para poketibia esta aqui o design foi eu que modifiquei eu achei bom não sei vocês espero que gostem,
esse site eh totalmente modificado para servidores de poketibia como andei procurando e não achei resolvi modificar o Modern ACC pois achei mais
facil o uso.
estarei mostrano algumas imagens do site para todos vocês
Download : Web Poketibia 1.0
Scan Virus Total :
Tutorial
1º passo
aconselho versão mais nova do Xampp 1.7.7 pelo menos e a versão que estou usando mais segura e não tive neum problema
com ele ate o momento.
depois que instalou o Xampp entre no phpmyadmin do xampp Criar novo Banco de Dados com o nome que preferir de sua escolha
carregue o arquivo mysql que geralmente vem com seu servidor de poketibia depois que carregar
pegue o arquivo do web site poketibia 1.0 extrair dentro da pasta htdocs dentro do Xampp
pronto o resto agora e facil.
2º passo
va no navegador e coloque http://localhost automaticmente ele vai pra pagina de instalação do site
1º imagem
2º imagem
pronto instação completa vamus configurar o restante
abre o config.lua de dentro da pasta do web site poketibia 1.0
altere essa linha pois e a coordenada onde o char vai nascer
obs: o Web site Poketibia 1.0 so suporta ser a configuração do config.lua do seu servidor de poketibia
tiver em versão criptografada Sha1 então altere para Sha1 a instalação não contem senha de administrador
do site precisa mudar o acesso de pagina direto do banco de dados qualquer duvida podem pergunta
espero que gostem do site qualquer bug pode posta que tentaremos corrigir o mais rapido possivel
gostaria muito da opinião de todos vocês
Creditos a equipe do Modern Acc por disponibilizar o script do site pra podemos modificar para Poketibia
AJUDEI ?? REP++
CREDITOS : nibelis - tibiaking
-
Yamborghinideu reputação a marcot em (Resolvido)[PEDIDO] "x" Bolt só funcionar com "x" CrossbowInfelizmente não estou sabendo corrigir o bug que ficou, quando o jogador fica com o bow na mão que não seja o correto ele ganha skill como se estivesse batendo normalmente. Eu tentei usar o comando de addSkillTry mas parece que ele buga quando tento um valor negativo.
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 41) setCombatParam(combat, COMBAT_PARAM_HITCOLOR, 170) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 2, 1.2, 2) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 41) setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, 170) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, -10000, 0, -13000) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 41) setCombatParam(combat3, COMBAT_PARAM_HITCOLOR, 170) setCombatFormula(combat3, COMBAT_FORMULA_SKILL, 0, -13000, 0, -15000) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionParam(condition, CONDITION_PARAM_SPEED, -400) setConditionFormula(condition, 0, 0, 0, 0) setCombatCondition(combat2, condition) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionParam(condition, CONDITION_PARAM_SPEED, -600) setConditionFormula(condition, 0, 0, 0, 0) setCombatCondition(combat3, condition) function onUseWeapon(cid, var) local rand = math.random(1,100) bowID = 13038 itemLeft = getPlayerSlotItem(cid, 6) itemRight = getPlayerSlotItem(cid, 5) if itemLeft.itemid ~= bowID and itemRight.itemid ~= bowID then flechas = getPlayerSlotItem(cid, 10) -- doPlayerAddSkillTry(cid, SKILL_DISTANCE, -1, true) -- BUGA A SKILL DO PERSONAGEM, NAO DESCOMENTAR doPlayerAddItem (cid, flechas.itemid, 1) return false end if rand <= 4 then doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_BLACK) doCombat(cid, combat2, var) elseif rand <= 7 then doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_BLACK) doCombat(cid, combat3, var) else doCombat(cid, combat, var) end end
-
Yamborghinideu reputação a Storm em [TFS 0.x] New look systemFala pessoal , vi muita galera com problema no look (principalmente em narutibias). Então resolvi refazer o sistema de look
Crie um novo arquivo em Creaturescripts e cole isso ( Tem que registrar na XML e no login.lua, ambas tags estão na script)
-- <event type="look" name="showVoc" event="script" value="showvoc.lua"/> -- registerCreatureEvent(cid, showVoc) local t = { [-1] = "Estudante", [0] = "Estudante", [1] = "Genin", [2] = "Chunnin", [3] = "Jounin", [4] = "Anbu", [5] = "Sennin" } function onLook(cid, thing, position, lookDistance) local storage = 35461 local get_description = t[getPlayerStorageValue(thing.uid, storage)] local get_sex = (getPlayerSex(thing.uid) == 0 and "She" or "He") local get_town = getTownName(getPlayerTown(thing.uid)) if isPlayer(thing.uid) and thing.uid ~= cid then doPlayerSetSpecialDescription(thing.uid, "\n ".. get_sex .." are ".. get_description ..". \n ".. get_sex .." is the resident of ".. get_town ..".") end return true end
Como o sistema funciona ? como eu configuro ?
Primeiramente , a script pega o valor que o player tem de uma storage e a identifica na tabela , onde o que está entre "[]" é o valor da storage
Exemplo : O player tem a storage 35461 e 3 como o value dela , então no look retornará Jounin
Para configurar , mecha aqui
local t = { [-1] = "Estudante", [0] = "Estudante", [1] = "Genin", [2] = "Chunnin", [3] = "Jounin", [4] = "Anbu", [5] = "Sennin" } Lembrando que a ultima parte não deverá conter virgula , ficando assim
local t = { [-1] = "Estudante", [0] = "Estudante", [1] = "Genin" } A script não funciona se você der look em si mesmo.
Chars com group maior que 2 retornarão erro ao dar look.
-
Yamborghinideu reputação a Storm em (Resolvido)[SUPORTE] NPC nao funciona!Não sei quem fez essa script , mas que merda é essa ??? parecia a mim quando comecei.
Script corrigida
-
Yamborghinideu reputação a vyctor17 em Lockpick e Fishing OTCTópico rápido não sei se esta na área errada eu postaria na área de showoff mas não achei, estou trabalhando em um modulo pro Otclient de "lockpick" parecido com de skyrim.
Embora essa primeira versão esta bem mais simples, basicamente ao usar o "lockpick" em uma Bau ou porta aparece a janela onde você tem que encontrar a posição para o "lockpick" abrir o bau ou porta em questão tentar abrir o bau com a posição errada quebra seu "lockpick". se alguém tiver alguma sugestão principalmente na forma de definir a dificuldade dos baus ou de como a skill de "lockpick" vai alterar a dificuldade pode deixar ai que estou precisando kkk.
Edit: não vou criar outro tópico só pra mostrar isso segue o vídeo aqui a ideia é manter a quadrado verde no peixe para pescar ele a velocidade do peixe e o tamanho do quadrado varia de acordo com a dificuldade do peixe. no caso ali esta bem cru, no caso a barra verde quando chegar no máximo você pegaria o peixe se se deixar ela chegar a 0 você perde o peixe.
-
Yamborghinideu reputação a Storm em Modificação no script Hiraishin Kunaifunction onUse(cid, item, fromPosition, itemEx, toPosition) local itemid = 13245 -- Id do item que sera criado na pos local pos = fromPosition local aqui = getPlayerPosition(cid) local vocs = {6, 10} local agua = {4610, 4612, 4611, 4664, 4613, 4666, 4646, 4654, 4609, 4665, 4608, 4625, 4665, 4666, 4645} local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 2700, 2708, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422} local pedra = {874, 919, 873, 2707, 2784, 2778, 3330, 4471, 4475, 4473, 4472, 4474, 4468, 4478, 4469, 4470, 4479, 2703, 2704, 1534, 2739, 3867, 5324, 5316, 5315, 5317, 1600, 1597, 1601} if getDistanceBetween(aqui, toPosition) >= 8 then return doPlayerSendTextMessage(cid, 27, "muito longe.") elseif(not(isSightClear(aqui, toPosition, 1))) then return doPlayerSendTextMessage(cid, 27, "Isso é impossivel.") elseif(getTilePzInfo(aqui)) then return doPlayerSendCancel(cid, "nao pode usar a tecnica em casas ou areas protegidas.") elseif(getTilePzInfo(toPosition)) then return doPlayerSendCancel(cid, "nao pode usar a tecnica Deus Dragão em casas ou areas protegidas.") elseif(isInArray(agua, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em agua") elseif(isInArray(parede, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em paredes") elseif(isInArray(pedra, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em pedras") elseif(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 27, "Desculpe, Apenas Minato e Tobirama podem usar a tecnica.") end if(doTeleportThing(cid, toPosition, false)) then doSendMagicEffect(pos, 186) doSendMagicEffect(toPosition, 186) doCreateItem(itemid, 1, toPosition) doCreatureSay(cid, "Shunshin", 19) return doSendDistanceShoot(pos, toPosition, 16) end return doPlayerSendCancel(cid, "Desculpe nao foi possivel.") end
-
Yamborghinideu reputação a Storm em Modificação no script Hiraishin KunaiCódigo editado.
-
Yamborghinideu reputação a Storm em [PEDIDO] NPC Vocation 2local 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 local x = 2 -- Id da vocação necessaria pra promote local y = 3 -- Id da voc de promote local sto = 4642 -- storage praq ele n faça a promotion novamente local lvl = 8 -- lvl ao resetar local health = 185 -- hp ao resetar local mana = 35 -- mana ao resetar if (msgcontains(msg, 'promotion')) then if getPlayerStorageValue(cid, sto) == -1 then if getPlayerVocation(cid) == x then local playerid = getPlayerGUID(cid) selfSay('Congratulations! You were promoted', cid) setPlayerStorageValue(cid, sto, 1) setCreatureMaxHealth(cid, health) setCreatureMaxMana(cid, mana) db.executeQuery("UPDATE `players` SET `level`="..lvl..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") else selfSay('You do not have the vocation', cid) end else selfSay('You have already been promoted', cid) end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())