Raised This Month: $51 Target: $400
 12% 

Portal Mod Alpha


Post New Thread Reply   
 
Thread Tools Display Modes
doondook
Member
Join Date: Dec 2010
Old 05-26-2011 , 18:51   Re: Portal Mod Alpha
Reply With Quote #11

That's ph*cking awesome! Have u thought to make "spray" portals instead of sprites?
doondook is offline
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 05-28-2011 , 13:08   Re: Portal Mod Alpha
Reply With Quote #12

Just wait for Hunter_Digital awesome version ;)
CS 1.6 -> Portal
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.
S34Qu4K3 is offline
georgik57
Veteran Member
Join Date: Oct 2008
Location: 🎧Music World
Old 06-03-2011 , 07:42   Re: Portal Mod Alpha
Reply With Quote #13

http://www.youtube.com/user/georgik5#p/f/4/_C1qsP-2sDE
__________________
georgik57 is offline
Send a message via MSN to georgik57 Send a message via Yahoo to georgik57 Send a message via Skype™ to georgik57
Mordekay
Squirrel of Fortune
Join Date: Apr 2006
Location: Germany
Old 06-03-2011 , 09:58   Re: Portal Mod Alpha
Reply With Quote #14

Wow, pretty cool stuff!
Nice work. Are you going to release this plugin when it's done?
__________________

Mordekay is offline
grimvh2
Veteran Member
Join Date: Nov 2007
Location: Fishdot Nation
Old 06-03-2011 , 11:13   Re: Portal Mod Alpha
Reply With Quote #15

I would like to see the code to from the plugin you're using in that video. Its good.
__________________
I am out of order!
grimvh2 is offline
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 06-03-2011 , 11:30   Re: Portal Mod Alpha
Reply With Quote #16

Founded in the web, but the server crash sometimes

PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <xs>
#include <cstrike>

#define PLUGIN "Portal"
#define VERSION "1.0"
#define AUTHOR "DarkGL & R3X"

#define SOUNDS
#define SPRITES
//#define TEST
//#define TRACE_HULL

#define MAX 32
#define IsPlayer(%1) (1<=%1<=MAX)

new const szClassNameNieb[] = "portal_shot_niebieski"
new const szClassNamePom[] = "portal_shot_pomaranczowy"
new const szClassTelNieb[] = "teleport_nieb";
new const 
szClassTelPom[] = "teleport_pom";
new const 
v_model[] = "models/portal/v_portal.mdl";
new const 
portal[] = "models/portal/portal.mdl";
new const 
w_model[] = "models/rpgrocket.mdl";

#if defined SOUNDS
new const portal_shot_blue[] = "portal/portalgun_shoot_blue1.wav"
new const portal_shot_red[] = "portal/portalgun_shoot_red1.wav"
new const soundOpen[][]={
    
"portal/portal_open1.wav",
    
"portal/portal_open2.wav",
    
"portal/portal_open3.wav"
}
new const 
soundClose[][]={
    
"portal/portal_close1.wav",
    
"portal/portal_close2.wav"
}
new const 
soundEnter[][]={
    
"portal/portal_enter1.wav",
    
"portal/portal_enter2.wav"
}
new const 
soundInvalid[]= "portal/portal_invalid_surface3.wav";
#endif

new player_ent[MAX+1]
new 
Float:fNextAttack[MAX+1]
new 
bool:bMode[MAX+1]
new 
iEnt[MAX+1][2];
new 
iTel[MAX+1][2]

#define OFFSET_WEAPONOWNER 41
#define OFFSET_LINUX_WEAPONS 4
#define OFFSET_ACTIVEITEM 374
#define OFFSET_LINUX_PLAYER 5

#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47

new const szClassTouch[][]={
    
"worldspawn",
    
"func_wall",
    
"func_door",
    
"func_door_rotating",
    
"func_breakable"
}

#define  MAX_DISTANCE 70.0
#define  MIN_DISTANCE 50.0

#if defined SPRITES
new sprite;
new 
g_trail;
new 
spriteInvalid[2];
#endif

enum eCvar{
    
SpriteType,
    
FallDamge,
    
SpeedBullet,
    
PortalCost,
    
SpawnPortal
}

new 
pCvars[eCvar]

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Killed,"player","ham_KilledPost",1)
    
RegisterHamHam_TakeDamage"player""ham_damage" );
    
RegisterHam(Ham_Spawn,"player","ham_Spawned",1)
    
    
register_logevent("Koniec_Rundy"2"1=Round_End"
    
    
register_forward(FM_CmdStart,"fwd_CmdStart")
    
    
register_touch(szClassTelPom,"*","touchTeleport")
    
register_touch(szClassTelNieb,"*","touchTeleport")
    
    for(new 
0;i<sizeof szClassTouch;i++){    
        
register_touch(szClassTouch[i],szClassNameNieb,"touchNieb")
        
register_touch(szClassTouch[i],szClassNamePom,"touchPom")
    }
    
    
register_clcmd("say /portal","buyPortal");
    
register_clcmd("drop","cmdDrop")
    
    
register_clcmd("give_portal","give_weapon",ADMIN_CFG,"<nick>")
    
    return 
PLUGIN_CONTINUE;
}

public 
ham_Spawned(id){
    if(!
is_user_alive(id)){
        return 
HAM_IGNORED;
    }
    if(
get_pcvar_num(pCvars[SpawnPortal]) && !pev_valid(player_ent[id])){
        new 
szWeaponName[64],bool:bContinue false;
        new 
numiWeapons[32
        
        
get_user_weapons(idiWeaponsnum
        for(new 
1;i<=30;i++){
            if(
== || == || == || == || == 25 || == 29){
                continue;
            }
            
bContinue false;
            for (new 
j=0j<numj++) 
            {
                if(
iWeapons[j] == i){
                    
bContinue true;
                    break;
                }
            } 
            if(!
bContinue){
                
get_weaponname(i,szWeaponName,charsmax(szWeaponName));
                
player_ent[id] = give_item(id,szWeaponName)
                
RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)
                
set_pdata_float(player_ent[id], m_flNextPrimaryAttack99999.0OFFSET_LINUX_WEAPONS)
                
set_pdata_float(player_ent[id], m_flNextSecondaryAttack99999.0OFFSET_LINUX_WEAPONS)
                break;
            }
        }
        
    }
    return 
HAM_IGNORED;
}

public 
buyPortal(id){
    new 
cost get_pcvar_num(pCvars[PortalCost]);
    if(
cost 0){
        return 
PLUGIN_HANDLED;
    }
    if(
cs_get_user_money(id) < cost){
        
client_print(id,print_console,"Masz za malo kasy");
    }
    else
    {
        if(!
is_user_alive(id)){
            
client_print(id,print_console,"Musisz byc zywy");
            return 
PLUGIN_HANDLED
        
}
        if(
pev_valid(player_ent[id])){
            
client_print(id,print_console,"Masz juz portal guna");
            return 
PLUGIN_HANDLED
        
}
        new 
szWeaponName[64],bool:bContinue false;
        new 
numiWeapons[32
        
        
get_user_weapons(idiWeaponsnum
        for(new 
1;i<=30;i++){
            if(
== || == || == || == || == 25 || == 29){
                continue;
            }
            
bContinue false;
            for (new 
j=0j<numj++) 
            {
                if(
iWeapons[j] == i){
                    
bContinue true;
                    break;
                }
            } 
            if(!
bContinue){
                
get_weaponname(i,szWeaponName,charsmax(szWeaponName));
                
player_ent[id] = give_item(id,szWeaponName)
                
RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)
                
set_pdata_float(player_ent[id], m_flNextPrimaryAttack99999.0OFFSET_LINUX_WEAPONS)
                
set_pdata_float(player_ent[id], m_flNextSecondaryAttack99999.0OFFSET_LINUX_WEAPONS)
                break;
            }
        }
        
cs_set_user_money(id,cs_get_user_money(id) - cost,0);
        
    }
    return 
PLUGIN_HANDLED;
}

public 
ham_damagethisinflictorattackerFloat:damagedamagebits )
{
    if( !( 
damagebits DMG_FALL ) || !IsPlayer(this))
    return 
HAM_IGNORED;
    
    new 
bool:bCvar = !(!get_pcvar_num(pCvars[FallDamge]))
    
    if(!
bCvar || (bCvar && !pev_valid(player_ent[this]))){
        return 
HAM_IGNORED;
    }
    
    return 
HAM_SUPERCEDE;
}

public 
Koniec_Rundy()
{
    
remove_entity_name(szClassTelPom)
    
remove_entity_name(szClassTelNieb)
    for(new 
1;i<=MAX;i++){
        
iTel[i][0] = 0;
        
iTel[i][1] = 0;
    }
}

public 
touchTeleport(portal,id){
    if(
pev_valid(id)){
        if(
pev(id,pev_movetype) == MOVETYPE_FOLLOW){
            return 
PLUGIN_CONTINUE;
        }
        static 
szClassName[64];
        
pev(id,pev_classname,szClassName,charsmax(szClassName));
        if(
equal(szClassName,szClassTelPom) || equal(szClassName,szClassTelNieb) || equal(szClassName,szClassNameNieb) || equal(szClassName,szClassNamePom)){
            return 
PLUGIN_CONTINUE;
        }
        
moveTo(id,portal,pev(portal,pev_iuser1))
    }
    return 
PLUGIN_CONTINUE;
}


moveTo(idinout){
    if(
pev_valid(out)){
        
#if defined TRACE_HULL
        
new hull HULL_POINT;
        
        if(
is_user_alive(id)){
            
hull HULL_HUMAN;
        }
        
#endif
        
        
new Float:fDistance MIN_DISTANCE;
        while(
fDistance <= MAX_DISTANCE){
            new 
Float:fOrigin[3];
            
pev(outpev_originfOrigin);
            
            new 
Float:fAngles[3];
            
pev(outpev_vuser1fAngles);
            
            
xs_vec_mul_scalar(fAnglesfDistancefAngles);
            
xs_vec_add(fOriginfAnglesfOrigin);
            
            new 
Float:fMins[3],Float:fMaxs[3];
            
pev(id,pev_mins,fMins);
            
pev(id,pev_maxs,fMaxs);
            
            
            
            
#if defined TRACE_HULL
            
if(!trace_hull(fOriginhullid0)){
                
#else
                
if(checkPortalPlace(fOrigin,fMins,fMaxs)){
                    
#endif
                    
set_pev(idpev_originfOrigin);
                    
                    
#if defined SOUNDS
                    
engfunc(EngFunc_EmitAmbientSound0,fOriginsoundEnter[random(sizeof soundEnter)],VOL_NORMATTN_NORM0PITCH_NORM)
                    
#endif
                    
                    
parseAngle(idinout);
                    
                    break;
                }
                
fDistance += 10.0;
            }
        }
    }

    public 
fwd_CmdStart(iduc_handleseed) {
        if(!
is_user_alive(id) || player_ent[id] != get_pdata_cbase(id,OFFSET_ACTIVEITEM,OFFSET_LINUX_PLAYER)){
            return 
FMRES_IGNORED;
        }
        
        new 
buttons get_uc(uc_handle,UC_Buttons)
        new 
oldbuttons get_user_oldbutton(id);
        
        if(
buttons&IN_ATTACK && fNextAttack[id] < get_gametime()){
            
fNextAttack[id] = get_gametime() + 0.5;
            
create_shot_portal(id);
            
set_animation(id,random_num(1,2))
        }
        if(
buttons IN_ATTACK2 && !(oldbuttons IN_ATTACK2)){
            
bMode[id] = !bMode[id];
            
client_print(id,print_center,"Tryb %s",bMode[id] ? "Niebieski":"Pomaranczowy")
        }
        return 
FMRES_HANDLED
    
}

    public 
plugin_precache(){
        
        
cvar_register();
        
        
precache_model(v_model);
        
precache_model(portal);
        
precache_model(w_model);
        
#if defined SPRITES
        
sprite precache_model("sprites/white.spr");
        
g_trail precache_model("sprites/smoke.spr")
        
spriteInvalid[0] = precache_model("sprites/portal/pom.spr") ;
        
spriteInvalid[1] = precache_model("sprites/portal/nieb.spr") ;
        
#endif
        
        #if defined SOUNDS
        
precache_sound(portal_shot_blue)
        
precache_sound(portal_shot_red);
        for(new 
i<sizeof soundOpen;i++){
            
precache_sound(soundOpen[i])
        }
        for(new 
i<sizeof soundClose;i++){
            
precache_sound(soundClose[i])
        }
        for(new 
i<sizeof soundEnter;i++){
            
precache_sound(soundEnter[i])
        }
        
precache_sound(soundInvalid)
        
#endif
        
        
new szConfDir[64],szFullDir[128];
        
get_configsdir(szConfDir,charsmax(szConfDir));
        
formatex(szFullDir,charsmax(szFullDir),"%s/portal.cfg",szConfDir);
        if(!
file_exists(szFullDir)){
            
#if defined SPRITES
            
write_file(szFullDir,"// 1 or 2 difrent sprites 0 off this")
            
write_file(szFullDir,"portal_sprite 1");
            
#endif
            
            
write_file(szFullDir,"// 1 - no fall damage 0 - normal (no fall damage for person who have portal gun)")
            
write_file(szFullDir,"portal_fall_damage 1");
            
            
write_file(szFullDir,"// speed of portal bullet")
            
write_file(szFullDir,"portal_bullet_speed 1500");
            
            
write_file(szFullDir,"//how much money you must have to buy portal with /portal command in say number of negative side off this")
            
write_file(szFullDir,"portal_cost -1");
            
            
write_file(szFullDir,"//portal gun for free on spawn ?")
            
write_file(szFullDir,"portal_spawn 0")
        }
        
server_cmd("exec %s",szFullDir)
        
    }

    public 
client_connect(id){
        
player_ent[id] = 0;
        
iTel[id][0] = 0;
        
iTel[id][1] = 0;
    }

    public 
client_disconnect(id){
        
player_ent[id] = 0;
        
iTel[id][0] = 0;
        
iTel[id][1] = 0;
    }

    public 
touchNieb(touched,toucher){
        if(!
pev_valid(toucher)){
            
remove_entity(toucher)
            return 
PLUGIN_CONTINUE;
        }
        
        
missileTouche(toucher,0);
        
        return 
PLUGIN_CONTINUE;
    }

    public 
touchPom(touched,toucher){    
        if(!
pev_valid(toucher)){
            
remove_entity(toucher)
            return 
PLUGIN_CONTINUE;
        }
        
        
missileTouche(toucher,1);
        
        return 
PLUGIN_CONTINUE;
    }

    public 
missileTouche(iEntLocal,iPos){
        new 
Float:fOrigin[3],iOwner;
        
        
pev(iEntLocal,pev_origin,fOrigin);
        
        
iOwner pev(iEntLocal,pev_owner);
        
        new 
Float:fVelo[3],Float:fEndOrigin[3];
        
        
pev(iEntLocalpev_velocityfVelo)
        
        
xs_vec_normalize(fVelo,fVelo)
        
        
xs_vec_mul_scalar(fVelo,50.0,fVelo);
        
        
xs_vec_add(fOrigin,fVelo,fEndOrigin);
        
        new 
ptr create_tr2()
        
        new 
Float:vfNormal[3]
        
        
engfunc(EngFunc_TraceLinefOriginfEndOriginIGNORE_MISSILE IGNORE_MONSTERS IGNORE_GLASSiEntLocalptr)
        
        
get_tr2(ptrTR_vecPlaneNormalvfNormal);
        
        new 
Float:fOrigin3[3];
        
get_tr2(ptrTR_vecEndPosfOrigin3);
        
        
free_tr2(ptr)
        
        if(!
validWall(fOrigin3,vfNormal) || !checkPlace(fOrigin3,iPos,iOwner)){
            
#if defined SOUNDS
            
engfunc(EngFunc_EmitAmbientSound0,fOrigin3soundInvalid,VOL_NORMATTN_NORM0PITCH_NORM)
            
#endif
            
            
pev(iEntLocalpev_velocityfVelo)
            
            
xs_vec_normalize(fVelo,fVelo)
            
            
xs_vec_mul_scalar(fVelo,-4.0,fVelo);
            
xs_vec_add(fOrigin,fVelo,fOrigin3);
            
            
#if defined SPRITES
            
for(new 16i++) {
                
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin3,0)
                
write_byte(TE_SPRITETRAIL)
                
engfunc(EngFunc_WriteCoordfOrigin3[0])
                
engfunc(EngFunc_WriteCoordfOrigin3[1])
                
engfunc(EngFunc_WriteCoordfOrigin3[2])
                
engfunc(EngFunc_WriteCoordfOrigin3[0])
                
engfunc(EngFunc_WriteCoordfOrigin3[1])
                
engfunc(EngFunc_WriteCoordfOrigin3[2] + 10)
                
write_short(iPos == spriteInvalid[1] : spriteInvalid[0])
                
write_byte(2)
                
write_byte(1)
                
write_byte(1)
                
write_byte(random_num(5,10))
                
write_byte(5)
                
message_end()
            }
            
#endif
            
            
remove_entity(iEntLocal);
            return 
PLUGIN_CONTINUE;
        }
        
        new 
Float:fOldNormal[3];
        
xs_vec_copy(vfNormalfOldNormal);
        
        
vector_to_angle(vfNormalvfNormal);
        
        
//cosik
        
pev(iEntLocalpev_velocityfVelo)
        
        
xs_vec_normalize(fVelo,fVelo)
        
        
xs_vec_mul_scalar(fVelo,-4.0,fVelo);
        
xs_vec_add(fOrigin,fVelo,fOrigin);
        
//
        
        
remove_entity(iEntLocal);
        
        
iEnt[iOwner][iPos] = 0;
        
        if(
pev_valid(iTel[iOwner][iPos])){ 
            new 
Float:fOrigin2[3];
            
pev(iTel[iOwner][iPos],pev_origin,fOrigin2)
            
#if defined SOUNDS
            
engfunc(EngFunc_EmitAmbientSound0,fOrigin2soundClose[random(sizeof soundClose)],VOL_NORMATTN_NORM0PITCH_NORM)
            
#endif
            
remove_entity(iTel[iOwner][iPos]);
            
iTel[iOwner][iPos] = 0;
        }
        
        
iTel[iOwner][iPos] =  engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
        
        
set_pev(iTel[iOwner][iPos],pev_classname,iPos == szClassTelNieb szClassTelPom);
        
        
set_pev(iTel[iOwner][iPos],pev_origin,fOrigin);
        
        
set_pev(iTel[iOwner][iPos],pev_solid,SOLID_TRIGGER)
        
set_pev(iTel[iOwner][iPos],pev_movetype,MOVETYPE_FLY)
        
        
engfunc(EngFunc_SetModeliTel[iOwner][iPos], portal)
        
        
set_pev(iTel[iOwner][iPos],pev_skin,iPos == 1);
        
        
#if defined SOUNDS
        
engfunc(EngFunc_EmitAmbientSound0,fOriginsoundOpen[random(sizeof soundOpen)],VOL_NORMATTN_NORM0PITCH_NORM)
        
#endif
        
        
new Float:fMins[3],Float:fMax[3],Float:mul[3];
        
        
mul[0] = floatabs(floatabs(fOldNormal[0])-1.0)
        
mul[0] = mul[0] + 0.1 1.0 mul[0]:mul[0]+0.1
        
        mul
[1] = floatabs(floatabs(fOldNormal[1])-1.0)
        
mul[1] = mul[1] + 0.1 1.0 mul[1]:mul[1]+0.1
        
        mul
[2] = floatabs(floatabs(fOldNormal[2])-1.0)
        
mul[2] = mul[2] + 0.1 1.0 mul[2]:mul[2]+0.1
        
        fMins
[0] = floatmul(mul[0],-20.0)-2.0;
        
fMins[1] = floatmul(mul[1],-10.0)-2.0;
        
fMins[2] = floatmul(mul[2],-42.0)-2.0
        
        fMax
[0] = floatmul(mul[0],20.0)+2.0;
        
fMax[1] = floatmul(mul[1],10.0)+2.0;
        
fMax[2] = floatmul(mul[2],42.0)+2.0
        
        engfunc
(EngFunc_SetSizeiTel[iOwner][iPos],fMinsfMax)
        
        
set_pev(iTel[iOwner][iPos], pev_anglesvfNormal);
        
        
set_pev(iTel[iOwner][iPos],pev_iuser1,iTel[iOwner][iPos == 0]);
        
        if(
pev_valid(iTel[iOwner][iPos == 0]) && !pev_valid(pev(iTel[iOwner][iPos == 0],pev_iuser1))){
            
set_pev(iTel[iOwner][iPos == 0],pev_iuser1,iTel[iOwner][iPos])
        }
        
        
set_pev(iTel[iOwner][iPos], pev_vuser1fOldNormal);
        
        
set_pev(iTel[iOwner][iPos],pev_owner,iOwner);
        
        return 
PLUGIN_CONTINUE;
    }

    public 
give_weapon(id,level,cid){
        if(!
cmd_access(id,level,cid,2)){
            return 
PLUGIN_HANDLED;
        }
        new 
szString[64];
        
read_argv(1,szString,charsmax(szString));
        new 
find find_player("bl",szString);
        if(!
find){
            
client_print(id,print_console,"[Portal Gun] Nie moge znalezc takiego gracza");
            return 
PLUGIN_HANDLED;
        }
        else
        {
            if(!
is_user_alive(find)){
                
client_print(id,print_console,"[Portal Gun] Gracz musi byc zywy");
                return 
PLUGIN_HANDLED
            
}
            new 
szName[64];
            
get_user_name(find,szName,charsmax(szName));
            if(
pev_valid(player_ent[find])){
                
client_print(id,print_console,"[Portal Gun] %s ma juz Portal Guna",szName);
                return 
PLUGIN_HANDLED
            
}
            else
            {
                
client_print(id,print_console,"[Portal Gun] Dales portal %s",szName);
            }
        }
        new 
szWeaponName[64],bool:bContinue false;
        new 
numiWeapons[32
        
        
get_user_weapons(idiWeaponsnum
        for(new 
1;i<=30;i++){
            if(
== || == || == || == || == 25 || == 29){
                continue;
            }
            
bContinue false;
            for (new 
j=0j<numj++) 
            {
                if(
iWeapons[j] == i){
                    
bContinue true;
                    break;
                }
            } 
            if(!
bContinue){
                
get_weaponname(i,szWeaponName,charsmax(szWeaponName));
                
player_ent[id] = give_item(id,szWeaponName)
                
RegisterHamFromEntity(Ham_Item_Deploy,player_ent[id],"ham_ItemDeploy_Post",1)
                
set_pdata_float(player_ent[id], m_flNextPrimaryAttack99999.0OFFSET_LINUX_WEAPONS)
                
set_pdata_float(player_ent[id], m_flNextSecondaryAttack99999.0OFFSET_LINUX_WEAPONS)
                break;
            }
        }
        return 
PLUGIN_HANDLED;
    }

    public 
ham_ItemDeploy_Post(weapon_ent)
    {
        static 
owner
        owner 
get_pdata_cbase(weapon_entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS);
        
        if(!
is_user_alive(owner)){
            return 
HAM_IGNORED;
        }
        
set_pev(owner,pev_viewmodel2,v_model);
        
        
set_animation(owner,6)
        return 
HAM_IGNORED;
    }

    public 
ham_KilledPost(id){
        if(
is_user_connected(id)){
            
player_ent[id] = 0;
        }
    }


    public 
cmdDrop(id){
        if(
player_ent[id] == get_pdata_cbase(id,OFFSET_ACTIVEITEM,OFFSET_LINUX_PLAYER)){
            return 
PLUGIN_HANDLED;
        }
        return 
PLUGIN_CONTINUE;
    }

    public 
create_shot_portal(id){
        new 
iPos bMode[id] ? 1;
        if(
pev_valid(iEnt[id][iPos]) && pev(iEnt[id][iPos],pev_owner) == id){
            
engfunc(EngFunc_RemoveEntity,iEnt[id][iPos])
            
iEnt[id][iPos] = 0;
        }
        
iEnt[id][iPos] =  engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
        
        if(!
pev_valid(iEnt[id][iPos])){
            return 
PLUGIN_CONTINUE;
        }
        
        
set_pev(iEnt[id][iPos],pev_classname,bMode[id] ? szClassNameNieb szClassNamePom);
        
        new 
Float:Origin[3], FloatvAngle[3], FloatVelocity[3];
        
        
pev(id,pev_v_angle,vAngle)
        
        new 
iOrigin[3];
        
get_user_origin(id,iOrigin,1)
        
IVecFVec(iOrigin,Origin)
        
        
#if defined SOUNDS
        
engfunc(EngFunc_EmitAmbientSound0,OriginbMode[id] ? portal_shot_blue portal_shot_red,VOL_NORMATTN_NORM0PITCH_NORM)
        
#endif
        
        
set_pev(iEnt[id][iPos],pev_origin,Origin);
        
        
vAngle[0] *= -1.0;
        
        
set_pev(iEnt[id][iPos],pev_angles,vAngle)
        
        
set_pev(iEnt[id][iPos],pev_solid,SOLID_TRIGGER)
        
set_pev(iEnt[id][iPos],pev_movetype,MOVETYPE_FLY)
        
        
VelocityByAim(idget_pcvar_num(pCvars[SpeedBullet]) , Velocity);
        
        
set_pev(iEnt[id][iPos],pev_owner,id)
        
        
set_pev(iEnt[id][iPos],pev_velocity,Velocity)
        
        
engfunc(EngFunc_SetModeliEnt[id][iPos], w_model)
        
        
engfunc(EngFunc_SetSizeiEnt[id][iPos], {-1.0, -1.0, -1.0}, {1.01.01.0})
        
        
set_rendering(iEnt[id][iPos], kRenderFxGlowShellbMode[id] ? 0:255,bMode[id] ? 0:165,bMode[id] ? 255:0kRenderTransColor1
        
        
#if defined SPRITES
        
new iMode get_pcvar_num(pCvars[SpriteType]);
        if(
iMode){
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW)
            
write_short(iEnt[id][iPos])
            
write_short(iMode == sprite:g_trail);
            
write_byte(10)
            
write_byte(5)
            if(
bMode[id]){
                
write_byte(0)
                
write_byte(0)
                
write_byte(255)
            }
            else{
                
write_byte(255)
                
write_byte(165)
                
write_byte(0)
            }
            
write_byte(192)
            
message_end()
        }
        
#endif
        
        
return PLUGIN_CONTINUE;
    }


    
stock bool:validWall(const Float:fOrigin[3], Float:fNormal[3], Float:width=40.0Float:height 65.0){
        new 
Float:fInvNormal[3];
        
xs_vec_neg(fNormalfInvNormal);
        
        new 
Float:fPoint[3];
        
xs_vec_add(fOriginfNormalfPoint);
        
        new 
Float:fNormalUp[3];
        new 
Float:fNormalRight[3];
        
vector_to_angle(fNormalfNormalUp);
        
        
fNormalUp[0] = -fNormalUp[0];
        
        
angle_vector(fNormalUpANGLEVECTOR_RIGHTfNormalRight);
        
angle_vector(fNormalUpANGLEVECTOR_UPfNormalUp);
        
        
xs_vec_mul_scalar(fNormalUpheight/2fNormalUp);
        
xs_vec_mul_scalar(fNormalRightwidth/2fNormalRight);
        
        new 
Float:fPoint2[3];
        
xs_vec_add(fPointfNormalUpfPoint2);
        
xs_vec_add(fPoint2fNormalRightfPoint2);
        if(!
traceToWall(fPoint2fInvNormal))
        return 
false;
        
        
xs_vec_add(fPointfNormalUpfPoint2);
        
xs_vec_sub(fPoint2fNormalRightfPoint2);
        if(!
traceToWall(fPoint2fInvNormal))
        return 
false;
        
        
xs_vec_sub(fPointfNormalUpfPoint2);
        
xs_vec_sub(fPoint2fNormalRightfPoint2);
        if(!
traceToWall(fPoint2fInvNormal))
        return 
false;
        
        
xs_vec_sub(fPointfNormalUpfPoint2);
        
xs_vec_add(fPoint2fNormalRightfPoint2);
        if(!
traceToWall(fPoint2fInvNormal))
        return 
false;
        
        return 
true;
    }

bool:traceToWall(const Float:fOrigin[3], const Float:fVec[3]){
        new 
Float:fOrigin2[3];
        
xs_vec_add(fOriginfVecfOrigin2);
        
xs_vec_add(fOrigin2fVecfOrigin2);
        
        new 
tr create_tr2();
        
engfunc(EngFunc_TraceLinefOriginfOrigin2IGNORE_MISSILE IGNORE_MONSTERS IGNORE_GLASS0tr);
        new 
Float:fFrac;
        
get_tr2(trTR_flFractionfFrac);
        
free_tr2(tr);
        
        if( 
floatabs(fFrac 0.5) <= 0.02 ){
            return 
true;
        }
        
        return 
false;
    }

    
set_animation(idanim) {
        
set_pev(idpev_weaponanimanim)
        
        
message_begin(MSG_ONESVC_WEAPONANIM, {000}, id)
        
write_byte(anim)
        
write_byte(pev(idpev_body))
        
message_end()
    } 

    
parseAngle(idinout){
        new 
Float:fAngles[3];
        
pev(idpev_v_anglefAngles);
        
angle_vector(fAnglesANGLEVECTOR_FORWARDfAngles);
        
        new 
Float:fNormalIn[3];
        
pev(inpev_vuser1fNormalIn);
        
xs_vec_neg(fNormalInfNormalIn);
        
        new 
Float:fNormalOut[3];
        
pev(outpev_vuser1fNormalOut);
        
        
xs_vec_sub(fAnglesfNormalInfAngles);
        
xs_vec_add(fAnglesfNormalOutfAngles);
        
        
//fAngles[2] = -fAngles[2];
        
        
vector_to_angle(fAnglesfAngles);
        
        
set_pev(idpev_anglesfAngles);
        
set_pev(idpev_fixangle1);
        
        
        
pev(idpev_velocityfAngles);
        new 
Float:fSpeed vector_length(fAngles);
        
xs_vec_normalize(fAngles,  fAngles);
        
        
xs_vec_sub(fAnglesfNormalInfAngles);
        
xs_vec_add(fAnglesfNormalOutfAngles);
        
        
xs_vec_normalize(fAnglesfAngles);
        
xs_vec_mul_scalar(fAnglesfSpeedfAngles);
        
set_pev(idpev_velocityfAngles);
    }

bool:checkPlace(Float:fOrigin[3],iMode,id){
        new 
ent = -1;
        new 
szClass[64]
        while((
ent find_ent_in_sphere(ent,fOrigin,45.0))){
            
pev(ent,pev_classname,szClass,charsmax(szClass));
            if(
equal(szClass,szClassTelNieb) || equal(szClass,szClassTelPom)){
                if(
iMode == && equal(szClass,szClassTelNieb) && pev(ent,pev_owner) == id){
                    continue;
                }
                else if(
iMode == && equal(szClass,szClassTelPom) && pev(ent,pev_owner) == id){
                    continue;
                }
                else{
                    return 
false;
                }
            }
        }
        return 
true;
    }

    public 
cvar_register(){
        
#if defined SPRITES
        
pCvars[SpriteType] = register_cvar("portal_sprite","1")
        
#endif
        
pCvars[FallDamge] = register_cvar("portal_fall_damage","1")
        
pCvars[SpeedBullet] = register_cvar("portal_bullet_speed","1500")
        
pCvars[PortalCost] = register_cvar("portal_cost","-1")
        
pCvars[SpawnPortal] = register_cvar("portal_spawn","0")
    }

bool:checkPortalPlace(FloatfOrigin[3],FloatfMins[3],FloatfMaxs[3]){
        new 
Float:fOriginTmp[3]
        
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
        
fOriginTmp[0] += fMins[0];
        
fOriginTmp[1] += fMaxs[1];
        
fOriginTmp[2] += fMaxs[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
        
fOriginTmp[0] += fMaxs[0];
        
fOriginTmp[1] += fMaxs[1];
        
fOriginTmp[2] += fMaxs[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
        
fOriginTmp[0] += fMins[0];
        
fOriginTmp[1] += fMins[1];
        
fOriginTmp[2] += fMaxs[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
fOriginTmp[0] += fMaxs[0];
        
fOriginTmp[1] += fMins[1];
        
fOriginTmp[2] += fMaxs[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
fOriginTmp[0] += fMins[0];
        
fOriginTmp[1] += fMaxs[1];
        
fOriginTmp[2] += fMins[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
fOriginTmp[0] += fMaxs[0];
        
fOriginTmp[1] += fMaxs[1];
        
fOriginTmp[2] += fMins[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
fOriginTmp[0] += fMins[0];
        
fOriginTmp[1] += fMins[1];
        
fOriginTmp[2] += fMins[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        
fOriginTmp[0] += fMaxs[0];
        
fOriginTmp[1] += fMins[1];
        
fOriginTmp[2] += fMins[2];
        if(!
traceTo(fOrigin,fOriginTmp)){
            return 
false;
        }
        
xs_vec_copy(fOrigin,fOriginTmp)
        
        return 
true;
    }

bool:traceTo(const Float:fFrom[3],const Float:fTo[3]){
        new 
tr create_tr2();
        
        
engfunc(EngFunc_TraceLinefFromfTo,00tr);
        
        new 
Float:fFrac;
        
get_tr2(trTR_flFractionfFrac);
        
free_tr2(tr);
        
        return (
fFrac == 1.0
        
    }

#if defined TEST
    
Create_Line(const Float:start[3], const Float:stop[3], Float:go=10.0r=0,g=0,b=255)
    {
        new 
Float:fStart[3], Float:fStop[3];
        new 
Float:fVec[3];
        
xs_vec_sub(startstopfVec);
        
xs_vec_normalize(fVecfVec);

        
xs_vec_mul_scalar(fVecgofVec);

        
xs_vec_add(stopfVecfStop);
        
xs_vec_sub(startfVecfStart);


        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(0)
        
engfunc(EngFunc_WriteCoordfStart[0])
        
engfunc(EngFunc_WriteCoord,fStart[1])
        
engfunc(EngFunc_WriteCoord,fStart[2])

        
engfunc(EngFunc_WriteCoord,fStop[0])
        
engfunc(EngFunc_WriteCoord,fStop[1])
        
engfunc(EngFunc_WriteCoord,fStop[2])
        
write_short(sprite)
        
write_byte(1)
        
write_byte(5)
        
write_byte(1)//life
        
write_byte(10)
        
write_byte(0)
        
write_byte(r)    // RED
        
write_byte(g)    // GREEN
        
write_byte(b)    // BLUE                    
        
write_byte(250)    // brightness
        
write_byte(5)
        
message_end()
    }
#endif
*/ 
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.
S34Qu4K3 is offline
aaarnas
Veteran Member
Join Date: Jun 2008
Location: Lithuania
Old 06-03-2011 , 16:50   Re: Portal Mod Alpha
Reply With Quote #17

Quote:
Originally Posted by georgik57 View Post
I'm astonished about this plugin. Respect for author.

This is a little better: http://www.youtube.com/watch?v=1rXkDpvuHoY
__________________
My plugins:
[ZP] ZM_VIP (v2.0.0 is comming. v1.9.1 BETA is out!)


Last edited by aaarnas; 06-03-2011 at 16:59.
aaarnas is offline
.Dare Devil.
Veteran Member
Join Date: Sep 2010
Old 06-03-2011 , 17:17   Re: Portal Mod Alpha
Reply With Quote #18

Quote:
Originally Posted by aaarnas View Post
I'm astonished about this plugin. Respect for author.

This is a little better: http://www.youtube.com/watch?v=1rXkDpvuHoY
Where i can download this ?
( i am big portal fan )
.Dare Devil. is offline
DarkGL
Senior Member
Join Date: Aug 2010
Location: Warsaw, Poland
Old 06-03-2011 , 18:25   Re: Portal Mod Alpha
Reply With Quote #19

hi it's my plugin you can download it on
http://amxx.pl/topic/51842-portal-gun/
sorry it is in Polish . I just developed this for new ideas when I done final version
I will publish it on allied
DarkGL is offline
DarkGL
Senior Member
Join Date: Aug 2010
Location: Warsaw, Poland
Old 06-03-2011 , 18:28   Re: Portal Mod Alpha
Reply With Quote #20

screens
http://steamcommunity.com/profiles/7...959?tab=public
DarkGL is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:42.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode