Вопросы по PAWN скриптингу

bet.io

Известный
117
16
Выше же скидывал

Он выше скидывал - посмотри. Лично я не понял, что у него там происходит.
Всмысле, я же показал как нужно:
zdD6FYH.jpg
А у меня высвечивается вот так:
rUO28xF.png

Помоги пожалуйста
 

bet.io

Известный
117
16
Я в твоём коде не вижу ни слова про "Рабочий день окончен".
Вот, что у меня получилось после твоего кода:
Код:
CMD:invite(playerid, params[])
{
    if(PTEMP[playerid][pLogin] == 0 || !GetPVarInt(playerid,"Fraction_Duty")) return true;
    new para1;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new ftext[32];
    if(IsPlayerConnected(playerid))
    {
        if(!CanInvite(playerid)) return SCM(playerid, COLOR_GREY, " Вам недоступна эта функция!");
        if(sscanf(params, "u",para1)) return    SCM(playerid, COLOR_GRAD2, " Введите: /invite [id игрока]");
        if(GetDistanceBetweenPlayers(playerid, para1) < 5.0)
        {
            new skinid;
            switch(PTEMP[playerid][pMember])
            {
                case 3,19: skinid = 287;
                case 4: skinid = 274;
                case 5: skinid = 124;
                case 6: skinid = 123;
                case 7: skinid = 57;
                case 9,16,20: skinid = 188;
                case 11: skinid = 59;
                case 12: skinid = 103;
                case 13: skinid = 108;
                case 14: skinid = 111;
                case 15: skinid = 105;
                case 17: skinid = 114;
                case 18: skinid = 175;
                case 24,26,29: skinid = 247;
            }
            if(IsPlayerInAnyVehicle(para1)) return SCM(playerid, COLOR_GREY, " Игрок в машине!");
            if(PTEMP[para1][pMember] != 0) return SCM(playerid, COLOR_GREY,  "Игрок состоит в организации");
            if(PTEMP[para1][pWarns] >= 1) return SCM(playerid, COLOR_GRAD1, " У игрока Warn.");
            GetPlayerName(para1, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            format(string, 128, " Вы пригласили %s присоеденится к %s", giveplayer,ftext);
            SCM(playerid, COLOR_BLUE, string);
            SCM(playerid, -1, "Рабочий день окончен");
            format(string, 128, " Вы приглашены в %s лидером %s", GetFracName(PTEMP[playerid][pMember]), sendername);
            SCM(para1, COLOR_BLUE, string);
            PTEMP[para1][pMember] = PTEMP[playerid][pMember];
            PTEMP[para1][pRank] = 1;
            DeletePVar(para1,"Fraction_Duty");
            PTEMP[para1][pJob] = 0;
            PTEMP[para1][pModel] = skinid;
            if(IsAGang(para1) || IsAMafia(para1) || IsABiker(para1)) SpawnPlayer(para1);
            printf("Игрок %s принял %s в %s", Name(playerid), Name(para1), ftext);
            new year, month, day, hour, minute, second;
            getdate(year, month, day);
            gettime(hour, minute, second);
            mysql_format(DATABASE,QUERY,128, "UPDATE `"TABLE_ACCOUNTS"` SET pOnlineLid = '%04i/%02i/%02i %02i:%02i:%02i' WHERE name = '%e'", year, month, day, hour, minute, second, PTEMP[para1][pName]);
            mysql_function_query(DATABASE,QUERY,false,"","");
        }
    }
    return true;
}
Работает так, как показано на скрине (в одну строку, а не в две)
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
Вот, что у меня получилось после твоего кода:
Код:
CMD:invite(playerid, params[])
{
    if(PTEMP[playerid][pLogin] == 0 || !GetPVarInt(playerid,"Fraction_Duty")) return true;
    new para1;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new ftext[32];
    if(IsPlayerConnected(playerid))
    {
        if(!CanInvite(playerid)) return SCM(playerid, COLOR_GREY, " Вам недоступна эта функция!");
        if(sscanf(params, "u",para1)) return    SCM(playerid, COLOR_GRAD2, " Введите: /invite [id игрока]");
        if(GetDistanceBetweenPlayers(playerid, para1) < 5.0)
        {
            new skinid;
            switch(PTEMP[playerid][pMember])
            {
                case 3,19: skinid = 287;
                case 4: skinid = 274;
                case 5: skinid = 124;
                case 6: skinid = 123;
                case 7: skinid = 57;
                case 9,16,20: skinid = 188;
                case 11: skinid = 59;
                case 12: skinid = 103;
                case 13: skinid = 108;
                case 14: skinid = 111;
                case 15: skinid = 105;
                case 17: skinid = 114;
                case 18: skinid = 175;
                case 24,26,29: skinid = 247;
            }
            if(IsPlayerInAnyVehicle(para1)) return SCM(playerid, COLOR_GREY, " Игрок в машине!");
            if(PTEMP[para1][pMember] != 0) return SCM(playerid, COLOR_GREY,  "Игрок состоит в организации");
            if(PTEMP[para1][pWarns] >= 1) return SCM(playerid, COLOR_GRAD1, " У игрока Warn.");
            GetPlayerName(para1, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            format(string, 128, " Вы пригласили %s присоеденится к %s", giveplayer,ftext);
            SCM(playerid, COLOR_BLUE, string);
            SCM(playerid, -1, "Рабочий день окончен");
            format(string, 128, " Вы приглашены в %s лидером %s", GetFracName(PTEMP[playerid][pMember]), sendername);
            SCM(para1, COLOR_BLUE, string);
            PTEMP[para1][pMember] = PTEMP[playerid][pMember];
            PTEMP[para1][pRank] = 1;
            DeletePVar(para1,"Fraction_Duty");
            PTEMP[para1][pJob] = 0;
            PTEMP[para1][pModel] = skinid;
            if(IsAGang(para1) || IsAMafia(para1) || IsABiker(para1)) SpawnPlayer(para1);
            printf("Игрок %s принял %s в %s", Name(playerid), Name(para1), ftext);
            new year, month, day, hour, minute, second;
            getdate(year, month, day);
            gettime(hour, minute, second);
            mysql_format(DATABASE,QUERY,128, "UPDATE `"TABLE_ACCOUNTS"` SET pOnlineLid = '%04i/%02i/%02i %02i:%02i:%02i' WHERE name = '%e'", year, month, day, hour, minute, second, PTEMP[para1][pName]);
            mysql_function_query(DATABASE,QUERY,false,"","");
        }
    }
    return true;
}
Работает так, как показано на скрине (в одну строку, а не в две)
Явно что-то не так с пабликом OnPlayerTextCommand, посмотри.
 

Cod

Участник
117
15
Привет, не могу понять, "fatal error 100: cannot read from file: "dc_cmd""
Хотя в include он есть.
 

ZKelo

Известный
82
25
Привет, не могу понять, "fatal error 100: cannot read from file: "dc_cmd""
Хотя в include он есть.
Если папка include находится в корневой папке сервера, то файл нужно подключать так: "../include/dc_cmd", а если папка include находится внутри папки pawno, то файл нужно подключать так: "<dc_cmd>" (в этом случае без кавычек)

Вот, что у меня получилось после твоего кода:
Код:
CMD:invite(playerid, params[])
{
    if(PTEMP[playerid][pLogin] == 0 || !GetPVarInt(playerid,"Fraction_Duty")) return true;
    new para1;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];
    new ftext[32];
    if(IsPlayerConnected(playerid))
    {
        if(!CanInvite(playerid)) return SCM(playerid, COLOR_GREY, " Вам недоступна эта функция!");
        if(sscanf(params, "u",para1)) return    SCM(playerid, COLOR_GRAD2, " Введите: /invite [id игрока]");
        if(GetDistanceBetweenPlayers(playerid, para1) < 5.0)
        {
            new skinid;
            switch(PTEMP[playerid][pMember])
            {
                case 3,19: skinid = 287;
                case 4: skinid = 274;
                case 5: skinid = 124;
                case 6: skinid = 123;
                case 7: skinid = 57;
                case 9,16,20: skinid = 188;
                case 11: skinid = 59;
                case 12: skinid = 103;
                case 13: skinid = 108;
                case 14: skinid = 111;
                case 15: skinid = 105;
                case 17: skinid = 114;
                case 18: skinid = 175;
                case 24,26,29: skinid = 247;
            }
            if(IsPlayerInAnyVehicle(para1)) return SCM(playerid, COLOR_GREY, " Игрок в машине!");
            if(PTEMP[para1][pMember] != 0) return SCM(playerid, COLOR_GREY,  "Игрок состоит в организации");
            if(PTEMP[para1][pWarns] >= 1) return SCM(playerid, COLOR_GRAD1, " У игрока Warn.");
            GetPlayerName(para1, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            format(string, 128, " Вы пригласили %s присоеденится к %s", giveplayer,ftext);
            SCM(playerid, COLOR_BLUE, string);
            SCM(playerid, -1, "Рабочий день окончен");
            format(string, 128, " Вы приглашены в %s лидером %s", GetFracName(PTEMP[playerid][pMember]), sendername);
            SCM(para1, COLOR_BLUE, string);
            PTEMP[para1][pMember] = PTEMP[playerid][pMember];
            PTEMP[para1][pRank] = 1;
            DeletePVar(para1,"Fraction_Duty");
            PTEMP[para1][pJob] = 0;
            PTEMP[para1][pModel] = skinid;
            if(IsAGang(para1) || IsAMafia(para1) || IsABiker(para1)) SpawnPlayer(para1);
            printf("Игрок %s принял %s в %s", Name(playerid), Name(para1), ftext);
            new year, month, day, hour, minute, second;
            getdate(year, month, day);
            gettime(hour, minute, second);
            mysql_format(DATABASE,QUERY,128, "UPDATE `"TABLE_ACCOUNTS"` SET pOnlineLid = '%04i/%02i/%02i %02i:%02i:%02i' WHERE name = '%e'", year, month, day, hour, minute, second, PTEMP[para1][pName]);
            mysql_function_query(DATABASE,QUERY,false,"","");
        }
    }
    return true;
}
Работает так, как показано на скрине (в одну строку, а не в две)
Попробуй поставить
Код:
SCM(playerid, -1, "Рабочий день окончен");
именно после строки
Код:
SCM(para1, COLOR_BLUE, string);
 
  • Нравится
Реакции: Cod

MrMiLoN

Новичок
18
0
привет, нужна помощь. Как вставить в мод, уже готовый кейс вот такую вот штучку
Код:
if(strcmp(cmd, "/mdc", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(!IsACop(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вы не полицейский!");
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите: {FFFFFF} /mdc [id]");
                giveplayerid = ReturnUser(tmp);
                {
                    if(IsPlayerConnected(giveplayerid))
                    {
                        if(giveplayerid != INVALID_PLAYER_ID)
                        {
                            GetPlayerName(giveplayerid, sendername, sizeof(sendername));
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"______-=МОБИЛЬНЫЙ КОМПЬЮТЕР ДАННЫХ=-_______");
                            format(string, sizeof(string), "Имя : %s", sendername), SendClientMessage(playerid, COLOR_WHITE,string);
                            format(string, sizeof(string), "Преступление : %s", PlayerCrime[giveplayerid][pAccusedof]), SendClientMessage(playerid, COLOR_GRAD2,string);
                            format(string, sizeof(string), "Сообщил : %s", PlayerCrime[giveplayerid][pVictim]), SendClientMessage(playerid, COLOR_GRAD3,string);
                            format(string, sizeof(string), "Уровень розыска : %s", PlayerInfo[giveplayerid][pZvezdi]), SendClientMessage(playerid, COLOR_GRAD4,string);
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"_______________________________________");
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
                        return true;
                    }
                }
            }
            return true;
        }
Вставляю в конец мода, но там ошибки invalid function or declaration, ставил ; , проверял {}
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
привет, нужна помощь. Как вставить в мод, уже готовый кейс вот такую вот штучку
Код:
if(strcmp(cmd, "/mdc", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(!IsACop(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вы не полицейский!");
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите: {FFFFFF} /mdc [id]");
                giveplayerid = ReturnUser(tmp);
                {
                    if(IsPlayerConnected(giveplayerid))
                    {
                        if(giveplayerid != INVALID_PLAYER_ID)
                        {
                            GetPlayerName(giveplayerid, sendername, sizeof(sendername));
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"______-=МОБИЛЬНЫЙ КОМПЬЮТЕР ДАННЫХ=-_______");
                            format(string, sizeof(string), "Имя : %s", sendername), SendClientMessage(playerid, COLOR_WHITE,string);
                            format(string, sizeof(string), "Преступление : %s", PlayerCrime[giveplayerid][pAccusedof]), SendClientMessage(playerid, COLOR_GRAD2,string);
                            format(string, sizeof(string), "Сообщил : %s", PlayerCrime[giveplayerid][pVictim]), SendClientMessage(playerid, COLOR_GRAD3,string);
                            format(string, sizeof(string), "Уровень розыска : %s", PlayerInfo[giveplayerid][pZvezdi]), SendClientMessage(playerid, COLOR_GRAD4,string);
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"_______________________________________");
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
                        return true;
                    }
                }
            }
            return true;
        }
Вставляю в конец мода, но там ошибки invalid function or declaration, ставил ; , проверял {}
А чего сразу в начало мода не вставил? Перед тем как что-то сделать, нужно прочитать информацию об этом.
Отправляйся на поиски функции отправки команды в чат, а потом вставляй код туда, заранее его проверив на наличие ошибок.
 

S-Sirius

Известный
353
21
привет, нужна помощь. Как вставить в мод, уже готовый кейс вот такую вот штучку
Код:
if(strcmp(cmd, "/mdc", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(!IsACop(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вы не полицейский!");
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите: {FFFFFF} /mdc [id]");
                giveplayerid = ReturnUser(tmp);
                {
                    if(IsPlayerConnected(giveplayerid))
                    {
                        if(giveplayerid != INVALID_PLAYER_ID)
                        {
                            GetPlayerName(giveplayerid, sendername, sizeof(sendername));
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"______-=МОБИЛЬНЫЙ КОМПЬЮТЕР ДАННЫХ=-_______");
                            format(string, sizeof(string), "Имя : %s", sendername), SendClientMessage(playerid, COLOR_WHITE,string);
                            format(string, sizeof(string), "Преступление : %s", PlayerCrime[giveplayerid][pAccusedof]), SendClientMessage(playerid, COLOR_GRAD2,string);
                            format(string, sizeof(string), "Сообщил : %s", PlayerCrime[giveplayerid][pVictim]), SendClientMessage(playerid, COLOR_GRAD3,string);
                            format(string, sizeof(string), "Уровень розыска : %s", PlayerInfo[giveplayerid][pZvezdi]), SendClientMessage(playerid, COLOR_GRAD4,string);
                            SendClientMessage(playerid, TEAM_BLUE_COLOR,"_______________________________________");
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!");
                        return true;
                    }
                }
            }
            return true;
        }
Вставляю в конец мода, но там ошибки invalid function or declaration, ставил ; , проверял {}
Если бы у тебя был другой командный процессор то все работал бы. Но ты используешь обычный. Тогда надо в OnPlayerCommandText поставить
 

|DEVIL|

Известный
359
272
Всех приветствую. Нужна помощь. Я скачал готовую сборку Arizona PR, где можно прописав /addcar добавить машину, которая занесётся в базу данных и будет появляться на одном месте после перезапуска, а удалить её нельзя, только через базу, но это муторно, и мне нужен скрипт который удаляет машину из бд и с сервера. Заранее спасибо за помощь
 

Pakulichev

Software Developer & System Administrator
Друг
1,789
2,130
Всех приветствую. Нужна помощь. Я скачал готовую сборку Arizona PR, где можно прописав /addcar добавить машину, которая занесётся в базу данных и будет появляться на одном месте после перезапуска, а удалить её нельзя, только через базу, но это муторно, и мне нужен скрипт который удаляет машину из бд и с сервера. Заранее спасибо за помощь
Сделайте то, не знаю что; мод не дам, откуда скачал не скажу; как выглядит база вам знать необязательно. Заранее спасибо.