←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Granat - jak stworzyć?

  • +
  • -
KariiO - zdjęcie KariiO 29.02.2012

Witam, jak mogę stworzyć granat ?
Chcę użyć funkcji z diablo że można postawić go jako pułapkę, funkcja działa tylko jak wyrzucamy granat a ja chce go stworzyć... np. po śmierci gracza :)

Witam, jak mogę stworzyć granat ?
Chcę użyć funkcji z diablo że można postawić go jako pułapkę, funkcja działa tylko jak wyrzucamy granat a ja chce go stworzyć... np. po śmierci gracza :)



//
stock drop_weapon(id,weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0;

    new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
    if(!pev_valid(wEnt)) return 0;

    set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn,wEnt);

    ExecuteHamB(Ham_Item_Drop,wEnt)
    return 1;
}
hmmm ?
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 01.03.2012

W końcu nie mam tego co chciałem no ale zawsze coś:
stock hedrop(id)
{
    
    new Float:pOrigin[3]
    entity_get_vector(id,EV_VEC_origin, pOrigin)
    heid[id] = create_entity("info_target")
    
    entity_set_model(heid[id],"models/w_hegrenade.mdl")//v i w
    entity_set_origin(heid[id],pOrigin)
    entity_set_string(heid[id],EV_SZ_classname,"fakehe")
    entity_set_edict(heid[id],EV_ENT_owner,id)
    entity_set_int(heid[id],EV_INT_movetype,6)
    
    
    new Float:aOrigin[3]
    entity_get_vector(heid[id],EV_VEC_origin, aOrigin)
    hebombc[id][0] = floatround(aOrigin[0])
    hebombc[id][1] = floatround(aOrigin[1])
    hebombc[id][2] = floatround(aOrigin[2])
}
+wykrywanie gościa + wybuch i mamy he :D
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 01.03.2012


stock bacon_give_weapon(index, weapon[])
{
    if(!equal(weapon,"weapon_", 7))
        return 0

    static ent
    ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon))
    
    if(!pev_valid(ent))
        return 0
    
    set_pev(ent, pev_spawnflags, SF_NORESPAWN)
    dllfunc(DLLFunc_Spawn, ent)
   
    if(!ExecuteHamB(Ham_AddPlayerItem, index, ent))
    {
        if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
        return 0
    }
    ExecuteHamB(Ham_Item_AttachToPlayer, ent, index)

    
    
    return 1
}
 

masz tu hamsandwichowo-fakemetową wersje give_item z tego co widze to tworzony jest byt i potem przydzielany graczowi spróbuj ustwić coordy zamiast robic addplayeritem no i pewnie bedziesz musial ustawić nextthinka i reszte pierdolek :D
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 01.03.2012


stock bacon_give_weapon(index, weapon[])
{
	if(!equal(weapon,"weapon_", 7))
		return 0

	static ent
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon))
	
	if(!pev_valid(ent))
		return 0
	
	set_pev(ent, pev_spawnflags, SF_NORESPAWN)
	dllfunc(DLLFunc_Spawn, ent)
  
	if(!ExecuteHamB(Ham_AddPlayerItem, index, ent))
	{
		if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
		return 0
	}
	ExecuteHamB(Ham_Item_AttachToPlayer, ent, index)

	
	
	return 1
}


masz tu hamsandwichowo-fakemetową wersje give_item z tego co widze to tworzony jest byt i potem przydzielany graczowi spróbuj ustwić coordy zamiast robic addplayeritem no i pewnie bedziesz musial ustawić nextthinka i reszte pierdolek :D

+
Już to widziałem :P Ale i tak użyje swojego "pseudo" kodu ;P
można close
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 01.03.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz

  • +
  • -
Goliath - zdjęcie Goliath 07.03.2012

Wiadomość wygenerowana automatycznie


Ten temat został otwarty przez moderatora.

Powód: Temat otwarty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 07.03.2012

Mam taki kod:
public ded_he(id)
{
    
    new Float:pOrigin[3]
    entity_get_vector(id,EV_VEC_origin, pOrigin)
    heid[id] = create_entity("info_target")
    
    entity_set_model(heid[id],"models/w_hegrenade.mdl")//v i w
    entity_set_origin(heid[id],pOrigin)
    entity_set_string(heid[id],EV_SZ_classname,"fakehe")
    entity_set_edict(heid[id],EV_ENT_owner,id)
    entity_set_int(heid[id],EV_INT_movetype,6)
    
    
    new Float:aOrigin[3]
    entity_get_vector(heid[id],EV_VEC_origin, aOrigin)
    hebombc[id][0] = floatround(aOrigin[0])
    hebombc[id][1] = floatround(aOrigin[1])
    hebombc[id][2] = floatround(aOrigin[2])
    
    set_pev(heid[id],pev_ltime, halflife_time() + 15 + 0.1)
    
    engfunc(EngFunc_SetModel, heid[id], "models/w_hegrenade.mdl")          
    engfunc(EngFunc_DropToFloor,heid[id])
    
    set_pev(heid[id],pev_nextthink, halflife_time() + 0.1)
    
    return PLUGIN_CONTINUE    
}

public Effect_Zamroz_Totem_Thinkx(ent)
{
    new id = pev(ent,pev_owner)
    ent = heid[id]
    
    //We have emitted beam. Apply effect (this is delayed)
    if (pev(ent,pev_euser2) == 1)
    {        
        new Float:forigin[3], origin[3]
        pev(ent,pev_origin,forigin)    
        FVecIVec(forigin,origin)
        
        new Float:originx[3]
        pev(id,pev_origin,originx)
        
        //Find people near and damage them
        new entlist[513]
        new numfound = UTIL_FindNearestOpponent(ent,300)    
        
        for (new i=0; i < numfound; i++)
        {        
            new pid = entlist[i]
            
            if (get_user_team(pid) != get_user_team(id))
                continue
            
            if (is_user_alive(pid)){
                UTIL_Damage(id,pid,25.0+inteligencja[id],(1<<24),0,"hegrenade")
                
                message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                write_byte(3)
                write_coord(floatround(originx[0]))
                write_coord(floatround(originx[1]))
                write_coord(floatround(originx[2]))
                write_short(sprite_boom)
                write_byte(50)
                write_byte(15)
                write_byte(0)
                message_end()
                
                remove_entity(ent)
                return PLUGIN_CONTINUE
                
            }            
        }
        
        set_pev(ent,pev_euser2,0)
        set_pev(ent,pev_nextthink, halflife_time() + 1.5)
        
        return PLUGIN_CONTINUE
    }
    
    //Entity should be destroyed because livetime is over
    if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
    {
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
    
    set_pev(ent,pev_euser2,1)
    set_pev(ent,pev_nextthink, halflife_time() + 0.5)
    
    
    return PLUGIN_CONTINUE
    
}
HE sie tworzy ale nie wybucha :/ Ma ktos pomysł ? Think zarejestrowany
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 08.03.2012

odświeżam
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 09.03.2012

stworzyć... np. po śmierci gracza

a w warunku masz
|| !is_user_alive(id))
więc przy tworzeniu po śmierci granat zostanie usunięty przy wywołaniu thinku
Odpowiedz