public static bool Fly(string[] args, CommandGroup command) { if (args.Count() < 1) { return(false); } Player target = command.getSelectedPlayer(); if (target == null) { target = command.GetSession().GetPlayer(); } if (args[0].ToLower() == "on") { target.SendMovementSetCanFly(true); } else if (args[0].ToLower() == "off") { target.SendMovementSetCanFly(false); } else { return(command.SendSysMessage("Use [on|off]")); } command.SendSysMessage(CypherStrings.CommandFlymodeStatus, command.GetNameLink(target), args); return(true); }
public static bool HandleModifyMoneyCommand(string[] args, CommandGroup handler) { if (args.Count() < 1) return false; Player target = handler.getSelectedPlayer(); if (target == null) return handler.SendErrorMessage(CypherStrings.NoCharSelected); // check online security if (handler.HasLowerSecurity(target, 0)) return false; long addmoney; long.TryParse(args[0], out addmoney); long moneyuser = (long)target.GetMoney(); if (addmoney < 0) { ulong newmoney = (ulong)(moneyuser + addmoney); Log.outDebug(ObjMgr.GetCypherString(CypherStrings.CurrentMoney), moneyuser, addmoney, newmoney); if (newmoney <= 0) { handler.SendSysMessage(CypherStrings.YouTakeAllMoney, handler.GetNameLink(target)); if (handler.needReportToTarget(target)) ChatHandler.SendSysMessage(target, CypherStrings.YoursAllMoneyGone, handler.GetNameLink()); target.SetMoney(0); } else { if (newmoney > PlayerConst.MaxMoneyAmount) newmoney = PlayerConst.MaxMoneyAmount; handler.SendSysMessage(CypherStrings.YouTakeMoney, Math.Abs(addmoney), handler.GetNameLink(target)); if (handler.needReportToTarget(target)) ChatHandler.SendSysMessage(target, CypherStrings.YoursMoneyTaken, handler.GetNameLink(), Math.Abs(addmoney)); target.SetMoney(newmoney); } } else { handler.SendSysMessage( CypherStrings.YouGiveMoney, addmoney, handler.GetNameLink(target)); if (handler.needReportToTarget(target)) ChatHandler.SendSysMessage(target, CypherStrings.YoursMoneyGiven, handler.GetNameLink(), addmoney); if (addmoney >= PlayerConst.MaxMoneyAmount) target.SetMoney(PlayerConst.MaxMoneyAmount); else target.ModifyMoney(addmoney); } Log.outDebug(ObjMgr.GetCypherString(CypherStrings.NewMoney), moneyuser, addmoney, target.GetMoney()); return true; }
public static bool SetGMLevel(string[] args, CommandGroup command) { if (args.Length < 3) { return(false); } string targetAccountName = ""; uint targetAccountId = 0; uint targetSecurity = 0; uint gm = 0; string arg1 = args[0]; string arg2 = args[1]; string arg3 = args[2]; bool isAccountNameGiven = true; if (!string.IsNullOrEmpty(arg1) && string.IsNullOrEmpty(arg3)) { if (command.getSelectedPlayer() == null) { return(false); } isAccountNameGiven = false; } // Check for second parameter if (!isAccountNameGiven && !string.IsNullOrEmpty(arg2)) { return(false); } // Check for account if (isAccountNameGiven) { targetAccountName = arg1; if (!targetAccountName.IsNormalized())//need checked { command.SendErrorMessage(CypherStrings.AccountNotExist, targetAccountName); return(false); } } // Check for invalid specified GM level. gm = isAccountNameGiven ? uint.Parse(arg2) : uint.Parse(arg1); if (gm > (uint)AccountTypes.Console) { command.SendErrorMessage(CypherStrings.BadValue); return(false); } // handler->getSession() == NULL only for console targetAccountId = (isAccountNameGiven) ? AcctMgr.GetId(targetAccountName) : command.getSelectedPlayer().GetSession().GetAccountId(); int gmRealmID = (isAccountNameGiven) ? int.Parse(arg3) : int.Parse(arg2); uint playerSecurity; if (command.GetSession() != null) { playerSecurity = AcctMgr.GetSecurity(command.GetSession().GetAccountId(), gmRealmID); } else { playerSecurity = (uint)AccountTypes.Console; } // can set security level only for target with less security and to less security that we have // This is also reject self apply in fact targetSecurity = AcctMgr.GetSecurity(targetAccountId, gmRealmID); if (targetSecurity >= playerSecurity || gm >= playerSecurity) { command.SendErrorMessage(CypherStrings.YoursSecurityIsLow); return(false); } PreparedStatement stmt; // Check and abort if the target gm has a higher rank on one of the realms and the new realm is -1 if (gmRealmID == -1 && !AcctMgr.IsConsoleAccount((AccountTypes)playerSecurity)) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Sel_account_accessGMLevelTest); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, gm); SQLResult result = DB.Auth.Select(stmt); if (result.Count > 0) { command.SendErrorMessage(CypherStrings.YoursSecurityIsLow); return(false); } } // Check if provided realmID has a negative value other than -1 if (gmRealmID < -1) { command.SendErrorMessage(CypherStrings.InvalidRealmid); return(false); } // If gmRealmID is -1, delete all values for the account id, else, insert values for the specific realmID if (gmRealmID == -1) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Del_account_access); stmt.AddValue(0, targetAccountId); } else { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Del_account_accessByRealm); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, WorldConfig.RealmId); } DB.Auth.Execute(stmt); if (gm != 0) { stmt = DB.Auth.GetPreparedStatement(LoginStatements.Ins_account_access); stmt.AddValue(0, targetAccountId); stmt.AddValue(1, gm); stmt.AddValue(2, gmRealmID); DB.Auth.Execute(stmt); } command.SendSysMessage(CypherStrings.YouChangeSecurity, targetAccountName, gm); return(true); }