OciXCrom's Rank System [XP|Levels|Ranks]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom » 03 Юли 2018, 15:39

SkandaU написа: 03 Юли 2018, 08:22 Кроме, искам да те попитам дали е възможно плъгина да се нагласи да вдига ранк от кръв (damage attack), а не от убийства. Както са в момента, примерно до достигане на втори ранк са ти нужни 100 dmg, играча като ги набие да вдига ниво?
Няма да е много лесно да се направи подобно нещо, тъй като ще трябва да се промени почти цялата система, което не е удачно. По-добър и лесен за направа вариант е да печелиш 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)
	}
}
С този плъгин ще получаваш 15 XP на всеки 500 damage. Можеш да промениш стойностите в началото на кода. Разбира се, можеш да изключиш обикновените награди при убийство и прочие от .ini файла, с което ще получаваш XP само и единствено при правене щета. За напред може би ще добавя тази опция в самия плъгин.
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 , просто това ми бе идеята, обяснена образно - плъгина да праща при някоя стойност определена с квари в конфиг файла - пак в началото, но само определения играч... За да не бъдат ощетявани другите, и да не е "вечно натоварена" до безкрая и да не се налага ние сами да зануляваме.. а сам тя да се "превърта"
Дано съм бил ясен и не съм бил излишно подробен !!!
Ами то май е същото което и аз казах. Щом си написал 101 = 100 000 000 001, то 101 ще е последното ниво и когато го достигнеш ще трябва да се върнеш на 0. Ето ти прост плъгин за тази работа:

Код за потвърждение: Избери целия код

#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)

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от iv69 » 03 Юли 2018, 15:53

SkandaU написа: 03 Юли 2018, 13:48
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 , просто това ми бе идеята, обяснена образно - плъгина да праща при някоя стойност определена с квари в конфиг файла - пак в началото, но само определения играч... За да не бъдат ощетявани другите, и да не е "вечно натоварена" до безкрая и да не се налага ние сами да зануляваме.. а сам тя да се "превърта"
Дано съм бил ясен и не съм бил излишно подробен !!!

Добавено преди 58 секунди:
Кроме, искам да те попитам дали е възможно плъгина да се нагласи да вдига ранк от кръв (damage attack), а не от убийства. Както са в момента, примерно до достигане на втори ранк са ти нужни 100 dmg, играча като ги набие да вдига ниво?
Идеята ти е интересна, дори аз преди много, много години съм се опитвал да убедя някой скриптър(тогава нямаше много такива и добри като сега), да направи статс-а да отчита не по направени убийства а по взета кръв (damage attack), но... Не стана! Но специално за ранковата система мисля, че не е удачно..., предполагам няма да може да се правят вариациите със печеленето на повече XP за един kill(съответно вече damage attack) при печелене на такава "extra", т.е. орязват се възможностите и вариабилността на плъгина !
Мисля си, че double damage плъгина в тази ситуация с випа ще помогне, а и това главно ми трябва в зомби сървърите, който може да бие повече damage ще вдига по бързо ранговете.
Ако ти трябва за "фиктивен damage" само за в tab , да ще помогне за вдигане на ранка, защото аз мисля , че иначе този плъгин показва double damage само за картата но не го добавя с плъгина statsx.amxx в stats_logging... , т.е. не се отчита нито към топ15 нито никъде а е само на книга до смяна на картата... Но специално кое как е в зомби-сървърите не знам и може там да става..., но за обикновените - тия плъгини дето дават два пъти повече килове или деймидж - са " фалшиви ... само в tab ги има ... :)

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom » 03 Юли 2018, 16:20

iv69 написа: 03 Юли 2018, 15:53Ако ти трябва за "фиктивен damage" само за в tab , да ще помогне за вдигане на ранка, защото аз мисля , че иначе този плъгин показва double damage само за картата но не го добавя с плъгина statsx.amxx в stats_logging... , т.е. не се отчита нито към топ15 нито никъде а е само на книга до смяна на картата... Но специално кое как е в зомби-сървърите не знам и може там да става..., но за обикновените - тия плъгини дето дават два пъти повече килове или деймидж - са " фалшиви ... само в tab ги има ... :)
Не, това се отнася само за убийствата, тъй като няма как да се промени броят на убийства преди да убиеш играч и бройката се добавя отделно. В случая с щетата, тя може да се "прихване" от страна на плъгин и да се промени преди да е направена, съответно всички останали плъгини ще я отчетат променената стойност правилно. Така, в нашия случай, ако играчът прави двойна щета, ще получава и двойно XP.

ПС: ъпдейтнах Chat Manager да може да се слагат префикси според нивото.

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от iv69 » 03 Юли 2018, 16:38

OciXCrom™ написа: 03 Юли 2018, 16:20
iv69 написа: 03 Юли 2018, 15:53Ако ти трябва за "фиктивен damage" само за в tab , да ще помогне за вдигане на ранка, защото аз мисля , че иначе този плъгин показва double damage само за картата но не го добавя с плъгина statsx.amxx в stats_logging... , т.е. не се отчита нито към топ15 нито никъде а е само на книга до смяна на картата... Но специално кое как е в зомби-сървърите не знам и може там да става..., но за обикновените - тия плъгини дето дават два пъти повече килове или деймидж - са " фалшиви ... само в tab ги има ... :)
Не, това се отнася само за убийствата, тъй като няма как да се промени броят на убийства преди да убиеш играч и бройката се добавя отделно. В случая с щетата, тя може да се "прихване" от страна на плъгин и да се промени преди да е направена, съответно всички останали плъгини ще я отчетат променената стойност правилно. Така, в нашия случай, ако играчът прави двойна щета, ще получава и двойно XP.

ПС: ъпдейтнах Chat Manager да може да се слагат префикси според нивото.
Пак Благодаря !
Веднага ще пробвам новия Chat Manager с двата префикса пред името, и дано е перфектен като всичко твое досега :clap:
Да очакваме единствено ъпдейта на ранксистемата за получаване от играчите на определените "флагове" при достигане на определени нива и да пробваме ... Предполагам , че ще стане страхотна системата, съчетано с идеята за таван и рестарт на XP-a . Благодаря, също и за "простичкия" (за теб обаче) плъгин за "рестарта" !

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom » 03 Юли 2018, 17:25

By the way, сега се досетих, че може да се осъществи идеята чрез щета да се получават нива, и то по доста лесен начин. Просто мога да направя 1 XP = 1 damage и щетата ще е еднаква с XP-то.

Аватар
SkandaU
Извън линия
Потребител
Потребител
Мнения: 213
Регистриран на: 09 Яну 2017, 12:37
Се отблагодари: 45 пъти
Получена благодарност: 22 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от SkandaU » 03 Юли 2018, 17:58

OciXCrom™ написа: 03 Юли 2018, 17:25 By the way, сега се досетих, че може да се осъществи идеята чрез щета да се получават нива, и то по доста лесен начин. Просто мога да направя 1 XP = 1 damage и щетата ще е еднаква с XP-то.
1 XP = 1 Dmg при горния плъгин, който си дал?
Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от OciXCrom » 03 Юли 2018, 18:17

Не, в горния е 15 XP = 500 damage. Кажи дали искаш да е така или да го направя 1 = 1.

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от iv69 » 03 Юли 2018, 19:05

OciXCrom™ написа: 03 Юли 2018, 17:25 By the way, сега се досетих, че може да се осъществи идеята чрез щета да се получават нива, и то по доста лесен начин. Просто мога да направя 1 XP = 1 damage и щетата ще е еднаква с XP-то.
мда , това обаче, май ще ни принуди да качим стойностите със х100 за всеки левел ??? т.е. ако - 100XP = 100Dmg - за един килл се взема 100XP, така ли да го разбираме ...?

Добавено преди 29 минути 57 секунди:
OciXCrom™ написа: 03 Юли 2018, 15:39
SkandaU написа: 03 Юли 2018, 08:22 Кроме, искам да те попитам дали е възможно плъгина да се нагласи да вдига ранк от кръв (damage attack), а не от убийства. Както са в момента, примерно до достигане на втори ранк са ти нужни 100 dmg, играча като ги набие да вдига ниво?
Няма да е много лесно да се направи подобно нещо, тъй като ще трябва да се промени почти цялата система, което не е удачно. По-добър и лесен за направа вариант е да печелиш 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)
	}
}
С този плъгин ще получаваш 15 XP на всеки 500 damage. Можеш да промениш стойностите в началото на кода. Разбира се, можеш да изключиш обикновените награди при убийство и прочие от .ini файла, с което ще получаваш XP само и единствено при правене щета. За напред може би ще добавя тази опция в самия плъгин.
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 , просто това ми бе идеята, обяснена образно - плъгина да праща при някоя стойност определена с квари в конфиг файла - пак в началото, но само определения играч... За да не бъдат ощетявани другите, и да не е "вечно натоварена" до безкрая и да не се налага ние сами да зануляваме.. а сам тя да се "превърта"
Дано съм бил ясен и не съм бил излишно подробен !!!
Ами то май е същото което и аз казах. Щом си написал 101 = 100 000 000 001, то 101 ще е последното ниво и когато го достигнеш ще трябва да се върнеш на 0. Ето ти прост плъгин за тази работа:

Код за потвърждение: Избери целия код

#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)
Въпрос: Къде да намеря тази "библиотека" : #include <crxranks>

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от User12 » 03 Юли 2018, 19:27

iv69 написа: 03 Юли 2018, 19:05 Въпрос: Къде да намеря тази "библиотека" : #include <crxranks>
Ако не се лъжа , библиотеката я има във архива заедно със .sma файла папка includes :))
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

OciXCrom's Rank System [XP|Levels|Ranks]

Мнение от iv69 » 03 Юли 2018, 19:48

User12 написа: 03 Юли 2018, 19:27
iv69 написа: 03 Юли 2018, 19:05 Въпрос: Къде да намеря тази "библиотека" : #include <crxranks>
Ако не се лъжа , библиотеката я има във архива заедно със .sma файла папка includes :))
Да, благодаря намерих я , извинявай за "недоглеждането" ми!
:tnx:

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Одобрени плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 13 госта