Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Mensajes recientes

#91
Soporte & Asistencia / Función GivePlayerScore
Último mensaje por Kanis - Feb 04, 2023, 01:09 AM
Hola buenas comunidad, ¿como podría yo añadir la función "GivePlayerScore" al gamemode?

La necesito para poder editarla para unos tops que he conseguido crear.
#92
Soporte & Asistencia / Warning 217: loose indentation
Último mensaje por Kanis - Feb 04, 2023, 01:06 AM
Hola, he copiado un code y me aparece el siguiente error. Lo he revisado pero parece que todo esta correctamente. ¿Podrian ayudarme a solucionar este error? Esta copiado tal cual y no se si es error del codigo  :-\

CitarC:\Documents and Settings\Administrador\Escritorio\Server\test.pwn(128) : warning 217: loose indentation
Pawn compiler 3.2.3664    Copyright (c) 1997-2016, ITB CompuPhase
#93
Desarrollo de Servidores / Ocultar nombre de los jugadore...
Último mensaje por Swarlog - Feb 04, 2023, 01:02 AM
Por ejemplo, crea un comando para activarlo o desactivarlo:

if (strcmp("/nombreoff", cmdtext, true) == 0)
{
    for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForPlayer(playerid, "~W~Nombres ~R~Desactivados!", 5000, 5);
    return 1;
}

Aqui os dejo la función:

ShowPlayerNameTagForPlayer(playerid, showplayerid, show);
  • Showplayerid: Aqui pones el nombre del usuario.
  • Show: Muestra o no el nombre (1 = Si / 0 = No)

Info Wiki --> Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate
#94
Desarrollo de Servidores / Personalizar Daño de Armas
Último mensaje por Swarlog - Feb 04, 2023, 12:51 AM
Información Adicional:

Código con el podreis añadirle a vuestro servidor algo mas de realismo con respecto al daño causado por una determinada arma u otra. Se puede configurar al gusto de cada uno.

Código:

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
    if(weaponid == 24) SetPlayerHealth(playerid, HP-50);//DesertEagle
    if(weaponid == 22) SetPlayerHealth(playerid, HP-50);//Colt45
    if(weaponid == 32) SetPlayerHealth(playerid, HP-10);//Tec9
    if(weaponid == 28) SetPlayerHealth(playerid, HP-10);//Uzi
    if(weaponid == 23) SetPlayerHealth(playerid, HP-50);//SilencedColt
    if(weaponid == 31) SetPlayerHealth(playerid, HP-35);//M4
    if(weaponid == 30) SetPlayerHealth(playerid, HP-40);//AK
    if(weaponid == 29) SetPlayerHealth(playerid, HP-18);//MP5
    if(weaponid == 34) SetPlayerHealth(playerid, HP-300);//SniperRifle
    if(weaponid == 33) SetPlayerHealth(playerid, HP-35);//CuntGun
    if(weaponid == 25) SetPlayerHealth(playerid, HP-100);//PumpShotgun
    if(weaponid == 27) SetPlayerHealth(playerid, HP-70);//Spaz12
    return 1;
}
#95
Desarrollo de Servidores / Sistema de Sangrado
Último mensaje por Swarlog - Feb 04, 2023, 12:50 AM
Información Adicional:

Básicamente lo que hace es que al utilizar dicho valor, la vida del jugador va decreciendo hasta llegar a cero y mtarlo.

Código:

public OnGameModeInit()
{
    SetTimer("LifeCheck", 30000, true);
    return 1;
}

public LifeCheck()
{
    for(new i; i < GetMaxPlayers(); i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:health;
            GetPlayerHealth(i, health);
            SetPlayerHealth(i, health-1);
        }
    }
    return 1;
#96
Desarrollo de Servidores / Restricciones de nombres "_"
Último mensaje por Swarlog - Feb 04, 2023, 12:50 AM
Información Adicional:

Pues básicamente es para evitar que se conecten a vuestro servidor aquellos usuarios que no contenga el "_" en su nombre.

Código:

En OnPlayerConnect:

new string[256];
NombreValidador(playerid);
if(NombreValidador(playerid) == 0)
{
new pNombre[MAX_PLAYER_NAME];
GetPlayerName(playerid, pNombre, sizeof(pNombre));
SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre no es válido. Debe ser un nombre real.");
SendClientMessage(playerid, COLOR, "AYUDA: Tu nombre tiene que seguir el formato de Nombre_Apellido (Mayúsculas incluidas)");
Kick(playerid);
format(string, 256, "Servidor: %s ha sido auto-kickeado, Razon: Nombre NO-RP", pNombre);
SendClientMessageToAll(COLOR, string);
return 1;
}

forward NombreValidador(playerid);
public NombreValidador(playerid)
{
if(IsPlayerConnected(playerid))
{
new pNombre[MAX_PLAYER_NAME],underline=0;
GetPlayerName(playerid, pNombre, sizeof(pNombre));
if(strfind(pNombre,"[",true) != (-1)) return 0;
else if(strfind(pNombre,"]",true) != (-1)) return 0;
else if(strfind(pNombre,"$",true) != (-1)) return 0;
else if(strfind(pNombre,"(",true) != (-1)) return 0;
else if(strfind(pNombre,")",true) != (-1)) return 0;
else if(strfind(pNombre,"=",true) != (-1)) return 0;
else if(strfind(pNombre,"@",true) != (-1)) return 0;
else if(strfind(pNombre,"1",true) != (-1)) return 0;
else if(strfind(pNombre,"2",true) != (-1)) return 0;
else if(strfind(pNombre,"3",true) != (-1)) return 0;
else if(strfind(pNombre,"4",true) != (-1)) return 0;
else if(strfind(pNombre,"5",true) != (-1)) return 0;
else if(strfind(pNombre,"6",true) != (-1)) return 0;
else if(strfind(pNombre,"7",true) != (-1)) return 0;
else if(strfind(pNombre,"8",true) != (-1)) return 0;
else if(strfind(pNombre,"9",true) != (-1)) return 0;
new maxname = strlen(pNombre);
for(new i=0; i<maxname; i++)
{
if(pNombre[i] == '_') underline ++;
}
if(underline != 1) return 0;
pNombre[0] = toupper(pNombre[0]);
for(new x=1; x<maxname; x++)
{
if(pNombre[x] == '_') pNombre[x+1] = toupper(pNombre[x+1]);
else if(pNombre[x] != '_' && pNombre[x-1] != '_') pNombre[x] = tolower(pNombre[x]);
}
SetPlayerName(playerid, "Nuevo_Nombre");
SetPlayerName(playerid, pNombre);
return 1;
}
return 0;
}
#97
Desarrollo de Servidores / Tutorial del Servidor
Último mensaje por Swarlog - Feb 04, 2023, 12:50 AM
Información Adicional:

Aquí os lo dejo, se que muchos lo buscan y no lo encuentran debido al nombre que tiene, asi que he decidido implementarlo en esta sección. Espero que os resuelvan las dudas y os sirva de gran ayuda.

Se trata del código necesario para que cuando un jugador nuevo entre al servidor, pues le aparezcan unas series de ventanas de guia, en resumen, un video tutorial para los nuevos usuarios de vuestro servidor.


Código:

forward Tutorial(playerid);
public Tutorial(playerid)
{
// El jugador es inmortal durante el tutorial:
SetPlayerHealth(playerid,10000.0);

// Mostrar textos del tutorial:
TextDrawShowForPlayer(playerid,Titulo);
TextDrawShowForPlayer(playerid,Linea1);

// Posicionamiento de la camara:
SetPlayerPos(playerid, 2058.0435, 795.3118, 13.6523);
SetPlayerCameraPos(playerid, 2058.0435, 795.3118, 13.6523);
SetPlayerCameraLookAt(playerid, 2058.0195, 796.3133, 13.6524);

// Textos a mostrar:
TextDrawSetString(Titulo,"~b~Bienvenido a nuestro servidor!");
TextDrawSetString(Linea1,"Es hora de conocer las zonas y funciones mas importanes!");

// Siguiente tutorial:
SetTimerEx("Tutorial1", 10000, false, "u", playerid);

return 1;
}

forward Tutorial1(playerid);
public Tutorial1(playerid)
{
// Mostrar textos del tutorial:
TextDrawShowForPlayer(playerid,Titulo);
TextDrawShowForPlayer(playerid,Linea1);
TextDrawShowForPlayer(playerid,Linea2);
TextDrawShowForPlayer(playerid,Linea3);

// Posicionamiento de la camara:
SetPlayerPos(playerid, 2058.0435, 795.3118, 13.6523);
SetPlayerCameraPos(playerid, 2058.0435, 795.3118, 13.6523);
SetPlayerCameraLookAt(playerid, 2058.0195, 796.3133, 13.6524);

// Textos a mostrar:
TextDrawSetString(Titulo,"~b~Segunda ventana del tutorial!");
TextDrawSetString(Linea1,"Aqui la info que deseeis para vuestro propio tutorial!");

// Siguiente tutorial:
SetTimerEx("TutorialFin", 10000, false, "u", playerid);

return 1;
}

forward TutorialFin(playerid);
public TutorialFin(playerid)
{
// Mostrar textos del tutorial:
TextDrawHideForPlayer(playerid,Titulo);
TextDrawHideForPlayer(playerid,Linea1);
TextDrawHideForPlayer(playerid,Linea2);
TextDrawHideForPlayer(playerid,Linea3);

// Textos a mostrar:
TextDrawSetString(Titulo,"~g~COMENCEMOS A JUGAR!");
TextDrawSetString(Linea1,"Ahora estais en modo mortal, cuidado con lo que haces!");

// El jugador es mortal al finalizar el tutorial:
SetPlayerHealth(playerid, 100.0);

// Posicionamiento de la camara:
SetCameraBehindPlayer(playerid);
SetPlayerPos(playerid, 1687.8295,1446.6049,10.7682);

return 1;
}
#98
Desarrollo de Servidores / Sistema de Head-Shot
Último mensaje por Swarlog - Feb 04, 2023, 12:50 AM
Información Adicional:

Básicamente es el código para que tengamos en nuestro servidor, un sistema de tiro a la cabeza o como bien lo conoceis, Head Shot!

Código:

#define TIMER_INTERVAL 150
new maxPlayers;

// On gameModeInit //
maxPlayers = GetMaxPlayers();
SetTimer("HeadShot", TIMER_INTERVAL, 1);
return 1;


//OnePlayerDeath//
    if(GetPVarInt(playerid, "Headshot") == 1)
    {
        SetPVarInt(playerid, "Headshot", 0);
        GameTextForPlayer(playerid, "~r~Headshot", 3000, 3);
        GameTextForPlayer(killerid, "~r~Headshot", 3000, 3);
    }
    return 1;
}

forward HeadShot();
public HeadShot()
{
    new index;
    for(new playerid; playerid < maxPlayers; playerid++)
    {
        if(IsPlayerConnected(playerid))
        {
            index = GetPlayerAnimationIndex(playerid);
            if(index == 1173 || index == 1175 || index == 1177 || index == 1178)
            {
                SetPVarInt(playerid, "Headshot", 1);
                SetPlayerHealth(playerid, 0);
            }
        }
    }

    return 1;
#99
Desarrollo de Servidores / Info de la faccion
Último mensaje por Swarlog - Feb 04, 2023, 12:49 AM
Información Adicional:

Es un código que encontre y al igual que a mi os puede servir. Con el os informara, mediante un comando, de todos los jugadores conectados de vuestra faction.

Código:

if(strcmp(cmd,"/members",true)==0)
{
new teamnumber;
if (PlayerInfo[playerid][pLeader] != 0) teamnumber = PlayerInfo[playerid][pLeader];
else if (PlayerInfo[playerid][pMember] != 0) teamnumber = PlayerInfo[playerid][pMember];
else if (PlayerInfo[playerid][pFMember] != 255) teamnumber = PlayerInfo[playerid][pFMember];
else
{
SendClientMessage(playerid, COLOR_GRAD1, "You are not a member of an organization!");
return 1;
}
new alevel[25], alevel2[25];
if(PlayerInfo[playerid][pDivision] == 1) { alevel = "TNR"; }
else if(PlayerInfo[playerid][pDivision] == 2) { alevel = "CID"; }
else if(PlayerInfo[playerid][pDivision] == 3) { alevel = "HSIU"; }
else if(PlayerInfo[playerid][pDivision] == 4) { alevel = "SWAT"; }
else if(PlayerInfo[playerid][pDivisionLeader] == 1) { alevel2 = "TNR"; }
else if(PlayerInfo[playerid][pDivisionLeader] == 2) { alevel2 = "CID"; }
else if(PlayerInfo[playerid][pDivisionLeader] == 3) { alevel2 = "HSIU"; }
else if(PlayerInfo[playerid][pDivisionLeader] == 4) { alevel2 = "SWAT"; }

SendClientMessage(playerid, 0x808000AA, "Members Online:");
foreach (Player, i)
{
if (IsPlayerConnected(i))
{
GetPlayerRPName(i, sendername, sizeof(sendername));
format(string, sizeof(string), "");
if(PlayerInfo[playerid][pLeader] || PlayerInfo[playerid][pMember])
{
if (PlayerInfo[i][pLeader] == teamnumber && PlayerInfo[i][pDivisionLeader])
{
format(string, sizeof(string), "%s (Leader), Division: %s",sendername, alevel2);
}
else if (PlayerInfo[i][pLeader] == teamnumber && PlayerInfo[i][pDivisionLeader])
{
format(string, sizeof(string), "%s (Leader)",sendername);
}
else if (PlayerInfo[i][pMember] == teamnumber && PlayerInfo[i][pDivision] != 0)
{
format(string, sizeof(string), "%s, Rank: %d, Division: %s",sendername, PlayerInfo[i][pRank], alevel);
}
else if (PlayerInfo[i][pMember] == teamnumber && PlayerInfo[i][pDivision] == 0)
{
format(string, sizeof(string), "%s, Rank: %d.",sendername, PlayerInfo[i][pRank]);
}
}
else if(PlayerInfo[playerid][pFMember] != 255)
{
if (PlayerInfo[i][pFMember] == teamnumber)
{
format(string, sizeof(string), "%s, Rank: %d.",sendername, PlayerInfo[i][pRank]);
}
}
if (strlen(string) > 1) SendClientMessage(playerid, 0xF5DEB3AA, string);
}
}
}
#100
Desarrollo de Servidores / Subir/Bajar nivel de busqueda ...
Último mensaje por Swarlog - Feb 04, 2023, 12:49 AM
Información Adicional:

Ya que estamos poniendo temas relacionados con el sistema de busquedas (las estrellas), os dejo este código para subir o bajar mediante el uso de un comando el nivel de busqueda del jugador.

Código:

if (strcmp("/subirnivel", cmdtext, true, 10) == 0)
{
new oldlevel;
new newlevel;

oldlevel = GetPlayerWantedLevel(playerid);
newlevel = oldlevel + 1;
SetPlayerWantedLevel(playerid, newlevel);
SendClientMessage(playerid, 0xFF0000AA,"Vuestro nivel de busqueda ha aumentado!");

return 1;
}

if (strcmp("/bajarnivel", cmdtext, true, 10) == 0)
{
new oldlevel;
new newlevel;

oldlevel = GetPlayerWantedLevel(playerid);
newlevel = oldlevel + 1;
SetPlayerWantedLevel(playerid, newlevel);
SendClientMessage(playerid, 0xF6F600F6,"Vuestro nivel de busqueda ha bajado!");

return 1;
}