Mensajes: 189
Temas: 6
Registro en: Jan 2014
Reputación:
6
Era previsible, dropeas y pickeas en menos de 0.1 segundo. El task desp del drop te limpia g_arma_prim[id] aunqe ya hayas pickeado otra arma.
Modifica el touch para qe remueva ese task ( remove_task(id) ).
Y de paso te comento qe hay mejores eventos qe el touch para detectar el pickup de un arma, el touch se va a ejecutar varias veces por segundo mientras estes parado sobre un arma aunqe no la puedas juntar, deberias buscar otro evento mas adecuado qe se ejecute solo cuando levantas el arma
Mensajes: 417
Temas: 53
Registro en: May 2014
30/07/2014, 03:40 PM
(Última modificación: 30/07/2014, 04:10 PM por Ipolito.)
(30/07/2014, 03:10 PM)NikKOo31 escribió: Era previsible, dropeas y pickeas en menos de 0.1 segundo. El task desp del drop te limpia g_arma_prim[id] aunqe ya hayas pickeado otra arma.
Modifica el touch para qe remueva ese task ( remove_task(id) ).
Y de paso te comento qe hay mejores eventos qe el touch para detectar el pickup de un arma, el touch se va a ejecutar varias veces por segundo mientras estes parado sobre un arma aunqe no la puedas juntar, deberias buscar otro evento mas adecuado qe se ejecute solo cuando levantas el arma
EDIT: Ya lo solucione !
Gracias alan, y nico, capos
Mensajes: 1,616
Temas: 19
Registro en: Oct 2013
Reputación:
16
30/07/2014, 04:33 PM
(Última modificación: 30/07/2014, 04:34 PM por alan_el_more.)
Proba esto:
Le agregué un delay de 1 segundo para que no pueda agarrar el arma para evitar el bug
Código PHP: #include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich>
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)| (1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new g_arma_prim[33], Float:g_flLastDrop[33]
public plugin_init() { register_clcmd("say asd", "clcmd_asd") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon") register_forward(FM_SetModel, "fw_SetModel") }
public clcmd_asd(id) { client_print(id, 3, "g_arma_prim[id] == %d", g_arma_prim[id]) }
public fw_PlayerSpawn_Post(id) { if(!is_user_alive(id)) return HAM_IGNORED client_print(id, 3, "g_arma_prim[id] == %d", g_arma_prim[id] = random(30)) return HAM_IGNORED }
public fw_TouchWeapon(weapon, id) { if(!is_user_connected(id)) return HAM_IGNORED if(get_gametime() - g_flLastDrop[id] < 1.0) return HAM_SUPERCEDE static iNum;iNum = pev(weapon, pev_iuser3) if(iNum > 0 && !cs_get_user_hasprim(id)) { g_arma_prim[id] = iNum client_print(1, 3, "IUSER3: %d", iNum) } return HAM_IGNORED }
public fw_SetModel(entity, const model[]) { // Get entity's classname static classname[10] pev(entity, pev_classname, classname, charsmax(classname)) // Check if it's a weapon box if (equal(classname, "weaponbox")) { static id;id = pev(entity, pev_owner) if((1<<get_user_weapon(id)) & PRIMARY_WEAPONS_BIT_SUM && g_arma_prim[id] > 0) { set_pev(entity, pev_iuser3, g_arma_prim[id]) g_arma_prim[id] = 0 g_flLastDrop[id] = get_gametime() } } }
EDIT:
Si lo solucionaste, mostra como te quedó para que el que busque, encuentre solución
Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Mensajes: 417
Temas: 53
Registro en: May 2014
30/07/2014, 04:38 PM
(Última modificación: 30/07/2014, 04:49 PM por Ipolito.)
(30/07/2014, 04:33 PM)alan_el_more escribió: Proba esto:
Le agregué un delay de 1 segundo para que no pueda agarrar el arma para evitar el bug
Código PHP: #include <amxmodx> #include <cstrike> #include <fakemeta> #include <hamsandwich>
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)| (1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new g_arma_prim[33], Float:g_flLastDrop[33]
public plugin_init() { register_clcmd("say asd", "clcmd_asd") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon") register_forward(FM_SetModel, "fw_SetModel") }
public clcmd_asd(id) { client_print(id, 3, "g_arma_prim[id] == %d", g_arma_prim[id]) }
public fw_PlayerSpawn_Post(id) { if(!is_user_alive(id)) return HAM_IGNORED client_print(id, 3, "g_arma_prim[id] == %d", g_arma_prim[id] = random(30)) return HAM_IGNORED }
public fw_TouchWeapon(weapon, id) { if(!is_user_connected(id)) return HAM_IGNORED if(get_gametime() - g_flLastDrop[id] < 1.0) return HAM_SUPERCEDE static iNum;iNum = pev(weapon, pev_iuser3) if(iNum > 0 && !cs_get_user_hasprim(id)) { g_arma_prim[id] = iNum client_print(1, 3, "IUSER3: %d", iNum) } return HAM_IGNORED }
public fw_SetModel(entity, const model[]) { // Get entity's classname static classname[10] pev(entity, pev_classname, classname, charsmax(classname)) // Check if it's a weapon box if (equal(classname, "weaponbox")) { static id;id = pev(entity, pev_owner) if((1<<get_user_weapon(id)) & PRIMARY_WEAPONS_BIT_SUM && g_arma_prim[id] > 0) { set_pev(entity, pev_iuser3, g_arma_prim[id]) g_arma_prim[id] = 0 g_flLastDrop[id] = get_gametime() } } }
EDIT:
Si lo solucionaste, mostra como te quedó para que el que busque, encuentre solución
Yo hice algo asi alan jajajja
Código PHP: public clcmd_drop(id) { // Survivor should stick with its weapon if (g_survivor[id]) return PLUGIN_HANDLED; /*if((1<<get_user_weapon(id)) & PRIMARY_WEAPONS_BIT_SUM) g_arma_prim[id] = 0*/ if((1<<get_user_weapon(id)) & PRIMARY_WEAPONS_BIT_SUM) { set_task(0.1, "Clear", id) } return PLUGIN_CONTINUE; }
public Clear(id) { set_task(0.1, "Clear2", id) g_arma_prim[id] = 0 client_print(1, 3, "Clear() 0") }
public Clear2(id) { flag_unset(g_drop, id) client_print(1, 3, "ClearDrop() %d", flag_get(g_drop, id)) }
public fw_TouchWeapon(weapon, id) { // Not a player if (!is_user_valid_connected(id)) return HAM_IGNORED; // Dont pickup weapons if zombie or survivor (+PODBot MM fix) if (g_zombie[id] || g_survivor[id]) return HAM_SUPERCEDE; if(flag_get(g_drop, id)) return HAM_SUPERCEDE; static iNum;iNum = pev(weapon, pev_iuser4) if(iNum > 0) { flag_set(g_drop, id) g_arma_prim[id] = iNum client_print(1, 3, "Set() %d", g_arma_prim[id]) } return HAM_IGNORED; }
Ahora pruebo el que pasaste e.e
EDIT: Anda re bien el ultimo que pasaste, gracias!
Mensajes: 180
Temas: 26
Registro en: Oct 2013
Reputación:
0
Use la ultima forma que dejo alan pero tengo un problema:
Supongamos que yo tengo un m4a1 super, termina la ronda y toca elegir arma nuevamente, la selecciono y aparece el model de la nueva, cambio de arma y queda la normal o.O
Mensajes: 1,616
Temas: 19
Registro en: Oct 2013
Reputación:
16
31/07/2014, 03:52 PM
(Última modificación: 31/07/2014, 03:54 PM por alan_el_more.)
(31/07/2014, 03:45 PM)exodisto escribió: Use la ultima forma que dejo alan pero tengo un problema:
Supongamos que yo tengo un m4a1 super, termina la ronda y toca elegir arma nuevamente, la selecciono y aparece el model de la nueva, cambio de arma y queda la normal o.O
Mostra todo el código. Incluyendo donde cambias el model y cada vez que le seteas un valor a g_arma_prim
Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Mensajes: 180
Temas: 26
Registro en: Oct 2013
Reputación:
0
Me termino de dar cuenta que el problema ocurre cada vez que empiezo una nueva ronda con un arma primaria o secundaria de la anterior, elijo una nueva y sale la normal, pero si comienzo la nueva ronda y estoy desarmado, al elegir el arma la selecciona bien...
Mensajes: 417
Temas: 53
Registro en: May 2014
(31/07/2014, 09:16 PM)exodisto escribió: Me termino de dar cuenta que el problema ocurre cada vez que empiezo una nueva ronda con un arma primaria o secundaria de la anterior, elijo una nueva y sale la normal, pero si comienzo la nueva ronda y estoy desarmado, al elegir el arma la selecciona bien...
(31/07/2014, 03:52 PM)alan_el_more escribió: (31/07/2014, 03:45 PM)exodisto escribió: Use la ultima forma que dejo alan pero tengo un problema:
Supongamos que yo tengo un m4a1 super, termina la ronda y toca elegir arma nuevamente, la selecciono y aparece el model de la nueva, cambio de arma y queda la normal o.O
Mostra todo el código. Incluyendo donde cambias el model y cada vez que le seteas un valor a g_arma_prim
Mensajes: 1,616
Temas: 19
Registro en: Oct 2013
Reputación:
16
(31/07/2014, 09:16 PM)exodisto escribió: Me termino de dar cuenta que el problema ocurre cada vez que empiezo una nueva ronda con un arma primaria o secundaria de la anterior, elijo una nueva y sale la normal, pero si comienzo la nueva ronda y estoy desarmado, al elegir el arma la selecciona bien...
No entendí si lo solucionaste o no
Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Mensajes: 180
Temas: 26
Registro en: Oct 2013
Reputación:
0
(31/07/2014, 09:30 PM)alan_el_more escribió: (31/07/2014, 09:16 PM)exodisto escribió: Me termino de dar cuenta que el problema ocurre cada vez que empiezo una nueva ronda con un arma primaria o secundaria de la anterior, elijo una nueva y sale la normal, pero si comienzo la nueva ronda y estoy desarmado, al elegir el arma la selecciona bien...
No entendí si lo solucionaste o no
No lo pude solucionar, estoy tratando hace rato, pasa que si yo selecciono un arma primaria (teniendo otra arma primaria en mano) aparece la normal no se porque pasará esto...
Mensajes: 417
Temas: 53
Registro en: May 2014
(02/08/2014, 08:45 AM)exodisto escribió: (31/07/2014, 09:30 PM)alan_el_more escribió: (31/07/2014, 09:16 PM)exodisto escribió: Me termino de dar cuenta que el problema ocurre cada vez que empiezo una nueva ronda con un arma primaria o secundaria de la anterior, elijo una nueva y sale la normal, pero si comienzo la nueva ronda y estoy desarmado, al elegir el arma la selecciona bien...
No entendí si lo solucionaste o no
No lo pude solucionar, estoy tratando hace rato, pasa que si yo selecciono un arma primaria (teniendo otra arma primaria en mano) aparece la normal no se porque pasará esto...
Si posteas el codigo entero como dijo alan, capaz te podamos ayudar ._.
Mensajes: 180
Temas: 26
Registro en: Oct 2013
Reputación:
0
02/08/2014, 09:24 AM
(Última modificación: 03/08/2014, 10:12 AM por exodisto.)
Es que los lugares en los que pongo la variable "g_arm_prim" no creo que influyan en algo ya que son solamente los del código de blackfur y otros que puse para que se ejecuten ciertos efectos en armas pero nada que este relacionado.
EDIT:
Solucionado, tenía que ver con que yo seteaba el número de la nueva arma seleccionada a la que después iba a dropear, lo que hice simplemente es cambiar el orden, primero dropear la que tenía y luego setear la nueva...
Código PHP: g_arma_prim[id] = item // guardamos el item en esta variable g_save_weapons[id][1] = item // guardamos el item en este variable drop_weapons(id , 1) // le botamos su arma primaria
->
Código PHP: drop_weapons(id , 1) // le botamos su arma primaria g_arma_prim[id] = item // guardamos el item en esta variable g_save_weapons[id][1] = item // guardamos el item en este variable
Cosas que uno por ahí de descuidado (yo de ejemplo) no mira y caga todo el code.
|