AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Unapproved/Old Plugins (https://forums.alliedmods.net/forumdisplay.php?f=27)
-   -   ZP VIP System (https://forums.alliedmods.net/showthread.php?t=319538)

riste.kgb 11-06-2019 14:25

ZP VIP System
 
1 Attachment(s)
Note: This plugin requires that you have enabled this plugin https://forums.alliedmods.net/showthread.php?t=161255 in order to work

Plugin version: 2.3 [ New version released.Scroll down to see new feature
Plugin Author: Riste.kgb
Category: Zombie Plague / Zombie Escape modes

Credits to: Edon1337 (For file reading/writting)

Cvars:
Code:

zv_vip_damage (default 3.0)
zv_vip_nofall ( default 1) // 1 = ON | 0 = OFF)
zv_freevip_enabled (default 1) // 1 = ON | 0 = OFF)
zv_freevip_start (default 20) // hour is always in 24hr format. When will be freevip started
zv_freevip_end (default 22) // hour when the freevip ends
zv_freevip_flags (default "abd") // flags that freevips will have
// New cvars as from version 2.2
zv_vip_bonushp (default 2000)
zv_vip_infect_bonus (default is 5)
zv_vip_human_bonusap ( default is 5) // when vip player human inflicts damage more than 300 to the victim (zombie) it will get additional 5 ammo packs

Player commands:
Code:

say /status = it will print the message when their vip status automatically ends and his flags
say /vips = it will print the currently online vips on the server

Advantages that this system offers:

- When the freevip hour started no need to wait for next map to have freevip privileges.
- When the vip player expire date reached, it is automatically removed
- VIP players can have custom models for each vip
- VIP players can do more damage (depending of the flag)
- VIP Players if fall they will not get any damage (depending of the cvar)
- VIP Players have multi jump



Saving vips in config/vips.ini:
Code:

Flags
A = Multi jump
B = Custom Model
C = Damage
D = Custom flag

< name or authid > < password > < flags > <expire date (%d.%M.%y %H:%m> <Custom_Model_Human> <custom_model_zombie>
Example for setting vip by name:
"Name" "password" "abcd" "07.12.2019 12:10" "custom_model_human" "custom_model_zombie"

Authorization:
Code:

The vip player should use  setinfo _pass "password" to authorize as a vip.
Plugin API:
Code:

native zv_get_vip_flag(index, const flag[]) // returns boolean true if the vip player has that flag or false if not.
native zv_is_vip_expired(index)
native zv_is_vip_authorized(index) // returns true if the vip is not expired and if it is authorized  no need to use zv_is_vip_expired if it is using this api
native zv_get_freevip_flag(const flag[]) // returns boolean true if the freevip is enabled & if that flag exists or false if not

Suggestions are welcomed. Any questions if you have feel free to ask.
Ill post in next post how to register a extra item / zombie class available to vips only.

Update Changelog:

Code:

- Fixed bugs  in ZP mode ( that i wasn't tested it, now it everything works fine)
-say /vips  - will print now and free vips on freehour
-The vip model now will work fine for zm / human

API update changelog:

Code:

- Added new native zv_register_extra_item(const name[], const desc[], cost,teams,const flag[])
for now is useless because it is still working on it to have this system own vip menu that will be there registered vip extra items.

Code:

Changelog v2.2:

- fixed errors in zp_user_infected_post
- added cvar zv_vip_bonushp that will have vip zombies
- added cvar zv_vip_bonusarmor that will have vip humans each round
- added bonus ammo packs for infecting player.
- added bonus ammo packs for inflicting zombie

Code:

Update v2.3
 - Added vip extra items menu, say /vm to open vip menu.
 - fixed several bugs with natives

API implementation
Code:

native zv_register_extra_item( const name[], const desc[], cost, teams, const flags[]) // teams = ZP_TEAM_HUMAN or ZP_TEAM_ZOMBIE |  vip flags
forward zv_extra_item_selected(id,itemid)

Code:

Update v2.4

- Fixed bug with flags for registering extra items. Now if vip doesn't have that flag for item, he can not buy it.
- Fixed bug that can dead player open vip extra items.
- Added bonus armor each round for humans.

Preview: https://prnt.sc/pxe8nq

OciXCrom 11-06-2019 16:05

Re: ZP VIP System
 
MK: fun, cellaray и fakemeta се непотребни. Обиди се да го индентираш/подредиш кодот подобро за да биде полесно читлив за луѓего, вклучително и за самиот тебе.

EN: fun, cellarray and fakemeta are not needed. You should indent your code better to make it easier for people (including yourself) to read it.

riste.kgb 11-08-2019 14:43

Re: ZP VIP System
 
Plugin is updated.

Read the first post about the change and new features that will be live soon.

It's recommended to update the plugin, so the new version comes without bugs.

edon1337 11-09-2019 05:42

Re: ZP VIP System
 
This code seems like a bunch of copy-pasting, especially Elite Admin System.

Suggestions:
1. You're only pre-caching 1 model from the array, then breaking the loop, resulting into server crash because of un-precached models.
PHP Code:

public plugin_precache(){
    
g_playerData ArrayCreate(PlayerData);
    
    
ReloadFile();
    
    new 
iPlayer[PlayerData];
    
    for(new 
iArraySize(g_playerData); i++)
    {
        
ArrayGetArray(g_playerData,i,iPlayer)
        new 
szModel[64]
        if(
iPlayer[Player_ModelCT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelCT],iPlayer[Player_ModelCT])
            
precache_model(szModel)
        }
        
        if(
iPlayer[Player_ModelT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelT],iPlayer[Player_ModelT])
            
precache_model(szModel)
        }
        break;
    }


2. Don't use ResetHUD to set models, it's not the appropriate event.

3. Implement ML

riste.kgb 11-09-2019 05:55

Re: ZP VIP System
 
Quote:

Originally Posted by edon1337 (Post 2672430)
This code seems like a bunch of copy-pasting, especially Elite Admin System.

Suggestions:
1. You're only pre-caching 1 model from the array, then breaking the loop, resulting into server crash because of un-precached models.
PHP Code:

public plugin_precache(){
    
g_playerData ArrayCreate(PlayerData);
    
    
ReloadFile();
    
    new 
iPlayer[PlayerData];
    
    for(new 
iArraySize(g_playerData); i++)
    {
        
ArrayGetArray(g_playerData,i,iPlayer)
        new 
szModel[64]
        if(
iPlayer[Player_ModelCT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelCT],iPlayer[Player_ModelCT])
            
precache_model(szModel)
        }
        
        if(
iPlayer[Player_ModelT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelT],iPlayer[Player_ModelT])
            
precache_model(szModel)
        }
        break;
    }


2. Don't use ResetHUD to set models, it's not the appropriate event.

3. Implement ML

for the suggestion #2: - For now it will be like this, it's working very well every round the player model is reseting as it means to be.
ML - will be added later when i finish with /vm menu.

EDIT: The bug with precaching models should be fixed now. Updated the first post with a new update.

edon1337 11-09-2019 06:26

Re: ZP VIP System
 
Quote:

Originally Posted by riste.kgb (Post 2672433)
I'm not copy/pasting the codes. I'll look at this problem with precaching.

Yes, I'm blind, you're right.

Ur plugin:
PHP Code:

enum _:PlayerData
{
    
Player_IDMAX_NAME_LENGTH ],
    
Player_PasswordMAX_PASSWORD_LENGTH ],
    
Player_AccessFlagsMAX_FLAGS_LENGTH ],
    
Player_ExpireDateMAX_DATE_LENGTH ],
    
Player_ModelCTMAX_NAME_LENGTH ],
    
Player_ModelTMAX_NAME_LENGTH ],
    
bool:Player_Expired,
    
bool:Player_Suspended


EAS:
PHP Code:

enum _:PlayerData
{
    
Player_IDMAX_NAME_LENGTH ],
    
Player_PasswordMAX_PASSWORD_LENGTH ],
    
Player_AccessFlagsMAX_FLAGS_LENGTH ],
    
Player_Prefix32 ],
    
Player_Model_T64 ],
    
Player_Model_CT64 ],
    
Player_Expire_DateMAX_DATE_LENGTH ],
    
Player_FlagsExpireMAX_FLAGS_LENGTH ],
    
Player_Immunity,
    
bool:Player_Suspended,
    
bool:Player_Expired,
    
bool:Player_KeepPrivileges


ur plugin:
PHP Code:

public plugin_precache(){

    
g_playerData ArrayCreate(PlayerData);
    
    
ReloadFile();
    
    new 
iPlayer[PlayerData];
    for(new 
iArraySize(g_playerData); i++
    {
        
ArrayGetArray(g_playerData,i,iPlayer)
        new 
szModel[64]
        if(
iPlayer[Player_ModelCT][0]
                {
                    
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelCT],iPlayer[Player_ModelCT])
                    
precache_model(szModel)
                }
                if(
iPlayer[Player_ModelT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelT],iPlayer[Player_ModelT])
            
precache_model(szModel)
        }
        break;
    }


EAS (older version):
PHP Code:

public plugin_precache( )
{    
    
g_aDatabase ArrayCreatePlayerData );
    
g_aCommands ArrayCreateCommands );

    
ReloadFile( );

    new 
eDataPlayerData ], szModel64 ];
    for( new 
iArraySizeg_aDatabase ); i++ )
    {
        
ArrayGetArrayg_aDatabaseieData );
        
        if( 
eDataPlayer_Model_T ][ ] )
        {
            
formatexszModelcharsmaxszModel ), "models/player/%s/%s.mdl"eDataPlayer_Model_T ], eDataPlayer_Model_T ] );
            
precache_modelszModel );
        }
        
        if( 
eDataPlayer_Model_CT ][ ] )
        {
            
formatexszModelcharsmaxszModel ), "models/player/%s/%s.mdl"eDataPlayer_Model_CT ], eDataPlayer_Model_CT ] );
            
precache_modelszModel );
        }
    }


ur plugin:
PHP Code:

ReloadFile()
{
    
ArrayClear(g_playerData)
    new 
szFile[64],szPlayersData[512],eData[PlayerData];
    
formatex(szFile,charsmax(szFile),"%s/vips.ini",g_szConfig)
    new 
iFile fopen(szFile,"rt")
    
    if(!
iFile)
    {
        
log_amx("File not found: %s"szFile);
    }
    
    if(
iFile)
    {
        while(
fgets(iFile,szPlayersData,charsmax(szPlayersData)))
        {
            
trim(szPlayersData)
            switch(
szPlayersData[0])
            {
            case 
EOS,'#','/','\':
                {
                    continue;
                }

                default:
                {
                    parse(szPlayersData,eData[Player_ID],charsmax(eData[Player_ID]),eData[Player_Password],charsmax(eData[Player_Password]),eData[Player_AccessFlags],charsmax(eData[Player_AccessFlags]),eData[Player_ExpireDate],charsmax(eData[Player_ExpireDate]),eData[Player_ModelCT],charsmax(eData[Player_ModelCT]),eData[Player_ModelT],charsmax(eData[Player_ModelT]))
            
                    if(szPlayersData[0] == '
;')
                    {
                        eData[Player_Suspended] = true;
                        replace(eData[Player_ID],charsmax(eData[Player_ID]),";","");
                    }
            
                    if(eData[Player_ExpireDate][0])
                    {
                        if(HasVipExpired(eData[Player_ExpireDate]))
                        {
                            eData[Player_Expired] = true;
                        }
                    }
                    ArrayPushArray(g_playerData,eData)
                    arrayset(eData,0,sizeof(eData))
                }
            }
        }
        fclose(iFile);
    }


EAS:
PHP Code:

ReloadFile( )
{
    
ArrayClearg_aDatabase );

    new 
szFormat64 ], szPlayerData512 ], eDataPlayerData ];
    
formatexszFormatcharsmaxszFormat ), "%s/%s"g_szConfigsDirg_iConfigUSERS_FILE ] );
    
    new 
iFile fopenszFormat"rt" );
    
    if( 
iFile )
    {
        while( 
fgetsiFileszPlayerDatacharsmaxszPlayerData ) ) )
        {
            
trimszPlayerData );
            
            switch( 
szPlayerData] )
            {
            case 
EOS'#''/''\':
                {
                    continue;
                }
                
            default:
                {
                    new szImmunity[ 8 ], szKeepPrivileges[ 3 ];
                    if( parse( szPlayerData, eData[ Player_ID ], charsmax( eData[ Player_ID ] ), eData[ Player_Password ], charsmax( eData[ Player_Password ] ), eData[ Player_AccessFlags ], charsmax( eData[ Player_AccessFlags ] ),
                                eData[ Player_Prefix ], charsmax( eData[ Player_Prefix ] ), eData[ Player_Model_T ], charsmax( eData[ Player_Model_T ] ), eData[ Player_Model_CT ], charsmax( eData[ Player_Model_CT ] ), szImmunity, charsmax( szImmunity ),
                                eData[ Player_Expire_Date ], charsmax( eData[ Player_Expire_Date ] ), eData[ Player_FlagsExpire ], charsmax( eData[ Player_FlagsExpire ] ), szKeepPrivileges, charsmax( szKeepPrivileges ) ) < 10 )
                    {
                        continue;
                    }
                    
                    if( szPlayerData[ 0 ] == '
;' )
                    {
                        eData[ Player_Suspended ] = true;
                        replace( eData[ Player_ID ], charsmax( eData[ Player_ID ] ), ";", "" );
                    }
                    
                    if( eData[ Player_Expire_Date ][ 0 ] )
                    {
                        if( HasAdminExpired( eData[ Player_Expire_Date ] ) )
                        {
                            eData[ Player_Expired ] = true;
                        }
                    }
                    
                    // we don'
t want to use models that don't exist
                    if( eData[ Player_Model_T ][ 0 ] )
                    {
                        if( ! ModelExists( eData[ Player_Model_T ] ) )
                        {
                            eData[ Player_Model_T ][ 0 ] = EOS;
                        }
                    }
                    
                    if( eData[ Player_Model_CT ][ 0 ] )
                    {
                        if( ! ModelExists( eData[ Player_Model_CT ] ) )
                        {
                            eData[ Player_Model_CT ][ 0 ] = EOS;
                        }
                    }
                    
                    new iImmunity = str_to_num( szImmunity );
                    eData[ Player_Immunity ] = ( ! is_str_num( szImmunity ) || iImmunity < 0 ) ? 0 : iImmunity;
                    
                    new iKeepPrivileges = str_to_num( szKeepPrivileges );
                    eData[ Player_KeepPrivileges ] = bool:( ( ! is_str_num( szKeepPrivileges ) || !( 0 <= iKeepPrivileges <= 1 ) ) ? 0 : iKeepPrivileges );
                    
                    ArrayPushArray( g_aDatabase, eData );
                    arrayset( eData, 0, sizeof( eData ) );
                }
            }
        }
        fclose( iFile );
    }


You didn't even re-name the variables..

riste.kgb 11-09-2019 06:33

Re: ZP VIP System
 
Quote:

Originally Posted by edon1337 (Post 2672435)
Yes, I'm blind, you're right.

Ur plugin:
PHP Code:

enum _:PlayerData
{
    
Player_IDMAX_NAME_LENGTH ],
    
Player_PasswordMAX_PASSWORD_LENGTH ],
    
Player_AccessFlagsMAX_FLAGS_LENGTH ],
    
Player_ExpireDateMAX_DATE_LENGTH ],
    
Player_ModelCTMAX_NAME_LENGTH ],
    
Player_ModelTMAX_NAME_LENGTH ],
    
bool:Player_Expired,
    
bool:Player_Suspended


EAS:
PHP Code:

enum _:PlayerData
{
    
Player_IDMAX_NAME_LENGTH ],
    
Player_PasswordMAX_PASSWORD_LENGTH ],
    
Player_AccessFlagsMAX_FLAGS_LENGTH ],
    
Player_Prefix32 ],
    
Player_Model_T64 ],
    
Player_Model_CT64 ],
    
Player_Expire_DateMAX_DATE_LENGTH ],
    
Player_FlagsExpireMAX_FLAGS_LENGTH ],
    
Player_Immunity,
    
bool:Player_Suspended,
    
bool:Player_Expired,
    
bool:Player_KeepPrivileges


ur plugin:
PHP Code:

public plugin_precache(){

    
g_playerData ArrayCreate(PlayerData);
    
    
ReloadFile();
    
    new 
iPlayer[PlayerData];
    for(new 
iArraySize(g_playerData); i++
    {
        
ArrayGetArray(g_playerData,i,iPlayer)
        new 
szModel[64]
        if(
iPlayer[Player_ModelCT][0]
                {
                    
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelCT],iPlayer[Player_ModelCT])
                    
precache_model(szModel)
                }
                if(
iPlayer[Player_ModelT][0])
        {
            
formatex(szModel,charsmax(szModel),"models/player/%s/%s.mdl",iPlayer[Player_ModelT],iPlayer[Player_ModelT])
            
precache_model(szModel)
        }
        break;
    }


EAS (older version):
PHP Code:

public plugin_precache( )
{    
    
g_aDatabase ArrayCreatePlayerData );
    
g_aCommands ArrayCreateCommands );

    
ReloadFile( );

    new 
eDataPlayerData ], szModel64 ];
    for( new 
iArraySizeg_aDatabase ); i++ )
    {
        
ArrayGetArrayg_aDatabaseieData );
        
        if( 
eDataPlayer_Model_T ][ ] )
        {
            
formatexszModelcharsmaxszModel ), "models/player/%s/%s.mdl"eDataPlayer_Model_T ], eDataPlayer_Model_T ] );
            
precache_modelszModel );
        }
        
        if( 
eDataPlayer_Model_CT ][ ] )
        {
            
formatexszModelcharsmaxszModel ), "models/player/%s/%s.mdl"eDataPlayer_Model_CT ], eDataPlayer_Model_CT ] );
            
precache_modelszModel );
        }
    }


ur plugin:
PHP Code:

ReloadFile()
{
    
ArrayClear(g_playerData)
    new 
szFile[64],szPlayersData[512],eData[PlayerData];
    
formatex(szFile,charsmax(szFile),"%s/vips.ini",g_szConfig)
    new 
iFile fopen(szFile,"rt")
    
    if(!
iFile)
    {
        
log_amx("File not found: %s"szFile);
    }
    
    if(
iFile)
    {
        while(
fgets(iFile,szPlayersData,charsmax(szPlayersData)))
        {
            
trim(szPlayersData)
            switch(
szPlayersData[0])
            {
            case 
EOS,'#','/','\':
                {
                    continue;
                }

                default:
                {
                    parse(szPlayersData,eData[Player_ID],charsmax(eData[Player_ID]),eData[Player_Password],charsmax(eData[Player_Password]),eData[Player_AccessFlags],charsmax(eData[Player_AccessFlags]),eData[Player_ExpireDate],charsmax(eData[Player_ExpireDate]),eData[Player_ModelCT],charsmax(eData[Player_ModelCT]),eData[Player_ModelT],charsmax(eData[Player_ModelT]))
            
                    if(szPlayersData[0] == '
;')
                    {
                        eData[Player_Suspended] = true;
                        replace(eData[Player_ID],charsmax(eData[Player_ID]),";","");
                    }
            
                    if(eData[Player_ExpireDate][0])
                    {
                        if(HasVipExpired(eData[Player_ExpireDate]))
                        {
                            eData[Player_Expired] = true;
                        }
                    }
                    ArrayPushArray(g_playerData,eData)
                    arrayset(eData,0,sizeof(eData))
                }
            }
        }
        fclose(iFile);
    }


EAS:
PHP Code:

ReloadFile( )
{
    
ArrayClearg_aDatabase );

    new 
szFormat64 ], szPlayerData512 ], eDataPlayerData ];
    
formatexszFormatcharsmaxszFormat ), "%s/%s"g_szConfigsDirg_iConfigUSERS_FILE ] );
    
    new 
iFile fopenszFormat"rt" );
    
    if( 
iFile )
    {
        while( 
fgetsiFileszPlayerDatacharsmaxszPlayerData ) ) )
        {
            
trimszPlayerData );
            
            switch( 
szPlayerData] )
            {
            case 
EOS'#''/''\':
                {
                    continue;
                }
                
            default:
                {
                    new szImmunity[ 8 ], szKeepPrivileges[ 3 ];
                    if( parse( szPlayerData, eData[ Player_ID ], charsmax( eData[ Player_ID ] ), eData[ Player_Password ], charsmax( eData[ Player_Password ] ), eData[ Player_AccessFlags ], charsmax( eData[ Player_AccessFlags ] ),
                                eData[ Player_Prefix ], charsmax( eData[ Player_Prefix ] ), eData[ Player_Model_T ], charsmax( eData[ Player_Model_T ] ), eData[ Player_Model_CT ], charsmax( eData[ Player_Model_CT ] ), szImmunity, charsmax( szImmunity ),
                                eData[ Player_Expire_Date ], charsmax( eData[ Player_Expire_Date ] ), eData[ Player_FlagsExpire ], charsmax( eData[ Player_FlagsExpire ] ), szKeepPrivileges, charsmax( szKeepPrivileges ) ) < 10 )
                    {
                        continue;
                    }
                    
                    if( szPlayerData[ 0 ] == '
;' )
                    {
                        eData[ Player_Suspended ] = true;
                        replace( eData[ Player_ID ], charsmax( eData[ Player_ID ] ), ";", "" );
                    }
                    
                    if( eData[ Player_Expire_Date ][ 0 ] )
                    {
                        if( HasAdminExpired( eData[ Player_Expire_Date ] ) )
                        {
                            eData[ Player_Expired ] = true;
                        }
                    }
                    
                    // we don'
t want to use models that don't exist
                    if( eData[ Player_Model_T ][ 0 ] )
                    {
                        if( ! ModelExists( eData[ Player_Model_T ] ) )
                        {
                            eData[ Player_Model_T ][ 0 ] = EOS;
                        }
                    }
                    
                    if( eData[ Player_Model_CT ][ 0 ] )
                    {
                        if( ! ModelExists( eData[ Player_Model_CT ] ) )
                        {
                            eData[ Player_Model_CT ][ 0 ] = EOS;
                        }
                    }
                    
                    new iImmunity = str_to_num( szImmunity );
                    eData[ Player_Immunity ] = ( ! is_str_num( szImmunity ) || iImmunity < 0 ) ? 0 : iImmunity;
                    
                    new iKeepPrivileges = str_to_num( szKeepPrivileges );
                    eData[ Player_KeepPrivileges ] = bool:( ( ! is_str_num( szKeepPrivileges ) || !( 0 <= iKeepPrivileges <= 1 ) ) ? 0 : iKeepPrivileges );
                    
                    ArrayPushArray( g_aDatabase, eData );
                    arrayset( eData, 0, sizeof( eData ) );
                }
            }
        }
        fclose( iFile );
    }


You didn't even re-name the variables..

i edited the message,and i copied only in file reading/writting in ReloadFile. I told u doni in steam if u didn't remember.

I copied only that in realodfile bcz i had something bugged in file writting/reading and that's all.

Why i should rename variables? if u look everywhere now 70% have similar variables or same variables.

Variables never be edited im continuing to finish this and gave it free to the people.

If u want credits, ill put it no problem :)

edon1337 11-09-2019 06:47

Re: ZP VIP System
 
Quote:

Originally Posted by riste.kgb (Post 2672436)
i copied only in file reading/writting in ReloadFile.

You copied data storing, precaching and file reading. I just showed you literal proof 2 posts above. That's like 50% of the entire code. You also copied the multijump code from twistedeuphoria

Quote:

Originally Posted by riste.kgb (Post 2672436)
Why i should rename variables? if u look everywhere now 70% have similar variables or same variables.

It was sarcasm, if you changed the variable names and the overall structural look, even I wouldn't notice whether you copied something from my own code. You didn't even make the effort to change them.

Quote:

Originally Posted by riste.kgb (Post 2672436)
If u want credits, ill put it no problem :)

I didn't post all these to get credit, I did it to explain it to you that you have to credit people from whom you've taken codes from or who helped you. This is an open-source community, you can copy codes from 10 plugins and make your own, but what effort did you put into that, apart from copying and pasting.

riste.kgb 11-09-2019 06:50

Re: ZP VIP System
 
Quote:

Originally Posted by edon1337 (Post 2672440)
You copied data storing, precaching and file reading. I just showed you literal proof 2 posts above. That's like 50% of the entire code. You also copied the multijump code from twistedeuphoria



It was sarcasm, if you changed the variable names and the overall structural look, even I wouldn't notice whether you copied something from my own code. You didn't even make the effort to change them.



I didn't post all these to get credit, I did it to explain it to you that you have to credit people from whom you've taken codes from or who helped you. This is an open-source community, you can copy codes from 10 plugins and make your own, but what effort did you put into that, apart from copying and pasting.

you've got credits. Ill reedit and change how will this work.

I didnt have time to edit because i was got too many bugs to be fixed. now i think its fixed bug with precaching.

PS: Data storing i learned from dynamic array tutorial in alliedmods so, this doesn't mean i was copied from u.
If u think bcz i used same variables then maybe

Upcoming features:

Code:

- VIP zm/human will get extra ammo packs for infecting / killing zombie depending of cvar
- VIP zm/human will have extra health/armor depending of cvar

@edon1337 don't worry in v3 will be changed how file reading/writting will be works i don't want a problems for this anymore.

ZaX 11-11-2019 00:10

Re: ZP VIP System
 
I think this plugin should be posted here
https://forums.alliedmods.net/forumdisplay.php?f=126


All times are GMT -4. The time now is 23:07.

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