Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- /*
- This script was made by toccovender,
- you do NOT have permission to redistrubute this script unless you got permission directly from toccovender.
- do NOT remove this comment from the script.
- if it is found that you have broken any of those rules, you will be punished in whatever ways possible.
- kthxbai.
- */
- forward CheckKeys(playerid);
- enum objdata
- {
- obj_exists,
- obj_model_id,
- obj_desc[100],
- Float:obj_x,
- Float:obj_y,
- Float:obj_z,
- Float:obj_rx,
- Float:obj_ry,
- Float:obj_rz,
- }
- new Objects[MAX_OBJECTS][objdata];
- new curobjid[MAX_PLAYERS];
- new mode[MAX_PLAYERS] = 0;
- new Float:editinc[MAX_PLAYERS] = 0.1;
- new PlayerIsEditing[MAX_PLAYERS];
- new PlayerAttached[MAX_PLAYERS];
- new timers[MAX_PLAYERS];
- /*
- XY=0
- Z=1
- R_XY=2
- R_Z=3
- */
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- public CheckKeys(playerid)
- {
- new keys, updown, leftright;
- GetPlayerKeys(playerid,keys,updown,leftright);
- if(PlayerIsEditing[playerid])
- {
- if(updown == KEY_UP)
- {
- if(mode[playerid]==0)
- {
- Objects[curobjid[playerid]][obj_y] += editinc[playerid];
- }
- if(mode[playerid]==1)
- {
- Objects[curobjid[playerid]][obj_z] += editinc[playerid];
- }
- if(mode[playerid]==2)
- {
- Objects[curobjid[playerid]][obj_ry] += editinc[playerid];
- }
- if(mode[playerid]==3)
- {
- Objects[curobjid[playerid]][obj_rz] += editinc[playerid];
- }
- }
- if(updown == KEY_DOWN)
- {
- if(mode[playerid]==0)
- {
- Objects[curobjid[playerid]][obj_y] -= editinc[playerid];
- }
- if(mode[playerid]==1)
- {
- Objects[curobjid[playerid]][obj_z] -= editinc[playerid];
- }
- if(mode[playerid]==2)
- {
- Objects[curobjid[playerid]][obj_ry] -= editinc[playerid];
- }
- if(mode[playerid]==3)
- {
- Objects[curobjid[playerid]][obj_rz] -= editinc[playerid];
- }
- }
- if(leftright == KEY_LEFT)
- {
- if(mode[playerid]==0)
- {
- Objects[curobjid[playerid]][obj_x] -= editinc[playerid];
- }
- if(mode[playerid]==2)
- {
- Objects[curobjid[playerid]][obj_rx] -= editinc[playerid];
- }
- if(mode[playerid]==3)
- {
- Objects[curobjid[playerid]][obj_rz] -= editinc[playerid];
- }
- }
- if(leftright == KEY_RIGHT)
- {
- if(mode[playerid]==0)
- {
- Objects[curobjid[playerid]][obj_x] += editinc[playerid];
- }
- if(mode[playerid]==2)
- {
- Objects[curobjid[playerid]][obj_rx] += editinc[playerid];
- }
- if(mode[playerid]==3)
- {
- Objects[curobjid[playerid]][obj_rz] += editinc[playerid];
- }
- }
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz]);
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid,x,y,z);
- SetPlayerCameraPos(playerid,x,y,z + 2);
- SetPlayerCameraLookAt(playerid,Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- }
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" InGame Object Editor by tocco");
- print("--------------------------------------\n");
- new sfile[100] = "savedobjects.txt";
- if(!fexist(sfile))
- {
- print("Save file not found, creating new one.");
- new File:ntxt = fopen("savedobjects.txt",io_write);
- fclose(ntxt);
- print("Save file creation success!");
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[100],idx;
- cmd = strtok(cmdtext,idx);
- if (strcmp("/newobj", cmd, true) == 0)
- {
- new objid[100];
- objid = strtok(cmdtext,idx);
- new objdesc[100];
- strmid(objdesc,cmdtext[strfind(cmdtext," ",true,8) + 1],0,100,100);
- new Float:px, Float:py, Float:pz, Float:pr;
- GetPlayerPos(playerid,px,py,pz);
- GetPlayerFacingAngle(playerid,pr);
- new newobjid = CreateObject(strval(objid),px,py,pz,0.0,0.0,pr);
- curobjid[playerid] = newobjid;
- AttachObjectToPlayer(newobjid,playerid,0.0,0.0,0.0,0.0,0.0,pr);
- Objects[newobjid][obj_desc] = objdesc;
- Objects[newobjid][obj_exists] = 1;
- Objects[newobjid][obj_model_id] = strval(objid);
- PlayerIsEditing[playerid] = 0;
- PlayerAttached[playerid] = 1;
- return 1;
- }
- if (strcmp("/dupobj", cmd, true) == 0)
- {
- new newobjid = CreateObject(Objects[curobjid[playerid]][obj_model_id],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz]);
- Objects[newobjid][obj_desc] = cmdtext[8];
- Objects[newobjid][obj_exists] = 1;
- Objects[newobjid][obj_model_id] = Objects[curobjid[playerid]][obj_model_id];
- curobjid[playerid] = newobjid;
- PlayerIsEditing[playerid] = 0;
- PlayerAttached[playerid] = 1;
- return 1;
- }
- if(strcmp("/detach", cmd, true) == 0)
- {
- if(PlayerAttached[playerid] == 1)
- {
- DestroyObject(curobjid[playerid]);
- Objects[curobjid[playerid]][obj_exists] = 0;
- new Float:px, Float:py, Float:pz, Float:pr;
- GetPlayerPos(playerid,px,py,pz);
- GetPlayerFacingAngle(playerid,pr);
- new newobjid = CreateObject(Objects[curobjid[playerid]][obj_model_id],px,py,pz,0.0,0.0,pr);
- Objects[newobjid][obj_desc] = Objects[curobjid[playerid]][obj_desc];
- Objects[curobjid[playerid]][obj_exists] = 1;
- Objects[curobjid[playerid]][obj_x] = px;
- Objects[curobjid[playerid]][obj_y] = py;
- Objects[curobjid[playerid]][obj_z] = pz;
- Objects[curobjid[playerid]][obj_rz] = pr;
- curobjid[playerid] = newobjid;
- PlayerIsEditing[playerid] = 1;
- PlayerAttached[playerid] = 0;
- TogglePlayerControllable(playerid,0);
- timers[playerid] = SetTimerEx("CheckKeys",10,true,"%i",playerid);
- return 1;
- }
- return 1;
- }
- if(strcmp("/stopediting",cmd,true) == 0)
- {
- TogglePlayerControllable(playerid,1);
- PlayerIsEditing[playerid] = 0;
- KillTimer(timers[playerid]);
- SetCameraBehindPlayer(playerid);
- return 1;
- }
- if(strcmp("/objlist",cmd,true) == 0)
- {
- SendClientMessage(playerid,0xFFFFFFFF,"--------------------");
- new i;
- for(i=0; i<MAX_OBJECTS; i++)
- {
- if(Objects[i][obj_exists])
- {
- new msg[110];
- format(msg,110,"ObjectID: %i, ModelID: %i, Description: %s",i,Objects[i][obj_model_id],Objects[i][obj_desc]);
- SendClientMessage(playerid,0x0000FFFF,msg);
- }
- }
- SendClientMessage(playerid,0xFFFFFFFF,"--------------------");
- SendClientMessage(playerid,0xFFFFFFFF,"You may have to use Pg Up and Pg Down to view all objects.");
- return 1;
- }
- if(strcmp("/editobj",cmd,true) == 0)
- {
- new objid[100];
- objid = strtok(cmdtext,idx);
- if(Objects[strval(objid)][obj_exists])
- {
- curobjid[playerid] = strval(objid);
- PlayerIsEditing[playerid] = 1;
- PlayerAttached[playerid] = 0;
- TogglePlayerControllable(playerid,0);
- timers[playerid] = SetTimerEx("CheckKeys",100,true,"%i",playerid);
- }
- else
- {
- SendClientMessage(playerid,0xFF0000FF,"Couldn't find object in memory.");
- }
- return 1;
- }
- if(strcmp("/editinc",cmd,true) == 0)
- {
- new edit[100];
- edit = strtok(cmdtext,idx);
- editinc[playerid] = floatstr(edit);
- return 1;
- }
- if(strcmp("/mode",cmd,true) == 0)
- {
- new nmode[100];
- nmode = strtok(cmdtext,idx);
- if(strcmp(nmode,"XY",true) == 0)
- {
- mode[playerid] = 0;
- SendClientMessage(playerid,0x0000FFFF,"Mode set to XY");
- return 1;
- }
- if(strcmp(nmode,"Z",true) == 0)
- {
- mode[playerid] = 1;
- SendClientMessage(playerid,0x0000FFFF,"Mode set to Z");
- return 1;
- }
- if(strcmp(nmode,"R_XY",true) == 0)
- {
- mode[playerid] = 2;
- SendClientMessage(playerid,0x0000FFFF,"Mode set to R_XY");
- return 1;
- }
- if(strcmp(nmode,"R_Z",true) == 0)
- {
- mode[playerid] = 3;
- SendClientMessage(playerid,0x0000FFFF,"Mode set to R_Z");
- return 1;
- }
- SendClientMessage(playerid,0xFF0000FF,"Invalid mode.");
- return 1;
- }
- if(strcmp("/delobj",cmd,true) == 0)
- {
- DestroyObject(curobjid[playerid]);
- Objects[curobjid[playerid]][obj_exists] = 0;
- TogglePlayerControllable(playerid,1);
- PlayerIsEditing[playerid] = 0;
- KillTimer(timers[playerid]);
- }
- if(strcmp("/saveobj",cmd,true) == 0)
- {
- if(fexist("savedobjects.txt"))
- {
- new File:sfile=fopen("savedobjects.txt",io_append);
- new objtext[255];
- format(objtext,255,"CreateObject(%i,%f,%f,%f,%f,%f,%f); //%s \r\n",Objects[curobjid[playerid]][obj_model_id],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz],Objects[curobjid[playerid]][obj_desc]);
- fwrite(sfile,objtext);
- fclose(sfile);
- SendClientMessage(playerid,0x0000FFFF,"Object data saved to /savedobjects.txt");
- }
- else
- {
- new File:cfile=fopen("savedobjects.txt",io_write);
- fclose(cfile);
- new File:sfile=fopen("savedobjects.txt",io_append);
- new objtext[255];
- format(objtext,255,"CreateObject(%i,%f,%f,%f,%f,%f,%f); //%s \r\n",Objects[curobjid[playerid]][obj_model_id],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz],Objects[curobjid[playerid]][obj_desc]);
- fwrite(sfile,objtext);
- fclose(sfile);
- SendClientMessage(playerid,0x0000FFFF,"Object data saved to /savedobjects.txt");
- }
- return 1;
- }
- if(strcmp("/moveobjtome",cmd,true) == 0)
- {
- new Float:px, Float:py, Float:pz;
- GetPlayerPos(playerid,px,py,pz);
- SetObjectPos(curobjid[playerid],px,py,pz);
- Objects[curobjid[playerid]][obj_x] = px;
- Objects[curobjid[playerid]][obj_y] = py;
- Objects[curobjid[playerid]][obj_z] = pz;
- return 1;
- }
- if(strcmp("/attach",cmd,true) == 0)
- {
- new Float:pr;
- GetPlayerFacingAngle(playerid,pr);
- AttachObjectToPlayer(curobjid[playerid],playerid,0,0,0,0,0,pr);
- PlayerAttached[playerid] = 1;
- PlayerIsEditing[playerid] = 0;
- SetCameraBehindPlayer(playerid);
- return 1;
- }
- //--------------------------------------------------------------
- if(strcmp("/setobjx",cmd,true) == 0)
- {
- new x[100];
- x = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_x] = floatstr(x);
- SetObjectPos(curobjid[playerid],floatstr(x),Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/setobjy",cmd,true) == 0)
- {
- new y[100];
- y = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_y] = floatstr(y);
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],floatstr(y),Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/setobjz",cmd,true) == 0)
- {
- new z[100];
- z = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_z] = floatstr(z);
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],floatstr(z));
- return 1;
- }
- if(strcmp("/setobjrx",cmd,true) == 0)
- {
- new x[100];
- x = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_rx] = floatstr(x);
- SetObjectRot(curobjid[playerid],floatstr(x),Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz]);
- return 1;
- }
- if(strcmp("/setobjry",cmd,true) == 0)
- {
- new y[100];
- y = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_ry] = floatstr(y);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],floatstr(y),Objects[curobjid[playerid]][obj_rz]);
- return 1;
- }
- if(strcmp("/setobjrz",cmd,true) == 0)
- {
- new z[100];
- z = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_rz] = floatstr(z);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],floatstr(z));
- return 1;
- }
- //----------------------------------------------
- if(strcmp("/x",cmd,true) == 0)
- {
- new x[100];
- x = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_x] += floatstr(x);
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/y",cmd,true) == 0)
- {
- new y[100];
- y = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_y] += floatstr(y);
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/z",cmd,true) == 0)
- {
- new z[100];
- z = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_z] += floatstr(z);
- SetObjectPos(curobjid[playerid],Objects[curobjid[playerid]][obj_x],Objects[curobjid[playerid]][obj_y],Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/rx",cmd,true) == 0)
- {
- new x[100];
- x = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_rx] += floatstr(x);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz]);
- return 1;
- }
- if(strcmp("/ry",cmd,true) == 0)
- {
- new y[100];
- y = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_ry] += floatstr(y);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_rz]);
- return 1;
- }
- if(strcmp("/rz",cmd,true) == 0)
- {
- new z[100];
- z = strtok(cmdtext,idx);
- Objects[curobjid[playerid]][obj_rz] += floatstr(z);
- SetObjectRot(curobjid[playerid],Objects[curobjid[playerid]][obj_rx],Objects[curobjid[playerid]][obj_ry],Objects[curobjid[playerid]][obj_z]);
- return 1;
- }
- if(strcmp("/objsearch",cmd,true) == 0)
- {
- new searchterm[100];
- searchterm = strtok(cmdtext,idx);
- new fname[100]="/objlist.txt";
- if(fexist(fname))
- {
- if(strlen(searchterm) > 0)
- {
- new File:objlist = fopen(fname,io_read);
- new numfound;
- new lstring[100];
- SendClientMessage(playerid,0x00FF00FF,"Search initializing.");
- while(fread(objlist,lstring))
- {
- if(strfind(lstring,searchterm,true) != -1)
- {
- SendClientMessage(playerid,0x0000FFFF,lstring);
- numfound+=1;
- }
- }
- new msg[255];
- format(msg,255,"Search complete, %i results, you might need to use PG Up and PG Down to view all results, there may be too many results to display.",numfound);
- SendClientMessage(playerid,0x00FF00FF,msg);
- }
- else
- {
- SendClientMessage(playerid,0xFF0000FF,"You must enter a search term, example: /objsearch waterjump");
- }
- }
- else
- {
- SendClientMessage(playerid,0xFF0000FF,"Object list file not found, search aborted.");
- }
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment