Перейти к содержанию
Авторизация  
Dexter

Выдача лицензий в диалоге

Рекомендуемые сообщения

Dexter

Создал команду /givelic [iD игрока] 

 

При вводе команды открывается диалог в котором 2 пункта [Выдача водительских прав, и выдача лиц. на оружие]

 

Всё готово но посыпались ошибки, видимо что то не правильно сделал в диалоге

        case dialog_GIVELIC:
        {
            if(!response) return true;
            if(response)
            {
                switch(listitem)
                {
                    case 0:
                    
					PLAYER_DATA[params[0][data_LICB] = 1;
					new str[145];
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[params[0]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
					

                    case 1:
                    
                    PLAYER_DATA[params[0][data_LICG] = 1;
					new str[145];
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[params[0]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
					
                }
            }

        }

Вот сами ошибки: 

\new.pwn(10824) : error 017: undefined symbol "params"
\new.pwn(10824) : error 029: invalid expression, assumed zero
\new.pwn(10824) : error 029: invalid expression, assumed zero
\new.pwn(10824) : fatal error 107: too many error messages on one line

Помогите исправить

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


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

Команду кинь

  • Like 1

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


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

CMD:givelic(playerid,params[])
{
if(antiflood[playerid] > 0) return SendClientMessage(playerid, COLOR_WARNING,"Не флуди!");
antiflood[playerid]++;
if(PLAYER_DATA[playerid][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Вы не авторизованы на сервере!");
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_WARNING, "Используйте: /givelic [ид]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!");
if(PLAYER_DATA[params[0]][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Данный игрок не прошел авторизацию!");
if(PLAYER_DATA[playerid][data_ADMLVL]
ShowPlayerDialogFix(playerid, dialog_GIVELIC, DIALOG_STYLE_LIST, "{FFCC00}Выдача лицензий", "Водительское удостоверение\nЛицензия на оружие", "Выбрать", "Отмена");
return true;
}

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


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

Создай глобальную 

new alalalala[MAX_PLAYERS]; //к примеру

Затем в команду после показа диалога или перед (решай сам) но что бы после data_ADMLVL]

alalalala[playerid] = params[0];

Потом диалог замени на

        case dialog_GIVELIC:
        {
            if(!response) return true;
            if(response)
            {
                switch(listitem)
                {
                    case 0:
                    
					PLAYER_DATA[alalalala[playerid][data_LICB] = 1;
					new str[145];
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[alalalala[playerid]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
					

                    case 1:
                    
                    PLAYER_DATA[alalalala[playerid][data_LICG] = 1;
					new str[145];
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[alalalala[playerid]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
					
                }
            }

        }

Все.

Ошибки? Кидай.

  • Like 1

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


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

 

 


PLAYER_DATA[alalalala[playerid]][data_NAME]);
new.pwn(10826) : error 001: expected token: "]", but found "["
new.pwn(10827) : error 002: only a single statement (or expression) can follow each "case"
new.pwn(10827) : error 017: undefined symbol "str"
new.pwn(10827) : warning 215: expression has no effect
new.pwn(10827) : error 001: expected token: ";", but found "]"
new.pwn(10827) : fatal error 107: too many error messages on one line

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


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

Обе PLAYER_DATA[alalalala[playerid][data_LIC... замени на PLAYER_DATA[alalalala[playerid]][data_LIC

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


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

@Alonso,

\new.pwn(10827) : error 002: only a single statement (or expression) can follow each "case"
\new.pwn(10827) : error 017: undefined symbol "str"
\new.pwn(10827) : warning 215: expression has no effect
\new.pwn(10827) : error 001: expected token: ";", but found "]"
\new.pwn(10827) : fatal error 107: too many error messages on one line 

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


Ссылка на сообщение
Поделиться на другие сайты
Alonso
        case dialog_GIVELIC:
        {
            if(!response) return true;
			new str[145];
            switch(listitem)
            {
                case 0:
				{
					PLAYER_DATA[alalalala[playerid][data_LICB] = 1;
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[alalalala[playerid]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
				}
                case 1:
				{
	                PLAYER_DATA[alalalala[playerid][data_LICG] = 1;
					new str[145];
					format(str,sizeof(str),"[A] %s выдал водительские права %s",PLAYER_DATA[playerid][data_NAME],PLAYER_DATA[alalalala[playerid]][data_NAME]);
					SendAdminMessage(0x666699FF,str);
				}
            }
        }

попробуй на это сменить

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


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

@Alonso,

\new.pwn(10832) : warning 219: local variable "str" shadows a variable at a preceding level
\new.pwn(23139) : warning 219: local variable "giveslic" shadows a variable at a preceding level
\new.pwn(23139) : error 008: must be a constant expression; assumed zero
\new.pwn(23139) : error 008: must be a constant expression; assumed zero
\new.pwn(23139) : error 036: empty statement
\new.pwn(23139) : fatal error 107: too many error messages on one line 

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


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

Команда: 

CMD:givelic(playerid, params[])
{
	// Проверка на фракцию
	// Проверку на анти флуд
	if(PLAYER_DATA[playerid][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Вы не авторизованы на сервере!");
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_WARNING, "Используйте: /givelic [ид]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!");
    if(PLAYER_DATA[params[0]][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Данный игрок не прошел авторизацию!");
    if(PLAYER_DATA[playerid][data_ADMLVL] < 3) return true;
	
	ShowPlayerDialog(playerid,ID ДИАЛОГА, DIALOG_STYLE_LIST,"Продажа лицензий","{ffffff}Лицензия пилота\nЛицензия водного транспорта", "Выдать", "Закрыть");
	SetPVarInt(playerid,"givelic", params[0]);
}

Диалоги:

		case ID ДИАЛОГА: // ВОТ ТУТ МЫ ПРЕДЛАГАЕМ ЧТО ЕМУ КУПИТЬ
		{
			if(!response) return DeletePVar(playerid,"givelic");
			new acter = GetPVarInt(playerid,"givelic");
			if(Lic[acter][listitem + 1] != 0) return SCM(playerid,-1,"У игрока уже есть эта лицензия");
			switch(listitem)
			{
			    case 0:
			    {
			        if(p_info[acter][pCash] < 20000) return SCM(playerid,-1,"У игрока нет столько денег.");
			        format(stringer, 128, "Вы предложили {ffffff}%s  купить лицензию пилота",NamePlayer[acter]);
			        SendClientMessage(playerid,-1,stringer);

			        format(stringer, 255, "{ffffff}%s  предлагает вам купить лицению на пилота за {ffffff}20.000$\nДля покупки нажмите {ffffff}'Да' иначе {ffffff}'Нет'",NamePlayer[playerid]);
			        ShowPlayerDialog(acter,ID ДИАЛОГА,DIALOG_STYLE_MSGBOX,"Покупка лицензии",stringer,"Да", "Нет");
			    }
			    case 1:
			    {
			        if(p_info[acter][pCash] < 10000) return SCM(playerid,-1,"У игрока нет столько денег.");
       				format(stringer, 128, "Вы предложили {ffffff}%s "cBLUE" купить лицензию водного транспорта",NamePlayer[acter]);
			        SendClientMessage(playerid,-1,stringer);

			        format(stringer, 255, "{ffffff}%s  предлагает вам купить лицению на водный транспорт за {ffffff}10.000$\n\
							Для покупки нажмите {ffffff}'Да'"cBLUE" иначе {ffffff}'Нет'",NamePlayer[playerid]);
			        ShowPlayerDialog(acter,ID ДИАЛОГА,DIALOG_STYLE_MSGBOX,"ORGПокупка лицензии",stringer,"Да", "Нет");
			    }
			}
			SetPVarInt(acter,"givelic2",listitem);
			SetPVarInt(acter,"givelic2p",playerid);
			DeletePVar(playerid,"givelic");
			return 1;
		}


case ID ДИАЛОГА: // СОГЛАШАЕТСЯ КУПИТЬ ЛИ ЕЕ ИЛИ НЕТ
		{
		    new idd = GetPVarInt(playerid,"givelic2p");
		    new switem = GetPVarInt(playerid,"givelic2");
		    if(!response)
		    {
		        SendClientMessage(playerid,-1,"Вы отказались от предложения");
		        SendClientMessage(idd,-1,"Игрок отказался от предложения");
		    }
		    else
		    {
		        switch(switem)
		        {
					case 0:
					{
					    SendClientMessage(playerid,-1,"Вы купили {ffffff}лицензию пилотаза {ffffff}20.000$");
					    SendClientMessage(playerid,-1,"Для просмотра лицензий Используйте /licenses");

					    format(stringer, 128,"%s купил {ffffff}лицензию пилота за {ffffff}20.000$", NamePlayer[playerid]);
					    SendClientMessage(idd,-1,stringer);

					    p_info[playerid][pCash] -= 20000;
					    p_info[idd][pCash] += 2000;

					    // ЛИЦЕНЗИЮ КАКУЮ ВЫДАЛ ПРОВЕРКА
					}
					case 1:
					{
					    SendClientMessage(playerid,-1,"Вы купили {ffffff}лицензию на водный транспорт за {ffffff}10.000$");
					    SendClientMessage(playerid,-1,"Для просмотра лицензий Используйте /licenses");

					    format(stringer, 128,"%s купил {ffffff}лицензию на водный транспорт за {ffffff}10.000$", NamePlayer[playerid]);
					    SendClientMessage(idd,-1,stringer);

					    p_info[playerid][pCash] -= 10000;
					    p_info[idd][pCash] += 1000;

					    // ЛИЦЕНЗИЮ КАКУЮ ВЫДАЛ ПРОВЕРКА
					}
		        }

				// ТУТ ОБНОВЛЕНИЕ ДАННЫХ ЗАПРОС
		    }
      		DeletePVar(playerid,"givelic2p");
      		DeletePVar(playerid,"givelic2");
		}
Изменено пользователем #Salev
  • Like 1

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


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

Спасибо, #Salev и Alonso

 

Проблему исправил команда заработала из CMD убрал alalalala[playerid] = params[0];

 

а из case 1 убрал  new str[145];

 

И всё заработало

  • Like 1

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


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

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

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

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.