Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [COMMENT ganatickets]
- Esta funcion es la que da paso a los tix ganados.
- Recibe la cantidad de tix del cuerpo "<ARGN>" (pero está sacado al "local.tix") y la devuelve en el "RETURN " si el return es igual a 0, no se gana tickets (penalización?) en cuyo caso habría que poner un mensaje o algo en esta función de igual modo se puede poner una bonificación como en la "Power Hour".
- [function f_niveles_SetExpToLvl]
- if (<tag.lvl><1)
- tag.lvl=1
- endif
- local.base=((8 * <nivel>) + <f_niveles_diffcl>)
- local.nobase=(35 +(<def.server_players_stats_puntos_nivel> * <nivel>))
- tag.exptolvl = <eval <local.base> * <local.nobase>>// × RF(CL)
- return <dtag.exptolvl>
- [function f_niveles_SetExpByStats]
- local.sum=<eval (<statsum_exp>/2)+<propsum>> //+(<skilltotal>/10)
- local.sum +=<eval (<nivel>*<def.niveles_exp_bonus_nivel_base>) * <def.niveles_exp_bonus_nivel_porcent>>
- local.sum +=<muldiv <local.sum>,<def.niveles_exp_bonus_region_<dtag.region.type>>,100>
- if (<tag0.paragon>)
- local.sum +=<muldiv <local.sum>,<def.server_npcs_paragon_bonus_exp>,100>
- endif
- return <dlocal.sum>
- [function f_niveles_diffcl] //incremento de dificultad segun el nivel actual
- // if (<nivel>>100)
- // return <eval 5*(<nivel>-5>)
- // elseif (<nivel>>70)
- // return <eval 5*(<nivel>-10>)
- // elseif (<nivel>>50)
- // return <eval 5*(<nivel>-20>)
- // elseif (<nivel>>30)
- // return <eval 5*(<nivel>-30>)
- // else
- // return 0
- // endif
- return <eval 5*(<nivel>-(<nivel>/2))>
- [function f_niveles_GanaExp]
- local.tix=<f_niveles_GanaExp_Bonus <args>>
- tag0.tix +=<local.tix>
- while (<tag0.tix>>=<f_niveles_SetExpToLvl>)
- tag0.tix -=<f_niveles_SetExpToLvl>
- f_niveles_lvlup
- endwhile
- smgu=<def.tradu_<leng>_niveles_hasganado> <dlocal.tix> <def.tradu_<leng>_niveles_tickets> (Total:<dtag.tix>/<dtag.exptolvl>).
- [function f_niveles_lvlup]
- if (<tag.lvl><<def.niveles_maximo>)
- tag.lvl ++
- f_niveles_SetExpToLvl
- f_niveles_StatCap
- f_statcap_gain
- smgu=Has subido al nivel <dtag.lvl>!!
- else
- smgu=Ya tienes el nivel máximo.
- endif
- [FUNCTION f_niveles_GanaExp_Bonus]
- IF (<Isempty <ARGS>>)
- LOCAL.TIX={0 10}
- ELSE
- LOCAL.TIX=<ARGS>
- ENDIF
- if (<brain>)
- return 0
- endif
- IF (<Account.Tag0.BonusExp>)
- LOCAL.TIX +=<eval <local.tix>/2>
- Smgu=<DEF.tradu_<ACCOUNT.TAG.LANG>_niveles_deed_bonus>
- ENDIF
- IF (<Account.Tag0.DobleExp>)
- LOCAL.TIX *=2
- Smgu=Exp Bonus: <DEF.tradu_<ACCOUNT.TAG.LANG>_niveles_deed_bonusx2>
- ENDIF
- IF (<VAR.PowerHour>) //Si es la power hour
- VAR0.PowerHour_Exp +=<local.tix>
- LOCAL.TIX *=2 //Dobla los tix ganados?
- Smgu=<DEF.tradu_<ACCOUNT.TAG.LANG>_powerhour_nombre>: <DEF.tradu_<ACCOUNT.TAG.LANG>_powerhour_tix>
- ENDIF
- IF (<serv.rtime.format %j>==6) //Doble tix en reyes
- tag0.tix_navidad +=<local.tix>
- LOCAL.TIX *=2 //Dobla los tix ganados?
- Smgu=<DEF.tradu_<ACCOUNT.TAG.LANG>_niveles_reyes_nombre>: <DEF.tradu_<ACCOUNT.TAG.LANG>_niveles_reyes_tix>: <dtag.tix_navidad>.
- ENDIF
- IF ((<TAG0.NOTIX>) || (<VAR0.NoTix>)) //Si tiene este tag no gana tickets
- LOCAL.TIX=0
- ENDIF
- // IF (<EVAL <R100>+<LUCK>>>=100) //Aqui entra en juego la "luck" de OSI en un rand de 100 te dobla los tix (raro que pase) por lo tanto a mas "luck" mas posibilidades de que doble premio
- // LOCAL.TIX *=2
- // Smgu=<DEF.tradu_<ACCOUNT.TAG.LANG>_powerhour_tix1>
- // ENDIF
- RETURN <EVAL <LOCAL.TIX>>
- [function f_niveles_npc_death]
- // if (<isevent.E_CHAMPION_MINION>) || (<tag0.NoExp>)
- // return 0
- // endif
- ref1=<ARGO.UID>
- IF (<ref1>)
- ref1.tag.nodecay=1 //tags en los npcs
- ref1.tag.notradus=1 //no queremos que el sistema default de traducciones cambie el nombre, tenemos traduccion propia en t_corpse
- ref1.nivel=<nivel>
- ref1.Tag.Time=<Eval <SERV.Time>+2>
- endif
- if (<f_niveles_noexp> || (<src.f_niveles_noexp>)) //si se pone una penalizacion de no exp, por ej
- return 0
- endif
- if !(<combate>) //No es normal morir sin atackers, creamos log por si se puede/quiere investigar algo
- serv.log=<uid>, <name>, <baseid> muere en <region.name> (<p>) sin attackers
- return 0
- endif //si no esta en rango de niveles para recibir toda la exp
- local.calculo=<combate.getdamage.total> //comprogbamos cuanto daño se ha recibido en total
- for 0 <eval <combate.attackers>-1>
- ref1=<combate.attacker <local._for>>
- local.exp=<f_niveles_SetExpByStats>
- local.exp +=<f_niveles_get_npc_buff_bonus <local.exp>>
- local.exp +=<f_niveles_get_paragon_bonus <local.exp>>
- local.exp = <f_niveles_get_player_dmg_exp_porcent <ref1>,<local.calculo>,<local.exp>> //repartimos exp en funcion del %dam que hecho . //<muldiv <local.exp>,<muldiv <local.dam>,100,<local.calculo>>,100>
- local.a=<muldiv <local.exp>,<f_niveles_npc_GetLevelDiff <ref1>>,100>
- local.exp -=<local.a> //Obtiene la exp base teniendo en cuenta las diferencias de niveles
- ref1.f_niveles_GanaExp <local.exp> //funcion final que da la exp resultante
- endfor
- [function f_niveles_noexp] //aqui se bloquea el recibir exp. ej region.tag.evento_monsterbash=1
- if (<tag0.noexp>)
- return 1
- endif
- return 0
- [function f_niveles_get_player_dmg_exp_porcent]
- local.dam=<combate.tag.get.damage <argv[0]>> //calculamos el dam base <muldiv <local.dam>,100,<local.damage>>
- local.damporcent=<muldiv <local.dam>,100,<argv[1]>> //<eval (<local.dam>*100)/<argv[1]>> //calculamos que % de daño ha hecho en relacion al daño total
- local.expporcent=<muldiv <argv[2]>,100,<local.damporcent>> //<eval (<argv[2]>*100)/<local.damporcent>> //calculamos el %de exp resultante relativa al % de daño hecho.
- if (<local.expporcent><0)
- local.expporcent=0
- endif
- return <dlocal.expporcent>
- [function f_niveles_npc_GetLevelDiff] //reasigna la experiencia a dar reduciendola en un % igual al %de diferencia de niveles entre quien mata y quien muere
- ref1=<argv[0]>
- local.ret=<argv[1]>
- if (<ref1.nivel>><nivel>)
- local.ret=<eval (<ref1.nivel>-<nivel>)*<def.niveles_calculo_diff_por_level>> //<eval <dargv[1]>-<eval (<argv[1]>*((<ref1.nivel>-<nivel>)*2))/100>>
- if (<local.ret>><def.niveles_calculo_diff_cap>)
- local.ret=<def.niveles_calculo_diff_cap>
- endif
- endif
- return <local.ret>
- [function f_niveles_get_zd] //crea un divisor para los rangos de niveles, a mas nivel menos exp recibes por matar npcs de nivel inferior
- if (<nivel>>90)
- return 25
- elseif (<nivel>>80)
- return 21
- elseif (<nivel>>70)
- return 18
- elseif (<nivel>>60)
- return 16
- elseif (<nivel>>50)
- return 14
- elseif (<nivel>>40)
- return 13
- elseif (<nivel>>30)
- return 12
- elseif (<nivel>>20)
- return 11
- elseif (<nivel>>16)
- return 9
- elseif (<nivel>>12)
- return 8
- elseif (<nivel>>10)
- return 7
- elseif (<nivel>>8)
- return 6
- elseif (<nivel>>1)
- return 5
- endif
- [function f_niveles_get_npc_region_bonus] //devuelve el bonus de region que se aplica al crear el npc
- return <tag0.region.type>
- [function f_niveles_get_npc_buff_bonus] //aplica el porcentaje del npc_bonus
- return <qval <tag0.npc_bonus>?<eval (<argn>*<tag0.npc_buff>)/100>:0>
- [function f_niveles_get_paragon_bonus] //aplica el porcentaje del paragon (20%)
- return <qval <tag0.paragon>?<eval (<argn>*20)/100>:0>
- [function statsum_exp]
- return <eval (<str>+<muldiv <str>,<def.niveles_exp_bonus_str>,100>)+(<dex>+<muldiv <dex>,<def.niveles_exp_bonus_dex>,100>)+(<int>+<muldiv <int>,<def.niveles_exp_bonus_int>,100>)+(<maxhits>+<muldiv <maxhits>,<def.niveles_exp_bonus_maxhits>,100>)+(<maxstam>+<muldiv <maxstam>,<def.niveles_exp_bonus_maxstam>,100>)+(<maxmana>+<muldiv <maxmana>,<def.niveles_exp_bonus_maxmana>,100>)>
- [EOF]
Advertisement
Add Comment
Please, Sign In to add comment