Guest User

Untitled

a guest
May 10th, 2015
1,202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.40 KB | None | 0 0
  1.  
  2. #define FILTERSCRIPT
  3.  
  4. #include < a_samp >
  5. #include < YSI\y_ini >
  6. #include < zcmd >
  7. #include < sscanf2 >
  8. #include < a_actor >
  9.  
  10. //------------------------------------------------------------------------------ [ Kreiranje actora ( varijable actora ) ]
  11. #define ACTORS  "Aktori/%d.ini"//                                                [ Falj za cuvanje Actora ]
  12. #define MAX_ACTOR 50
  13. enum AcInfo
  14. {
  15.     aSkin,
  16.     aVW,
  17.     Float: aPozX,
  18.     Float: aPozY,
  19.     Float: aPozZ,
  20.     Float: aRot
  21. }
  22. new ActorInfo[MAX_ACTOR][AcInfo];
  23. //------------------------------------------------------------------------------
  24. stock SendClientMessageF(playerid,color,fstring[],{Float, _}:...)
  25. {
  26.    new n=(numargs()-3)*4;
  27.    if(n)
  28.    {
  29.       new message[128],arg_start,arg_end;
  30.       #emit CONST.alt                fstring
  31.       #emit LCTRL                    5
  32.       #emit ADD
  33.       #emit STOR.S.pri               arg_start
  34.       #emit LOAD.S.alt               n
  35.       #emit ADD
  36.       #emit STOR.S.pri               arg_end
  37.       do
  38.       {
  39.          #emit LOAD.I
  40.          #emit PUSH.pri
  41.          arg_end-=4;
  42.          #emit LOAD.S.pri           arg_end
  43.       }
  44.       while(arg_end>arg_start);
  45.       #emit PUSH.S                   fstring
  46.       #emit PUSH.C                   255
  47.       #emit PUSH.ADR                 message
  48.       n+=4*3;
  49.       #emit PUSH.S                   n
  50.       #emit SYSREQ.C                 format
  51.       n+=4;
  52.       #emit LCTRL                    4
  53.       #emit LOAD.S.alt               n
  54.       #emit ADD
  55.       #emit SCTRL                    4
  56.       return SendClientMessage(playerid,color,message);
  57.    }
  58.    else return SendClientMessage(playerid,color,fstring);
  59. }
  60. public OnFilterScriptInit()
  61. {
  62. //------------------------------------------------------------------------------ [ Ucitavanje Actora ]
  63.     for(new a = 0; a < sizeof(ActorInfo); a++)
  64.     {
  65.         new aFile[80];
  66.         format(aFile,sizeof(aFile), ACTORS, a);
  67.         new Actor;
  68.         {
  69.             INI_ParseFile(aFile,"LoadActor", .bExtra = true, .extra = a);
  70.             {
  71.                 Actor = CreateActor(ActorInfo[a][aSkin], ActorInfo[a][aPozX], ActorInfo[a][aPozY], ActorInfo[a][aPozZ],0);
  72.                 SetActorFacingAngle(Actor, ActorInfo[a][aRot]);
  73.             }
  74.         }
  75.     }
  76.     return 1;
  77. }
  78.  
  79. public OnFilterScriptExit()
  80. {
  81.     for(new a = 0; a < sizeof(ActorInfo); a++) { SaveActor(a); }
  82.     return 1;
  83. }
  84. forward LoadActor(idactor, name[], value[]);
  85. public LoadActor(idactor, name[], value[])
  86. {
  87.     INI_Int("Skin",ActorInfo[idactor][aSkin]);
  88.     INI_Float("ApozX",ActorInfo[idactor][aPozX]);
  89.     INI_Float("ApozY",ActorInfo[idactor][aPozY]);
  90.     INI_Float("ApozZ",ActorInfo[idactor][aPozZ]);
  91.     INI_Float("APozA",ActorInfo[idactor][aRot]);
  92.     return 1;
  93. }
  94. stock SaveActor(idactor)
  95. {
  96.     new aFile[80];
  97.     format(aFile,sizeof(aFile), ACTORS, idactor);
  98.     new INI:File = INI_Open(aFile);
  99.     INI_WriteInt(File,"Skin",ActorInfo[idactor][aSkin]);
  100.     INI_WriteFloat(File,"ApozX",ActorInfo[idactor][aPozX]);
  101.     INI_WriteFloat(File,"ApozY",ActorInfo[idactor][aPozY]);
  102.     INI_WriteFloat(File,"ApozZ",ActorInfo[idactor][aPozZ]);
  103.     INI_WriteFloat(File,"APozA",ActorInfo[idactor][aRot]);
  104.     INI_Close(File);
  105.     return 1;
  106. }
  107. CMD:actorcreate(playerid, params[])//                                            [ /actorcreate ]
  108. {
  109.     #pragma unused params
  110.     if(IsPlayerAdmin(playerid))
  111.     {
  112.         new Float: X, Float: Y, Float: Z, Float: Rot, skin, actorid, factor[80]; GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, Rot);
  113.         if(sscanf(params, "ii", actorid, skin)) return SendClientMessage(playerid,-1,"Koristi: /actorcreate [Actor ID], [Actor Skin]");
  114.         if(actorid >= MAX_ACTOR) return SendClientMessageF(playerid,-1,"ERROR: Maksimalan broj actora je [ %d ]/ Maximal number of actor id is [ %d ] ",MAX_ACTOR,MAX_ACTOR);
  115.         format(factor,sizeof(factor), ACTORS, actorid);
  116.         if(fexist(factor)) return SendClientMessage(playerid,-1,"ERROR: Actor sa tim ID-em vec postoji !/ This Actor ID was used !");
  117.         if(skin >= 311 || skin < 0) return SendClientMessage(playerid,-1,"ERROR: Nepravilan id skina !/ Invalid skin id ! [0,350]");
  118.         if(actorid < 0) return SendClientMessage(playerid,-1,"ERROR: ID Actora ne moze biti manji od 0/ Actor id cannot be under 0");
  119.         {
  120.             SetPlayerPos(playerid, X,Y+2,Z);
  121.             ActorInfo[actorid][aSkin] = skin;
  122.             ActorInfo[actorid][aPozX] = X;
  123.             ActorInfo[actorid][aPozY] = Y;
  124.             ActorInfo[actorid][aPozZ] = Z;
  125.             ActorInfo[actorid][aRot] = Rot;
  126.             CreateActor(skin,X,Y,Z,Rot);
  127.             SaveActor(actorid);
  128.         }
  129.     }
  130.     return 1;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment