[Ayuda] Sistema de telefonos
#1

Hola a todos, creo este tema por una duda que tengo y que espero me puedan ayudar, la cosa va asн, en mi servidor RP cuando compras un telйfono en el 24/7, el numero de telйfono es obtenido random, puede caerte un numero aleatorio, en esa parte todo bien, pero si lo pensamos bien, en un futuro suponiendo que fulano compra un telйfono, le da el numero 454545 y mas tarde por casualidad de la vida pedro compra un telйfono y le cae el mismo numero, se creearia un bug, que como ya saben, en caso de que los dos estйn conectados y llamen a pedro, la llamada les llegarнa a los 2, ya que los 2 tienen los mismos nъmeros de telйfono, no se si lo recuerden, pero este bug sucediу en CM, hace tiempo, y bueno, espero que lo hayan entendido, lo que quiero es que al comprar un telйfono, en el futuro el mismo numero random no le pueda caer a nadie mas, gracias!

Este es el cуdigo que tengo actualmente.

Код:
new Telefonorandom = 100000 + random(899999);
InfoPlayer[playerid][pCelular] = Telefonorandom;
SendClientMessage(playerid, COLOR_WHITE, "Has comprado un celular por 1500.);
Costo(playerid, 1500);
return 1;
Reply
#2

La posibilidad de que eso ocurra es muy pequeсa (1/899999), es extremadamente improbable que ocurra. Yo lo que harнa serнa dejarlo como estб, y en el hipotйtico caso de que ocurra, simplemente setear otro nъmero al user bug.
Reply
#3

Como bien dice Braun es prбcticamente improbable, aъn asн dejarнa la opciуn de que el usuario pueda re-vender su mуvil por si el propio usuario detecta anomalнas con el telйfono causadas por este bug, pero es casi igual de probable que te toque la loterнa a que salga un numero de entre 999.999 repetido.
Reply
#4

http://pastebin.com/KngN2mKA

mira el codigo te solucionara el problema.
saludos.
Reply
#5

El cуdigo lleva hacia ninguna parte jaja, esta caнdo o algo asн.
Reply
#6

Quote:
Originally Posted by lanci112
Посмотреть сообщение
El cуdigo lleva hacia ninguna parte jaja, esta caнdo o algo asн.

no, anda perfecto, pero puede ser que sea uno de los que no pueden entrar por la causa que banean las ip de tal pais.
aca te deje el code.
saludos.

pawn Код:
/*
    * ## LEASE ATENTAMENTE PARA NO CONVERTIRSE EN LAMMER!!.: :D ##
    *
    * Estи Simple FILTERSCRIPT esta hecho especialmente para http://www.forum.sa-mp.com
    * NO Publicar estи FILTERSCRIPT en Otros foros de SA-MP y hacerse pasar por el creador del CODE.
    *
    * Codigo Creado Por OTACON
    *
    * CREDITOS:
    *     OTACON: Realizacion y Idea de creacion del code.
    *     TЩ: Modificacion libremente respetando lo mencionado ;).
    *
    *    NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! :D xD ;)
    *
    *                Prohibido TOTALMENTE el Robo de Crйditos o la
    *                  Publicaciуn de este FILTERSCRIPT sin Mi Permiso.
*/

/*
    * ## READ CAREFULLY TO AVOID BECOMING LAMMER!.: :D ##
    *
    * This simple FILTERSCRIPT is made especially for http://www.forum.sa-mp.com
    * DO NOT Post the FILTERSCRIPT in Other SAMP forums and impersonating the creator of the CODE.
    *
    * Code Created By OTACON
    *
    * CREDITS:
    *     OTACON: Idea Making and code creation.
    *     YOUR: Modification freely respecting the above ;).
    *
    *    NOTE: Less Credits for those who criticize me.. JO'PUTAS! :D xD ;)
    *
    *                        FULLY spaces Theft Credit or
    *                 Publication of this FILTERSCRIPT without my permission.
*/


// MINI SISTEMA DE TELEFONO MOVIL (BASE) by OTACON
#include <a_samp>
#include <zcmd>
#include <sscanf2>

//variables generales
#define MAX_CREDITOS (10) //10 llamadas disponibles
new bool:NumeroOcupado[MAX_PLAYERS],
NumeroTelefono[MAX_PLAYERS],
bool:TelefonoComprado[MAX_PLAYERS],
NumeroTelefonoEntrante[MAX_PLAYERS],
CreditosTelefono[MAX_PLAYERS];

//cargar creditos al movil
CMD:creditos(playerid, params[]) {
    if(TelefonoComprado[playerid] == false) return SendClientMessage(playerid,-1,"no tienes un movil");
    if(NumeroOcupado[playerid] == true) return SendClientMessage(playerid,-1,"estas en una llamada");
    if(CreditosTelefono[playerid] >= MAX_CREDITOS) return SendClientMessage(playerid,-1,"el movil ya tiene creditos suficientes ");
    if(CreditosTelefono[playerid] >= 1) return SendClientMessage(playerid,-1,"el movil aun tiene creditos");
    CreditosTelefono[playerid] = MAX_CREDITOS;
    SendClientMessage(playerid,-1,"haz cargado creditos al telefono movil");
    return true;
}
//hablar por el movil
CMD:hablar(playerid, params[]) {
    new dataphone[100];
    if(NumeroOcupado[playerid] == false) return SendClientMessage(playerid,-1,"no estas en una llamada");
    if(sscanf(params, "s[100]", params[0])) return SendClientMessage(playerid, -1, "Utiliza: /habrar [texto]");
    for(new player, user = GetMaxPlayers(); player != user; player++) {
        if(!IsPlayerConnected(player)) continue;
        if(NumeroTelefono[player] == NumeroTelefonoEntrante[playerid] && NumeroTelefono[player] != NumeroTelefono[playerid]) {
            format(dataphone,sizeof(dataphone),"mensaje enviado %s, numero: %d", params[0], NumeroTelefonoEntrante[playerid]);
            SendClientMessage(player,-1,dataphone);
            format(dataphone,sizeof(dataphone),"mensaje enviado %s, numero: %d", params[0], NumeroTelefonoEntrante[playerid]);
            SendClientMessage(playerid,-1,dataphone);
        }
    }
    return true;
}
//para cortar la llamada
CMD:colgar(playerid, params[]) {
    if(NumeroOcupado[playerid] == false) return SendClientMessage(playerid,-1,"no estas en una llamada");
    NumeroOcupado[playerid] = false;
    NumeroTelefonoEntrante[playerid] = -1;
    SendClientMessage(playerid,-1,"colgaste la llamada!.");
    return true;
}
//para iniciar la llamada
CMD:llamar(playerid, params[]) {
    new dataphone[100];
    if(TelefonoComprado[playerid] == false) return SendClientMessage(playerid,-1,"no tienes un movil");
    if(NumeroOcupado[playerid] == true) return SendClientMessage(playerid,-1,"ya estas en una llamada");
    if(CreditosTelefono[playerid] <= 0) return SendClientMessage(playerid,-1,"el movil no tiene creditos");
    if(sscanf(params, "ds[100]", params[0], params[1])) return SendClientMessage(playerid, -1, "Utiliza: /llamar [numero] [texto]");
    for(new player, user = GetMaxPlayers(); player != user; player++) {
        if(!IsPlayerConnected(player)) continue;
        if(NumeroTelefono[player] != params[0] && NumeroOcupado[player] == true && (NumeroTelefono[playerid] == params[0])) {
            SendClientMessage(playerid,-1,"numero no localizado o ocupado!.");
        } else {
            SendClientMessage(playerid,-1,"numero si localizado!.");
            SendClientMessage(playerid,-1,"mensaje enviado!.");
            format(dataphone,sizeof(dataphone),"haz llamado al numero: %d., mensaje enviado: %s", NumeroTelefono[player], params[1]);
            SendClientMessage(playerid,-1,dataphone);
            format(dataphone,sizeof(dataphone),"el numero: %d te ha lladado, mensaje enviado: %s", NumeroTelefono[playerid], params[1]);
            SendClientMessage(player,-1,dataphone);
            NumeroOcupado[playerid] = true;
            NumeroOcupado[player] = true;
            NumeroTelefonoEntrante[player] = NumeroTelefono[playerid];
            CreditosTelefono[playerid] --;
            SendClientMessage(player,-1,"usa  el ocmando /hablar para responder!.");
        }
    }
    return true;
}
//para comprar el movil
CMD:telefono(playerid, params[]) {
    new dataphone[100];
    if(TelefonoComprado[playerid] == true) return SendClientMessage(playerid,-1,"ya tienes un movil");
    new telefonocomprado = random(999999999);
    for(new player, user = GetMaxPlayers(); player != user; player++) {
        if(!IsPlayerConnected(player)) continue;
        if(NumeroTelefono[player] == telefonocomprado && (player == playerid)) continue;
        NumeroTelefono[playerid] = telefonocomprado;
        TelefonoComprado[playerid] = true; break;
    }
    format(dataphone,sizeof(dataphone),"haz comprado un telefono movil con el numero: %d",NumeroTelefono[playerid]);
    SendClientMessage(playerid,-1,dataphone);
    return true;
}
// MINI SISTEMA DE TELEFONO MOVIL (BASE) by OTACON

/*
    * ## LEASE ATENTAMENTE PARA NO CONVERTIRSE EN LAMMER!!.: :D ##
    *
    * Estи Simple FILTERSCRIPT esta hecho especialmente para http://www.forum.sa-mp.com
    * NO Publicar estи FILTERSCRIPT en Otros foros de SA-MP y hacerse pasar por el creador del CODE.
    *
    * Codigo Creado Por OTACON
    *
    * CREDITOS:
    *     OTACON: Realizacion y Idea de creacion del code.
    *     TЩ: Modificacion libremente respetando lo mencionado ;).
    *
    *    NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! :D xD ;)
    *
    *                Prohibido TOTALMENTE el Robo de Crйditos o la
    *                  Publicaciуn de este FILTERSCRIPT sin Mi Permiso.
*/

/*
    * ## READ CAREFULLY TO AVOID BECOMING LAMMER!.: :D ##
    *
    * This simple FILTERSCRIPT is made especially for http://www.forum.sa-mp.com
    * DO NOT Post the FILTERSCRIPT in Other SAMP forums and impersonating the creator of the CODE.
    *
    * Code Created By OTACON
    *
    * CREDITS:
    *     OTACON: Idea Making and code creation.
    *     YOUR: Modification freely respecting the above ;).
    *
    *    NOTE: Less Credits for those who criticize me.. JO'PUTAS! :D xD ;)
    *
    *                        FULLY spaces Theft Credit or
    *                 Publication of this FILTERSCRIPT without my permission.
*/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)