Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Проблема со stock - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Проблема со stock warning

#1
Пользователь офлайн   oukibt 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
stock NamesCar(modelid, string[20], price)
{
	switch(modelid)
	{
		case 411: string = "Infernus", price = 90000;
		case 451: string = "Turismo", price = 80000;
		case 415: string = "Cheetah", price = 70000;
		case 560: string = "Sultan", price = 55000;
		case 522: string = "NRG - 500", price = 75000;
		case 541: string = "Bullet", price = 85000;
	}
}



Вылазит варнинг, что "price" нигде не используется
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3104) : warning 204: symbol is assigned a value that is never used: "price"


Решил проблему так
stock NamesCar(modelid, string[20], price)
{
	switch(modelid)
	{
		case 411: string = "Infernus", price = 90000;
		case 451: string = "Turismo", price = 80000;
		case 415: string = "Cheetah", price = 70000;
		case 560: string = "Sultan", price = 55000;
		case 522: string = "NRG - 500", price = 75000;
		case 541: string = "Bullet", price = 85000;
	}
	new str[10];
	format(str, sizeof(str), "%d", price);
	SCM(INVALID_PLAYER_ID, -1, str);
}



Можно ли как-то по другому? Излишняя нагрузка на сервер

Сообщение отредактировал oukibt: 14 Январь 2020 - 17:04

0

#2
Пользователь офлайн   crazyvalik 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияoukibt (14 Январь 2020 - 17:03) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Ну так если ты никогда не использовал ничего не будет страшного просто тебе идет предупреждение
Возьми закодируй код на время /* *\
0

#3
Пользователь офлайн   oukibt 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияcrazyvalik (14 Январь 2020 - 17:09) писал:

Ну так если ты никогда не использовал ничего не будет страшного просто тебе идет предупреждение
Возьми закодируй код на время /* *\


Нет, я несколько раз использую этот сток включая все переменные

к примеру
if(pickupid == TakeCar)
{
    new dialog[100];
    new str[20];
    new price;
    NamesCar(vInfo[playerid][vID], str, price);
    format(dialog, sizeof(dialog), "1. %s", str);
    SPD(playerid, DIALOG_TAKE_CAR, DIALOG_STYLE_LIST, "Транспорт", str, "Выбрать", "Отмена");
}



    case DIALOG_SELL_CAR:
    {
    if(response)
        {
        new str[20];
        new string[50];
        new price;
        NamesCar(vInfo[playerid][vID], str, price);
        DestroyVehicle(vehids[playerid]);
        new query[90];
        format(query, sizeof(query), "DELETE FROM `cars` WHERE `owner` = %d", vInfo[playerid][Owner]);
        mysql_query(MySQL, query);
        format(string, sizeof(string),"Вы продали %s государству за %d", str, price);
        vInfo[playerid][Owner] = false;
        GiveMoney(playerid, price);
        }
    }


0

#4
Пользователь онлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
stock NamesCar(modelid, string[], &price) {

    switch(modelid) {

        case 411:
            string = "Infernus", price = 90000;
        case 451:
            string = "Turismo", price = 80000;
        case 415:
            string = "Cheetah", price = 70000;
        case 560:
            string = "Sultan", price = 55000;
        case 522:
            string = "NRG - 500", price = 75000;
        case 541: 
            string = "Bullet", price = 85000;
    }
}

Сообщение отредактировал Pa4enka: 14 Январь 2020 - 18:07

1

#5
Пользователь офлайн   oukibt 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (14 Январь 2020 - 18:06) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Спасибо, но есть еще одна проблема. Если написать string[], а не string[20] - вылезет череда ошибок

C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3224) : error 046: unknown array size (variable "string")
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3224) : error 029: invalid expression, assumed zero
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3225) : error 014: invalid statement; not in switch
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3225) : warning 215: expression has no effect
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3225) : error 001: expected token: ";", but found ":"
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3225) : error 029: invalid expression, assumed zero
C:\Users\Vlad\Desktop\prj\gamemodes\mmscr.pwn(3225) : fatal error 107: too many error messages on one line



3224 и 3225 - это case 411: и case 451:

Сообщение отредактировал oukibt: 15 Январь 2020 - 22:42

0

#6
Пользователь онлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
stock NamesCar(modelid, &price, string[], size = sizeof string) {

    switch(modelid) {

        case 411: {

           strcat(string, "Infernus", size);
           price = 90000;
        }
        
        case 451: {

            strcat(string, "Turismo", size);
            price = 80000;
        }
        
        case 415: {

            strcat(string, "Cheetah", size);
            price = 70000;
        }
        
        case 560: {

            strcat(string, "Sultan", size);
            price = 55000;
        }
        
        case 522: {
            
            strcat(string, "NRG - 500", size);
            price = 75000;
        }
        
        case 541: {

            strcat(string, "Bullet", size);
            price = 85000;
        }

    }
    return true;
}

NamesCar(vInfo[playerid][vID], price, string); // местами аргументы изменил

Не уверен, что это хорошая реализация, но ошибки должны исчезнуть.

Сообщение отредактировал Pa4enka: 16 Январь 2020 - 10:22

1

#7
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
stock NamesCar(modelid, string[], &price, size = sizeof(string))
{
	const __MAX_MODEL_NAME = 10;
	enum e_l_MODEL_INFO
	{
		__ModelID,
		__ModelName[__MAX_MODEL_NAME],
		__ModelPrice
	};
	static const model_info[][e_l_MODEL_INFO] =
	{
		{411, "Infernus", 90000},
		{451, "Turismo", 80000},
		{415, "Cheetah", 70000},
		{560, "Sultan", 55000},
		{522, "NRG - 500", 75000},
		{541, "Bullet", 85000}
	};


	if(size < __MAX_MODEL_NAME)
		return 0;
	for(new i; i < sizeof(model_info); i++)
	{
		if(model_info[i][__ModelID] != modelid)
			continue;
		string[0] = '\0';
		strcat(string, model_info[i][__ModelName], size);
		price = model_info[i][__ModelPrice];
		return 1;
	}
	return -1;
}


Хотя вообще лучше было бы сделать массив глобальным и обращаться напрямую к нему, а не перекидывать данные по локальным массивам.

Сообщение отредактировал DeimoS: 17 Январь 2020 - 10:44

0

#8
Пользователь онлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (17 Январь 2020 - 10:42) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Стоит уточнить, что твой вариант стоит использовать, когда моделей чуть больше, нежели сейчас. А с таким количеством достаточно будет и switch'a.
0

#9
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (17 Январь 2020 - 10:53) писал:

Стоит уточнить, что твой вариант стоит использовать, когда моделей чуть больше, нежели сейчас. А с таким количеством достаточно будет и switch'a.


Не соглашусь. Мой вариант в любом случае удобнее поддерживать: например, легко изменить цены или добавить/удалить автомобиль и т.п.
Если нужна скорость работы - в любом случае лучше реализовать всё через глобальный массив. Если же хочется найти "золотую середину" между потреблением памяти, удобством и скоростью, то, как мне кажется, мой вариант гораздо лучше претендует на это звание, нежели реализация через switch.
1

#10
Пользователь онлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (17 Январь 2020 - 11:37) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Да я знаю, что ты не согласишься :)
Если автор захочет добавить новый пункт, то и в варианте со свитч проблем не возникнет - Ctrl+C/Ctrl+V. Просто в случае автора, свитч, имхо, сработает даже быстрее, нежели инициализация массива. Но если там будут хранится и остальные названия моделей, то безусловно глобальный массив. Автор принципе выберет нужный ему вариант.
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика