goldenj
Умник
Здраствуйте еще раз скриптюги!) :ce:
Вылезла еще одна проблемка. Когда в наркопритоне использую команду /buydrugs. То сервер уходит в краш.
Вот строки команды:
Вот сам сток SendMes:
Пытался сам решить проблему, но не понимаю кодировку в stock SendMes.
Помогите решить трабл :ah: +ов дам
Вылезла еще одна проблемка. Когда в наркопритоне использую команду /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;
}
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);
}
Помогите решить трабл :ah: +ов дам
