Последние Файлы GTA 4
Последние Файлы GTA-MP
Реклама
[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? помогу за $$