Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < YSI\y_ini >
- #include < YSI\y_commands >
- #include < sscanf2 >
- #define MAX_DRVECE 50
- #define DRVO_FILE "/Drva/%d.ini"
- #define SCM SendClientMessage
- // 19315
- enum jInfo {
- Float:dPosX,
- Float:dPosY,
- Float:dPosZ,
- Float:dRotX,
- Float:dRotY,
- Float:dRotZ,
- Float:sPosX,
- Float:sPosY,
- Float:sPosZ,
- Float:sRotX,
- Float:sRotY,
- Float:sRotZ,
- Float:CP1X,
- Float:CP1Y,
- Float:CP1Z,
- Float:CP2X,
- Float:CP2Y,
- Float:CP2Z,
- Float:CP3X,
- Float:CP3Y,
- Float:CP3Z,
- dObjID,
- bool:dSruseno,
- dID
- }
- new DrvoInfo[ MAX_DRVECE ][ jInfo ], KreiraDrvo[ MAX_PLAYERS ], bool:KreiraPaloDrvo[ MAX_PLAYERS ], SeceDrvo[ MAX_PLAYERS ], bool:IsekoDrvo[ MAX_PLAYERS ], KreiraCP[ MAX_PLAYERS ], SeceDrvoUKomade[ MAX_PLAYERS ];
- forward OcitajDrvo(id, name[], value[]);
- public OcitajDrvo(id, name[], value[]) {
- INI_Float("Lokacija_X", DrvoInfo[ id ][ dPosX ]);
- INI_Float("Lokacija_Y", DrvoInfo[ id ][ dPosY ]);
- INI_Float("Lokacija_Z", DrvoInfo[ id ][ dPosZ ]);
- INI_Float("Rotacija_X", DrvoInfo[ id ][ dRotX ]);
- INI_Float("Rotacija_Y", DrvoInfo[ id ][ dRotY ]);
- INI_Float("Rotacija_Z", DrvoInfo[ id ][ dRotZ ]);
- INI_Float("Palo_Lokacija_X", DrvoInfo[ id ][ sPosX ]);
- INI_Float("Palo_Lokacija_Y", DrvoInfo[ id ][ sPosY ]);
- INI_Float("Palo_Lokacija_Z", DrvoInfo[ id ][ sPosZ ]);
- INI_Float("Palo_Rotacija_X", DrvoInfo[ id ][ sRotX ]);
- INI_Float("Palo_Rotacija_Y", DrvoInfo[ id ][ sRotY ]);
- INI_Float("Palo_Rotacija_Z", DrvoInfo[ id ][ sRotZ ]);
- INI_Float("Checkpoint1_X", DrvoInfo[ id ][ CP1X ]);
- INI_Float("Checkpoint1_Y", DrvoInfo[ id ][ CP1Y ]);
- INI_Float("Checkpoint1_Z", DrvoInfo[ id ][ CP1Z ]);
- INI_Float("Checkpoint2_X", DrvoInfo[ id ][ CP2X ]);
- INI_Float("Checkpoint2_Y", DrvoInfo[ id ][ CP2Y ]);
- INI_Float("Checkpoint2_Z", DrvoInfo[ id ][ CP2Z ]);
- INI_Float("Checkpoint3_X", DrvoInfo[ id ][ CP3X ]);
- INI_Float("Checkpoint3_Y", DrvoInfo[ id ][ CP3Y ]);
- INI_Float("Checkpoint3_Z", DrvoInfo[ id ][ CP3Z ]);
- INI_Int("Object_ID", DrvoInfo[ id ][ dObjID ]);
- return 1;
- }
- public OnGameModeInit() {
- for(new i; i < MAX_DRVECE; i++) {
- new dFile[ 60 ];
- format(dFile, sizeof(dFile), DRVO_FILE, i);
- if(fexist(dFile)) {
- INI_ParseFile(dFile, "OcitajDrvo", .bExtra = true, .extra = i);
- DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ],DrvoInfo[ i ][ dRotX ],DrvoInfo[ i ][ dRotY ],DrvoInfo[ i ][ dRotZ ], 300.0);
- }
- }
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
- if(response == EDIT_RESPONSE_FINAL) {
- if(KreiraDrvo[ playerid ] != 0) {
- new i = KreiraDrvo[ playerid ];
- if(!KreiraPaloDrvo[ playerid ]) {
- DrvoInfo[ i ][ dPosX ] = fX;
- DrvoInfo[ i ][ dPosY ] = fY;
- DrvoInfo[ i ][ dPosZ ] = fZ;
- DrvoInfo[ i ][ dRotX ] = fRotX;
- DrvoInfo[ i ][ dRotY ] = fRotY;
- DrvoInfo[ i ][ dRotZ ] = fRotZ;
- DestroyObject(DrvoInfo[ i ][ dID ]);
- DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],fX,fY,fZ, fRotX, fRotY, fRotZ, 300.0);
- EditObject(playerid, DrvoInfo[ i ][ dID ]);
- SCM(playerid, -1, "Sada sacuvajte kordinate palog drveta.");
- KreiraPaloDrvo[ playerid ] = true;
- }
- else {
- DrvoInfo[ i ][ sPosX ] = fX;
- DrvoInfo[ i ][ sPosY ] = fY;
- DrvoInfo[ i ][ sPosZ ] = fZ;
- DrvoInfo[ i ][ sRotX ] = fRotX;
- DrvoInfo[ i ][ sRotY ] = fRotY;
- DrvoInfo[ i ][ sRotZ ] = fRotZ;
- SCM(playerid, -1, "Sada sacuvajte pozicije 3 CP, dugme Y.");
- SCM(playerid, -1, "CPovi se koriste za secenje drveta u komade.");
- SCM(playerid, -1, "Za vise informacija, javiti se Shomiju.");
- SaveDrvo(i);
- KreiraPaloDrvo[ playerid ] = false;
- KreiraCP[ playerid ] = 1;
- }
- }
- }
- return 1;
- }
- forward SecaTimer(playerid);
- public SecaTimer(playerid) {
- new i = SeceDrvo[ playerid ];
- MoveObject(DrvoInfo[ i ][ dID ],DrvoInfo[ i ][ sPosX ],DrvoInfo[ i ][ sPosY ],DrvoInfo[ i ][ sPosZ ], 1.0, DrvoInfo[ i ][ sRotX ],DrvoInfo[ i ][ sRotY ],DrvoInfo[ i ][ sRotZ ]);
- ClearAnimations(playerid);
- TogglePlayerControllable(playerid, true);
- SCM(playerid, -1, "Isecite drvo na komade.");
- SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP1X ], DrvoInfo[ i ][ CP1Y ], DrvoInfo[ i ][ CP1Z ], 1.5);
- DrvoInfo[ i ][ dSruseno ] = true;
- SeceDrvoUKomade[ playerid ] = 1;
- return 1;
- }
- forward DrvoKomadiTimer(playerid);
- public DrvoKomadiTimer(playerid) {
- new i = SeceDrvo[ playerid ];
- if(SeceDrvoUKomade[ playerid ] == 1) {
- SeceDrvoUKomade[ playerid ]++;
- SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP2X ], DrvoInfo[ i ][ CP2Y ], DrvoInfo[ i ][ CP2Z ], 1.5);
- TogglePlayerControllable(playerid, true);
- }
- else if(SeceDrvoUKomade[ playerid ] == 2) {
- SeceDrvoUKomade[ playerid ]++;
- SetPlayerCheckpoint(playerid, DrvoInfo[ i ][ CP3X ], DrvoInfo[ i ][ CP3Y ], DrvoInfo[ i ][ CP3Z ], 1.5);
- TogglePlayerControllable(playerid, true);
- }
- else if(SeceDrvoUKomade[ playerid ] == 3) {
- SeceDrvoUKomade[ playerid ] = 0;
- TogglePlayerControllable(playerid, true);
- IsekoDrvo[ playerid ] = true;
- SCM(playerid, -1, "Utovarite drvo u kamion ( LMB )");
- DestroyObject(DrvoInfo[ i ][ dID ]);
- SetPlayerAttachedObject(playerid, 1, 1463, 1,0.20,0.36,0.0,0.0,90.0, 0.0, 0.4, 0.3, 0.6);
- ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
- GivePlayerWeapon(playerid, 9, 0);
- }
- return 1;
- }
- forward ApplyAnim(playerid);
- public ApplyAnim(playerid) {
- if(SeceDrvoUKomade[ playerid ] == 0) return ApplyAnimation(playerid,"CHAINSAW","WEAPON_csaw",4.1,1,0,0,0,30000);
- else return ApplyAnimation(playerid,"CHAINSAW","WEAPON_csaw",4.1,1,0,0,0,15000);
- }
- public OnPlayerEnterCheckpoint(playerid) {
- if(SeceDrvoUKomade[ playerid ] == 1) {
- if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
- SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
- TogglePlayerControllable(playerid, false);
- DisablePlayerCheckpoint(playerid);
- SetTimerEx("ApplyAnim", 500, false, "i", playerid);
- }
- else if(SeceDrvoUKomade[ playerid ] == 2) {
- if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
- SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
- TogglePlayerControllable(playerid, false);
- DisablePlayerCheckpoint(playerid);
- SetTimerEx("ApplyAnim", 500, false, "i", playerid);
- }
- else if(SeceDrvoUKomade[ playerid ] == 3) {
- if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
- SetTimerEx("DrvoKomadiTimer", 15000, false, "i", playerid);
- TogglePlayerControllable(playerid, false);
- DisablePlayerCheckpoint(playerid);
- SetTimerEx("ApplyAnim", 500, false, "i", playerid);
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if(newkeys == KEY_YES) {
- if(KreiraDrvo[ playerid ] != 0) {
- new Float:X, Float:Y, Float:Z, i = KreiraDrvo[ playerid ];
- GetPlayerPos(playerid, X,Y,Z);
- if(KreiraCP[ playerid ] == 1) {
- DrvoInfo[ i ][ CP1X ] = X;
- DrvoInfo[ i ][ CP1Y ] = Y;
- DrvoInfo[ i ][ CP1Z ] = Z;
- KreiraCP[ playerid ] = 2;
- SCM(playerid, -1, "Sada sacuvajte kordinate 2. CP-a.");
- }
- else if(KreiraCP[ playerid ] == 2) {
- DrvoInfo[ i ][ CP2X ] = X;
- DrvoInfo[ i ][ CP2Y ] = Y;
- DrvoInfo[ i ][ CP2Z ] = Z;
- KreiraCP[ playerid ] = 3;
- SCM(playerid, -1, "Sada sacuvajte kordinate 3. CP-a.");
- }
- else if(KreiraCP[ playerid ] == 3) {
- DrvoInfo[ i ][ CP3X ] = X;
- DrvoInfo[ i ][ CP3Y ] = Y;
- DrvoInfo[ i ][ CP3Z ] = Z;
- KreiraCP[ playerid ] = 0;
- SCM(playerid, -1, "Zavrsili ste kreiranje drveta.");
- DestroyObject(DrvoInfo[ i ][ dID ]);
- DrvoInfo[ i ][ dID ] = CreateObject(DrvoInfo[ i ][ dObjID ],DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ],DrvoInfo[ i ][ dRotX ],DrvoInfo[ i ][ dRotY ],DrvoInfo[ i ][ dRotZ ], 300.0);
- SaveDrvo(i);
- KreiraDrvo[ playerid ] = 0;
- }
- }
- }
- return 1;
- }
- public OnPlayerSpawn(playerid) {
- PreloadAnimLib(playerid,"BOMBER");
- PreloadAnimLib(playerid,"RAPPING");
- PreloadAnimLib(playerid,"SHOP");
- PreloadAnimLib(playerid,"BEACH");
- PreloadAnimLib(playerid,"SMOKING");
- PreloadAnimLib(playerid,"FOOD");
- PreloadAnimLib(playerid,"ON_LOOKERS");
- PreloadAnimLib(playerid,"DEALER");
- PreloadAnimLib(playerid,"CRACK");
- PreloadAnimLib(playerid,"CARRY");
- PreloadAnimLib(playerid,"CHAINSAW");
- PreloadAnimLib(playerid,"COP_AMBIENT");
- PreloadAnimLib(playerid,"PARK");
- PreloadAnimLib(playerid,"INT_HOUSE");
- PreloadAnimLib(playerid,"FOOD" );
- PreloadAnimLib(playerid,"PED" );
- return 1;
- }
- YCMD:kreirajdrvo(playerid, params[], help) {
- #pragma unused help
- new i = NextDrvoID(MAX_DRVECE), Float:X, Float:Y, Float:Z, obj;
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
- if(KreiraDrvo[ playerid ] != 0) return SCM(playerid, -1, "Vec kreirate drvo.");
- if(sscanf(params, "d", obj)) return SCM(playerid, -1, "/kreirajdrvo [Object ID]");
- SCM(playerid, -1, "Zapoceli ste kreiranje drveta.");
- GetPlayerPos(playerid, X,Y,Z);
- DrvoInfo[ i ][ dID ] = CreateObject(obj,X+3,Y+3,Z, 0.0, 0.0, 0.0, 300.0);
- EditObject(playerid, DrvoInfo[ i ][ dID ]);
- DrvoInfo[ i ][ dObjID ] = obj;
- KreiraDrvo[ playerid ] = i;
- return 1;
- }
- YCMD:seci(playerid, params[], help) {
- for(new i; i < MAX_DRVECE; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 5.0, DrvoInfo[ i ][ dPosX ],DrvoInfo[ i ][ dPosY ],DrvoInfo[ i ][ dPosZ ])) {
- if(DrvoInfo[ i ][ dSruseno ]) return SCM(playerid, -1, "To drvo je vec sruseno.");
- if(GetPlayerWeapon(playerid) != 9) return SCM(playerid, -1, "Koristite testeru.");
- SetTimerEx("SecaTimer", 30000, false, "i", playerid);
- SeceDrvo[ playerid ] = i;
- ClearAnimations(playerid);
- SetTimerEx("ApplyAnim", 500, false, "i", playerid);
- TogglePlayerControllable(playerid, false);
- }
- }
- return 1;
- }
- YCMD:test(playerid, params[], help) return GivePlayerWeapon(playerid, 9, 500);
- stock NextDrvoID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), DRVO_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- stock SaveDrvo(id) {
- new jFile[ 60 ];
- format(jFile, sizeof(jFile), DRVO_FILE, id);
- new INI:File = INI_Open(jFile);
- INI_WriteFloat(File, "Lokacija_X", DrvoInfo[ id ][ dPosX ]);
- INI_WriteFloat(File, "Lokacija_Y", DrvoInfo[ id ][ dPosY ]);
- INI_WriteFloat(File, "Lokacija_Z", DrvoInfo[ id ][ dPosZ ]);
- INI_WriteFloat(File, "Rotacija_X", DrvoInfo[ id ][ dRotX ]);
- INI_WriteFloat(File, "Rotacija_Y", DrvoInfo[ id ][ dRotY ]);
- INI_WriteFloat(File, "Rotacija_Z", DrvoInfo[ id ][ dRotZ ]);
- INI_WriteFloat(File, "Palo_Lokacija_X", DrvoInfo[ id ][ sPosX ]);
- INI_WriteFloat(File, "Palo_Lokacija_Y", DrvoInfo[ id ][ sPosY ]);
- INI_WriteFloat(File, "Palo_Lokacija_Z", DrvoInfo[ id ][ sPosZ ]);
- INI_WriteFloat(File, "Palo_Rotacija_X", DrvoInfo[ id ][ sRotX ]);
- INI_WriteFloat(File, "Palo_Rotacija_Y", DrvoInfo[ id ][ sRotY ]);
- INI_WriteFloat(File, "Palo_Rotacija_Z", DrvoInfo[ id ][ sRotZ ]);
- INI_WriteFloat(File, "Checkpoint1_X", DrvoInfo[ id ][ CP1X ]);
- INI_WriteFloat(File, "Checkpoint1_Y", DrvoInfo[ id ][ CP1Y ]);
- INI_WriteFloat(File, "Checkpoint1_Z", DrvoInfo[ id ][ CP1Z ]);
- INI_WriteFloat(File, "Checkpoint2_X", DrvoInfo[ id ][ CP2X ]);
- INI_WriteFloat(File, "Checkpoint2_Y", DrvoInfo[ id ][ CP2Y ]);
- INI_WriteFloat(File, "Checkpoint2_Z", DrvoInfo[ id ][ CP2Z ]);
- INI_WriteFloat(File, "Checkpoint3_X", DrvoInfo[ id ][ CP3X ]);
- INI_WriteFloat(File, "Checkpoint3_Y", DrvoInfo[ id ][ CP3Y ]);
- INI_WriteFloat(File, "Checkpoint3_Z", DrvoInfo[ id ][ CP3Z ]);
- INI_WriteInt(File, "Object_ID", DrvoInfo[ id ][ dObjID ]);
- INI_Close(File);
- }
- stock PreloadAnimLib(playerid, animlib[])
- ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
Advertisement
Add Comment
Please, Sign In to add comment