Page 1 of 1

[AMXX] Cum creezi un countdown la o putere

Posted: 20 Aug 2013, 11:12
by Hades Ownage
Descriere: Am primit pm de la un băiat să îi arăt cum face un countdown la o anumită putere. Decât să îi explic doar lui în particular, mai bine fac un tutorial să afle toată lumea.
Puterea va fi: GodMode

1. Pentru început adăugăm următoarele variabile:

Code: Select all

new Float: LastMessage [ 33 ];
new GodMode_Countdown [ 33 ]; 
2. În init facem un clcmd:

Code: Select all

register_clcmd ( "power", "UsePower" ); 
Scrii power în consolă şi ţi se va activa puterea

3. Acum creeăm public-ul UsePower cu param-ul id:
1a. | În el adăugăm următorul if:

Code: Select all

if ( GodMode_Countdown [ id ] && LastMessage [ id ] < get_gametime ( ) ) { 
1b. | În această verificaţie adăugăm:

Code: Select all

LastMessage [ id ] = get_gametime ( ) + 1.0; 
1c. | Închidem verificaţia şi adăugăm următorul else if:

Code: Select all

else if ( godmodepower ( id ) ) { 
1d. | În acest else if adăugăm:

Code: Select all

GodMode_Countdown [ id ] = 25;
CountDown_GodMode ( id ); 
25 - înseamnă countdown-ul ( cât trebuie să aştepte )

4. Public-ul GodMode_CountDown este unul mai complex, am pus explicaţiile în el:

Code: Select all

public CountDown_GodMode ( id ) {
    
    if ( !is_user_alive ( id ) ) { // daca nu e viu, countdown-ul sa se puna pe 0
        
        GodMode_Countdown [ id ] = 0;
    }
    
    else if ( GodMode_Countdown [ id ] > 0 ) { // daca countdown-ul userului este mai mare decat 0 sa ruleze ce e mai jos
        
        set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
        show_hudmessage ( id, "Iti vei putea folosi puterea in %d secund%s", GodMode_Countdown [ id ], GodMode_Countdown [ id ] == 1 ? "a" : "e" ); // mesajul hud
        GodMode_Countdown [ id ]--; // countdown-ul scade cu 1
        set_task ( 1.0, "CountDown_GodMode", id ); // odata la 1 secunda countdown-ul scade cu 1
    }
    else if ( GodMode_Countdown [ id ] <= 0 ) {
        
        set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
        show_hudmessage ( id, "Iti poti folosi puterea din nou" ); // mesajul hud
        GodMode_Countdown [ id ] = 0; // countdown-ul se seteaza pe 0
    }
    
}
5. Adăugaţi următoarele:

Code: Select all

bool: godmodepower ( id ) {
    
    set_user_godmode ( id, 1 ); // seteaza godmode pe 1
    set_task ( 5.0, "stopgodmode", id ); // dupa 5 secunde va actiona public-ul stopgodmode
    return true;
    
}

public stopgodmode ( id ) {
    
    set_user_godmode ( id, 0 ); // seteaza godmode pe 0
    set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
    show_hudmessage ( id, "Nu mai ai godmode" ); // mesajul hud
    return 1;
    
}
Asta a fost tot. Am explicat în cod ca să nu mai lungim tutorialul
Plugin-ul trebuie să arate aşa:

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <  amxmodx  >
#include <  fun  >

#define PLUGIN "Plug-in Nou"
#define VERSION "0.1"
#define AUTHOR "hadesownage"

new Float: LastMessage [ 33 ];
new GodMode_Countdown [ 33 ];

public plugin_init ( ) {
    
    register_plugin ( PLUGIN, VERSION, AUTHOR );
    
    register_clcmd ( "power", "UsePower" );
}

public UsePower ( id ) {
    
    if ( GodMode_Countdown [ id ] && LastMessage [ id ] < get_gametime ( ) ) {
        
        LastMessage [ id ] = get_gametime ( ) + 1.0;
        
    }
    
    else if ( godmodepower ( id ) ) {
        
        GodMode_Countdown [ id ] = 25;
        CountDown_GodMode ( id );
    }
    
}

public CountDown_GodMode ( id ) {
    
    if ( !is_user_alive ( id ) ) { // daca nu e viu, countdown-ul sa se puna pe 0
        
        GodMode_Countdown [ id ] = 0;
    }
    
    else if ( GodMode_Countdown [ id ] > 0 ) { // daca countdown-ul userului este mai mare decat 0 sa ruleze ce e mai jos
        
        set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
        show_hudmessage ( id, "Iti vei putea folosi puterea in %d secund%s", GodMode_Countdown [ id ], GodMode_Countdown [ id ] == 1 ? "a" : "e" ); // mesajul hud
        GodMode_Countdown [ id ]--; // countdown-ul scade cu 1
        set_task ( 1.0, "CountDown_GodMode", id ); // odata la 1 secunda countdown-ul scade cu 1
    }
    else if ( GodMode_Countdown [ id ] <= 0 ) {
        
        set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
        show_hudmessage ( id, "Iti poti folosi puterea din nou" ); // mesajul hud
        GodMode_Countdown [ id ] = 0; // countdown-ul se seteaza pe 0
    }
    
}

bool: godmodepower ( id ) {
    
    set_user_godmode ( id, 1 ); // seteaza godmode pe 1
    set_task ( 5.0, "stopgodmode", id ); // dupa 5 secunde va actiona public-ul stopgodmode
    return true;
    
}

public stopgodmode ( id ) {
    
    set_user_godmode ( id, 0 ); // seteaza godmode pe 0
    set_hudmessage ( 255, 255, 0, -1.0, 0.88, 0, 1.0, 1.1, 0.0, 0.0, 7 ); // pozitia hud-ului
    show_hudmessage ( id, "Nu mai ai godmode" ); // mesajul hud
    return 1;
    
}
Mulţumiri lui Aragon, o parte din cod este făcută de el.
Dacă întâlniti probleme puteţi să lăsaţi reply în topic şi o să vă răspund cât pot de repede.
Exprimăţi recunoştinţa dacă ţi-a fost de folos acest tutorial !

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 20 Aug 2013, 11:31
by Rony
multumesc.

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 20 Aug 2013, 11:40
by munir
new Float: LastMessage [ 33 ];
new GodMode_Countdown [ 33 ];
Astea sunt variabile..
ON: Bun si util tutorialul.. chiar ieri sau alaltaieri ma intreba cineva pe mess cum se face un countdown..

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 20 Aug 2013, 11:49
by prorvl
Rainq tot eu eram si cel de mai sus :)). Multumesc Hades!

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 21 Aug 2013, 18:35
by LordOfNothing
Rainq wrote:
new Float: LastMessage [ 33 ];
new GodMode_Countdown [ 33 ];
Astea sunt variabile..
ON: Bun si util tutorialul.. chiar ieri sau alaltaieri ma intreba cineva pe mess cum se face un countdown..

prezent :)))


Thanks pentru tutorial :D

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 22 Aug 2013, 22:43
by SupremEuS
Foarte bun tutorialul !
Multumim frumos pentru el.

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 25 Aug 2013, 17:16
by KronoS eXtream
Mutat in Prima pagină » eXtream - Counter-Strike 1.6 » Programarea CS-ului » Scripting

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 28 Aug 2013, 18:49
by Cosmin
Am testat si licenta si cum ai zis tu in acest tutorial si nu functioneaza :|

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 21 Jun 2014, 12:39
by HamletEagle

Code: Select all

 GodMode_Countdown [ id ] == 1 ? "a" : "e
? este un operator ternar. Sintaxa lui este: conditie ? "val1" : "val2"
Se traduce asa: daca este adevarata conditia, atunci ia in considerare val1, altfel ia in considerare val2.

Un alt exemplu:

Code: Select all

new bool: test = true
test == true ? "boolul e pe true" : "boolul e pe false"

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 21 Jun 2014, 13:21
by The Kalu
Era frumos sa iti afiseze si durata puterii,oricum este bine ca ai facut tutorial Hades.

Re: [AMXX] Cum creezi un countdown la o putere

Posted: 21 Jun 2014, 13:50
by Emi eXtream
Foarte frumos realizat.
Hades , de obicei răspunzi la PM-uri?
Am câteva întrebări.