09.12.2014, 23:34
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:
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; }