Lнneas, saltos y movimientos del pawn
#1

Hola,

Yo siempre tenнa en mente que en la programaciуn va de lнnea en lнnea, una a una (hay veces que una lнnea hace que vuelva a subir pero normalmente es asн). Por mi sentido comъn, veo que SAMP no es asн, mбs bien segъn los Callbacks harб una determinada cosa y claro entonces uno si ve йsto usa la lуgica...

Si aparece el OnPlayerConnect "Cuando un usuario se conecta al servidor"... (yo de momento no tengo mucha idea solamente uso la lуgica). La lуgica me dice que ahн podrнa haber cosas como registros de usuario, tutoriales, ayudas para ingresar al servidor...

Pero claro, quй pasa cuando en ese Callback hay mбs cosas... por ejemplo:

OnPlayerConnect
1. Sistema de registro
3. Logueo
2. Tutorial...

etcйtera

En ese caso, їSe ejecutarнa primero el sistema de registro y luego lнnea por lнnea hasta que finalmente spawneas y pasa al Callback (OnPlayerSpawn) y ahн hace otras cosas...?

Yo pregunto йsto porque quiero saber como se mueve el salto de lнneas y el funcionamiento general del pawn cuando se estб ejecutando. Alomejor lo que he dicho es la tonterнa mбs grande del mundo pero yo creo que es lуgico.
Reply
#2

SA:MP corre en un sуlo hilo. El interior de las callback se ejecuta en orden descendente.
Reply
#3

Vamos como como prбcticamente todo los sistemas de programaciуn no?

Pero por ejemplo їSi estб OnPlayerSpawn encima de OnPlayerConnect?.

Gracias Zume.
Reply
#4

Ese orden es irrelevante, nada mбs en el interior de las callback ejecutarб el cуdigo en orden descendente
Reply
#5

Vale, entonces a lo que yo me refierнa no? se ejecutarб primero segъn el callback y dentro de ahн lнnea por lнnea.
Reply
#6

pawn Код:
public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, Rojo, "Hola, soy la primera funciуn en ejecutar");
    funcion_que_sigue_despues_del_mensaje(playerid);
    SendClientMessage(playerid, -1, "Hola, soy la tercera funciуn en ejecutar");
    // y asн sucesivamente hasta llegar al retorno que finaliza la funciуn
    return 1;
}

stock funcion_que_sigue_despues_del_mensaje(playerid)
{
    SendClientMessage(playerid, -1, "Soy el segundo mensaje en ejecutar");
    return 1;
}
Como te dijeron, corre en un solo hilo, en forma descendiente (es algo obvio, no?)

Tambiйn hay funciones que teleportan una funciуn hacнa donde tu quieras dentro de esa funciуn,con [blue]goto[/blue]
Reply
#7

Los callbacks que vienen por default de SA-MP son llamados de acuerdo al tipo de evento que ocurra, por ejemplo un jugador clickea en el boton Connect en la interfaz de SA-MP el juego se inicia y muchas cosas mбs y se envнa un paquete al servidor informando que un jugador proveniente de la IP 'x' se esta conectando al servidor, en ese momento el servidor llama a la callback OnIncomingConnection con ciertos parбmetros luego una ves que se confirma la conexiуn el servidor llama a la callback OnPlayerConnect y asн sucesivamente osea son eventos uqe ocurren en un orden.
Ahora hay otros tipos de eventos osea por ejemplo OnPlayerWeaponShot es llamado de esta manera: el CLIENTE detecta accediendo a una direcciуn de memoria que nosotros disparamos a una posiciуn esto accede a estas direcciones de memoria (http://www.gtamodding.com/?title=Mem...s_(SA)#Bullets) y luego de eso el cliente envнa un paquete al servidor diciendo que el CLIENTE disparo a cierta posiciуn con (ademбs de que se pasan otros parбmetros como el arma y esas cosas) el servidor recibe ese paquete y llama a la callback OnPlayerWeaponShot algo parecido pasa con otros callbacks como OnPlayerEnterVehicle, OnPlayerStateChange y eso
Reply
#8

Yo ahora me estoy liando un poco xD.

Entonces simplemente es lo que digo yo їNo?. Yo se que va de forma descendente, pero no va a empezar asн:

Si el usuario se conecta y en el gamemode estб йsto asн...

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
        lo que sea
	return 1;
}

public OnPlayerConnect(playerid)
{
        
	return 1;
}
No puede ejecutarse primero OnPlayerDeath їNo? sino OnPlayerConnect es lуgico creo xd, despuйs de ir de forma descendente por OnPlayerConnect salta a otro callback segъn lo que haga el usuario (lo suyo serнa el callback de spawn aunque puede ser cualquier otra cosa.
Reply
#9

No importa en que ubicaciуn estйn, solo deben ser ejecutadas por el jugador.

EDIT: A lo que se referнa zume era que los cуdigos que estбn dentro de la callback se ejecutan en forma descendiente.
Reply
#10

pawn Код:
public OnPlayerVaAlRetrete(playerid)// cuando la funcion es llamada
{
     AbreLaTapa(playerid);
     Caga(playerid);
     return 1;
}

public OnPlyaerVaAlComedor(playerid)//cuando la funcion es llamada
{
     TomaLaComida(playerid);
     LaCome(playerid)
     return 1;
}
El orden no es que cage y luego coma sino que cuando va al retrete caga y cuadno va al comedor come pero no quiere decir que haya un orden sino una llamada, la llamada de la naturaleza XD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)