[RP] Command Glitch Fixes! [SLEDMORE]
Hey guys,
On my hotel, and a few others, i've noticed annoying bugs... Such as glitch kill and arrest..
Here are some fixes:
PHP Code:
#region :arrest <user> <time>
case "arrest":
{
if (User._roomID == _roomID)
{
virtualUser User = userManager.getUser(args[1]);
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
int isworking = dbClient.getInt("SELECT working FROM users WHERE name = '" + _Username + "'");
if (isworking == 1)
{
{
int me_secure_id = dbClient.getInt("SELECT secure_id FROM users WHERE name = '" + _Username + "'");
int canarrest = dbClient.getInt("SELECT arrest FROM jobs_ranks WHERE id = '" + me_secure_id + "'");
if (User._roomID == _roomID && (roomUser.Y == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
{
if (canarrest == 1)
{
if (User.roomUser.walkLock == false)
{
Room.sendSaying(roomUser, "*attempts to arrest " + User._Username + ", but notices that he is not cuffed*");
}
else
{
int time = int.Parse(args[2]);
if (time > 60 || time < 1)
{
sendData("BK" + "What exactly are you trying to do?");
}
else
{
string arrested;
arrested = dbClient.getString("SELECT arrested FROM users WHERE name = '" + User._Username + "'");
if (arrested == "1")
{
dbClient.runQuery("UPDATE users SET arrested = '1', arrests = arrests + '1', time_jail = '" + args[2] + "' WHERE name = '" + User._Username + "'");
dbClient.runQuery("UPDATE users SET avoid = '1' WHERE name = '" + User._Username + "'");
Room.sendSaying(roomUser, "*re-arrests " + User._Username + " for " + time + " minutes*");
User.sendData("D^" + "H" + Encoding.encodeVL64(112));
User.sendData("BK" + "You have been re-arrested by " + _Username + "");
ThreadStart jailStarter = new ThreadStart(User.jailTime);
User.jailLooper = new Thread(jailStarter);
User.jailLooper.Priority = ThreadPriority.Lowest;
User.jailLooper.Start();
}
else if (arrested == "0")
{
dbClient.runQuery("UPDATE users SET arrested = '1', arrests = arrests + '1', time_jail = '" + args[2] + "' WHERE name = '" + User._Username + "'");
int fine = time * 5;
dbClient.runQuery("UPDATE users SET credits = credits - '" + fine + "' WHERE name = '" + User._Username + "'");
dbClient.runQuery("UPDATE users SET avoid = '1' WHERE name = '" + User._Username + "'");
User.refreshValueables(true, false);
Room.sendSaying(roomUser, "*arrests " + User._Username + " for " + time + " minutes, and fines them " + fine + " credits*");
User.sendData("D^" + "H" + Encoding.encodeVL64(112));
User.sendData("BK" + "You have been arrested by " + _Username + ", and fined " + fine + " credits!");
ThreadStart jailStarter = new ThreadStart(User.jailTime);
User.jailLooper = new Thread(jailStarter);
User.jailLooper.Priority = ThreadPriority.Lowest;
User.jailLooper.Start();
}
}
}
}
}
}
}
}
}
break;
}
#endregion
PHP Code:
#region :punch <user>
case "punch":
case "hit":
{
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
virtualUser User = userManager.getUser(args[1]);
{
if (User._roomID == _roomID)
{
if (roomUser.walkLock == true)
{
sendData("BK" + "Nice try, but you are either stunned or cuffed.");
}
else
{
if (punchCdLooper != null)
{
Room.sendWhisper(roomUser, _Username, "*attempts to swing at " + User._Username + ", but is too exhausted*");
}
else
{
int isArrested = dbClient.getInt("SELECT arrested FROM users WHERE name = '" + _Username + "'");
int canHit = dbClient.getInt("SELECT violence FROM rooms WHERE id = '" + _roomID + "'");
int isAfk = dbClient.getInt("SELECT afk FROM users WHERE name = '" + User._Username + "'");
if (isAfk == 1)
{
sendData("BK" + "Sorry, but this user is AFK.");
}
else
{
if (isArrested < 1)
{
if (canHit == 1)
{
sendData("BK" + "Sorry, but this room has been declared a no fighting zone.");
}
else
{
if (User._roomID == _roomID && (roomUser.Y == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
{
//db queries
int myHealth = dbClient.getInt("SELECT health FROM users WHERE name = '" + User._Username + "'");
int str_mod = dbClient.getInt("SELECT str FROM users WHERE name = '" + _Username + "'");
//generates a random number
Random randNum = new Random();
int hit_dif_0 = randNum.Next(1, 3);
int hit_dif_1 = randNum.Next(1, 13);
//what a user hits
int hit = str_mod * hit_dif_0 + hit_dif_1;
int getHit = myHealth - hit;
if (getHit < 1 && _Username == User._Username)
{
sendData("BK" + "Sorry, but you can not knock yourself out.");
}
else
{
dbClient.runQuery("UPDATE users SET health = health - '" + hit + "' WHERE name = '" + User._Username + "'");
dbClient.runQuery("UPDATE users SET hits = hits + 1 WHERE name = '" + _Username + "'");
dbClient.runQuery("UPDATE users SET punch = '1' WHERE name = '" + _Username + "'");
int health_db_ko = dbClient.getInt("SELECT health FROM users WHERE name = '" + User._Username + "'");
Room.sendShout(roomUser, "*Swings at " + args[1] + ", causing " + hit + " damage*");
ThreadStart punchCdStarter = new ThreadStart(punchCoolDown);
punchCdLooper = new Thread(punchCdStarter);
punchCdLooper.Priority = ThreadPriority.Lowest;
punchCdLooper.Start();
//if the user has 0 or less helth left
if (health_db_ko < 1)
{
if (User._Mission == "[Game] Deathmatch" || User._Mission == "[Game] Brawl")
{
Room.sendShout(roomUser, "*Knocks out " + args[1] + ", sending them to the lobby*");
if (User._Mission == "[Game] Deathmatch")
{
if (_Mission == "[Game] Deathmatch")
{
dbClient.runQuery("UPDATE users SET game_dm = game_dm + '10' WHERE name = '" + _Username + "'");
}
User.sendData("D^" + "H" + Encoding.encodeVL64(362));
User.sendData("BK" + "Thank you for playing deathmatch.");
}
if (User._Mission == "[Game] Brawl")
{
if (_Mission == "[Game] Brawl")
{
dbClient.runQuery("UPDATE users SET game_brawl = game_brawl + '10' WHERE name = '" + _Username + "'");
}
User.sendData("D^" + "H" + Encoding.encodeVL64(362));
User.sendData("BK" + "Thank you for playing brawl.");
}
User.refreshAppearance(true, true, true);
dbClient.runQuery("UPDATE users SET health = '100' WHERE name = '" + User._Username + "'");
}
else
{
User.sendData("D^" + "H" + Encoding.encodeVL64(71));
dbClient.runQuery("UPDATE users SET avoid = '1' WHERE name = '" + User._Username + "'");
User.sendData("BK" + "You have been knocked out by another user and sent to the hospital.");
Room.sendShout(roomUser, "*Knocks out " + args[1] + ", sending them to the hospital*");
dbClient.runQuery("UPDATE users SET kills = kills + 1 WHERE name = '" + _Username + "'");
dbClient.runQuery("UPDATE users SET deaths = deaths + 1, dead = '1', time_dead = '7' WHERE name = '" + User._Username + "'");
User._Mission = "Dead";
refreshAppearance(true, true, true);
ThreadStart koStarter = new ThreadStart(User.knockOut);
User.deadLooper = new Thread(koStarter);
User.deadLooper.Priority = ThreadPriority.Lowest;
User.deadLooper.Start();
User.roomUser.walkLock = true;
}
}
}
}
else
{
if (User._roomID == _roomID && (roomUser.Y + 1 == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
{
Room.sendShout(roomUser, "*Swings at " + args[1] + ", but misses*");
}
}
}
}
}
}
}
}
}
}
break;
}
#endregion
PHP Code:
#region :slap <user>
case "slap":
{
if (User._roomID == _roomID)
{
if (roomUser.walkLock == true)
{
sendData("BK" + "Nice try, but you are either stunned or cuffed.");
}
else
{
if (punchCdLooper != null)
{
Room.sendSaying(roomUser, "(cooldown)");
}
else
{
int isArrested;
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
isArrested = dbClient.getInt("SELECT arrested FROM users WHERE name = '" + _Username + "'");
}
if (isArrested < 1)
{
virtualUser User = userManager.getUser(args[1]);
if (User._roomID == _roomID && (roomUser.Y == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
{
string health_db;
string str_db;
int health_db_ko;
int canHit;
//db queries
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
canHit = dbClient.getInt("SELECT violence FROM rooms WHERE id = '" + _roomID + "'");
health_db = dbClient.getString("SELECT health FROM users WHERE name = '" + User._Username + "'");
str_db = dbClient.getString("SELECT str FROM users WHERE name = '" + _Username + "'");
}
if (canHit == 1)
{
return false;
}
//db queries
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
health_db_ko = dbClient.getInt("SELECT health FROM users WHERE name = '" + User._Username + "'");
int getHit = health_db_ko - 1;
if (getHit > health_db_ko)
{
sendData("BK" + "Sorry, but you can not knock yourself out.");
return false;
}
else
{
dbClient.runQuery("UPDATE users SET health = health - '1' WHERE name = '" + User._Username + "'");
dbClient.runQuery("UPDATE users SET slap = '1' WHERE name = '" + this._Username + "'");
}
}
Room.sendShout(roomUser, "*Slaps " + args[1] + ", causing 1 damage*");
int health_int = health_db_ko;
ThreadStart punchCdStarter = new ThreadStart(punchCoolDown);
punchCdLooper = new Thread(punchCdStarter);
punchCdLooper.Priority = ThreadPriority.Lowest;
punchCdLooper.Start();
//if the user has 0 or less helth left
if (health_int < 1)
{
User.sendData("D^" + "H" + Encoding.encodeVL64(71));
User.sendData("BK" + "You have been knocked out by another user and sent to the hospital.");
Room.sendShout(roomUser, "*Knocks out " + args[1] + ", sending them to the hospital*");
using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient())
{
dbClient.runQuery("UPDATE users SET health = '100' WHERE name = '" + User._Username + "'");
dbClient.runQuery("UPDATE users SET kills = kills + 1 WHERE name = '" + _Username + "'");
dbClient.runQuery("UPDATE users SET deaths = deaths + 1 WHERE name = '" + User._Username + "'");
}
ThreadStart koStarter = new ThreadStart(knockOut);
deadLooper = new Thread(koStarter);
deadLooper.Priority = ThreadPriority.Lowest;
User.deadLooper.Start();
User.roomUser.walkLock = true;
}
}
else
{
if (User._roomID == _roomID && (roomUser.Y + 1 == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
{
Room.sendShout(roomUser, "*Swings at " + args[1] + ", but misses*");
}
//else
//{
// Room.sendSaying(roomUser, "*Swings at " + args[1] + ", but misses*");
//}
}
}
}
}
}
break;
}
#endregion
PHP Code:
#region :push <user>
case "push":
{
if (User._roomID == _roomID)
{
if (pushCdLooper != null)
{
Room.sendWhisper(roomUser, _Username, "(cooldown)");
}
else
{
virtualUser User = userManager.getUser(args[1]);
if (User.roomUser != roomUser && (roomUser.X + 1 == User.roomUser.X || roomUser.X - 1 == User.roomUser.X || roomUser.Y + 1 == User.roomUser.Y || roomUser.Y - 1 == User.roomUser.Y))
{
switch (roomUser.Z2)
{
case 0:
{
User.roomUser.goalX = User.roomUser.X;
User.roomUser.goalY = User.roomUser.Y - 1;
break;
}
case 2:
{
User.roomUser.goalX = User.roomUser.X + 1;
User.roomUser.goalY = User.roomUser.Y;
break;
}
case 4:
{
User.roomUser.goalX = User.roomUser.X;
User.roomUser.goalY = User.roomUser.Y + 1;
break;
}
case 6:
{
User.roomUser.goalX = User.roomUser.X - 1;
User.roomUser.goalY = User.roomUser.Y;
break;
}
}
Room.sendSaying(roomUser, "*Pushes " + User._Username + "*");
ThreadStart pushCdStarter = new ThreadStart(pushCoolDown);
pushCdLooper = new Thread(pushCdStarter);
pushCdLooper.Priority = ThreadPriority.Lowest;
pushCdLooper.Start();
}
}
}
break;
}
#endregion
PHP Code:
#region :pull <user>
case "pull":
{
if (_Rank > 1)
{
if (User._roomID == _roomID)
{
virtualUser User = userManager.getUser(args[1]);
if (User.roomUser != roomUser && (roomUser.X + 2 == User.roomUser.X || roomUser.X - 2 == User.roomUser.X || roomUser.Y + 2 == User.roomUser.Y || roomUser.Y - 2 == User.roomUser.Y))
{
switch (roomUser.Z2)
{
case 0:
{
User.roomUser.goalX = User.roomUser.X;
User.roomUser.goalY = User.roomUser.Y + 1;
break;
}
case 2:
{
User.roomUser.goalX = User.roomUser.X - 1;
User.roomUser.goalY = User.roomUser.Y;
break;
}
case 4:
{
User.roomUser.goalX = User.roomUser.X;
User.roomUser.goalY = User.roomUser.Y - 1;
break;
}
case 6:
{
User.roomUser.goalX = User.roomUser.X + 1;
User.roomUser.goalY = User.roomUser.Y;
break;
}
}
Room.sendSaying(roomUser, "*Pulls " + User._Username + "*");
}
}
}
break;
}
#endregion
NOTE: YOU WILL HAVE TO CHANGE THE DEATH ROOMS, AND JAIL ROOMS!! ALSO IF THIS HELPED CLICK THE THANKS BUTTON :').
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Quote:
Originally Posted by
cooldude159
Thanks This is AWSOME
Your welcome, glad ya like it (;
Re: [RP] Command Glitch Fixes! [SLEDMORE]
What exactly do they fix? And whats the glitch of them?
Thanks,
Caleb!
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Quote:
Originally Posted by
RockStar7
What exactly do they fix? And whats the glitch of them?
Thanks,
Caleb!
Well if you go in another room in the same cords, you can slap them or pull or push or hit, or arrest.
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Quote:
Originally Posted by
CJRP
Ta Sledeh (Y)
Bump much? But, Thanks.
Re: [RP] Command Glitch Fixes! [SLEDMORE]
Well, this is pretty much the same as another issue i come across recently:
Code:
if (User._roomID == _roomID && (roomUser.Y == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X))
This (for some reason on rastalulz'-like servers) causes users to be able to hit others in another room at any position from any room's door entrance.
The fix is the usual
Code:
if (User._roomID == _roomID && ((roomUser.Y == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y + 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y - 1 == User.roomUser.Y && roomUser.X == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X + 1 == User.roomUser.X) || (roomUser.Y == User.roomUser.Y && roomUser.X - 1 == User.roomUser.X)))
This applies to Rastalulz' server and possibly alot of servers derived from it.
Also, i was wondering, what does your code fix?