new Float:pX[MAX_PLAYERS], Float:pY[MAX_PLAYERS], Float:pZ[MAX_PLAYERS], NoPos[MAX_PLAYERS];
public OnPlayerConnect(playerid) //callback OnPlayerConnect, aqui se definen las cosas que pasaran cuando el player se conecte.
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(dini_Exists(archivo)) //En caso de que el archivo exista:
{
SendClientMessage(playerid, 0xFFFFFFFF, "Cuando spawnees se cargara la ultima posicion en la que estuviste!"); //Enviamos un mensaje al jugador
}
else //En caso de que el archivo NO exista:
{
SendClientMessage(playerid, 0xFFFFFFFF, "De ahora en mas, cuando spawnees se cargara la ultima posicion en la que estuviste!"); //Enviamos otro mensaje al jugador
}
return 1; // Cerramos el callback OnPlayerConnect.
}
public OnPlayerDisconnect(playerid, reason) //callback OnPlayerDisconnect, aqui se definen las cosas que pasaran cuando el player se desconecte.
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(dini_Exists(archivo)) //En caso de que el archivo exista:
{
GetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Obtenemos las coordenadas del jugador.
dini_IntSet(archivo, "X", pX[playerid]); //Seteamos que "X" es igual a "pX[playerid]"
dini_IntSet(archivo, "Y", pY[playerid]); //Seteamos que "Y" es igual a "pY[playerid]"
dini_IntSet(archivo, "Z", pZ[playerid]); //Seteamos que "Z" es igual a "pZ[playerid]"
}
else //En caso de que el archivo NO exista:
{
dini_Create(archivo); //Creamos el archivo.
GetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Obtenemos las coordenadas del jugador.
dini_IntSet(archivo, "X", pX[playerid]); //Seteamos que "X" es igual a "pX[playerid]"
dini_IntSet(archivo, "Y", pY[playerid]); //Seteamos que "Y" es igual a "pY[playerid]"
dini_IntSet(archivo, "Z", pZ[playerid]); //Seteamos que "Z" es igual a "pZ[playerid]"
}
return 1; // Cerramos el callback OnPlayerConnect.
}
public OnPlayerSpawn(playerid)
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(NoPos[playerid] == 0) // Nos aseguramos de que el jugador solo tome sus pos viejas cuando spawnea por primera vez.
{
if(dini_Exists(archivo)) // En caso de que el archivo exista,
{
pX[playerid] = dini_Int(archivo, "X"); //Obtenemos el valor de "X" y lo guardamos en "pX"
pY[playerid] = dini_Int(archivo, "Y"); //Obtenemos el valor de "Y" y lo guardamos en "pY"
pZ[playerid] = dini_Int(archivo, "Z"); //Obtenemos el valor de "Z" y lo guardamos en "pZ"
SetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Seteamos las coordenadas del jugador
}
else return 0; // Y en caso de que no exista, no se produce ninguna accion
}
else return 0; // Y en caso de que sea cualquier valor distinto a 0, no pasa nada.
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(NoPos[playerid] == 0)
{
NoPos[playerid] = 1;
}
return 1;
}
Tenйs razon con lo de OnPlayerDeath,no me di cuenta.
Y con respecto a lo de que juntos, los pongo por separado porque sino va a quedar un post todo feo, y ademas luego Chaoz los agregarб a la lista de tutoriales, y seran mas faciles de buscar. Agregando lo de OnPlayerDeath. |
Originally Posted by Chaozman
ah raton me haces trabajar mas a mi
|
public OnPlayerSpawn(playerid)
{
new archivo[256], pname[MAX_PLAYER_NAME]; //Creamos "archivo" y "pname"
GetPlayerName(playerid, pname, sizeof(pname)); //Obtenemos el nombre del jugador
format(archivo, sizeof(archivo), "%s.ini", pname); //Le damos formato a "archivo".
if(NoPos[playerid] == 0) // Nos aseguramos de que el jugador solo tome sus pos viejas cuando spawnea por primera vez.
{
if(dini_Exists(archivo)) // En caso de que el archivo exista,
{
pX[playerid] = dini_Int(archivo, "X"); //Obtenemos el valor de "X" y lo guardamos en "pX"
pY[playerid] = dini_Int(archivo, "Y"); //Obtenemos el valor de "Y" y lo guardamos en "pY"
pZ[playerid] = dini_Int(archivo, "Z"); //Obtenemos el valor de "Z" y lo guardamos en "pZ"
SetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]); //Seteamos las coordenadas del jugador
}// SIMPLEMENTE SE PUEDE SACAR EL ELSE?
} // AQUI TAMBIEN.... O NO???
return 1;
}
Una pregunta de un novato XD
Es Necesario el return y el else, osea se podria usar menos lineas asi o no?? pawn Код:
Y aprovechando el muy buen post de leann (siempre paro aprovechando XD), xq el dini o ****** o djson o etc de inc q sirven para manejar archivos son mas rapidos, yo que sepa los tres usan el fwrite o fread, etc del mismo samp? entoncs como son mas rapidos??, yo pienso que deberian ser mas lentos x la redundancia... y Otra pregunta el Dini es + rapido que el fwrite, etc del samp? GRACIAS X RESOLVER MIS DUDAD. Saludos |