16.04.2013, 00:23
Callback's compatibles con Samp en Espaсol
Este tutorial contiene una lista de todos los callbacks disponibles en SA:MP. Los callbacks se activan, o mejor dicho son llamados cuando ocurre un evento, el cual estб relacionado con el nombre del Callback (por ejemplo OnPlayerSpawn es llamado cuando un jugador spawnea). Los Callbacks tambiйn tienen valores relevantes como parбmetros, por ejemplo, muchos callback tienen el parametro "playerid" que indica al jugador que causo el evento.NOTA: Para ciertas callbacks, el valor devuelto por el callback ('return x;') determina si seguirб siendo llamado en otros scripts. Por ejemplo, OnPlayerCommandText requiere retornar 0 para comprobar que un comando exista o para saber si un comando no funciona, de modo que el callback buscarб, a travйs de los scripts cargados, un comando existente. Devolviendo 1 indica que el comando se ha encontrado y el callback no requiere llamar a otros scripts. Esto es diferente para los callback tales como OnPlayerConnect, de los cuales debe devolver 1 para que sea llamado en otros scripts.
Callbacks:
- OnDialogResponse
- OnEnterExitModShop
- OnFilterScriptExit
- OnFilterScriptInit
- OnGameModeExit
- OnGameModeInit
- OnObjectMoved
- OnPlayerClickMap
- OnPlayerClickPlayer
- OnPlayerClickPlayerTextDraw
- OnPlayerClickTextDraw
- OnPlayerCommandText
- OnPlayerConnect
- OnPlayerDeath
- OnPlayerDisconnect
- OnPlayerEditAttachedObject
- OnPlayerEditObject
- OnPlayerEnterCheckpoint
- OnPlayerEnterRaceCheckpoint
- OnPlayerEnterVehicle
- OnPlayerExitVehicle
- OnPlayerExitedMenu
- OnPlayerGiveDamage
- OnPlayerInteriorChange
- OnPlayerKeyStateChange
- OnPlayerLeaveCheckpoint
- OnPlayerLeaveRaceCheckpoint
- OnPlayerObjectMoved
- OnPlayerPickUpPickup
- OnPlayerPrivmsg
- OnPlayerRequestClass
- OnPlayerRequestSpawn
- OnPlayerSelectObject
- OnPlayerSelectedMenuRow
- OnPlayerSpawn
- OnPlayerStateChange
- OnPlayerTakeDamage
- OnPlayerText
- OnPlayerUpdate
- OnRconCommand
- OnRconLoginAttempt
- OnVehicleDeath
- OnVehicleMod
- OnVehiclePaintjob
- OnVehicleRespray
- OnVehicleSpawn
Sus funciones y parбmetros:
Callback: OnDialogResponse
Este callback es llamado cuando un jugador responde a un diбlogo que se muestra con ShowPlayerDialog haciendo clic en un botуn, al pulsar ENTER/ESC o haciendo doble clic en un elemento de la lista (si se utiliza un cuadro de diбlogo estilo lista).Parametros:
(playerid, dialogid, response, listitem, inputtext[])Ejemplo:
playerid El ID del jugador que respondiу al dialogo
dialogid El ID del diбlogo que el jugador respondiу, asignado en ShowPlayerDialog.
response 1 para el botуn de la izquierda y 0 para el botуn de la derecha (si se muestra un sуlo botуn, siempre sera 1)
listitem La identificaciуn del elemento de la lista seleccionada por el jugador (comienza en 0) (sуlo si se utiliza un cuadro de diбlogo estilo de lista).
inputtext El texto introducido, en el cuadro de entrada de texto, por el jugador o el texto del elemento de lista seleccionado.
Return Devolviendo 0 en este callback pasarб el diбlogo a otro script en caso de que no se adapte al cуdigo que se encuentra en el callback de tu gamemode.
DIALOG_STYLE_MSGBOX<----------------------------------------------------------------------------------------------------------------->
DIALOG_STYLE_INPUT/DIALOG_STYLE_PASSWORDpawn Code:// Definimos el ID del diбlogo para que podamos manejar las respuestas
#define DIALOG_NORMAS 1
// En algun comando
ShowPlayerDialog(playerid, DIALOG_NORMAS, DIALOG_STYLE_MSGBOX, "Normas del Servidor", "- Nada de Cheats\n- Nada de Spam\n- Respeta a los Admins\n\nAceptas las Normas?", "Si", "No");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_NORMAS)
{
if(response) // Si hace clic en "Si" o presiona Enter
{
SendClientMessage(playerid, COLOR_VERDE, "Gracias por aceptar las reglas del servidor!");
}
else // Presiono Esc o hiso clic en No
{
SendClientMessage(playerid, COLOR_RED, "Usted debe estar de acuerdo con las reglas de servidor para jugar aquн.");
Kick(playerid);
}
return 1; // Hemos manejado un diбlogo, por lo que devolverб 1. Como OnPlayerCommandText.
}
return 0; // Usted debe devolver 0 aquн! Al igual que OnPlayerCommandText.
}
DIALOG_STYLE_LISTpawn Code:#define DIALOG_LOGIN 2
// En algun comando
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Por favor introdusca su contraseсa:", "Login", "Cancelar");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_LOGIN)
{
if(!response) // Si hace clic en 'Cancelar' o presiono Esc
{
SendClientMessage(playerid, COLOR_RED, "Debes iniciar sesiуn para jugar aquн. Por favor, cambie su nombre.");
Kick(playerid);
}
else // Presiono ENTER o hizo clic en el boton 'Login'
{
if(ChekearClave(playerid, inputtext))
{
SendClientMessage(playerid, COLOR_ROJO, "Te has Logeado correctamente!");
}
else
{
SendClientMessage(playerid, COLOR_ROJO, "Fallo el logeo.");
// Vuelve a mostrar el ShowPlayerDialog para que vuelva a introducir su clave
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "Por favor introdusca su contraseсa:", "Login", "Cancel");
}
}
return 1; // Hemos manejado un diбlogo, por lo que devolverб 1. Como OnPlayerCommandText.
}
return 0; // Usted debe devolver 0 aquн! Al igual que OnPlayerCommandText.
}
pawn Code:#define DIALOG_ARMAS 3
// En algun comando
ShowPlayerDialog(playerid, DIALOG_ARMAS, DIALOG_STYLE_LIST, "Armas", "Desert Eagle\nAK-47\nCombat Shotgun", "Seleccionar", "Cerrar");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ARMAS)
{
if(response) // Si hace clic en 'Seleccionar' o hizo doble clic en alguna arma
{
// Le da el arma
if(listitem == 0) // Si selecciono el primer elemento(item) - Desert Eagle
{
GivePlayerWeapon(playerid, WEAPON_DEAGLE, 14); // Le da un desert eagle
}
if(listitem == 1) // Si selecciono el segundo elemento(item) - AK-47
{
GivePlayerWeapon(playerid, WEAPON_AK47, 120); // Le da un AK-47
}
if(listitem == 2) // Si selecciono el tercer elemento(item) - Desert Eagle
{
GivePlayerWeapon(playerid, WEAPON_SHOTGSPA, 28); // Le da un Combat Shotgun
}
}
return 1; // Hemos manejado un diбlogo, por lo que devolverб 1. Como OnPlayerCommandText.
}
return 0; // Usted debe devolver 0 aquн! Al igual que OnPlayerCommandText.
}
Callback: OnEnterExitModShop
Este callback es llamado cuando un jugador entra o sale de un mod shop.Parametros:
(playerid,enterexit,interiorid)Ejemplo:
playerid El ID del jugador que entrу o saliу del modshop
enterexit 1 si el jugador entro, o 0 si el jugador salio
interiorid El ID de interior del modshop que el jugador estб entrando/saliendo
Este Callback no maneja devoluciones.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnEnterExitModShop(playerid, enterexit, interiorid)
{
if(enterexit == 0) // Si enterexit es 0 significa que esta saliendo
{
SendClientMessage(playerid, COLOR_WHITE, "Bonito Auto! Se te ha cobreado $100.");
GivePlayerMoney(playerid, -100);
}
return 1;
}
Callback: OnFilterScriptExit
Este callback es llamado cuando un filterscript estб descargada(unload). Sуlo se llama dentro del filterscript que se descarga(unloaded).Parametros:
Este callback no maneja parбmetrosEjemplo:
Return Este callback no devuelve un valor especifico
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnFilterScriptExit()
{
print("\n--------------------------------------");
print(" Mi FS ha sido Descargado");
print("--------------------------------------\n");
return 1;
}
Callback: OnFilterScriptInit
Este callback es llamado cuando un filterscript se carga, sуlo es llamado desde interior de la filterscript que estб siendo iniciado.Parametros:
Este callback no maneja parбmetrosEjemplo:
Return Este callback no devuelve un valor especifico
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Mi FS ha sido cargado");
print("--------------------------------------\n");
return 1;
}
Callback: OnGameModeExit
Este callback es llamado cuando un gamemode termina.Parametros:
Este callback no maneja parбmetrosEjemplo:
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnGameModeExit()
{
print("Termino el Gamemode.");
return 1;
}
Callback: OnGameModeInit
Este callback es llamado cuando el gamemode comienza.Parametros:
This callback has no parametersEjemplo:
Return Este callback no devuelve un valor especifico
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnGameModeInit()
{
print("Iniciando el Gamemode!");
return 1;
}
Callback: OnObjectMoved
Este callback es llamado cuando un objeto se mueve despuйs de usar la funciуn MoveObject.Parametros:
(objectid)Ejemplo:
objectid El ID del objeto que se ha movido
Return Este callback no devuelve un valor especifico
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnObjectMoved(objectid)
{
printf("Se ha terminado de mover el objeto %d.",objectid);
return 1;
}
Callback: OnPlayerClickMap
Este callback es llamado cuando un jugador pone un punto de referencia en el mapa del menu - en modo pausa(haciendo doble clic).Parametros:
(playerid, Float:fX, Float:fY, Float:fZ)
playerid El ID del jugador que marco un punto de referencia en su mapa
Float:fX La coordenada X donde el jugador hizo clic
Float:fY La coordenada Y donde el jugador hizo clic
Float:fZ La coordenada Z donde el jugador hizo clic(Inexacta - Ver nota abajo)
Return Este callback no devuelve un valor especifico
Quote:
Originally Posted by Nota
El valor Z siempre es sуlo una estimaciуn, puede que le resulte ъtil usar un plugin como el plugin MapAndreas para obtener una visiуn mбs precisa de la coordenada Z (o para el teletransporte, el uso SetPlayerPosFindZ).
|
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
SetPlayerPosFindZ(playerid, fX, fY, fZ);
return 1;
}
Callback: OnPlayerClickPlayer
Se llama cuando un jugador hace doble clic en un jugador en el marcador(cuando presiona Tab).Parametros:
(playerid, clickedplayerid, source)Ejemplo:
playerid El ID del jugador que hizo clic en el nombre
clickedplayerid El ID del jugador cuyo nombre se ha hecho clic
source La fuente de donde el jugador hizo clic en el nombre del otro jugador
Quote:
Originally Posted by Nota
Actualmente sуlo hay una 'source' (0 - CLICK_SOURCE_SCOREBOARD). La existencia de este argumento sugiere que un mayor nъmero de fuentes se admita en el futuro.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
new mensaje[32];
format(mensaje, sizeof(mensaje), "Has echo clic en el jugador %d", clickedplayerid);
SendClientMessage(playerid, 0xFFFFFFFF, mensaje);
return 1;
}
Callback: OnPlayerClickPlayerTextDraw
Este callback es llamado cuando un jugador hace clic en un player-TextDraw. No se llama cuando el jugador se cancela el modo de selecciуn (ESC) - eso es en OnPlayerClickTextDraw.Parametros:
(playerid, PlayerText: playertextid)Ejemplo:
playerid El ID del jugador que seleccionу un TextDraw
PlayerText: playertextid El ID del Player-TextDraw que el jugador ha seleccionado.
Return Devolviendo 1/true en este callback impides que se llamen otros scripts. Esto se debe utilizar para indicar que el TextDraw en que se hizo clic se "encontro" y no necesita mas procesamiento(llamadas). Usted debe regresar 0/false si el TextDraw en el que se hizo clic y no se encontro, busque en otros script, igual que en OnPlayerCommandText
<----------------------------------------------------------------------------------------------------------------->pawn Code:new PlayerText:gPlayerTextDraw[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
// Crea el TextDraw
gPlayerTextDraw[playerid] = CreatePlayerTextDraw(playerid, 10.000000, 141.000000, "MiTextDraw");
PlayerTextDrawTextSize(playerid, gPlayerTextDraw[playerid], 60.000000, 20.000000);
PlayerTextDrawAlignment(playerid, gPlayerTextDraw[playerid],0);
PlayerTextDrawBackgroundColor(playerid, gPlayerTextDraw[playerid],0x000000ff);
PlayerTextDrawFont(playerid, gPlayerTextDraw[playerid], 1);
PlayerTextDrawLetterSize(playerid, gPlayerTextDraw[playerid], 0.250000, 1.000000);
PlayerTextDrawColor(playerid, gPlayerTextDraw[playerid], 0xffffffff);
PlayerTextDrawSetProportional(playerid, gPlayerTextDraw[playerid], 1);
PlayerTextDrawSetShadow(playerid, gPlayerTextDraw[playerid], 1);
// Lo hacemos seleccionable
PlayerTextDrawSetSelectable(playerid, gPlayerTextDraw[playerid], 1);
// Lo mostramos al jugador
PlayerTextDrawShow(playerid, gPlayerTextDraw[playerid]);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_SUBMISSION)
{
SelectTextDraw(playerid, 0xFF4040AA);
}
return 1;
}
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid == gPlayerTextDraw[playerid])
{
SendClientMessage(playerid, 0xFFFFFFAA, "Has echo clic en un TextDraw.");
CancelSelectTextDraw(playerid);
}
return 1;
}
Callback: OnPlayerClickTextDraw
Este callback es llamado cuando un jugador hace clic en un TextDraw o cancelado el modo de selecciуn (ESC).Parametros:
(playerid, Text:clickedid,)
playerid El ID del jugador que hizo clic en un TextDraw
Text:clickedid El ID del TextDraw en el que se hizo clic
Return Devolviendo 1/true en este callback impides que se llamen otros scripts. Esto se debe utilizar para indicar que el TextDraw en que se hizo clic se "encontro" y no necesita mas procesamiento(llamadas). Usted debe regresar 0/false si el TextDraw en el que se hizo clic y no se encontro, busque en otros script, igual que en OnPlayerCommandText
Quote:
Originally Posted by Nota
Importante: El бrea seleccionable se define por TextDrawTextSize. Los parбmetros X y Y se pasan a la funciуn que no debe ser cero o negativo.
|
<----------------------------------------------------------------------------------------------------------------->pawn Code:new Text:gTextDraw;
public OnGameModeInit()
{
gTextDraw = TextDrawCreate(10.000000, 141.000000, "MiTextDraw");
TextDrawTextSize(gTextDraw,60.000000, 20.000000);
TextDrawAlignment(gTextDraw,0);
TextDrawBackgroundColor(gTextDraw,0x000000ff);
TextDrawFont(gTextDraw,1);
TextDrawLetterSize(gTextDraw,0.250000, 1.000000);
TextDrawColor(gTextDraw,0xffffffff);
TextDrawSetProportional(gTextDraw,1);
TextDrawSetShadow(gTextDraw,1);
TextDrawSetSelectable(gTextDraw, 1);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_SUBMISSION)
{
TextDrawShowForPlayer(playerid, gTextDraw);
SelectTextDraw(playerid, 0xFF4040AA);
}
return 1;
}
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(clickedid == gTextDraw)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Has hecho clic en un TextDraw.");
CancelSelectTextDraw(playerid);
}
return 1;
}
Callback: OnPlayerCommandText
Este callback es llamado cuando un jugador introduce un comando en la ventana del chat del cliente, por ejemplo, /ayuda.Parametros:
(playerid, cmdtext[])Ejemplo:
playerid El ID del jugador que ejecuto el comando
cmdtext[] El comando que se ejecuta (incluyendo la barra).
Return 0 si el comando no se ha procesado, de lo contrario 1.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/ayuda", true))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Servidor: Este es el comando /ayuda !");
return 1;
// Retornando 1 informa al servidor de que el comando ha sido procesado
// OnPlayerCommandText no se llamarб en otros scripts.
}
return 0;
// Retornando 0 informa al servidor de que el comando no ha sido procesada por este script.
// OnPlayerCommandText serб llamado en otros scripts hasta que uno devuelva(retorne) 1.
// Si el script no devuelve 1, el siguiente mensaje sera mostrado "SERVER: Unknown Command".
}
Callback: OnPlayerConnect
Este callback es llamado cuando un jugador se conecta al servidor.Parametros:
(playeri)Ejemplo:
playerid El ID del jugador que se ha conectado
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerConnect(playerid)
{
new string[64], pNombre[MAX_PLAYER_NAME];
GetPlayerName(playerid,pNombre,MAX_PLAYER_NAME);
format(string,sizeof string,"%s se ha conectado al servidor. Bienvenido!",pNombre);
SendClientMessageToAll(0xFFFFFFAA,string);
return 1;
}
Callback: OnPlayerDeath
Este Callback es llamado cuando un jugador muere.Parametros:
(playerid, killerid, reason)Ejemplo:
playerid El ID del jugador que murio
killerid El ID del jugador que lo matу al jugador que muriу, o INVALID_PLAYER_ID si no fue nadie.
reason La razon por la cual muriу el jugador.
Return Este callback no devuelve un valor especifico.
pawn Code:public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason); // Muestra el asesinato en la ventana killfeed/deathlog/death.
if(killerid != INVALID_PLAYER_ID) // Si el asesino es valido, le dara mas Score y Dinero.
{
pScore[killerid]++;
SetPlayerScore(killerid, pScore[killerid]);
pDinerokillerid] += 100;
GivePlayerMoney(killerid, 100);
}
// Fuera del chekeo se manejan cosas para el jugador que murio(playerid)
// Si killerid es INVALID_PLAYER_ID el jugador(playerid) se quito la vida solo (por ejemplo: cayendo).
pMuertes[playerid]++;
pDinero[playerid] -= 100;
pScore[playerid]--;
SetPlayerScore(playerid, pScore[playerid]);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, pDinero[playerid]);
return 1;
}
Quote:
Originally Posted by Nota
Importante:Usted debe comprobar si killerid es igual a INVALID_PLAYER_ID antes de usarlo en un array, ya que harб que el script se detenga. Vйase el ejemplo anterior.
|
Quote:
Originally Posted by Nota
No es necesario comprobar si killerid es igual a INVALID_PLAYER_ID antes de utilizarlo en SendDeathMessage, ya que INVALID_PLAYER_ID es un parбmetro vбlido(ID killerid) para esta funciуn.
|
Callback: OnPlayerDisconnect
Este callback es llamado cuando un jugador se desconecta del servidor.Parametros:
(playerid, reason)Ejemplo:
playerid El ID del jugador que se desconecto.
reason El ID de la razуn por la cual se desconecto el jugador.
Return Este callback no devuelve un valor especifico.
Ejemplo del envio de mensaje a todos los jugadores, explicandoles la razon por la cual el jugador se desconectad(ya que los mensajes nativos fueron sacados en la version 0.2).Razones:
pawn Code:public OnPlayerDisconnect(playerid, reason)
{
new
string[64],
nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid,nombre,MAX_PLAYER_NAME);
switch(reason)
{
case 0: format(string,sizeof string,"%s salio del servidor. (Tiempo de espera agotado)",nombre);
case 1: format(string,sizeof string,"%s salio del servidor. (Por su propia voluntad)", nombre);
case 2: format(string,sizeof string,"%s salio del servidor. (Kickeado/Baneado)",nombre);
}
SendClientMessageToAll(0xFFFFFFAA,string);
return 1;
}
- 1 Tiempo de espera agotado
- 2 Voluntad propia (salio mediante: /q o mediante Esc - Menu - Salir
- 3 Fue Kickeado o Baneado
Callback: OnPlayerEditAttachedObject
Este callback es llamado cuando un jugador termina el modo de ediciуn de objetos adjuntos(attached).Parametros:
(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)Ejemplo:
playerid El ID del jugador que termino el modo de ediciуn
response 0 si fue cancelado (Esc) o 1 si se hizo clic en el icono guardar
modelid El modelo del objeto adjunto que fue editado
boneid El hueso(bone) del objeto adjunto que fue editado
Float:fOffsetX El desplazamiento X para el objeto adjunto que fue editado
Float:fOffsetY El desplazamiento Y para el objeto adjunto que fue editado
Float:fOffsetZ El desplazamiento Z para el objeto adjunto que fue editado
Float:fRotX La rotaciуn X para el objeto adjunto que fue editado
Float:fRotY La rotaciуn Y para el objeto adjunto que fue editado
Float:fRotZ La rotaciуn Z para el objeto adjunto que fue editado
Float:fScaleX La escala de X para el objeto adjunto que fue editado
Float:fScaleY La escala de Y para el objeto adjunto que fue editado
Float:fScaleZ La escala de Z para el objeto adjunto que fue editado
Return Este callback no devuelve un valor especifico.
pawn Code:enum attached_object_data
{
ao_model,
ao_bone,
Float:ao_x,
Float:ao_y,
Float:ao_z,
Float:ao_rx,
Float:ao_ry,
Float:ao_rz,
Float:ao_sx,
Float:ao_sy,
Float:ao_sz
}
new ao[MAX_PLAYERS][MAX_PLAYER_ATTACHED_OBJECTS][attached_object_data];
// The data should be stored in the above array when attached objects are attached.
public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{
if(response)
{
SendClientMessage(playeird, COLOR_GREEN, "Se ha guardado el objeto adjunto editado.");
ao[playerid][index][ao_x] = fOffsetX;
ao[playerid][index][ao_y] = fOffsetY;
ao[playerid][index][ao_z] = fOffsetZ;
ao[playerid][index][ao_rx] = fRotX;
ao[playerid][index][ao_ry] = fRotY;
ao[playerid][index][ao_rz] = fRotZ;
ao[playerid][index][ao_sx] = fScaleX;
ao[playerid][index][ao_sy] = fScaleY;
ao[playerid][index][ao_sz] = fScaleZ;
}
else
{
SendClientMessage(playeird, COLOR_RED, "No se ha guardado el objeto adjunto editado.");
new i = index;
SetPlayerAttachedObject(playerid, index, modelid, boneid, ao[playerid][i][ao_x], ao[playerid][i][ao_y], ao[playerid][i][ao_z], ao[playerid][i][ao_rx], ao[playerid][i][ao_ry], ao[playerid][i][ao_rz], ao[playerid][i][ao_sx], ao[playerid][i][ao_sy], ao[playerid][i][ao_sz]);
}
return 1;
}
Quote:
Originally Posted by Nota
Importante:Las ediciones deben ser desechados si la respuesta es '0 '(cancelado). Esto debe hacerse mediante el almacenamiento de los desplazamientos(Offset), etc en una matriz ANTES de usar EditAttachedObject.
|
Callback: OnPlayerEditObject
(Porfavor de agregar un cуdigo para restablecer el objeto para el jugador, si йl sale del modo de ediciуn pulsando ESC (otra clбusula sin cуdigo))Parametros:
Este callback es llamado cuando un jugador termina el modo de ediciуn de objetos.
(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)Ejemplo:
playerid El ID del jugador que editу un objeto
playerobject 0 si es un objeto global o 1 si es un playerobject.
objectid El ID del objeto editado
response El tipo de respuesta
Float:fX El desplazamiento X para el objeto que se ha editado
Float:fY El desplazamiento Y para el objeto que se ha editado
Float:fZ El desplazamiento Z para el objeto que se ha editado
Float:fRotX La rotaciуn X para el objeto que fue editado
Float:fRotY La rotaciуn Y para el objeto que fue editado
Float:fRotZ La rotaciуn Z para el objeto que fue editado
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new Float:oldX, Float:oldY, Float:oldZ,
Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // Si se trata de un objeto global, muйvalo para otros jugadores
{
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
// El jugador hace clic en el icono guardar
// Hacer cualquier cosa para guardar la posiciуn del objeto actualizado (y rotaciуn)
}
if(response == EDIT_RESPONSE_CANCEL)
{
//El jugador cancelado, asн que ponga el objeto de nuevo a su antigua posiciуn
if(!playerobject) //El objeto no es un playerobject
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
Callback: OnPlayerEnterCheckpoint
Este callback es llamado cuando un jugador entra en el juego de punto de control para que el jugadorParametros:
(playerid)Ejemplo:
playerid El ID del jugador que entro al checkpoint
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code://En este ejemplo, un checkpoint se crea para el jugador cuando el spawnea,
//luego al entrar al checkpoint, crea un vehнculo y desactiva el checkpoint.
public OnPlayerSpawn(playerid)
{
SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
CreateVehicle(520, 1982.6150, -221.0145, -0.2432, 82.2873, -1, -1, 60000);
DisablePlayerCheckpoint(playerid);
return 1;
}
Callback: OnPlayerEnterRaceCheckpoint
Este callback es llamado cuando un jugador entra en un checkpoint de carrera.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que entra al checkpoint de carrera
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerEnterRaceCheckpoint(playerid)
{
printf("Jugador %d entro en un checkpoint de carrera!",playerid);
return 1;
}
Callback: OnPlayerEnterVehicle
Este callback es llamado cuando un jugador comienza a entrar en un vehнculo, esto significa que el jugador no se encuentra en el vehнculo pero a la vez se llama a este callback.Parametros:
(playerid, vehicleid, ispassenger)Ejemplo:
playerid El ID del jugador que intenta entrar en un vehнculo.
vehicleid El ID del vehнculo del jugador que estб intentando entrar.
ispassenger 0 si entra como conductor. 1 si entra como pasajero.
Return Este callback no devuelve un valor especifico.
He aquн un ejemplo que imprime el modelo de vehнculo, que usted estб entrando, en el chatbox<----------------------------------------------------------------------------------------------------------------->
pawn Code:public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
new string[128];
format(string, sizeof(string), "Estas entrando al Vehiculo ID: %i",vehicleid);
SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1;
}
Callback: OnPlayerExitVehicle
Este callback es llamado cuando un jugador sale de un vehнculo.Parametros:
(playerid, vehicleid)
playerid El ID del jugador que sale del vehiculo
vehicleid El ID del vehiculo del cual es jugador esta saliendo
Return Este callback no devuelve un valor especifico.
Quote:
Originally Posted by Nota
Importante:No se llama a este callback si el jugador se cae de una bicicleta o se retira de un vehнculo por otros medios tales como el uso de SetPlayerPos.
Debe utilizar OnPlayerStateChange y comprobar si su antiguo estado es PLAYER_STATE_DRIVER o PLAYER_STATE_PASSENGER. |
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerExitVehicle(playerid, vehicleid)
{
new string[35];
format(string, sizeof(string), "INFO: Estas saliendo del Vehiculo ID: %i", vehicleid);
SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1;
}
Callback: OnPlayerExitedMenu
Se llama cuando un jugador sale de un menъ.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que salio del menu
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerExitedMenu(playerid)
{
TogglePlayerControllable(playerid,1); // descongelar el jugador cuando sale de un menъ
return 1;
}
Callback: OnPlayerGiveDamage
Este callback es llamado cuando un jugador hace un daсo a otro jugador.Parametros:
(playerid, damagedid, Float:amount, weaponid)Ejemplo:
playerid El ID del jugador que provoca daсo
damagedid El ID del jugador que recive el daсo
Float:amount La cantidad de salud/armadura que damagedid ha perdido (combinado).
weaponid La razуn que causo el daсo.
Return Este callback no devuelve un valor especifico.
pawn Code:public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
new string[128], victima[MAX_PLAYER_NAME], atacante[MAX_PLAYER_NAME];
new nombrearma[24];
GetPlayerName(playerid, attacker, sizeof (atacante));
GetPlayerName(damagedid, victim, sizeof (victima));
GetWeaponName(weaponid, nombrearma, sizeof (nombrearma));
format(string, sizeof(string), "%s ha echo %.0f de daсo a %s, con el arma: %s", atacante, amount, victima, nombrearma);
SendClientMessageToAll(0xFFFFFFFF, string);
return 1;
}
Quote:
Originally Posted by Nota
TakeDamage y GiveDamage no se corresponden perfectamente en compensaciуn de retardo hasta que se hace en el tiroteo. E incluso entonces habrб algunas diferencias (debido a la zaga).
Una cosa que puedes hacer con GiveDamage es detectar cuando otros jugadores informan que han daсado a un determinado jugador, y ese jugador no ha tenido ninguna pйrdida de salud. Puedes marcar a los jugadores como sospechoso. Usted podrнa tener un servidor en el que los jugadores tienen un nivel de bъsqueda si atacan a jugadores Cop (o alguna clase especнfica). En ese caso, usted puede confiar en GiveDamage sobre TakeDamage. No debe haber muchas cosas que puedes hacer con йl. Sуlo hay que tener en cuenta los niveles de confianza entre los clientes. En la mayorнa de los casos es mejor confiar en el cliente que se estб daсando a informar sobre su salud/blindaje (TakeDamage). SA-MP normalmente lo hace. GiveDamage proporciona informaciуn adicional que puede ser ъtil en caso de requerir un nivel de confianza diferente. |
Callback: OnPlayerInteriorChange
Se le llama cuando un jugador cambia de interior.Parametros:
(playerid, newinteriorid, oldinteriorid)Ejemplo:
playerid El ID del jugador que cambio de interior
newinteriorid El ID del interior a la cual se cambio
oldinteriorid El ID del interior anterior al nuevo(newinterior)
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerInteriorChange(playerid,newinteriorid,oldinteriorid)
{
new string[48];
format(string, sizeof(string), "Pasaste del interior %d al interior %d!",oldinteriorid,newinteriorid);
SendClientMessage(playerid, COLOR_NARANJA, string);
return 1;
}
Callback: OnPlayerKeyStateChange
Este callback es llamado cuando el estado de cualquier tecla, excepto las teclas de movimiento (arriba, abajo, izquierda, derecha) cambian (es decir, se presionan o se sueltan).Parametros:
(playerid, newkeys, oldkeys)
playerid El ID del jugador que presiono la tecla
newkeys Un mapa de las claves actualmente en cartera - ver aquн.
oldkeys Un mapa de las teclas presionada con anterioridad al cambio actual - ver aquн.
Return 1 - Permite que este callback llame a otros scripts. Siempre es llamado por primera vez en gamemodes para resintonizar 0 habria que ver los otros filterscript.
La detecciуn de la tecla que se esta presionando
pawn Code://La definiciуn:
// HOLDING(Tecla)
#define HOLDING(%0) \
((newkeys & (%0)) == (%0))
//Presionando una tecla:
if (HOLDING( KEY_FIRE ))
//Presionando varias teclas:
if (HOLDING( KEY_FIRE | KEY_CROUCH ))
Detectando la primera tecla
pawn Code://La definiciуn
// PRESSED(Tecla)
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
//Presionado una tecla:
if (PRESSED( KEY_FIRE ))
//Presionado varias teclas:
if (PRESSED( KEY_FIRE | KEY_CROUCH ))
Detectando la liberaciуn de una teclaEjemplos:
pawn Code://La definiciуn
// RELEASED(keys)
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
//Soltando una letras:
if (RELEASED( KEY_FIRE ))
//Soltando varias letras:
if (RELEASED( KEY_FIRE | KEY_CROUCH ))
Adjunta NOS cuando el jugador presiona la tecla de disparo
pawn Code:public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_FIRE))
{
if (IsPlayerInAnyVehicle(playerid))
{
AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
}
}
return 1;
}
Super salto
pawn Code:public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_JUMP))
{
new
Float:x,
Float:y,
Float:z;
GetPlayerPos(playerid, x, y, z);
SetPlayerPos(playerid, x, y, z + 10.0);
}
return 1;
}
Modo Dios mientras se mantiene presionada la tecla<----------------------------------------------------------------------------------------------------------------->
pawn Code:new
Float:gPlayerHealth[MAX_PLAYERS];
#if !defined INFINITY
#define INFINITY (Float:0x7F800000)
#endif
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_ACTION))
{
// Simplemente presiona la tecla de accion, guardando su
// vida(healt) antes del modo dios. para luego restaurar su vida
GetPlayerHealth(playerid, gPlayerHealth[playerid]);
SetPlayerHealth(playerid, INFINITY);
}
else if (RELEASED(KEY_ACTION))
{
// Cuando se deja de presionar la tecla de accion - Restaura la vida
// Le devuelve la salud que tenia antes del modo dios
SetPlayerHealth(playerid, gPlayerHealth[playerid]);
}
return 1;
}
Callback: OnPlayerLeaveCheckpoint
Este callback es llamado cuando un jugador sale de dentro de un checkpoint.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que salio del checkpoint
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerLeaveCheckpoint(playerid)
{
printf("El jugador %i salio de un checkpoint!",playerid);
return 1;
}
Callback: OnPlayerLeaveRaceCheckpoint
Este callback es llamado cuando un jugador sale de dentro de un checkpoint de carrera.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que salio del checkpoint de carrera
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerLeaveRaceCheckpoint(playerid)
{
printf("El jugador %i salio de un checkpoint de carrera!",playerid);
return 1;
}
Callback: OnPlayerObjectMoved
Este callback es llamado cuando el objeto de un jugador se mueve, despuйs de usar MovePlayerObject (cuando deja de moverse).Parametros:
(playerid,objectid)Ejemplo:
playerid El ID del jugador que se le asigno el objeto
bjectid El ID del objeto que se ha movido
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerObjectMoved(playerid,objectid)
{
printf("Objeto del jugador movido: id del objeto: %d jugador: %d",objectid,playerid);
return 1;
}
Callback: OnPlayerPickUpPickup
Se llama cuando un jugador toma un pickup creada con CreatePickup.Parametros:
(playerid, pickupid)Ejemplo:
playerid El ID del jugador que tomo el pickup
pickupid El ID del pickup creado por con CreatePickup
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:new pickup_Dinero;
new pickup_Salud;
public OnGameModeInit()
{
pickup_Dinero = CreatePickup(1274, 2, 0.0, 0.0, 9.0);
pickup_Salud = CreatePickup(1240, 2, 0.0, 0.0, 9.0);
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == pickup_Dinero)
{
GivePlayerMoney(playerid, 1000);
}
else if(pickupid == pickup_Salud)
{
SetPlayerHealth(playerid, 100);
}
return 1;
}
Callback: OnPlayerPrivmsg
Parametros:
Este callback es llamado cuando un jugador envнa un mensaje privado a travйs del sistema de PM nativo /pm.Quote:
Originally Posted by Nota
Warning: Este callback fue removido en la version 0.3. vea a continuaciуn un ejemplo de /pm
(playerid, recieverid, text[])Ejemplo:
playerid El ID del jugador que envio el mensaje
recieverid El ID del jugador que resivio el mensaje
text[] El mensaje
Return Este callback no devuelve un valor especifico.
Quote:
Originally Posted by Nota
Importante:No se puede devolver 0 y bloquear los mensajes privados en un filterscript, debe ser usado en un gamemode
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerPrivmsg(playerid, recieverid, text[])
{
if(muted[playerid]) return 0;
return 1;
}pawn Code:if(!strcmp("/pm", cmdtext, true))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid,0xFF0000FF,"USE: /PM (id) (mensaje)");
new id = strval(tmp);
gMensaje = strrest(cmdtext,idx);
if(!strlen(gMessage)) return SendClientMessage(playerid,0xFF0000FF,"USE: /pm (id) (mensaje)");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,0xFF0000FF,"/pm : ID Invalido");
GetPlayerName(id,iName,sizeof(iNombre));
GetPlayerName(playerid,pName,sizeof(pNombre));
format(Mensaje,sizeof(Mensaje),">> %s(%i): %s",iNombre,id,gMensaje);
SendClientMessage(playerid,0xFFD720FF,Mensaje);
format(Mensaje,sizeof(Mensaje),"** %s(%i): %s",pNombre,playerid,gMensaje);
SendClientMessage(id,0xFFD720FF,Mensaje);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
return 1;
}
Callback: OnPlayerRequestClass
Se le llama cuando un jugador cambia de clase a la selecciуn de la clase.(en castellano(xD) es cuando se selleciona el personaje)Parametros:
(playerid, classid)Ejemplo:
playerid El ID del jugador que cambio de clase
classid El ID de la clase actual que se esta viendo
Return Devolviendo 0 en este callback evitarб que el jugador spawnee. El jugador puede ser obligado a spawnear cuando SpawnPlayer es utilizado sin embargo el jugador volverб a entrar en la selecciуn de clases la prуxima vez que muera.
Quote:
Originally Posted by Nota
Las ID de clase se asignan cuando se usa la funciуn AddPlayerClass.Quote:
Originally Posted by Nota
Esta callback tambiйn es llamado cuando un jugador presiona F4.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerRequestClass(playerid,classid)
{
if(classid == 3 && !IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_VERDE,"Este skin es solo para admins!");
return 0;
}
return 1;
}
Callback: OnPlayerRequestSpawn
Es llamado cuando un jugador intenta spawnear mediante la selecciуn de clases.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que intenta spawnear
Return Retornando 0 en este callback evitarб que el jugador de spawnee.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerRequestSpawn(playerid)
{
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,COLOR_GREEN,"Usted no puede spawnear.");
return 0;
}
return 1;
}
Callback: OnPlayerSelectObject
Este callback se llama cuando un jugador selecciona un objeto despuйs de ser utilizado SelectObject.Parametros:
(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)Ejemplo:
playerid El ID del jugador que selecciono un objeto
type El tipo de selecciуn
objectid El ID del objeto seleccionado
Float:fX La posiciуn X del objeto seleccionado
Float:fY La posiciуn Y del objeto seleccionado
Float:fZ La posiciуn Z del objeto seleccionado
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
printf("El jugador %d selecciono el objeto %d", playerid, objectid);
if(type == SELECT_OBJECT_GLOBAL_OBJECT)
{
EditObject(playerid, objectid);
}
else
{
EditPlayerObject(playerid, objectid);
}
SendClientMessage(playerid, 0xFFFFFFFF, "Ahora eres capas de modificar tu propio objeto!");
return 1;
}
Callback: OnPlayerSelectedMenuRow
Este callback es llamado cuando un jugador selecciona un elemento(item) de un menъ.Parametros:
(playerid, row)Ejemplo:
playerid El ID del jugador que selecciono el item del menu
row La fila que selecciono
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:new Menu:miMenu;
public OnGameModeInit()
{
miMenu= CreateMenu("Ejemplo de Menu", 1, 50.0, 180.0, 200.0, 200.0);
AddMenuItem(miMenu, 0, "Fila 1");
AddMenuItem(miMenu, 0, "Fila 2");
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
if(GetPlayerMenu(playerid) == miMenu)
{
switch(row)
{
case 0: print("Fila 1");
case 1: print("Fila 2");
}
}
return 1;
}
Callback: OnPlayerSpawn
Este callback es llamado cuando un jugador spawnea.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador que spawnea
Return Devolviendo 0 en este callback obliga al jugador a volver a la selecciуn clase cuando vuelva a respawnear.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerSpawn(playerid)
{
new NombreJugador[MAX_PLAYER_NAME],
string[128];
GetPlayerName(playerid, NombreJugador, sizeof(NombreJugador));
format(string, sizeof(string), "%s ha spawnedo.", NombreJugador);
SendClientMessageToAll(0xFFFFFFFF, string);
return 1;
}
Callback: OnPlayerStateChange
Este callback es llamado cuando un jugador cambia de estado.Parametros:
(playerid, newstate, oldstate)Ejemplo:
playerid El ID del jugador que ha cambiado de estado
newstate El nuevo estado
oldstate El estado anterior
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) // El jugador entra a un vehiculo como conductor
{
new vehiculoid = GetPlayerVehicleID(playerid);
AddVehicleComponent(vehiculoid, 1010); // Aсade NOS al vehiculo
}
return 1;
}
Callback: OnPlayerTakeDamage
Este callback es llamado cuando un jugador recibe daсoParametros:
(playerid, issuerid, Float:amount, weaponid)Ejemplo:
playerid El ID del jugador que resivio el daсo
issuerid El ID del jugador que causo el daсo. si nadie causo el daсo: INVALID_PLAYER_ID
Float:amount La cantidad de salud/armadura que le quito a playerid
weaponid La ID de la razon por la cual playerid recivio el daсo
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(issuerid != INVALID_PLAYER_ID)
{
new string[128], victima[MAX_PLAYER_NAME], atacante[MAX_PLAYER_NAME];
new nombrearma[24];
GetPlayerName(playerid, victima, sizeof (victim));
GetPlayerName(issuerid, atacante, sizeof (attacker));
GetWeaponName(weaponid, nombrearma, sizeof (nombrearma));
format(string, sizeof(string), "%s ha hecho %.0f de daсo a %s, con el arma: %s", atacante, amount, victima, nombrearma);
SendClientMessageToAll(0xFFFFFFFF, string);
}
return 1;
}
Callback: OnPlayerText
Se llama cuando un jugador envнa un mensaje por el chat.Parametros:
(playerid, text)Ejemplo:
playerid El ID del jugador que envio el mensaje
text El mensaje que el jugador ha escrito
Return Retornando 0 en este callback se detendrб el envio de texto
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnPlayerText(playerid, text[])
{
new textv2[128], nombre[MAX_PLAYER_NAME];
GetPlayerName(playerid, nombre, sizeof (name));
format(textv2, sizeof (textv2), "%d >> %s: %s", playerid, nombre, text);
SendPlayerMessageToAll(playerid, textv2);
return 0; // ignorar el texto y enviarlo al cahtbox
}
Callback: OnPlayerUpdate
Este callback es llamado siempre que haya coneccion entre el servidor y el cliente.Parametros:
(playerid)Ejemplo:
playerid El ID del jugador enviando paquetes al servidor
Return 0 - La actualizaciуn de este jugador no se replicarбn a otros clientes. 1 - Indica que esta actualizaciуn se pueden procesar normalmente y se envнan a los otros jugadores.
Ejemplo: Hacer tu propio Callback - UnJugadorCambioDeArma(playerid, armaanterior, nuevaarma)<----------------------------------------------------------------------------------------------------------------->
El ejemplo anterior muestra lo fбcil que es crear una Callback, el ejemplo muestra UnJugadorCambioDeArma, con parбmetros playerid, armaanterior/nuevaarma, pero usted, tambiйn, puede hacer toneladas de otros parametros!pawn Code:public OnPlayerUpdate(playerid)
{
new ArmaActual = GetPlayerWeapon(playerid); // Obtenemos el arma actual del jugador
if(ArmaActual != GetPVarInt(playerid, "MiArmaActual")) // Si hubo un cambio de arma desde la ultima actualizaciуn
{
// Lamamos al Callback UnJugadorCambioDeArma
UnJugadorCambioDeArma(playerid, GetPVarInt(playerid, "MiArmaActual"), ArmaActual);
SetPVarInt(playerid, "MiArmaActual", ArmaActual);//Actualiza la variable del arma
}
return 1; // Envia esta actualizaciуn a todos los jugadores.
}
stock UnJugadorCambioDeArma(playerid, armaanterior, nuevaarma)
{
new s[128],
aArma[24],
nArma[24];
GetWeaponName(armaanterior, aArma, sizeof(aArma));
GetWeaponName(nuevaarma, nArma, sizeof(nArma));
format(s, sizeof(s), "Has cambiado el arma %s por %s!", aArma, nArma);
SendClientMessage(playerid, 0xFFFFFFFF, s);
}
Callback: OnRconCommand
Este callback es llamado cuando se envнa un comando a travйs de la consola del servidor RCON, o mediante el comando en el juego / rcon.Parametros:
(cmd[])Ejemplo:
cmd[] Una cadena que contiene el comando que se ha escrito, asн como los parбmetros pasados.
Return 0 si el comando no se procesa, este se pasarб a otros scripts. o 1 si el comando se proceso, no serбn cedidos a otros scripts.
Quote:
Originally Posted by Nota
Importante:Usted tendrб que incluir este callback en un filterscript cargado para que funcione en el gamemode!Quote:
Originally Posted by Nota
"/rcon" no se incluye en el "cmd" cuando un jugador escribe un comando.
Si utiliza la funciуn "orint" aquн, se enviarб un mensaje al jugador que escribiу el comando, asн como en el log(server_log.txt).
<----------------------------------------------------------------------------------------------------------------->pawn Code:// Ejemplo 1
public OnRconCommand(cmd[])
{
printf("[RCON]: Has introducido el siguiente comando Rcon '/rcon %s'!",cmd);
return 0;
}
// Ejemplo 2
public OnRconCommand(cmd[])
{
if(!strcmp(cmd,"Hola",true))
{
SendClientMessageToAll(0xFFFFFFAA,"Hola Mundo!");
print("Has dicho Hola a todo el mundo.");// Esto aparecerб al jugador que escribiу el comando rcon, en el chat en color blanco
return 1;
}
return 0;
}
Callback: OnRconLoginAttempt
Este callback es llamado cuando alguien intenta acceder a la RCON, exitoso o no.Parametros:
(ip[], password[], success)Ejemplo:
ip[] La IP del jugador que intento acceder a la Rcon
password[] La contraseсa utilizada para iniciar sesiуn.
success 0 si no pudo ingresar correctamente. 1 si tuvo exito.
Return Este callback no devuelve un valor especifico.
Quote:
Originally Posted by Nota
Este Callback es llamado solamente cuando /rcon login es usado
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnRconLoginAttempt(ip[], password[], success)
{
if(!success) //Si la contraseсa es incorrecta
{
printf("Fallo la identeificaciуn Rcon. IP: %s intento acceder a la Rcon con la siguiente clave %s",ip, password);
new pip[16];
for(new i=0; i<MAX_PLAYERS; i++) // Bucle que recorrera a todos los jugadores
{
GetPlayerIp(i, pip, sizeof(pip));
if(!strcmp(ip, pip, true)) // Si la IP del jugador es igual al del que intento introdujo mal la clave Rcon
{
SendClientMessage(i, 0xFFFFFFFF, "Clave Incorrecta. Chau,. Chau, Adios.!"); // Envia el mensaje
Ban(i); //Banea al jugador
}
}
}
return 1;
}
Callback: OnVehicleDeath
Este callback es llamado cuando un vehнculo "muere" ya sea al entrar en el agua o al estallar.Parametros:
(vehicleid, killerid)Ejemplo:
vehicleid El ID del vehiculo que "murio"
killerid El ID del jugador que informу (sincronizadamente) la destrucciуn del vehнculo (nombre engaсoso).
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnVehicleDeath(vehicleid, killerid)
{
new string[40];
format(string, sizeof(string), "ID Vehiculo: %i por el jugador ID: %i.", vehicleid, killerid);
SendClientMessageToAll(0xFFFFFFFF, string);
return 1;
}
Callback: OnVehicleMod
Este callback es llamado cuando un vehнculo estб siendo modificado.Parametros:
(playerid, vehicleid, componentid)Ejemplo:
playerid El ID del conductor del vehiculo
vehicleid La ID del vehiculo que esta siendo modificado
componentid El ID del componente que se aсadiу al vehнculo.
Return Devuelver 0 para que la desincronizaciуn del mod (o un mod no vбlido) se propague y/o se estrelle con los jugadores.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnVehicleMod(playerid,vehicleid,componentid)
{
printf("El vehiculo %d ha sido modificado por %d con el componente %d",vehicleid,playerid,componentid);
if(GetPlayerInterior(playerid) == 0)
{
BanEx(playerid, "Tuning Hacks"); // Script Anti-tuning hacks
//Probado y funciona incluso en servidores cual le permite modificar tu vehнculo mediante comandos, menъs, cuadros de diбlogo, etc.
}
return 1;
}
Callback: OnVehiclePaintjob
Se le llama cuando un jugador cambia el paintjob de su vehнculo (en un modshop).Parametros:
(playerid, vehicleid, paintjobid)Ejemplo:
playerid El ID del jugador que esta modificando el vehiculo
vehicleid El ID del vehiculo que cambio de paintjob
paintjobid El ID del paintjob
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
new string[128];
format(string, sizeof(string), "has cambiado el paintjob de tu vehiculo, al paintjob %d!", paintjobid);
SendClientMessage(playerid, 0x33AA33AA, string);
return 1;
}Quote:
Originally Posted by Nota
Esto se llama cuando un paintjob se ve en modshops! Ademбs, sуlo funciona en modshops.
Callback: OnVehicleRespray
El callback es engaсoso, este callback se llama cuando un jugador sale de las tiendas modernas, sin importar si el color fue cambiado, y nunca es llamado para tiendas pay'n'spray.Parametros:
(playerid, vehicleid, color1, color2)Ejemplo:
playerid El ID del jugador que esta conduciendo el vehiculo
vehicleid El ID del vehiculo que se pinto
color1 El color primario del vehiculo que se va a cambiar
color2 El color secundario del vehiculo que se va a cambiar
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->Una pequeсa soluciуnpawn Code:public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
new string[48];
format(string, sizeof(string), "Su vehiculo(%d) ha sido pintado con los siguiente colores: Primario %d, Secundario: %d!", vehicleid, color1, color2);
SendClientMessage(playerid, COLOR_VERDE, string);
return 1;
}
Este Callback no es llamado cuando sale de un pay 'n' spray, solamente en modshop.
La solucion para esto:
pawn Code:#include <YSI\y_hooks>
Hook:paynspray_OnPlayerUpdate(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new Float:vHealth;
GetVehicleHealth(GetPlayerVehicleID(playerid), vHealth);
if(vHealth == 1000)
{
SetVehicleHealth(GetPlayerVehicleID(playerid), 999);
new const Float:paynspray[][] = {
{1025.05, -1024.23, 32.1}, // LS Temple
{487.68, -1740.87, 11.13}, // LS Santa Maria
{-1420.73, 2583.37, 55.56}, // El Quebrados
{-1904.39, 284.97, 40.75}, // Wang Cars
{-2425.91, 1022.33, 50.10}, // Juniper Hill
{1975.60, 2162.16, 10.77}, // LV Redsands
{2065.38, -1831.51, 13.25}, // Idlewood
{-99.55, 1118.36, 19.44}, // Fort Carson
{721.07, -455.94, 16.04}, // Dillimore
{2393.74, 1493.01, 10.52} // LV Unused (Pyramid)
};
for(new i=0; i<sizeof(paynspray); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 10, paynspray[i][0], paynspray[i][1], paynspray[i][2]))
{
CallRemoteFunction("OnVehicleRespray", "iiii", playerid, GetPlayerVehicleID(playerid), -1, -1);
return 1;
}
}
}
}
return 1;
}
stock paynspray_CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay)
{
new vid = CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
SetVehicleHealth(vid, 999);
return vid;
}
#if defined _ALS_CreateVehicle
#undef CreateVehicle
#else
#define _ALS_CreateVehicle
#endif
#define CreateVehicle paynspray_CreateVehicle
stock paynspray_AddStaticVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay)
{
new vid = AddStaticVehicleEx(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
SetVehicleHealth(vid, 999);
return vid;
}
#if defined _ALS_AddStaticVehicleEx
#undef AddStaticVehicleEx
#else
#define _ALS_AddStaticVehicleEx
#endif
#define AddStaticVehicleEx paynspray_AddStaticVehicleEx
stock paynspray_AddStaticVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2)
{
new vid = AddStaticVehicle(vehicletype, x, y, z, rotation, color1, color2);
SetVehicleHealth(vid, 999);
return vid;
}
#if defined _ALS_AddStaticVehicle
#undef AddStaticVehicle
#else
#define _ALS_AddStaticVehicle
#endif
#define AddStaticVehicle paynspray_AddStaticVehicle
Callback: OnVehicleSpawn
Este callback es llamado cuando un vehнculo spawnea.Parametros:
(vehicleid)Ejemplo:
vehicleid El ID del vehiculo que spawneo
Return Este callback no devuelve un valor especifico.
<----------------------------------------------------------------------------------------------------------------->pawn Code:public OnVehicleSpawn(vehicleid)
{
printf("El Vehiculo %i spawneo!",vehicleid);
return 1;
}
їQue cojones es esto?
Bueno,.. esto es un pequeсo(digo pequeсo porque algunos me faltaron de incluir) tutorial, o para ser sincero, esto mas que un tutorial es una traducciуn de las funciones de los callbacks que se encuentran en la wiki de samp. y como dije: che y si lo tradusco al espaсol(por que vi que esta en varios idiomas pero no esta en espaсol), y puse en en la pestaсita edit, pero me salio de que tengo que estar registrado y logeado y no me pude registrar y por ende tampoco logearme... y aunque me logre logear se necesitan los permisos de los admins de la wiki que son los beta tester de samp, y yo no me hablo con ninguno de ellos como para decirles: che loco haceme admin de la wiki asн lo traduzco al espaсol... Asн que como no pude hay, si puedo aquн... Espero que lo aprovechen para aprender si no lo conocнan o si no lo entendнan a algunos callbacks.. aunque me faltan las callbacks de los NPC y otros, que no le vi mucho uso ni aun dentro del archivo new.pwn, asн que los deje..PD: Si tengo tiempo traducire los que me faltaron, algunos dнas de estos...
PD2: Cuando se agreguen mas Callback(Talves en futuras versiones de samp) lo traducirй y lo agregare al post.
<----------------------------------------------------------------------------------------------------------------->