Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/23/17 em todas áreas
-
hasSpaceInContainer c++
Drakopoulos e 4 outros reagiu a Strogman por um tópico no fórum
hasSpaceInContainer é uma função que retorna true ou false, ela checa se tem algum espaço livre na mochila, se você tiver carregando uma mochila dentro de uma mochila ela checa a primeira mochila e se não tiver espaço ela checa a outra mochila. em game.cpp em baixo de: void GameshowHotkeyUseMessage(Player* player, Item* item){ int32_t subType = -1; if(item->hasSubType() && !item->hasCharges()) subType = item->getSubType(); const ItemType& it = Itemitems[item->getID()]; uint32_t count = player->__getItemTypeCount(item->getID(), subType, false); char buffer[40 + it.name.size()]; if(count == 1) sprintf(buffer, "Using the last %s...", it.name.c_str()); else sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str());} adicione: bool GamehasSpaceInContainer(Container* container){ if(container->size() < container->capacity()) return true; for(int slot = 0; slot <= (container->size()-1); slot++) { Item* item = container->getItem(slot); if(item->getContainer()) { if(hasSpaceInContainer(item->getContainer())) return true; } } return false;} em game.h em baixo de: bool playerReceivePing(uint32_t playerId); adicione: bool hasSpaceInContainer(Container* container); em luascript.cpp em baixo de: int32_t LuaScriptInterfaceluaGetCreatureName(lua_State* L){ //getCreatureName(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushstring(L, creature->getName().c_str()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} adicione: int32_t LuaScriptInterfaceluaHasSpaceInContainer(lua_State* L){ //hasSpaceInContainer(container) ScriptEnviroment* env = getEnv(); Container* container = env->getContainerByUID(popNumber(L)); if(!container) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(g_game.hasSpaceInContainer(container)) lua_pushboolean(L, true); else lua_pushboolean(L, false); return 1;} em baixo de: //getCreatureName(cid)lua_register(m_luaState, "getCreatureName", LuaScriptInterfaceluaGetCreatureName); adicione: //hasSpaceInContainer(container)lua_register(m_luaState, "hasSpaceInContainer", LuaScriptInterfaceluaHasSpaceInContainer); em luascript.h em baixo de: static int32_t luaGetCreatureName(lua_State* L); adicione: static int32_t luaHasSpaceInContainer(lua_State* L); exemplo: if hasSpaceInContainer(container) then funcao()else sendCancel(cid, "desculpe, voce nao tem espaço na mochila")end5 pontos -
Não sei se já possui no seu servidor, crie um arquivo em creaturescripts/scripts chamado protecao.lua coloque isso function onDeath(cid, corpse, deathList)if isPlayer(cid) thendoSetCreatureDropLoot(cid, false)end return trueend abra o login.lua e coloque isso antes do ultimo return true registerCreatureEvent(cid, "protecao") agora em creaturescripts.xml coloque <event type="death" name="protecao" event="script" value="protecao.lua"/> bom, esse mini-script é para evitar que jogadores dropem loot ao morrer.4 pontos
-
Nogard Graphic Gallery
JonatasLucasf e um outro reagiu a Nogard por um tópico no fórum
E aí pessoal, beleza? Este tópico servirá como minha galeria gráfica (não apenas sprites), vou atualizando. Confere aí! (:2 pontos -
OtPokemon Revolution
ianmacero reagiu a RobsonSilva por um tópico no fórum
Bom Dia, Boa Tarde e Boa Noite! Galera do xtibia venho aqui trazer meu server pda com source! eu parei com otserv então achei melhor divulgar a base pra ajudar muitas pessoas! informações Do Server! [+] Server Open Source[+] Old Client[+] addonbox System 100%[+] Boost Stone System 100%[+] Shiny Stone System 100%[+] Addon System 100%[+] Bike System 100%[+] Respawn de Shiny Aléatorio[+] Respawn do Regice, Regirock, Registell 100% drop deles 100% [+] Quests: Igual do Otp, e adicionei a quest do Lugia, [+] quais quest tem? > a inicial, punch stone, venom stone, rock stone, pesadelo, lugia, dark stone, Hearth Stone, Farol, Halloween, quest do meta! [+] Balanceado alguns pokemon's shiny! [+] Mapa ta perfeito, com Johto 80% ainda falta termina![+] 1º 2º 3º 4º Geração algumas geração completo! [+] Server sem as dll ta tudo compilado pra linux! gostou do server? então já deixa aquela REP pra ajudar <3 Base 100% Rodando em WINDOWS: http://www.mediafire.com/file/wlyy3ajv3prt6jz/OtPokemon+Revolution+100%+Windows.zip Client: http://www.mediafire.com/file/bo125v1u1dtntn4/OtPokemon+Revolution+Oficial+1.0.rar Source: http://www.mediafire.com/file/wws4x8ns522tqeq/source+original.zip Base 100% Rodando em LINUX: http://www.mediafire.com/file/bd2qxy9q5gzaxow/Server+OtPokémon+Revolution.zip Scan Da Base: https://www.virustotal.com/pt/file/7a84a39ff39a442b5bfff34b007054c88b8e5ca7e17b9fca67c782f23afc7db6/analysis/1484058262/ Scan da Source: https://www.virustotal.com/pt/file/87d150406173bd6063ef1dae5aa67444e8aebfc9fb380c45050adc69d0aa3b7b/analysis/1483997818/ Scan Do Client: https://www.virustotal.com/pt/file/73e75ee08142f7d79a8fe6d495e50d6cbd8e6a52ad0430ce4aa464cd9991e6ac/analysis/1484058401/1 ponto -
Dropando pokemon ao morrer
Hisokafailll reagiu a DuuhCarvalho por uma questão
Duvida resolvida, posso mover o tópico ?1 ponto -
Depende do que você quer fazer exatamente, enquanto algum (qualquer) valor for retornado para "matador", seu while continuará sendo executado. Isso geraria um loop eterno e travaria seu servidor, haha.1 ponto
-
nil = nada function onSay (cid, words, param) if param == nil then return doPlayerSendCancel(cid, "Escreva o parâmetro.") and false end print (param) end1 ponto
-
Acredito que seja em data/npc/lib/npcsystem/main.lua nessa linha -- The word for requesting trade window. For more information look at the top of modules.lua SHOP_TRADEREQUEST = {'offer', 'trade'} Isso claro se você estiver usando TFS, se não, procure nas libs do seu npc1 ponto
-
deslogar player inativo
Hisokafailll reagiu a Fjinst por uma questão
No config.lua localizado na pasta do executavel do seu servidor procure por idleWarningTime = 1499 * 60 * 1000 idleKickTime = 1500 * 60 * 1000 Aqui você configura o tempo Vale lembrar que a cada 1000 representa 1 segundo caso você queira que seja só 20 segundos coloque assim idleWarningTime = 15 * 1000 idleKickTime = 20 * 10001 ponto -
Não testei, mas vê ai local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)setCombatParam(combat, COMBAT_PARAM_EFFECT, 52)setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 6, 12)local area = createCombatArea(AREA_CROSS5X5)setCombatArea(combat, area)local combat1 = createCombatObject()setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)setAttackFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 6, 12)local area1 = createCombatArea(AREA_CROSS5X5)setCombatArea(combat1, area1)local storageid = numerodastoragefunction onCastSpell(cid, var)if getPlayerStorageValue(cid, storageid) == 1 then --- aqui irá checar se o jogador possui a storagereturn doCombat(cid, combat1, var)else --- caso ele não houver a storage a magia ocorrera normalreturn doCombat(cid, combat, var) endend Configure sómente o numerodastorage no local lá1 ponto
-
Printar Tabela
rorix reagiu a DuuhCarvalho por uma questão
primeiro que dentro dos parêntesis você colocou um valor "nulo", pairs(config.testando), o correto seria : pairs(config), o for vai pegar os valores da tabela config, dentro do for que vc chama a tabela 'testando' (que está dentro da tabela 'config'). Vamos lá.. local config = {[1] = {testando = {4564, 87942}, name = "Allan"},[2] = {testando = {123, 4356}, name = "Wagner"}}for _, array in pairs(config) do --[[nesse cado o _ armazena os index, que são os valores que estão em [] na tabela, \/]]-- print(_) --[[ quando não definido, por padrão é 1, 2, 3.., ou seja o resultado do print será 1 e 2 (neste caso)]]--end--resultado do print> 1--resultado do print> 2------------------------------------------------------------local config = {[1] = {testando = {4564, 87942}, name = "Allan"},[2] = {testando = {123, 4356}, name = "Wagner"}}for _, array in pairs(config) do --[[o array armazena os valores contido no index ( [1] = ARRAY ), nesse caso, \/ ]]-- print(array) --[[em cada index temos uma tabela ( [1] = {...}, [2] = {...} )]]--end--resultado do print> table: 0x21a4f00--resultado do print> table: 0x21a2f80---------------------------------------------------------------[[ para chamar valores que estão dentro de uma variavel basta usar 'array.variavel' EX: ]]--local config = {[1] = {testando = {4564, 87942}, name = "Allan"},[2] = {testando = {123, 4356}, name = "Wagner"}}for _, array in pairs(config) do print(array.name)end--resultado do print> Allan--resultado do print> Wagner----------------------------------------------------------------[[ Ahhhhh, então basta usar 'array.testando' que eu vou ter os valores da tabela 'testando' que esta dentro da tabela 'config' ?!..tecnicamente sim, vc vai chamar a tabela, mas não terá os valores que estão dentro, a não ser que vc precise apenas da tabela,como no caso de Position.. vamos na pratica]]--print(array.testando)>> table: 0x7e10e0 -- o print te dá as tabela, mas não te mostra oq tem dentro..>> table: 0x7e0eb0-- as regras para operar uma tabela dentro do for não mudam.. -- se quer chamar um valor especifico use NomeDaTabela[index] (testando[1])print(array.testando[1])>> 4564>> 123print(array.testando[2])>> 87942>> 4356-------------------------------------------------Para printar tudo que está dentro da tabela testando basta usar outro for--assim como você imaginou, porém vc pegou o tamanho do array (#array), o correto seria #array.testando--vamos para a praticalocal config = {[1] = {testando = {4564, 87942}, name = "Allan"},[2] = {testando = {123, 4356}, name = "Wagner"}}for _, array in pairs(config) do for i = 1, #array.testando do -- de 1 a 2(temos 2 valores em cada tabela 'testando') print(array.testando[i]) -- printa array.testando[1] e array.testando[2] endend>> 123>> 4356>> 4564>> 879421 ponto -
Novo Sistema De /ir
rorix reagiu a DuuhCarvalho por um tópico no fórum
Caro membro, seu tópico foi movido de Scripts > Otserv > Actions, talkactions e moveevents para Soluções > Recepção Xtibia > Lixeira Pública.1 ponto -
Novo xTibia - 2017
rorix reagiu a DuuhCarvalho por um tópico no fórum
Vamos fazer desse portal um Xtibia novamente1 ponto -
(resolvido) pegar posiçao em tabela
rorix reagiu a DuuhCarvalho por uma questão
usa assim, simples e fácil.. local config = {--[storage] = {pos}[1000] = {x = 1000, y = 1000, z = 6},[2001] = {x = 2000, y = 1512,z = 5},[3003] = {x = 2050, y = 1015,z = 7}}for p, pid in pairs(config) do if getPlayerStorageValue(cid, p) >= 1 then -- [se o player tiver qualquer uma das storage's acima... doPlayerTeleporthing(cid, pid) -- o mesmo será teleportado para a pos referente na tabela] end -- EX: se a storage 1000 do player for maior ou igual a 1, então..end -- ele será teleportado para a pos {x = 1000, y = 1000, z = 6}..1 ponto -
Status
rorix reagiu a DuuhCarvalho por uma questão
pra eu finalizar, preciso saber se vc tem source e se consegue editar... cria um arquivo lua em talkactions/scripts e coloca isso dentro: testa.. não consigo testar em 1.2 (obs: vai ser preciso adicionar comando na source! aguardo a resposta ^) function onSay(player, words, param) local config = { name = player:getName(), -- checa o nome do player level = player:getLevel(), -- checa o level do player vocation = player:getVocation():getName(), -- checa a vocação do player vip = player:getPremiumDays() -- checa a quantidade de dias premium } local armadura = 0 local earth = 0 local fire = 0 local ice = 0 local physical = 0 local holy = 0 local death = 0 local energy = 0 for i=1, 10 do local item = player:getSlotItem(i) if item.uid > 0 then if i == getItemInfo(item.itemid).wieldPosition then local att = getItemInfo(item.itemid).defense if att == 0 then att = getItemInfo(item.itemid).armor end armadura = armadura + att earth = earth + getItemInfo(item.itemid).absorbPercentEarth fire = fire + getItemInfo(item.itemid).absorbPercentFire ice = ice + getItemInfo(item.itemid).absorbPercentIce physical = physical + getItemInfo(item.itemid).absorbPercentPhysical holy = holy + getItemInfo(item.itemid).absorbPercentHoly death = death + getItemInfo(item.itemid).absorbPercentDeath energy = energy + getItemInfo(item.itemid).absorbPercentEnergy end end end player:popupFYI(cid, "Name: "..config.name.."\nLevel: "..config.level.."\nVocation: "..config.vocation.."\nArmadura: "..armadura.."\nVip: "..config.vip.." Days\nEarth: "..earth.."\nFire: "..fire.."\nIce: "..ice.."\nPhysical: "..physical.."\nHoly: "..holy.."\nDeath: "..death.."\nEnergy: "..energy) return true end1 ponto -
[TFS 0.4] Alguém edita essa script de !pvp on e !pvp off ? Por Favor
rorix reagiu a DuuhCarvalho por uma questão
não sei o motivo do erro. testa assim : (talkactions) function onSay(cid, words, param, channel) if param == "" then return doPlayerSendCancel(cid, "Escolha se quer deixar o PVP on ou off.") end if param == 'on' then doPlayerSetStorageValue(cid, 123456, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ativou o PVP.") elseif param == 'off' then doPlayerSetStorageValue(cid, 123456, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você desativou o PVP.") else doPlayerSendCancel(cid, "Escolha se quer deixar o PVP on ou off.") endreturn trueend1 ponto