Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Debug] stock SendMes

Статус
В этой теме нельзя размещать новые ответы.

goldenj

Умник
Здраствуйте еще раз скриптюги!) :ce:

Вылезла еще одна проблемка. Когда в наркопритоне использую команду /buydrugs. То сервер уходит в краш.

PHP:
[17:06:16] [debug] Server crashed while executing edit.amx
[17:06:16] [debug] AMX backtrace:
[debug] #0 native format () from samp-server.exe
[debug] #1 0026d370 in SendMes (playerid=0, color=866844671, fstring[]=@0x0027168c "", ... <3 arguments>) at C:\Users\Степа\Desktop\Gamemode\gamemodes\edit.pwn:31671
[debug] #2 00137a84 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x002d6e30 "/buydrugs 100") at C:\Users\Степа\Desktop\Gamemode\gamemodes\edit.pwn:19281
[17:06:16] [debug] Native backtrace:
[debug] #0 0046cd36 in ?? () from samp-server.exe



Вот строки команды:
PHP:
	else if(strcmp(cmd,"/buydrugs",true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
			if(!IsAGang(playerid) && !ISAMAFIA(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция");
			tmp = strcharsplit(cmdtext, idx);
			if(!strlen(tmp))  return SendClientMessage(playerid, COLOR_WHITE, "/buydrugs [количество]");
			if(PlayerToPoint(3.0,playerid,322.1280,1118.8314,1083.8828))
			{
				new ammo = strval(tmp);
				if(ammo < 1 || ammo > 500) return SendClientMessage(playerid, COLOR_GREY, "Нельзя закупить меньше 1 и больше 500 грамм!");
				if(PlayerInfo[playerid][pCash] < ammo*DrugsPrice) return SendClientMessage(playerid, COLOR_GREY, "У вас нет столько денег!");
				if(PlayerInfo[playerid][pDrugs]+ammo > 500) return SendClientMessage(playerid, COLOR_GREY, "Нельзя унести с собой более 500 грамм!");
				new gnmr = PlayerInfo[playerid][pMRInections];
				if(gnmr == 12 || gnmr == 13 || gnmr == 15 || gnmr == 17 || gnmr == 18 || gnmr == 5 || gnmr == 6 || gnmr == 14)
				{
					new bdnomer;
					if(gnmr == 12) bdnomer = 0;
					else if(gnmr == 13) bdnomer = 1;
					else if(gnmr == 15) bdnomer = 2;
					else if(gnmr == 17) bdnomer = 3;
					else if(gnmr == 18) bdnomer = 4;
					switch(GZInfo[44][gFrakVlad])
					{
					case 12: GangStore[bdnomer][gMoney] += ammo*DrugsPrice;
					case 13: GangStore[bdnomer][gMoney] += ammo*DrugsPrice;
					case 15: GangStore[bdnomer][gMoney] += ammo*DrugsPrice;
					case 17: GangStore[bdnomer][gMoney] += ammo*DrugsPrice;
					case 18: GangStore[bdnomer][gMoney] += ammo*DrugsPrice;
					}
					gangupdate(bdnomer);
				}
				PlayerInfo[playerid][pCash] -= ammo*DrugsPrice;
				PlayerInfo[playerid][pDrugs] += ammo;
	19281			SendMes(playerid,COLOR_BLUE, "Вы купили %d грамм наркотиков за %d вирт [С собой %d из 500 грамм]", ammo,ammo*DrugsPrice,PlayerInfo[playerid][pDrugs]);
			}
		}
		return true;
	}
Вот сам сток SendMes:
PHP:
stock SendMes(playerid, color, fstring[], {Float, _}:...)
{
	static const
	STATIC_ARGS = 3;
	new
	n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
	if (n)
	{
		new
		message[128],
		arg_start,
		arg_end;
		#emit CONST.alt        fstring
		#emit LCTRL          5
		#emit ADD
		#emit STOR.S.pri        arg_start
		#emit LOAD.S.alt        n
		#emit ADD
		#emit STOR.S.pri        arg_end
		do
		{
			#emit LOAD.I
			#emit PUSH.pri
			arg_end -= BYTES_PER_CELL;
			#emit LOAD.S.pri      arg_end
		}
		while (arg_end > arg_start);
#emit PUSH.S          fstring
#emit PUSH.C          128
#emit PUSH.ADR         message

		n += BYTES_PER_CELL * 3;
#emit PUSH.S          n
#emit SYSREQ.C         format

		n += BYTES_PER_CELL;                   Вот строчка 31671
#emit LCTRL          4
#emit LOAD.S.alt        n
#emit ADD
#emit SCTRL          4
		return SendClientMessage(playerid, color, message);
	}
	else return SendClientMessage(playerid, color, fstring);
}
Пытался сам решить проблему, но не понимаю кодировку в stock SendMes.
Помогите решить трабл :ah: +ов дам :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу