Advertisement
Tavi33

SA:MP Graffiti System by Tavi

Feb 4th, 2014
1,960
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.79 KB | None | 0 0
  1. /*
  2.                     Graffiti System by Tavi (2012)
  3.                     ==============================
  4.        
  5. Functions
  6. ================================================================================
  7.        
  8. native CreateGraffiti(playerid, Float:gX, Float:gy, Float:gZ, Float:gA, gText[], gFont[], gSize, gBold, gColor[]);
  9. native DeleteGraffiti(graffid);
  10.  
  11. ================================================================================
  12.  
  13. */
  14.  
  15. #include <a_samp>
  16.  
  17. #define MAX_GRAFFS 100
  18.  
  19. enum t_GraffSystem
  20. {
  21.     t_gObject,
  22.     Float:t_gX,
  23.     Float:t_gY,
  24.     Float:t_gZ,
  25. };
  26. new Graff[MAX_GRAFFS][t_GraffSystem];
  27. new t_gCurrent[MAX_PLAYERS];
  28.  
  29. stock CreateGraffiti(playerid, Float:gX, Float:gY, Float:gZ, Float:gA, gText[], gFont[], gSize, gBold, gColor[])
  30. {
  31.     new t_gID = EmptyGraff();
  32.     if(t_gID == -1) { print("MAX_GRAFFS too small"); return -1; }
  33.     //
  34.     Graff[t_gID][t_gObject] = CreateObject(19353, gX, gY, gZ, 0.0, 0.0, gA-90.0);
  35.     //SetObjectMaterial(Graff[t_gID][t_gObject], 0, 0, "none", "none", 0);
  36.     SetObjectMaterialText(Graff[t_gID][t_gObject], gText, 0, OBJECT_MATERIAL_SIZE_256x128,\
  37.     gFont, gSize, gBold, HexToInt(gColor), 0x00000000, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
  38.     //
  39.     Graff[t_gID][t_gX] = gX;
  40.     Graff[t_gID][t_gY] = gY;
  41.     Graff[t_gID][t_gZ] = gZ;
  42.     t_gCurrent[playerid] = t_gID;
  43.     EditObject(playerid, Graff[t_gID][t_gObject]);
  44.     //printf("%s - %d", gColor, HexToInt(gColor));
  45.     return t_gID;
  46. }
  47.  
  48. stock DeleteGraffiti(graffid)
  49. {
  50.     DestroyObject(Graff[graffid][t_gObject]);
  51.     Graff[t_gObject] = 0;
  52.     Graff[t_gX] = 0;
  53.     Graff[t_gY] = 0;
  54.     Graff[t_gZ] = 0;
  55. }
  56.  
  57. stock EmptyGraff()
  58. {
  59.     for(new i = 0; i != MAX_GRAFFS; i++)
  60.     {
  61.         if(Graff[i][t_gObject] == 0)
  62.         {
  63.             return i;
  64.         }
  65.     }
  66.     return -1;
  67. }
  68.  
  69. HexToInt(string[]){
  70.    if (string[0]==0) return 0;
  71.    new i;
  72.    new cur=1;
  73.    new res=0;
  74.    for (i=strlen(string);i>0;i--) {
  75.      if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  76.      cur=cur*16;
  77.    }
  78.    return res;
  79.  }
  80.  
  81. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  82. {
  83.     if(response == EDIT_RESPONSE_FINAL)
  84.     {
  85.         new g = t_gCurrent[playerid];
  86.         MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
  87.         Graff[g][t_gX] = fX;
  88.         Graff[g][t_gY] = fY;
  89.         Graff[g][t_gZ] = fZ;
  90.     }
  91.     CallLocalFunction("t_gOnPlayerEditObject", "iiiiffffff", playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  92.     return 1;
  93. }
  94.  
  95. #if defined _ALS_OnPlayerEditObject
  96.     #undef OnPlayerEditObject
  97. #else
  98.     #define _ALS_OnPlayerEditObject
  99. #endif
  100.  
  101. #define OnPlayerEditObject t_gOnPlayerEditObject
  102.  
  103. forward t_gOnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement