Вопросы

Добавил систему бизнесов, но когда я нажимаю "Купить" ничего не происходит, мод проверял на такой-же диалог, не нашел ничего похожего!

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


Ссылка на сообщение

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

  • 0

@Timur_Top 

1 час назад, Timur_Top сказал:

мод проверял на такой-же диалог, не нашел ничего похожего!

Диалога в моде нет? 

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


Ссылка на сообщение
  • 0

@Timur_Top так значит функционал нужно писать для системы, чтобы диалог работал. Поищите еще раз, должен быть скорей всего. 

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


Ссылка на сообщение
  • 0

@DEST Он у меня FS, возможно из-за этого? Просто я пробывал его в мод закинуть, ошибки, ну и я решил обратно в FS

 

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


Ссылка на сообщение
  • 0

@Timur_Top в FS диалог есть? 

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


Ссылка на сообщение
  • 0

@Timur_Top проверьте, может быть ID диалогов совпадает, т.е. есть такой ID и в моде и в FS

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


Ссылка на сообщение
  • 0

@DEST Нету, проверил только что, ничего похожего.

 

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


Ссылка на сообщение
  • 0

@Timur_Top логи

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


Ссылка на сообщение
  • 0

@DEST с сервер лога?

Спойлер

[15:40:29]   Loading filterscript 'BusSystem.amx'...
[15:40:29] *** Streamer Plugin: Include file version (0x26105) does not match plugin version (0x291) (script might need to be recompiled with the correct include file).
[15:40:29]  
[15:40:29]  9 бизнесов загружено.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29] *** Streamer Plugin: CreateDynamicPickup: Expecting 11 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamicMapIcon: Expecting 12 parameter(s), but found 9.
[15:40:29] *** Streamer Plugin: CreateDynamic3DTextLabel: Expecting 15 parameter(s), but found 13.
[15:40:29]  
[15:40:29] --------------------------------------
[15:40:29]      BusSystem успешно загружена! 
[15:40:29] --------------------------------------

[15:40:29]   Loaded 10 filterscripts.

[15:40:29]  
[15:40:29] ++++++++++++++++++++++++++++++++++++++
[15:40:29]  
[15:40:29] Server Start: 15:40 06/05/2018
[15:40:29]  
[15:40:29] ++++++++++++++++++++++++++++++++++++++
[15:40:29]  
[15:40:29]  
[15:40:29] --------------------------------------------
[15:40:29]        GangSystem успешно загружена !        
[15:40:29] --------------------------------------------
 

 

 

Ошибку Стримера исправил, в логах после нажатия "Купить" ничего не происходит.

Заметка от Cawfee , создано

Объединил сообщения.

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


Ссылка на сообщение
  • 0

@Timur_Top значит все равно версии инклудов разные, FS кстати тоже нужно компилить с новым инклудом

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


Ссылка на сообщение
  • 0

@DEST Да я их тоже откомпилировал, после нажатия "Купить" ничего не происходит

 

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


Ссылка на сообщение
  • 0

@Timur_Top значит проблема в систему, кидай код или фс

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


Ссылка на сообщение
  • 0

@Timur_Top, ну, у меня по данному поводу есть два варианта:

  1. Внутри самого мода перекрыта возможность вызова диалогов из FilterScripts. Чтобы это проверить, покажите чистую функцию OnDialogResponse из своего мода ("чистая функция" - функция без команд внутри).
  2. Какая-либо проверка внутри кода диалога мешает ему выполнять предназначенную роль. Для проверки этого найдите в моде такой код:
  3. 	if(dialogid == 8001)
        {
    		if(dialogid != dlgcont[playerid])
    		{
    			dlgcont[playerid] = -600;//не существующий ИД диалога
    			return 1;
    		}
    		dlgcont[playerid] = -600;//не существующий ИД диалога
            if(response)
    		{
    			new string[256];
    #if (FS11INS == 0)
    			if(GetPlayerMoney(playerid) < buscost[playIDbus[playerid]])//если у игрока недостаточно денег, то:
    			{
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", "{ADFF2F}У Вас недостаточно денег для покупки этого бизнеса !", "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    #endif
    #if (FS11INS == 1)
    			if(GetPVarInt(playerid, "PlMon") < buscost[playIDbus[playerid]])//если у игрока недостаточно денег, то:
    			{
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", "{ADFF2F}У Вас недостаточно денег для покупки этого бизнеса !", "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    #endif
    			new para1 = 0;
    			for(new i; i < BUS_MAX; i++)//подсчёт числа уже купленных бизнесов
    			{
    				if(buscount[i] == 1 && strcmp(RealName[playerid], busplayname[i], false) == 0) { para1++; }
    			}
    			if(para1 >= BUS_PLAY)
    			{
    				format(string, sizeof(string), "{ADFF2F вас уже есть %d бизнеса !   Что бы купить этот бизнес -\
    				\nпродайте хотя бы один из своих существующих бизнесов !", para1);
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			if(strcmp(busplayname[playIDbus[playerid]], "*** INV_PL_ID", false) != 0 && busday[playIDbus[playerid]] != 0)
    			{//если в момент покупки, покупаемый бизнес успел купить другой игрок, то:
    				SendClientMessage(playerid, 0xFF0000FF, " Этот бизнес уже принадлежит другому игроку !");
    				format(string, sizeof(string), "{ADFF2F}Название бизнеса: %s\nВладелец бизнеса: %s\nСтоимость бизнеса: %d $", busname[playIDbus[playerid]],
    				busplayname[playIDbus[playerid]], buscost[playIDbus[playerid]]);
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			strdel(busplayname[playIDbus[playerid]], 0, MAX_PLAYER_NAME);//изменение имени владельца бизнеса
    			strcat(busplayname[playIDbus[playerid]], RealName[playerid]);
    			busday[playIDbus[playerid]] = 99;//временная блокировка возможности перекупки бизнеса
    			new para2;
    #if (FS11INS == 0)
    			para2 = GetPlayerMoney(playerid);
    			GivePlayerMoney(playerid, - buscost[playIDbus[playerid]]);//списывание денег со счёта игрока
    #endif
    #if (FS11INS == 1)
    			para2 = GetPVarInt(playerid, "PlMon");
    			SetPVarInt(playerid, "PlMon", GetPVarInt(playerid, "PlMon") - buscost[playIDbus[playerid]]);//списывание денег со счёта игрока
    #endif
    			gettime(timecor[0], timecor[1]);
    			getdate(timecor[2], timecor[3], timecor[4]);
    			TimCor();//коррекция времени
    			DatCor();//коррекция даты
    			new per22;//вычисление даты окончания срока без права перекупки
    			per22 = BUS_DAY + timecor[4];
    			if(per22 > 28 && timecor[7] == 0 && timecor[3] == 2)
    			{
    				per22 = per22 - 28;
    			}
    			if(per22 > 29 && timecor[7] == 1 && timecor[3] == 2)
    			{
    				per22 = per22 - 29;
    			}
    			if(per22 > 30 && (timecor[3] == 4 || timecor[3] == 6 || timecor[3] == 9 || timecor[3] == 11))
    			{
    				per22 = per22 - 30;
    			}
    			if(per22 > 31 && (timecor[3] == 1 || timecor[3] == 3 || timecor[3] == 5 || timecor[3] == 7 || timecor[3] == 8 || timecor[3] == 10 || timecor[3] == 12))
    			{
    				per22 = per22 - 31;
    			}
    			busidplay[playIDbus[playerid]] = playerid;//даём бизнесу ИД он-лайн игрока - владельца бизнеса
    			busmoney[playIDbus[playerid]] = 0;//обнуляем счётчик минут бизнеса
    			busday[playIDbus[playerid]] = per22;//изменение даты окончания срока без права перекупки
    			new file, f[256];//записываем изменения в файл
    			format(f, 256, "bussystem/%i.ini", playIDbus[playerid]);
    			file = ini_openFile(f);
    			if(file >= 0)
    			{
    		    	ini_setString(file, "PlayName", busplayname[playIDbus[playerid]]);
    		    	ini_setInteger(file, "Day", busday[playIDbus[playerid]]);
    				ini_closeFile(file);
    			}
    			DestroyDynamicMapIcon(MapIconID[playIDbus[playerid]]);//удаляем мап-иконку бизнеса
    			printf("[BusSystem] Игрок %s [%d] купил бизнес %s [ID: %d] за %d $ .", RealName[playerid], playerid, busname[playIDbus[playerid]], playIDbus[playerid], buscost[playIDbus[playerid]]);
    			format(string, sizeof(string), " Игрок %s [%d] купил бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
    			SendClientMessageToAll(0x00FFFFFF, string);
    			printf("[moneysys] Предыдущая сумма игрока %s [%d] : %d $", RealName[playerid], playerid, para2);
    		}
    		playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
    		return 1;
    	} 
  4. Затем замените этот участок следующим:
  5.  	if(dialogid == 8001)
        {
    		printf("[DEBUG FS] Test1");
    		if(dialogid != dlgcont[playerid])
    		{
    			dlgcont[playerid] = -600;//не существующий ИД диалога
    			return 1;
    		}
    		printf("[DEBUG FS] Test2");
    		dlgcont[playerid] = -600;//не существующий ИД диалога
            if(response)
    		{
    			printf("[DEBUG FS] Test3");
    			new string[256];
    			#if (FS11INS == 0)
    			if(GetPlayerMoney(playerid) < buscost[playIDbus[playerid]])//если у игрока недостаточно денег, то:
    			{
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", "{ADFF2F}У Вас недостаточно денег для покупки этого бизнеса !", "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			printf("[DEBUG FS] Test4.1");
    			#endif
    			printf("[DEBUG FS] Test5");
    			#if (FS11INS == 1)
    			if(GetPVarInt(playerid, "PlMon") < buscost[playIDbus[playerid]])//если у игрока недостаточно денег, то:
    			{
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", "{ADFF2F}У Вас недостаточно денег для покупки этого бизнеса !", "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			printf("[DEBUG FS] Test6.1");
    			#endif
    			new para1 = 0;
    			for(new i; i < BUS_MAX; i++)//подсчёт числа уже купленных бизнесов
    			{
    				if(buscount[i] == 1 && strcmp(RealName[playerid], busplayname[i], false) == 0) { para1++; }
    			}
    			printf("[DEBUG FS] Test7");
    			if(para1 >= BUS_PLAY)
    			{
    				format(string, sizeof(string), "{ADFF2F вас уже есть %d бизнеса !   Что бы купить этот бизнес -\
    				\nпродайте хотя бы один из своих существующих бизнесов !", para1);
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			printf("[DEBUG FS] Test8");
    			if(strcmp(busplayname[playIDbus[playerid]], "*** INV_PL_ID", false) != 0 && busday[playIDbus[playerid]] != 0)
    			{//если в момент покупки, покупаемый бизнес успел купить другой игрок, то:
    				SendClientMessage(playerid, 0xFF0000FF, " Этот бизнес уже принадлежит другому игроку !");
    				format(string, sizeof(string), "{ADFF2F}Название бизнеса: %s\nВладелец бизнеса: %s\nСтоимость бизнеса: %d $", busname[playIDbus[playerid]],
    				busplayname[playIDbus[playerid]], buscost[playIDbus[playerid]]);
    				ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
    				dlgcont[playerid] = 8000;
    				return 1;
    			}
    			printf("[DEBUG FS] Test9");
    			strdel(busplayname[playIDbus[playerid]], 0, MAX_PLAYER_NAME);//изменение имени владельца бизнеса
    			strcat(busplayname[playIDbus[playerid]], RealName[playerid]);
    			busday[playIDbus[playerid]] = 99;//временная блокировка возможности перекупки бизнеса
    			new para2;
    			#if (FS11INS == 0)
    			para2 = GetPlayerMoney(playerid);
    			GivePlayerMoney(playerid, - buscost[playIDbus[playerid]]);//списывание денег со счёта игрока
    			#endif
    			#if (FS11INS == 1)
    			para2 = GetPVarInt(playerid, "PlMon");
    			SetPVarInt(playerid, "PlMon", GetPVarInt(playerid, "PlMon") - buscost[playIDbus[playerid]]);//списывание денег со счёта игрока
    			#endif
    			gettime(timecor[0], timecor[1]);
    			getdate(timecor[2], timecor[3], timecor[4]);
    			TimCor();//коррекция времени
    			DatCor();//коррекция даты
    			new per22;//вычисление даты окончания срока без права перекупки
    			per22 = BUS_DAY + timecor[4];
    			if(per22 > 28 && timecor[7] == 0 && timecor[3] == 2)
    			{
    				per22 = per22 - 28;
    			}
    			if(per22 > 29 && timecor[7] == 1 && timecor[3] == 2)
    			{
    				per22 = per22 - 29;
    			}
    			if(per22 > 30 && (timecor[3] == 4 || timecor[3] == 6 || timecor[3] == 9 || timecor[3] == 11))
    			{
    				per22 = per22 - 30;
    			}
    			if(per22 > 31 && (timecor[3] == 1 || timecor[3] == 3 || timecor[3] == 5 || timecor[3] == 7 || timecor[3] == 8 || timecor[3] == 10 || timecor[3] == 12))
    			{
    				per22 = per22 - 31;
    			}
    			printf("[DEBUG FS] Test10");
    			busidplay[playIDbus[playerid]] = playerid;//даём бизнесу ИД он-лайн игрока - владельца бизнеса
    			busmoney[playIDbus[playerid]] = 0;//обнуляем счётчик минут бизнеса
    			busday[playIDbus[playerid]] = per22;//изменение даты окончания срока без права перекупки
    			new file, f[256];//записываем изменения в файл
    			format(f, 256, "bussystem/%i.ini", playIDbus[playerid]);
    			file = ini_openFile(f);
    			if(file >= 0)
    			{
    		    	ini_setString(file, "PlayName", busplayname[playIDbus[playerid]]);
    		    	ini_setInteger(file, "Day", busday[playIDbus[playerid]]);
    				ini_closeFile(file);
    			}
    			printf("[DEBUG FS] Test11");
    			DestroyDynamicMapIcon(MapIconID[playIDbus[playerid]]);//удаляем мап-иконку бизнеса
    			printf("[BusSystem] Игрок %s [%d] купил бизнес %s [ID: %d] за %d $ .", RealName[playerid], playerid, busname[playIDbus[playerid]], playIDbus[playerid], buscost[playIDbus[playerid]]);
    			format(string, sizeof(string), " Игрок %s [%d] купил бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
    			SendClientMessageToAll(0x00FFFFFF, string);
    			printf("[moneysys] Предыдущая сумма игрока %s [%d] : %d $", RealName[playerid], playerid, para2);
    			printf("[DEBUG FS] Test12");
    		}
    		playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
    		printf("[DEBUG FS] Test13");
    		return 1;
    	}
  6. Не забудьте скомпилировать этот FS. После этого приобретайте бизнес, как это начинали делать ранее, пока не нажмете на кнопку "Купить". После нажатия показывайте здесь логи сервера.

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


Ссылка на сообщение
  • 0

@odosenok То есть, мне скинуть OnDialogResponse? И да, у меня не один FS не работает, где употребляется диалоги..

 

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


Ссылка на сообщение
  • 0

@Timur_Top да, чистый OnDialogResponse из мода (без диалогов).

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


Ссылка на сообщение
  • 0

@odosenok 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	dialogcon[playerid]++;//прибавляем 1 к контрольной переменной диалогов
	new string[256], strdln[5000];
  	}
	return 0;
}

p.s. Ретурн был 1, поменял на 0, ничего не сменилось

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


Ссылка на сообщение
  • 0

@Timur_Top, да, здесь должен быть 0, потому что он позволяет передавать в дальнейшем управление в FS (если диалог не был найден в моде). Еще как вариант, вот у тебя там dialogcon[playerid]++, это должно быть проверка своеобразная на перехват диалогов. Попробуйте ее временно убрать из работы.

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


Ссылка на сообщение
  • 0

@Timur_Top, в смысле закомментировать эту мини-систему.

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


Ссылка на сообщение
  • 0

@odosenok Скомпилировал, ничего, всё так же, в консоли ошибок нет 

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


Ссылка на сообщение
  • 0

@Timur_Top на другом моде проверяли этот FS? Лучше на чистом.

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


Ссылка на сообщение
  • 0

@odosenok Да всё работает, проверил на моде Blank Script, ну который чистый, все покупается

Спойлер

62aH-85KY_4.jpg

 

Отредактировано пользователем Timur_Top

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


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

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

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

    • Артём Профиков
      От Артём Профиков
      У меня есть система подсказок вот так она выглядет
      ShowNotification(playerid, тип, "текст", время, "команда через /", "текст кнопки");
      Только есть вопрос как сделать так чтоб она активировалась в определенном радиусе? Заранее спасибо