#1

Bueno resulta que este script funciona un poco mal y ademбs no guarda el arbol al reiniciar el servidor tambiйn al borrarlo el arbol queda el label.
Dejo codigo:
Код:
#define function%0(%1) forward %0(%1); public %0(%1)
#define PlayerToPoint(%1,%2,%3,%4,%5) IsPlayerInRangeOfPoint(%2,%1,%3,%4,%5)
#define MAX_ARBOLES 3

enum aInfo
{
cantU,
Text3D:aLabA,
aMapA[10],
Float:aPosX,
Float:aPosY,
Float:aPosZ
}
new InfoArbol[MAX_ARBOLES][aInfo];
new aUserR[MAX_ARBOLES][MAX_PLAYERS][24];

public OnGameModeExit()
  GuardarArboles();

public OnGameModeInit()
    ResetearVariablesArbol();
    CargarArboles();

CMD:arbol(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xCCCCCCFF, "Debes logearte con la Rcon");
if(sscanf(params, "s[7]", params[0]))
{
   SendClientMessage(playerid, -1, "{00C3EA}» {FFFFFF}Uso correcto: /arbol [Opciуn]");
   SendClientMessage(playerid, -1, "{00FF00}Opciones: crear - sacar");
   return 1;
}
if(!strcmp(params[0], "crear", true))
{
new Float:x, Float:y, Float:z;
for(new i=0; i<MAX_ARBOLES; i++)
{
   if(InfoArbol[i][aPosX] == 0)
   {
       GetPlayerPos(playerid, x, y, z);
       InfoArbol[i][aPosX] = x;
       InfoArbol[i][aPosY] = y;
       InfoArbol[i][aPosZ] = z;
        InfoArbol[i][aMapA][0] = CreateObject(19076, x, y, z-1.0,0.0,0.0,300);
		InfoArbol[i][aMapA][1] = CreateObject(19054, x, y+1.0, z-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][2] = CreateObject(19058, x+1.0, y, z-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][3] = CreateObject(19056, x, y-1.0, z-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][4] = CreateObject(19057, x-1.0, y, z-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][5] = CreateObject(19058, x-1.5, y+1.5, z-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][6] = CreateObject(19055, x+1.5, y-1.5, z-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][7] = CreateObject(19057, x+1.5, y+1.5, z-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][8] = CreateObject(19054, x-1.5, y-1.5, z-0.2,0,0,0.0,300);
    	InfoArbol[i][aMapA][9] = CreateObject(3526, x, y, z-1.0,0,0,0,300);
       InfoArbol[i][aLabA] = Create3DTextLabel("Usa {0000FF}/regalo{FFFFFF} para obtener uno", -1, x, y+1, z, 12.0, 0, 0);
               SendClientMessage(playerid, 0x00FF00FF, "Has colocado un arbol navideсo con exito");
               GuardarArboles();
return 1;
   }
   if(i == 2)
{
SendClientMessage(playerid, -1, "{CCCCCC}Ya se han colocado el maximo de arboles posibles");
return 1;
}
}
return 1;
}
if(!strcmp(params[0], "sacar", true))
{
   for(new i=0; i<MAX_ARBOLES; i++)
   {
       if(PlayerToPoint(4.0, playerid, InfoArbol[i][aPosX], InfoArbol[i][aPosY], InfoArbol[i][aPosZ]))
       {
           for(new j=0; j <= 13; j++)
           {
               DestroyObject(InfoArbol[i][aMapA][j]);
           }
           Delete3DTextLabel(InfoArbol[i][aLabA]);
           InfoArbol[i][aPosX] = 0;
       InfoArbol[i][aPosY] = 0;
       InfoArbol[i][aPosZ] = 0;
	for(new j=0; j<InfoArbol[i][cantU]; j++)
	{
	   aUserR[i][j] = "nada";
	}
       GuardarArboles();
       SendClientMessage(playerid, -1, "{00FF00}Has retirado un arbol navideсo con exito");
           break;
       }
   }
   return 1;
}
return 1;
}

CMD:regalo(playerid, params[])
{
new name[24];
GetPlayerName(playerid, name, 24);
for(new i=0; i<MAX_ARBOLES; i++)
{
   if(PlayerToPoint(4.0, playerid, InfoArbol[i][aPosX], InfoArbol[i][aPosY], InfoArbol[i][aPosZ]))
   {
       for(new j=0; j<MAX_PLAYERS; j++)
    {
           if(strcmp(name, aUserR[i][j], true) == 0)
           {
SendClientMessage(playerid, 0xCCCCCCFF, "Ya usaste /regalo en este arbol");
return 1;
           }
    }
      switch(random(100))
       {
           case 0..9:
               {
             	SendClientMessage(playerid, -1, "Te damos un arma");
             	GivePlayerWeapon(playerid, 27, 99999);
             	}
               case 10..29:
               {
                   SendClientMessage(playerid, -1, "Tu regalo es un bate de beisbol");
                   GivePlayerWeapon(playerid, 5, 1);
               }
               case 30..59:
               {
                   SendClientMessage(playerid, -1, "Regalo con un 30 % de posibilidades de salir");
               }
               case 60..99:
               {
                   SendClientMessage(playerid, -1, "Regalo con un 40 % de posibilidades de salir");
               }
case 100:
   {
                   SendClientMessage(playerid, -1, "Regalo con un 1 % de posibilidades de salir");
               }
       }
       for(new j=0; j<MAX_PLAYERS; j++)
        {
      if(!strcmp(aUserR[i][j], "nadie", true) || !strcmp(aUserR[i][j], "nada", true))
      {
         InfoArbol[i][cantU]++;
                  aUserR[i][j] = name;
                  return 1;
          }
          }
   }
}
return 1;
}

function CargarArboles()
{
new file[128] = "Arboles.ini";
new names[50];
if(fexist(file))
{
InfoArbol[0][aPosX] = dini_Float(file, "aPosX[0]");
InfoArbol[1][aPosX] = dini_Float(file, "aPosX[1]");
InfoArbol[2][aPosX] = dini_Float(file, "aPosX[2]");
InfoArbol[0][aPosY] = dini_Float(file, "aPosY[0]");
InfoArbol[1][aPosY] = dini_Float(file, "aPosY[1]");
InfoArbol[2][aPosY] = dini_Float(file, "aPosY[2]");
InfoArbol[0][aPosZ] = dini_Float(file, "aPosZ[0]");
InfoArbol[1][aPosZ] = dini_Float(file, "aPosZ[1]");
InfoArbol[2][aPosZ] = dini_Float(file, "aPosZ[2]");
InfoArbol[0][cantU] = dini_Int(file, "cantU[0]");
InfoArbol[1][cantU] = dini_Int(file, "cantU[1]");
InfoArbol[2][cantU] = dini_Int(file,"cantU[2]");
}
for(new i=0; i<MAX_ARBOLES; i++)
  {
   for(new j=0; j<MAX_PLAYERS; j++)
{
   if(fexist(file))
{
	format(names, 50, "nombreU[%d][%d]", i, j);
	strcat(aUserR[i][j], dini_Get(file, names));
    if(!strlen(aUserR[i][j])) aUserR[i][j] = "nadie";
  }
}
}
for(new i=0; i<MAX_ARBOLES; i++)
  {
if(InfoArbol[i][aPosX] != 0)
{
		InfoArbol[i][aMapA][0] = CreateObject(19076, InfoArbol[i][aPosX], InfoArbol[i][aPosY], InfoArbol[i][aPosZ]-1.0,0.0,0.0,300);
		InfoArbol[i][aMapA][1] = CreateObject(19054, InfoArbol[i][aPosX], InfoArbol[i][aPosY]+1.0, InfoArbol[i][aPosZ]-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][2] = CreateObject(19058, InfoArbol[i][aPosX]+1.0,InfoArbol[i][aPosY], InfoArbol[i][aPosZ]-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][3] = CreateObject(19056, InfoArbol[i][aPosX], InfoArbol[i][aPosY]-1.0, InfoArbol[i][aPosZ]-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][4] = CreateObject(19057, InfoArbol[i][aPosX]-1.0, InfoArbol[i][aPosY], InfoArbol[i][aPosZ]-0.4,0,0,0.0,300);
    	InfoArbol[i][aMapA][5] = CreateObject(19058, InfoArbol[i][aPosX]-1.5, InfoArbol[i][aPosY]+1.5, InfoArbol[i][aPosZ]-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][6] = CreateObject(19055, InfoArbol[i][aPosX]+1.5, InfoArbol[i][aPosY]-1.5, InfoArbol[i][aPosZ]-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][7] = CreateObject(19057, InfoArbol[i][aPosX]+1.5, InfoArbol[i][aPosY]+1.5, InfoArbol[i][aPosZ]-1.0,0,0,0.0,300);
    	InfoArbol[i][aMapA][8] = CreateObject(19054, InfoArbol[i][aPosX]-1.5, InfoArbol[i][aPosY]-1.5, InfoArbol[i][aPosZ],0,0,0.0,300);
    	InfoArbol[i][aMapA][9] = CreateObject(3526, InfoArbol[i][aPosX], InfoArbol[i][aPosY], InfoArbol[i][aPosZ]-1.0,0,0,0,300);
        InfoArbol[i][aLabA] = Create3DTextLabel("Usa {0000FF}/regalo{FFFFFF} para obtener uno", -1, InfoArbol[i][aPosX], InfoArbol[i][aPosY], InfoArbol[i][aPosZ], 12.0, 0, 0);
}
}
return 1;
}

stock GuardarArboles()
{
new file[20] = "Arboles.ini";
new idA[128];
for(new i=0; i<MAX_ARBOLES; i++)
{
     for(new j=0; j<MAX_PLAYERS; j++)
	{
 		if(strcmp("nadie", aUserR[i][j], true))
   		{
  			format(idA, 128, "nombreU[%d][%d]", i, j);
  			dini_Set(file, idA, aUserR[i][j]);
    	}
	}
format(idA, 10, "cantU[%d]", i);
	dini_IntSet(file, idA, InfoArbol[i][cantU]);
    format(idA, 10, "aPosX[%d]", i);
    dini_FloatSet(file, idA, InfoArbol[i][aPosX]);
  	format(idA, 10, "aPosY[%d]", i);
  	dini_FloatSet(file, idA, InfoArbol[i][aPosY]);
	format(idA, 10, "aPosZ[%d]", i);
 	dini_FloatSet(file, idA, InfoArbol[i][aPosZ]);
}
return 1;
}


stock ResetearVariablesArbol()
{
for(new i=0; i< MAX_ARBOLES; i++)
{
   for(new j=0; j<MAX_PLAYERS; j++)
{
aUserR[i][j] = "nadie";
}
InfoArbol[i][aPosX] = 0;
InfoArbol[i][aPosY] = 0;
InfoArbol[i][aPosZ] = 0;
}
return 1;
}
Reply
#2

Alguien me ayuda plis
Reply
#3

Por quй no lo mapeas con MTA o un Map Editor y asн queda fijo? por quй hacerlo con script?. Es al pedo.
Reply
#4

Si puede ser es buena, lo tomarй en cuenta encerio.
Una duda sobre el tema del /regalo porque cuando toman un regalo por ejemplo te toca una edc lo banea el anticheat?
Reply
#5

Porque seguramente el regalo utiliza una funcion por defecto de samp y el anticheat lo detecta. El gm quizбs usa funciones propias en reemplazo a las por defecto, eso se hace para que funcione como anticheat.

Por ejemplo cuando te colocas dinero en un server y se te resta. Es porque el cheat de dinero usa una funciуn por defecto del samp que es GivePlayerMoney y seguramente el GM en lugar de usar esa variable usa una modificada. Como SafeGiveMoney, DarDinero, entre otras.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)