Deathrun V.I.P

Pluginai, kuriuos tikrintojai įvertino neigiamai ir jie laukia atnaujinimo.
User avatar
TBagT
Jau perkopė 10 žinučių ribą !
Posts: 14
Joined: 2010 Oct 25 12:51
Skype: deusx223

Deathrun V.I.P

Post by TBagT »

Sveiki, taigi perdariau per naują Deathrun vip'ą kuriame viskas patogiau ir optimizuotą.

Kas naujo?
  • Daug naujo nėra, tik naujas privalumas tas, kad galima kurti meniu pasirinkimus atskirais pluginais.
    Taip pat įdėtos funkcijos išjungti modelio, connect sound bei šviečiančių žiedų siuntimą. Daugiau pamatysite išbandę.
Pagrindiniai cvar'ai:
  • drvip_health - 150 default. Nustačius žemiau arba lygiai šimtą gyvybių funkcija neveiks.
    drvip_menu - 1 default. 1 - Meniu atsiras praėjus sekundei nuo round start. 2 - parašius /vipmenu.
    drvip_freetry - 1 default. 1 - Ar non-vip'ai galės išbandyti meniu galimybes ?
    drvip_freept - 5 default. Kiek terroristų reik nužudyt, kad galėtum pabandyti meniu ?
    drvip_hud - 1 default. Ar bus rodomas hud apačioje screen ?
    drvip_render - 1 default. Ar vip'as švies komandos spalva ?
    drvip_bhop - 1 default. Ar vip'as galės nonstop bhop ?
Meniu daiktų cvar'ai:
  • drvip_chance - 75. Koks šansas gauti pasirinkus deagle ?
    drvip_bullet - 2. Kiek šovinių turės deagle ?
  • drvip_gravity - 500. Kiek bus gravity pasirinkus ?
    drvip_bhealth - 20. Kiek pridės prie esamų gyvybės taškų ?
    drvip_invis - 20 = 80%. Koks bus nematomumas ?
    drvip_money - 2000. Kiek gaus pinigų ?
  • drvip_godtime - 10. Kiek gaus nemirtingumo ( sec ) - šansas gauti 30%
    drvip_cliptime - 5. Kiek laiko turės no-clip. - šansas gauti 30%

    drvip_speed - 500. Koks bus greitis ?
Viskas gaunama pasirinkus iš meniu.

Išviso yra 11 default daiktų pasirinkimų, jeigu norite daugiau susikūrkite ( kaip tai padaryti apačioje ).

Daiktų kūrimas:
Naujame failę įrašote ' #include < drvip > ' sukuriate daikto kintamajį ' new _item; '
plugin_init įrašote ' _item = drvip_register_item( "Daikto pavadinimas", KOMANDA ); ' Komandos: TEAM_CT, TEAM_T, TEAM_ANY - abejoms komandoms.
Ir funkcija tokia kai pasirenka daiktą:

Code: Select all

public drvip_item_selected( _id, _selectid ) {    if( _selectid == _item ) {        // Čia vykdoma funkcija kai žaidėjas pasirenka šį daiktą...    }}
Kita...
Norint išjungti modelius - užkomentuokite ' #define _MODEL ' pvz: ' //#define _MODEL '.
Norint išjungti prisijungimo dainą - užkomentuokite ' #define _CONNE ' pvz: ' //#define _CONNE '.
Norint išjungti spalvotus žiedus - užkomentuokite ' #define _CIRCLE ' pvz: ' //#define _CIRCLE '.
Radus klaidų/bugų rašyti šioje temoje.
Attachments
dr.rar
(895.74 KiB) Downloaded 502 times
dr_vip.sma
(14.71 KiB) Downloaded 961 times

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Deathrun V.I.P

Post by newb »

Kas cia per bajeriai, kad beveik visi varai prasideda nuo _* ?
Ir seip yra netiksliu/blogu vietu.

User avatar
TBagT
Jau perkopė 10 žinučių ribą !
Posts: 14
Joined: 2010 Oct 25 12:51
Skype: deusx223

Re: Deathrun V.I.P

Post by TBagT »

Kokiose vietose ?

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Deathrun V.I.P

Post by newb »

Nu pvz

Code: Select all

public round_start_dr( ) {    _global[ 2 ] = false;    if( get_pcvar_num( _cvars[ 2 ] ) == 1 ) {        new _players[ 32 ], _num, _x;        get_players( _players, _num, "a" );        for( _x = 0; _x < _num; _x++ ) {            if( access( _players[ _x ], _VIPF ) )                set_task( 1.0, "vip_menu", _players[ _x ] );        }    }}
Kam cia daryti taskus, kai naudoji ham spawna kuriame galima iskarto rodyti ta meniu.

Toliau

Code: Select all

public round_ended_dr( ) {    new _players[ 32 ], _num, _x;    get_players( _players, _num, "a" );    for( _x = 0; _x < _num; _x++ ) {        _bools[ _players[ _x ] ][ 2 ] = false;        remove_task( _players[ _x ]  );    }}
Trini taskus kuriu ir taip teoriskai nebutu. Ir neteisingus task id naudoji.

client_PreThink negeriausia vieta kur galima kviesti daug funckiju. Geriau irasyti alive ir flagus i atkirus varus.

Ham_Spawn

Code: Select all

if( !is_user_alive( _id ) || !access( _id, _VIPF ) ) return PLUGIN_HANDLED;
Neteisingas tikrinimas.

Code: Select all

    if( get_pcvar_num( _cvars[ 5 ] ) && !task_exists( _id + _SHOWHUD ) )        set_task( 0.2, "show_hud_player", _id + _SHOWHUD );    else if( get_pcvar_num( _cvars[ 5 ] ) && task_exists( _id + _SHOWHUD ) ) {        remove_task( _id + _SHOWHUD );        set_task( 0.2, "show_hud_player", _id + _SHOWHUD );    }    else        remove_task( _id + _SHOWHUD );
Cia irgi kazkokia nesamone.

Code: Select all

public player_dead( ) {    if( access( read_data( 1 ), _VIPF ) || !get_pcvar_num( _cvars[ 3 ] ) ) return;        if( ( 1 <= read_data( 1 ) <= 32 ) && is_user_alive( read_data( 1 ) ) && get_user_team( read_data( 1 ) ) !=  get_user_team( read_data( 2 ) ) && get_user_team( read_data( 1 ) ) == 2 ) {        _points[ read_data( 1 ) ]++;        set_user_rendering( read_data( 2 ), kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 1 )         remove_task( read_data( 2 ) );    }}
Naudot 10 kart read_data(1/2) ir neirasyti i vara blogai.


Naudoji free vip meniu kaip sena meniu sistema, o kita meniu su nauja ...

Code: Select all

 public clcmd_freevip( _id, _select ) {    switch( _select ) {        case 0: {            if( _points[ _id ] >= get_pcvar_num( _cvars[ 4 ] ) ) {                _points[ _id ] -= get_pcvar_num( _cvars[ 4 ] );                vip_menu( _id );            }            else {                color_print( _id, "%s %L", PREFIX, LANG_SERVER, "NOTENOUGHT_POINTS" );                clcmd_freevip_menu( _id );            }        }        case 9:            return PLUGIN_HANDLED;    }    return PLUGIN_HANDLED;}
Naudot switch, o jame dar if...else visai negraziai atrodo ^^


Meniu:

Code: Select all

if( !is_user_connected( _id ) || !is_user_alive( _id ) )
Abejoju, kad atsijunges zmogus gales dar is vip meniu ka nors paimti.

Code: Select all

for( _id = 1; _id <= get_maxplayers( ); _id++ )
get_maxplayers() reikia irasyti i vara.

Code: Select all

get_user_msgid( "SayText" )
Sita irgi i plugin_init irasyti.


Manau dar praleidau, nes nusibodo tikrint. Ir seip ziurejau i atskiras kodo dalys, tai nezinau ar kartu dar jie veikia :D

User avatar
beast
AMX Mod X ekspertai
Posts: 509
Joined: 2011 Jan 08 18:44
Skype: thefurious4
Contact:

Re: Deathrun V.I.P

Post by beast »

newb wrote:Kas cia per bajeriai, kad beveik visi varai prasideda nuo _* ?
Čia turbūt, kad sunkiau skaityti kodą būtų :D...
Kadangi dėlioji tarpus po skliaustų, galėtum ir daugiau tarpų tarp eilučių palikti, bent jau atskirti funkcijų kreipinius nuo kintamųjų. Vis lengviau žmonėms skaityti būtų. Čia tik patarimas, bent jau kitam kartui, kai kursi visiems prieinamą pluginą.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Deathrun V.I.P

Post by aaarnas »

Dar kelios smulkmenos, ko newb nepaminėjo.

Didžiausia problema, tai rašymo stilius. Nežinau kodėl taip rašai, bet tai nėra gerai. Svarbiausia, visą kodą rašai vienodai. Tas bent tiek gerai, bet arba tokį stilių pasirinkęs arba specialiai taip rašai. Esmė, kad jis nelabai atitinka kodo rašymo standartus.

Jei darai globalius kintamuosius, pasistenk, kad jų vardai būtų pakankamai išskirtiniai, nes dabar pasitaiko toks atvejis:
Yra globalus _item

Code: Select all

public item_vip( _id, _meid, _item) {    if( !is_user_connected( _id ) || !is_user_alive( _id ) ) {        menu_destroy( _meid );        return PLUGIN_HANDLED;    }        static _menudummy    player_menu_info( _id, _menudummy, _menudummy );    //...
o čia funkcijos parametruose naudoji kintamąjį su lygiai tokiu pačiu pavadinimu. Pagal blokinės programavimo kalbos ypatumus bus naudojama reikšmė sukurta artimiausiame bloke. Šiuo atveju čia gerai veiks, bet tau tai tikrai pakiš koją, kai parašysi 2 vienodo tipo kintamuosius kur ir po to norėsi panaudoti globalų, o paklius lokalus kintamasis.

Po to, masyvo indeksacija prasideda nuo 0, o ne 1. Manau turėtum tą žinoti, o rašyti taip vien dėl kodo grožio nėra tikslinga, vien dėl to, kad kiekvienas save gerbiantis programeris skaičiuoja nuo 0, ne vieno. Pascal įtaka ?

Dabar:

Code: Select all

public client_connect( _client ) {    if( access( _client, _VIPF ) ) {        #if defined _CONNE            client_cmd( _client, "spk %s", _CONNE_DIR );        #endif //...
Naudoti čia client_connect nėra labai geras sumanymas. client_connect iškviečiamas dar tada, kai žaidėjas tik pradeda jungtis į serverį, prieš failų siuntimą. Be to, jis gali būti iškviečiamas ir kelis kartus, kai atsisiunčia failus. Be to, jis nebūtinai reiškia, kad žaidėjas prisijungs į serverį, juo labiau, kad jis jau prisijungė. Jis dar tik jungiasi. Čia reiktų naudoti client_putinserver.

Code: Select all

if( !is_user_connected( _id ) || !is_user_alive( _id ) ) 
- čia blogai.
is_user_alive patikrina taip pat ar prisijungęs, tad nebūtina naudoti is_user_connected

Yra ir daugiau visko, bet nespėjau peržiūrėti.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
TBagT
Jau perkopė 10 žinučių ribą !
Posts: 14
Joined: 2010 Oct 25 12:51
Skype: deusx223

Re: Deathrun V.I.P

Post by TBagT »

Pataisiau pažiūrėkit ar gerai, nes senai kodavau. Ir aaarnai jo pascal įtaka su tais 1 ir 0.
Attachments
dr_vip.sma
(14.82 KiB) Downloaded 953 times

Lukosenka
Naujokas apylinkėse
Posts: 3
Joined: 2013 Jan 01 22:56
Skype: mcprison

Re: Deathrun V.I.P

Post by Lukosenka »

Išvis nesusikompiliuoja kodas dabar, pataisykit, jei kas nors galit.

User avatar
Giltinas
Jau po truputį tampa savu
Posts: 149
Joined: 2012 Jan 03 21:38
Skype: edgaras9512
Location: Šilutė

Re: Deathrun V.I.P

Post by Giltinas »

Code: Select all

201 eilutė _TASKMENU
Ištryniau _TASKMENU kadangi jo kode niekur nebuvo paminėta...
Dabar turi eiti.
Attachments
dr_vip.sma
(14.81 KiB) Downloaded 919 times
Image

Lukosenka
Naujokas apylinkėse
Posts: 3
Joined: 2013 Jan 01 22:56
Skype: mcprison

Re: Deathrun V.I.P

Post by Lukosenka »

Nemeta išvis dabar vip meniu :/.

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests