Bueno, en mi gamemode (no el de ZC, otro) hay un sistema de armario de casas muy buenos, pero.. estб incompleto, o sea, lo ъnico que falta es un comando para abrir y cerrar armario. Mientras tal comando no estй, no se podrб acceder a tales funciones. Me parece mejor crear un /llavesarmario que al estar cerrado y pongas el comando lo abra, y al estar abierto y pongas el comando lo cierre, para no hacer dos comandos a la vez y simplificar trabajo.
pawn Код:
if(strcmp(cmd, "/armario", true) == 0)
{
if(IsACaravana(playerid)) { SendClientMessage(playerid, ROJO_OSCURO, "* La caravana no tiene armario."); return 1;}
if (JugadorEnArea(100.0, playerid,CasaInfo[Restaurante[playerid]][cSx],CasaInfo[Restaurante[playerid]][cSy],CasaInfo[Restaurante[playerid]][cSz]))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, BLANCO, "Uso: /armario [opciуn]");
SendClientMessage(playerid, GRIS, "Opciones Disponibles: informacion, guardar, sacar");
return 1;
}
if(strcmp(tmp, "sacar", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, BLANCO, "Uso: /armario guardar [opciуn]");
SendClientMessage(playerid, GRIS, "Opciones Disponibles: Arma - Materiales - Dinero - Marihuana - Crack - Alambres - Bombas - Gasolina");
return 1;
}
if(strcmp(tmp, "arma", true) == 0)
{
ReduceTime[playerid] = 1;
SetTimerEx("ReduceTimer", 3000, false, "i", playerid);
for(new slot = 0; slot != 10; slot++)
{
if(CasaInfo[Restaurante[playerid]][cGun][slot] >= 1 && 46 >= CasaInfo[Restaurante[playerid]][cGun][slot])
{
new gunname[24];
GetWeaponName(CasaInfo[Restaurante[playerid]][cGun][slot], gunname, sizeof(gunname));
EntregarArma(playerid, CasaInfo[Restaurante[playerid]][cGun][slot], CasaInfo[Restaurante[playerid]][cAmmo][slot]);
format(string, sizeof(string), "* Has sacado una %s (Municiуn: %i) del armario.", gunname, CasaInfo[Restaurante[playerid]][cAmmo][slot]);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre el armario y saca un arma.", NombreJugador(playerid));
MandarMensajeCercano(30.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
CasaInfo[Restaurante[playerid]][cGun][slot] = NOEXISTE;
CasaInfo[Restaurante[playerid]][cAmmo][slot] = NOEXISTE;
GuardarCasa(Restaurante[playerid]);
return 1;
}
}
SendClientMessage(playerid, ROJO_OSCURO, "* No hay armas en el armario.");
return 1;
}
if(strcmp(tmp, "dinero", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar dinero [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cDinero] >= moneys)
{
CasaInfo[Restaurante[playerid]][cDinero] -= moneys;
JugadorInfo[playerid][jDinero] += moneys;
format(string, sizeof(string), "* Has sacado $%d dуlares del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algo de dinero.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "marihuana", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar marihuana [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cMarihuana] >= moneys)
{
CasaInfo[Restaurante[playerid]][cMarihuana] -= moneys;
JugadorInfo[playerid][jMarihuana] += moneys;
format(string, sizeof(string), "* Has sacado %d gramos de marihuana del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algo de marihuana.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "crack", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar crack [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cCrack] >= moneys)
{
CasaInfo[Restaurante[playerid]][cCrack] -= moneys;
JugadorInfo[playerid][jCrack] += moneys;
format(string, sizeof(string), "* Has sacado %d gramos de crack del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algo de crack.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "alambres", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar alambres [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cAlambres] >= moneys)
{
CasaInfo[Restaurante[playerid]][cAlambres] -= moneys;
JugadorInfo[playerid][jChatarra] += moneys;
format(string, sizeof(string), "* Has sacado %d alambres del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algunos alambres.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "gasolina", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar gasolina [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cGasolina] >= moneys)
{
CasaInfo[Restaurante[playerid]][cGasolina] -= moneys;
JugadorInfo[playerid][jLataGas] += moneys;
format(string, sizeof(string), "* Has sacado %d latas de gasolina del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algunos materiales.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "materiales", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario sacar materiales [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(CasaInfo[Restaurante[playerid]][cMateriales] >= moneys)
{
CasaInfo[Restaurante[playerid]][cMateriales] -= moneys;
JugadorInfo[playerid][jMateriales] += moneys;
format(string, sizeof(string), "* Has sacado %d materiales del armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y saca algunos materiales.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No hay esa cantidad.");
return 1;
}
}
}
if(strcmp(tmp, "guardar", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, BLANCO, "Uso: /armario guardar [opciуn]");
SendClientMessage(playerid, GRIS, "Opciones Disponibles: Arma - Materiales - Dinero - Marihuana - Crack - Alambres - Bombas - Gasolina");
return 1;
}
if(strcmp(tmp, "materiales", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar materiales [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jMateriales] >= moneys)
{
CasaInfo[Restaurante[playerid]][cMateriales] += moneys;
JugadorInfo[playerid][jMateriales] -= moneys;
format(string, sizeof(string), "* Has dejado %d materiales en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algunos materiales.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "gasolina", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar gasolina [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jLataGas] >= moneys)
{
CasaInfo[Restaurante[playerid]][cGasolina] += moneys;
JugadorInfo[playerid][jLataGas] -= moneys;
format(string, sizeof(string), "* Has dejado %d latas de gasolina en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algunas latas de gasolina.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "bombas", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar bombas [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jBomba] >= moneys)
{
CasaInfo[Restaurante[playerid]][cBombas] += moneys;
JugadorInfo[playerid][jBomba] -= moneys;
format(string, sizeof(string), "* Has dejado %d bombas en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algunas bombas.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "alambres", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar alambres [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jChatarra] >= moneys)
{
CasaInfo[Restaurante[playerid]][cAlambres] += moneys;
JugadorInfo[playerid][jChatarra] -= moneys;
format(string, sizeof(string), "* Has dejado %d alambres en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algunos alambres.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "crack", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar crack [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jCrack] >= moneys)
{
CasaInfo[Restaurante[playerid]][cCrack] += moneys;
JugadorInfo[playerid][jCrack] -= moneys;
format(string, sizeof(string), "* Has dejado %d gramos de crack en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algo de crack.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "dinero", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar dinero [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jDinero] >= moneys)
{
CasaInfo[Restaurante[playerid]][cDinero] += moneys;
JugadorInfo[playerid][jDinero] -= moneys;
format(string, sizeof(string), "* Has dejado %d dуlares en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algo de dinero.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "marihuana", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, GRIS, "Usa: /armario guardar marihuana [Cantidad]");
return 1;
}
moneys = strval(tmp);
if(JugadorInfo[playerid][jMarihuana] >= moneys)
{
CasaInfo[Restaurante[playerid]][cMarihuana] += moneys;
JugadorInfo[playerid][jMarihuana] -= moneys;
format(string, sizeof(string), "* Has dejado %d gramos de marihuana en el armario.", moneys);
SendClientMessage(playerid, CELESTE, string);
format(string, sizeof(string), "* %s abre armario y deja algo de marihuana.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes esa cantidad.");
return 1;
}
}
if(strcmp(tmp, "arma", true) == 0)
{
new gun = GetPlayerWeapon(playerid);
new ammo = GetPlayerAmmo(playerid);
if(gun == 0 || ammo == 0)
{
SendClientMessage(playerid, ROJO_OSCURO, "* No tienes ningъn arma en la mano.");
return 1;
}
ReduceTime[playerid] = 1;
SetTimerEx("ReduceTimer", 3000, false, "i", playerid);
for(new slot = 0; slot != 10; slot++)
{
if(CasaInfo[Restaurante[playerid]][cGun][slot] == NOEXISTE)
{
new gunname[24];
CasaInfo[Restaurante[playerid]][cGun][slot] = gun;
CasaInfo[Restaurante[playerid]][cAmmo][slot] = ammo;
GetWeaponName(gun, gunname, sizeof(gunname));
format(string, sizeof(string), "* Has dejado tu %s (Municiуn: %i) en el armario.", gunname, CasaInfo[Restaurante[playerid]][cAmmo][slot]);
SendClientMessage(playerid, CELESTE, string);
Tiene_Armas[playerid][GetWeaponSlot(gun)] = 0;
Municion[playerid][GetWeaponSlot(gun)] = 0;
JugadorInfo[playerid][jArmas][GetWeaponSlot(gun)] = 0;
JugadorInfo[playerid][jArmas][GetWeaponSlot(gun)] = 0;
RemovePlayerWeapon(playerid, gun);
format(string, sizeof(string), "* %s abre armario y deja un arma.", NombreJugador(playerid));
MandarMensajeCercano(20.0, playerid, string, ROSA,ROSA,ROSA,ROSA,ROSA);
GuardarCasa(Restaurante[playerid]);
return 1;
}
}
SendClientMessage(playerid, ROJO_OSCURO, "* El armario estб lleno.");
}
}
if(strcmp(tmp, "informacion", true) == 0)
{
SendClientMessage(playerid, AMARILLO, " - Informaciуn del armario:");
new count = 1;
for(new slot = 0; slot != 10; slot++)
{
if(CasaInfo[Restaurante[playerid]][cGun][slot]!= NOEXISTE)
{
if(CasaInfo[Restaurante[playerid]][cGun][slot] >= 1 && 46 >= CasaInfo[Restaurante[playerid]][cGun][slot])
{
new gunname[24];
GetWeaponName(CasaInfo[Restaurante[playerid]][cGun][slot], gunname, sizeof(gunname));
format(string, sizeof(string), " - Arma %d: %s (Municiуn: %d)", count, gunname, CasaInfo[Restaurante[playerid]][cAmmo][slot]);
SendClientMessage(playerid, BLANCO, string);
count++;
}
if(CasaInfo[Restaurante[playerid]][cGun][slot] == 47)
{
format(string, sizeof(string), " - %d: Chaleco (Calidad: %d %%)", count, CasaInfo[Restaurante[playerid]][cAmmo][slot]);
SendClientMessage(playerid, BLANCO, string);
count++;
}
}
}
format(string, sizeof(string), " - Dinero (Cantidad: $%d)", CasaInfo[Restaurante[playerid]][cDinero]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Crack (Cantidad: %d gramos)", CasaInfo[Restaurante[playerid]][cCrack]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Marihuana (Cantidad: %d gramos)", CasaInfo[Restaurante[playerid]][cMarihuana]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Alambres (Cantidad: %d)", CasaInfo[Restaurante[playerid]][cAlambres]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Bombas (Cantidad: %d)", CasaInfo[Restaurante[playerid]][cBombas]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Materiales (Cantidad: %d)", CasaInfo[Restaurante[playerid]][cMateriales]);
SendClientMessage(playerid, BLANCO, string);
format(string, sizeof(string), " - Latas de gasolina (Cantidad: %d)", CasaInfo[Restaurante[playerid]][cGasolina]);
SendClientMessage(playerid, BLANCO, string);
return 1;
}
return 1;
}
else
{
SendClientMessage(playerid, ROJO_OSCURO, "* Aquн no hay ningъn armario.");
return 1;
}
}
Asн es, un comando que tenga como funciуn abrir el armario.
Vuelvo a explicar, el gamemode es uno estadounidense, 70.000 lнneas tiene, hace meses lo terminй de traducir al completo, pero tiene sistemas recopilados de varios gamemodes, y algunos de ellos estбn sin terminar.
En йste caso, viene un buen sistema de armarios en las casas para almacenar objetos y demбs, pero necesitarнa un comando que tenga como funciуn abrir el mismo. Sin poder abrir el armario, me es imposible que las funciones ya implementadas funcionen correctamente.
Espero Que Sea Esto Lo Que Quieres Necesitas Modificarle Algunas Cosas Ya Que Noce ue Tipo De GM Es