Ir para conteúdo

DuuhCarvalho

Conde
  • Total de itens

    988
  • Registro em

  • Última visita

  • Dias Ganhos

    21

Tudo que DuuhCarvalho postou

  1. arruma direitinho o tópico, coloca o script em spoiler, para que possamos te ajudar, vou da uma atenção sim, e com certeza outros também!
  2. da pra fazer diferente, nesse função que faz ele se mover, da pra colocar pra chegar a pos inicial, e se a pos atual estiver mt longe da inicial fazer o monster voltar pra pos inicial.. serve assim ?
  3. que eu lembro não.. vou vê se acho algo. Mas a pergunta é, o que vc quer ?
  4. isso é pq o onCombat é executado quando o cid combate target, ou seja, existe um target, quando ele perde o target não executa mais o onCombat.. quando você falar que perde o target, é pq o monster simplesmente parou de atacar?
  5. ok, quando chegar em casa, vejo o que posso fazer por você!
  6. tem sistema de refinamento no fórum, já tentou algum ?
  7. o correto é : doItemSetAttribute(itemEx.uid, "aid", 123) eu não lembro se da pra fazer com magic, tenta esses: (so pra testar) doItemSetAttribute(itemEx.uid, "magic", 3)doItemSetAttribute(itemEx.uid, "magiclevel", 3)doItemSetAttribute(itemEx.uid, "magiclevelpoints", 3) se nada funcionar acredito que vai ser preciso mexer nas source. ou dependendo do q você quer fazer, da pra fazer de outras formas..
  8. Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.
  9. vamos lá, estou começando em c++ agora, e acredito que o código poderia ficar menor, mas também não é algo absurdo. Com os testes que eu fiz funcionou perfeitamente, caso venha a dar algum bug, é só avisar.. em monster.cpp encontre - bool Monster::selectTarget(Creature* creature) -- e substitua por essa: bool MonsterselectTarget(Creature* creature){#ifdef __DEBUG__ stdcout << "Selecting target... " << stdendl;#endif if(!isTarget(creature)) return false; CreatureListiterator it = stdfind(targetList.begin(), targetList.end(), creature); if(it == targetList.end()) { //Target not found in our target list.#ifdef __DEBUG__ stdcout << "Target not found in targetList." << stdendl;#endif return false; } Player* player = creature->getPlayer(); Monster* monster = creature->getMonster(); stdstring value; stdstring check = "1"; if (getName() == "Rat") { if (player && ( !(player->getStorage("400",value)) || check != value ) ) return false; else if (monster && ( monster->isSummon() ) ) { monster->getMaster()->getStorage("400",value); if(!value.empty() && value != check) return false; } } if((isHostile() || isSummon()) && setAttackedCreature(creature) && !isSummon()) DispatchergetInstance().addTask(createTask( boostbind(&GamecheckCreatureAttack, &g_game, getID()))); return setFollowCreature(creature, true);} ainda em monster.cpp encontre: void MonsterdoAttacking(uint32_t interval){ if(!attackedCreature || (isSummon() && attackedCreature == this)) return; abaixo coloque: Player* player = attackedCreature->getPlayer(); Monster* monster = attackedCreature->getMonster(); stdstring value; stdstring check = "1"; if (getName() == "Rat") { if (player && ( !(player->getStorage("400",value)) || check != value ) ) { setFollowCreature(NULL); setAttackedCreature(NULL); searchTarget(TARGETSEARCH_NEAREST); } else if (monster && ( monster->isSummon() ) ) { monster->getMaster()->getStorage("400",value); if(!value.empty() && value != check) { setFollowCreature(NULL); setAttackedCreature(NULL); searchTarget(TARGETSEARCH_NEAREST); } } }
  10. Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.
  11. Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.
  12. Caro membro, seu tópico foi movido de Otserv > Suporte Otserv para Suporte Otserv > Otserv > Pedidos e Dúvidas Resolvidos.
  13. 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>> 87942
  14. Caro membro, seu tópico foi movido de Scripts > Otserv > Actions, talkactions e moveevents para Soluções > Recepção Xtibia > Lixeira Pública.
  15. Vamos fazer desse portal um Xtibia novamente
  16. Caro membro, seu tópico foi movido de Tutoriais de Programação > Tutoriais Otserv > Otserv > Suporte Programação para Soluções > Recepção Xtibia > Lixeira Pública.
  17. 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}..
  18. DuuhCarvalho

    Status

    seria necessário. Eu fiz em tfs 0.3.6, e tive que incluir umas linhas na source, mas pra ser sincero eu não sei se tem uma função no 1.2 que retorne o absorbPercent do item, mas acredito que não. dessa forma que eu fiz, eu testei e funcionou no meu tfs. ; \
  19. DuuhCarvalho

    Status

    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 end
  20. 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 trueend
  21. DuuhCarvalho

    Status

    quando eu chegar em casa eu faço. Hoje anoite.
  22. esse é seu config lua ? tenta configurar esse : no fórum tem diversos topicos, ensinando passo a passo do config.lua
  23. acho que tem. vá em creaturescripts cria um arquivo lua e coloca isso dentro: local lend = {"Mew","Mewtwo", -- adicione o nome de todos os pokemons lendarios."Articuno"}function onSpawn(cid)for i = 1, #lend do if getCreatureName(cid) == lend[i] then doBroadcastMessage("Monster "..lend[i].." was created.") endendreturn trueend vá em creaturescripts.xml e coloca a tag
  24. posta seu config.lua e manda o nome da database.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...