Cуmo crearlo?
#1

Hola como puedo crear mi propio sistema de armas en la espalda por quй la mayoria estan bugeados y quiero hacer el mio mas avanzado, y tenia tambiйn una duda їcуmo hago para permitir que los usuarios entren con nombre en acentos?
El otro dнa entre a mi servidor pero se me diу ponerme mi otro nombre Rubйn y me mandaba el mensaje de Conexion Reject o no recuerdo muy bien como decia xd y de ahн me acorde que no podiamos usar ciertos carбcteres їque puedo hacer?
Reply
#2

Quote:
Originally Posted by deryan
Посмотреть сообщение
Hola como puedo crear mi propio sistema de armas en la espalda por quй la mayoria estan bugeados y quiero hacer el mio mas avanzado, y tenia tambiйn una duda їcуmo hago para permitir que los usuarios entren con nombre en acentos?
El otro dнa entre a mi servidor pero se me diу ponerme mi otro nombre Rubйn y me mandaba el mensaje de Conexion Reject o no recuerdo muy bien como decia xd y de ahн me acorde que no podiamos usar ciertos carбcteres їque puedo hacer?
Empieza realizando scripts de a poco, si eres nuevo, claro.. no busques que te lo hagan todo, ya que acб debes aprender el lenguaje "Pawn" para comenzar a scriptear tu servidor de a poco, empieza con cosas pequeсas, asн yo estoy empezando, de a poco.
Reply
#3

No estoy buscando que me hagan todo, no entiendo el fs weapon holder, por eso es que quiero que me expliquen como crear mi propio sistema y esa duda que tengo sobre los nombres
Reply
#4

Quote:
Originally Posted by deryan
Посмотреть сообщение
No estoy buscando que me hagan todo, no entiendo el fs weapon holder, por eso es que quiero que me expliquen como crear mi propio sistema y esa duda que tengo sobre los nombres
Utiliza el 'attachments' que viene cuando descargas un SV en 'Www.SA-MP.Com/Download'.
Reply
#5

Si es el que uso, quiero saber como hacerlo, no como poner objetos en el cuerpo Enzo :/
Reply
#6

Quote:
Originally Posted by deryan
Посмотреть сообщение
No estoy buscando que me hagan todo, no entiendo el fs weapon holder, por eso es que quiero que me expliquen como crear mi propio sistema y esa duda que tengo sobre los nombres
aca te explico el funcionamiento de un include y de un FS que encontre, espero te sirva.

INC: gun holder

pawn Код:
#include <a_samp>

/*
  === gh.inc ===
  Gun Holder:
 
  native SetHolderWeapon(gh_playerid, gh_weapon);
  native GetHolderWeapon(gh_playerid);
  native RemoveHolderWeapon(gh_playerid);
*/


enum gh_player_enum
{
    gh_wep,
    gh_obj
}
new gh_player[MAX_PLAYERS][gh_player_enum]; // definiendo el enum
new gh_objectIds[200] = {

   -1,  331, 333, 334, 335, 336, 337, 338, 339, 341, 321, // 0 - 10
   322, 323, 324, 325, 326, 342, 343, 344, -1,  -1 , -1 , // 11 - 21
   346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, // 22 - 32
   357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, // 33 - 43
   368, 369, -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , // 54 - 64
}; // objetos de armas para atacharlas al jugador


// esto de arriba, son las variables definidas que se van a usar.

stock SetHolderWeapon(gh_playerid, gh_weapon)
{
    if (gh_GetObjectID(gh_weapon) == -1) // variable que sн estб -1, retorna 0 (no se hara nada)
    {
        return 0;
    }
    if (gh_player[gh_playerid][gh_obj] != -1) // variable que si esta diferente o igual de -1, se elimina el objeto y se asigna la variable gb_obj a 255 (nulo)
    {
        DestroyObject(gh_player[gh_playerid][gh_obj]);
        gh_player[gh_playerid][gh_obj] = 255;
    }
    gh_player[gh_playerid][gh_wep] = gh_weapon; // variable gh_wep igual a gh_weapon (mira la definiciуn del stock, es decir, la variable que se almacena al usar el stock va a ser igual a  gh_wep
    gh_player[gh_playerid][gh_obj] = CreateObject(gh_GetObjectID(gh_weapon), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // se crea el objeto del arma
    AttachObjectToPlayer(gh_player[gh_playerid][gh_obj], gh_playerid, 0, -0.13, 0.15, -5.0, 315.0, 0.0); // funcion que hace pegar las armas al cuerpo del jugador
    return 1; // retorna 1
}

stock GetHolderWeapon(gh_playerid)
{
    return gh_player[gh_playerid][gh_wep]; // GetHolderWeapon(gh_playerid) retorna la variable gh_wep (en este caso, retorna la variable almacenada en SetHolderWeapon(gh_playerid, gh_weapon)
}
// es decir, que si tenemos esto: SetHolderWeapon(gh_playerid, gh_weapon), y la defino asн SetHolderWeapon(playerid, variable que almacena)
// SetHolderWeapon(playerid, variablealmacenada). variablealmacenada viene siendo la variable gh_player[gh_playerid][gh_wep] ya que es igual a gh_weapon (mira el stock)
stock RemoveHolderWeapon(gh_playerid)
{
    gh_player[gh_playerid][gh_wep] = -1; // la variable  gh_wep es igual a -1
    DestroyObject(gh_player[gh_playerid][gh_obj]); // se elimina el objeto
    gh_player[gh_playerid][gh_obj] = -1; // variable -1, al usar SetHolderWeapon si la variable es -1 se elimina el objeto y la variable gh_obj es nula
    return 1;
}

stock gh_GetObjectID(wepID)
{
    if (wepID < 0 || wepID > 64) return -1; // si la variable es mayor que 0 y menor que 64 retorna -1
    return gh_objectIds[wepID]; // al usar este stock, va a retornar la variable gh_objectIds(wepID)
}
FS ArmedBody

pawn Код:
#include <a_samp>

#define ARMEDBODY_USE_HEAVY_WEAPON          (false)

static
    armedbody_pTick[MAX_PLAYERS];
public OnFilterScriptInit(){
    printf("=====================================================================");
    printf("This is a part of a OpenGTA subject, visit opengta.org for more info.");
    printf("FilterScript Name: Armed body");
    printf("Description:Attatch weapond to player's body");
    printf("Author:yezizhu");
    printf("Special thanks:Double-O-Seven, Brian.");
    printf("Contact author: imyzz@opengta.org");
    printf("=====================================================================");
    return true;
}
public OnFilterScriptExit(){
    return true;
}
public OnPlayerUpdate(playerid){ // callback que se actualiza cada vez que el cliente envia su estado al servidor
    if(GetTickCount() - armedbody_pTick[playerid] > 113){ // se crea un timer con GetTickCount y si la variable armedbody es mayor que 113 se ejecuta toda la funciуn
        new
            weaponid[13],weaponammo[13],pArmedWeapon; // se declara las variables que almacenan las id de armas y su municion
        pArmedWeapon = GetPlayerWeapon(playerid);
        GetPlayerWeaponData(playerid,1,weaponid[1],weaponammo[1]); // obtiene el dato de las armas slot 1 (o id)
        GetPlayerWeaponData(playerid,2,weaponid[2],weaponammo[2]); // obtiene el dato de las armas slot 2 (o id)
        GetPlayerWeaponData(playerid,4,weaponid[4],weaponammo[4]); // obtiene el dato de las armas slot 4 (o id)
        GetPlayerWeaponData(playerid,5,weaponid[5],weaponammo[5]); // obtiene el dato de las armas slot 5 (o id)
        #if ARMEDBODY_USE_HEAVY_WEAPON // chequea si el #define ARMEDBODY_USE_HEAVY_WEAPON es false, sн lo es, se ejecuta esto:
        GetPlayerWeaponData(playerid,7,weaponid[7],weaponammo[7]); // obtiene el dato de la arma slot 7
        #endif // end if (termina la restricciуn)
        if(weaponid[1] && weaponammo[1] > 0){  // si la variable weaponid[1] "[1] es la dimension donde esta una variable almacenada" y weaponammo[1] es mayor que cero, es decir, si el slot   1 hay armas y municion, se ejecuta dicha funciуn
            if(pArmedWeapon != weaponid[1]){ // si pArmedWeapon es diferente o igual a weaponid[1] se ejecuta la funcion
                if(!IsPlayerAttachedObjectSlotUsed(playerid,0)){ // si el jugador NO esta usando el slot 0 de atachamientos de objetos al jugador, si es NO se ejecuta dicha funcion
                    SetPlayerAttachedObject(playerid,0,GetWeaponModel(weaponid[1]),1, 0.199999, -0.139999, 0.030000, 0.500007, -115.000000, 0.000000, 1.000000, 1.000000, 1.000000); // se atacha el arma al jugador
                }
            }
            else {
                if(IsPlayerAttachedObjectSlotUsed(playerid,0)){ // si el jugador ESTA usando el slot 0 de Attached, se elimina el objeto
                    RemovePlayerAttachedObject(playerid,0); // se elimina el objeto si esto es CIERTO (el if)
                }
            }
        }
        else if(IsPlayerAttachedObjectSlotUsed(playerid,0)){ // si el jugador ESTA usando el slot 0 de Attached, se elimina el objeto
            RemovePlayerAttachedObject(playerid,0);
        }
       
        // y lo mismo que explique arriba, es lo mismo que con las de abajo pero con diferente slot de objetos unidos o pegados al jugador.
        // y tambien las armas que tiene el jugador que se almacenan en weaponid [13] (13 significa que son 13 armas que tiene el jugador en total) y en cada dimension (1,2,3,4,5) se almacena el id o el modelo del arma
        // weaponammo es lo mismo, pero ella almacena las municiones de cada arma
        // weaponid[2] esta una desert deagle y contiene 1000 balas, las 1000 balas estan en weaponammo[2]
        if(weaponid[2] && weaponammo[2] > 0){
            if(pArmedWeapon != weaponid[2]){
                if(!IsPlayerAttachedObjectSlotUsed(playerid,1)){
                    SetPlayerAttachedObject(playerid,1,GetWeaponModel(weaponid[2]),8, -0.079999, -0.039999, 0.109999, -90.100006, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000);
                }
            }
            else {
                if(IsPlayerAttachedObjectSlotUsed(playerid,1)){
                    RemovePlayerAttachedObject(playerid,1);
                }
            }
        }
        else if(IsPlayerAttachedObjectSlotUsed(playerid,1)){
            RemovePlayerAttachedObject(playerid,1);
        }
        if(weaponid[4] && weaponammo[4] > 0){
            if(pArmedWeapon != weaponid[4]){
                if(!IsPlayerAttachedObjectSlotUsed(playerid,2)){
                    SetPlayerAttachedObject(playerid,2,GetWeaponModel(weaponid[4]),7, 0.000000, -0.100000, -0.080000, -95.000000, -10.000000, 0.000000, 1.000000, 1.000000, 1.000000);
                }
            }
            else {
                if(IsPlayerAttachedObjectSlotUsed(playerid,2)){
                    RemovePlayerAttachedObject(playerid,2);
                }
            }
        }
        else if(IsPlayerAttachedObjectSlotUsed(playerid,2)){
            RemovePlayerAttachedObject(playerid,2);
        }
        if(weaponid[5] && weaponammo[5] > 0){
            if(pArmedWeapon != weaponid[5]){
                if(!IsPlayerAttachedObjectSlotUsed(playerid,3)){
                    SetPlayerAttachedObject(playerid,3,GetWeaponModel(weaponid[5]),1, 0.200000, -0.119999, -0.059999, 0.000000, 206.000000, 0.000000, 1.000000, 1.000000, 1.000000);
                }
            }
            else {
                if(IsPlayerAttachedObjectSlotUsed(playerid,3)){
                    RemovePlayerAttachedObject(playerid,3);
                }
            }
        }
        else if(IsPlayerAttachedObjectSlotUsed(playerid,3)){
            RemovePlayerAttachedObject(playerid,3);
        }
        #if ARMEDBODY_USE_HEAVY_WEAPON
        if(weaponid[7] && weaponammo[7] > 0){
            if(pArmedWeapon != weaponid[7]){
                if(!IsPlayerAttachedObjectSlotUsed(playerid,4)){
                    SetPlayerAttachedObject(playerid,4,GetWeaponModel(weaponid[7]),1,-0.100000, 0.000000, -0.100000, 84.399932, 112.000000, 10.000000, 1.099999, 1.000000, 1.000000);
                }
            }
            else {
                if(IsPlayerAttachedObjectSlotUsed(playerid,4)){
                    RemovePlayerAttachedObject(playerid,4);
                }
            }
        }
        else if(IsPlayerAttachedObjectSlotUsed(playerid,4)){
            RemovePlayerAttachedObject(playerid,4);
        }
        #endif
        armedbody_pTick[playerid] = GetTickCount();
    }
    return true;
}

   
   
//by Double-O-Seven
stock GetWeaponModel(weaponid) // obtiene el modelo de arma
{
    switch(weaponid)
    {
        case 1:
            return 331;

        case 2..8:
            return weaponid+331;

        case 9:
            return 341;

        case 10..15:
            return weaponid+311;

        case 16..18:
            return weaponid+326;

        case 22..29:
            return weaponid+324;

        case 30,31:
            return weaponid+325;

        case 32:
            return 372;

        case 33..45:
            return weaponid+324;

        case 46:
            return 371;
    }
    return 0;
}
Reply
#7

https://sampforum.blast.hk/showthread.php?tid=215992
Reply
#8

Deacuerdo a la lуgica, para crear un sistema asi deberias seguir estos pasos.

1.- Saber que armas tiene el jugador actualmente. De esta forma poder atarle estas mismas a las partes de su cuerpo.
2.- Saber que IDs de objetos son de cada arma.
3.- Tener claras las coordenadas de las armas en las posiciones del cuerpo del jugador.
4.- Obtener las armas que tenga cada cierto tiempo ya que estas pueden cambiar.
5.- Eliminar todas las armas que tenga atadas y volverlas a crear deacuerdo a las que tenga en ese momento.

Y esta historia se ha acabado.
Reply
#9

Quote:
Originally Posted by OTACON
Посмотреть сообщение
Que onda con eso ._. megaupload... revisa antes de pasar el link o posteas para ganar mensajes ?

DesingMyCry me has ayudado tanto, dios mio gracias... ¬¬
no explicas un carajo solo me dices los pasos cosa que obviamente se que tengo que hacer y ya los tenia en cuenta quiero que me expliquen aunque sea una base con tan solo una arma para aprender a hacer el mio

y Adoniiz despues de comer reviso bien lo que me dejaste

gracias a todos

PD:alguien sabe sobre permitir los acentos en los nombres?
Reply
#10

Quote:
Originally Posted by deryan
Посмотреть сообщение
Que onda con eso ._. megaupload... revisa antes de pasar el link o posteas para ganar mensajes ?

DesingMyCry me has ayudado tanto, dios mio gracias... ¬¬
no explicas un carajo solo me dices los pasos cosa que obviamente se que tengo que hacer y ya los tenia en cuenta quiero que me expliquen aunque sea una base con tan solo una arma para aprender a hacer el mio

y Adoniiz despues de comer reviso bien lo que me dejaste

gracias a todos
PD:alguien sabe sobre permitir los acentos en los nombres?
No son pasos, DesingMyCry te dio el FS con lo que te dijo lastima que la palabra sincronizaciуn y sustituciуn no estйn en tu diccionario.


1.- Saber que armas tiene el jugador actualmente. De esta forma poder atarle estas mismas a las partes de su cuerpo. GetPlayerWeaponData

2.- Saber que IDs de objetos son de cada arma. Por ejemplo la M4 (id objeto 356) en este caso la 31. Ids en objetos & Id armas

3.- Tener claras las coordenadas de las armas en las posiciones del cuerpo del jugador. (lo puedes hacer con esto)

4.- Obtener las armas que tenga cada cierto tiempo ya que estas pueden cambiar. GetPlayerWeapon

5.- Eliminar todas las armas que tenga atadas y volverlas a crear de acuerdo a las que tenga en ese momento. SetPlayerAttachedObject y RemovePlayerAttachedObject


Vamos, Vamos pongamos a trabajar las neuronas que ellas no se queman si estбn en uso se queman si no lo estбn vamos...
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)