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

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

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
}
Rest in peace my friend I always will remember you! 🖤👊

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

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

Мнение от OciXCrom » 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
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

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

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

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

Eddit: Много съм зле наградата ще я получа след 2 минути .. set_task(60.0,"awards",id). Може да заключвате, благодаря!
Rest in peace my friend I always will remember you! 🖤👊

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

Обратно към “Скриптиране”

Кой е на линия

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