• 0
Mironchik

[закрыто] Ошибка public OnDialogResponse, public OnIncomingPacket

Вопросы

Пишу команду (меню доната - коинов) и крашит сервер

 

[10:12:25] [debug] Server crashed while executing new.amx
[10:12:25] [debug] AMX backtrace:
[10:12:25] [debug] #0 00000014 in public OnDialogResponse (playerid=0, dialogid=271, response=1, listitem=2, inputtext[]=@017b5b8c "3. ") at C:\Users\fanti\OneDrive\Desktop\Мод 6.1\gamemodes\new.pwn:13
[10:12:25] [debug] #1 00bcb0c8 in public OnIncomingPacket () at C:\Users\fanti\OneDrive\Desktop\Мод 6.1\gamemodes\new.pwn:57310

 

Спойлер

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(strcmp(inputtext, "#", true) == 0 || strcmp(inputtext, "|", true) == 0 || strcmp(inputtext, "%", true) == 0 || strcmp(inputtext, "@", true) == 0 || strcmp(inputtext, "&", true) == 0)
    {
         SCM(playerid, -1, ".");
    }
    if(strfind(inputtext,"%") != -1)
    {
        return SendClientMessage(playerid, 0xFF6600FF, "В сообщение присутствуют запрещеные символы");
    }
    switch(dialogid)
    {
            case DIALOG_OWNABLE_TRAILER:
        {
            if(response)
            {
                new vehicleid = GetPlayerOwnableTrailerListitem(playerid);
                new index = GetVehicleData(vehicleid, V_ACTION_ID);
                if(vehicleid != INVALID_VEHICLE_ID)
                {
                    switch(listitem + 1)
                    {
                        case 1: // Открыть / закрыть
                        {
                            if(!IsPlayerInAnyVehicle(playerid))
                                return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в транспорте");


                            if(GetPlayerOwnableCars(playerid) == 0)
                                return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в личном транспорте");


                            new Float:pX,Float:pY,Float:pZ;
                            GetPlayerPos(playerid,pX,pY,pZ);
                            new Float:vX,Float:vY,Float:vZ;
                            GetVehiclePos(vehicleid,vX,vY,vZ);
                            if ((floatabs(pX-vX)<12.0)&&(floatabs(pY-vY)<12.0)&&(floatabs(pZ-vZ)<12.0)&& (vehicleid!=GetPlayerVehicleID(playerid)))
                            {
                                if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
                                {
                                    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
                                    GetVehiclePos(vehicleid, GetOwnableTrailerData(index, OT_POS_X), GetOwnableTrailerData(index, OT_POS_Y), GetOwnableTrailerData(index, OT_POS_Z));
                                    GetVehicleZAngle(vehicleid, GetOwnableTrailerData(index, OT_ANGLE));

                                    SaveOwnableTrailer(vehicleid);
                                }
                                else
                                {
                                    AttachTrailerToVehicle(vehicleid,GetPlayerVehicleID(playerid));
                                }
                            }
                            else SendClientMessage(playerid, 0x999999FF, "Вы должны находится возле дома на колёсах");
                            SetPVarInt(playerid, "go_list", 1);
                            //callcmd::lock(playerid, "1");
                        }
                        case 2: // Вставить / вытащить ключи
                        {
                            SetPVarInt(playerid, "go_list", 1);
                            if(vehicleid != INVALID_VEHICLE_ID)
                            {
                                new price = 5000;

                                if(GetPlayerGPSInfo(playerid, G_ENABLED) == GPS_STATUS_OFF)
                                {
                                    if(GetPlayerMoneyEx(playerid) >= price)
                                    {
                                        GivePlayerMoneyEx(playerid, -price, "Метка ТС на GPS", true, true);

                                        new Float: x, Float: y, Float: z;
                                        GetVehiclePos(vehicleid, x, y, z);

                                        EnablePlayerGPS(playerid, 55, x, y, z, "Местоположение Вашего транспорта отмечено на GPS");
                                        return 1;
                                    }
                                    else SendClientMessage(playerid, 0x999999FF, "Недостаточно денег");
                                }
                                else SendClientMessage(playerid, 0xCECECEFF, "На Вашем GPS уже отмечено место");
                            }
                        }
                        case 3: // Отметить транспорт на GPS
                        {
                            SetPVarInt(playerid, "go_list", 1);
                            if(DestroyOwnableTrailer(vehicleid))
                            {
                                new fmt_str[128];

                                new car_price = 1400000;
                                new percent = car_price * 20 / 100;
                                new price = car_price - percent;

                                SetPlayerTrailerData(playerid, GetPVarInt(playerid, "listitem_trailer"), INVALID_VEHICLE_ID);
                                AddPlayerData(playerid, P_BANK, +, price);

                                BankLog(playerid, price, "Продажа личного транспорта");

                                format(fmt_str, sizeof fmt_str, "UPDATE accounts SET bank=%d WHERE id=%d LIMIT 1", GetPlayerBankMoney(playerid), GetPlayerAccountID(playerid));
                                mysql_query(mysql, fmt_str, false);

                                SendClientMessage(playerid, 0x3399FFFF, "Вы продали личный дом на колёсах");

                                format(fmt_str, sizeof fmt_str, "Налоговый сбор составляет 30 процентов от его стоимости {FF9900}(%d руб)", percent);
                                SendClientMessage(playerid, 0xFFFFFFFF, fmt_str);

                                format(fmt_str, sizeof fmt_str, "На основной банковский счет переведено {FFFF00}%d руб", price);
                                SendClientMessage(playerid, 0x66CC00FF, fmt_str);

                                format(fmt_str, sizeof fmt_str, "~g~+%d rub", price);
                                GameText(playerid, fmt_str, 4000, 2);
                            }
                        }
                        case 4: // Содержимое багажника
                        {
                            SetVehiclePos(vehicleid, GetOwnableTrailerData(index,OT_POS_X), GetOwnableTrailerData(index,OT_POS_Y), GetOwnableTrailerData(index,OT_POS_Z));
                            SetVehicleZAngle(vehicleid, GetOwnableTrailerData(index, OT_ANGLE));
                        }
                        case 5: // Выгрузить транспорт
                        {
                            if(UnloadPlayerOwnableTrailer(playerid, GetPVarInt(playerid, "listitem_trailer")))
                                SendClientMessage(playerid, 0x66CC33FF, "Ваш трейлер успешно выгружен!");

                            else
                                SendClientMessage(playerid, 0x999999FF, "С момента загрузки данного трейлера еще не прошло 1 минуты");
                        }
                        default:
                            return 1;
                    }
                    //callcmd::car(playerid, "");
                }
            }
        }

 

Спойлер

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(strcmp(inputtext, "#", true) == 0 || strcmp(inputtext, "|", true) == 0 || strcmp(inputtext, "%", true) == 0 || strcmp(inputtext, "@", true) == 0 || strcmp(inputtext, "&", true) == 0)
    {
         SCM(playerid, -1, ".");
    }
    if(strfind(inputtext,"%") != -1)
    {
        return SendClientMessage(playerid, 0xFF6600FF, "В сообщение присутствуют запрещеные символы");
    }
    switch(dialogid)
    {
            case DIALOG_OWNABLE_TRAILER:
        {
            if(response)
            {
                new vehicleid = GetPlayerOwnableTrailerListitem(playerid);
                new index = GetVehicleData(vehicleid, V_ACTION_ID);
                if(vehicleid != INVALID_VEHICLE_ID)
                {
                    switch(listitem + 1)
                    {
                        case 1: // Открыть / закрыть
                        {
                            if(!IsPlayerInAnyVehicle(playerid))
                                return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в транспорте");


                            if(GetPlayerOwnableCars(playerid) == 0)
                                return SendClientMessage(playerid, 0xCECECEFF, "Вы должны находиться в личном транспорте");


                            new Float:pX,Float:pY,Float:pZ;
                            GetPlayerPos(playerid,pX,pY,pZ);
                            new Float:vX,Float:vY,Float:vZ;
                            GetVehiclePos(vehicleid,vX,vY,vZ);
                            if ((floatabs(pX-vX)<12.0)&&(floatabs(pY-vY)<12.0)&&(floatabs(pZ-vZ)<12.0)&& (vehicleid!=GetPlayerVehicleID(playerid)))
                            {
                                if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
                                {
                                    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
                                    GetVehiclePos(vehicleid, GetOwnableTrailerData(index, OT_POS_X), GetOwnableTrailerData(index, OT_POS_Y), GetOwnableTrailerData(index, OT_POS_Z));
                                    GetVehicleZAngle(vehicleid, GetOwnableTrailerData(index, OT_ANGLE));

                                    SaveOwnableTrailer(vehicleid);
                                }
                                else
                                {
                                    AttachTrailerToVehicle(vehicleid,GetPlayerVehicleID(playerid));
                                }
                            }
                            else SendClientMessage(playerid, 0x999999FF, "Вы должны находится возле дома на колёсах");
                            SetPVarInt(playerid, "go_list", 1);
                            //callcmd::lock(playerid, "1");
                        }
                        case 2: // Вставить / вытащить ключи
                        {
                            SetPVarInt(playerid, "go_list", 1);
                            if(vehicleid != INVALID_VEHICLE_ID)
                            {
                                new price = 5000;

                                if(GetPlayerGPSInfo(playerid, G_ENABLED) == GPS_STATUS_OFF)
                                {
                                    if(GetPlayerMoneyEx(playerid) >= price)
                                    {
                                        GivePlayerMoneyEx(playerid, -price, "Метка ТС на GPS", true, true);

                                        new Float: x, Float: y, Float: z;
                                        GetVehiclePos(vehicleid, x, y, z);

                                        EnablePlayerGPS(playerid, 55, x, y, z, "Местоположение Вашего транспорта отмечено на GPS");
                                        return 1;
                                    }
                                    else SendClientMessage(playerid, 0x999999FF, "Недостаточно денег");
                                }
                                else SendClientMessage(playerid, 0xCECECEFF, "На Вашем GPS уже отмечено место");
                            }
                        }
                        case 3: // Отметить транспорт на GPS
                        {
                            SetPVarInt(playerid, "go_list", 1);
                            if(DestroyOwnableTrailer(vehicleid))
                            {
                                new fmt_str[128];

                                new car_price = 1400000;
                                new percent = car_price * 20 / 100;
                                new price = car_price - percent;

                                SetPlayerTrailerData(playerid, GetPVarInt(playerid, "listitem_trailer"), INVALID_VEHICLE_ID);
                                AddPlayerData(playerid, P_BANK, +, price);

                                BankLog(playerid, price, "Продажа личного транспорта");

                                format(fmt_str, sizeof fmt_str, "UPDATE accounts SET bank=%d WHERE id=%d LIMIT 1", GetPlayerBankMoney(playerid), GetPlayerAccountID(playerid));
                                mysql_query(mysql, fmt_str, false);

                                SendClientMessage(playerid, 0x3399FFFF, "Вы продали личный дом на колёсах");

                                format(fmt_str, sizeof fmt_str, "Налоговый сбор составляет 30 процентов от его стоимости {FF9900}(%d руб)", percent);
                                SendClientMessage(playerid, 0xFFFFFFFF, fmt_str);

                                format(fmt_str, sizeof fmt_str, "На основной банковский счет переведено {FFFF00}%d руб", price);
                                SendClientMessage(playerid, 0x66CC00FF, fmt_str);

                                format(fmt_str, sizeof fmt_str, "~g~+%d rub", price);
                                GameText(playerid, fmt_str, 4000, 2);
                            }
                        }
                        case 4: // Содержимое багажника
                        {
                            SetVehiclePos(vehicleid, GetOwnableTrailerData(index,OT_POS_X), GetOwnableTrailerData(index,OT_POS_Y), GetOwnableTrailerData(index,OT_POS_Z));
                            SetVehicleZAngle(vehicleid, GetOwnableTrailerData(index, OT_ANGLE));
                        }
                        case 5: // Выгрузить транспорт
                        {
                            if(UnloadPlayerOwnableTrailer(playerid, GetPVarInt(playerid, "listitem_trailer")))
                                SendClientMessage(playerid, 0x66CC33FF, "Ваш трейлер успешно выгружен!");

                            else
                                SendClientMessage(playerid, 0x999999FF, "С момента загрузки данного трейлера еще не прошло 1 минуты");
                        }
                        default:
                            return 1;
                    }
                    //callcmd::car(playerid, "");
                }
            }
        }

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 ответ на этот вопрос

  • 0

@Mironchik прикрепите полный лог, не нужно обрезать его. 

И выделите строчки, которые показаны в сообщении лога 

2 часа назад, Mironchik сказал:

at C:\Users\fanti\OneDrive\Desktop\Мод 6.1\gamemodes\new.pwn:57310

 

2 часа назад, Mironchik сказал:

at C:\Users\fanti\OneDrive\Desktop\Мод 6.1\gamemodes\new.pwn:13

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • dfhfyyjftyfthtj
      От dfhfyyjftyfthtj
      Добавил новую валюту (btc) на сервер и хочу сделать, чтоб он рос и падал эквивалентно настоящему курсу биткоина, но не могу понять как это реализовать. Подскажите пожалуйста, буду очень благодарен.