Advertisement
Gun22

CloudRPG - Graffiti "rendszer"

Aug 17th, 2014
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.44 KB | None | 0 0
  1. #include <a_samp>
  2. #include <streamer>
  3.  
  4. enum graff {
  5.     pgText[30],
  6.     pgColor,
  7.     pgBold,
  8.     pgSize,
  9.     pgSpraying,
  10.     bool:pgCommand
  11. }
  12. new pGraff[MAX_PLAYERS][graff];
  13.  
  14. #define MAX_GRAFFS 100
  15. #define DIALOG_SPRAY 8000
  16.  
  17. enum GraffSystem
  18. {
  19.     Van,
  20.     gSQLID,
  21.     Object,
  22.     gText[30],
  23.     Float:X,
  24.     Float:Y,
  25.     Float:Z,
  26.     Float:RotX,
  27.     Float:RotY,
  28.     Float:RotZ,
  29.     gFont[30],
  30.     gColor,
  31.     gSize,
  32.     gOwner
  33. };
  34. new Graff[MAX_GRAFFS][GraffSystem];
  35.  
  36. public OnFilterScriptExit()
  37. {
  38.     for(new i = 0; i < MAX_GRAFFS; i++)
  39.     {
  40.         if(Graff[i][Van] == 0) continue;
  41.         DestroyDynamicObject(Graff[i][Object]);
  42.         printf("[GRAFFITI]ID#%d törölve", i);
  43.         for(new a; GraffSystem:a < GraffSystem; a++) Graff[i][GraffSystem:a] = -1;
  44.     }
  45.     return 1;
  46. }
  47.  
  48. public OnPlayerCommandText(playerid, cmdtext[])
  49. {
  50.     if(!strcmp(cmdtext, "/asda4w66rtfgh", true))
  51.     {
  52.         SelectObject(playerid);
  53.         return 1;
  54.     }
  55.     if(!strcmp(cmdtext, "/spray", true))
  56.     {
  57.         if(!IsPlayerConnected(playerid)) return 1;
  58.         if(!pGraff[playerid][pgCommand])
  59.         {
  60.             pGraff[playerid][pgCommand] = true;
  61.             SendClientMessage(playerid, -1, "Graffiti mód bekapcsolva! 5 másodpercig fújnod kell a falat graffiti lerakásához.");
  62.         }
  63.         else
  64.         {
  65.             pGraff[playerid][pgCommand] = false;
  66.             SendClientMessage(playerid, -1, "Graffiti mód kikapcsolva!");
  67.         }
  68.         return 1;
  69.     }
  70.     return 0;
  71. }
  72.  
  73. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  74. {
  75.     if(newkeys & KEY_FIRE && GetPlayerWeapon(playerid) == 41)
  76.     {
  77.         if(pGraff[playerid][pgCommand])
  78.         {
  79.             SetTimerEx("SpreFujas", 5000, false, "i", playerid);
  80.         }
  81.     }
  82.     return 1;
  83. }
  84.  
  85. forward SpreFujas(playerid);
  86. public SpreFujas(playerid)
  87. {
  88.     new keys, ud, lr;
  89.     GetPlayerKeys(playerid, keys, ud, lr);
  90.    
  91.     if(keys == KEY_FIRE && GetPlayerWeapon(playerid) == 41)
  92.     {
  93.         SendClientMessage(playerid, 0xFF6347AA, "Lehetőleg olyan helyre rakd, ahol nem gátol senkit a mozgásban, mivel ez szinte láthatatlan objekt!");
  94.         ShowPlayerDialog(playerid, DIALOG_SPRAY, DIALOG_STYLE_INPUT, "{FFFFFF}Graffiti rendszer|{9ACD32}Szöveg", "Írd be a felírni kívánt üzenetet:", "Rendben", "Bezár");
  95.         pGraff[playerid][pgCommand] = false;
  96.     }
  97.     return 1;
  98. }
  99.  
  100. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  101. {
  102.     if(response == EDIT_RESPONSE_UPDATE)
  103.     {
  104.         if(pGraff[playerid][pgSpraying] > 0)
  105.         {
  106.             MoveDynamicObject(objectid, x, y, z, 10.0, rx, ry, rz);
  107.         }
  108.     }
  109.     if(response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL)
  110.     {
  111.         if(pGraff[playerid][pgSpraying] > 0)
  112.         {
  113.             SetDynamicObjectPos(objectid, x, y, z);
  114.             SetDynamicObjectRot(objectid, rx, ry, rz);
  115.             new g = pGraff[playerid][pgSpraying];
  116.             Graff[g][X] = x;
  117.             Graff[g][Y] = y;
  118.             Graff[g][Z] = z;
  119.             Graff[g][RotX] = rx;
  120.             Graff[g][RotY] = ry;
  121.             Graff[g][RotZ] = rz;
  122.             pGraff[playerid][pgSpraying] = 0;
  123.         }
  124.     }
  125. }
  126.  
  127. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  128. {
  129.     switch(dialogid)
  130.     {
  131.         case DIALOG_SPRAY:
  132.         {
  133.             if(response)
  134.             {
  135.                 if(strlen(inputtext) > 30)
  136.                 {
  137.                     ShowPlayerDialog(playerid, DIALOG_SPRAY, DIALOG_STYLE_INPUT, "{FFFFFF}Graffiti rendszer|{9ACD32}Szöveg", "A szöveg túl hosszú\nÍrd be a felírni kívánt üzenetet:", "Rendben", "Bezár");
  138.                     return 1;
  139.                 }
  140.                 strmid(pGraff[playerid][pgText], inputtext, 0, strlen(inputtext), 255);
  141.                 ShowPlayerDialog(playerid, DIALOG_SPRAY+1, DIALOG_STYLE_LIST, "{FFFFFF}Graffiti rendszer|{9ACD32}Betűszín", "Piros\nKék\nFehér\nZöld\nRózsaszín\nSárga\nFekete", "Rendben", "Bezár");
  142.             }
  143.         }
  144.         case DIALOG_SPRAY+1:
  145.         {
  146.             if(response)
  147.             {
  148.                 pGraff[playerid][pgColor] = listitem;
  149.                 ShowPlayerDialog(playerid, DIALOG_SPRAY+2, DIALOG_STYLE_LIST, "{FFFFFF}Graffiti rendszer|{9ACD32}Betűstílus", "Alap\nFélkövér", "Rendben", "Bezár");
  150.             }
  151.         }
  152.         case DIALOG_SPRAY+2:
  153.         {
  154.             if(response)
  155.             {
  156.                 pGraff[playerid][pgBold] = listitem;
  157.                 ShowPlayerDialog(playerid, DIALOG_SPRAY+3, DIALOG_STYLE_INPUT, "{FFFFFF}Graffiti rendszer|{9ACD32}Betűméret", "Írd be a betűméretet:", "Rendben", "Bezár");
  158.             }
  159.         }
  160.         case DIALOG_SPRAY+3:
  161.         {
  162.             if(response)
  163.             {
  164.                 pGraff[playerid][pgSize] = strval(inputtext);
  165.                 ShowPlayerDialog(playerid, DIALOG_SPRAY+4, DIALOG_STYLE_LIST, "{FFFFFF}Graffiti rendszer|{9ACD32}Betűtípus", "Arial\nComic Sans MS\nItalic\nCourier", "Rendben", "Bezár");
  166.             }
  167.         }
  168.         case DIALOG_SPRAY+4:
  169.         {
  170.             if(response)
  171.             {
  172.                 new Float:gpx,Float:gpy,Float:gpz, szin[16], betu[16];
  173.                 GetPlayerPos(playerid, gpx, gpy, gpz);
  174.                 SetPlayerPos(playerid, gpx, gpy, gpz+1.0);
  175.                 switch(pGraff[playerid][pgColor])
  176.                 {
  177.                     case 0:
  178.                     {
  179.                         format(szin, sizeof(szin), "0xFFFF0000");
  180.                     }
  181.                     case 1:
  182.                     {
  183.                         format(szin, sizeof(szin), "0xFF0088FF");
  184.                     }
  185.                     case 2:
  186.                     {
  187.                         format(szin, sizeof(szin), "0xFFFFFFFF");
  188.                     }
  189.                     case 3:
  190.                     {
  191.                         format(szin, sizeof(szin), "0xFF09AD00");
  192.                     }
  193.                     case 4:
  194.                     {
  195.                         format(szin, sizeof(szin), "0xFFC200DB");
  196.                     }
  197.                     case 5:
  198.                     {
  199.                         format(szin, sizeof(szin), "0xFFFFFB00");
  200.                     }
  201.                     case 6:
  202.                     {
  203.                         format(szin, sizeof(szin), "0xFF000000");
  204.                     }
  205.                     default:
  206.                     {
  207.                         format(szin, sizeof(szin), "0xFF000000");
  208.                     }
  209.                 }
  210.                 switch(listitem)
  211.                 {
  212.                     case 0:
  213.                     {
  214.                         betu = "Arial";
  215.                     }
  216.                     case 1:
  217.                     {
  218.                         betu = "Comic Sans MS";
  219.                     }
  220.                     case 2:
  221.                     {
  222.                         betu = "Italic";
  223.                     }
  224.                     case 3:
  225.                     {
  226.                         betu = "Courier";
  227.                     }
  228.                     default:
  229.                     {
  230.                         betu = "Arial";
  231.                     }
  232.                 }
  233.                
  234.                 for(new i = 1; i < MAX_GRAFFS; i++)
  235.                 {
  236.                     if(Graff[i][Van] == 0)
  237.                     {
  238.                         Graff[i][gOwner] = playerid;
  239.                         new Float:angle;
  240.                         Graff[i][Van] = 1;
  241.                         GetPlayerPos(playerid, Graff[i][X], Graff[i][Y], Graff[i][Z]);
  242.                         GetPlayerFacingAngle(playerid, angle);
  243.                        
  244.                         Graff[i][Object] = CreateDynamicObject(19353, Graff[i][X], Graff[i][Y], Graff[i][Z], 0.0, 0.0, angle-90.0);
  245.                         SetDynamicObjectMaterial(Graff[i][Object], 0, 0, "none", "none", 0);
  246.                         SetDynamicObjectMaterialText(Graff[i][Object], 0, pGraff[playerid][pgText], OBJECT_MATERIAL_SIZE_256x128, betu, pGraff[playerid][pgSize], pGraff[playerid][pgBold], HexToInt(szin), 0x00000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  247.                        
  248.                         strmid(Graff[i][gText], pGraff[playerid][pgText], 0, strlen(pGraff[playerid][pgText]), 255);
  249.                         strmid(Graff[i][gFont], betu, 0, strlen(betu), 255);
  250.                         Graff[i][gSize] = pGraff[playerid][pgSize];
  251.                         Graff[i][gColor] = pGraff[playerid][pgColor];
  252.                        
  253.                         pGraff[playerid][pgSpraying] = i;
  254.                         Streamer_UpdateEx(playerid, Graff[i][X], Graff[i][Y], Graff[i][Z], GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
  255.                         EditDynamicObject(playerid, Graff[i][Object]);
  256.                         SetPlayerPos(playerid, Graff[i][X]+2 , Graff[i][Y], Graff[i][Z]);
  257.                         return 1;
  258.                     }
  259.                 }
  260.             }
  261.         }
  262.     }
  263.     return 1;
  264. }
  265.  
  266. HexToInt(string[])
  267. {
  268.     if (string[0]==0) return 0;
  269.     new i;
  270.     new cur=1;
  271.     new res=0;
  272.     for (i=strlen(string);i>0;i--) {
  273.         if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  274.         cur=cur*16;
  275.     }
  276.     return res;
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement