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

 



 
          





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





Последние Файлы 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 из 1
  • 1
Модератор форума: Alcoholik  
[FAQ] Банкоматы на диалогах
SMOUKДата: Вторник, 30.03.2010, 11:54 | Сообщение # 1
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
В этой теме хотел бы показать как сделать снятие денег со чета в банкомате на диалогах.
И так начнём.

Создаем паблик

Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

(Если уже есть такой то просто вставите код из моего))

Далее добавляем наш код снятия денег с банкомата в паблик .
Я сделал так.
Первая сттрочка-.2000.
2-ая.30000.
3-я.100000.

И добавляем кодик в паблик для вывода диалога для снятия

Code
if(dialogid ==0)
{
if(response)
{
if(listitem == 0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "БАНКОМАТ", "2000$\n30000$\n100000$", "Выбор", "Отмена");
}
return 1;
}
}

В итоге у нас паблик выглядит вот так:

Code

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid ==0)
{
if(response)
{
if(listitem == 0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "БАНКОМАТ", "2000$\n30000$\n100000$", "Выбор", "Отмена");
}
return 1;
}
}
if(dialogid ==1)
{
if(response)
{
if(listitem == 1)
{
new string[125];
new curfunds = PlayerInfo[playerid][pAccount];
new cashdeposit;
new cashdep = 2000;
   if(PlayerInfo[playerid][pAccount] <= 2000) return SendClientMessage(playerid, COLOR_LIGHTGREEN," У вас нет такой суммы на счете!");
      PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-2000;
      GetPlayerMoney(playerid,cashdeposit-2000);
      GivePlayerMoney(playerid,cashdep);
      SendClientMessage(playerid, COLOR_GREEN, "|____ КВИТАНЦИЯ ____|");
      format(string, sizeof(string), "  Старый баланс: $%d", curfunds);
      SendClientMessage(playerid, COLOR_GRAD2, string);
      format(string, sizeof(string), "  Снято: $%d",cashdep);
      SendClientMessage(playerid, COLOR_GRAD4, string);
      SendClientMessage(playerid, COLOR_GREEN, "|------------------------------|");
      format(string, sizeof(string), "  Новый баланс: $%d", PlayerInfo[playerid][pAccount]);
      SendClientMessage(playerid, COLOR_WHITE, string);
}
if(listitem == 1)
{
new string[125];
new curfunds = PlayerInfo[playerid][pAccount];
new cashdeposit;
new cashdep = 30000;
   if(PlayerInfo[playerid][pAccount] <= 30000) return SendClientMessage(playerid, COLOR_LIGHTGREEN," У вас нет такой суммы на счете!");
      PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-30000;
      GetPlayerMoney(playerid,cashdeposit-30000);
      GivePlayerMoney(playerid,cashdep);
      SendClientMessage(playerid, COLOR_GREEN, "|____ КВИТАНЦИЯ ____|");
      format(string, sizeof(string), "  Старый баланс: $%d", curfunds);
      SendClientMessage(playerid, COLOR_GRAD2, string);
      format(string, sizeof(string), "  Снято: $%d",cashdep);
      SendClientMessage(playerid, COLOR_GRAD4, string);
      SendClientMessage(playerid, COLOR_GREEN, "|------------------------------|");
      format(string, sizeof(string), "  Новый баланс: $%d", PlayerInfo[playerid][pAccount]);
      SendClientMessage(playerid, COLOR_WHITE, string);
}
if(listitem == 2)
{
new string[125];
new curfunds = PlayerInfo[playerid][pAccount];
new cashdeposit;
new cashdep = 100000;
   if(PlayerInfo[playerid][pAccount] <= 100000) return SendClientMessage(playerid, COLOR_LIGHTGREEN," У вас нет такой суммы на счете!");
      PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-100000;
      GetPlayerMoney(playerid,cashdeposit-100000);
      GivePlayerMoney(playerid,cashdep);
      SendClientMessage(playerid, COLOR_GREEN, "|____ КВИТАНЦИЯ ____|");
      format(string, sizeof(string), "  Старый баланс: $%d", curfunds);
      SendClientMessage(playerid, COLOR_GRAD2, string);
      format(string, sizeof(string), "  Снято: $%d",cashdep);
      SendClientMessage(playerid, COLOR_GRAD4, string);
      SendClientMessage(playerid, COLOR_GREEN, "|------------------------------|");
      format(string, sizeof(string), "  Новый баланс: $%d", PlayerInfo[playerid][pAccount]);
      SendClientMessage(playerid, COLOR_WHITE, string);
   }
}
}
return 1;
}

Так, теперь чтобы подходя к банкомату у нас вылезал диалог нам надо поставить пикап.
Делаем это вот так:
В public OnGameModeInit()

Добовляем наши пикапы:
У меня вот что, три пикапа на три банкомата.

Code
bank = CreatePickup(1239, 1, -2019.6946,-101.0430,35.1641);
bank1 = CreatePickup(1239, 1, 1748.1620,-1862.8341,13.5758);
bank2 = CreatePickup(1239, 1, 1464.0524,-1749.2156,15.4453);

И не забываем ставить new , ко всем new ставим new bank; new bank1; new bank2;
Такс, теперь нам надо дать действие пикапу. Чтобы когда игрок становиться на него выполнялось какое либо действие, у нас открытие диалога.

Идем в public OnPlayerPickUpPickup
Там добавляем наш кодик.

Code
if(pickupid == bank) ShowPlayerDialog(playerid, 7, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank);
  if(pickupid == bank1) ShowPlayerDialog(playerid, 7, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank1);
  if(pickupid == bank2) ShowPlayerDialog(playerid, 7, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank2);

После эого паблик должен выглядить вот так: (у меня так)

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == bank) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank);
if(pickupid == bank1) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank1);
if(pickupid == bank2) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "БАНКОМАТ", "Снять деньги\nДр информация", "Выбор", "Отмена");(bank2);
return 1;
}

Так вроде-бы всё!
А неет, нам нужно поставить сами банкоматы, объекты тоесть.
Вот три банкомата в 1 городе два и у АШ в 2-ом.

Code
CreateObject(2754, 1464.069336, -1750.423340, 15.347457, 0.000000*(90/1.56), 0.000000*(90/1.56), -1.570796*(90/1.56));
CreateObject(2754, 1748.195435, -1864.029297, 13.476862, 0.000000*(90/1.56), 0.000000*(90/1.56), -1.570796*(90/1.56));
CreateObject(2754, -2019.860229, -102.560760, 35.066208, 0.000000*(90/1.56), 0.000000*(90/1.56), -1.570796*(90/1.56));

Вроде-бы всё!
Я надеюсь не будет ошибок в коде, по FAQ делал на мод их ерроов небыло кроме старых варнингов мода.
Если-же у кого то возникнут проблемы/вопросы то пишите в тему помогу чем смогу.


[-Smart-]Дата: Вторник, 30.03.2010, 12:17 | Сообщение # 2
Группа: I'm V.I.P.
Сообщений: 249
Награды: 3
Город: Казань
Репутация: 229
Замечания: 20%
Статус:
Респект за FAQ + от меня и награда за создание думаю пригодится.
За сёднешний день ужэ 2 FAQ



Сообщение отредактировал Ilya_Good - Вторник, 30.03.2010, 12:18
_LexA_Дата: Вторник, 30.03.2010, 16:08 | Сообщение # 3
Долгожитель
Группа: Продвинутые
Сообщений: 1437
Награды: 161
Город: Ростов-на-Дону
Репутация: 563
Замечания: 20%
Статус:
smouk87, зачем вписывать в диалог суммы, которые можно снять, если можно использовать DIALOG_STYLE_INPUT для ручного ввода суммы денег?
MaccerДата: Вторник, 30.03.2010, 16:20 | Сообщение # 4
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 7
Город: Санкт-Петербург
Репутация: 100
Замечания: 40%
Статус:
Quote (smouk87)
if(PlayerInfo[playerid][pAccount] <= 2000) return SendClientMessage(playerid, COLOR_LIGHTGREEN," У вас нет такой суммы на счете!");
PlayerInfo[playerid][pAccount]=PlayerInfo[playerid][pAccount]-2000;
GetPlayerMoney(playerid,cashdeposit-2000);

Надо говорить где не прав или сам поймешь?
И еще, скажи, ты не думал что можно не писать один и тот же код несколько раз? А только один раз задать нужное значение cashdep.



есть вопросы по sa-mp или pawn?
помогу за $$
SMOUKДата: Вторник, 30.03.2010, 16:31 | Сообщение # 5
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Народ я в скрипте не так уж и крут как вы! Так что для меня это лучший и удобный и понятный вариант! Думаю для таких как для меня или новечков в скриптинге он самый подходящий! ФАК работает вы скажите самое главное ?


MaccerДата: Вторник, 30.03.2010, 16:37 | Сообщение # 6
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 7
Город: Санкт-Петербург
Репутация: 100
Замечания: 40%
Статус:
Quote (smouk87)
ФАК работает вы скажите самое главное ?

А ты че, даже не проверял?
мне кажется у тебя там 2 раза идет проверка на if(listitem == 1)
и то что я жирным выделил в прошлом посту, первое надо подправить, второе убрать



есть вопросы по sa-mp или pawn?
помогу за $$
SMOUKДата: Вторник, 30.03.2010, 16:40 | Сообщение # 7
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Нет, я проверял сё работает , просто у меня руки корявые, мог намудрить че нить не то!

Quote
мне кажется у тебя там 2 раза идет проверка на if(listitem == 1)
и то что я жирным выделил в прошлом посту, первое надо подправить, второе убрать

Ненадо пожалуйста тут в теме флудить о том как сделать лучше и что тут не правельно.
У темы не эта задача!


EakwarpДата: Вторник, 30.03.2010, 16:50 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Эм, большое такое "ЭМ", причем тут FAQ?... Где тут FAQ?... Я наверное слепой безглазый фантазер с половинкой мозга, но я вижу туториал.


More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
MaccerДата: Вторник, 30.03.2010, 16:56 | Сообщение # 9
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 7
Город: Санкт-Петербург
Репутация: 100
Замечания: 40%
Статус:
Quote (smouk87)
Ненадо пожалуйста тут в теме флудить о том как сделать лучше и что тут не правельно.

долбоеб чтоли? я те говорю что у тебя ошибки в коде, если listitem равен 1, сначала снимутся 2000, потом еще 30000
никому твой багнутый код не нужен, не умеешь - не пиши
Quote (smouk87)
У темы не эта задача!

Интересно а какая у нее задача? показать всем какой ты молодец и какой говнокод писать умеешь?



есть вопросы по sa-mp или pawn?
помогу за $$
  • Страница 1 из 1
  • 1
Поиск:





 


 


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