Duda sobre cуdigos
#1

Buenas:

Lo que voy a preguntar seguramente os parezca muy sencillo, pero bueno, soy un poco novato y no consigo averiguarlo desde hace ya varios meses.

Voy a poner tres ejemplos de cosas que quiero hacer pero no sй el cуdigo. Espero que podais dбrmelo (no para incorporarlo a ningъn gamemode, simplemente para ver cуmo se harнa).

1.- Crear un comando que mate a los jugadores que se encuentren a una distancia inferior a 5.0 del jugador que utiliza el comando. En principio sй cуmo serнa la estructura, pero supongo que en el SetPlayerHealth no hay que usar playerid, ya que eso afectarнa al jugador que utilizу el comando. їQuй se pondrнa para que afecte a los usuarios que estбn a su alrededor, como dije anteriormente?

2.- Crear un comando que mate a todos los jugadores conectados. Lo mismo de antes, no sй por quй habrнa que cambiar playerid para que afecte a todos los jugadores.

3.- Al pulsar la tecla enter, si el jugador estб en un rango determinado alrededor de un punto (no me cual sea, simplemente es un ejemplo), se teletransporta a otra posiciуn.

Mil gracias por la ayuda. Espero haberme explicado bien.
Un saludo.
Reply
#2

1- Para que afecte a todos los jugadores se usa un bucle ( yo use for)
pawn Код:
if(strcmp(cmdtext,"/comando",true) == 0)
{
    new Float:posx,Float:posy,Float:posz;
    GetPlayerPos(playerid,posx,posy,posz);
    for(new i=0; i < MAX_PLAYERS; i++) {
        if(IsPlayerConnected(i)) {
            if(IsPlayerInRangeOfPoint(i,5.0,posx,posy,posz)) {
                SetPlayerHealth(i,0.0);
            }
        }
    }
    return 1;
}
Reply
#3

Aca te los dejo:
pawn Код:
//1
if(!strcmp(cmdtext, "/comando", true)){
    new Float:P[3];
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    for(new i; i<GetMaxPlayers(); i++){
        if(IsPlayerConnected(i) && i != playerid && IsPlayerInRangeOfPoint(playerid, 5, P[0], P[1], P[2]))
            SetPlayerHealth(playerid, 0);
    }return 1;
}

//2
if(!strcmp(cmdtext, "/comando", true)){
    new Float:P[3];
    GetPlayerPos(playerid, P[0], P[1], P[2]);
    for(new i; i<GetMaxPlayers(); i++){
        if(IsPlayerConnected(i))
            SetPlayerHealth(playerid, 0);
    }return 1;
}

//3
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE)
        if(IsPlayerInRangeOfPoint(playerid, distancia, X, Y, Z))
            SetPlayerPos(playerid, X1, Y1, Z1);
    return 1;
}
aca un link con las teclas q puedes usar https://sampwiki.blast.hk/wiki/GetPlayerKeys (tene en cuenta q se detecta la funcion, no la tecla en si.
Reply
#4

3- Usa esto:
https://sampwiki.blast.hk/wiki/OnPlayerKeyStateChange
https://sampwiki.blast.hk/wiki/GetPlayerKeys
https://sampwiki.blast.hk/wiki/IsPlayerInRangeOfPoint
https://sampwiki.blast.hk/wiki/SetPlayerPos

solo cambia la posiciуn que tu quieras y el interior etc..
PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if ((
newkeys KEY_SECONDARY_ATTACK) && !(oldkeys KEY_SECONDARY_ATTACK))
    {
        if(
IsPlayerInRangeOfPoint(playerid50.0,2230.4412,1604.5570,1006.1860))
           {
           
SetPlayerInterior(playerid10);
        
SetPlayerPos(playerid1952.2404,1016.5952,992.4688);
        
SendClientMessage(playerid0xFFFFFFFF"Fuiste teletrasportado.");
           }
        
    }   
    return 
1;

PD: utiliza https://sampwiki.blast.hk/wiki/Main_Page
Reply
#5

Perfecto, muchнsimas gracias por la ayuda.
Todo muy completo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)