Няма да е много лесно да се направи подобно нещо, тъй като ще трябва да се промени почти цялата система, което не е удачно. По-добър и лесен за направа вариант е да печелиш XP чрез правене щета, вместо директно нивото. Съответно когато направиш достатъчно щета, ще спечелиш достатъчно XP и ще получиш следващото ниво. Ето и плъгина:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <crxranks>
#include <hamsandwich>
#define DAMAGE_NEEDED 500.0
#define XP_ON_DAMAGE 15
new Float:g_fDamage[33]
public plugin_init()
{
register_plugin("CRXRanks: XP on Damage", "1.0", "OciXCrom")
RegisterHam(Ham_TakeDamage, "player", "OnTakeDamage", 1)
}
public client_putinserver(id)
g_fDamage[id] = 0.0
public OnTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
if(iAttacker == iVictim || get_user_team(iAttacker) == get_user_team(iVictim))
return
g_fDamage[iAttacker] += fDamage
while(g_fDamage[iAttacker] >= DAMAGE_NEEDED)
{
g_fDamage[iAttacker] -= DAMAGE_NEEDED
crxranks_give_user_xp(iAttacker, XP_ON_DAMAGE)
}
}
Ами то май е същото което и аз казах. Щом си написал 101 = 100 000 000 001, то 101 ще е последното ниво и когато го достигнеш ще трябва да се върнеш на 0. Ето ти прост плъгин за тази работа:iv69 написа: ↑03 Юли 2018, 11:46 Благодаря наистина за споделеното от вас, относно идеята за "зануляването".
Уважавам вашите мнения и не искам да споря.
Идеята ми бе друга и ще се опитам да обясня малко по-подробно:
Примерно за достигане на ранка (примерно 25) за първата "привилегия" бих направил XP-то така - че играча наистина да се потруди и да не му е "даром"... После : Той ще има поне 25 нива удоволствието да играе с тази привилегия (може би малко повече време и да се "борИ" за втората по-голяма привилегия, която започва от 50 ниво... После пак ще прави същото но оооще повече : за да получи накрая последната привилегия на 75 ниво...( самите стойности може да бъде увеличавани не в аритметична а в геометрична прогресия... за "по-трудно") И най-важното и най-важното това да не е последното ниво на системата - т.е. последното ниво няма да е 75Л. където ще получи последните "екстри"- а съответно нашия герой ще има удоволствието да се наслаждава още 25 нива( продължителността за игра през тези 25 нива - мoжем да си я определим дори на 100 години като напишем например 100 000 000 000 XP.
А накрая , край който пак ние си определяме - пишем например за 101 ниво - примерно 100 000 000 001XP = експирънса да става 0 XP , просто това ми бе идеята, обяснена образно - плъгина да праща при някоя стойност определена с квари в конфиг файла - пак в началото, но само определения играч... За да не бъдат ощетявани другите, и да не е "вечно натоварена" до безкрая и да не се налага ние сами да зануляваме.. а сам тя да се "превърта"
Дано съм бил ясен и не съм бил излишно подробен !!!
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <crxranks>
#define RESET_DELAY 1.0
new g_iMaxLevels
public plugin_init()
{
register_plugin("CRXRanks: Reset on Last Level", "1.0", "OciXCrom")
g_iMaxLevels = crxranks_get_max_levels()
}
public crxranks_user_level_updated(id, iLevel)
{
if(iLevel == g_iMaxLevels)
set_task(RESET_DELAY, "reset_user_xp", id)
}
public reset_user_xp(id)
crxranks_give_user_xp(id, crxranks_get_user_xp(id) * -1)