[Tutorial]Explicaciуn de Callbacks usados comunmente -
Lunnatiicz - 19.02.2011
Bueno, aquн les traigo mi primer aporte util para el foro, quizбs algunos ya sepan todo esto, pero no olvidemos que hay gente que apenas empieza, y les quiero dar un pequeсo apoyo n___n'!
Empecemos, antes que nada si eres nuevo en el foro te recomiendo que te leas las reglas para no tener ningъn conflicto en el foro.
NOTA: Explicarй sуlo los callbacks que comunmente son usados en GM'S Oh FilterScripts
Como primer punto.
Quote:
Un callback es en simple palabras, en donde tu cуdigo script se ejecuta, un ejemplo enseguida.
|
Ejemplo sencillo de un callback con una funciуn/script
pawn Код:
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, COLOR, "Bienvenido al servidor!")
return 1;
}
Empecemos con las definiciones predeterminadas de pawno, que al apretar el botуn "New" donde aparece un iconon de una hoja en blanco apareceran todos los callbacks siguientes.
pawn Код:
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
Esto es para si es un FilterScript para tu server, aparecerб en la ventana de comandos (Windows) al encender tu server.
El siguiente callback es.
pawn Код:
public OnGameModeInit()
{
SetGameModeText("Blank Script");//Nombre del modo de juego, este aparecerб en el cliente SA-MP
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);//Skins
return 1;
}
Este Callback puede servir para distintas funciones, las principales para los que yo la uso es, para los skins, el nombre del "Modo", a este mismo se le pueden agregar mapas/autos a un GM, ya sea creado por ti, o terceros.
El siguiente callback.
pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);//Posiciуn del skin/jugador
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);//posiciуn de camara
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);//posiciуn de camara
return 1;
}
Este callback funciona de la siguiente manera, al elejir algъn skin, al empezar en algъn servidor, ajusta la forma de vista en dicho skin.
Los siguientes 2 Callbacks xD:
pawn Код:
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
format(string, sizeof(string), "%s ha salido del servidor! (Salio)", sendername);
SendClientMessageToAll(0xBBBBBBAA, string);
return 1;
}
Este callback, funciona para cuando un jugador/usuario entre al servidor, como puse el ejemplo al principio, y el segundo sirve para cuando usuario sale del servidor, tambiйn su funciуn es setear variables a "0", al usar arrays para el guardo de informaciуn
Un ejemplo.
pawn Код:
public OnPlayerDisconnect(playerid)
{
Conectado = 0;
}
Los siguientes callbacks O:!
pawn Код:
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
Estos callbacks primordialmente es para uso de "spawn" y "death" pueden usar usadas de la siguiente forma.
pawn Код:
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,272.6040,1989.7307,17.6406);//la posiciуn de spawn de jugador
GivePlayerMoney(playerid, 1000);//cantidad de dinero con la que el jugador iniciara
GivePlayerWeapon(playerid,WEAPON_MP5,500);//El arma que se le otorgara por default en tu servidor
GivePlayerWeapon(playerid, WEAPON_M4,500);//la misma que el de arriba
return 1;
}
//----------------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid,playerid,reason); // para q se muestre como tu quieres
SetPlayerScore(killerid, GetPlayerScore(killerid) + 1); // esto le suma score cada jugador q mate
GivePlayerMoney(killerid,1000); // y esto le da 1000 $ cada vez q mata a un jugador
GameTextForPlayer(playerid,"~r~P~b~W~g~N~y~T!!!",4000,3);
return 1;
}
El siguiente callback:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/micomando", cmdtext, true, 10) == 0)
{
// La funciуn/acciуn del comando
return 1;
}
return 0;//OJO AQUН, SI USAS RETURN 0; ES PARA FINALIZAR EL CALLBACK, EN CASO DE PONER COMANDOS SUCESIVOS USA RETURN 1;
}
Un ejemplo fбcil extraнdo de la wiki.
pawn Код:
if(!strcmp(cmdtext, "/me", true, 3))
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "Usa /me [accion]");
new str[128];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s %s", str, cmdtext[4]);//Todo apartir de /me hacia abajo es la funciуn que harб el comando
SendClientMessageToAll(0x9955DEEE, str);
return 1;//termina la funciуn
}
Un cita por the_chaoz citando lo siguiente, leer bien ¬¬'!
Quote:
Originally Posted by the_chaoz
їCуmo cambio el "Unknown Command" que aparece cuando el comando no existe?
Muy sensillo, buscamos el callback: "OnPlayerCommandText", luego dentro del mismo y en el final fuera de los comandos encontraremos un:
Lo unico que hay que hacer es cambiarlo por:
pawn Код:
"return SendClientMessage(playerid, color, "mensaje");
y ahora en vez de salir "Unknown Command" saldra nuesto mensaje.
|
El siguiente callback es:
pawn Код:
public OnPlayerUpdate(playerid)
{
// No Armas en interiores
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0) {
SetPlayerArmedWeapon(playerid,0); // fists
return 0; // no syncing until they change their weapon
}
// No El uso de Minigun
if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
Kick(playerid);
return 0;
}
//No JetPacks
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
Kick(playerid);
return 0;
}
Si mal no estoy, esta funciуn actualiza/chequea al jugador a cada movimiento, en el ejemplo chequea que el jugador no este usando JetPack, Minigun, y no use arma en interiores, estбn testeados y funcionan, acб una cita por MrDeath
Quote:
OnPlayerUpdate, йste es llamado cada vez que el jugador se actualiza, lo que hace que sea llamado aproximadamente 20 veces por segundo, pero si el jugador no estб haciendo nada йste se actualiza casi 2 veces por segundo.
|
NOTA IMPORTANTE PARA LOS NUEVOS: Para empezar si no saben, hay que definir colores, eh includes (En caso de que usen)
pawn Код:
#include <a_samp> //predeterminado de pawn
Quote:
este include, nos permite usar funciones relacionadas con SA-MP pero podemos crear scripts en Pawn para usarlos para otras cosas, por ejemplo, crear un sistema de un semбforo con un hardware apropiado.
FUente: Libro de tecnologia 4є ESO XD
Citado por: SuperMario (':
|
Hasta aquн la pequeсa explicaciуn de callbacks comъnmente usados. (':!
Saludos a todos! Si tuve algъn error hбganme saberlo, soy humano y cometo errores o_O Comъnmente fatales pero no para tanto :P
Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
SuperMarioRol - 19.02.2011
NO estб mal...pero podrias ponerlo en su sitio.
HAy un fallo en el final, lo de predeterminado de pawn (no pawno como dijiste) no es tйcnicamente asн, ya que ese include, nos permite usar funciones relacionadas con SA-MP pero podemos crear scripts en PAwn para usarlos para otras cosas, por ejemplo, crear un sistema de un semбforo con un hardware apropiado.
FUente: Libro de tecnologia 4є ESO XD
Respuesta: [Tutorial]Explicaciуn de Callbacks usados comunmente -
Lunnatiicz - 19.02.2011
Pues la puse porquй lуgicamente hablamos de la programaciуn de pawn en SA-MP
Igual anotarй tu dato (':
EDIT: Citado al final (': haha
Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
murdoxix - 19.02.2011
Buena Lunna!!! Muy bueno! Me va a ayudar mucho :P
Respuesta: Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
Lunnatiicz - 19.02.2011
Quote:
Originally Posted by murdoxix
Buena Lunna!!! Muy bueno! Me va a ayudar mucho :P
|
Gracias (H) (': Cualquier duda no te dudes a ti mismo si preguntarme o no
Saludos!
Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
MrDeath537 - 19.02.2011
Buen tutorial.
Acerca de OnPlayerUpdate, йste es llamado cada vez que el jugador se actualiza, lo que hace que sea llamado aproximadamente 20 veces por segundo, pero si el jugador no estб haciendo nada йste se actualiza casi 2 veces por segundo.
Respuesta: Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
Lunnatiicz - 19.02.2011
Quote:
Originally Posted by MrDeath537
Buen tutorial.
Acerca de OnPlayerUpdate, йste es llamado cada vez que el jugador se actualiza, lo que hace que sea llamado aproximadamente 20 veces por segundo, pero si el jugador no estб haciendo nada йste se actualiza casi 2 veces por segundo.
|
Gracias por el dato, ya actualizo
Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
DragonMu - 20.02.2011
Aportazooo !! Se agradece, segui con los tutos :P
Respuesta: Re: [Tutorial]Explicaciуn de Callbacks usados comunmente -
Lunnatiicz - 20.02.2011
Quote:
Originally Posted by DragonMu
Aportazooo !! Se agradece, segui con los tutos :P
|
Gracias :'D
Respuesta: [Tutorial]Explicaciуn de Callbacks usados comunmente -
TheChaoz - 21.02.2011
Muy lindo tuto, yo lo hubiera hecho de otra forma, pero te quedo muy bien. estaria bueno q mas adelante sigas con los demas callbacks o que expliques cada parametro
Nota: en OnPlayerCommandText, si el return 0 lo reemplazas x return 1, nunca devolvera "Unknown Command". tambien se lo puede reemplazar x un mensaje.