Другое SAMPFUNCS | API C++

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Потому что ты его читаешь как пакет.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
P.S. Лучше сразу читать весь туториал, а не форум засорять. Ишь ты.
 

FordeD

Участник
98
11
Индефикатор идет первым. И у тебя в скане уже ошибка. Ты число в чар записываешь? Нахрена?
нет, буква соответственно чар, а цифра имеет интовский тип

закомпилил этот код:

C++:
void CALLBACK cmd_get_player_square(std::string param)
{
    char buf[128];
    char buk[1];
    int chisl;
    char square = 'A';
    if (param.empty())
    {
        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "[COORDINATOR]\t\tВы не указали квадрат поиска! (( /coord [Буква] [число] ))");
        return;
    }
   
if (buk == "А") bukn = 1;
    if (buk == "Б") bukn = 2;
    if (buk == "В") bukn = 3;
    if (buk == "Г") bukn = 4;
    if (buk == "Д") bukn = 5;
    if (buk == "Ж") bukn = 6;
    if (buk == "З") bukn = 7;
    if (buk == "И") bukn = 8;
    if (buk == "К") bukn = 9;
    if (buk == "Л") bukn = 10;
    if (buk == "М") bukn = 11;
    if (buk == "Н") bukn = 12;
    if (buk == "О") bukn = 13;
    if (buk == "П") bukn = 14;
    if (buk == "Р") bukn = 15;
    if (buk == "С") bukn = 16;
    if (buk == "Т") bukn = 17;
    if (buk == "У") bukn = 18;
    if (buk == "Ф") bukn = 19;
    if (buk == "Х") bukn = 20;
    if (buk == "Ц") bukn = 21;
    if (buk == "Ч") bukn = 22;
    if (buk == "Ш") bukn = 23;
    if (buk == "Я") bukn = 24;

    switch (bukn)
    {
        case 1: 
        {
            switch (chisl)
            {
                case 1:
                {
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "[COORDINATOR]\t\tКвадрат поиска [%d-%d] указан на вашем GPS", buk, chisl);
                    CVector fPos = { 12.0, 13.2 , 0.0 };
                    GAME->Get3DMarkers()->CreateMarker(square, MARKER3D_TUBE, &fPos, 40.0, 1.0, 3, 52, 227, 255);
                    break;
                }
                case 2:
                {
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "[COORDINATOR]\t\tКвадрат поиска [%d-%d] указан на вашем GPS", buk, chisl);
                    CVector fPos = { 302.0, 313.2 , 0.0 };
                    GAME->Get3DMarkers()->CreateMarker(square, MARKER3D_TUBE, &fPos, 40.0, 1.0, 3, 52, 227, 255);
                    break;
                }
                case 3:
                {
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "[COORDINATOR]\t\tКвадрат поиска [%d-%d] указан на вашем GPS", buk, chisl);
                    CVector fPos = { 612.0, 613.2 , 0.0 };
                    GAME->Get3DMarkers()->CreateMarker(square, MARKER3D_TUBE, &fPos, 40.0, 1.0, 3, 52, 227, 255);
                    break;
                }
                case 4:
                {
                    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "[COORDINATOR]\t\tКвадрат поиска [%d-%d] указан на вашем GPS", buk, chisl);
                    CVector fPos = { 912.0, 913.2 , 0.0 };
                    GAME->Get3DMarkers()->CreateMarker(square, MARKER3D_TUBE, &fPos, 40.0, 1.0, 3, 52, 227, 255);
                    break;
                }
                default:
                {
                    sprintf(buf, "[COORDINATOR]\t\tКвадрат поиска [%s-%d] не находится в базе", buk, chisl);
                    SF->getSAMP()->getChat()->AddChatMessage(-1, buf);
                }
            }
        }
        default:
        {
            sprintf(buf, "[COORDINATOR]\t\tКвадрат поиска [%s-%d] не находится в базе", buk, chisl);
            SF->getSAMP()->getChat()->AddChatMessage(-1, buf);
        }
    }
}

теперь вообще не понимает команду /coord A 1
хотя распознает 1 А и выдает дефолтовое значение свича
 
Последнее редактирование:

Gabriel__

Известный
Проверенный
411
183
Как читать параметры из RPC ? Типо params->bitStream->Read() но RPC.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
А можно сделать типо сессии, дапустим я подключился первый и хост будет висеть на мне? А захотел передал хост другому
Теоретически - можно. Но на это может повлиять фаервол, провайдер, которые банально ограничили доступ к портам.
При смене "хостера" будет теряться соединение, скорее всего. Можно перечислить ещё несколько причин, почему этот способ не так удобен.
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
теперь вообще не понимает команду /coord A 1
хотя распознает 1 А и выдает дефолтовое значение свича
Свич работает с числами только. Лучше сканф заменить на регулярки и рабоать с std::string вместо чара. Практичнее в разы.
 

Gabriel__

Известный
Проверенный
411
183
Почему не ловит ид игрока который стреляет. Высвечиваются одни и те же числа 256 и 0
Код:
stBulletData data;
memset(&data, 0, sizeof(stBulletData)); // обнуляем
byte packet;
params->bitStream->ResetReadPointer(); // на всякий случай устанавливаем оффсет чтения на начало
params->bitStream->Read(packet); // читаем ID пакета
params->bitStream->Read((PCHAR)&data, sizeof(stBulletData)); // читаем отправляемые данные
SF->getSAMP()->getChat()->AddChatMessage(0xDFFFFF, "sTargetID: %d", data.sTargetID);
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Вторым байтом идет ид игрока, который отправил пакет
 
  • Нравится
Реакции: Gabriel__