Молба за корекция в плъгин "Players Drop Money"

Въпроси и проблеми свързани с AMXModX.
Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 18 Сеп 2021, 23:23

Здравейте :)
Искам да помоля , ако е възможно да се направи така , че парите да падат , но само , ако играча има повече от 10 000. Тоест плъгина да работи върху играч само , ако той има повече от 10 000 пари. Възможно ли е това ? Има всякакви настройки , но само това няма...

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

#include <amxmodx>
#include <fakemeta>

#define PLUGIN	"Players Drop Money"
#define AUTHOR	"Sh!nE*"
#define VERSION	"1.7"

#if cellbits == 32
#define OFFSET_CSMONEY  115
#else
#define OFFSET_CSMONEY  140
#endif

#define OFFSET_LINUX      5

#define MAXENTS 1500

new moneybox[MAXENTS]
new model[] = "models/w_money_new.mdl"
new money_sound1[] = "money/money_sound.wav"

new method, ison, m_amount, ran_money, random_nums, money_drop, money_drop_a, fadeon, money_sound, divide, force
//new method6
new g_msgScreenFade
new bool:can_pickup[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	ison = register_cvar("amx_dropmoney","1")
	method = register_cvar("amx_dropmethod","5")
	divide = register_cvar("amx_moneydivide","2")
	m_amount = register_cvar("amx_dropamount","1000")
	ran_money = register_cvar("amx_droprandom","300 500 700")
	random_nums = register_cvar("amx_droprandomnums","300 2000")
	money_drop = register_cvar("amx_playerdrop","1")
	money_drop_a = register_cvar("amx_playerdropamount","1000")
	fadeon = register_cvar("amx_moneyfade","1")
	money_sound = register_cvar("amx_moneysound","0")
	force = register_cvar("amx_dropforce","10")
	g_msgScreenFade = get_user_msgid("ScreenFade")
	
	register_clcmd("drop","hook_drop")
	
	register_event("DeathMsg", "deatha", "a")
	register_forward(FM_Touch,"player_Touch")
	register_logevent("round_start", 2, "1=Round_Start")
}

public client_connect(id)	can_pickup[id]=true
public client_disconnect(id)	can_pickup[id]=false

public plugin_precache() {
	precache_model(model)
	precache_sound(money_sound1)
}

public hook_drop(id) {
	if(!get_pcvar_num(ison) || !get_pcvar_num(money_drop))	return PLUGIN_CONTINUE
	new weapon,clip,ammo,money,Float:velo[3]
	weapon = get_user_weapon(id,clip,ammo)
	if(weapon == CSW_KNIFE) {
		if(fm_get_user_money(id) < get_pcvar_num(money_drop_a))
			money = fm_get_user_money(id)
		else
			money = get_pcvar_num(money_drop_a)
		
		fm_set_user_money(id,fm_get_user_money(id) - money)
		can_pickup[id] = false
		set_task(0.3,"reset_pick",id)
		new start_velo = get_pcvar_num(force) * 15
		new end_velo = get_pcvar_num(force) * 50
		velocity_by_aim(id,random_num(start_velo,end_velo),velo)
		make_money(id,money,velo)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public reset_pick(id)	can_pickup[id] = true

public deatha() {
	if(!get_pcvar_num(ison))	return PLUGIN_CONTINUE
	
	new money, Float:velo[3]
	new victim = read_data(2)
	new killer = read_data(1)
	
	if(killer && killer != victim)
		fm_set_user_money(killer,fm_get_user_money(killer) - 300)
	
	switch(get_pcvar_num(method)) {
		case 1:{
			money = get_pcvar_num(m_amount)
			if(fm_get_user_money(victim) < money) {
				money = fm_get_user_money(victim)
				fm_set_user_money(victim,0)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - get_pcvar_num(m_amount))
			}
		case 2:{
			new tempmoney = fm_get_user_money(victim)
			if(money != 1) {
				money = (tempmoney / get_pcvar_num(divide))
				fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
			else {
				fm_set_user_money(victim,0)
				money = 1
			}
		}
		case 3:{
			new maxmoney = fm_get_user_money(victim)
			money = random_num(1,maxmoney)
			fm_set_user_money(victim,fm_get_user_money(victim) - money)
		}
		case 4:{
			new tempmoney2[32]
			get_pcvar_string(ran_money,tempmoney2,31)
			new tempmoney[3][6]
			parse(tempmoney2, tempmoney[0], sizeof tempmoney[] - 1,tempmoney[1], sizeof tempmoney[] - 1,tempmoney[2], sizeof tempmoney[] - 1)
			new num = random_num(1,3)
			switch(num) {
				case 1:{
					money = str_to_num(tempmoney[0])
				}
				case 2:{
					money = str_to_num(tempmoney[1])
				}
				case 3:{
					money = str_to_num(tempmoney[2])
				}
			}
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
		case 5:{
			new tempmoney22[32], num_from, num_to
			get_pcvar_string(random_nums,tempmoney22,31)
			new tempmoney1[2][6]
			parse(tempmoney22, tempmoney1[0], sizeof tempmoney1[] - 1,tempmoney1[1], sizeof tempmoney1[] - 1)
			num_from = str_to_num(tempmoney1[0])
			num_to = str_to_num(tempmoney1[1])
			if(num_to > 16000)	num_to = 16000
			if(num_from < 0)	num_to = 0
			money = random_num(num_from,num_to)
			
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
	}
	make_money(victim,money,velo)
	return PLUGIN_CONTINUE
}

public round_start() {
	new money_ent
	while((money_ent=engfunc(EngFunc_FindEntityByString,money_ent,"classname","pdm_money")) != 0){
		engfunc(EngFunc_RemoveEntity,money_ent)
	}
}


public make_money(id,money,Float:velo[]) {
	new moneybags = money/1000
	new moneyleft = money
	new Float:origin[3]
	new Float:angles[3]
	new Float:mins[3] = {-2.79, -0.0, -6.14}
	new Float:maxs[3] = {2.42, 1.99, 6.35}
	
	if((moneybags * 1000) < money)	moneybags++
	
	for(new i = 0; i < moneybags; ++i) {
		new newent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		if(!is_user_alive(id)) {
			velo[0] = random_float(1.0,150.0)
			velo[1] = random_float(1.0,150.0)
			velo[2] = random_float(1.0,150.0)
		}
		else 
			velo[2] += 100
		
		pev(newent,pev_angles,angles)
		angles[1] += random_num(1,360)
		pev(id,pev_origin,origin)
		set_pev(newent, pev_origin, origin)
		set_pev(newent, pev_classname, "pdm_money")
		engfunc(EngFunc_SetModel, newent, model)
		engfunc(EngFunc_SetSize,newent,mins,maxs)
		set_pev(newent,pev_angles,angles)
		set_pev(newent, pev_solid, SOLID_TRIGGER)
		set_pev(newent,pev_movetype,MOVETYPE_TOSS)
		set_pev(newent, pev_velocity,velo)
		engfunc(EngFunc_DropToFloor,newent)
		
		if(moneyleft == 0)	return FMRES_IGNORED
		
		if(moneyleft < 1000) {
			moneybox[newent]=moneyleft
			moneyleft = 0
			return FMRES_IGNORED
		}
		moneyleft -= 1000
		moneybox[newent]=1000
	}
	return FMRES_IGNORED
}

public player_Touch(touched, toucher) { 
	
	if (!pev_valid(touched) || !is_user_alive(toucher) ||  !get_pcvar_num(ison) || !can_pickup[toucher])
		return FMRES_IGNORED
	
	new classname[32]
	pev(touched, pev_classname, classname, sizeof classname - 1)
	
	if (equali(classname, "pdm_money")) {
		if(fm_get_user_money(toucher) == 16000)	return FMRES_IGNORED
		else if((fm_get_user_money(toucher)+moneybox[touched]) > 16000)		fm_set_user_money(toucher,16000)
		else	fm_set_user_money(toucher,fm_get_user_money(toucher) + moneybox[touched])
			
		if(get_pcvar_num(money_sound))	client_cmd(toucher,"spk %s",money_sound1)
		
		if(pev_valid(touched))
			engfunc(EngFunc_RemoveEntity,touched)
		
		if(get_pcvar_num(fadeon))
			screen_fade(toucher)
	}
	
	return FMRES_IGNORED
}


public screen_fade(id) {
	message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id) 
	write_short(1<<12)
	write_short(1<<12)
	write_short(1<<12)
	write_byte(0)
	write_byte(200)
	write_byte(0)
	write_byte(20)
	message_end()
}


//XxAvalanchexX Stocks
stock fm_set_user_money(id,money,flash=0)
{
	set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);
	
	message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
	write_long(money);
	write_byte(flash);
	message_end();
}




stock fm_get_user_money(id)
{
	return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);
}
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
rago12
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 10 Апр 2017, 15:23
Получена благодарност: 34 пъти

Молба за корекция в плъгин "Players Drop Money"

Мнение от rago12 » 18 Сеп 2021, 23:29

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

#include <amxmodx>
#include <fakemeta>

#define PLUGIN	"Players Drop Money"
#define AUTHOR	"Sh!nE*"
#define VERSION	"1.7"

#if cellbits == 32
#define OFFSET_CSMONEY  115
#else
#define OFFSET_CSMONEY  140
#endif

#define OFFSET_LINUX      5

#define MAXENTS 1500

new moneybox[MAXENTS]
new model[] = "models/w_money_new.mdl"
new money_sound1[] = "money/money_sound.wav"

new method, ison, m_amount, ran_money, random_nums, money_drop, money_drop_a, fadeon, money_sound, divide, force
//new method6
new g_msgScreenFade
new bool:can_pickup[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	ison = register_cvar("amx_dropmoney","1")
	method = register_cvar("amx_dropmethod","5")
	divide = register_cvar("amx_moneydivide","2")
	m_amount = register_cvar("amx_dropamount","1000")
	ran_money = register_cvar("amx_droprandom","300 500 700")
	random_nums = register_cvar("amx_droprandomnums","300 2000")
	money_drop = register_cvar("amx_playerdrop","1")
	money_drop_a = register_cvar("amx_playerdropamount","1000")
	fadeon = register_cvar("amx_moneyfade","1")
	money_sound = register_cvar("amx_moneysound","0")
	force = register_cvar("amx_dropforce","10")
	g_msgScreenFade = get_user_msgid("ScreenFade")
	
	register_clcmd("drop","hook_drop")
	
	register_event("DeathMsg", "deatha", "a")
	register_forward(FM_Touch,"player_Touch")
	register_logevent("round_start", 2, "1=Round_Start")
}

public client_connect(id)	can_pickup[id]=true
public client_disconnect(id)	can_pickup[id]=false

public plugin_precache() {
	precache_model(model)
	precache_sound(money_sound1)
}

public hook_drop(id) {
	if(!get_pcvar_num(ison) || !get_pcvar_num(money_drop))	return PLUGIN_CONTINUE
	new weapon,clip,ammo,money,Float:velo[3]
	weapon = get_user_weapon(id,clip,ammo)
	if(weapon == CSW_KNIFE) {
		if(fm_get_user_money(id) < get_pcvar_num(money_drop_a))
			money = fm_get_user_money(id)
		else
			money = get_pcvar_num(money_drop_a)
		
		fm_set_user_money(id,fm_get_user_money(id) - money)
		can_pickup[id] = false
		set_task(0.3,"reset_pick",id)
		new start_velo = get_pcvar_num(force) * 15
		new end_velo = get_pcvar_num(force) * 50
		velocity_by_aim(id,random_num(start_velo,end_velo),velo)
		make_money(id,money,velo)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public reset_pick(id)	can_pickup[id] = true

public deatha() {
	if(!get_pcvar_num(ison))	return PLUGIN_CONTINUE
	
	new money, Float:velo[3]
	new victim = read_data(2)
	new killer = read_data(1)
	
	if(fm_get_user_money(victim) < 10000) return PLUGIN_CONTINUE
	
	if(killer && killer != victim)
		fm_set_user_money(killer,fm_get_user_money(killer) - 300)
	
	switch(get_pcvar_num(method)) {
		case 1:{
			money = get_pcvar_num(m_amount)
			if(fm_get_user_money(victim) < money) {
				money = fm_get_user_money(victim)
				fm_set_user_money(victim,0)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - get_pcvar_num(m_amount))
			}
		case 2:{
			new tempmoney = fm_get_user_money(victim)
			if(money != 1) {
				money = (tempmoney / get_pcvar_num(divide))
				fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
			else {
				fm_set_user_money(victim,0)
				money = 1
			}
		}
		case 3:{
			new maxmoney = fm_get_user_money(victim)
			money = random_num(1,maxmoney)
			fm_set_user_money(victim,fm_get_user_money(victim) - money)
		}
		case 4:{
			new tempmoney2[32]
			get_pcvar_string(ran_money,tempmoney2,31)
			new tempmoney[3][6]
			parse(tempmoney2, tempmoney[0], sizeof tempmoney[] - 1,tempmoney[1], sizeof tempmoney[] - 1,tempmoney[2], sizeof tempmoney[] - 1)
			new num = random_num(1,3)
			switch(num) {
				case 1:{
					money = str_to_num(tempmoney[0])
				}
				case 2:{
					money = str_to_num(tempmoney[1])
				}
				case 3:{
					money = str_to_num(tempmoney[2])
				}
			}
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
		case 5:{
			new tempmoney22[32], num_from, num_to
			get_pcvar_string(random_nums,tempmoney22,31)
			new tempmoney1[2][6]
			parse(tempmoney22, tempmoney1[0], sizeof tempmoney1[] - 1,tempmoney1[1], sizeof tempmoney1[] - 1)
			num_from = str_to_num(tempmoney1[0])
			num_to = str_to_num(tempmoney1[1])
			if(num_to > 16000)	num_to = 16000
			if(num_from < 0)	num_to = 0
			money = random_num(num_from,num_to)
			
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
	}
	make_money(victim,money,velo)
	return PLUGIN_CONTINUE
}

public round_start() {
	new money_ent
	while((money_ent=engfunc(EngFunc_FindEntityByString,money_ent,"classname","pdm_money")) != 0){
		engfunc(EngFunc_RemoveEntity,money_ent)
	}
}


public make_money(id,money,Float:velo[]) {
	new moneybags = money/1000
	new moneyleft = money
	new Float:origin[3]
	new Float:angles[3]
	new Float:mins[3] = {-2.79, -0.0, -6.14}
	new Float:maxs[3] = {2.42, 1.99, 6.35}
	
	if((moneybags * 1000) < money)	moneybags++
	
	for(new i = 0; i < moneybags; ++i) {
		new newent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		if(!is_user_alive(id)) {
			velo[0] = random_float(1.0,150.0)
			velo[1] = random_float(1.0,150.0)
			velo[2] = random_float(1.0,150.0)
		}
		else 
			velo[2] += 100
		
		pev(newent,pev_angles,angles)
		angles[1] += random_num(1,360)
		pev(id,pev_origin,origin)
		set_pev(newent, pev_origin, origin)
		set_pev(newent, pev_classname, "pdm_money")
		engfunc(EngFunc_SetModel, newent, model)
		engfunc(EngFunc_SetSize,newent,mins,maxs)
		set_pev(newent,pev_angles,angles)
		set_pev(newent, pev_solid, SOLID_TRIGGER)
		set_pev(newent,pev_movetype,MOVETYPE_TOSS)
		set_pev(newent, pev_velocity,velo)
		engfunc(EngFunc_DropToFloor,newent)
		
		if(moneyleft == 0)	return FMRES_IGNORED
		
		if(moneyleft < 1000) {
			moneybox[newent]=moneyleft
			moneyleft = 0
			return FMRES_IGNORED
		}
		moneyleft -= 1000
		moneybox[newent]=1000
	}
	return FMRES_IGNORED
}

public player_Touch(touched, toucher) { 
	
	if (!pev_valid(touched) || !is_user_alive(toucher) ||  !get_pcvar_num(ison) || !can_pickup[toucher])
		return FMRES_IGNORED
	
	new classname[32]
	pev(touched, pev_classname, classname, sizeof classname - 1)
	
	if (equali(classname, "pdm_money")) {
		if(fm_get_user_money(toucher) == 16000)	return FMRES_IGNORED
		else if((fm_get_user_money(toucher)+moneybox[touched]) > 16000)		fm_set_user_money(toucher,16000)
		else	fm_set_user_money(toucher,fm_get_user_money(toucher) + moneybox[touched])
			
		if(get_pcvar_num(money_sound))	client_cmd(toucher,"spk %s",money_sound1)
		
		if(pev_valid(touched))
			engfunc(EngFunc_RemoveEntity,touched)
		
		if(get_pcvar_num(fadeon))
			screen_fade(toucher)
	}
	
	return FMRES_IGNORED
}


public screen_fade(id) {
	message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id) 
	write_short(1<<12)
	write_short(1<<12)
	write_short(1<<12)
	write_byte(0)
	write_byte(200)
	write_byte(0)
	write_byte(20)
	message_end()
}


//XxAvalanchexX Stocks
stock fm_set_user_money(id,money,flash=0)
{
	set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);
	
	message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
	write_long(money);
	write_byte(flash);
	message_end();
}




stock fm_get_user_money(id)
{
	return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);
}

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 19 Сеп 2021, 01:01

Много ти благодаря за светкавичната реакция.
Искам да попитам само още нещо. Ако искам да спра саунда от плъгина , но не с "amx_moneysound" , а чрез махане от кода правилно ли ще е да коментирам този ред :

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

56         //	precache_sound(money_sound1)
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
rago12
Извън линия
Потребител
Потребител
Мнения: 63
Регистриран на: 10 Апр 2017, 15:23
Получена благодарност: 34 пъти

Молба за корекция в плъгин "Players Drop Money"

Мнение от rago12 » 19 Сеп 2021, 12:57

Един вид да, ще го спреш sound-а, но плъгина ще продължи да ти го търси

На ред 232

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

if(get_pcvar_num(money_sound))	client_cmd(toucher,"spk %s",money_sound1)
Като махнеш цялата тази линия от кода, заедно с

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

precache_sound(money_sound1)
И за да не ти излиза Warning при компилиране махаш

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

Line 20: new money_sound1[] = "money/money_sound.wav"
Cvar-а от plugin_init, и самия символ го намираш най-отгоре като new добавен на ред 21 (в случая - money_sound) и го махаш и него

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

money_sound = register_cvar("amx_moneysound","0")
Line 21: new ... , ... , money_sound , ...
Тогава ще се счита, че е махнат саунда от плъгина

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 19 Сеп 2021, 14:54

Много благодаря :beer:
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Re: Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 17 Мар 2023, 00:46

Извинете, възможно ли е този плъгин да се направи така, че модела да изчезва от земята за някакви секунди ? Съществуващите опции не действат за този плъгин.

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

#include <amxmodx>
#include <fakemeta>

#define PLUGIN	"Players Drop Money"
#define AUTHOR	"Sh!nE*"
#define VERSION	"1.7"

#if cellbits == 32
#define OFFSET_CSMONEY  115
#else
#define OFFSET_CSMONEY  140
#endif

#define OFFSET_LINUX      5

#define MAXENTS 1500

new moneybox[MAXENTS]
new model[] = "models/w_money_new.mdl"

new method, ison, m_amount, ran_money, random_nums, money_drop, money_drop_a, fadeon, divide, force
//new method6
new g_msgScreenFade
new bool:can_pickup[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	ison = register_cvar("amx_dropmoney","1")
	method = register_cvar("amx_dropmethod","5")
	divide = register_cvar("amx_moneydivide","2")
	m_amount = register_cvar("amx_dropamount","1000")
	ran_money = register_cvar("amx_droprandom","300 500 700")
	random_nums = register_cvar("amx_droprandomnums","300 2000")
	money_drop = register_cvar("amx_playerdrop","1")
	money_drop_a = register_cvar("amx_playerdropamount","1000")
	fadeon = register_cvar("amx_moneyfade","1")
	force = register_cvar("amx_dropforce","10")
	g_msgScreenFade = get_user_msgid("ScreenFade")
	
	register_clcmd("drop","hook_drop")
	
	register_event("DeathMsg", "deatha", "a")
	register_forward(FM_Touch,"player_Touch")
	register_logevent("round_start", 2, "1=Round_Start")
}

public client_connect(id)	can_pickup[id]=true
public client_disconnect(id)	can_pickup[id]=false

public plugin_precache() {
	precache_model(model)
}

public hook_drop(id) {
	if(!get_pcvar_num(ison) || !get_pcvar_num(money_drop))	return PLUGIN_CONTINUE
	new weapon,clip,ammo,money,Float:velo[3]
	weapon = get_user_weapon(id,clip,ammo)
	if(weapon == CSW_KNIFE) {
		if(fm_get_user_money(id) < get_pcvar_num(money_drop_a))
			money = fm_get_user_money(id)
		else
			money = get_pcvar_num(money_drop_a)
		
		fm_set_user_money(id,fm_get_user_money(id) - money)
		can_pickup[id] = false
		set_task(0.3,"reset_pick",id)
		new start_velo = get_pcvar_num(force) * 15
		new end_velo = get_pcvar_num(force) * 50
		velocity_by_aim(id,random_num(start_velo,end_velo),velo)
		make_money(id,money,velo)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public reset_pick(id)	can_pickup[id] = true

public deatha() {
	if(!get_pcvar_num(ison))	return PLUGIN_CONTINUE
	
	new money, Float:velo[3]
	new victim = read_data(2)
	new killer = read_data(1)
	
	if(fm_get_user_money(victim) < 10000) return PLUGIN_CONTINUE
	
	if(killer && killer != victim)
		fm_set_user_money(killer,fm_get_user_money(killer) - 300)
	
	switch(get_pcvar_num(method)) {
		case 1:{
			money = get_pcvar_num(m_amount)
			if(fm_get_user_money(victim) < money) {
				money = fm_get_user_money(victim)
				fm_set_user_money(victim,0)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - get_pcvar_num(m_amount))
			}
		case 2:{
			new tempmoney = fm_get_user_money(victim)
			if(money != 1) {
				money = (tempmoney / get_pcvar_num(divide))
				fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
			else {
				fm_set_user_money(victim,0)
				money = 1
			}
		}
		case 3:{
			new maxmoney = fm_get_user_money(victim)
			money = random_num(1,maxmoney)
			fm_set_user_money(victim,fm_get_user_money(victim) - money)
		}
		case 4:{
			new tempmoney2[32]
			get_pcvar_string(ran_money,tempmoney2,31)
			new tempmoney[3][6]
			parse(tempmoney2, tempmoney[0], sizeof tempmoney[] - 1,tempmoney[1], sizeof tempmoney[] - 1,tempmoney[2], sizeof tempmoney[] - 1)
			new num = random_num(1,3)
			switch(num) {
				case 1:{
					money = str_to_num(tempmoney[0])
				}
				case 2:{
					money = str_to_num(tempmoney[1])
				}
				case 3:{
					money = str_to_num(tempmoney[2])
				}
			}
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
		case 5:{
			new tempmoney22[32], num_from, num_to
			get_pcvar_string(random_nums,tempmoney22,31)
			new tempmoney1[2][6]
			parse(tempmoney22, tempmoney1[0], sizeof tempmoney1[] - 1,tempmoney1[1], sizeof tempmoney1[] - 1)
			num_from = str_to_num(tempmoney1[0])
			num_to = str_to_num(tempmoney1[1])
			if(num_to > 16000)	num_to = 16000
			if(num_from < 0)	num_to = 0
			money = random_num(num_from,num_to)
			
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
	}
	make_money(victim,money,velo)
	return PLUGIN_CONTINUE
}

public round_start() {
	new money_ent
	while((money_ent=engfunc(EngFunc_FindEntityByString,money_ent,"classname","pdm_money")) != 0){
		engfunc(EngFunc_RemoveEntity,money_ent)
	}
}


public make_money(id,money,Float:velo[]) {
	new moneybags = money/1000
	new moneyleft = money
	new Float:origin[3]
	new Float:angles[3]
	new Float:mins[3] = {-2.79, -0.0, -6.14}
	new Float:maxs[3] = {2.42, 1.99, 6.35}
	
	if((moneybags * 1000) < money)	moneybags++
	
	for(new i = 0; i < moneybags; ++i) {
		new newent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		if(!is_user_alive(id)) {
			velo[0] = random_float(1.0,150.0)
			velo[1] = random_float(1.0,150.0)
			velo[2] = random_float(1.0,150.0)
		}
		else 
			velo[2] += 100
		
		pev(newent,pev_angles,angles)
		angles[1] += random_num(1,360)
		pev(id,pev_origin,origin)
		set_pev(newent, pev_origin, origin)
		set_pev(newent, pev_classname, "pdm_money")
		engfunc(EngFunc_SetModel, newent, model)
		engfunc(EngFunc_SetSize,newent,mins,maxs)
		set_pev(newent,pev_angles,angles)
		set_pev(newent, pev_solid, SOLID_TRIGGER)
		set_pev(newent,pev_movetype,MOVETYPE_TOSS)
		set_pev(newent, pev_velocity,velo)
		engfunc(EngFunc_DropToFloor,newent)
		
		if(moneyleft == 0)	return FMRES_IGNORED
		
		if(moneyleft < 1000) {
			moneybox[newent]=moneyleft
			moneyleft = 0
			return FMRES_IGNORED
		}
		moneyleft -= 1000
		moneybox[newent]=1000
	}
	return FMRES_IGNORED
}

public player_Touch(touched, toucher) { 
	
	if (!pev_valid(touched) || !is_user_alive(toucher) ||  !get_pcvar_num(ison) || !can_pickup[toucher])
		return FMRES_IGNORED
	
	new classname[32]
	pev(touched, pev_classname, classname, sizeof classname - 1)
	
	if (equali(classname, "pdm_money")) {
		if(fm_get_user_money(toucher) == 16000)	return FMRES_IGNORED
		else if((fm_get_user_money(toucher)+moneybox[touched]) > 16000)		fm_set_user_money(toucher,16000)
		else	fm_set_user_money(toucher,fm_get_user_money(toucher) + moneybox[touched])
		
		if(pev_valid(touched))
			engfunc(EngFunc_RemoveEntity,touched)
		
		if(get_pcvar_num(fadeon))
			screen_fade(toucher)
	}
	
	return FMRES_IGNORED
}


public screen_fade(id) {
	message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id) 
	write_short(1<<12)
	write_short(1<<12)
	write_short(1<<12)
	write_byte(0)
	write_byte(200)
	write_byte(0)
	write_byte(20)
	message_end()
}


//XxAvalanchexX Stocks
stock fm_set_user_money(id,money,flash=0)
{
	set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);
	
	message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
	write_long(money);
	write_byte(flash);
	message_end();
}




stock fm_get_user_money(id)
{
	return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);
}
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
TryAgain
Извън линия
Потребител
Потребител
Мнения: 182
Регистриран на: 25 Яну 2017, 16:59
Се отблагодари: 1 път
Получена благодарност: 26 пъти

Re: Молба за корекция в плъгин "Players Drop Money"

Мнение от TryAgain » 18 Мар 2023, 09:23

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

#include <amxmodx>
#include <fakemeta>

#define PLUGIN	"Players Drop Money"
#define AUTHOR	"Sh!nE*"
#define VERSION	"1.7"

#if cellbits == 32
#define OFFSET_CSMONEY  115
#else
#define OFFSET_CSMONEY  140
#endif

#define OFFSET_LINUX      5

#define MAXENTS 1500

new moneybox[MAXENTS]
new model[] = "models/w_money_new.mdl"

new method, ison, m_amount, ran_money, random_nums, money_drop, money_drop_a, fadeon, divide, force, timeremove
//new method6
new g_msgScreenFade
new bool:can_pickup[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	ison = register_cvar("amx_dropmoney","1")
	method = register_cvar("amx_dropmethod","5")
	divide = register_cvar("amx_moneydivide","2")
	m_amount = register_cvar("amx_dropamount","1000")
	ran_money = register_cvar("amx_droprandom","300 500 700")
	random_nums = register_cvar("amx_droprandomnums","300 2000")
	money_drop = register_cvar("amx_playerdrop","1")
	money_drop_a = register_cvar("amx_playerdropamount","1000")
	fadeon = register_cvar("amx_moneyfade","1")
	force = register_cvar("amx_dropforce","10")
	timeremove = register_cvar("amx_moneyremove", "5")
	g_msgScreenFade = get_user_msgid("ScreenFade")
	
	register_clcmd("drop","hook_drop")
	
	register_event("DeathMsg", "deatha", "a")
	register_forward(FM_Touch,"player_Touch")
	register_logevent("round_start", 2, "1=Round_Start")
}

public client_connect(id)	can_pickup[id]=true
public client_disconnect(id)	can_pickup[id]=false

public plugin_precache() {
	precache_model(model)
}

public hook_drop(id) {
	if(!get_pcvar_num(ison) || !get_pcvar_num(money_drop))	return PLUGIN_CONTINUE
	new weapon,clip,ammo,money,Float:velo[3]
	weapon = get_user_weapon(id,clip,ammo)
	if(weapon == CSW_KNIFE) {
		if(fm_get_user_money(id) < get_pcvar_num(money_drop_a))
			money = fm_get_user_money(id)
		else
			money = get_pcvar_num(money_drop_a)
		
		fm_set_user_money(id,fm_get_user_money(id) - money)
		can_pickup[id] = false
		set_task(0.3,"reset_pick",id)
		new start_velo = get_pcvar_num(force) * 15
		new end_velo = get_pcvar_num(force) * 50
		velocity_by_aim(id,random_num(start_velo,end_velo),velo)
		make_money(id,money,velo)
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public reset_pick(id)	can_pickup[id] = true

public deatha() {
	if(!get_pcvar_num(ison))	return PLUGIN_CONTINUE
	
	new money, Float:velo[3]
	new victim = read_data(2)
	new killer = read_data(1)
	
	if(fm_get_user_money(victim) < 10000) return PLUGIN_CONTINUE
	
	if(killer && killer != victim)
		fm_set_user_money(killer,fm_get_user_money(killer) - 300)
	
	switch(get_pcvar_num(method)) {
		case 1:{
			money = get_pcvar_num(m_amount)
			if(fm_get_user_money(victim) < money) {
				money = fm_get_user_money(victim)
				fm_set_user_money(victim,0)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - get_pcvar_num(m_amount))
			}
		case 2:{
			new tempmoney = fm_get_user_money(victim)
			if(money != 1) {
				money = (tempmoney / get_pcvar_num(divide))
				fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
			else {
				fm_set_user_money(victim,0)
				money = 1
			}
		}
		case 3:{
			new maxmoney = fm_get_user_money(victim)
			money = random_num(1,maxmoney)
			fm_set_user_money(victim,fm_get_user_money(victim) - money)
		}
		case 4:{
			new tempmoney2[32]
			get_pcvar_string(ran_money,tempmoney2,31)
			new tempmoney[3][6]
			parse(tempmoney2, tempmoney[0], sizeof tempmoney[] - 1,tempmoney[1], sizeof tempmoney[] - 1,tempmoney[2], sizeof tempmoney[] - 1)
			new num = random_num(1,3)
			switch(num) {
				case 1:{
					money = str_to_num(tempmoney[0])
				}
				case 2:{
					money = str_to_num(tempmoney[1])
				}
				case 3:{
					money = str_to_num(tempmoney[2])
				}
			}
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
		case 5:{
			new tempmoney22[32], num_from, num_to
			get_pcvar_string(random_nums,tempmoney22,31)
			new tempmoney1[2][6]
			parse(tempmoney22, tempmoney1[0], sizeof tempmoney1[] - 1,tempmoney1[1], sizeof tempmoney1[] - 1)
			num_from = str_to_num(tempmoney1[0])
			num_to = str_to_num(tempmoney1[1])
			if(num_to > 16000)	num_to = 16000
			if(num_from < 0)	num_to = 0
			money = random_num(num_from,num_to)
			
			if(fm_get_user_money(victim) < money) {
				fm_set_user_money(victim,0)
				money = fm_get_user_money(victim)
			}
			else	fm_set_user_money(victim,fm_get_user_money(victim) - money)
			}
	}
	make_money(victim,money,velo)
	return PLUGIN_CONTINUE
}

public round_start() {
	new money_ent
	while((money_ent=engfunc(EngFunc_FindEntityByString,money_ent,"classname","pdm_money")) != 0){
		engfunc(EngFunc_RemoveEntity,money_ent)
	}
}


public make_money(id,money,Float:velo[]) {
	new moneybags = money/1000
	new moneyleft = money
	new Float:origin[3]
	new Float:angles[3]
	new Float:mins[3] = {-2.79, -0.0, -6.14}
	new Float:maxs[3] = {2.42, 1.99, 6.35}
	
	if((moneybags * 1000) < money)	moneybags++
	
	for(new i = 0; i < moneybags; ++i) {
		new newent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		if(!is_user_alive(id)) {
			velo[0] = random_float(1.0,150.0)
			velo[1] = random_float(1.0,150.0)
			velo[2] = random_float(1.0,150.0)
		}
		else 
			velo[2] += 100
		
		pev(newent,pev_angles,angles)
		angles[1] += random_num(1,360)
		pev(id,pev_origin,origin)
		set_pev(newent, pev_origin, origin)
		set_pev(newent, pev_classname, "pdm_money")
		engfunc(EngFunc_SetModel, newent, model)
		engfunc(EngFunc_SetSize,newent,mins,maxs)
		set_pev(newent,pev_angles,angles)
		set_pev(newent, pev_solid, SOLID_TRIGGER)
		set_pev(newent,pev_movetype,MOVETYPE_TOSS)
		set_pev(newent, pev_velocity,velo)
		engfunc(EngFunc_DropToFloor,newent)
		
		if(get_pcvar_num(timeremove))
		{
			set_task(get_pcvar_float(timeremove), "removemoney", newent)
		}
		
		if(moneyleft == 0)	return FMRES_IGNORED
		
		if(moneyleft < 1000) {
			moneybox[newent]=moneyleft
			moneyleft = 0
			return FMRES_IGNORED
		}
		moneyleft -= 1000
		moneybox[newent]=1000
	}
	return FMRES_IGNORED
}

public removemoney(ent)
{
	if(pev_valid(ent))
	{
		engfunc(EngFunc_RemoveEntity,ent)
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public player_Touch(touched, toucher) { 
	
	if (!pev_valid(touched) || !is_user_alive(toucher) ||  !get_pcvar_num(ison) || !can_pickup[toucher])
		return FMRES_IGNORED
	
	new classname[32]
	pev(touched, pev_classname, classname, sizeof classname - 1)
	
	if (equali(classname, "pdm_money")) {
		if(fm_get_user_money(toucher) == 16000)	return FMRES_IGNORED
		else if((fm_get_user_money(toucher)+moneybox[touched]) > 16000)		fm_set_user_money(toucher,16000)
		else	fm_set_user_money(toucher,fm_get_user_money(toucher) + moneybox[touched])
		
		if(pev_valid(touched))
			engfunc(EngFunc_RemoveEntity,touched)
		
		if(get_pcvar_num(fadeon))
			screen_fade(toucher)
	}
	
	return FMRES_IGNORED
}


public screen_fade(id) {
	message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id) 
	write_short(1<<12)
	write_short(1<<12)
	write_short(1<<12)
	write_byte(0)
	write_byte(200)
	write_byte(0)
	write_byte(20)
	message_end()
}


//XxAvalanchexX Stocks
stock fm_set_user_money(id,money,flash=0)
{
	set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX);
	
	message_begin(MSG_ONE,get_user_msgid("Money"),{0,0,0},id);
	write_long(money);
	write_byte(flash);
	message_end();
}




stock fm_get_user_money(id)
{
	return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX);
}
Добавих ти квар с който да определя времето което ще се махне модела от земята след неговото създавене.

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

amx_moneyremove

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Re: Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 18 Мар 2023, 13:46

Велико, благодаря !
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Re: Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 20 Мар 2023, 00:34

Крашва , явно в комбинация с другите плъгини или не знам...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Re: Молба за корекция в плъгин "Players Drop Money"

Мнение от Siska » 26 Юли 2023, 17:35

Извинете, искам да попитам на този етап дали може някой да погледне кода и да каже евентуално защо крашва сървъра ?
С дебъг няма никаква информация и нищо в логовете. Просто спира няколко минути след влизане, а иначе опцията работи и модела изчезва от земята. Когато махна плъгина краша спира...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

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

Обратно към “Поддръжка / Помощ”

Кой е на линия

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