LenD
Специалист
Подобное решение уже было,но показалось мне не законченным.
С помощью следующего решения Вы сможете добавить себе 2 валюту,которую можно использовать для доната,и прочих радостей.
И так,для начала сделаем переменную отвечающую за наши деньги:
Далее сделаем stock,в котором будут находится наши функции.
В конец мода ставим:
Вот и всё! Вы сделали новые деньги.
В итоге на финише у нас получаются следующие функции:
Функция GetPlayerCash(playerid) проверяет количество денег у игрока.Её можно использовать для проверок или сохранения.
Эти функции - изменённые PlayerMoney.Так что проблем с созданием команд не возникнет.
Cash можно заменить на что угодно (Gold,Ruble и т.д.)
-Да очень просто!
Например создадим команду,которая будет давать деньги:
Или например команда,которая будет считать деньги на счету игрока:
~Хочу напомнить что Cash[playerid] эта переменная Cash которую мы указали в самом начале.
upd(13.11.11) : ~Ещё один вариант использования валюты - это обмен её на основную валюту.
Но что бы не заниматься порнографией и создавать разделы в диалоге напободе - "Обменять 10 монет на 1000$" и .т.д. мы сделаем проще.
Создадим команду для обмена и диалоговое окно в окошком для ввода:
Далее в OnDialogResponse ставим саму функцию:
Вот и вроде бы всё!
*500 - число на которое умножится сумма которую ввели в окошке.
Если мыслить проще и объективней - это цена обмена одной монетки. Разумеется цену можно подогнать под себя.
Поясняю: Если у вас стоит *500,и вы ввели сумму для обмена - 10, то будет 10*500 = 5000. Эту сумму вы получите баксами ($).
Согласитесь,что это лучше чем индийские разделы в диалоге
(За основу спасибо SDraw`у)
Теперь выведем сумму на экран.Добавим форвард и переменную для текста:
Далее в OnModeGameUnit добавим таймер:
На примере показана 1 секунда,можно ставить и меньше,но нагрузка на сервер возрастёт.
1 секунда - время обновления текстдрава с деньгами.Проще говоря 1 раз в секунду.
true означает,что после отсчета 1-ой секунды таймер запустится заново.
Теперь сделаем сам текстдрав. Добавим в OnPlayerConnect:
И сделаем что бы текст драв убирался при дисконнекте. В OnPlayerDisconnect:
Теперь сделаем,что-бы текстдрав появлялся при спавне. Добавим в OnPlayerSpawn:
И скрывался при смерти(вроде). В OnPlayerDeath:
И наконец паблик обновления:
Вот и всё! Выглядеть это будет вот так:
Разумеется можно переделать,поставить другой цвет,или переместить!
Вот!Всё очень просто,при наличии желания,фантазии и прямых рук вы сможете сделать многое.
Для справки: ~Сделано на основе античита на деньги.
Автор: ~SPIRIT
С помощью следующего решения Вы сможете добавить себе 2 валюту,которую можно использовать для доната,и прочих радостей.
Создание валюты
И так,для начала сделаем переменную отвечающую за наши деньги:
PHP:
new Cash[MAX_PLAYERS];
В конец мода ставим:
PHP:
stock GivePlayerCash(playerid, value)//где value - сумма(кол-во) валюты
{
Cash[playerid] += value;
return Cash[playerid];
}
stock SetPlayerCash(playerid, value)
{
Cash[playerid] = value;
return Cash[playerid];
}
stock ResetPlayerCash(playerid)
{
Cash[playerid] = 0;
return Cash[playerid];
}
stock GetPlayerCash(playerid)
{
return Cash[playerid];
}
В итоге на финише у нас получаются следующие функции:
PHP:
GivePlayerCash(playerid, value)//дать (или отнять) валюту
SetPlayerCash(playerid, value)//"установить" валюту
ResetPlayerCash(playerid)//обнулить валюту
//где value - сумма(кол-во) валюты
Эти функции - изменённые PlayerMoney.Так что проблем с созданием команд не возникнет.
Cash можно заменить на что угодно (Gold,Ruble и т.д.)
Примеры использования
~Но некоторые спросят - как же использовать их?-Да очень просто!
Например создадим команду,которая будет давать деньги:
PHP:
if(strcmp(cmdtext, "/givecash", true) == 0) {
GivePlayerCash(playerid, 1000); }
PHP:
if(strcmp(cmdtext,"/mycash",true) == 0) {
new string[50];
format(string,sizeof(string),"У вас на счету %d монет.", Cash[playerid]);
SendClientMessage(playerid,COLOR_WHITE,string); }
upd(13.11.11) : ~Ещё один вариант использования валюты - это обмен её на основную валюту.
Но что бы не заниматься порнографией и создавать разделы в диалоге напободе - "Обменять 10 монет на 1000$" и .т.д. мы сделаем проще.
Создадим команду для обмена и диалоговое окно в окошком для ввода:
PHP:
if(strcmp(cmdtext, "/obmen", true) == 0) {
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Обмен валюты","Введите сумму монет для обмена.", "Ок", "Отмена"); }
//Где 1 - ID диалога,если используется замените на свой.
PHP:
if(dialogid == 1 && response)//Где 1 - ID диалога,замените,если поменяли его в команде.
{
if(GetPlayerCash(playerid) < strval(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "У Вас нету столько монет!");
new giveoutput = strval(inputtext)*500, cashout = strval(inputtext), string[80];//*500 - число на которое умножится сумма которую ввели в окошке
GivePlayerMoney(playerid, strval(inputtext)*500);//Даем деньги умноженные по форме "введенное число*500"
GivePlayerCash(playerid, -strval(inputtext));//отнимаем введенную сумму
format(string, sizeof(string), "Вы обменяли %d монет на $%d .", cashout, giveoutput);//Вывод сообщения с информацией.
SendClientMessage(playerid,COLOR_WHITE,string);
}
//if(GetPlayerCash(playerid) < strval(inputtext)) - проверка,есть ли у Вас то количество монет,которое вы ввели
*500 - число на которое умножится сумма которую ввели в окошке.
Если мыслить проще и объективней - это цена обмена одной монетки. Разумеется цену можно подогнать под себя.
Поясняю: Если у вас стоит *500,и вы ввели сумму для обмена - 10, то будет 10*500 = 5000. Эту сумму вы получите баксами ($).
Согласитесь,что это лучше чем индийские разделы в диалоге
Вывод суммы текстдравом
(За основу спасибо SDraw`у)
Теперь выведем сумму на экран.Добавим форвард и переменную для текста:
PHP:
forward GoldShow();//Для создания паблика обновления
new Text:GoldDraw[MAX_PLAYERS];
PHP:
SetTimer("GoldShow",1000,true);// где 1000 - 1 секунда
1 секунда - время обновления текстдрава с деньгами.Проще говоря 1 раз в секунду.
true означает,что после отсчета 1-ой секунды таймер запустится заново.
Теперь сделаем сам текстдрав. Добавим в OnPlayerConnect:
PHP:
GoldDraw[playerid] = TextDrawCreate(500,99,"_______");//500,99 - координаты размещения текстдрава.
TextDrawAlignment(GoldDraw[playerid],0);
TextDrawFont(GoldDraw[playerid],3);
TextDrawLetterSize(GoldDraw[playerid],0.55,2.0);//0.55,2.0 - размеры текстдрава
TextDrawColor(GoldDraw[playerid],0xFFA500AA);//цвет текстдрава - оражневый
TextDrawSetOutline(GoldDraw[playerid],2);
TextDrawSetShadow(GoldDraw[playerid],1);
PHP:
TextDrawDestroy(GoldDraw[playerid]);
PHP:
TextDrawShowForPlayer(playerid,GoldDraw[playerid]);
PHP:
TextDrawHideForPlayer(playerid,GoldDraw[playerid]);
PHP:
public GoldShow()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new str[32];
if(Cash[i] >= 0) format(str,sizeof(str),"$%08d",Cash[i]); //Cash[i] - переменная Cash указанная в самом начале
if(Cash[i] < 0) format(str,sizeof(str),"$-07d",Cash[i] * -1 );
TextDrawSetString(GoldDraw[i],str);
}
}
return 1;
}
Разумеется можно переделать,поставить другой цвет,или переместить!
Вот!Всё очень просто,при наличии желания,фантазии и прямых рук вы сможете сделать многое.
Для справки: ~Сделано на основе античита на деньги.
Автор: ~SPIRIT
