//-------------------------------------------------------- //You need to use strtok for this to work. //-------------------------------------------------------- #define CallCost 2 new Calling[MAX_PLAYERS]; new Answered[MAX_PLAYERS]; new Callerid[MAX_PLAYERS]; new Dialing[MAX_PLAYERS]; public OnPlayerConnect(playerid) { Calling[playerid] = -1; Answered[playerid] = 0; Callerid[playerid] = 0; Dialing[playerid] = -1; return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new string[256]; new sendername[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; new cmd[256]; new tmp[256]; new giveplayerid; if(strcmp(cmd, "/call", true) == 0) { tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /call [playerid]"); return 1; } giveplayerid = strval(tmp); if (!(IsPlayerConnected(giveplayerid))) { SendClientMessage(playerid, 0xFF0000AA, "Inactive player id!"); return 1; } if (GetPlayerMoney(playerid) < CallCost) { SendClientMessage(playerid, 0xFF0000AA, "You do not have enough money to make a phone call!"); return 1; } if (giveplayerid == playerid) { SendClientMessage(playerid, 0xFF0000AA, "You cannot call yourself!"); return 1; } if (Calling[playerid] == giveplayerid && Callerid[playerid] != 1 && Answered[playerid] == 0) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "%s is already trying to ring you!", giveplayer); SendClientMessage(playerid, 0xFFFFFFAA, string); return 1; } if (Calling[playerid] > -1 && Callerid[playerid] != 1 && Answered[playerid] == 0) { GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer)); GetPlayerName(giveplayerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s is trying to ring you, you must hang up before you can ring %s!", giveplayer, sendername); SendClientMessage(playerid, 0xFFFFFFAA, string); return 1; } if (Calling[playerid] == giveplayerid && Answered[playerid] == 0) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "You are already trying to ring %s", giveplayer); SendClientMessage(playerid, 0xFFFFFFAA, string); return 1; } if (Calling[playerid] > -1 && Answered[playerid] == 0) { GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer)); GetPlayerName(giveplayerid, sendername, sizeof(sendername)); format(string, sizeof(string), "You are currently trying to ring %s and must hang up to call %s", giveplayer, sendername); SendClientMessage(playerid, COLOR_0xFFFFFFAA, string); return 1; } if (Calling[playerid] > -1 && Answered[playerid] == 1) { GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "You are already on the phone to %s!", giveplayer); SendClientMessage(playerid, COLOR_0xFFFFFFAA, string); return 1; } if (Calling[giveplayerid] > -1) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "%s is already on the phone, try again later", giveplayer); SendClientMessage(playerid, 0xFF9900AA, string); return 1; } else GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s is ringing you, type /answer to answer the call or /hangup to ignore it", sendername); SendClientMessage(giveplayerid, 0xFFFF00AA, string); format(string, sizeof(string), "You are ringing %s", giveplayer); SendClientMessage(playerid, COLOR_0xFFFF00AA, string); Calling[playerid] = giveplayerid; Calling[giveplayerid] = playerid; Callerid[playerid] = 1; Dialing[playerid] = 30; return 1; } if(strcmp(cmd, "/answer", true) == 0) { if (Calling[playerid] == -1) { SendClientMessage(playerid, 00xFF0000AA, "Nobody is calling you!"); return 1; } if (Answered[playerid] == 1) { SendClientMessage(playerid, 00xFF9900AA, "You are already on the phone!"); return 1; } else GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s has answered your call, talk away", sendername); SendClientMessage(Calling[playerid], 00x33CCFFAA, string); format(string, sizeof(string), "You have answered %s's call, talk away", giveplayer); SendClientMessage(playerid, 00x33CCFFAA, string); Answered[playerid] = 1; Answered[Calling[playerid]] = 1; Callerid[Calling[playerid]] = 1; Dialing[Calling[playerid]] = -1; return 1; } if(strcmp(cmd, "/hangup", true) == 0) { if (Calling[playerid] == -1) { SendClientMessage(playerid, 00xFF0000AA, "You are not on the phone!"); return 1; } else { GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s has hung up the phone on you", sendername); SendClientMessage(Calling[playerid], 0xFF9900AA, string); format(string, sizeof(string), "You have hung up on %s", giveplayer); SendClientMessage(playerid, 0xFFFFFFAA, string); Calling[playerid] = -1; Answered[playerid] = 0; Callerid[playerid] = 0; Calling[Calling[playerid]] = -1; Answered[Calling[playerid]] = 0; Callerid[Calling[playerid]] = 0; Dialing[Calling[playerid]] = -1; } return 1; } return 0; } public OnPlayerText(playerid, text[]) { if (!IsPlayerConnected(playerid)) { return 0; } if (Calling[playerid] > -1 && Answered[playerid] == 1) { new string[256]; new sendername[MAX_PLAYER_NAME]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s: %s", sendername, text); SendClientMessage(Calling[playerid], 0xFFFFFFAA, string); format(string, sizeof(string), "%s: %s", sendername, text); SendClientMessage(playerid, 0x0AFF0AAA, string); format(string, sizeof(string), "%s: %s", sendername, text); print(string); format(string, sizeof(string), "%s: %s", sendername, text); print(string); return 0; } return 1; } public OnGameModeInit() { SetTimer("PhoneCut",1000,1); return 1; } public PhoneCut() { for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if (Calling[i] > -1 && Answered[i] == 1 && Callerid[i] == 1) { if (GetPlayerMoney(i) >= CallCost) { GivePlayerMoney(i, -CallCost); } if (GetPlayerMoney(i) < CallCost) { SendClientMessage(i, 0xFF0000AA, "CUT OFF: You don't have enough cash to continue this call"); SendClientMessage(Calling[i], 0xFF0000AA, "CUT OFF: Your recipient's phone has been cut off due to lack of credit"); Calling[Calling[i]] = -1; Answered[Calling[i]] = 0; Calling[i] = -1; Answered[i] = 0; Callerid[i] = 0; } } if (Calling[i] > -1 && (!(IsPlayerConnected(Calling[i])))) { SendClientMessage(i, 0xFF0000AA, "CUT OFF: Your recipitent is no longer connected to the server"); Calling[i] = -1; Answered[i] = 0; if (Callerid[i] == 1) { Callerid[i] = 0; } } if (Dialing[i] > 0) { Dialing[i] --; } if (Dialing[i] == 0) { new string[256]; new sendername[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; GetPlayerName(Calling[i], giveplayer, sizeof(giveplayer)); GetPlayerName(i, sendername, sizeof(sendername)); format(string, sizeof(string), "%s has failed to answer your call, try again later", giveplayer); SendClientMessage(i, 0xFF0000AA, string); format(string, sizeof(string), "You have failed to answer %s's call", sendername); SendClientMessage(Calling[i], 0xFF0000AA, string); Calling[Calling[i]] = -1; Dialing[i] = -1; Calling[i] = -1; Callerid[i] = 0; } if (Dialing[i] == -1) { } } } return 1; }