Vfox
Дебютант
Когда выдаю деньги себе командой givemoney, сервер крашит.Лог во время краша:
Строка с ошибкой :
Cmd Givemoney:
Строки из инклуда:
Кому не трудно, помогите пожалуйста
Код:
[22:04:38] [debug] Server crashed while executing PR-RP.amx
[22:04:38] [debug] AMX backtrace:
[22:04:38] [debug] #0 native format () [004711b0] from samp-server-cr.exe
[22:04:38] [debug] #1 0038b370 in SendMes (playerid=0, color=-86, fstring[]=@0x004b9e28 " ", ... <2 arguments>) at C:\Servers\Province rp(CRMP)\gamemodes\PR-RP.pwn:9202
[22:04:38] [debug] #2 004c6914 in public cmd_givemoney (playerid=0, params[]=@0x004ed948 "") at C:\Servers\Province rp(CRMP)\gamemodes\PR-RP.pwn:30043
[22:04:38] [debug] #3 native CallLocalFunction () [00472260] from samp-server-cr.exe
[22:04:38] [debug] #4 00007584 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x004ed8f4 "/givemoney 0 1000000") at C:\Servers\Province rp(CRMP)\pawno\include\zcmd.inc:108
[22:04:38] [debug] Native backtrace:
[22:04:38] [debug] #0 0046c3d0 in ?? () from samp-server-cr.exe
Код:
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);
// Push the static format parameters.
#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;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SendClientMessage(playerid, color, message);
}
else
{
return SendClientMessage(playerid, color, fstring);
}
}
Код:
CMD:givemoney(playerid, params[])
{
if(PlayerLogged[playerid] == 0) return true;
if(dostup[playerid] == 0) return true;
if(PlayerInfo[playerid][pAdminn] < 10 || AdminLogged[playerid] == false) return true;
if(sscanf(params, "ud", params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE, "• {ffcf00}[ Подсказка ] {ffffff}Введите: /givemoney [id игрока] [кол-во денег]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, TPLAYEROFFLINE);
if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, COLOR_GREY, TPLAYERNLOGGED);
if(params[1] > 25000000 || params[1] < 1) return SendClientMessage(playerid, COLOR_GREY, "Кол-во денег от 1 до 25000000!");
GiveMoney(params[0], params[1]);
SendMes(playerid, COLOR_ORANGE, "Вы установили денег игроку: %s", sendername(params[0]));
SendClientMessage(params[0], COLOR_GREEN, "===============[УВЕДОМЛЕНИЕ]================ ");
SendMes(params[0], COLOR_WHITE, " Администратор %s выписал вам чек на %d руб.", PlayerInfo[playerid][pSendername],params[1]);
SendClientMessage(params[0], COLOR_WHITE, " Деньги были зачислены на ваш баланс");
SendClientMessage(params[0], COLOR_GREEN, "== Подпись: Администрация CRMP Role Play ==");
format(totalstring, 120, "[A] Администратор %s выдал %d руб. игроку %s", PlayerInfo[playerid][pSendername],params[1],sendername(params[0]));
SendAdminMessage(COLOR_GREY, totalstring);
Log("GiveMoney",totalstring);
return true;
}
Код:
/**********************************
* *
* @Author: ZeeX *
* @Version: 0.3.1 *
* @Released: 31/10/2009 *
* *
**********************************/
#if defined _zcmd_included
#endinput
#endif
#define _zcmd_included
#define MAX_FUNC_NAME (32)
#define COMMAND:%1(%2) \
forward cmd_%1(%2); \
public cmd_%1(%2)
#define CMD:%1(%2) \
COMMAND:%1(%2)
#define command(%1,%2,%3) \
COMMAND:%1(%2, %3)
#define cmd(%1,%2,%3) \
COMMAND:%1(%2, %3)
#if !defined isnull
#define isnull(%1) \
((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif
forward OnPlayerCommandReceived(playerid, cmdtext[]);
forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
static
bool:zcmd_g_HasOPCS = false,
bool:zcmd_g_HasOPCE = false;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
return CallLocalFunction("zcmd_OnFilterScriptInit", "");
}
#if defined _ALS_OnFilterScriptInit
#undef OnFilterScriptInit
#else
#define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit zcmd_OnFilterScriptInit
forward zcmd_OnFilterScriptInit();
#else /*not a filterscript*/
public OnGameModeInit()
{
zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
if (funcidx("zcmd_OnGameModeInit") != -1)
{
return CallLocalFunction("zcmd_OnGameModeInit", "");
}
return 1;
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit zcmd_OnGameModeInit
forward zcmd_OnGameModeInit();
#endif /*if defined FILTERSCRIPT*/
public OnPlayerCommandText(playerid, cmdtext[])
{
if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
{
return 1;
}
new
pos,
funcname[MAX_FUNC_NAME];
while (cmdtext[++pos] > ' ')
{
funcname[pos-1] = tolower(cmdtext[pos]);
}
format(funcname, sizeof(funcname), "cmd_%s", funcname);
while (cmdtext[pos] == ' ') pos++;
if (!cmdtext[pos])
{
if (zcmd_g_HasOPCE)
{
return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
}
return CallLocalFunction(funcname, "is", playerid, "\1");
}
if (zcmd_g_HasOPCE)
{
return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
}
return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
}
#if defined _ALS_OnPlayerCommandText
#undef OnPlayerCommandText
#else
#define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText zcmd_OnPlayerCommandText
forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);
