07:39
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: Alcoholik  
[FAQ] покупка оружия в диалоговом окне
themrsnkДата: Вторник, 10.08.2010, 17:41 | Сообщение # 1
themrsnk
Группа: I'm V.I.P.
Сообщений: 609
Награды: 14
Город: Челябинск
Репутация: 758
Замечания: 0%
Статус:
Всем доброго времени суток,как я и писал в соседнем топике,что могу написать FAQ на тему "покупка оружия в диалоговом окне" по просьбе пользователей форума.
Так вот,меня попросили раписать,пожалуй начну.

Первое,что нам понадобится - это переменная которая будет отвечать за это дело :)

Code
enum pWeapon
{
  Name[MAX_STRING],
  Cost,
  Ammo,
  ID,
};
new Weapons[17][pWeapon];

P.S 17 - это количество оружия,загружаемое из файла.

Далее нам придётся сделать callback загрузки данных о оружие из файла.

Делаем...

Code

forward LoadWeapons();
public LoadWeapons()
{
  new arrCoords[4][512];
  new strFromFile2[256];
  new File: file = fopen("other\\weapons.cfg", io_read);
  if (file)
  {
   new idx;
   while (idx < sizeof(Weapons))
   {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    strmid(Weapons[idx][Name], arrCoords[0], 0, strlen(arrCoords[0]), 255);//Название
             Weapons[idx][Cost] = strval(arrCoords[1]);//Цена
             Weapons[idx][Ammo] = strval(arrCoords[2]);//Количество патронов
             Weapons[idx][ID] = strval(arrCoords[3]);//ИД оружия
    idx++;
   }
   fclose(file);
   printf("Weapons for sell:%d",idx);
  }
  return 1;
}

Далее нам придётся это оружие загружать,ах да,забыл сказать,что "other\\weapons.cfg" это пусть к файлу с данными о нашем оружии.
То-есть у нас будет это выглядить следущим образом scriptfiles\other\weapons.cfg.

Далее...

в public OnGameModeInit() добавляем следущий код..

Code
LoadWeapons();

Далее мы перейдём к самой команде,которая служит нам вызовом диалогового окна с данными о нашем оружии.

Code
if(strcmp(cmd,"/buygun",true) == 0)
  {
      if(GetPlayerMoney(playerid) < 10)
   {
       SendClientMessage(playerid, COLOR_GREY, "* У вас недостаточно средств");
       return 1;
   }
   new location = PlayerInfo[playerid][pLocal];
     if(location == 99 || location == 100 || location == 102)
      {
       if(BizzInfo[location-99][bProducts] <= 0)
       {
          GameTextForPlayer(playerid, "~r~мEѓOCЏAЏOЌмO €AЊACO‹", 5000, 1);
     return 1;
       }
    new newstring[1024];
    for(new id=0;id<sizeof(Weapons);id++)
    {
     format(newstring,sizeof(newstring),"%s - %d$[%d]\n",Weapons[id][Name],Weapons[id][Cost],Weapons[id][Ammo]);
     strcat(string,newstring);
    }
    ShowPlayerDialog(playerid,dialogid,DIALOG_STYLE_LIST,"Select the Gun",string,"Select","Cancel");
   }
         else
   {
       SendClientMessage(playerid, COLOR_WHITE,"* Вы не в магазине оружия");
       return 1;
   }
   return 1;
  }

Ну вот и теперь нам остался последний шаг.

Мы добавим код для диалогового окна.

в public OnDialogResponse

Code
if(dialogid == dialogid)
     {
         if(response)
         {
             for(new i = 0;i < sizeof(Weapons);i++)
             {
     if(listitem == i)
     {
         GivePlayerWeapon(playerid,Weapons[i][ID],Weapons[i][Ammo]);
         GivePlayerMoney(playerid,- Weapons[i][Cost]);
      format(string,sizeof(string),"* Вы купили оружие \"%s\" по цене %d$",Weapons[i][Name],Weapons[i][Cost]);
      SendClientMessage(playerid,COLOR_GRAD1,string);
     }
             }
         }

Ну вот и всё.

Пример (для заполнения данных о оружие в файле):Гольф-Клюшка|300|1|2 (Название|цена|кол-во|ID Оружия)

Всем спасибо,все свободны :D


[INC]
vehicle_fun (0.3c only)
[GM]
tRPG (0.3c only)
[ADDON]
Samp spamer
colorgen
DiSEДата: Вторник, 10.08.2010, 18:02 | Сообщение # 2
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Спасибо


Сообщение отредактировал EnErGiZeR - Вторник, 10.08.2010, 18:03
themrsnkДата: Вторник, 10.08.2010, 18:06 | Сообщение # 3
themrsnk
Группа: I'm V.I.P.
Сообщений: 609
Награды: 14
Город: Челябинск
Репутация: 758
Замечания: 0%
Статус:
EnErGiZeR,отпишись хоть нормально.Работает или нет? :)

Народ,уже 18 просмотров,а коментариев 0.

Прокоментируйте,если кто-то испробовал данную фишку.


[INC]
vehicle_fun (0.3c only)
[GM]
tRPG (0.3c only)
[ADDON]
Samp spamer
colorgen


Сообщение отредактировал [SNK] - Вторник, 10.08.2010, 19:32
DeFixДата: Вторник, 10.08.2010, 22:17 | Сообщение # 4
Новенький
Группа: Пользователи
Сообщений: 53
Награды: 0
Город: Нижневартовск
Репутация: 5
Замечания: 0%
Статус:
[SNK], у меня вроде нормально наробает! респект !!


[█_______10%_________]

Живи, люби, кради, гуляй, купи весь мир, потом отдай, всегда лишь помни вещь одну - не забывай свою БРАТВУ!
[RGS]JAGUARДата: Вторник, 10.08.2010, 22:24 | Сообщение # 5
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
DeFix, выложи скрины плиз просто в мод не охото ставить чё да как там робит??


[/url]
Новая ICQ: 593922
Demon_WolfДата: Среда, 11.08.2010, 11:18 | Сообщение # 6
Освоившийся
Группа: Пользователи
Сообщений: 90
Награды: 0
Город: Ульяновск
Репутация: -1
Замечания: 0%
Статус:
Объясните куда совать вот этот код:
Code
enum pWeapon  
{  
   Name[MAX_STRING],  
   Cost,  
   Ammo,  
   ID,  
};  
new Weapons[17][pWeapon];

и этот:

Code
forward LoadWeapons();  
public LoadWeapons()  
{  
   new arrCoords[4][512];  
   new strFromFile2[256];  
   new File: file = fopen("other\\weapons.cfg", io_read);  
   if (file)  
   {  
    new idx;  
    while (idx < sizeof(Weapons))  
    {  
     fread(file, strFromFile2);  
     split(strFromFile2, arrCoords, '|');  
     strmid(Weapons[idx][Name], arrCoords[0], 0, strlen(arrCoords[0]), 255);//Название  
              Weapons[idx][Cost] = strval(arrCoords[1]);//Цена  
              Weapons[idx][Ammo] = strval(arrCoords[2]);//Количество патронов  
              Weapons[idx][ID] = strval(arrCoords[3]);//ИД оружия  
     idx++;  
    }  
    fclose(file);  
    printf("Weapons for sell:%d",idx);  
   }  
   return 1;  
}

Ну типо в какие паблики.

sk47Дата: Среда, 11.08.2010, 11:25 | Сообщение # 7
Освоившийся
Группа: Пользователи
Сообщений: 86
Награды: 2
Город: Магнитогорск
Репутация: 9
Замечания: 0%
Статус:
1. найди enum pInfo и туда вставь куданить
2.Это можешь в конец мода вставить

Demon_WolfДата: Среда, 11.08.2010, 11:43 | Сообщение # 8
Освоившийся
Группа: Пользователи
Сообщений: 90
Награды: 0
Город: Ульяновск
Репутация: -1
Замечания: 0%
Статус:
Как исправить ошибки:
D:\Софт\Серверg\gamemodes\gf.pwn(8618) : error 017: undefined symbol "dialogid"
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 017: undefined symbol "string"
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 017: undefined symbol "string"
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 029: invalid expression, assumed zero

sk47Дата: Среда, 11.08.2010, 12:04 | Сообщение # 9
Освоившийся
Группа: Пользователи
Сообщений: 86
Награды: 2
Город: Магнитогорск
Репутация: 9
Замечания: 0%
Статус:
1.dialogid меня на свой ид например 434 и в команде showplayerdialog где тоже меняй на 434
2.покажи строки

themrsnkДата: Среда, 11.08.2010, 12:15 | Сообщение # 10
themrsnk
Группа: I'm V.I.P.
Сообщений: 609
Награды: 14
Город: Челябинск
Репутация: 758
Замечания: 0%
Статус:
[RGS]JAGUAR,вот тебе скрин :)




[INC]
vehicle_fun (0.3c only)
[GM]
tRPG (0.3c only)
[ADDON]
Samp spamer
colorgen
Jumpman23Дата: Среда, 11.08.2010, 12:16 | Сообщение # 11
Группа: I'm V.I.P.
Сообщений: 1359
Награды: 23
Город: Kingston, Rastapolis
Репутация: 504
Замечания: 100%
Статус:
поставлю себе, посмотрю чё да как :D


Тсссс, тссс, отключите снисходительный тон. Помните: вас уже лишали права слова на этом форуме.
Прошу прощения у всех кого я заебал или оскорбил (Кроме икварпа и чеза - вы ибланы).
Великс ты красава.
Demon_WolfДата: Среда, 11.08.2010, 12:18 | Сообщение # 12
Освоившийся
Группа: Пользователи
Сообщений: 90
Награды: 0
Город: Ульяновск
Репутация: -1
Замечания: 0%
Статус:
Вот на этой строчке ругается
format(string,sizeof(string),"* Вы купили оружие \"%s\" по цене %d$",Weapons[i][Name],Weapons[i][Cost]);
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 017: undefined symbol "string"
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 017: undefined symbol "string"
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : error 029: invalid expression, assumed zero
D:\Софт\Серверg\gamemodes\gf.pwn(26887) : fatal error 107: too many error messages on one line

И в OnGameModeInit()
На этой:
LoadWeapons();
D:\Софт\Серверg\gamemodes\gf.pwn(6940) : error 004: function "LoadWeapons" is not implemented

sk47Дата: Среда, 11.08.2010, 12:32 | Сообщение # 13
Освоившийся
Группа: Пользователи
Сообщений: 86
Награды: 2
Город: Магнитогорск
Репутация: 9
Замечания: 0%
Статус:
попробуй new string[256];
Jumpman23Дата: Среда, 11.08.2010, 13:45 | Сообщение # 14
Группа: I'm V.I.P.
Сообщений: 1359
Награды: 23
Город: Kingston, Rastapolis
Репутация: 504
Замечания: 100%
Статус:
Quote (Demon_Wolf)
И в OnGameModeInit()
На этой:
LoadWeapons();

forward LoadWeapons есть?


Тсссс, тссс, отключите снисходительный тон. Помните: вас уже лишали права слова на этом форуме.
Прошу прощения у всех кого я заебал или оскорбил (Кроме икварпа и чеза - вы ибланы).
Великс ты красава.
Slot_LiteДата: Среда, 11.08.2010, 14:02 | Сообщение # 15
Новенький
Группа: Пользователи
Сообщений: 34
Награды: 0
Город: Сеть
Репутация: 0
Замечания: 0%
Статус:
Quote (Demon_Wolf)
D:\Софт\Серверg\gamemodes\gf.pwn(6940) : error 004: function "LoadWeapons" is not implemented

У тебя эта функция не определенна

  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua