Question

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

Share this post


Link to post

25 answers to this question

  • 0

@Timur_Top 

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

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

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

 

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 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 , создано

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

 

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 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. После этого приобретайте бизнес, как это начинали делать ранее, пока не нажмете на кнопку "Купить". После нажатия показывайте здесь логи сервера.

Share this post


Link to post
  • 0

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

 

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

@odosenok 

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

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

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

Спойлер

62aH-85KY_4.jpg

 

Edited by Timur_Top

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Александр_Вольт
      By Александр_Вольт
      Нужны 
      Скриптеры 
      3д модельеры
      Админы 
      и т.д
    • fresko241
      By fresko241
      Привет, я только обучаюсь разработке. Хочу узнать у меня есть радио, музыка играет. Но как можно сделать чтобы музыка играла только в машине и слышна была и людям которые возле нее.