Advertisement
Kwarde

PKP [1.0.2]

Jul 8th, 2011
799
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.84 KB | None | 0 0
  1. #include <a_samp>
  2. #include <djson>
  3. #include <sscanf2>
  4. #include <zcmd>
  5.  
  6. #undef MAX_PLAYERS
  7. #define MAX_SLOTS   500
  8.  
  9. #define COLOR_WHITE 0xFFFFFFAA
  10. #define COLOR_RED   0xFF0000AA
  11. #define COLOR_GREEN 0x00FF00AA
  12. #define COLOR_GRAY  0xAFAFAFAA
  13.  
  14. new playerName[MAX_SLOTS][MAX_PLAYER_NAME],
  15.     bool:playerKnowPlayer[MAX_SLOTS][MAX_SLOTS],
  16.     pMeetRequest[MAX_SLOTS], Text3D:playerID[MAX_SLOTS]
  17. ;
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     for(new i = 0; i < MAX_SLOTS; i++)
  22.     {
  23.         for(new j = 0; j < MAX_SLOTS; j++)
  24.         {
  25.             ShowPlayerNameTagForPlayer(i, j, false);
  26.         }
  27.     }
  28.     djson_GameModeInit();
  29.     return 1;
  30. }
  31.  
  32. public OnFilterScriptExit()
  33. {
  34.     djson_GameModeExit();
  35.     return 1;
  36. }
  37.  
  38. public OnPlayerConnect(playerid)
  39. {
  40.     new uStr[35];
  41.     GetPlayerName(playerid, playerName[playerid], MAX_PLAYER_NAME);
  42.    
  43.     format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
  44.     if(!fexist(uStr)) djCreateFile(uStr);
  45.  
  46.     for(new i = 0; i < MAX_SLOTS; i++)
  47.     {
  48.         if(!IsPlayerConnected(i)) continue;
  49.         if(djInt(uStr, playerName[i]) == 1)
  50.         {
  51.             playerKnowPlayer[playerid][i] = true;
  52.             playerKnowPlayer[i][playerid] = true;
  53.             ShowPlayerNameTagForPlayer(playerid, i, true);
  54.             ShowPlayerNameTagForPlayer(i, playerid, true);
  55.         }
  56.         else
  57.         {
  58.             djSetInt(uStr, playerName[i], 0);
  59.             ShowPlayerNameTagForPlayer(playerid, i, false);
  60.             ShowPlayerNameTagForPlayer(i, playerid, false);
  61.         }
  62.     }
  63.     pMeetRequest[playerid] = -1;
  64.    
  65.     format(uStr, 35, "%d", playerid);
  66.     playerID[playerid] = Create3DTextLabel(uStr, 0x00FF00AA, 0.0, 0.0, 0.0, 15, -1, 1);
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerDisconnect(playerid)
  71. {
  72.     new uStr[35];
  73.     format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
  74.     if(!fexist(uStr)) djCreateFile(uStr);
  75.  
  76.     for(new i = 0; i < MAX_SLOTS; i++)
  77.     {
  78.         playerKnowPlayer[playerid][i] = false;
  79.         playerKnowPlayer[i][playerid] = false;
  80.         ShowPlayerNameTagForPlayer(playerid, i, false);
  81.         ShowPlayerNameTagForPlayer(i, playerid, false);
  82.     }
  83.     pMeetRequest[playerid] = -1;
  84.     Delete3DTextLabel(playerID[playerid]);
  85.     return 1;
  86. }
  87.  
  88. public OnPlayerSpawn(playerid)
  89. {
  90.     Attach3DTextLabelToPlayer(playerID[playerid], playerid, 0.0, 0.0, 1.5);
  91.     return 1;
  92. }
  93.  
  94. public OnPlayerText(playerid, text[])
  95. {
  96.     new Float:pPos[3], str[128];
  97.     GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
  98.     for(new i = 0; i < MAX_SLOTS; i++)
  99.     {
  100.         if(!IsPlayerConnected(i) || i == playerid || !IsPlayerInRangeOfPoint(i, 15, pPos[0], pPos[1], pPos[2])) continue;
  101.         if(playerKnowPlayer[i][playerid])
  102.         {
  103.             format(str, 128, "%s: %s", playerName[playerid], text);
  104.             SendClientMessage(i, COLOR_WHITE, str);
  105.         }
  106.         else
  107.         {
  108.             format(str, 128, "Person: %s", text);
  109.             SendClientMessage(i, COLOR_WHITE, str);
  110.         }
  111.     }
  112.     format(str, 128, "You: %s", text);
  113.     SendClientMessage(playerid, COLOR_WHITE, str);
  114.     return 0;
  115. }
  116.  
  117. CMD:meetperson(playerid, params[])
  118. {
  119.     new Float:pPos[3], pId, str[128];
  120.     if(sscanf(params, "u", pId)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /meetp(erson) [playerid]");
  121.     if(!IsPlayerConnected(pId)) return SendClientMessage(playerid, COLOR_GRAY, "* That player is not connected to the server");
  122.     GetPlayerPos(pId, pPos[0], pPos[1], pPos[2]);
  123.     if(!IsPlayerInRangeOfPoint(playerid, 3, pPos[0], pPos[1], pPos[2])) return SendClientMessage(playerid, COLOR_RED, "* You should stand near the person");
  124.     if(playerKnowPlayer[playerid][pId]) return SendClientMessage(playerid, COLOR_RED, "What silly! You know him/her already...");
  125.     if(pMeetRequest[playerid] == pId) return SendClientMessage(playerid, COLOR_GRAY, "Wait for his/her answer!");
  126.     if(pMeetRequest[playerid] != -1) return SendClientMessage(playerid, COLOR_RED, "You can't talk to two persons at once, can you?");
  127.     if(pMeetRequest[pId] != -1) return SendClientMessage(playerid, COLOR_RED, "Can't you see that he/she is already talking to someone? Tsss...");
  128.     pMeetRequest[pId] = playerid;
  129.     pMeetRequest[playerid] = pId;
  130.     format(str, 128, "Person: Hi! I am %s. I would like to know you better, what's your name?", playerName[playerid]);
  131.     SendClientMessage(pId, COLOR_WHITE, str);
  132.     SendClientMessage(pId, COLOR_GRAY, "Walk away to ignore this, or use /fckoff. Use /acceptm(eeting) to tell your name");
  133.     format(str, 128, "You: Hi! I am %s. I would like to know you better, what's your name?", playerName[playerid]);
  134.     SendClientMessage(playerid, COLOR_WHITE, str);
  135.     SendClientMessage(playerid, COLOR_GRAY, "Wait for his/her answer or use /cancelm(eeting)");
  136.     return 1;
  137. }
  138.  
  139. CMD:fckoff(playerid, params[])
  140. {
  141.     new str[128];
  142.     if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
  143.     format(str, 128, "Person: Well %s, FUCK OFF.", playerName[pMeetRequest[playerid]]);
  144.     SendClientMessage(pMeetRequest[playerid], COLOR_RED, str);
  145.     format(str, 128, "You: Well %s, FUCK OFF.", playerName[pMeetRequest[playerid]]);
  146.     SendClientMessage(playerid, COLOR_RED, str);
  147.     SendClientMessage(playerid, COLOR_GRAY, "Meeting denied.");
  148.     SendClientMessage(pMeetRequest[playerid], COLOR_GRAY, "Well, he/she clearly doesn't wanna tell his/her name.");
  149.     pMeetRequest[playerid] = -1;
  150.     pMeetRequest[pMeetRequest[playerid]] = -1;
  151.     return 1;
  152. }
  153.  
  154. CMD:cancelmeeting(playerid, params[])
  155. {
  156.     if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
  157.     SendClientMessage(pMeetRequest[playerid], COLOR_GRAY, "Person: You know what, never mind.");
  158.     SendClientMessage(playerid, COLOR_GRAY, "You: You know what, never mind.");
  159.     pMeetRequest[playerid] = -1;
  160.     pMeetRequest[pMeetRequest[playerid]] = -1;
  161.     return 1;
  162. }
  163.  
  164. CMD:acceptmeeting(playerid, params[])
  165. {
  166.     new str[128], uStr[35];
  167.     if(pMeetRequest[playerid] == -1) return SendClientMessage(playerid, COLOR_GRAY, "You are currently not meeting someone.");
  168.     format(str, 128, "Person: Hi %s. I am %s. Nice to meet you", playerName[pMeetRequest[playerid]], playerName[playerid]);
  169.     SendClientMessage(pMeetRequest[playerid], COLOR_GREEN, str);
  170.     format(str, 128, "You: Hi %s. I am %s. Nice to meet you", playerName[pMeetRequest[playerid]], playerName[playerid]);
  171.     SendClientMessage(playerid, COLOR_GREEN, str);
  172.     playerKnowPlayer[playerid][pMeetRequest[playerid]] = true;
  173.     playerKnowPlayer[pMeetRequest[playerid]][playerid] = true;
  174.     format(uStr, 35, "PKP/%s.ini", playerName[playerid]);
  175.     djSetInt(uStr, playerName[pMeetRequest[playerid]], 1);
  176.     format(uStr, 35, "PKP/%s.ini", playerName[pMeetRequest[playerid]]);
  177.     djSetInt(uStr, playerName[playerid], 1);
  178.     ShowPlayerNameTagForPlayer(playerid, pMeetRequest[playerid], true);
  179.     ShowPlayerNameTagForPlayer(pMeetRequest[playerid], playerid, true);
  180.     pMeetRequest[playerid] = -1;
  181.     pMeetRequest[pMeetRequest[playerid]] = -1;
  182.     return 1;
  183. }
  184.  
  185. CMD:acceptm(playerid, params[]) return cmd_acceptmeeting(playerid, params);
  186. CMD:cancelm(playerid, params[]) return cmd_cancelmeeting(playerid, params);
  187. CMD:meetp(playerid, params[]) return cmd_meetperson(playerid, params);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement