Postado Março 13, 2017 8 anos 12 minutos atrás, robi123 disse: @DukeeH Cara voce é fera, vou testar aqui ja te digo @DukeeH eu deixei assim ó -- agora ta batendo um pouco menos que de dragon o/ se acha que se mudar na source poderia ficar melhor no sistema.. do server não ficar muito pesado calculando todas essas informações em scripts? function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then doTargetCombatHealth(attacker, cid, combat, -value*0.9, -value*0.9, 255) end return true end O problema do "um pouquinho menos" é porque nas versões mais velhas, essa função onStatsChange tem um problema: Você hita 200 do player, (descontando defesas) Essa função entra, pega o 200, multiplica por 2. Esse valor (400) passa de novo pela defesa. Estranho você colocar 0.9 e ele bater mais, isso ai era pra reduzir o dano em 10%. Quanto mais ali mais dano vai dar, vai tentando adequar a como ficar melhor. Pesado eu não diria, porque lua é bem leve. Mas pelas questões que falei a cima o melhor mesmo seria nas sources, ainda não tirar um tempo pra procurar. Mas em algum lugar das sources ele declara que os danos em player (seja magia ou ataque) são divididos pela metade dos causados em monstros. Se retirar isso ficaria igual e de forma mais limpa que em lua.
Postado Março 13, 2017 8 anos Autor @DukeeH do jeito que eu coloquei ali ficou show do jeito que eu precisava mesmo nem precisei mexer nos itens..unica coisa que reparei é que sem equipe e com equip muda pouca coisa.. sem equip bate uns 500 com os melhor equipe do jogo bate 480 mesmo assim se me deu uma luz o/ depois vou adequar os equips com um pouco mais de def se voce achar algo das sources da um toque Editado Março 13, 2017 8 anos por robi123 letras erradas (veja o histórico de edições)
Postado Março 13, 2017 8 anos 7 minutos atrás, robi123 disse: @DukeeH do jeito que eu coloquei ali ficou show do jeito que eu precisava mesmo nem precisei mexer nos itens..unica coisa que reparei é que sem equipe e com equip muda pouca coisa.. sem equip bate uns 500 com os melhor equipe do jogo bate 480 mesmo assim se me deu uma luz o/ depois vou adequar os equips com um pouco mais de def Brother, você sabe compilar? Abre combat.cpp nas sources, procura por CombatHealthFunc. Essa função e a de baixo (CombatManaFunc) Troca as duas por isso: bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor)) return false; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeMana(caster, target, change)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } Ai compila e testa sem o creaturescript, por ser uma versão das mais antigas, acho melhor manipular os danos por sources mesmo, ai acho que o *2 seria o valor correto (dobro).
Postado Março 13, 2017 8 anos Autor 1 minuto atrás, DukeeH disse: Brother, você sabe compilar? Abre combat.cpp nas sources, procura por CombatHealthFunc. Essa função e a de baixo (CombatManaFunc) Troca as duas por isso: bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor)) return false; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; if(!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK) change = change*2; if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK) change = change; if(!g_game.combatChangeMana(caster, target, change)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } Ai compila e testa sem o creaturescript, por ser uma versão das mais antigas, acho melhor manipular os danos por sources mesmo, ai acho que o *2 seria o valor correto (dobro). Eu não sei compilar até abri um chamado ali pra ver se alguém compilava pra mim em 64bits baixei varios programas e nao deu certo se voce tiver algum dica pra me passar ou site Minha Source @DukeeH eu quase consigo fazer mais da este erro eu tentei segui um tuto na net mais nao sei oque falta.. 1>ResourceCompile: 1> All outputs are up-to-date. 1>ManifestResourceCompile: 1> All outputs are up-to-date. 1>LINK : warning LNK4044: unrecognized option '/lboost_system'; ignored 1>LINK : warning LNK4044: unrecognized option '/lgmp'; ignored 1>LINK : warning LNK4044: unrecognized option '/llua5.1'; ignored 1>LINK : warning LNK4044: unrecognized option '/lmysql'; ignored 1>LINK : warning LNK4044: unrecognized option '/lboost_regex'; ignored 1>LINK : warning LNK4044: unrecognized option '/lsqlite3'; ignored 1>LINK : warning LNK4044: unrecognized option '/lwsock32'; ignored 1>LINK : warning LNK4044: unrecognized option '/lxml2'; ignored 1>LINK : warning LNK4044: unrecognized option '/lws2_32'; ignored 1>LINK : warning LNK4044: unrecognized option '/s'; ignored 1>LINK : warning LNK4044: unrecognized option '/lboost_filesystem'; ignored 1>LINK : warning LNK4044: unrecognized option '/sqlite'; ignored 1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification 1> Generating code 1> Finished generating code 1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 1> 1>Build FAILED. 1> 1>Time Elapsed 00:03:31.97 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Postado Março 14, 2017 8 anos Autor @DukeeH Parcero esse seu combat.. deu certinhoo... um outro rapaz compilo pra mim e eu testei. muito obrigado ai eim o/
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.