23.12.2015, 15:00
Hola porfavor lean todo para que puedan entender... estoy creando un server de juegos del hambre, para poder entrar a la guerra o arena los jugadores deben situarse en un checkpoint para ir a la arena correspondiente y al estar 10 jugadores dentro del checkpoint estos son teletransportados al mapeo donde empieza la guerra.
Todo esto funciona BIEN siempre y cuando pruebe el sv como local y yo sea el unico que este conectado, en ese caso me teletransporta efectivamente al lugar correspondiente y configuro el codigo para que al haber 1 persona en el checkpoint se teletransporte en vez de 10 como debe ser.
asi:
Entonces cuando hay solo 1 persona en el server funciona bien pero en cambio si se conecta otra persona me pasan 2 situaciones diferentes
1.-
EN ESTE CASO APARECEN BIEN LA CANTIDAD DE PERSONAS EN EL CHECKPOINT PERO NO ME TELETRANSPORTA A NINGUN LADO A PESAR DE TENER CONFIGURADO EL CODIGO PARA QUE AL HABER 2 PERSONAS EN EL CHECKPOINT NOS TELETRANSPORTE.
2.- LO OTRO QUE PUEDE PASAR Y ES MAS COMUN ES QUE SOLO LE FUNCIONE A 1 PERSONA EL CHECKPOINT (id 0), SE TELETRANSPORTE Y TODO ESO, PERO AL OTRO EL CHECKPOINT NO LO DETECTA o falla de alguna u otra manera.
en fin, les dejo todo el codigo:
En conclusion, tengo 2 checkpoints los cuales te teletransportan, quiero que al haber 10 personas dentro del checkpoint los lleve a todos a un cierto lugar lo cual esta fallando y no se en que. AYUDA!
Todo esto funciona BIEN siempre y cuando pruebe el sv como local y yo sea el unico que este conectado, en ese caso me teletransporta efectivamente al lugar correspondiente y configuro el codigo para que al haber 1 persona en el checkpoint se teletransporte en vez de 10 como debe ser.
asi:
pawn Код:
if(checkpointid == checkarena1[playerid])
{
new strings[500];
format(strings, 500, "%d/10 guerreros esperando para entrar en la ARENA 1...",GetOnLinePlayers());
TextDrawSetString(players, strings);
TextDrawShowForPlayer(playerid, players);
if(gentearena1 == 0) //eso es lo que cambio para ver cuanto estan en el checkpoint, no se si sea ahi el error.
{
new Random = random(sizeof(RandomSpawns));
SetPlayerPos(playerid, RandomSpawns[Random][0], RandomSpawns[Random][1], RandomSpawns[Random][2]);
SetPlayerFacingAngle(playerid, RandomSpawns[Random][3]);
TimerConteoArena1[playerid] = SetTimerEx("ConteoArena1", 1000, true, "i", playerid);
TogglePlayerControllable(playerid,0);
ronda1= 1;
SendClientMessage(playerid, -1, "El juego comenzarб en breve, prepбrate para empezar!");
ArenaJugador[playerid] = 1;
barra[playerid] = CreateProgressBar(500.00, 107.00, 106.50, 19.20, -1, 100.0);
SetProgressBarMaxValue(barra[playerid], 100.0);
SetProgressBarValue(barra[playerid], 0);
GivePlayerMoney(playerid,10);
jugando[playerid] = 0;
TextDrawShowForPlayer(playerid, Textdraw1);
JugadoresArena1++;
}
if(ronda1 == 1)
{
new strings3[501];
format(strings3, 501, "Espera hasta que termine la Arena.",GetOnLinePlayers());
TextDrawSetString(players, strings3);
TextDrawShowForPlayer(playerid, players);
}
}
1.-
EN ESTE CASO APARECEN BIEN LA CANTIDAD DE PERSONAS EN EL CHECKPOINT PERO NO ME TELETRANSPORTA A NINGUN LADO A PESAR DE TENER CONFIGURADO EL CODIGO PARA QUE AL HABER 2 PERSONAS EN EL CHECKPOINT NOS TELETRANSPORTE.
2.- LO OTRO QUE PUEDE PASAR Y ES MAS COMUN ES QUE SOLO LE FUNCIONE A 1 PERSONA EL CHECKPOINT (id 0), SE TELETRANSPORTE Y TODO ESO, PERO AL OTRO EL CHECKPOINT NO LO DETECTA o falla de alguna u otra manera.
en fin, les dejo todo el codigo:
pawn Код:
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(checkpointid == checkarena1[playerid])
{
new strings[500];
format(strings, 500, "%d/10 guerreros esperando para entrar en la ARENA 1...",GetOnLinePlayers());
TextDrawSetString(players, strings);
TextDrawShowForPlayer(playerid, players);
if(gentearena1 == 10)
{
new Random = random(sizeof(RandomSpawns));
SetPlayerPos(playerid, RandomSpawns[Random][0], RandomSpawns[Random][1], RandomSpawns[Random][2]);
SetPlayerFacingAngle(playerid, RandomSpawns[Random][3]);
TimerConteoArena1[playerid] = SetTimerEx("ConteoArena1", 1000, true, "i", playerid);
TogglePlayerControllable(playerid,0);
ronda1= 1;
SendClientMessage(playerid, -1, "El juego comenzarб en breve, prepбrate para empezar!");
ArenaJugador[playerid] = 1;
barra[playerid] = CreateProgressBar(500.00, 107.00, 106.50, 19.20, -1, 100.0);
SetProgressBarMaxValue(barra[playerid], 100.0);
SetProgressBarValue(barra[playerid], 0);
GivePlayerMoney(playerid,10);
jugando[playerid] = 0;
TextDrawShowForPlayer(playerid, Textdraw1);
JugadoresArena1++;
}
if(ronda1 == 1)
{
new strings3[501];
format(strings3, 501, "Espera hasta que termine la Arena.",GetOnLinePlayers());
TextDrawSetString(players, strings3);
TextDrawShowForPlayer(playerid, players);
}
}
if(checkpointid == checkarena2[playerid])
{
new stringss[550];
format(stringss, 550, "%d/10 guerreros esperando para entrar en la ARENA 1...",GetOnLinePlayers());
TextDrawSetString(players, stringss);
TextDrawShowForPlayer(playerid, players);
if(ronda2 == 1)
{
new stringss2[505];
format(stringss2, 505, "Espera hasta que termine la Arena.",GetOnLinePlayers());
TextDrawSetString(players, stringss2);
TextDrawShowForPlayer(playerid, players);
}
if(gentearena2 == 10)
{
new Random3 = random(sizeof(RandomSpawns2));
SetPlayerPos(playerid, RandomSpawns2[Random3][0], RandomSpawns2[Random3][1], RandomSpawns2[Random3][2]);
SetPlayerFacingAngle(playerid, RandomSpawns2[Random3][3]);
TimerConteoArena2[playerid] = SetTimerEx("ConteoArena2", 1000, true, "i", playerid);
TogglePlayerControllable(playerid,0);
ronda2= 1;
SendClientMessage(playerid, -1, "El juego comenzarб en breve, prepбrate para empezar!");
ArenaJugador[playerid] = 1;
barra[playerid] = CreateProgressBar(500.00, 107.00, 106.50, 19.20, -1, 100.0);
SetProgressBarMaxValue(barra[playerid], 100.0);
SetProgressBarValue(barra[playerid], 0);
GivePlayerMoney(playerid,10);
jugando[playerid] = 0;
TextDrawShowForPlayer(playerid, Textdraw1);
JugadoresArena2++;
}
}
return 1;
}
pawn Код:
new JugadoresArena1;
new gentearena1;
new gentearena2;
new JugadoresArena2;
new ronda1,jugadores; new jugando[MAX_PLAYERS];