Всем привет. Решил выложить команду /delacc из своего мода Funny RP. Данная команда является копией команды как на оригинальном проекте Advance RP.
Команда на движке Pawn.CMD. (DC_CMD и похожие движки тоже подойдут, если хотите OnPlayerCommandText, просто смените шапку у команды)
CMD:delacc(playerid, params[]) { if(Player[playerid][pAdmin] < 5) return 1; { if(sscanf(params,"s[24]", params[0])) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /delacc [ник игрока]"); if(!strlen(params[0])) { if(GetPVarInt (playerid,"DellACC")) { SendClientMessage(playerid, COLOR_YELLOW, "Вы отменили удаление аккаунта"); DeletePVar (playerid, "DellACC"); return 1; } return 1; } new newstring[40]; mysql_real_escape_string(params[0], newstring); new infodelaccasad[90]; format(infodelaccasad, sizeof(infodelaccasad), "SELECT * FROM `accounts` WHERE `name` = '%s'", newstring); new Cache: trololo = mysql_query(connect_mysql,infodelaccasad,true); if(cache_num_rows() == 0) { cache_delete(trololo); return SendClientMessage(playerid, COLOR_GRAD, "Игрока с таким именем не существует"); } else { new lvl = cache_get_field_content_int(0, "level"), homea = cache_get_field_content_int(0, "House"), biza = cache_get_field_content_int(0, "Business"), fuela = cache_get_field_content_int(0, "Fuel"), idacs = cache_get_field_content_int(0, "IDacc"); if(!GetPVarInt(playerid, "DellACC")) { new strAcc[128]; format(strAcc, sizeof(strAcc), "Ник: %s, номер: %d, лвл: %d. Удалить аккаунт? ", params[0], idacs, lvl); SendClientMessage(playerid, 0xFF6600AA, strAcc); SendClientMessage(playerid, COLOR_YELLOW, "Для ОТМЕНЫ удаления введите /delacc без ника"); SendClientMessage(playerid, COLOR_YELLOW, "Для ПОДТВЕРЖДЕНИЯ повторите /delacc [ник]"); SetPVarInt (playerid, "DellACC", 1); cache_delete(trololo); return 1; } if(homea < 999) { HouseInfo[homea][hCar] = 0; HouseInfo[homea][hOwned] = 0; HouseInfo[homea][hLock] = 1; if(HouseInfo[homea][hClass] == 0) HouseInfo[homea][hRentPlata] = 800; if(HouseInfo[homea][hClass] == 1) HouseInfo[homea][hRentPlata] = 1500; if(HouseInfo[homea][hClass] == 2) HouseInfo[homea][hRentPlata] = 2000; if(HouseInfo[homea][hClass] == 3) HouseInfo[homea][hRentPlata] = 2000; if(HouseInfo[homea][hClass] == 4) HouseInfo[homea][hRentPlata] = 3000; if(HouseInfo[homea][hClass] == 5) HouseInfo[homea][hRentPlata] = 3500; if(HouseInfo[homea][hClass] == 6) HouseInfo[homea][hRentPlata] = 5500; if(HouseInfo[homea][hClass] == 7) HouseInfo[homea][hRentPlata] = 6000; if(HouseInfo[homea][hClass] == 8) HouseInfo[homea][hRentPlata] = 10000; if(HouseInfo[homea][hUpdate] == 5) Delete3DTextLabel(HouseInfo[homea][StoreInfoHouse]); HouseInfo[homea][hUpdate] = 0; HouseInfo[homea][hRentTime] = 5; UpdateHouse(homea); SaveHouse(homea); } if(biza < 999) { BizInfo[biza][bOwned] = 0; BizInfo[biza][bUpdate] = 0; BizInfo[biza][bRentTime] = 5; BizInfo[biza][bGotoCena] = 0; UpdateBiz(biza); SaveBiz(biza); } if(fuela < 999) { FuelStInfo[fuela][bOwned] = 0; FuelStInfo[fuela][bUpdate] = 0; FuelStInfo[fuela][bRentTime] = 5; UpdateFuelSt(fuela); SaveFuelSt(fuela); } cache_delete(trololo); new queryadmdelaccyo[80]; format(queryadmdelaccyo, sizeof(queryadmdelaccyo), "DELETE FROM accounts WHERE name = '%s' LIMIT 1", params[0]); mysql_query(connect_mysql,queryadmdelaccyo,false); format(query,sizeof(query),"[Внимание] %s[%d] удалил аккаунт игрока %s", Player[playerid][pName], playerid, params[0]); SendAdminMessage(0xff0000AA,query); new target; target = ReturnUser(params[0]); if(target != INVALID_PLAYER_ID) SendClientMessage(target,0xff0000AA,"Ваш аккаунт был удалён за нарушение правил сервера"), KickEx(target); format(query,sizeof(query),"Аккаунт №%d удалён", idacs); SendClientMessage(playerid, 0x00FF00AA, query); DeletePVar (playerid, "DellACC"); } } return 1; }
Скриншот:
P.S. немного пояснений. Переменные в команде замените на те, которые у Вас в моде. У каждого они по разному могут называться.
Приведённый код ниже используется для того, чтобы после удаления аккаунта, если игрок владел бизнесом и домом, то все эти данные обнуляются и уходят в гос. продажу. При желании либо удалите, либо поменяйте на свои переменные. Данная команда полностью рабочая проверена в моде Funny RP.
Код:else { new lvl = cache_get_field_content_int(0, "level"), homea = cache_get_field_content_int(0, "House"), biza = cache_get_field_content_int(0, "Business"), fuela = cache_get_field_content_int(0, "Fuel"), idacs = cache_get_field_content_int(0, "IDacc"); if(!GetPVarInt(playerid, "DellACC")) { new strAcc[128]; format(strAcc, sizeof(strAcc), "Ник: %s, номер: %d, лвл: %d. Удалить аккаунт? ", params[0], idacs, lvl); SendClientMessage(playerid, 0xFF6600AA, strAcc); SendClientMessage(playerid, COLOR_YELLOW, "Для ОТМЕНЫ удаления введите /delacc без ника"); SendClientMessage(playerid, COLOR_YELLOW, "Для ПОДТВЕРЖДЕНИЯ повторите /delacc [ник]"); SetPVarInt (playerid, "DellACC", 1); cache_delete(trololo); return 1; } if(homea < 999) { HouseInfo[homea][hCar] = 0; HouseInfo[homea][hOwned] = 0; HouseInfo[homea][hLock] = 1; if(HouseInfo[homea][hClass] == 0) HouseInfo[homea][hRentPlata] = 800; if(HouseInfo[homea][hClass] == 1) HouseInfo[homea][hRentPlata] = 1500; if(HouseInfo[homea][hClass] == 2) HouseInfo[homea][hRentPlata] = 2000; if(HouseInfo[homea][hClass] == 3) HouseInfo[homea][hRentPlata] = 2000; if(HouseInfo[homea][hClass] == 4) HouseInfo[homea][hRentPlata] = 3000; if(HouseInfo[homea][hClass] == 5) HouseInfo[homea][hRentPlata] = 3500; if(HouseInfo[homea][hClass] == 6) HouseInfo[homea][hRentPlata] = 5500; if(HouseInfo[homea][hClass] == 7) HouseInfo[homea][hRentPlata] = 6000; if(HouseInfo[homea][hClass] == 8) HouseInfo[homea][hRentPlata] = 10000; if(HouseInfo[homea][hUpdate] == 5) Delete3DTextLabel(HouseInfo[homea][StoreInfoHouse]); HouseInfo[homea][hUpdate] = 0; HouseInfo[homea][hRentTime] = 5; UpdateHouse(homea); SaveHouse(homea); } if(biza < 999) { BizInfo[biza][bOwned] = 0; BizInfo[biza][bUpdate] = 0; BizInfo[biza][bRentTime] = 5; BizInfo[biza][bGotoCena] = 0; UpdateBiz(biza); SaveBiz(biza); } if(fuela < 999) { FuelStInfo[fuela][bOwned] = 0; FuelStInfo[fuela][bUpdate] = 0; FuelStInfo[fuela][bRentTime] = 5; UpdateFuelSt(fuela); SaveFuelSt(fuela); }