11.08.2012, 17:13
Hello guys.. I've a bug in my Call System.
I've been using zGaming Roleplay Script. I found this bug... I've tried to fix it much, but failed
Here it is..
Hang up..
Pickup
Here is OnPlayerText
The bug is on the /hangup its not being hunged with who i've called.
I've been using zGaming Roleplay Script. I found this bug... I've tried to fix it much, but failed
Here it is..
pawn Код:
CMD:call(playerid, params[])
{
new number, string[128], done;
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(!PlayerInfo[playerid][pHasCellphone]) return SendClientMessage(playerid, COLOR_GREY, "You don't own a cellphone.");
if(!PlayerInfo[playerid][pCellphone]) return SendClientMessage(playerid, COLOR_GREY, "You don't have a simcard.");
if(sscanf(params, "i", number)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /call [number]");
if(PhoneOff[playerid]) return SendClientMessage(playerid, COLOR_GREY, "Your phone is turned off.");
if(Calling[playerid] || BeingCalled[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You are already on a call.");
if(number == 0) return SendClientMessage(playerid, COLOR_GREY, "Invalid phone number.");
format(string, sizeof(string), "* %s takes out their cellphone and starts calling a number.", RPN(playerid));
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
if(number == 911)
{
Calling[playerid] = 1;
Call911[playerid] = 1;
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
SendClientMessage(playerid, COLOR_YELLOW, "[Cellphone]: You are connected to the SAPD emergency line, please explain your emergency.");
}
foreach(Player, i)
{
if(PlayerInfo[i][pCellphone] == number)
{
if(PhoneOff[i]) return SendClientMessage(playerid, COLOR_GREY, "Player has their phone turned off.");
if(BeingCalled[i] || Calling[i]) return SendClientMessage(playerid, COLOR_GREY, "Number busy.");
Calling[playerid] = 1;
BeingCalled[i] = 1;
Called[playerid] = i;
Caller[i] = playerid;
SendClientMessage(playerid, COLOR_ORANGE, " The cellphone is ringing, wait for someone to pickup.");
format(string, sizeof(string), "* %s's cellphone starts ringing.", RPN(i));
SendNearbyMessage(i, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
format(string, sizeof(string), " [Cellphone]: Incoming call from %s, Ph: %d", RPN(playerid), PlayerInfo[playerid][pCellphone]);
SendClientMessage(i, COLOR_YELLOW, string);
SendClientMessage(i, COLOR_WHITE, " Type /pickup to answer or /hangup to cancel the incoming call.");
done = 1;
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
}
}
if(done != 1)
{
SendClientMessage(playerid, COLOR_GREY, "Number is not currently available.");
}
return 1;
}
pawn Код:
CMD:hangup(playerid, params[])
{
new string[128];
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(!PlayerInfo[playerid][pHasCellphone]) return SendClientMessage(playerid, COLOR_GREY, "You don't own a cellphone.");
if(!BeingCalled[playerid] && !Calling[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You are not on a call nor is anybody calling you.");
format(string, sizeof(string), "* %s puts their cellphone away.", RPN(playerid));
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
SendClientMessage(playerid, COLOR_ORANGE, " You have hungup the line.");
if(BeingCalled[playerid]) SendClientMessage(Caller[playerid], COLOR_ORANGE, " They hungup the line.");
else if(Calling[playerid]) SendClientMessage(Called[playerid], COLOR_ORANGE, " They hungup the line.");
if(Call911[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You can't hangup on a 911 call.");
//
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_STOPUSECELLPHONE);
if(Calling[playerid])
{
SetPlayerSpecialAction(Called[playerid], SPECIAL_ACTION_STOPUSECELLPHONE);
format(string, sizeof(string), "[Cellphone] Phonecall lasted for %d seconds, price: $%d", CallTime[playerid], CallTime[playerid]*10/100);
SendClientMessage(playerid, COLOR_YELLOW, string);
GiveDodMoney(playerid, -(CallTime[playerid]*10/100));
TaxMoney += (CallTime[playerid]*10/100);
Calling[playerid] = 0;
BeingCalled[playerid] = 0;
Caller[playerid] = -1;
CallTime[playerid] = 0;
Called[playerid] = -1;
}
else if(Calling[Caller[playerid]])
{
SetPlayerSpecialAction(Called[playerid], SPECIAL_ACTION_STOPUSECELLPHONE);
format(string, sizeof(string), "[Cellphone] Phonecall lasted for %d seconds, price: $%d", CallTime[Caller[playerid]], CallTime[Caller[playerid]]*10/100);
SendClientMessage(Caller[playerid], COLOR_YELLOW, string);
GiveDodMoney(Caller[playerid], -(CallTime[Caller[playerid]]*10/100));
TaxMoney += (CallTime[Caller[playerid]]*10/100);
Calling[Called[playerid]] = 0;
BeingCalled[Called[playerid]] = 0;
Caller[Called[playerid]] = -1;
CallTime[Called[playerid]] = 0;
Called[Called[playerid]] = -1;
Calling[playerid] = 0;
BeingCalled[playerid] = 0;
Caller[playerid] = -1;
CallTime[playerid] = 0;
Called[playerid] = -1;
}
return 1;
}
pawn Код:
CMD:pickup(playerid, params[])
{
new string[128];
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(!PlayerInfo[playerid][pHasCellphone]) return SendClientMessage(playerid, COLOR_GREY, "You don't own a cellphone.");
if(!BeingCalled[playerid]) return SendClientMessage(playerid, COLOR_GREY, "Nobody is calling you.");
format(string, sizeof(string), "* %s answers their cellphone.", RPN(playerid));
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
SendClientMessage(playerid, COLOR_ORANGE, " You have picked up the line.");
SendClientMessage(Caller[playerid], COLOR_ORANGE, " They pickedup the line.");
Calling[playerid] = 1;
BeingCalled[playerid] = 1;
SetTimerEx("PhoneCall", 1000, false, "d", Caller[playerid]);
return 1;
}
Here is OnPlayerText
pawn Код:
// Normal Calling
if(BeingCalled[playerid] == 1 || Calling[playerid] == 1 || Call911[playerid])
{
if(strlen(PlayerInfo[playerid][pAccent])) format(string, sizeof(string), "[Cellphone] %s: [%s Accent] %s", RPN(playerid), PlayerInfo[playerid][pAccent], text);
else format(string, sizeof(string), "[Cellphone] %s: %s", RPN(playerid), text);
if(!Call911[playerid])
{
if(BeingCalled[playerid] == 1) SendClientMessage(Caller[playerid], COLOR_YELLOW, string);
else if(Calling[playerid] == 1) SendClientMessage(Called[playerid], COLOR_YELLOW, string);
}
}
The bug is on the /hangup its not being hunged with who i've called.