31.07.2014, 17:54
Hola, hace un ratito me acorde de un servidor que tiene objetos editados y por ejemplo, habнa un cartel gigante que decнa "LSPD", mi duda va a como es posible hacer eso.
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#include <sscanf2>
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
new TextoFinal[128];
new FuenteFFinal[128];
new objetoactual;
CMD:cno(playerid, params[])
{
new texto[128];
if(sscanf(params, "ds[128]", params[0], texto))
{
SendClientMessage(playerid, -1,"USA: /cno TIPOLETRA TEXTO");
SendClientMessage(playerid, -1,"Tipos de letra: Arial (1) - Comic Sans MS (2) - Italic (3) - Courier (4).");
return 1;
}
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
objetoactual = CreateObject(19482,X,Y,Z+0.5,0.0,0.0,0.0,0.0);
switch(params[0])
{
case 1:
{
format(TextoFinal, sizeof(TextoFinal), "%s", texto);
format(FuenteFFinal, sizeof(FuenteFFinal), "Arial");
SetObjectMaterialText(objetoactual, TextoFinal,0,OBJECT_MATERIAL_SIZE_256x256,"Arial",24,1,0xAA3333AA,0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
EditObject(playerid,objetoactual);
}
case 2:
{
format(TextoFinal, sizeof(TextoFinal), "%s", texto);
format(FuenteFFinal, sizeof(FuenteFFinal), "Comic Sans MS");
SetObjectMaterialText(objetoactual, TextoFinal,0,OBJECT_MATERIAL_SIZE_256x256,"Comic Sans MS",24,1,0xAA3333AA,0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
EditObject(playerid,objetoactual);
}
case 3:
{
format(TextoFinal, sizeof(TextoFinal), "%s", texto);
format(FuenteFFinal, sizeof(FuenteFFinal), "Italic");
SetObjectMaterialText(objetoactual, TextoFinal,0,OBJECT_MATERIAL_SIZE_256x256,"Italic",24,1,0xAA3333AA,0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
EditObject(playerid,objetoactual);
}
case 4:
{
format(TextoFinal, sizeof(TextoFinal), "%s", texto);
format(FuenteFFinal, sizeof(FuenteFFinal), "Courier");
SetObjectMaterialText(objetoactual, TextoFinal,0,OBJECT_MATERIAL_SIZE_256x256,"Courier",24,1,0xAA3333AA,0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
EditObject(playerid,objetoactual);
}
default: return 1;
}
return 1;
}
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(objetoactual, oldX, oldY, oldZ);
GetObjectRot(objetoactual, oldRotX, oldRotY, oldRotZ);
if(response == EDIT_RESPONSE_FINAL)
{
if(!IsValidObject(objetoactual)) return;
MoveObject(objetoactual, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
new data[256];
format(data, sizeof data, "Textos.txt");
new File:fhandler = fopen(data, io_append);
format(data, sizeof data, "\nnew Object = CreateObject(19482,%.02f,%.02f,%.02f,%.02f,%.02f,%.02f);\n", fX,fY,fZ, fRotX, fRotY, fRotZ);
fwrite(fhandler, data);
format(data, sizeof data, "SetObjectMaterialText(Object, %s,0,OBJECT_MATERIAL_SIZE_256x256,\"%s\",24,1,0xAA3333AA,0,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);", TextoFinal, FuenteFFinal);
fwrite(fhandler, data);
fclose(fhandler);
}
}
Lo hacen con ing. inversa editando la memoria y el .amx creando un plugin utilizando el SDK, o usan https://sampwiki.blast.hk/wiki/SetObjectMaterialText.
|
No se por que, pero instalo el FS y cuando pongo un cartel y le pongo el texto desaparece el objecto y queda medio invisible.
|