Líderes
-
-
Ed.Specter
MembroPontos50Total de itens -
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/19/16 em todas áreas
-
(Resolvido)Trocar premium points no trade
(Resolvido)Trocar premium points no trade
amarelax e um outro reagiu a Ed.Specter por uma resposta no tópico
2 pontosadiciona a função que citei. e vê se funciona esse aqui: talkactions function onSay(cid, words, param, param2, channel) local t = string.explode(param, ",") local target = getCreatureByName(t[1]) local points = tonumber(t[2]) local item = 2233 local storage = 21223 if(param == '') then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") end if (target ~= nil) and isPlayer(target) and not isPlayerGhost(target) then if (points ~= nil) and (type(points) == 'number') and (points>0) then if getPlayerVipPoints(cid) > points then local addItem = doPlayerAddItem(cid, item, 1) doStartTrade(cid, target, addItem) doItemSetAttribute(addItem, "description", "Transferência de "..points.." premium points.") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você deu trade no jogador "..getPlayerName(target)..", com a intenção de trocar "..points.." premium points.") doPlayerSendTextMessage(target, MESSAGE_INFO_DESCR, "O Jogador "..getPlayerName(cid).." deu trade em você, e está disposto a trocar "..points.." premium points.") setPlayerStorageValue(cid, storage, points) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem essa quantidade de premium points.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end return true end creaturescripts: function onTradeAccept(cid, target, item) local storage = 21223 local sto = getPlayerStorageValue(cid, storage) if sto > 0 then doPlayerRemoveVipPoints(cid, sto) doPlayerAddVipPoints(target, sto) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você trocou "..sto.." premium points, Parabéns.") doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_BLUE, "Você realizou uma troca e adquiriu "..sto.." premium points, Parabéns.") setPlayerStorageValue(cid, storage, 0) end return true end nesse caso você vai usar !trade NomeDoOutroPlayer, Quantidade de points. Exemplo: !trade Eduardo, 3 acho que deu pra ter uma boa base de como funciona.. não entendi direito esse do npc2 pontos -
Store Inbox - mover itens
Store Inbox - mover itens
StrixPlay e um outro reagiu a teko96 por uma resposta no tópico
2 pontosVa até a pasta events/scripts/player.lua E substitua o seu por este: function Player:onBrowseField(position) return true end function Player:onLook(thing, position, distance) local description = "You see " .. thing:getDescription(distance) if self:getGroup():getAccess() then if thing:isItem() then description = string.format("%s\nItem ID: %d", description, thing:getId()) local actionId = thing:getActionId() if actionId ~= 0 then description = string.format("%s, Action ID: %d", description, actionId) end local uniqueId = thing:getAttribute(ITEM_ATTRIBUTE_UNIQUEID) if uniqueId > 0 and uniqueId < 65536 then description = string.format("%s, Unique ID: %d", description, uniqueId) end local itemType = thing:getType() local transformEquipId = itemType:getTransformEquipId() local transformDeEquipId = itemType:getTransformDeEquipId() if transformEquipId ~= 0 then description = string.format("%s\nTransforms to: %d (onEquip)", description, transformEquipId) elseif transformDeEquipId ~= 0 then description = string.format("%s\nTransforms to: %d (onDeEquip)", description, transformDeEquipId) end local decayId = itemType:getDecayId() if decayId ~= -1 then description = string.format("%s\nDecays to: %d", description, decayId) end elseif thing:isCreature() then local str = "%s\nHealth: %d / %d" if thing:getMaxMana() > 0 then str = string.format("%s, Mana: %d / %d", str, thing:getMana(), thing:getMaxMana()) end description = string.format(str, description, thing:getHealth(), thing:getMaxHealth()) .. "." end local position = thing:getPosition() description = string.format( "%s\nPosition: %d, %d, %d", description, position.x, position.y, position.z ) if thing:isCreature() then if thing:isPlayer() then description = string.format("%s\nIP: %s.", description, Game.convertIpToString(thing:getIp())) end end end self:sendTextMessage(MESSAGE_INFO_DESCR, description) end function Player:onLookInBattleList(creature, distance) local description = "You see " .. creature:getDescription(distance) if self:getGroup():getAccess() then local str = "%s\nHealth: %d / %d" if creature:getMaxMana() > 0 then str = string.format("%s, Mana: %d / %d", str, creature:getMana(), creature:getMaxMana()) end description = string.format(str, description, creature:getHealth(), creature:getMaxHealth()) .. "." local position = creature:getPosition() description = string.format( "%s\nPosition: %d, %d, %d", description, position.x, position.y, position.z ) if creature:isPlayer() then description = string.format("%s\nIP: %s", description, Game.convertIpToString(creature:getIp())) end end self:sendTextMessage(MESSAGE_INFO_DESCR, description) end function Player:onLookInTrade(partner, item, distance) self:sendTextMessage(MESSAGE_INFO_DESCR, "You see " .. item:getDescription(distance)) end function Player:onLookInShop(itemType, count) return true end function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder) if item:getActionId() == NOT_MOVEABLE_ACTION then self:sendCancelMessage('Sorry, not possible.') return false end if toPosition.x == CONTAINER_POSITION and toCylinder and toCylinder:getId() == 26052 then self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) return false end if toPosition.x ~= CONTAINER_POSITION then return true end if item:getTopParent() == self and bit.band(toPosition.y, 0x40) == 0 then local itemType, moveItem = ItemType(item:getId()) if bit.band(itemType:getSlotPosition(), SLOTP_TWO_HAND) ~= 0 and toPosition.y == CONST_SLOT_LEFT then moveItem = self:getSlotItem(CONST_SLOT_RIGHT) elseif itemType:getWeaponType() == WEAPON_SHIELD and toPosition.y == CONST_SLOT_RIGHT then moveItem = self:getSlotItem(CONST_SLOT_LEFT) if moveItem and bit.band(ItemType(moveItem:getId()):getSlotPosition(), SLOTP_TWO_HAND) == 0 then return true end end if moveItem then local parent = item:getParent() if parent:getSize() == parent:getCapacity() then self:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_CONTAINERNOTENOUGHROOM)) return false else return moveItem:moveTo(parent) end end end if toPosition.x == CONTAINER_POSITION then local containerId = toPosition.y - 64 local container = self:getContainerById(containerId) if not container then return true end -- Do not let the player insert items into either the Reward Container or the Reward Chest local itemId = container:getId() if itemId == ITEM_REWARD_CONTAINER or itemId == ITEM_REWARD_CHEST then self:sendCancelMessage('Sorry, not possible.') return false end -- The player also shouldn't be able to insert items into the boss corpse local tile = Tile(container:getPosition()) for _, item in ipairs(tile:getItems()) do if item:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2^31 - 1 and item:getName() == container:getName() then self:sendCancelMessage('Sorry, not possible.') return false end end end -- Do not let the player move the boss corpse. if item:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2^31 - 1 then self:sendCancelMessage('Sorry, not possible.') return false end return true end function Player:onMoveCreature(creature, fromPosition, toPosition) return true end function Player:onTurn(direction) return true end function Player:onTradeRequest(target, item) return true end function Player:onTradeAccept(target, item, targetItem) return true end local soulCondition = Condition(CONDITION_SOUL, CONDITIONID_DEFAULT) soulCondition:setTicks(4 * 60 * 1000) soulCondition:setParameter(CONDITION_PARAM_SOULGAIN, 1) local function useStamina(player) local staminaMinutes = player:getStamina() if staminaMinutes == 0 then return end local playerId = player:getId() local currentTime = os.time() local timePassed = currentTime - nextUseStaminaTime[playerId] if timePassed <= 0 then return end if timePassed > 60 then if staminaMinutes > 2 then staminaMinutes = staminaMinutes - 2 else staminaMinutes = 0 end nextUseStaminaTime[playerId] = currentTime + 120 else staminaMinutes = staminaMinutes - 1 nextUseStaminaTime[playerId] = currentTime + 60 end player:setStamina(staminaMinutes) end function Player:onGainExperience(source, exp, rawExp) if not source or source:isPlayer() then return exp end -- Soul regeneration local vocation = self:getVocation() if self:getSoul() < vocation:getMaxSoul() and exp >= self:getLevel() then soulCondition:setParameter(CONDITION_PARAM_SOULTICKS, vocation:getSoulGainTicks() * 1000) self:addCondition(soulCondition) end -- Apply experience stage multiplier exp = exp * Game.getExperienceStage(self:getLevel()) -- Stamina modifier if configManager.getBoolean(configKeys.STAMINA_SYSTEM) then useStamina(self) local staminaMinutes = self:getStamina() if staminaMinutes > 2400 and self:isPremium() then exp = exp * 1.5 elseif staminaMinutes <= 840 then exp = exp * 0.5 end end return exp end function Player:onLoseExperience(exp) return exp end function Player:onGainSkillTries(skill, tries) if APPLY_SKILL_MULTIPLIER == false then return tries end if skill == SKILL_MAGLEVEL then return tries * configManager.getNumber(configKeys.RATE_MAGIC) end return tries * configManager.getNumber(configKeys.RATE_SKILL) end2 pontos -
Script passar portal apenas quando estiver equipando 1 amuleto especial.
Script passar portal apenas quando estiver equipando 1 amuleto especial.
VertusSpriter e um outro reagiu a Vodkart por uma resposta no tópico
2 pontosfunction onStepIn(cid, item, position, fromPosition) local id_item, position = 2173, {x=1000, y=1000, z=7} -- id do colar e a pos pra onde ele vai ao entrar no tp if getPlayerSlotItem(cid, 2).itemid == id_item then doTeleportThing(cid, pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) return true end doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end2 pontos -
[8.60] Baiak ROX ! Editado By DeathRocks [Cast + Wars System]
[8.60] Baiak ROX ! Editado By DeathRocks [Cast + Wars System]
Veigh reagiu a DeathRocks por uma resposta no tópico
1 pontoEae Galera do TibiaKing É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min Espero que Gostem Oque eu Fiz ? | Novo Visual do Templo Totalmente ICE | Critical System | Task System | Dodge System | Run Event (CORRIDA MALUCA) | Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset | Guild Frags System ( ACESSO AO PROMOTE E ITENS EXCLUSIVOS ) | War System (100% RODANDO EM SQLITE) | Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true ) Duvidas entrem em http://www.tibiaking...os-na-distro/ | PvP Balanceado Agora com mais RPG | Armas Arrumadas Para Melhor PvP | Varios Eventos Automaticos | Battle Field Event | Capture The Flag Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Distro 0.4 Rodando 100% ( Se For 64x Bits) | Refinamento ( Aprimora seus Equipamentos ) | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Outras Coisas | SENHA DO GOD: rox/styller | Aqui Vai Umas Prints | Castelo Reset System | Nova Imagem do Templo | Área Donate | Mostra de Itens Donate + Eventos | Download | Scan | Créditos | Gostou ? Então dei um REP1 ponto -
[Eject System] Expulsar Player Inativo da House
Salve galerinha do TK. Hoje vim trazer um script muito útil e buscado hoje em dia nos otservers, é o sistema de !eject. Como funciona ? Caso o player fica X dias sem logar (configurável) qualquer outro jogador pode chegar na porta da house dizendo o comando !eject, então a house ficará sem dono e em seugida o player poderá compra-la normalmente, dizendo !buyhouse. É um sript simples e que poderá dar lugar e novas houses a jogadores novos, expulsando os jogadores que não logam mais no seu servidor. Nota: o script é vendido em uma "empresa" de open tibia onde estou colocando os créditos , disponibilizando aqui minha adaptação e o scrpit para vocês, achou errado? não gostou? ENTÃO COMPRA LÁ =p Vamos ao que interessa; Abra sua pasta talkactions/scripts e dentro dela crie um arquivo .lua com o nome de: expulse_house.lua e dentro coloque: function onSay(cid, words, param) local position = getPlayerPosition(cid) if getPlayerLookDir(cid) == 0 then positions = {x=position.x, y=position.y-1, z=position.z} elseif getPlayerLookDir(cid) == 1 then positions = {x=position.x+1, y=position.y, z=position.z} elseif getPlayerLookDir(cid) == 2 then positions = {x=position.x, y=position.y+1, z=position.z} elseif getPlayerLookDir(cid) == 3 then positions = {x=position.x-1, y=position.y, z=position.z} end if getHouseFromPos(positions) == false then doPlayerSendTextMessage(cid, 27, "Voce precisa estar na frente a porta da casa para usar o comando.") return true end local days = 5*24*60*60 local own = getHouseOwner(getHouseFromPos(positions)) local qry = db.getResult("SELECT `lastlogin` FROM `players` WHERE `id` = "..own) if(qry:getID() ~= -1) then last = tonumber(qry:getDataInt("lastlogin")) if last < os.time() - days then setHouseOwner(getHouseFromPos(positions), NO_OWNER_PHRASE,true) doPlayerSendTextMessage(cid, 27, "A Casa agora esta sem dono, você ou outro jogador pode compra-la") end if last > os.time() - days then doPlayerSendTextMessage(cid, 27, "O proprierário desta casa ainda está ativo no servidor, tente outra casa.") end end return true end Pós ter feito isto, abra o seu arquivo talkactions.xml e coloque debaixo de uma linha qualquer a seguinte linha: <talkaction words="!eject" event="script" value="expulse_house.lua"/> Pronto. basta o player chegar na porta da casa e dizer !eject, caso o jogador esteja a 5 dias sem logar, os items do antigo dono irão para o DEPOT e a casa ficará sem dono. @Configuração do script: local days = 5*24*60*60 Onde está o número 5 é o tanto de dias que o player tem que ficar sem logar para outro jogador executar o comando. Para alterar para 3 dias, ficaria como exemplo: local days = 3*24*60*60 E assim sucessivamente. Qualquer dúvida não deixe de me comunicar, estarei disposto a ajuda-lo. Créditos: Keilost1 ponto
-
Iniciar um OT do zero !
Iniciar um OT do zero !
brunodiias18 reagiu a renansmartins por uma resposta no tópico
1 pontoBom galera, eu tenho vontade e estou com tempo agora para montar um OTserve ! Não sei muita coisa, mas procuro alguém que queria iniciar um OT do zero para aprendermos juntos ! ! ! Grato.1 ponto -
Resetando Seu Server Sem Deletar Players ou Items
olá galera do tibiaking esse é meu primeiro topico então desculpem erros de português bom vamos lá essa função é para server em sqlite que querem resetar sem deletar players ou items. bom primeiro vou falar que essa função pode ser editada por você mais darei algumas opções vejá abaixo algumas funções como editar mais tags siga abaixo \/ é isso espero que tenha ajudado alguma dúvida comente para resolver-mos juntos obs¹: para executar as funções na sqlite procure na parte superior open SQL query editor coloque as funções nele e aperte f91 ponto
-
Configurar Save server
1 pontoUse este código: local config = { broadcast = {120, 30}, flags = 13, delay = 120, events = 30 } local function executeSave(seconds) if(isInArray(config.broadcast, seconds)) then doBroadcastMessage("[Server]: Server save within " .. seconds .. " seconds, please mind it may freeze!", MESSAGE_STATUS_CONSOLE_BLUE) end if(seconds > 0) then addEvent(executeSave, config.events * 1000, seconds - config.events) else doSaveServer(config.flags) doBroadcastMessage("[Server]: Server save completed.", MESSAGE_STATUS_CONSOLE_BLUE) end end function onThink(interval) if(table.maxn(config.broadcast) == 0) then doSaveServer(config.flags) else executeSave(config.delay) end return true end1 ponto
-
Programa para Gerenciar Banco de Dados (Mysql + Apache)
No Windows é complicado. Porque Windows é o pior sistema operacional em questão de segurança , desempenho e tudo mais. Porem usar esses programas não vai mudar nada. Porem o xampp é mais fácil de usar. Enviado de meu LG-K350 usando Tapatalk Foi lançado matérias recentemente falando sobre os diversos problemas ligados as falhas do Windows pra ter ideia no momento o sistema da Microsoft mais seguro é o Windows 8.1 ( """seguro""") em comparação aos outros Windows. Enviado de meu LG-K350 usando Tapatalk1 ponto
-
Dbo Rox V2 8.60 [Open Source][99% SEM BUGS]
Dbo Rox V2 8.60 [Open Source][99% SEM BUGS]
Junior Rolex reagiu a WhiteBubble por uma resposta no tópico
1 pontoQuem tem problema no site, só usarem um gesior ou modernacc qualquer, ultimamente não estou com tempo para colocar outro site. Pode reportar a vontade, não sou obrigado a arrumar e esse modernacc caso você não tenha lido o tópico não foi eu que criei, apenas adaptei para o server. Como você quer dar uma de mandão aqui vou dar uma resposta ao seu nivel: Se vira, gente como você nunca vou ajudar.1 ponto -
Aura atrás de Gamemasters
1 ponto@Digoshow obrigado por demonstrar interesse em trabalhar com a gente. Iremos aguardar mais pessoas, e irei passar para a nossa Staff discutir, e assim que sair o resultado, eu irei comunicar a todos.1 ponto
-
All bugs OTSERV - REVELADO ! -
1 pontoNo every eu utilizo 40, e o jogador que ultrapassa isso eu nao tenho quaisquer cuidados sobre isso. Apenas tento ajudar a usar o boosttimer acima do 60. Mas gostaria de lembrar que a CPU da maquina onde o every é hospedada é muito boa.1 ponto
-
All bugs OTSERV - REVELADO ! -
1 pontoOs kicks aleatorios são culpa dos jogadores e não do servidor. O que é facilmente editavel no bot do usuario. Não use packet acima do indicado pois você estará pondo seu servidor em risco. Caso jogadores reclamem de tomarem kicks por bot, apenas peça para alterarem boostime para um valor aceitavel dentro das configurações setadas pelo administrador do servidor. Exemplo: Se você configurou o packet para 25 (recomendavel até 40)... Então você pede para usarem boosttime acima do 70. E pronto. Se você usar acima de 40 você precisará de uma boa otimização de scripts do servidor e uma boa CPU. Caso contrario... CRASH1 ponto
-
(Resolvido)Sair Efeito em cima da conta GOD
global events function onThink(interval, lastExecution) for _, pid in ipairs(getPlayersOnline()) do if getPlayerGroupId(pid) >= 4 and not isPlayerGhost(pid) then doSendMagicEffect(getCreaturePosition(pid), math.random(28,30)) end end return true end1 ponto
-
(Resolvido)Sair Efeito em cima da conta GOD
(Resolvido)Sair Efeito em cima da conta GOD
Wase Wiss reagiu a Gustavo Ntos por uma resposta no tópico
1 pontoData/talkactions/scripts/ Cria um arquivo chamado adm.lua Coloque dentro function onSay(cid, words, param) efeito=1 segundos=120 repeatEff(cid, efeito, segundos) return true end -------By: Gustavo Ntos------- TalkActions.xml coloque: <talkaction access="4" words="!adm" event="script" value="adm.lua"/>1 ponto -
Ajuda erros na distro
Ajuda erros na distro
chateadoagr reagiu a Digoshow por uma resposta no tópico
1 pontoQual a versão do seu TFS? Bom, tenta ae.... Verifica se existe a Tag do Demollition1.lua no Spells.XML OBS: no Value o caminho deve estar assim: value="Demollition/Demollition1.lua" Ta dando o erro na linha 7, algo relacionada com ')' tente trocar '' por () ou vice versa, de uma olhada ae, caso não arrume poste o script em spoiler!1 ponto -
Compilando TFS 1.3 com vídeo-aula
Compilando TFS 1.3 com vídeo-aula
Digoshow reagiu a Bruno Minervino por uma resposta no tópico
1 pontoClica com o botão direito na Solution e vá em "Properties" (ALT + ENTER) depois selecione "Configurantion Properties".1 ponto -
Jogador perde O2 quando está no tile Sea
Boa observação! Vou tentar agora mesmo. Subyth, mesmo que não dê certo, vou te dar REP. Da forma como você me ajuda e tenho certeza que ajuda os outros do fórum não é normal :D Obrigado de novo, amigo. Fica Com Deus1 ponto
-
Jogador perde O2 quando está no tile Sea
Já tentou colocar todos os ids do piso de SEA em local del? local del = {'460', '1022', '1023'}1 ponto
-
Erro na copilaçao
1 ponto
-
Erro na copilaçao
Erro na copilaçao
chateadoagr reagiu a L3K0T por uma resposta no tópico
1 pontomude lua_register(m_luaState, "doPlayerSetSkillLevel", LuaScriptInterface::luaDoPlayerSetSkillLevel); para lua_register(m_luaState, "doPlayerSetSkillLevel", LuaInterface::luaDoPlayerSetSkillLevel);1 ponto -
Item que adiciona 10 dias de premium account
data/actions/scripts cria um arquivo em lua chamado diasvip.lua e add esse script dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) local dias = 10 -- quantidades de dias vips que vai add doPlayerAddPremiumDays(cid, dias) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ganhou " .. dias .. " premium.") doRemoveItem(item.uid, 1) end data/actions e abra o actions.xml e add essa tag: <action itemid="1234" event="script" value="diasvip.lua"/> em itemid você bota o id do item que ao player clicar, vai add dias vips!1 ponto
-
Aura atrás de Gamemasters
1 pontoFormulário Idade: 22 Anos A quanto tempo joga Tibia: Jun 06 2008 ou seja 8 anos, 6 meses e 12 dias! hehe Quantas horas disponíveis por dia: Disponivel a ficar de 2 a 3 horas por dia/noite, sendo que varia, dependendo do dia até mais, mais 2/3horas é certeza! Discord: Digoshow #3970 Você se considera justo? Porque?: Bom, me considero justo por tratar todo mundo sempre da mesma forma de igualdade, sou uma pessoa que segue regras, sou educado, nunca peguei nada de ninguém, sei lhe dar com cada tipo de situações, e acredito que dois errados não tornam um certo, ou é certo ou errado, mais a e também depende do que você acha justo! Porque você gostaria de participar da Staff de Aura: Porque eu gosto de levar as coisas a sério, e recentemente venho acompanhando seus Updates, e realmente achei incrível, e acho que tenho uma boa disponibilização para fazer parte da Staff e um grande conhecimento na área de Tibia, como Jogador e como ADM também, enfim, não sou e nem quero ser o melhor nem o pior, quero ser eu, afinal estamos cada dia aprendendo cada dia mais, já tive 2 Otservers Baiks onde ficou ambos online por 3 Meses cada, chegando em 1 semana a 108 players online, porem foi apenas para testar, assim que fechei começei a arrumar os Bugs encontrados e Updates, e acabei deixando esse projeto armazenado! Bom é isso ae, to disponivel caso seja escolhido!1 ponto
-
(Resolvido)Trocar premium points no trade
(Resolvido)Trocar premium points no trade
Digoshow reagiu a Ed.Specter por uma resposta no tópico
1 pontoEm luascript.h, adicione essa linha: static int32_t luaDoStartTrade(lua_State* L); coloca abaixo de linhas parecidas. Em luascript.cpp, adicione isso: //doStartTrade(cid, target, item) lua_register(m_luaState, "doStartTrade", LuaInterface::luaDoStartTrade); coloca perto de linhas parecidas. e em luascript.cpp ainda. coloca isso também: (perto de algo parecido) int32_t LuaInterface::luaDoStartTrade(lua_State* L) { ScriptEnviroment* env = getEnv(); Item* item = env->getItemByUID(popNumber(L)); if(!item) { errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* target = env->getPlayerByUID(popNumber(L)); Player* player = env->getPlayerByUID(popNumber(L)); if(!player || !target) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(g_game.internalStartTrade(player, target, item)) { lua_pushboolean(L, true); return 1; } return 1; } todos os créditos da função para OneShot! exemplo de uso: local item = doPlayerAddItem(cid, 1234) doStartTrade(cid, target, item) dai é só criar um talkactions, usa como base esse que você comentou ai. e cria um onTradeAccept(cid, target, item). o talkactions para chamar a função doStartTrade, que vai simular o trade, e o tradeAccept para quando o trade for aceito.1 ponto -
[Anunciar Morte] Fulano acabou de morrer para Ciclano
Salve galerinha do TK. A tempos algumas pessoas vem me pedindo sistema simples de anunciar morte, visto bastante em servidores de wars, baiaks e demais servidores. Então resolvi fazer e trazer aqui para vocês do TK. Sistema simples e legas, quanto um player morrer para outro player irá aparecer no Default: "Nome do player que morreu" acabou de ser humilhado pelo jogador "Nome do player que matou" Acho que esse sistema deixa a galera louca, caçando players e zoando então resolvi trazer pra cá. Primeiramente em creaturescripts.xml adicione a seguinte linha: <event type="kill" name="anunciarmorte" event="script" value="anunciar_morte.lua"/> Pós adicionar, crie um arquivo com o nome de anunciar_morte.lua e coloque dentro da pasta creaturescripts/scripts com o seguinte conteúdo: function onKill(cid, target, lastHit) if not isPlayer(target) or not isPlayer(cid) then return true end doBroadcastMessage(""..getCreatureName(target).."["..getPlayerLevel(target).."] acabou de ser humilhado pelo jogador "..getCreatureName(cid).."["..getPlayerLevel(cid).."].", MESSAGE_STATUS_CONSOLE_ORANGE) return true end E por fim vá até creaturescripts/scripts e abra seu login.lua, abaixo de: registerCreatureEvent(cid, "Mail") ou qualquer linha parecida com registerCreature... adicione a seguinte linha: registerCreatureEvent(cid, "anunciarmorte") Pronto, finalizado! Só isso? Sim script simples e divertido! Qualquer dúvida me comunique Créditos: Absolute.1 ponto
-
Como salvar a alteração ?
Como salvar a alteração ?
Dudu A Lenda reagiu a xluanbrx por uma resposta no tópico
1 pontoBom eu editei umas parada no MAP com a conta do GOD e dei /save dai reiniciei o server e voltou sem as alterações feitas no mapa , como faço pra editar e salvar e qual o comando pra isso ?1 ponto -
(Resolvido)Como Remover Protection Zone RME
(Resolvido)Como Remover Protection Zone RME
PokeKingdoms reagiu a Rusherzin por uma resposta no tópico
1 pontoSim, selecione a opção que adiciona a PZone e segure ctrl ao mesmo tempo e passe nos tiles onde tem PZone.1 ponto