Lottary плъгин не функционира правилно

Въведение в PAWN скриптинга и поддръжка за същия.
Заключена
Потребителски аватар

Автор на темата
atmax
Потребител
Потребител
Мнения: 78
Регистриран: 22 мар 2018, 15:06
Се отблагодари: 1 път
Получена благодарност: 5 пъти

Lottary плъгин не функционира правилно

Мнение от atmax » 19 мар 2020, 19:35

Здравейте, проблема с плъгина явно е в зле написания код, та ако може някой да помогне да го оправим ще бъде перфектно.
Ето какво трябва да се случи, ако функционираше правилно:
Играча изписва командата /lotto в чата и срещу 500$ той може да участва в лотария. След като е платил нужната сума получава 1 от наградите по-долу. Съвсем прост плъгин. Но това което се случва е, че след командата /lotto вместо да ми вземе 500$ то ми дава едни нереални суми над 16000$ и друго не получавам. Опитах се сам но не можах това е крайния резултат:

Код: Избери всички

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>

#define PLUGIN "Lotto"
#define VERSION "0.1a"
#define AUTHOR "me"

new cost, mymoney, myhealth, curarmor
new bool:Played[33]
new Timer[33], g_damage2[33]
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /lotto", "lotto")
	RegisterHam(Ham_TakeDamage, "player", "FwdTakeDamage", 0)
	set_task(120.0, "advert",_,_,_,"b")
	cost = register_cvar("amx_lottopay", "500")
}

public client_connect(id)
Played[id] = false

public advert() {
	CromChat(0,"[!gLotto!n]Today is a great day, to play some !gcasino games!n!")
	CromChat(0,"[!gLotto!n] If you want to take a part at our casino type in chat !g/lotto")
}

public lotto(id) {
	if(Played[id]) {
		CromChat(0,"[!gLOTTO!n] You already played, try again after !g5 minutes!n!")
		return PLUGIN_HANDLED
	}
	new mymoney = cs_get_user_money(id)
	new costpay = get_pcvar_num(cost)
	if(mymoney < costpay)
	    CromChat(id, "!g[Lotto] !tYou dont have enough money to play. You have to pay: %d", cost)
	else
	{
	    cs_set_user_money(id, mymoney - cost) 
	    CromChat(id,"[!gLOTTO!n] !tYou play !gLottoGames !nwish you the best!")
	    set_task(60.0,"awards",id)
	}
	
	return PLUGIN_CONTINUE
}

public awards(id) {
	mymoney = cs_get_user_money(id)
	Played[id] = true
	curarmor = get_user_armor(id)
	set_task(300.0, "canplay", id)
	new rand = random_num(0,30)
	switch(rand) 
	{
		case 0:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 1:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !t1000$")
			cs_set_user_money(id, mymoney + 1000)
		}
		case 2:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 3:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 4:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 5:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 6:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 7:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 8:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 9:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !t1000$")
			cs_set_user_money(id, mymoney + 1000)
		}
		case 10:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !t1000$")
			cs_set_user_money(id, mymoney + 1000)
		}
		case 11:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !tPlayer Glow !n(!g10 seconds!n)!")
			if (!(Timer[id] == 0))
			{
                return PLUGIN_HANDLED
            }
			Timer[id] = 1500
			set_task(10.0, "Resetrender", id)
			set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderGlow, 20)
			set_task(1.0, "Resettimer", id)
		}
		case 12:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !tPlayer Glow !n(!g10 seconds!n)!")
			if (!(Timer[id] == 0))
			{
                return PLUGIN_HANDLED
            }
			Timer[id] = 1500
			set_task(10.0, "Resetrender", id)
			set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderGlow, 20)
			set_task(1.0, "Resettimer", id)
		}
		case 13:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 14:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 15:
		{
			CromChat(id,"[!gLotto!n] !gCongrats!n! You won !tPlayer Glow !n(!g10 seconds!n)!")
			if (!(Timer[id] == 0))
			{
                return PLUGIN_HANDLED
            }
			Timer[id] = 1500
			set_task(10.0, "Resetrender", id)
			set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderGlow, 20)
			set_task(1.0, "Resettimer", id)
		}
		case 16:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 17:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 18:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 19:
		{
			CromChat(id,"[!gLotto!n] !tCongrats!n! You won !tArmor and VestHelm!n!")
			set_user_armor(id, curarmor + 50)
		}
		case 20:
		{
			CromChat(id,"[!gLotto!n] !tCongrats!n! You won !tArmor and VestHelm!n!")
			set_user_armor(id, curarmor + 50)
		}
		case 21:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 22:
		{
			CromChat(id,"[!gLotto!n] !tCongrats!n! You won !tArmor and VestHelm!n!")
			set_user_armor(id, curarmor + 50)
		}
		case 23:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 24:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 25:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 26:
		{
			CromChat(id,"[!gLotto!n] !tCongrats!n! You won !g+45HP!n!")
			myhealth = get_user_health(id)
			set_user_health(id, myhealth + 45)
		}
		case 27:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 28:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 29:
		{
			CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
		}
		case 30:
		{
			new szName[32]
			get_user_name(id, szName, charsmax(szName))
			CromChat(0,"[!gMega Jackpot!n] Player !g%s !nwon the !rMega Jackpot.", szName)
			cs_set_user_money(id, mymoney + 5000)
			give_item(id, "weapon_flashbang")
			give_item(id, "weapon_smokegrenade")
			set_task(15.0, "DmgTimer", id)
			g_damage2[id] = true
			CromChat(id,"[!gMega Jackpot!n] You won: !b$5K!n,!gFlashbangs & Smoke!n and !rDouble Damage(15sec)!n!")
		}
	}
	
	return HAM_HANDLED
}

public Resettimer(id)
{
    if (Timer[id] > 0)
    {
        Timer[id] --
        
        set_task(1.0, "Resettimer", id)
    }
}

public Resetrender(id)
{
    set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
    CromChat(id,"[!gLotto!n] !tPlayer Glow !nhas been !gremoved!n!")
}

public FwdTakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{

	if(g_damage2[attacker])
	{
		SetHamParamFloat(4,(damage*2.0))
		return HAM_HANDLED
	}
	
	return HAM_HANDLED

}

public DmgTimer(id) {
	g_damage2[id] = false
	CromChat(id,"[!gMega Jackpot!n] Your !tDouble Damage!n is over!")
}

public canplay(id) {
	Played[id] = false
}

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 6073
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 107 пъти
Получена благодарност: 771 пъти
Години: 22
Контакти:

Lottary плъгин не функционира правилно

Мнение от OciXCrom TM » 19 мар 2020, 20:34

1.

Код: Избери всички

new costpay = get_pcvar_num(cost)
Тук взимаш стойността на квара и я слагаш в променливата costpay, обаче по-долу в кода ползваш самия квар cost когато се опитваш да вземеш парите и да изпишеш съобщение:

Код: Избери всички

CromChat(id, "!g[Lotto] !tYou dont have enough money to play. You have to pay: %d", cost)
cs_set_user_money(id, mymoney - cost) 
cost е id-то на квара, затова получаваш нереални суми. Смени го с costsum на двете места.
2.

Код: Избери всички

set_task(60.0,"awards",id)

public awards(id) {
Тук сложи една проверка дали играчът е в сървъра. През тези 60 секунди може да е напуснал.

Също и променливата Played[id] трябва да я сложиш при set_task, а не след 60 секунди. Както е в момента, можеш да напишеш командата повече пъти докато не минат тези 60 секунди.
3. Вместо да правиш това:

Код: Избери всички

case 2:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 3:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 4:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 5:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 6:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 7:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
case 8:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}
Можеш да направиш това:

Код: Избери всички

case 2..8:
{
	CromChat(id,"[!gLotto!n] !tSorry!n! !gYou lost!n, better luck next time!")
}

Потребителски аватар

Автор на темата
atmax
Потребител
Потребител
Мнения: 78
Регистриран: 22 мар 2018, 15:06
Се отблагодари: 1 път
Получена благодарност: 5 пъти

Lottary плъгин не функционира правилно

Мнение от atmax » 19 мар 2020, 21:07

Направих това, което написа и сега вече ми взема по 500$, след което си изписва това което трябва да изпише като се пуснеш:
[LOTTO] You play LottoGames wish you the best!
Но след това не получавам нищо по принцип ако не печелиш трябва да ти изпише че губиш или евентуално ако спечелиш трябва да ти изпише какво. Но след това първото съобщение не следва нищо друго..

Eddit: Много съм зле наградата ще я получа след 2 минути .. set_task(60.0,"awards",id). Може да заключвате, благодаря!

Заключена

Върни се в “Скриптиране”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост