Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- /*******************************************************************************
- Dynamic Actor Creator
- Version: v0.1
- Scripted by: Acke
- //------------------------------------------------------------------------------
- * Update v0.1 : Dodana mogucnost postavljanja Virtual Worlda na Actora
- */
- #include < a_samp >
- #include < YSI\y_ini >
- #include < zcmd >
- #include < sscanf2 >
- #include < a_actor >
- //------------------------------------------------------------------------------ [ Kreiranje actora ( varijable actora ) ]
- #define ACTORS "Aktori/%d.ini"// [ Falj za cuvanje Actora ]
- #define MAX_ACTOR 50
- enum AcInfo
- {
- aSkin,
- aVW,
- Float: aPozX,
- Float: aPozY,
- Float: aPozZ,
- Float: aRot,
- aAnimCat[20],
- aAnimName[20]
- }
- new ActorInfo[MAX_ACTOR][AcInfo];
- //------------------------------------------------------------------------------
- stock SendClientMessageF(playerid,color,fstring[],{Float, _}:...)
- {
- new n=(numargs()-3)*4;
- if(n)
- {
- new message[128],arg_start,arg_end;
- #emit CONST.alt fstring
- #emit LCTRL 5
- #emit ADD
- #emit STOR.S.pri arg_start
- #emit LOAD.S.alt n
- #emit ADD
- #emit STOR.S.pri arg_end
- do
- {
- #emit LOAD.I
- #emit PUSH.pri
- arg_end-=4;
- #emit LOAD.S.pri arg_end
- }
- while(arg_end>arg_start);
- #emit PUSH.S fstring
- #emit PUSH.C 255
- #emit PUSH.ADR message
- n+=4*3;
- #emit PUSH.S n
- #emit SYSREQ.C format
- n+=4;
- #emit LCTRL 4
- #emit LOAD.S.alt n
- #emit ADD
- #emit SCTRL 4
- return SendClientMessage(playerid,color,message);
- }
- else return SendClientMessage(playerid,color,fstring);
- }
- public OnFilterScriptInit()
- {
- //------------------------------------------------------------------------------ [ Ucitavanje Actora ]
- for(new a = 0; a < sizeof(ActorInfo); a++)
- {
- new aFile[43];
- format(aFile,sizeof(aFile), ACTORS, a);
- {
- INI_ParseFile(aFile,"LoadActor", .bExtra = true, .extra = a);
- {
- CreateActor(ActorInfo[a][aSkin], ActorInfo[a][aPozX], ActorInfo[a][aPozY], ActorInfo[a][aPozZ],ActorInfo[a][aRot]); SetActorVirtualWorld(a, ActorInfo[a][aVW]);
- }
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new a = 0; a < sizeof(ActorInfo); a++) { SaveActor(a); }
- return 1;
- }
- forward LoadActor(idactor, name[], value[]);
- public LoadActor(idactor, name[], value[])
- {
- INI_Int("Skin",ActorInfo[idactor][aSkin]);
- INI_Int("VW",ActorInfo[idactor][aVW]);
- INI_Float("ApozX",ActorInfo[idactor][aPozX]);
- INI_Float("ApozY",ActorInfo[idactor][aPozY]);
- INI_Float("ApozZ",ActorInfo[idactor][aPozZ]);
- INI_Float("APozA",ActorInfo[idactor][aRot]);
- INI_String("AnimCat",ActorInfo[idactor][aAnimCat],20);
- INI_String("AnimName",ActorInfo[idactor][aAnimName],20);
- return 1;
- }
- stock SaveActor(idactor)
- {
- new aFile[43];
- format(aFile,sizeof(aFile), ACTORS, idactor);
- new INI:File = INI_Open(aFile);
- INI_WriteInt(File,"Skin",ActorInfo[idactor][aSkin]);
- INI_WriteInt(File,"VW",ActorInfo[idactor][aVW]);
- INI_WriteFloat(File,"ApozX",ActorInfo[idactor][aPozX]);
- INI_WriteFloat(File,"ApozY",ActorInfo[idactor][aPozY]);
- INI_WriteFloat(File,"ApozZ",ActorInfo[idactor][aPozZ]);
- INI_WriteFloat(File,"APozA",ActorInfo[idactor][aRot]);
- INI_WriteString(File,"AnimCat",ActorInfo[idactor][aAnimCat]);
- INI_WriteString(File,"AnimName",ActorInfo[idactor][aAnimName]);
- INI_Close(File);
- return 1;
- }
- CMD:actorcreate(playerid, params[])// [ /actorcreate ]
- {
- #pragma unused params
- if(IsPlayerAdmin(playerid))
- {
- new Float: X, Float: Y, Float: Z, Float: Rot, skin, actorid, actorvw, factor[80]; GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, Rot);
- if(sscanf(params, "iii", actorid, skin, actorvw)) return SendClientMessage(playerid,-1,"Koristi: /actorcreate [Actor ID], [Actor Skin ID] [Actor VW ID]");
- 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);
- format(factor,sizeof(factor), ACTORS, actorid);
- if(fexist(factor)) return SendClientMessage(playerid,-1,"ERROR: Actor sa tim ID-em vec postoji !/ This Actor ID was used !");
- if(skin >= 311 || skin < 0) return SendClientMessage(playerid,-1,"ERROR: Nepravilan id skina !/ Invalid skin id ! [0,350]");
- if(actorid < 0) return SendClientMessage(playerid,-1,"ERROR: ID Actora ne moze biti manji od 0/ Actor id cannot be under 0");
- {
- SetPlayerPos(playerid, X,Y+2,Z);
- ActorInfo[actorid][aSkin] = skin;
- ActorInfo[actorid][aVW] = actorvw;
- ActorInfo[actorid][aPozX] = X;
- ActorInfo[actorid][aPozY] = Y;
- ActorInfo[actorid][aPozZ] = Z;
- ActorInfo[actorid][aRot] = Rot;
- CreateActor(skin,X,Y,Z,Rot);
- SetActorVirtualWorld(actorid, actorvw);
- SaveActor(actorid);
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment