new elevador; new elevador2;
public OnGameModeInit() { Create3DTextLabel("USO: /up ", 0x33AA33AA, x.x, x, x.x, 40.0, 0, 0); Create3DTextLabel("USO: /down", 0x33AA33AA, x.x, x, x.x, 40.0, 0, 0); elevador = CreateObject(x, x.x, x, x.x, 0.00000, 0.00000, 4.44000); return 1; }
CMD:up(playerid, params[]) { MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); SendClientMessage(playerid, COLOR_GREEN, "UP=subes"); GivePlayerMoney(playerid, -1000); if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); ///esta funcion como las de timer y range no funcionan return 1; } CMD:down(playerid, params[]) { MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); GivePlayerMoney(playerid, -1000); if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");///esta funcion como las de timer y range no funcionan SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas"); return 1; }
CMD:up(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!"); if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); SendClientMessage(playerid, COLOR_GREEN, "UP=subes"); GivePlayerMoney(playerid, -1000); return 1; } CMD:down(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!"); if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); GivePlayerMoney(playerid, -1000); SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas"); return 1; }
forward elevador(); public elevador() { if(IsObjectMoving(elevador2) || IsObjectMoving(elevador)) return 0; for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) { if(IsPlayerConnected(playerid)) { if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) { if(GetPlayerMoney(playerid) < 1000) { SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); continue; } MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); SendClientMessage(playerid, COLOR_GREEN, "UP=subes"); GivePlayerMoney(playerid, -1000); break; } else if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) { if(GetPlayerMoney(playerid) < 1000) { SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); continue; } MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); GivePlayerMoney(playerid, -1000); SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas"); break; } } } return 1; }
Entiendo.
Lo primero es poner la lнnea del GetPlayerMoney al principio y no al final. En cuanto al SetTimer y al SendClientMessage, debes de tener en cuenta que lo que estas haciendo es comprobar si el jugador ESTБ en ese rango, pero en el ejemplo que has puesto, lo que quieres comprobar es si un jugador NO ESTБ en un rango determinado. Para eso tienes que aсadir un " ! " al if. Eso hace que todo valor que no sea 0 o false se convierte en 1 o true. Ejemplo: if(!IsPlayerInRangeOfPoint(playerid, 7.0, x,x,x,x,)) { SendClientMessage(playerid,0xFFFFFFFF,"No estas en el elevador!"); return 1; } No te tienes que olvidar de aсadir el return para evitar que el resto del script se siga ejecutando. En cualquier caso, el cуdigo deberнa de quedar asн: Код:
CMD:up(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!"); if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); SendClientMessage(playerid, COLOR_GREEN, "UP=subes"); GivePlayerMoney(playerid, -1000); return 1; } CMD:down(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!"); if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); GivePlayerMoney(playerid, -1000); SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas"); return 1; } Код:
forward elevador(); public elevador() { if(IsObjectMoving(elevador2) || IsObjectMoving(elevador)) return 0; for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) { if(IsPlayerConnected(playerid)) { if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) { if(GetPlayerMoney(playerid) < 1000) { SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); continue; } MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); SendClientMessage(playerid, COLOR_GREEN, "UP=subes"); GivePlayerMoney(playerid, -1000); break; } else if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) { if(GetPlayerMoney(playerid) < 1000) { SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); continue; } MoveObject(elevador2, x.x, x, x.x, 0.6); MoveObject(elevador, x.x, x, x.x, 0.6); GivePlayerMoney(playerid, -1000); SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas"); break; } } } return 1; } |