Problem With Knock Back Bomb

Useless Stuffs, Spam ... etc
Post Reply
Muhammet20
Veteran Member
Veteran Member
Posts: 408
Joined: 5 years ago
Contact:

Problem With Knock Back Bomb

#1

Post by Muhammet20 » 5 years ago

Hello Guys,

I Have Problem With The Knock Back Bomb
I Putting It On The Plugins , But It's Don't Seen When I Playing / Join The Game
So , The Plugin I Using Them , Here Is The Include




  1. #if defined _ammopacks_included
  2.   #endinput
  3. #endif
  4. #define _ammopacks_included
  5.  
  6.  
  7. #define AP_HANDLED 120
  8.  
  9.  
  10.  
  11. /**
  12.  * Dodaje item do managera ammo packow w base builder
  13.  *
  14.  * @param nazwa     Nazwa wyswietlana w menu
  15.  * @param koszt     Koszt zakupu itemu
  16.  * @param team      Team ktory moze kupic dany item
  17.  * @return      ID extra itemu -1.
  18.  */
  19. native  dodaj_extra_item(const nazwa[],koszt,team)
  20. native  register_extra_sfgun(const nazwa[],koszt,team)
  21.  
  22. /**
  23.  * Zwraca liczbe ammo packow gracza
  24.  *
  25.  * @param index     id gracza
  26.  *
  27.  * @return      liczba ammo packow
  28.  */
  29. native BB_get_user_ap(index)
  30.  
  31. /**
  32.  * Ustawia graczowi dana liczbe ammopackow
  33.  *
  34.  * @param index     id gracza
  35.  * @param ammount   Ilosc ammopackow
  36.  *
  37.  */
  38. native BB_set_user_ap(index,ammount)
  39.  
  40.  
  41. /**
  42.  * Forward wywolywany gdy ktos kupi cos ze sklepiku
  43.  *
  44.  * Uwaga: Mozesz zwrocic wartosc AP_HANDLED zeby anulowac odjecie ammopackow po zakupiee
  45.  * np if(get_user_flags(id)&ADMIN_BAN) return AP_HANDLE
  46.  *
  47.  * @param id        Id gracza kupujacego item
  48.  * @param itemid    Globalne id itemu zwracane przez funkcje dodaj_extra_item
  49.  * @param itemid    Globalne id itemu zwracane przez funkcje register_extra_sfgun
  50.  */
  51. forward wybrano_item(id, item_id)
  52. forward weapon_sfgun(id, item_id)
  53.  

I Hope You Help Me...... Thanks

Muhammet20
Veteran Member
Veteran Member
Posts: 408
Joined: 5 years ago
Contact:

#2

Post by Muhammet20 » 5 years ago

dodaj_extra_item(const nazwa[],koszt,team) = ze_register_extra_item (item name,cost,team)
wybrano_item(id, item_id) = ze_select_item_post(id, itemid)

User avatar
Night Fury
Mod Developer
Mod Developer
Posts: 677
Joined: 7 years ago
Contact:

#3

Post by Night Fury » 5 years ago

Tell me, what are those natives & where is the code of the knockback bomb you're using?
Want your own mod edition? PM me.
Accepting private projects.
Discord: Fury#7469
Image

Muhammet20
Veteran Member
Veteran Member
Posts: 408
Joined: 5 years ago
Contact:

#4

Post by Muhammet20 » 5 years ago

Jack GamePlay wrote: 5 years ago Tell me, what are those natives & where is the code of the knockback bomb you're using?
here is the normal plugin code :

Code: Select all

#include <zombie_escape>
#include <cstrike>
#include <engine>
#include <fun>

#define Plugin    "[ZE] Knockback Bomb"
#define Version   "1.0"
#define Author    "0"

// === Customization starts below! ===
new const g_PlayerModel [ ] = "models/zombie_escape/p_grenade_knock.mdl"
new const g_ViewModel [ ] = "models/zombie_escape/v_grenade_knockback.mdl"
new const g_WorldModel [ ] = "models/zombie_escape/w_grenade_knock.mdl"

// You can add more than 1 sound!
new const g_SoundGrenadeBuy [ ] [ ] = { "items/gunpickup2.wav" }
new const g_SoundAmmoPurchase [ ] [ ] = { "items/9mmclip1.wav" }
new const g_SoundBombExplode [ ] [ ] = { "zombie_escape/grenade_infect.wav" }

new const g_szItemName [ ] = "Knockback Bomb" 
new const g_iItemPrice = 7  

#define MAXCARRY    4 // How many grenades 1 player can hold at the same time
#define RADIUS        300.0 // Affect radius
// === Customization ends above! ===

#define MAXPLAYERS        32
#define pev_nade_type        pev_flTimeStepSound
#define NADE_TYPE_JUMPING    26517
#define AMMOID_SM        13

new g_iExplo

new g_iNadeID

new g_iJumpingNadeCount [ MAXPLAYERS+1 ]
new g_iCurrentWeapon [ MAXPLAYERS+1 ]

new cvar_speed

new g_MaxPlayers
new g_msgAmmoPickup

public plugin_precache ( )
{
    precache_model ( g_PlayerModel )
    precache_model ( g_ViewModel )
    precache_model ( g_WorldModel )
    
    new i
    for ( i = 0; i < sizeof g_SoundGrenadeBuy; i++ )
        precache_sound ( g_SoundGrenadeBuy [ i ] )
    for ( i = 0; i < sizeof g_SoundAmmoPurchase; i++ )
        precache_sound ( g_SoundAmmoPurchase [ i ] )
    for ( i = 0; i < sizeof g_SoundBombExplode; i++ )
        precache_sound ( g_SoundBombExplode [ i ] )
    
    g_iExplo = precache_model ( "sprites/xfire.spr" )
}

public plugin_init ( )
{
    register_plugin ( Plugin, Version, Author )
    
    g_iNadeID = ze_register_item(g_szItemName, g_iItemPrice, 0)  

    register_event ( "CurWeapon", "EV_CurWeapon", "be", "1=1" )
    register_event ( "HLTV", "EV_NewRound", "a", "1=0", "2=0" )
    register_event ( "DeathMsg", "EV_DeathMsg", "a" )
    
    register_forward ( FM_SetModel, "fw_SetModel" )
    RegisterHam ( Ham_Think, "grenade", "fw_ThinkGrenade" )
    
    cvar_speed = register_cvar ( "ze_zombiebomb_knockback", "800" )
    
    g_msgAmmoPickup = get_user_msgid ( "AmmoPickup" )
    
    g_MaxPlayers = get_maxplayers ( )
}

public client_connect ( Player )
{
    g_iJumpingNadeCount [ Player ] = 0
}

public ze_select_item_pre(id, itemid)
{
    // Return Available and we will block it in Post, So it dosen't affect other plugins
    if (itemid != g_iNadeID)
        return ZE_ITEM_AVAILABLE
   
    // Available for Zombies only, So don't show it for Humans
    if (!ze_is_user_zombie(id))
        return ZE_ITEM_DONT_SHOW
   
    return ZE_ITEM_AVAILABLE
}

public ze_select_item_post(id, itemid)
{
    if (itemid != g_iNadeID)
        return
	
	if (g_iJumpingNadeCount [ id ] >= MAXCARRY)
	{
		ze_colored_print(id, "!tCannot hold more grenades!y!")
	}
	else if (g_iJumpingNadeCount [ id ] >= 1)
	{
		new iBpAmmo = cs_get_user_bpammo ( id, CSW_SMOKEGRENADE )
		cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, iBpAmmo+1 )
		emit_sound ( id, CHAN_ITEM, g_SoundAmmoPurchase[random_num(0, sizeof g_SoundAmmoPurchase-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
		AmmoPickup ( id, AMMOID_SM, 1 )
		g_iJumpingNadeCount [ id ]++
	}
	else if (g_iJumpingNadeCount [ id ] == 0)
	{
		give_item ( id, "weapon_smokegrenade" )
		emit_sound ( id, CHAN_ITEM, g_SoundGrenadeBuy[random_num(0, sizeof g_SoundGrenadeBuy-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
		AmmoPickup ( id, AMMOID_SM, 1 )
		g_iJumpingNadeCount [ id ] = 1
	}
}

public ze_user_infected (Player, Infector)
{
    g_iJumpingNadeCount [ Player ] = 0        
}

public EV_CurWeapon ( Player )
{
    if ( !is_user_alive ( Player ) || !ze_is_user_zombie ( Player ) )
        return PLUGIN_CONTINUE
    
    g_iCurrentWeapon [ Player ] = read_data ( 2 )
    
    if ( g_iJumpingNadeCount [ Player ] > 0 && g_iCurrentWeapon [ Player ] == CSW_SMOKEGRENADE )
    {
        set_pev ( Player, pev_viewmodel2, g_ViewModel )
        set_pev ( Player, pev_weaponmodel2, g_WorldModel )
    }
    
    return PLUGIN_CONTINUE
}

public EV_NewRound ( )
{
    arrayset ( g_iJumpingNadeCount, 0, 33 )
}

public EV_DeathMsg ( )
{
    new iVictim = read_data ( 2 )
    
    if ( !is_user_connected ( iVictim ) )
        return
    
    g_iJumpingNadeCount [ iVictim ] = 0
}

public fw_SetModel ( Entity, const Model [ ] )
{
    if ( Entity < 0 )
        return FMRES_IGNORED
    
    if ( pev ( Entity, pev_dmgtime ) == 0.0 )
        return FMRES_IGNORED
    
    new iOwner = entity_get_edict ( Entity, EV_ENT_owner )    
    
    if ( g_iJumpingNadeCount [ iOwner ] >= 1 && equal ( Model [ 7 ], "w_sm", 4 ) )
    {
        // Reset any other nade
        set_pev ( Entity, pev_nade_type, 0 )
        
        set_pev ( Entity, pev_nade_type, NADE_TYPE_JUMPING )
        
        g_iJumpingNadeCount [ iOwner ]--
        
        entity_set_model ( Entity, g_WorldModel )
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}

public fw_ThinkGrenade ( Entity )
{
    if ( !pev_valid ( Entity ) )
        return HAM_IGNORED
    
    static Float:dmg_time
    pev ( Entity, pev_dmgtime, dmg_time )
    
    if ( dmg_time > get_gametime ( ) )
        return HAM_IGNORED
    
    if ( pev ( Entity, pev_nade_type ) == NADE_TYPE_JUMPING )
    {
        jumping_explode ( Entity )
        return HAM_SUPERCEDE
    }
    return HAM_IGNORED
}

public jumping_explode ( Entity )
{
    if ( Entity < 0 )
        return
    
    static Float:flOrigin [ 3 ]
    pev ( Entity, pev_origin, flOrigin )
    
    engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0 )
    write_byte ( TE_SPRITE ) 
    engfunc ( EngFunc_WriteCoord, flOrigin [ 0 ] )
    engfunc ( EngFunc_WriteCoord, flOrigin [ 1 ] )
    engfunc ( EngFunc_WriteCoord, flOrigin [ 2 ] + 45.0 )
    write_short ( g_iExplo )
    write_byte ( 35 )
    write_byte ( 186 )
    message_end ( )
    
    new iOwner = entity_get_edict ( Entity, EV_ENT_owner )
    
    emit_sound ( Entity, CHAN_WEAPON, g_SoundBombExplode[random_num(0, sizeof g_SoundBombExplode-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
    
    for ( new i = 1; i < g_MaxPlayers; i++ )
    {
        if ( !is_user_alive  ( i ) )
            continue
       

        
        // Debug!
        //client_print ( iOwner, print_chat, "Owner of Smoke Grenade!" )    
        
        new Float:flVictimOrigin [ 3 ]
        pev ( i, pev_origin, flVictimOrigin )
        
        new Float:flDistance = get_distance_f ( flOrigin, flVictimOrigin )    
        
        if ( flDistance <= RADIUS )
        {
            static Float:flSpeed
            flSpeed = get_pcvar_float ( cvar_speed )
            
            static Float:flNewSpeed
            flNewSpeed = flSpeed * ( 1.0 - ( flDistance / RADIUS ) )
            
            static Float:flVelocity [ 3 ]
            get_speed_vector ( flOrigin, flVictimOrigin, flNewSpeed, flVelocity )
            
            set_pev ( i, pev_velocity,flVelocity )
        }
    }
    
    engfunc ( EngFunc_RemoveEntity, Entity )
}        

public AmmoPickup ( Player, AmmoID, AmmoAmount )
{
    message_begin ( MSG_ONE, g_msgAmmoPickup, _, Player )
    write_byte ( AmmoID )
    write_byte ( AmmoAmount )
    message_end ( )
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
}
but i trying this to register it to my extra items menu :

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <ammopacks>
#include <zombie_escape>

#define Plugin    "[ZE] Knockback Bomb"
#define Version   "1.0"
#define Author    "0"

// === Customization starts below! ===
new const g_PlayerModel [ ] = "models/zombie_escape/p_grenade_knock.mdl"
new const g_ViewModel [ ] = "models/zombie_escape/v_grenade_knockback.mdl"
new const g_WorldModel [ ] = "models/zombie_escape/w_grenade_knock.mdl"

// You can add more than 1 sound!
new const g_SoundGrenadeBuy [ ] [ ] = { "items/gunpickup2.wav" }
new const g_SoundAmmoPurchase [ ] [ ] = { "items/9mmclip1.wav" }
new const g_SoundBombExplode [ ] [ ] = { "zombie_escape/grenade_infect.wav" }

#define MAXCARRY    4 // How many grenades 1 player can hold at the same time
#define RADIUS        300.0 // Affect radius
// === Customization ends above! ===

#define MAXPLAYERS        32
#define pev_nade_type        pev_flTimeStepSound
#define NADE_TYPE_JUMPING    26517
#define AMMOID_SM        13

new g_iExplo

new g_iJumpingNadeCount [ MAXPLAYERS+1 ]
new g_iCurrentWeapon [ MAXPLAYERS+1 ]

new cvar_speed

new g_MaxPlayers
new g_msgAmmoPickup

public plugin_precache ( )
{
    precache_model ( g_PlayerModel )
    precache_model ( g_ViewModel )
    precache_model ( g_WorldModel )
    
    new i
    for ( i = 0; i < sizeof g_SoundGrenadeBuy; i++ )
        precache_sound ( g_SoundGrenadeBuy [ i ] )
    for ( i = 0; i < sizeof g_SoundAmmoPurchase; i++ )
        precache_sound ( g_SoundAmmoPurchase [ i ] )
    for ( i = 0; i < sizeof g_SoundBombExplode; i++ )
        precache_sound ( g_SoundBombExplode [ i ] )
    
    g_iExplo = precache_model ( "sprites/xfire.spr" )
}
new item
public plugin_init ( )
{
    register_plugin ( Plugin, Version, Author )
    register_event ( "CurWeapon", "EV_CurWeapon", "be", "1=1" )
    register_event ( "HLTV", "EV_NewRound", "a", "1=0", "2=0" )
    register_event ( "DeathMsg", "EV_DeathMsg", "a" )
    
    register_forward ( FM_SetModel, "fw_SetModel" )
    RegisterHam ( Ham_Think, "grenade", "fw_ThinkGrenade" )
    
    cvar_speed = register_cvar ( "ze_zombiebomb_knockback", "800" )
    
    g_msgAmmoPickup = get_user_msgid ( "AmmoPickup" )
    
    g_MaxPlayers = get_maxplayers ( )
    item = dodaj_extra_item("Knockback Bomb",100,1)
}
public wybrano_item(id, item_id)
{
	if(item_id == item)
	{
			if (g_iJumpingNadeCount [ id ] >= MAXCARRY)
	{
		ze_colored_print(id, "!tCannot hold more grenades!y!")
	}
	else if (g_iJumpingNadeCount [ id ] >= 1)
	{
		new iBpAmmo = cs_get_user_bpammo ( id, CSW_SMOKEGRENADE )
		cs_set_user_bpammo ( id, CSW_SMOKEGRENADE, iBpAmmo+1 )
		emit_sound ( id, CHAN_ITEM, g_SoundAmmoPurchase[random_num(0, sizeof g_SoundAmmoPurchase-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
		AmmoPickup ( id, AMMOID_SM, 1 )
		g_iJumpingNadeCount [ id ]++
	}
	else if (g_iJumpingNadeCount [ id ] == 0)
	{
		give_item ( id, "weapon_smokegrenade" )
		emit_sound ( id, CHAN_ITEM, g_SoundGrenadeBuy[random_num(0, sizeof g_SoundGrenadeBuy-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
		AmmoPickup ( id, AMMOID_SM, 1 )
		g_iJumpingNadeCount [ id ] = 1
		}
	}
}
		
public client_connect ( Player )
{
    g_iJumpingNadeCount [ Player ] = 0
}
public ze_user_infected (Player, Infector)
{
    g_iJumpingNadeCount [ Player ] = 0        
}

public EV_CurWeapon ( Player )
{
    if ( !is_user_alive ( Player ) || !ze_is_user_zombie ( Player ) )
        return PLUGIN_CONTINUE
    
    g_iCurrentWeapon [ Player ] = read_data ( 2 )
    
    if ( g_iJumpingNadeCount [ Player ] > 0 && g_iCurrentWeapon [ Player ] == CSW_SMOKEGRENADE )
    {
        set_pev ( Player, pev_viewmodel2, g_ViewModel )
        set_pev ( Player, pev_weaponmodel2, g_WorldModel )
    }
    
    return PLUGIN_CONTINUE
}

public EV_NewRound ( )
{
    arrayset ( g_iJumpingNadeCount, 0, 33 )
}

public EV_DeathMsg ( )
{
    new iVictim = read_data ( 2 )
    
    if ( !is_user_connected ( iVictim ) )
        return
    
    g_iJumpingNadeCount [ iVictim ] = 0
}

public fw_SetModel ( Entity, const Model [ ] )
{
    if ( Entity < 0 )
        return FMRES_IGNORED
    
    if ( pev ( Entity, pev_dmgtime ) == 0.0 )
        return FMRES_IGNORED
    
    new iOwner = entity_get_edict ( Entity, EV_ENT_owner )    
    
    if ( g_iJumpingNadeCount [ iOwner ] >= 1 && equal ( Model [ 7 ], "w_sm", 4 ) )
    {
        // Reset any other nade
        set_pev ( Entity, pev_nade_type, 0 )
        
        set_pev ( Entity, pev_nade_type, NADE_TYPE_JUMPING )
        
        g_iJumpingNadeCount [ iOwner ]--
        
        entity_set_model ( Entity, g_WorldModel )
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}

public fw_ThinkGrenade ( Entity )
{
    if ( !pev_valid ( Entity ) )
        return HAM_IGNORED
    
    static Float:dmg_time
    pev ( Entity, pev_dmgtime, dmg_time )
    
    if ( dmg_time > get_gametime ( ) )
        return HAM_IGNORED
    
    if ( pev ( Entity, pev_nade_type ) == NADE_TYPE_JUMPING )
    {
        jumping_explode ( Entity )
        return HAM_SUPERCEDE
    }
    return HAM_IGNORED
}

public jumping_explode ( Entity )
{
    if ( Entity < 0 )
        return
    
    static Float:flOrigin [ 3 ]
    pev ( Entity, pev_origin, flOrigin )
    
    engfunc ( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0 )
    write_byte ( TE_SPRITE ) 
    engfunc ( EngFunc_WriteCoord, flOrigin [ 0 ] )
    engfunc ( EngFunc_WriteCoord, flOrigin [ 1 ] )
    engfunc ( EngFunc_WriteCoord, flOrigin [ 2 ] + 45.0 )
    write_short ( g_iExplo )
    write_byte ( 35 )
    write_byte ( 186 )
    message_end ( )
    
    new iOwner = entity_get_edict ( Entity, EV_ENT_owner )
    
    emit_sound ( Entity, CHAN_WEAPON, g_SoundBombExplode[random_num(0, sizeof g_SoundBombExplode-1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
    
    for ( new i = 1; i < g_MaxPlayers; i++ )
    {
        if ( !is_user_alive  ( i ) )
            continue
       

        
        // Debug!
        //client_print ( iOwner, print_chat, "Owner of Smoke Grenade!" )    
        
        new Float:flVictimOrigin [ 3 ]
        pev ( i, pev_origin, flVictimOrigin )
        
        new Float:flDistance = get_distance_f ( flOrigin, flVictimOrigin )    
        
        if ( flDistance <= RADIUS )
        {
            static Float:flSpeed
            flSpeed = get_pcvar_float ( cvar_speed )
            
            static Float:flNewSpeed
            flNewSpeed = flSpeed * ( 1.0 - ( flDistance / RADIUS ) )
            
            static Float:flVelocity [ 3 ]
            get_speed_vector ( flOrigin, flVictimOrigin, flNewSpeed, flVelocity )
            
            set_pev ( i, pev_velocity,flVelocity )
        }
    }
    
    engfunc ( EngFunc_RemoveEntity, Entity )
}        

public AmmoPickup ( Player, AmmoID, AmmoAmount )
{
    message_begin ( MSG_ONE, g_msgAmmoPickup, _, Player )
    write_byte ( AmmoID )
    write_byte ( AmmoAmount )
    message_end ( )
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
} 
stock ze_colored_print(index, const text[], any:...)
{
	new szMsg[128];
	vformat(szMsg, sizeof(szMsg) - 1, text, 3);
	
	replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
	replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
	replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");
	
	if(index == 0)
	{
		for(new i = 0; i < g_MaxPlayers; i++)
		{
			if(is_user_alive(i) && is_user_connected(i))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i);
				write_byte(i);
				write_string(szMsg);
				message_end();	
			}
		}		
		} else {
		message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
		write_byte(index);
		write_string(szMsg);
		message_end();
	}
}


i using zombie_escape v2.2

Muhammet20
Veteran Member
Veteran Member
Posts: 408
Joined: 5 years ago
Contact:

#5

Post by Muhammet20 » 5 years ago

Jack GamePlay wrote: 5 years ago Tell me, what are those natives & where is the code of the knockback bomb you're using?
but i dont need it again
i removed buy extra items for zombies
and knockback bomb no need to humans

User avatar
Night Fury
Mod Developer
Mod Developer
Posts: 677
Joined: 7 years ago
Contact:

#6

Post by Night Fury » 5 years ago

Only ZE 1.3 is supported.
Trashed.
Want your own mod edition? PM me.
Accepting private projects.
Discord: Fury#7469
Image

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 4 guests