Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // player object filterscript used in my video. Feel free to test around with this
- #include <a_samp>
- #define FILTERSCRIPT
- #define cWhite 0xFFFFFFAA
- enum objectP
- {
- model,
- bone,
- bool: show,
- Float: offsetX,
- Float: offsetY,
- Float: offsetZ,
- Float: rotateX,
- Float: rotateY,
- Float: rotateZ,
- Float: scaleX,
- Float: scaleY,
- Float: scaleZ
- }
- new playerObject[MAX_PLAYERS][10 char][objectP];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" playerObject for tutorial by ulfric malcom");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- printf("playerObject filterscript Exit");
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[128], idx, string[64];
- cmd = strtok(cmdtext, idx);
- /*new cmd[30], params[30], string[64];
- sscanf(cmdtext, "ss", cmd, params);*/
- if (strcmp(cmd, "/addobject", true) == 0)
- {
- new modelid, boneid;
- new tmp[30], tmp2[30];
- tmp = strtok(cmdtext, idx);
- tmp2 = strtok(cmdtext, idx);
- if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, cWhite, "/addobject [model number] [bone id]");
- modelid = strval(tmp);
- boneid = strval(tmp2);
- //if(sscanf(params, "ii", modelid, boneid)) return SendClientMessage(playerid, cWhite, "/addobject [model number] [bone id]");
- if(modelid < 18851 || modelid > 19163)
- {
- return SendClientMessage(playerid, cWhite, "Model id should be 18850 < id < 19300");
- }
- else if(boneid < 1 || boneid > 18)
- {
- return SendClientMessage(playerid, cWhite, "Bone id should be 0 < id < 19");
- }
- else
- {
- for(new i = 0; i < 10; i++)
- {
- if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
- {
- SetPlayerAttachedObject(playerid, i, modelid, boneid);
- format(string, sizeof(string), "Object Added ID: %d , on bone: %d, in slot: %d", modelid, boneid, i);
- playerObject[playerid][i][model] = modelid;
- playerObject[playerid][i][bone] = boneid;
- playerObject[playerid][i][show] = true;
- GetPlayerObjectPos(playerid, modelid, playerObject[playerid][i][offsetX], playerObject[playerid][i][offsetY], playerObject[playerid][i][offsetZ]);
- GetPlayerObjectRot(playerid, modelid, playerObject[playerid][i][rotateX], playerObject[playerid][i][rotateY], playerObject[playerid][i][rotateZ]);
- SendClientMessage(playerid, cWhite, string);
- break;
- }
- else if(i == 9)return SendClientMessage(playerid, cWhite, "No more slots avaliable!");
- }//close for
- }
- return 1;
- }
- if (strcmp(cmd, "/deleteobject", true) == 0)
- {
- new id, tmp[20];
- tmp = strtok(cmdtext, idx);
- id = strval(tmp);
- if(!strlen(tmp)) return SendClientMessage(playerid, cWhite, "/deleteobject [object slot id]");
- //if(sscanf(params, "i", id)) return SendClientMessage(playerid, cWhite, "/deleteobject [object slot id]");
- if(!IsPlayerAttachedObjectSlotUsed(playerid, id)) return SendClientMessage(playerid, cWhite, "That slot doesn't have any object!");
- RemovePlayerAttachedObject(playerid, id);
- format(string, sizeof(string), "Object ID: %d has been removed from slot: %d", playerObject[playerid][id][model], id);
- playerObject[playerid][id][model] = 0;
- playerObject[playerid][id][bone] = 0;
- playerObject[playerid][id][offsetX] = 0.0;
- playerObject[playerid][id][offsetY] = 0.0;
- playerObject[playerid][id][offsetZ] = 0.0;
- playerObject[playerid][id][rotateX] = 0.0;
- playerObject[playerid][id][rotateY] = 0.0;
- playerObject[playerid][id][rotateZ] = 0.0;
- playerObject[playerid][id][scaleX] = 1.0;
- playerObject[playerid][id][scaleY] = 1.0;
- playerObject[playerid][id][scaleZ] = 1.0;
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- if (strcmp(cmd, "/changemodel", true) == 0)
- {
- new slot, id, tmp[20], tmp2[20];
- tmp = strtok(cmdtext, idx);
- tmp2 = strtok(cmdtext, idx);
- slot = strval(tmp);
- id = strval(tmp2);
- if(!strlen(tmp)) return SendClientMessage(playerid, cWhite, "/changemodel [slot] [new model id]");
- //if(sscanf(params, "ii", slot, id)) return SendClientMessage(playerid, cWhite, "/changemodel [slot] [new model id]");
- if(!IsPlayerAttachedObjectSlotUsed(playerid, slot)) return SendClientMessage(playerid, cWhite, "That slot doesn't have any object!");
- if(id < 18851 || id > 19163) return SendClientMessage(playerid, cWhite, "Model id should be 18850 < id < 19300");
- RemovePlayerAttachedObject(playerid, slot);
- SetPlayerAttachedObject(playerid, slot, id, playerObject[playerid][slot][bone], playerObject[playerid][slot][offsetX], playerObject[playerid][slot][offsetY], playerObject[playerid][slot][offsetZ], playerObject[playerid][slot][rotateX], playerObject[playerid][slot][rotateY], playerObject[playerid][slot][rotateZ]);
- format(string, sizeof(string), "Object Model ID: %d has been changed to ID: %d", playerObject[playerid][slot][model], id);
- playerObject[playerid][slot][model] = id;
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- if (strcmp(cmd, "/changebone", true) == 0)
- {
- new slot, id, tmp[20], tmp2[20];
- tmp = strtok(cmdtext, idx);
- tmp2 = strtok(cmdtext, idx);
- slot = strval(tmp);
- id = strval(tmp2);
- if(!strlen(tmp)) return SendClientMessage(playerid, cWhite, "/changebone [slot] [new bone id]");
- if(!IsPlayerAttachedObjectSlotUsed(playerid, slot)) return SendClientMessage(playerid, cWhite, "That slot doesn't have any object!");
- if(id < 1 || id > 18) return SendClientMessage(playerid, cWhite, "Bone id should be 0 < id < 19");
- RemovePlayerAttachedObject(playerid, slot);
- SetPlayerAttachedObject(playerid, slot, playerObject[playerid][slot][model], id, playerObject[playerid][slot][offsetX], playerObject[playerid][slot][offsetY], playerObject[playerid][slot][offsetZ], playerObject[playerid][slot][rotateX], playerObject[playerid][slot][rotateY], playerObject[playerid][slot][rotateZ]);
- format(string, sizeof(string), "Object Bone ID: %d has been changed to ID: %d", playerObject[playerid][slot][bone], id);
- playerObject[playerid][slot][bone] = id;
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- if (strcmp(cmd, "/editobject", true) == 0)
- {
- new slot, tmp[20];
- tmp = strtok(cmdtext, idx);
- slot = strval(tmp);
- if(!strlen(tmp)) return SendClientMessage(playerid, cWhite, "/editobject [slot]");
- if(!IsPlayerAttachedObjectSlotUsed(playerid, slot)) return SendClientMessage(playerid, cWhite, "That slot doesn't have any object, or it might be turned off(/togobject)!");
- //if(!playerObject[playerid][slot][show]) return SendClientMessage(playerid, cWhite, "You need to turn on this object first! /togobject");
- EditAttachedObject(playerid, slot);
- format(string, sizeof(string), "You are not editing the object in slot: %d . Press ESC to cencel!", slot);
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- if (strcmp(cmd, "/togobject", true) == 0)
- {
- new tmp[64], slot, sta[5];
- tmp = strtok(cmdtext, idx);
- slot = strval(tmp);
- if(!strlen(tmp)) return SendClientMessage(playerid, cWhite, "/togobject [slot]");
- if(playerObject[playerid][slot][model] == 0) return SendClientMessage(playerid, cWhite, "That slot doesn't have any object!");
- if(playerObject[playerid][slot][show])
- {
- RemovePlayerAttachedObject(playerid, slot);
- playerObject[playerid][slot][show] = false;
- sta = "OFF";
- format(string, sizeof(string), "Object at slot: %d is turned: %s", slot, sta);
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- else
- {
- SetPlayerAttachedObject(playerid, slot, playerObject[playerid][slot][model], playerObject[playerid][slot][bone], playerObject[playerid][slot][offsetX], playerObject[playerid][slot][offsetY], playerObject[playerid][slot][offsetZ], playerObject[playerid][slot][rotateX], playerObject[playerid][slot][rotateY], playerObject[playerid][slot][rotateZ]);
- playerObject[playerid][slot][show] = true;
- sta = "ON";
- format(string, sizeof(string), "Object at slot: %d is turned: %s", slot, sta);
- SendClientMessage(playerid, cWhite, string);
- }
- return 1;
- }
- if (strcmp(cmd, "/help", true) == 0)
- {
- //SendClientMessage(playerid, cWhite, "*Player Object Guide*\nFirst, add an object(/addobject)\nThen, edit it(/changebone, /changemodel, /editobject)\nYou can also delete it or toggle it(/deleteobject, /togobject)");
- SendClientMessage(playerid, cWhite, "*Player Object Guide*");
- SendClientMessage(playerid, cWhite, "First, add an object(/addobject)");
- SendClientMessage(playerid, cWhite, "Then, edit it(/changebone, /changemodel, /editobject)");
- SendClientMessage(playerid, cWhite, "You can also delete it or toggle it(/deleteobject, /togobject)");
- return 1;
- }
- return 0;
- }
- public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
- {
- new string[64];
- if(response == 0) return SendClientMessage(playerid, cWhite, "You canceled!");
- playerObject[playerid][index][offsetX] = fOffsetX;
- playerObject[playerid][index][offsetY] = fOffsetY;
- playerObject[playerid][index][offsetZ] = fOffsetZ;
- playerObject[playerid][index][rotateX] = fRotX;
- playerObject[playerid][index][rotateY] = fRotY;
- playerObject[playerid][index][rotateZ] = fRotZ;
- playerObject[playerid][index][scaleX] = fScaleX;
- playerObject[playerid][index][scaleY] = fScaleY;
- playerObject[playerid][index][scaleZ] = fScaleZ;
- format(string, sizeof(string), "Your object at slot: %d has been saved!", index);
- SendClientMessage(playerid, cWhite, string);
- return 1;
- }
- //------------------------------------------------------------------------------
- // strtok created by: DracoBlue
- stock 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;
- }
- //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment