Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <djson>
- #include <sscanf2>
- #include <zcmd>
- #undef MAX_PLAYERS
- #define MAX_SLOTS 500
- #define COLOR_WHITE 0xFFFFFFAA
- #define COLOR_RED 0xFF0000AA
- #define COLOR_GREEN 0x00FF00AA
- #define COLOR_GRAY 0xAFAFAFAA
- new playerName[MAX_SLOTS][MAX_PLAYER_NAME],
- bool:playerKnowPlayer[MAX_SLOTS][MAX_SLOTS],
- pMeetRequest[MAX_SLOTS], Text3D:playerID[MAX_SLOTS]
- ;
- public OnFilterScriptInit()
- {
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- for(new j = 0; j < MAX_SLOTS; j++)
- {
- ShowPlayerNameTagForPlayer(i, j, false);
- }
- }
- djson_GameModeInit();
- return 1;
- }
- public OnFilterScriptExit()
- {
- djson_GameModeExit();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new uStr[35];
- GetPlayerName(playerid, playerName[playerid], MAX_PLAYER_NAME);
- format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
- if(!fexist(uStr)) djCreateFile(uStr);
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- if(djInt(uStr, playerName[i]) == 1)
- {
- playerKnowPlayer[playerid][i] = true;
- playerKnowPlayer[i][playerid] = true;
- ShowPlayerNameTagForPlayer(playerid, i, true);
- ShowPlayerNameTagForPlayer(i, playerid, true);
- }
- else
- {
- djSetInt(uStr, playerName[i], 0);
- ShowPlayerNameTagForPlayer(playerid, i, false);
- ShowPlayerNameTagForPlayer(i, playerid, false);
- }
- }
- pMeetRequest[playerid] = -1;
- format(uStr, 35, "%d", playerid);
- playerID[playerid] = Create3DTextLabel(uStr, 0x00FF00AA, 0.0, 0.0, 0.0, 15, -1, 1);
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- new uStr[35];
- format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
- if(!fexist(uStr)) djCreateFile(uStr);
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- playerKnowPlayer[playerid][i] = false;
- playerKnowPlayer[i][playerid] = false;
- ShowPlayerNameTagForPlayer(playerid, i, false);
- ShowPlayerNameTagForPlayer(i, playerid, false);
- }
- pMeetRequest[playerid] = -1;
- Delete3DTextLabel(playerID[playerid]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- Attach3DTextLabelToPlayer(playerID[playerid], playerid, 0.0, 0.0, 1.5);
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- new Float:pPos[3], str[128];
- GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
- for(new i = 0; i < MAX_SLOTS; i++)
- {
- if(!IsPlayerConnected(i) || i == playerid || !IsPlayerInRangeOfPoint(i, 15, pPos[0], pPos[1], pPos[2])) continue;
- if(playerKnowPlayer[i][playerid])
- {
- format(str, 128, "%s: %s", playerName[playerid], text);
- SendClientMessage(i, COLOR_WHITE, str);
- }
- else
- {
- format(str, 128, "Person: %s", text);
- SendClientMessage(i, COLOR_WHITE, str);
- }
- }
- format(str, 128, "You: %s", text);
- SendClientMessage(playerid, COLOR_WHITE, str);
- return 0;
- }
- CMD:meetperson(playerid, params[])
- {
- new Float:pPos[3], pId, str[128];
- if(sscanf(params, "u", pId)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /meetp(erson) [playerid]");
- if(!IsPlayerConnected(pId)) return SendClientMessage(playerid, COLOR_GRAY, "* That player is not connected to the server");
- GetPlayerPos(pId, pPos[0], pPos[1], pPos[2]);
- if(!IsPlayerInRangeOfPoint(playerid, 3, pPos[0], pPos[1], pPos[2])) return SendClientMessage(playerid, COLOR_RED, "* You should stand near the person");
- if(playerKnowPlayer[playerid][pId]) return SendClientMessage(playerid, COLOR_RED, "What silly! You know him/her already...");
- if(pMeetRequest[playerid] == pId) return SendClientMessage(playerid, COLOR_GRAY, "Wait for his/her answer!");
- if(pMeetRequest[playerid] != -1) return SendClientMessage(playerid, COLOR_RED, "You can't talk to two persons at once, can you?");
- if(pMeetRequest[pId] != -1) return SendClientMessage(playerid, COLOR_RED, "Can't you see that he/she is already talking to someone? Tsss...");
- pMeetRequest[pId] = playerid;
- pMeetRequest[playerid] = pId;
- format(str, 128, "Person: Hi! I am %s. I would like to know you better, what's your name?", playerName[playerid]);
- SendClientMessage(pId, COLOR_WHITE, str);
- SendClientMessage(pId, COLOR_GRAY, "Walk away to ignore this, or use /fckoff. Use /acceptm(eeting) to tell your name");
- format(str, 128, "You: Hi! I am %s. I would like to know you better, what's your name?", playerName[playerid]);
- SendClientMessage(playerid, COLOR_WHITE, str);
- SendClientMessage(playerid, COLOR_GRAY, "Wait for his/her answer or use /cancelm(eeting)");
- return 1;
- }
- CMD:fckoff(playerid, params[])
- {
- new str[128];
- if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
- format(str, 128, "Person: Well %s, FUCK OFF.", playerName[pMeetRequest[playerid]]);
- SendClientMessage(pMeetRequest[playerid], COLOR_RED, str);
- format(str, 128, "You: Well %s, FUCK OFF.", playerName[pMeetRequest[playerid]]);
- SendClientMessage(playerid, COLOR_RED, str);
- SendClientMessage(playerid, COLOR_GRAY, "Meeting denied.");
- SendClientMessage(pMeetRequest[playerid], COLOR_GRAY, "Well, he/she clearly doesn't wanna tell his/her name.");
- pMeetRequest[playerid] = -1;
- pMeetRequest[pMeetRequest[playerid]] = -1;
- return 1;
- }
- CMD:cancelmeeting(playerid, params[])
- {
- if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
- SendClientMessage(pMeetRequest[playerid], COLOR_GRAY, "Person: You know what, never mind.");
- SendClientMessage(playerid, COLOR_GRAY, "You: You know what, never mind.");
- pMeetRequest[playerid] = -1;
- pMeetRequest[pMeetRequest[playerid]] = -1;
- return 1;
- }
- CMD:acceptmeeting(playerid, params[])
- {
- new str[128], uStr[35];
- if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
- format(str, 128, "Person: Hi %s. I am %s. Nice to meet you", playerName[pMeetRequest[playerid]], playerName[playerid]);
- SendClientMessage(pMeetRequest[playerid], COLOR_GREEN, str);
- format(str, 128, "You: Hi %s. I am %s. Nice to meet you", playerName[pMeetRequest[playerid]], playerName[playerid]);
- SendClientMessage(playerid, COLOR_GREEN, str);
- playerKnowPlayer[playerid][pMeetRequest[playerid]] = true;
- playerKnowPlayer[pMeetRequest[playerid]][playerid] = true;
- format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
- djSetInt(uStr, playerName[pMeetRequest[playerid]], 1);
- format(uStr, 35, "PKP/%s.ini", playerName[pMeetRequest[playerid]]);
- djSetInt(uStr, playerName[playerid], 1);
- ShowPlayerNameTagForPlayer(playerid, pMeetRequest[playerid], true);
- ShowPlayerNameTagForPlayer(pMeetRequest[playerid], playerid, true);
- pMeetRequest[playerid] = -1;
- pMeetRequest[pMeetRequest[playerid]] = -1;
- return 1;
- }
- CMD:acceptm(playerid, params[]) return cmd_acceptmeeting(playerid, params);
- CMD:cancelm(playerid, params[]) return cmd_cancelmeeting(playerid, params);
- CMD:meetp(playerid, params[]) return cmd_meetperson(playerid, params);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement