using System.Collections.Generic;
using System.Threading.Tasks;
public static List<ContactModel> contactList;
public static List<SmsModel> smsList;
private ContactModel GetContactFromId(int contactId)
ContactModel contact = null;
foreach (ContactModel contactModel in contactList)
if (contactModel.id == contactId)
private int GetNumerFromContactName(string contactName, int playerPhone)
foreach (ContactModel contact in contactList)
if (contact.owner == playerPhone && contact.contactName == contactName)
targetPhone = contact.contactNumber;
private List<ContactModel> GetTelephoneContactList(int number)
List<ContactModel> contacts = new List<ContactModel>();
foreach (ContactModel contact in contactList)
if (contact.owner == number)
private string GetContactInTelephone(int phone, int number)
string contactName = string.Empty;
foreach (ContactModel contact in contactList)
if (contact.owner == phone && contact.contactNumber == number)
contactName = contact.contactName;
private List<SmsModel> GetNumberSmsList(int number)
List<SmsModel> sent = new List<SmsModel>();
List<SmsModel> recived = new List<SmsModel>();
foreach (SmsModel contact in smsList)
if (contact.phone == number)
if (contact.target == number)
List<SmsModel> contacts1 = sent.GroupBy(x => x.target).Select(x => x.Last()).ToList<SmsModel>();
List<SmsModel> contacts2 = recived.GroupBy(x => x.phone).Select(x => x.Last()).ToList<SmsModel>();
List<SmsModel> spoeni = contacts1.Concat(contacts2).ToList();
for (var i = 0; i < spoeni.Count; i++)
for (var j = 0; j < spoeni.Count; j++)
if(spoeni[i].phone == spoeni[j].target)
NAPI.Util.ConsoleOutput(NAPI.Util.ToJson(spoeni).ToString());
private List<SmsModel> GetSmsBetweenNumbers(int number, int target)
List<SmsModel> contacts = new List<SmsModel>();
foreach (SmsModel contact in smsList)
if ((contact.phone == number && contact.target == target))
if ((contact.target == number && contact.phone == target))
return contacts.OrderBy(m => m.date).ToList();
[RemoteEvent("showPhone")]
public void showPhoneEvent(Client player)
int number = player.GetData(EntityData.PLAYER_PHONE);
player.TriggerEvent("showPhone");
player.TriggerEvent("notify", 1, 9, "Nemate mobilni telefon!", 1000);
[RemoteEvent("StopAnim")]
public void StopAnimEvent(Client player)
[RemoteEvent("FastHandsUp")]
public void FastHandsUpEvent(Client player)
NAPI.Chat.SendChatMessageToPlayer(player, Constants.COLOR_SUCCESS + "Pritisnite CTRL+Z da bi ste stopirali Animaciju");
player.PlayAnimation("mp_am_hold_up", "handsup_base", 49);
[RemoteEvent("FingerPointAnim")]
public void FingerPointAnimEvent(Client player)
NAPI.Chat.SendChatMessageToPlayer(player, Constants.COLOR_SUCCESS + "Pritisnite CTRL+Z da bi ste stopirali Animaciju");
player.PlayAnimation("anim@mp_point", "sweep_low_full_behind_left", 49);
[RemoteEvent("getNumberContacts")]
public void getNumberContactsEvent(Client player)
NAPI.Util.ConsoleOutput("list contacts");
int number = player.GetData(EntityData.PLAYER_PHONE);
List<ContactModel> poruke = GetTelephoneContactList(number);
NAPI.Util.ConsoleOutput(NAPI.Util.ToJson(poruke).ToString());
player.TriggerEvent("populatePhoneContactsList", NAPI.Util.ToJson(poruke));
[RemoteEvent("callNumber")]
public void callNumberEvent(Client player, string brojj)
NAPI.Util.ConsoleOutput("start call: "+ brojj);
if (int.TryParse(brojj, out int broj) == true)
foreach (Client target in NAPI.Pools.GetAllPlayers())
if (target.GetData(EntityData.PLAYER_PHONE) == broj)
int playerPhone = player.GetData(EntityData.PLAYER_PHONE);
int phone = target.GetData(EntityData.PLAYER_PHONE);
string contact = GetContactInTelephone(phone, playerPhone);
string contact2 = GetContactInTelephone(playerPhone, phone);
contact = playerPhone.ToString();
if (contact2.Length == 0)
contact2 = phone.ToString();
player.SetData(EntityData.PLAYER_CALLING, target);
string playerMessage = string.Format("Vi zovete {0}.", contact2.Length > 0 ? contact2 : contact2.ToString());
string targetMessage = string.Format("{0} vas zove na telefon. Pritisni F2 da otvoris telefon!", contact.Length > 0 ? contact : contact.ToString());
player.SendChatMessage(Constants.COLOR_INFO + playerMessage);
target.SendChatMessage(Constants.COLOR_INFO + targetMessage);
player.TriggerEvent("showCallingCall", contact2.Length > 0 ? contact2 : contact2.ToString());
target.TriggerEvent("showIncomingCall", contact.Length > 0 ? contact : contact.ToString());
[RemoteEvent("deleteContactNumber")]
public void deleteContactNumberEvent(Client player, int id)
ContactModel contact = GetContactFromId(id);
Task.Factory.StartNew(() =>
Database.DeleteContact(id);
contactList.Remove(contact);
player.TriggerEvent("RefreshContacts");
[RemoteEvent("acceptCall")]
public void acceptCallEvent(Client player)
foreach (Client target in NAPI.Pools.GetAllPlayers())
if (target.HasData(EntityData.PLAYER_CALLING) == true)
if (target.GetData(EntityData.PLAYER_CALLING) == player)
target.ResetData(EntityData.PLAYER_CALLING);
player.SetData(EntityData.PLAYER_PHONE_TALKING, target);
target.SetData(EntityData.PLAYER_PHONE_TALKING, player);
player.TriggerEvent("voice.phoneCall",target);
target.TriggerEvent("voice.phoneCall", player);
player.TriggerEvent("v_reload");
target.TriggerEvent("v_reload");
player.PlayAnimation("amb@world_human_stand_mobile@male@standing@call@idle_a", "idle_a", 49);
player.TriggerEvent("AttachObject", player, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
target.PlayAnimation("amb@world_human_stand_mobile@male@standing@call@idle_a", "idle_a", 49);
target.TriggerEvent("AttachObject", target, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
player.SendChatMessage(Constants.COLOR_INFO + "Odgovorili ste na poziv");
target.SendChatMessage(Constants.COLOR_INFO + "Neko je odgovorio na vas poziv");
int playerPhone = player.GetData(EntityData.PLAYER_PHONE);
int phone = target.GetData(EntityData.PLAYER_PHONE);
string contact = GetContactInTelephone(phone, playerPhone);
string contact2 = GetContactInTelephone(playerPhone, phone);
contact = playerPhone.ToString();
if (contact2.Length == 0)
contact2 = phone.ToString();
player.TriggerEvent("showActiveCall", contact2.Length > 0 ? contact2 : contact2.ToString());
target.TriggerEvent("showActiveCall", contact.Length > 0 ? contact : contact.ToString());
player.SendChatMessage(Constants.COLOR_ERROR + "Niko vas ne zove sad.");
public void endCallEvent(Client player)
if (player.HasData(EntityData.PLAYER_CALLING) == true)
Client target = player.GetData(EntityData.PLAYER_CALLING);
target.TriggerEvent("showEndedCall");
player.ResetData(EntityData.PLAYER_CALLING);
else if (player.HasData(EntityData.PLAYER_PHONE_TALKING) == true)
Client target = player.GetData(EntityData.PLAYER_PHONE_TALKING);
int playerPhone = player.GetData(EntityData.PLAYER_PHONE);
int targetPhone = target.GetData(EntityData.PLAYER_PHONE);
player.TriggerEvent("voice.phoneStop");
player.TriggerEvent("v_reload");
target.TriggerEvent("voice.phoneStop");
target.TriggerEvent("v_reload");
player.PlayAnimation("amb@world_human_stand_mobile@male@text@base", "base", 49);
player.TriggerEvent("AttachObject", player, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
target.PlayAnimation("amb@world_human_stand_mobile@male@text@base", "base", 49);
target.TriggerEvent("AttachObject", target, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
player.ResetData(EntityData.PLAYER_PHONE_TALKING);
target.ResetData(EntityData.PLAYER_PHONE_TALKING);
player.SendChatMessage(Constants.COLOR_INFO + "Poziv je zavrsen.");
target.SendChatMessage(Constants.COLOR_INFO + "Poziv je zavrsen.");
player.TriggerEvent("showEndedCall");
target.TriggerEvent("showEndedCall");
player.TriggerEvent("showEndedCall");
foreach (Client target in NAPI.Pools.GetAllPlayers())
if (target.HasData(EntityData.PLAYER_CALLING) == true)
if (target.GetData(EntityData.PLAYER_CALLING) == player)
target.TriggerEvent("showEndedCall");
[RemoteEvent("getNumberMessages")]
public void getNumberMessagesEvent(Client player)
int number = player.GetData(EntityData.PLAYER_PHONE);
List<SmsModel> poruke = GetNumberSmsList(number);
player.TriggerEvent("populatePhoneSmsList", NAPI.Util.ToJson(poruke), number);
[RemoteEvent("getSMSConversation")]
public void getSMSConversationEvent(Client player, int target)
NAPI.Util.ConsoleOutput("get sms conver");
int number = player.GetData(EntityData.PLAYER_PHONE);
List<SmsModel> poruke = GetSmsBetweenNumbers(number, target);
player.TriggerEvent("showSMSConversation", NAPI.Util.ToJson(poruke),number);
public void sendSMSEvent(Client player, int target,string sms)
NAPI.Util.ConsoleOutput("send sms");
int number = player.GetData(EntityData.PLAYER_PHONE);
SmsModel a = new SmsModel();
String poruka = sms.Trim();
a.message = poruka.Replace(Environment.NewLine," ");
a.date = DateTime.Now.ToString("MM'/'dd'/'yyyy hh':'mm':'ss");
Task.Factory.StartNew(() => {
List<SmsModel> poruke = GetSmsBetweenNumbers(number, target);
player.TriggerEvent("showSMSConversation", NAPI.Util.ToJson(poruke), number);
NAPI.Util.ConsoleOutput(NAPI.Util.ToJson(poruke).ToString());
foreach (Client i in NAPI.Pools.GetAllPlayers())
int broj = i.GetData(EntityData.PLAYER_PHONE);
List<SmsModel> poruke2 = GetSmsBetweenNumbers(target, number);
i.TriggerEvent("showSMSConversation", NAPI.Util.ToJson(poruke2), broj);
[RemoteEvent("addContact")]
public void addContactEvent(Client player, int broj, string name)
NAPI.Util.ConsoleOutput("add contact");
int number = player.GetData(EntityData.PLAYER_PHONE);
ContactModel a = new ContactModel();
String poruka = name.Trim();
a.contactName = poruka.Replace(Environment.NewLine, " ");
Task.Factory.StartNew(() => {
Database.AddNewContact(a);
player.TriggerEvent("RefreshContacts");
[RemoteEvent("phoneShowed")]
public void phoneShowedEvent(Client player)
player.PlayAnimation("amb@world_human_stand_mobile@male@text@base", "base", 49);
player.TriggerEvent("AttachObject", player, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
[RemoteEvent("phoneHided")]
public void phoneHided(Client player)
player.PlayAnimation("amb@world_human_stand_mobile@male@text@exit", "exit", 255);
player.TriggerEvent("AttachObject", player, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
player.TriggerEvent("DeattachObject", player);
player.TriggerEvent("AttachObject", player, 94130617, 28422, (float)-0.0100, (float)0, (float)0, (float)0, (float)0, (float)0);
player.TriggerEvent("DeattachObject", player);