iljuxO
Новичок
В общем это мой первый урок , прошу строго не судить =)
Я решил создать простую донат систему , в которой можно купить випку , респекты , и деньги , а также снять варны (Просто не знал что еще туда добавить)
Выглядит это примерно так :
Теперь можно приступить к созданию :
Автор IljuxO
Я решил создать простую донат систему , в которой можно купить випку , респекты , и деньги , а также снять варны (Просто не знал что еще туда добавить)
Выглядит это примерно так :
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Теперь можно приступить к созданию :
- Сначала надо найти enum pInfo и добавить в него следующею вещь
PHP:pDonateMoney, - Потом найти паблик public OnPlayerConnect(playerid)
и добавить туда :
PHP:PlayerInfo[playerid][pDonateMoney] = 0; - После найти паблики public OnPlayerRegister(playerid, password[]) и public OnPlayerSave(playerid)
и добавить туда :
PHP:dini_IntSet(string, "DonateMoney", PlayerInfo[playerid][pDonateMoney]); - Потом нам понадобится паблик public OnPlayerLogin(playerid,password[])
в который нужно добавить :
PHP:PlayerInfo[playerid][pDonateMoney] = dini_Int(string2,"DonateMoney"); - После этого нам надо создать диалоги . Для этого идем в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
и создаем там диалогиPHP:if(dialogid == 11221) { if(response) { if(listitem == 0) { ShowPlayerDialog(playerid,11222,DIALOG_STYLE_LIST,"Покупка респектов","2 респекта - 1 донат\n4 респекта - 2 доната\n10 респектов - 4 доната\n20 респектов - 8 доната","Выбор","Отмена"); } if(listitem == 1) { ShowPlayerDialog(playerid,11223,DIALOG_STYLE_LIST,"Покупка денег","1000 долларов - 2 донат\n2000 долларов - 3 доната\n4000 долларов - 4 доната\n10000 долларов - 7 доната","Выбор","Отмена"); } if(listitem == 2) { ShowPlayerDialog(playerid,11224,DIALOG_STYLE_LIST,"Дополнительно","Вип аккаунт - 20 донатов\nСнятие варна - 2 доната","Выбор","Отмена"); } } return 1; } else if(dialogid == 11222) { if(response) { if(listitem == 0) { PlayerInfo[playerid][pExp] += 2; PlayerInfo[playerid][pDonateMoney] -= 1; return 1; } if(listitem == 1) { PlayerInfo[playerid][pExp] += 4; PlayerInfo[playerid][pDonateMoney] -= 2; return 1; } if(listitem == 2) { PlayerInfo[playerid][pExp] += 10; PlayerInfo[playerid][pDonateMoney] -= 4; return 1; } if(listitem == 3) { PlayerInfo[playerid][pExp] += 20; PlayerInfo[playerid][pDonateMoney] -= 8; return 1; } } return 1; } else if(dialogid == 11223) { if(response) { if(listitem == 0) { PlayerInfo[playerid][pMoney] += 1000; PlayerInfo[playerid][pDonateMoney] -= 2; return 1; } if(listitem == 1) { PlayerInfo[playerid][pMoney] += 2000; PlayerInfo[playerid][pDonateMoney] -= 3; return 1; } if(listitem == 2) { PlayerInfo[playerid][pMoney] += 4000; PlayerInfo[playerid][pDonateMoney] -= 4; return 1; } if(listitem == 3) { PlayerInfo[playerid][pMoney] += 10000; PlayerInfo[playerid][pDonateMoney] -= 7; return 1; } } return 1; } else if(dialogid == 11224) { if(response) { if(listitem == 0) { PlayerInfo[playerid][pDonateRank] += 1; PlayerInfo[playerid][pDonateMoney] -= 20; return 1; } if(listitem == 0) { PlayerInfo[playerid][pWarns] -= 1; PlayerInfo[playerid][pDonateMoney] -= 2; return 1; } } return 1; } - Ну , а теперь дело осталось за малым . Осталось добавить пару команд идем в public OnPlayerCommandText(playerid, cmdtext[])
и создаем там 3 команды . 1 Что-бы открыть донать меню . 2 Что-бы передать донат деньги . 3 Что-бы выдать донат деньги через админку. - 1 Что-бы открыть донать меню .
PHP:if (strcmp(cmdtext, "/donatebuy", true)==0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); ShowPlayerDialog(playerid,11221,DIALOG_STYLE_LIST,"Донат услуги","Покупка респектов\nПокупка денег\nДополнительно","Выбор","Отмена"); return 1; } } - 2 Что-бы передать донат деньги .
PHP:if(strcmp(cmd, "/paydonate", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "[RP]HollyWood[RUS]: /paydonate [playerid/PartOfName] [количество]"); return 1; } //giveplayerid = strval(tmp); giveplayerid = ReturnUser(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "[RP]HollyWood[RUS]: /paydonate [playerid/PartOfName] [количество]"); return 1; } moneys = strval(tmp); if(moneys > 5 && PlayerInfo[playerid][pLevel] < 3) { SendClientMessage(playerid, COLOR_GRAD1, "Вы должны быть больше 3 уровня,чтобы передавать больше 5!"); return 1; } if(moneys < 1 || moneys > 100) { SendClientMessage(playerid, COLOR_GRAD1, "Нельзя передать меньше 1, и больше 100."); return 1; } if(antimult[playerid] == moneys) { antimult2[playerid] += 1; } if(antimult[playerid] != moneys) { antimult2[playerid] = 0; } if (IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { if(PlayerInfo[giveplayerid][pLocal] == 106) { SendClientMessage(playerid, COLOR_GRAD1, "Команда запрещена в данной локации."); return 1; } if (ProxDetectorS(5.0, playerid, giveplayerid)) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); playermoney = PlayerInfo[playerid][pMoney]; if (moneys > 0 && playermoney >= moneys) { PlayerInfo[giveplayerid][pDonateMoney] += moneys; PlayerInfo[playerid][pDonateMoney] -= moneys; antimult[playerid] = moneys; format(string, sizeof(string), "Вы передали игроку %s, $%d.", giveplayer, moneys); PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); SendClientMessage(playerid, COLOR_GRAD1, string); format(string, sizeof(string), "Вы получили $%d от %s.", moneys, sendername); SendClientMessage(giveplayerid, COLOR_GRAD1, string); format(string, sizeof(string), "%s передал %s - $%d", sendername, giveplayer, moneys); log("Pay", string); if(moneys >= 1000000) { ABroadCast(COLOR_YELLOW,string,1); } if(antimult2[playerid] > 10) { new strMy[255]; new STRname[255]; GetPlayerName(playerid,STRname,255); new STname[255]; GetPlayerName(giveplayerid,STname,255); format(strMy, sizeof(strMy), "Подозрение на мультиакк передачу донат денег. Игрок %s(id %d) передал %s(id %d) сумму %d$",STRname,playerid,STname,giveplayerid,moneys); SendAdminMessage(0xFF0000FF, strMy); } PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0); format(string, sizeof(string), "достал бонусные денги и передал их %s." ,giveplayer); Action(playerid, string); } else { SendClientMessage(playerid, COLOR_GRAD1, "Неправильное количество."); } } else { SendClientMessage(playerid, COLOR_GRAD1, "Вы слишком далеко."); } }//invalid id } else { format(string, sizeof(string), "%d не активый игрок.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1; } - 3 Что-бы выдать донат деньги через админку.
PHP:if(strcmp(cmd, "/givedonatemoney", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "/givedonatemoney [playerid/PartOfName] [money]"); return 1; } new playa; new money; playa = ReturnUser(tmp); tmp = strtok(cmdtext, idx); money = strval(tmp); if (PlayerInfo[playerid][pAdmin] >= 10) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { PlayerInfo[playa][pDonateMoney] += money; } } } else { SendClientMessage(playerid, COLOR_GRAD1, "Недостаточно прав для использования команды."); } } return 1; }
Автор IljuxO
