Даване на Rewards(Награди)като правиш (damage)

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Даване на Rewards(Награди)като правиш (damage)

Мнение от gadinkata » 17 Сеп 2020, 02:58

Здравейте заформих си един тестов плъгин за даване награди като трупаш Damage.Използвам евента Damage.
Но се запънах със switch and case.
Ето и част от кода,защото целия код си работи само тая част трябва да я напиша както трябва

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

		new szName[32],g_iPlayerDmg[pDmg]
		get_user_name(id,szName,charsmax(szName))
		
		TrieGetArray(g_tPlayerDmg, szName, g_iPlayerDmg, sizeof(g_iPlayerDmg))
		
		g_iPlayerDmg[Dmg] += read_data(2)
		
		TrieSetArray(g_tPlayerDmg,szName,g_iPlayerDmg,sizeof(g_iPlayerDmg))
		
		switch(g_iPlayerDmg[Dmg])
		{
			case  100..500:
			{
				CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x04100 &x01(&x04%i&x01) do &x04500",g_iPlayerDmg[Dmg])
			}
			case 501..1000:
			{
				CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x04500 &x01(&x04%i&x01) do &x041000",g_iPlayerDmg[Dmg])
			}
			case 1001..1600:
			{
				CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x041000 &x01(&x04%i&x01) do &x041500",g_iPlayerDmg[Dmg])
			}
		}
Така по този начин от 100 до 500,ще ми дава постоянно награда,докато не мина 500dmg,така е и за другите кейсове,аз искам от 100 до 500 да даде само 1 награда или само веднъж.Сещам се само за един начин от 100 до 500 да му сложа лими на наградата примерно само веднъж,но пак може да ми я даде веднъж,но винаги ще го извиква тоя кейс при направа на нов dmg.Пробвах да го направя case 100 <= 500 първоначално ми даде грешка при компилацията,после се компилира,но не отчиташе и неми изкарваше съобщение за наградата....сложих и break,но ми даде грешка при компилацията и се отказах..също пробвах и тъйcase g_iPlayerDmg[Dmg] <= 500 но ми изписва това при компилиране error 008: must be a constant expression; assumed zero
Ако може дайте съвети и предложения как да го направя

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Даване на Rewards(Награди)като правиш (damage)

Мнение от atmax » 17 Сеп 2020, 08:54

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

case 100..500
-->

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

case: 100..500
?
А за това, при направата на нов dmg. Трябва да си сложиш някакъв лимит, който да го рескаш през определено време с таск, или някакъв брояч и да го засичаш на 1 при наградата, след което да го нулираш на новия рунд, така за 1 рунд по 1 път ще могат да взимат наградите, имаш няколко възможности избери си.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Даване на Rewards(Награди)като правиш (damage)

Мнение от JackEyedJones » 17 Сеп 2020, 09:11

Ham_TakeDamage е по-препоръчително понеже там имаш fDamage в headera. Trie ?
Използвай bool:g_bRewarded[33]. При наградата да се сетва true и if(!g_bRewarded[id]) { etc. }

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Даване на Rewards(Награди)като правиш (damage)

Мнение от atmax » 17 Сеп 2020, 09:18

Ако ще го правиш, както @JackEyedJones каза. Имай предвид, че fDamage е float стойност, т.е. числата ти трябва да са с плаваща запетая.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
impossible
Извън линия
Потребител
Потребител
Мнения: 488
Регистриран на: 15 Юни 2019, 12:41
Се отблагодари: 23 пъти
Получена благодарност: 47 пъти

Даване на Rewards(Награди)като правиш (damage)

Мнение от impossible » 17 Сеп 2020, 10:46

const FIRSTKILL_BONUS_MONEY = 100;
+ (FIRSTKILL_BONUS_MONEY * random_num(4,8))

400/500/600/700/800
const MIN_PLAYER = 4;
const MAX_MONEY = 16000;

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Даване на Rewards(Награди)като правиш (damage)

Мнение от gadinkata » 17 Сеп 2020, 11:33

То дали с бул или с на крома примера все ще стане,ама то винаги при на правата на нов демидж ще проверявя в първия кейс дали демиджа е от 100 до 500, и след това ще изпълни кода за лимит в кейс,искам да кажа че и след даване на награда,ще се извършва постоянно проверката за лимит при нов демидж. С хамтаке демидж незнам точно как става ще пробвам довечера ако видя някой код

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Даване на Rewards(Награди)като правиш (damage)

Мнение от atmax » 17 Сеп 2020, 12:31

-.- Ти май не четеш кво ти пишем.. Няма да се проверява постоянно при направата на нов dmg, ако сложиш буул преди проверката за dmg. А за лимита имаш няколко възможности, дали ще е брояч, дали пак с буул..
Rest in peace my friend I always will remember you! 🖤👊

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Даване на Rewards(Награди)като правиш (damage)

Мнение от gadinkata » 17 Сеп 2020, 14:33

Аз много добре чета кво пишете,но май не четеш,че казвам була трябвамда е във всеки кейс където давам награда и един бул над switch
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@atmax Ето така го направих,понеже няма как да задам була да е истина само веднъж,за това го сложих в client_putinservers с брояч заради повторно влизане в сървъра пак ще го направи на истина и т.н Ако има нещо няма нищо,можеш да дадеш др начин

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

new Trie:g_tPlayerDmg
new b_Rewards[MAX_PLAYERS+1]
new comein[MAX_PLAYERS+1]

public client_putinserver(id)
{
	comein[id]++
	if(comein[id] <= 1)
	{
	b_Rewards[id] = true
	}
}

public Damage(iVictim)
{
	new id = get_user_attacker(iVictim)
	
	if((1 <= id <= g_iMaxPlayers) && is_user_alive(id))
	{
		new szName[32],g_iPlayerDmg[pDmg]
		get_user_name(id,szName,charsmax(szName))
		
		TrieGetArray(g_tPlayerDmg, szName, g_iPlayerDmg, sizeof(g_iPlayerDmg))
		
		g_iPlayerDmg[Dmg] += read_data(2)
		
		TrieSetArray(g_tPlayerDmg,szName,g_iPlayerDmg,sizeof(g_iPlayerDmg))
		
		switch(g_iPlayerDmg[Dmg])
		{
			case  100..500:
			{
				if(b_Rewards[id])
				{ 
					CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x04100 &x01(&x04%i&x01) do &x04500",g_iPlayerDmg[Dmg])
					b_Rewards[id] = false
				}
			}
			case 501..1000:
			{
				if(!b_Rewards[id])
				{
				CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x04500 &x01(&x04%i&x01) do &x041000",g_iPlayerDmg[Dmg])
				b_Rewards[id] = true
				}
			}
			case 1001..1600:
			{
				if(b_Rewards[id])
				{
				CC_SendMessage(id,"Ti poluchi nagarda &x03X &x01ot &x041000 &x01(&x04%i&x01) do &x041500",g_iPlayerDmg[Dmg])
				b_Rewards[id] = false
				}
			}
		}
		 
	}
}



Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Даване на Rewards(Награди)като правиш (damage)

Мнение от atmax » 18 Сеп 2020, 14:30

Аз бих ползвал брояч и в първото условие да го задам на 2, после във второто условие да проверя дали е на 2 ако е на две да го зададе на 3 и в третото да проверя дали е 3 и ако е 3 да го направи пак на 0 после в новите рунд да го задам отново на 1 за да почне пак отначало с наградите, ако искаш да е за всеки рунд, а ако искаш за всяка нова карта тогава в client_putinserver.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Даване на Rewards(Награди)като правиш (damage)

Мнение от gadinkata » 18 Сеп 2020, 20:59

Тук нямам нов рунд тук за сега всичко е до края на мапа,брояча може да го тествам,но първия кекс да почва от 1,след като даде нагрядата да го направи на 2,но няма да стане,понвже докато мина 500 демидж брояча ще мине две и три,кажи за моя начин имали пропуск трябва ли ретърн

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

Обратно към “Помощ в скриптирането”

Кой е на линия

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