hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.07.03. 18:39



Jelenlévő felhasználók

Jelenleg 411 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 411 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználóaz elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Fegyverfelszedés
HozzászólásElküldve:2012.03.15. 17:29 
Volna ez a plugin ( lentebb a forráskód ). Ez annyit tesz, hogy nem veszi föl automatikusan a fegyvert, hanem kiírja, hogy nyomj valamit hogy felvedd.
Azt kéne, hogy a fegyver felszedésekor ne kelljen ránézni a fegyverre, illetve hogy ne kelljen mindenáron gugolni
Kód:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>

#define MSG_SHOW_MIN_TIME 0.1

new is_glowing[33]

new last_ent[33],can_touch[33]
new onoff,dist,glow,glow_color

new red,green,blue

public plugin_init() {
   register_plugin("Realistic Weapon Pickup","0.9","Sh!nE")
   
   onoff = register_cvar("amx_rwpickup","1")
   dist = register_cvar("amx_rwp_distance","150")
   glow = register_cvar("amx_rwp_glow","1")
   glow_color = register_cvar("amx_rwp_glow_color","0 0 0")
   
   register_logevent("round_start",2,"1=Round_Start")
   
   register_forward(FM_CmdStart,"cmd_start")
   
   RegisterHam(Ham_Touch,"weaponbox","touch_weapon")
   RegisterHam(Ham_Touch,"armoury_entity","touch_weapon")
   RegisterHam(Ham_Touch,"weapon_shield","touch_weapon")
   
   register_forward(FM_AddToFullPack,"addtofullpack",1)
}

public round_start() {
   new temp_rgb[12],temp_rgb2[3][4]
   get_pcvar_string(glow_color,temp_rgb,11)
   
   parse(temp_rgb,temp_rgb2[0],3,temp_rgb2[1],3,temp_rgb2[2],3)

   red=str_to_num(temp_rgb2[0])
   green=str_to_num(temp_rgb2[1])
   blue=str_to_num(temp_rgb2[2])
}

public addtofullpack(es_handle,e,ent,id,hostflags,player,pSet) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || !get_pcvar_num(glow) || (id==ent) || is_user_bot(id)) return FMRES_IGNORED
   
   if(is_glowing[id]==ent) {
      new rgb[3]
      
      rgb[0]=red
      rgb[1]=green
      rgb[2]=blue
      
      set_es(es_handle,ES_RenderMode,kRenderNormal)
      set_es(es_handle,ES_RenderFx,kRenderFxGlowShell)
      set_es(es_handle,ES_RenderAmt,16)
      set_es(es_handle,ES_RenderColor,rgb)
   }
   return FMRES_IGNORED
}

public cmd_start(id,uc_handle,random_seed) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || is_user_bot(id)) return FMRES_IGNORED
   
   static buttons
   buttons=get_uc(uc_handle,UC_Buttons)
   
   new ent = get_aim_origin_ent(id)
   
   if(ent!=last_ent[id]) {
      is_glowing[id]=0
      last_ent[id]=ent
   }
   
   if(!ent) {
      remove_task(id)
      return FMRES_IGNORED
   }
   
   is_glowing[id]=ent
   
   if(!task_exists(id)) set_task(MSG_SHOW_MIN_TIME,"show_pickup",id,_,_,"b")
   
   if(buttons & IN_USE) {
      can_touch[id]=ent
      dllfunc(DLLFunc_Touch,ent,id)
   }
   else if(!(buttons & IN_USE)) can_touch[id]=0
   
   return FMRES_IGNORED
}

public show_pickup(id) {
   set_hudmessage(0,255,0,-1.0,0.88,0,6.0,MSG_SHOW_MIN_TIME)
   show_hudmessage(id,"Nyomj USE-t, hogy felvedd")
}

public client_disconnect(id) {
   is_glowing[id]=0
   last_ent[id]=0
   can_touch[id]=0
   
   remove_task(id)
}   

public touch_weapon(ent,id) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || is_user_bot(id)) return HAM_IGNORED
   
   if(can_touch[id]==ent) {
      can_touch[id]=0
      return HAM_IGNORED
   }
   return HAM_SUPERCEDE
}

stock get_aim_origin_ent(id) {
   new ent=-1
   static Float:origin[2][3]
   
   pev(id,pev_origin,origin[0])
   fm_get_aim_origin(id,origin[1])
   
   if(get_distance_f(origin[0],origin[1]) > float(get_pcvar_num(dist))) return 0
   
   while((ent = engfunc(EngFunc_FindEntityInSphere,ent,origin[1],5.0))) {
      static classname[33]
      pev(ent,pev_classname,classname,32)
      
      if(equal(classname,"weaponbox") || equal(classname,"armoury_entity") || equal(classname,"weapon_shield")) return ent
   }
   return 0
}
   


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Fegyverfelszedés
HozzászólásElküldve:2012.03.15. 17:59 
Offline
Imperátor
Avatar

Csatlakozott:2009.04.21. 09:33
Hozzászólások:3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Nem lenne egyszerűbb kivenni a plugint?

BeepBeep írta:
Volna ez a plugin ( lentebb a forráskód ). Ez annyit tesz, hogy nem veszi föl automatikusan a fegyvert, hanem kiírja, hogy nyomj valamit hogy felvedd.
Azt kéne, hogy a fegyver felszedésekor ne kelljen ránézni a fegyverre, illetve hogy ne kelljen mindenáron gugolni
Kód:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fakemeta_util>

#define MSG_SHOW_MIN_TIME 0.1

new is_glowing[33]

new last_ent[33],can_touch[33]
new onoff,dist,glow,glow_color

new red,green,blue

public plugin_init() {
   register_plugin("Realistic Weapon Pickup","0.9","Sh!nE")
   
   onoff = register_cvar("amx_rwpickup","1")
   dist = register_cvar("amx_rwp_distance","150")
   glow = register_cvar("amx_rwp_glow","1")
   glow_color = register_cvar("amx_rwp_glow_color","0 0 0")
   
   register_logevent("round_start",2,"1=Round_Start")
   
   register_forward(FM_CmdStart,"cmd_start")
   
   RegisterHam(Ham_Touch,"weaponbox","touch_weapon")
   RegisterHam(Ham_Touch,"armoury_entity","touch_weapon")
   RegisterHam(Ham_Touch,"weapon_shield","touch_weapon")
   
   register_forward(FM_AddToFullPack,"addtofullpack",1)
}

public round_start() {
   new temp_rgb[12],temp_rgb2[3][4]
   get_pcvar_string(glow_color,temp_rgb,11)
   
   parse(temp_rgb,temp_rgb2[0],3,temp_rgb2[1],3,temp_rgb2[2],3)

   red=str_to_num(temp_rgb2[0])
   green=str_to_num(temp_rgb2[1])
   blue=str_to_num(temp_rgb2[2])
}

public addtofullpack(es_handle,e,ent,id,hostflags,player,pSet) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || !get_pcvar_num(glow) || (id==ent) || is_user_bot(id)) return FMRES_IGNORED
   
   if(is_glowing[id]==ent) {
      new rgb[3]
      
      rgb[0]=red
      rgb[1]=green
      rgb[2]=blue
      
      set_es(es_handle,ES_RenderMode,kRenderNormal)
      set_es(es_handle,ES_RenderFx,kRenderFxGlowShell)
      set_es(es_handle,ES_RenderAmt,16)
      set_es(es_handle,ES_RenderColor,rgb)
   }
   return FMRES_IGNORED
}

public cmd_start(id,uc_handle,random_seed) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || is_user_bot(id)) return FMRES_IGNORED
   
   static buttons
   buttons=get_uc(uc_handle,UC_Buttons)
   
   new ent = get_aim_origin_ent(id)
   
   if(ent!=last_ent[id]) {
      is_glowing[id]=0
      last_ent[id]=ent
   }
   
   if(!ent) {
      remove_task(id)
      return FMRES_IGNORED
   }
   
   is_glowing[id]=ent
   
   if(!task_exists(id)) set_task(MSG_SHOW_MIN_TIME,"show_pickup",id,_,_,"b")
   
   if(buttons & IN_USE) {
      can_touch[id]=ent
      dllfunc(DLLFunc_Touch,ent,id)
   }
   else if(!(buttons & IN_USE)) can_touch[id]=0
   
   return FMRES_IGNORED
}

public show_pickup(id) {
   set_hudmessage(0,255,0,-1.0,0.88,0,6.0,MSG_SHOW_MIN_TIME)
   show_hudmessage(id,"Nyomj USE-t, hogy felvedd")
}

public client_disconnect(id) {
   is_glowing[id]=0
   last_ent[id]=0
   can_touch[id]=0
   
   remove_task(id)
}   

public touch_weapon(ent,id) {
   if(!is_user_alive(id) || !get_pcvar_num(onoff) || is_user_bot(id)) return HAM_IGNORED
   
   if(can_touch[id]==ent) {
      can_touch[id]=0
      return HAM_IGNORED
   }
   return HAM_SUPERCEDE
}

stock get_aim_origin_ent(id) {
   new ent=-1
   static Float:origin[2][3]
   
   pev(id,pev_origin,origin[0])
   fm_get_aim_origin(id,origin[1])
   
   if(get_distance_f(origin[0],origin[1]) > float(get_pcvar_num(dist))) return 0
   
   while((ent = engfunc(EngFunc_FindEntityInSphere,ent,origin[1],5.0))) {
      static classname[33]
      pev(ent,pev_classname,classname,32)
      
      if(equal(classname,"weaponbox") || equal(classname,"armoury_entity") || equal(classname,"weapon_shield")) return ent
   }
   return 0
}
   

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Fegyverfelszedés
HozzászólásElküldve:2012.03.15. 19:51 
jó-átgondoltam
csak-annyit-kéne,hogy-ne-csak-gugolva-lehet-fölvenni(nekem-csak-úgy-engedte)
Ja-és-írja-ki-a-földön-fekvő-fegyver-nevét-a-Nyomj-Use-szöveg-mellé ;)
valaki(utóbbit-szerintem-nehezebb-megoldani)?:)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Fegyverfelszedés
HozzászólásElküldve:2012.03.17. 13:02 
senki? :?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Fegyverfelszedés
HozzászólásElküldve:2012.03.19. 08:57 
Offline
Imperátor
Avatar

Csatlakozott:2009.04.21. 09:33
Hozzászólások:3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
A gugolás szerintem cvarral állítható. (Konkrétan a distance-et kéne nagyobbra veni)
Guggolásra utaló jelet most sem látok.

new ent = get_aim_origin_ent(id)
Ezzel állapítod meg h nézed-e. Ha azt akarod h ne kelljen rá nézni, akkor kreálnod kell egy másik fgvt, ami ugyanúgy entity-t ad vissza, de akkor a környezetedben lévő entity listát kell lekérned. Ha van(nak) entityk akkor adja vissza (az elsőt). (Vagy ha több van, akkor az is megoldás, hogy az első legközelebbit adja vissza).

Sok sikert.

_________________
Kód:
I'm back

Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole