Dima972511
Умник
Здравствуйте пользователи p-i вот эта команда позволит вам создавать объекты из игры, и прикреплять их к игроку.
Ко всем командам:
Куда-нибудь в конец мода:
Теперь команда для удаления объекта:
Прикрепление объекта к игроку:
Ко всем командам:
Куда-нибудь в конец мода:
Ну и команда для удаления:
Вариант на OnPlayerCommandText:
в OnPlayerCommandText:
Куда-нибудь в конец мода:
Все функции тут стандартные с samp 0.3e. Есть проблема что не редактируется местоположение на другом человеке, для этого сначало поставьте тот же объект указав свой id, после чего просто поставьте тот же объект на другого игрока, ну и можете удалить с себя объект.
Автор: я.
P.S Тема старая, давно создавал, перенёс с архива.
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
HTML:
CMD:setobject(playerid, params[])
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_GREY, "Введите: /setobject [id объекта]");
new Float: x, Float: y, Float: z;
GetPlayerPos(playerid, x, y, z);
new objectid = CreateObject(params[0], x, y, z-0.35, 0.0, 0.0, 0.0);
EditObject(playerid, objectid);
SetPVarInt(playerid, "ObjectID", objectid);
SendClientMessage(playerid, COLOR_WHITE, "Объект установлен. Удалить: /removeobject");
return 1;
}
HTML:
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new Float:oldX, Float:oldY, Float:oldZ,
Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, move it for other players
{
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
// The player clicked on the save icon
// Do anything here to save the updated object position (and rotation)
}
if(response == EDIT_RESPONSE_CANCEL)
{
//The player cancelled, so put the object back to it's old position
if(!playerobject) //Object is not a playerobject
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
HTML:
CMD:removeobject(playerid, params[])
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
DestroyObject(GetPVarInt(playerid, "ObjectID"));
SendClientMessage(playerid, COLOR_WHITE, "Объект удалён");
return 1;
}
Ко всем командам:
HTML:
CMD:setplayerobject(playerid, params[])
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
if(sscanf(params, "uddd", params[0], params[1], params[2], params[3])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /setplayerobject [playerid] [слот] [objectid] [кость]");
SetPlayerAttachedObject(params[0], params[1], params[2], params[3], 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 1);
EditAttachedObject(playerid, params[1]);
SetPVarInt(playerid, "GetPlayerObject", params[0]);
SendClientMessage(playerid, COLOR_WHITE, "Вы установили объект игроку");
return 1;
}
HTML:
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 )
{
SetPlayerAttachedObject(GetPVarInt(playerid, "GetPlayerObject"),index,modelid,boneid,fOffsetX,fOffsetY,fOffsetZ,fRotX,fRotY,fRotZ,fScaleX,fScaleY,fScaleZ);
SendClientMessage(playerid, 0xFFFFFFFF, "Объект установлен");
return 1;
}
HTML:
CMD:removeplayerobject(playerid, params[])
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /removeplayerobject [playerid] [слот]");
RemovePlayerAttachedObject(params[0], params[1]);
SendClientMessage(playerid, COLOR_WHITE, "Вы удалили объект");
return 1;
}
в OnPlayerCommandText:
HTML:
if(strcmp(cmd, "/setobject", true) == 0)
{
if(PlayerLogged[playerid] == false) return 1; // Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1;// Проверка на амдина
tmp = strtok(cmdtext, idx);
new object = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /setobject [id объекта]");
new Float: x, Float: y, Float: z;
GetPlayerPos(playerid, x, y, z);
new objectid = CreateObject(object, x, y, z-0.35, 0.0, 0.0, 0.0);
EditObject(playerid, objectid);
SetPVarInt(playerid, "ObjectID", objectid);
SendClientMessage(playerid, COLOR_WHITE, "Объект установлен. Удалить: /removeobject");
return 1;
}
HTML:
if(strcmp(cmd, "/removeobject", true) == 0)
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
DestroyObject(GetPVarInt(playerid, "ObjectID"));
SendClientMessage(playerid, COLOR_WHITE, "Объект удалён");
return 1;
}
HTML:
if(strcmp(cmd, "/setplayerobject", true) == 0)
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
tmp = strtok(cmdtext, idx);
new playa = ReturnUser(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /setplayerobject [playerid] [слот] [id объекта] [кость]");
tmp = strtok(cmdtext, idx);
new slot = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /setplayerobject [playerid] [слот] [id объекта] [кость]");
tmp = strtok(cmdtext, idx);
new object = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /setplayerobject [playerid] [слот] [id объекта] [кость]");
tmp = strtok(cmdtext, idx);
new kost = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /setplayerobject [playerid] [слот] [id объекта] [кость]");
SetPlayerAttachedObject(playa, slot, object, kost, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 1);
EditAttachedObject(playerid, slot);
SetPVarInt(playerid, "GetPlayerObject", playa);
SendClientMessage(playerid, COLOR_WHITE, "Вы установили объект игроку");
return 1;
}
HTML:
if(strcmp(cmd, "/removeplayerobject", true) == 0)
{
if(PlayerLogged[playerid] == false) return 1; //Проверка на авторизацию
if(PlayerInfo[playerid][pAdmin] < 6) return 1; //Проверка на админа
tmp = strtok(cmdtext, idx);
new playa = ReturnUser(tmp);
new slot = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Введите: /removeplayerobject [playerid] [слот]");
RemovePlayerAttachedObject(playa, slot);
SendClientMessage(playerid, COLOR_WHITE, "Вы удалили объект");
return 1;
}
HTML:
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new Float:oldX, Float:oldY, Float:oldZ,
Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, move it for other players
{
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
// The player clicked on the save icon
// Do anything here to save the updated object position (and rotation)
}
if(response == EDIT_RESPONSE_CANCEL)
{
//The player cancelled, so put the object back to it's old position
if(!playerobject) //Object is not a playerobject
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
HTML:
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 )
{
SetPlayerAttachedObject(GetPVarInt(playerid, "GetPlayerObject"),index,modelid,boneid,fOffsetX,fOffsetY,fOffsetZ,fRotX,fRotY,fRotZ,fScaleX,fScaleY,fScaleZ);
SendClientMessage(playerid, 0xFFFFFFFF, "Объект установлен");
return 1;
}
Автор: я.
P.S Тема старая, давно создавал, перенёс с архива.
