Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <streamer>
- #include <zcmd>
- #include <YSI\y_ini>
- #define MAX_DRVA 100
- #define DPATH "/Drva/%d.ini"
- #define DRVO_OBJECT 19076
- enum dInfo
- {
- Float:dX,
- Float:dY,
- Float:dZ,
- Float:dRotX,
- Float:dRotY,
- Float:dRotZ,
- dVW,
- Text3D:dTxt,
- dObj
- }
- new DrvoInfo[MAX_DRVA][dInfo];
- new eDrvo[MAX_PLAYERS];
- DrvoPath(id)
- {
- new str[40];
- format(str,sizeof(str),DPATH,id);
- return str;
- }
- forward LoadDrvo(id,name[],value[]);
- public LoadDrvo(id,name[],value[])
- {
- INI_Float("X",DrvoInfo[id][dX]);
- INI_Float("Y",DrvoInfo[id][dY]);
- INI_Float("Z",DrvoInfo[id][dZ]);
- INI_Float("RotX",DrvoInfo[id][dRotX]);
- INI_Float("RotY",DrvoInfo[id][dRotY]);
- INI_Float("RotZ",DrvoInfo[id][dRotZ]);
- INI_Int("VW",DrvoInfo[id][dVW]);
- return 1;
- }
- SacuvajDrvo(id)
- {
- new INI:File = INI_Open(DrvoPath(id));
- INI_SetTag(File,"drvo");
- INI_WriteFloat(File,"X",DrvoInfo[id][dX]);
- INI_WriteFloat(File,"Y",DrvoInfo[id][dY]);
- INI_WriteFloat(File,"Z",DrvoInfo[id][dZ]);
- INI_WriteFloat(File,"RotX",DrvoInfo[id][dRotX]);
- INI_WriteFloat(File,"RotY",DrvoInfo[id][dRotY]);
- INI_WriteFloat(File,"RotZ",DrvoInfo[id][dRotZ]);
- INI_WriteInt(File,"VW",DrvoInfo[id][dVW]);
- INI_Close(File);
- return 1;
- }
- UcitajDrva()
- {
- for(new i=0;i<MAX_DRVA;i++)
- {
- if(fexist(DrvoPath(i)))
- {
- INI_ParseFile(DrvoPath(i), "LoadDrvo", .bExtra = true, .extra = i);
- KreirajDrvo(i);
- }
- }
- return 1;
- }
- KreirajDrvo(id) {
- if(fexist(DrvoPath(id)))
- {
- DrvoInfo[id][dObj] = CreateDynamicObject(DRVO_OBJECT,DrvoInfo[id][dX],DrvoInfo[id][dY],DrvoInfo[id][dZ],DrvoInfo[id][dRotX],DrvoInfo[id][dRotY],DrvoInfo[id][dRotZ],DrvoInfo[id][dVW]);
- DrvoInfo[id][dTxt] = Create3DTextLabel("( SRETAN BOZIC )", -1,DrvoInfo[id][dX],DrvoInfo[id][dY],DrvoInfo[id][dZ],20.0,DrvoInfo[id][dVW],0);
- }
- return 1;
- }
- ObrisiDrvo(id)
- {
- if(fexist(DrvoPath(id)))
- {
- DestroyDynamicObject(DrvoInfo[id][dObj]);
- Delete3DTextLabel(DrvoInfo[id][dTxt]);
- fremove(DrvoPath(id));
- DrvoInfo[id][dX] =
- DrvoInfo[id][dY] =
- DrvoInfo[id][dZ] =
- DrvoInfo[id][dRotX] =
- DrvoInfo[id][dRotY] =
- DrvoInfo[id][dRotZ] = 0.0;
- DrvoInfo[id][dVW] = 0;
- DrvoInfo[id][dObj] = -1;
- }
- return 1;
- }
- main()
- {
- print("\n----------------------------------");
- print(" Bozicno drvo system");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- SetGameModeText("BD");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- UcitajDrva();
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- eDrvo[playerid] = -1;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- CMD:kreirajdrvo(playerid,params[])
- {
- #pragma unused params
- new f;
- for(new i=0;i<MAX_DRVA;i++) { if(fexist(DrvoPath(i))) { f++; } }
- if(f == MAX_DRVA-1) return 1;
- new y;
- for(new i=0;i<MAX_DRVA;i++) { if(!fexist(DrvoPath(i))) { y = i; break; } }
- new Float:x,Float:a,Float:z;
- GetPlayerPos(playerid,x,a,z);
- DrvoInfo[y][dX] = x+3;
- DrvoInfo[y][dY] = a+1;
- DrvoInfo[y][dZ] = z;
- DrvoInfo[y][dRotX] = DrvoInfo[y][dRotY] = DrvoInfo[y][dRotZ] = 0.0;
- DrvoInfo[y][dVW] = GetPlayerVirtualWorld(playerid);
- SacuvajDrvo(y);
- KreirajDrvo(y);
- return 1;
- }
- CMD:edrvo(playerid,params[])
- {
- #pragma unused params
- new id;
- for(new i=0;i<MAX_DRVA;i++)
- {
- if(fexist(DrvoPath(i)))
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- if(IsPlayerInRangeOfPoint(playerid,3.0,DrvoInfo[i][dX],DrvoInfo[i][dY],DrvoInfo[i][dZ])) { id = i; break; }
- }
- }
- eDrvo[playerid] = id;
- EditDynamicObject(playerid,DrvoInfo[id][dObj]);
- return 1;
- }
- CMD:obrisidrvo(playerid,params[])
- {
- #pragma unused params
- new id;
- for(new i=0;i<MAX_DRVA;i++)
- {
- if(fexist(DrvoPath(i)))
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- if(IsPlayerInRangeOfPoint(playerid,3.0,DrvoInfo[i][dX],DrvoInfo[i][dY],DrvoInfo[i][dZ])) { id = i; break; }
- }
- }
- ObrisiDrvo(id);
- return 1;
- }
- public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
- {
- if(response == EDIT_RESPONSE_FINAL && eDrvo[playerid] != -1)
- {
- new id = eDrvo[playerid];
- DestroyDynamicObject(DrvoInfo[id][dObj]);
- Delete3DTextLabel(DrvoInfo[id][dTxt]);
- DrvoInfo[id][dX] = x;
- DrvoInfo[id][dY] = y;
- DrvoInfo[id][dZ] = z;
- DrvoInfo[id][dRotX] = rx;
- DrvoInfo[id][dRotY] = ry;
- DrvoInfo[id][dRotZ] = rz;
- SacuvajDrvo(id);
- KreirajDrvo(id);
- eDrvo[playerid] = -1;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment