Редакция на Money Rewards Modifier(награда при убийство)

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от sianbg » 27 Яну 2018, 15:34

Искам редакция на този плъгин viewtopic.php?f=18&t=1762

Ако може някой да ми даде код в, който има само 1 функция в, която подавам id на играча и колко пари да получава при убийство. Трябва ми само 1 такава функция с която да задавам на всеки играч различна сума, която да получава при убийство. Трябва ми само кода за да го вградя в мой плъгин. Малко се затрудних с редакцията. Благодаря предварително.

Аватар
WaLkZ
Извън линия
Администратор
Администратор
Мнения: 799
Регистриран на: 05 Окт 2016, 21:13
Местоположение: Варна
Се отблагодари: 75 пъти
Получена благодарност: 227 пъти
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от WaLkZ » 27 Яну 2018, 15:41

Да разбирам, че искаш с ReAPI да работи?

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от sianbg » 27 Яну 2018, 15:47

WaLkZ написа: 27 Яну 2018, 15:41 Да разбирам, че искаш с ReAPI да работи?
Еми по принцип да. Не знам каква е и колко голяма е разликата.

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

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от OciXCrom » 27 Яну 2018, 16:15

Не разбрах какво точно искаш. Добавих натив set_kill_money(id, amount) с който можеш да променяш парите при убийство на играча. Ако е сложено на -1, ще дава обикновено.

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

#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define PLUGIN_VERSION "1.1"

enum _:PlayerRewards
{
	RewardType:Type,
	Math[16],
	Round[16],
	Flags
}

new const g_szAll[] = "#all"

new Array:g_aPlayerRewards,
	g_szMap[32],
	g_iKillMoney[33],
	g_iCurrentRound,
	g_iTotalPlayerRewards

public plugin_init()
{
	register_plugin("Money Rewards Modifier", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXMoneyModifier", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "ReAPI_HC_OnRoundFreezeEnd")
	RegisterHookChain(RG_CBasePlayer_AddAccount, "ReAPI_HC_AddAccount_Pre")	
	get_mapname(g_szMap, charsmax(g_szMap))
	g_aPlayerRewards = ArrayCreate(PlayerRewards)
	ReadFile()
}

public plugin_end()
	ArrayDestroy(g_aPlayerRewards)

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/MoneyModifier.ini", szConfigsName)
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[96], szValue[64], szKey[32], bool:bRead = true, iSize
		new eReward[PlayerRewards], szFlags[32]
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, '#', ';': continue
				case '[':
				{
					iSize = strlen(szData)
					
					if(szData[iSize - 1] == ']')
					{
						szData[0] = ' '
						szData[iSize - 1] = ' '
						trim(szData)
						
						if(contain(szData, "*") != -1)
						{
							strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '*')
							copy(szValue, strlen(szKey), g_szMap)
							bRead = equal(szValue, szKey) ? true : false
						}
						else
							bRead = equal(szData, g_szAll) || equali(szData, g_szMap)
					}
					else continue
				}
				default:
				{
					if(!bRead)
						continue
						
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey); trim(szValue)
					
					switch(szKey[1])
					{
						case 'T':
						{
							if(equali(szKey, "RT_ROUND_BONUS"))
								eReward[Type] = RT_ROUND_BONUS
							else if(equali(szKey, "RT_PLAYER_RESET"))
								eReward[Type] = RT_PLAYER_RESET
							else if(equali(szKey, "RT_PLAYER_JOIN"))
								eReward[Type] = RT_PLAYER_JOIN
							else if(equali(szKey, "RT_PLAYER_SPEC_JOIN"))
								eReward[Type] = RT_PLAYER_SPEC_JOIN
							else if(equali(szKey, "RT_PLAYER_BOUGHT_SOMETHING"))
								eReward[Type] = RT_PLAYER_BOUGHT_SOMETHING
							else if(equali(szKey, "RT_HOSTAGE_TOOK"))
								eReward[Type] = RT_HOSTAGE_TOOK
							else if(equali(szKey, "RT_HOSTAGE_RESCUED"))
								eReward[Type] = RT_HOSTAGE_RESCUED
							else if(equali(szKey, "RT_HOSTAGE_DAMAGED"))
								eReward[Type] = RT_HOSTAGE_DAMAGED
							else if(equali(szKey, "RT_HOSTAGE_KILLED"))
								eReward[Type] = RT_HOSTAGE_KILLED
							else if(equali(szKey, "RT_TEAMMATES_KILLED"))
								eReward[Type] = RT_TEAMMATES_KILLED
							else if(equali(szKey, "RT_ENEMY_KILLED"))
								eReward[Type] = RT_ENEMY_KILLED
							else if(equali(szKey, "RT_INTO_GAME"))
								eReward[Type] = RT_INTO_GAME
							else if(equali(szKey, "RT_VIP_KILLED"))
								eReward[Type] = RT_VIP_KILLED
							else if(equali(szKey, "RT_VIP_RESCUED_MYSELF"))
								eReward[Type] = RT_VIP_RESCUED_MYSELF
							else continue
							
							szFlags[0] = EOS
							eReward[Round][0] = EOS
							parse(szValue, eReward[Math], charsmax(eReward[Math]), eReward[Round], charsmax(eReward[Round]), szFlags, charsmax(szFlags))
							eReward[Flags] = szFlags[0] ? read_flags(szFlags) : ADMIN_ALL
							ArrayPushArray(g_aPlayerRewards, eReward)
							g_iTotalPlayerRewards++
						}
						case 'R':
						{
							if(equal(szKey, "RR_CTS_WIN"))
								rg_set_account_rules(RR_CTS_WIN, math_add(rg_get_account_rules(RR_CTS_WIN), szValue))
							else if(equal(szKey, "RR_TERRORISTS_WIN"))
								rg_set_account_rules(RR_TERRORISTS_WIN, math_add(rg_get_account_rules(RR_TERRORISTS_WIN), szValue))
							else if(equal(szKey, "RR_TARGET_BOMB"))
								rg_set_account_rules(RR_TARGET_BOMB, math_add(rg_get_account_rules(RR_TARGET_BOMB), szValue))
							else if(equal(szKey, "RR_VIP_ESCAPED"))
								rg_set_account_rules(RR_VIP_ESCAPED, math_add(rg_get_account_rules(RR_VIP_ESCAPED), szValue))
							else if(equal(szKey, "RR_VIP_ASSASSINATED"))
								rg_set_account_rules(RR_VIP_ASSASSINATED, math_add(rg_get_account_rules(RR_VIP_ASSASSINATED), szValue))
							else if(equal(szKey, "RR_TERRORISTS_ESCAPED"))
								rg_set_account_rules(RR_TERRORISTS_ESCAPED, math_add(rg_get_account_rules(RR_TERRORISTS_ESCAPED), szValue))
							else if(equal(szKey, "RR_CTS_PREVENT_ESCAPE"))
								rg_set_account_rules(RR_CTS_PREVENT_ESCAPE, math_add(rg_get_account_rules(RR_CTS_PREVENT_ESCAPE), szValue))
							else if(equal(szKey, "RR_ESCAPING_TERRORISTS_NEUTRALIZED"))
								rg_set_account_rules(RR_ESCAPING_TERRORISTS_NEUTRALIZED, math_add(rg_get_account_rules(RR_ESCAPING_TERRORISTS_NEUTRALIZED), szValue))
							else if(equal(szKey, "RR_BOMB_DEFUSED"))
								rg_set_account_rules(RR_BOMB_DEFUSED, math_add(rg_get_account_rules(RR_BOMB_DEFUSED), szValue))
							else if(equal(szKey, "RR_BOMB_PLANTED"))
								rg_set_account_rules(RR_BOMB_PLANTED, math_add(rg_get_account_rules(RR_BOMB_PLANTED), szValue))
							else if(equal(szKey, "RR_BOMB_EXPLODED"))
								rg_set_account_rules(RR_BOMB_EXPLODED, math_add(rg_get_account_rules(RR_BOMB_EXPLODED), szValue))
							else if(equal(szKey, "RR_ALL_HOSTAGES_RESCUED"))
								rg_set_account_rules(RR_ALL_HOSTAGES_RESCUED, math_add(rg_get_account_rules(RR_ALL_HOSTAGES_RESCUED), szValue))
							else if(equal(szKey, "RR_TARGET_BOMB_SAVED"))
								rg_set_account_rules(RR_TARGET_BOMB_SAVED, math_add(rg_get_account_rules(RR_TARGET_BOMB_SAVED), szValue))
							else if(equal(szKey, "RR_HOSTAGE_NOT_RESCUED"))
								rg_set_account_rules(RR_HOSTAGE_NOT_RESCUED, math_add(rg_get_account_rules(RR_HOSTAGE_NOT_RESCUED), szValue))
							else if(equal(szKey, "RR_VIP_NOT_ESCAPED"))
								rg_set_account_rules(RR_VIP_NOT_ESCAPED, math_add(rg_get_account_rules(RR_VIP_NOT_ESCAPED), szValue))
							else if(equal(szKey, "RR_LOSER_BONUS_DEFAULT"))
								rg_set_account_rules(RR_LOSER_BONUS_DEFAULT, math_add(rg_get_account_rules(RR_LOSER_BONUS_DEFAULT), szValue))
							else if(equal(szKey, "RR_LOSER_BONUS_MIN"))
								rg_set_account_rules(RR_LOSER_BONUS_MIN, math_add(rg_get_account_rules(RR_LOSER_BONUS_MIN), szValue))
							else if(equal(szKey, "RR_LOSER_BONUS_MAX"))
								rg_set_account_rules(RR_LOSER_BONUS_MAX, math_add(rg_get_account_rules(RR_LOSER_BONUS_MAX), szValue))
							else if(equal(szKey, "RR_LOSER_BONUS_ADD"))
								rg_set_account_rules(RR_LOSER_BONUS_ADD, math_add(rg_get_account_rules(RR_LOSER_BONUS_ADD), szValue))
							else if(equal(szKey, "RR_RESCUED_HOSTAGE"))
								rg_set_account_rules(RR_RESCUED_HOSTAGE, math_add(rg_get_account_rules(RR_RESCUED_HOSTAGE), szValue))
							else if(equal(szKey, "RR_TOOK_HOSTAGE_ACC"))
								rg_set_account_rules(RR_TOOK_HOSTAGE_ACC, math_add(rg_get_account_rules(RR_TOOK_HOSTAGE_ACC), szValue))
							else if(equal(szKey, "RR_TOOK_HOSTAGE"))
								rg_set_account_rules(RR_TOOK_HOSTAGE, math_add(rg_get_account_rules(RR_TOOK_HOSTAGE), szValue))
							else if(equal(szKey, "RR_END"))
								rg_set_account_rules(RR_END, math_add(rg_get_account_rules(RR_END), szValue))
						}
					}
				}
			}
		}
		
		fclose(iFilePointer)
	}
}

public client_putinserver(id)
	g_iKillMoney[id] = -1

public ReAPI_HC_OnRoundFreezeEnd()
	g_iCurrentRound = get_member_game(m_iTotalRoundsPlayed) + 1
	
public ReAPI_HC_AddAccount_Pre(id, iAmount, RewardType:iType, bool:bChange)
{
	if(iType == RT_ENEMY_KILLED && g_iKillMoney[id] != -1)
	{
		SetHookChainArg(2, ATYPE_INTEGER, g_iKillMoney[id])
		return
	}
	
	static eReward[PlayerRewards]
	new bool:bMatch
	
	for(new i, iFlags = get_user_flags(id); i < g_iTotalPlayerRewards; i++)
	{
		ArrayGetArray(g_aPlayerRewards, i, eReward)
		
		if(eReward[Type] == iType && is_valid_round(eReward[Round]) && iFlags & eReward[Flags] == eReward[Flags])
		{
			bMatch = true
			iAmount = math_add(iAmount, eReward[Math])
		}
	}
	
	if(bMatch)
		SetHookChainArg(2, ATYPE_INTEGER, iAmount)
}

bool:is_valid_round(const szRound[])
{
	if(!szRound[0] || szRound[0] == '0')
		return true
		
	if(contain(szRound, "-") != -1)
	{
		static szMin[4], szMax[4]
		strtok(szRound, szMin, charsmax(szMin), szMax, charsmax(szMax), '-')
		trim(szMin); trim(szMax)
		return str_to_num(szMin) <= g_iCurrentRound <= str_to_num(szMax)
	}
	else if(isdigit(szRound[0]))
		return g_iCurrentRound == str_to_num(szRound)
		
	static szNewRound[16], cOperator, iNum
	copy(szNewRound, charsmax(szNewRound), szRound)
	replace_all(szNewRound, charsmax(szNewRound), " ", "")
	cOperator = szRound[0]
	szNewRound[0] = ' '
	
	trim(szNewRound)
	iNum = str_to_num(szNewRound)
	
	switch(cOperator)
	{
		case '>': return g_iCurrentRound > iNum
		case '<': return g_iCurrentRound < iNum
	}
	
	return false
}

math_add(iNum, const szMath[])
{
	static szNewMath[16], bool:bPercent, cOperator, iMath
   
	copy(szNewMath, charsmax(szNewMath), szMath)
	bPercent = szNewMath[strlen(szNewMath) - 1] == '%'
	cOperator = szNewMath[0]
   
	if(!isdigit(cOperator))
		szNewMath[0] = ' '
   
	if(bPercent)
		replace(szNewMath, charsmax(szNewMath), "%", "")
	   
	trim(szNewMath)
	iMath = str_to_num(szNewMath)
   
	if(bPercent)
		iMath *= iNum / 100
	   
	switch(cOperator)
	{
		case '+': iNum += iMath
		case '-': iNum -= iMath
		case '/': iNum /= iMath
		case '*': iNum *= iMath
		default: iNum = iMath
	}
	
	return iNum
}

public plugin_natives()
	register_native("set_kill_money", "_set_kill_money")
	
public _set_kill_money(iPlugin, iParams)
	g_iKillMoney[get_param(1)] = get_param(2)

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от sianbg » 27 Яну 2018, 18:41

Благодаря, работи :) Само да попитам защо максимума е 999 ? Ако сложа 1000 става на 100.

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

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от OciXCrom » 27 Яну 2018, 20:41

В .ini файла ли? Дай пример?

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от sianbg » 27 Яну 2018, 21:28

Еми то ми се случва в няколко плъгина, но грешката е моя. Декларирам си променливата с new money = 1000; примерно. Подавам я като стойност и не се получава 1000, а 100. Мисля, че излизам от лимита, но дори не знам колко е. Получава ми се също, когато set_user_health. Там случая е следния:

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

new health[33];
health[id] = 1000;
Още ми е прекалено странен този език :D

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

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от OciXCrom » 27 Яну 2018, 23:41

То няма лимит или е прекалено голям. Правилно си е зададена стойността. Някъде другаде грешиш явно. Би ли предоставил целия код за да тествам?

Аватар
sianbg
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 13 Ное 2017, 12:18
Получена благодарност: 1 път
Обратна връзка:

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от sianbg » 27 Яну 2018, 23:58

Редактирам 1 мод и да ти дам целия код само ще ти загубя времето. Голямо мазало е още.
Ето нещата през, които минават данните. Това е админ команда и се вика тази функция.

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

public setmoney(id, level, cid)
{
     if (!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
		
	 new Arg1[24];
     new Arg2[4];
	 read_argv(1, Arg1, charsmax(Arg1));
     read_argv(2, Arg2, charsmax(Arg2));
	//finds a player id that matches the partial name given
          //the 1 means that it will not target the player if he
          // has immunity access
          new player = str_to_num(Arg1);
	  new Health = str_to_num(Arg2);
          if (!is_user_connected(player))
          {

               console_print(id, "Sorry, player %s could not be found or targetted!", Arg1);
               return PLUGIN_HANDLED;
          } else {
               set_kill_money(player,Health);
   
          } 
	return PLUGIN_HANDLED;
}
Така слагам сумата на играча.

Другият вариант за грешка е зареждането на първоначалните данни от mysql.

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

LoadLevel(id)
{
	new szAuth[33];
	new szKey[40];

	if ( get_pcvar_num(savexp) == 0 )
	{
		get_user_ip( id, szAuth , charsmax(szAuth), 1);
		formatex( szKey , 63 , "%s-IP" , szAuth);
	}
	else if ( get_pcvar_num(savexp) == 1 )
	{
		get_user_authid( id , szAuth , charsmax(szAuth) );
		formatex( szKey , 63 , "%s-ID" , szAuth);
	}
	else if ( get_pcvar_num(savexp) == 2 )
	{
		get_user_name( id, szAuth , charsmax(szAuth) );
		formatex( szKey , 63 , "%s-NAME" , szAuth);
	}

	if ( !get_pcvar_num(save_type) )
	{
		new szData[256];

		formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) 
			
		nvault_get(g_Vault, szKey, szData, 255) 

		replace_all(szData , 255, "#", " ")
		new xp[32], level[32] 
		parse(szData, level, 31, xp, 31) 
		PlayerLevel[id] = str_to_num(level)
		PlayerXp[id] = str_to_num(xp)  
	}
	else
	{
		static szQuery[ 250 ], iData[ 1 ]; 
		formatex( szQuery, 250, "SELECT t1.`player_level`, t1.`player_xp`, t2.armor, t2.health, t2.speed, t2.gravity, t2.money FROM `mytable` as t1 INNER JOIN upgrades as t2 ON t1.player_id=t2.player_id WHERE ( t1.`player_id` = '%s' );", szAuth ); 
     
		iData[ 0 ] = id;
		SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
		
	}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError );
		
		return;
	} 
	else 
	{ 
		new id = iData[ 0 ];
		new szAuth[33];
		new szKey[40];

		if ( get_pcvar_num(savexp) == 0 )
		{
			get_user_ip( id, szAuth , charsmax(szAuth), 1);
			formatex( szKey , 63 , "%s-IP" , szAuth);
		}
		else if ( get_pcvar_num(savexp) == 1 )
		{
			get_user_authid( id , szAuth , charsmax(szAuth) );
			formatex( szKey , 63 , "%s-ID" , szAuth);
		}
		else if ( get_pcvar_num(savexp) == 2 )
		{
			get_user_name( id, szAuth , charsmax(szAuth) );
			formatex( szKey , 63 , "%s-NAME" , szAuth);
		}
		
		new ColLevel = SQL_FieldNameToNum(hQuery, "player_level") 
		new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
		new ColHealth = SQL_FieldNameToNum(hQuery, "health")
		new ColArmor = SQL_FieldNameToNum(hQuery, "armor")
		new ColSpeed = SQL_FieldNameToNum(hQuery, "speed")
		new ColGravity = SQL_FieldNameToNum(hQuery, "gravity")
		new ColMoney = SQL_FieldNameToNum(hQuery, "money")
		if(SQL_NumResults(hQuery) > 0 ) {
			while (SQL_MoreResults(hQuery)) 
			{
				PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
				PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
				c_armor[id] = SQL_ReadResult(hQuery, ColArmor);
				c_health[id] = SQL_ReadResult(hQuery, ColHealth);
				c_speed[id] = SQL_ReadResult(hQuery, ColSpeed);
				c_gravity[id] = SQL_ReadResult(hQuery, ColGravity);
				new money = SQL_ReadResult(hQuery, ColMoney);
				set_kill_money(id, money);
				SQL_NextRow(hQuery)
			}
			static szQuery2[ 128 ]; 

			formatex( szQuery2, 127, "UPDATE `mytable` SET `online`='%d' WHERE ( `player_id` = '%s' );",id, szAuth );
		
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery2);
		} else {
			
			static szQuery[ 228 ]; 

			formatex( szQuery, 228, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`, `rank`, `online`) VALUES ('%s', '%d', '%d', '%s', '%d');", szAuth , PlayerLevel[id], PlayerXp[id], RANKLEVELS[PlayerLevel[id]], id );
			
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery)
			static szQuery2[ 120 ]; 

			formatex( szQuery2, 120, "INSERT INTO `upgrades` SET `player_id`='%s'", szAuth);
			
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery2)
		}
		
		
	} 
}

public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError ); 
		
		return;
	} 
} 

Махнах от твоя код, когато влезе играч да се зададе на -1. Проблема с кръвта е същият. През същият код минава.

Едит: Сега видях, че new Arg2[4], но все пак 1000 са 4 числа.

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

Редакция на Money Rewards Modifier(награда при убийство)

Мнение от OciXCrom » 28 Яну 2018, 00:26

Проблемът е в Arg2[4]. Увеличи го.

Добавено преди 17 минути 38 секунди:
Въпреки факта, че 1000 има само 4 символа, при създаване string последният "слот" в buffera е резервиран за числото 0, съответно плъгинът ще прочете 100.

Пример - ако искаш да сложиш текста "test" в Arg[4], то ще изглежда така:

Arg[0] = 't'
Arg[1] = 'e'
Arg[2] = 's'
Arg[3] = 0

И ще се запази като "tes". Обаче ако го направиш Arg[5]:

Arg[0] = 't'
Arg[1] = 'e'
Arg[2] = 's'
Arg[3] = 't'
Arg[4] = 0

Иначе това player = str_to_num(Arg) и проверката дали е в сървъра не е правилен начин за таргетиране на играч. Ползвай cmd_target. Ще работи и така, обаче не е правилно.

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

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 11 госта