Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Mute sistemos kūrimas


Minion

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3890 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Mute sistemos kūrimas

Kiek pastebėjau forume jeigu ir yra pamoka susijusi su mute sistemos kūrimo, nėra tokia tiksli ir pravarti kaip kad dabar aš jums pabandysiu parodyti. Pagal mano pavyzdį sukurta sistema jums sumažins serverio resursų naudojimą, bei pagreitins visą darbą.

  1. Pradėsime nuo kintamųjų sukūrimo, viršuje skripto rašykime:
    new
    bool:PlayerMuted[ MAX_PLAYERS ],
    PlayerMuteTime[ MAX_PLAYERS ]
    ;
    


  2. Sekantis žingsnis yra nuresetinti žaidėjo kintamuosiu OnPlayerConnect callback'e:
    public OnPlayerConnect( playerid ){
    PlayerMuted[ playerid ] = false;
    PlayerMuteTime[ playerid ] = 0;
    return (true);
    }
    


    Kaip matote PlayerMuted nustatėme į false, kadangi tai Bool tipo kintamasis, o PlayerMuteTime nustatėme į 0.

  3. Dabar darysime, kad žaidėjas negalėtų parašyti teksto kai yra užmutintas, susiraskime OnPlayerText callback'ą, ir jo vidus turi atrodyti štai taip:
    public OnPlayerText(playerid, text[])
    {
    //Jeigu žaidėjas užmutintas
    if( PlayerMuted[ playerid ] ){
      //Zaidejui baigėsi mute laikas
      if( PlayerMuteTime[ playerid ] < gettime( ) ){
       SendClientMessage( playerid, -1, "Jūsų mute baigėsi, tikimės kad pasimokėte!" );
      }
      //Mute laikas nesibaigė
      else{
       SendClientMessage( playerid, -1, "Jūs esate užmutintas!" );
       return (false);
      }
    }
    return (true);
    }
    


  4. Dabar darysime komandą, kad užmutinti žaidėją ir atmutinti žaidėją( su laiku ):
    CMD:mute(playerid, params[])
    {
    new
      giveplayerID,
      laikas
    ;
    //Patikrinam ar gerai ivesta komanda
    if( sscanf( params, "ui", giveplayerID, laikas ) ){
      return SendClientMessage( playerid, -1, "/mute [Vardas/ID] [sekundes]" );
    }
    //Patikrinam duoto zaidejo ID
    if( giveplayerID == INVALID_PLAYER_ID ){
      return SendClientMessage( playerid, -1, "Tokio zaidejo nera!" );
    }
    //Patikrinam laika
    if( laikas < 0 ){
      return SendClientMessage( playerid, -1, "Neteisingai ivestas laikas!" );
    }
    // Uzmutiname zaideja
    Mute( giveplayerID, laikas );
    return (true);
    }	
    CMD:unmute(playerid, params[])
    {
    new
      giveplayerID
    ;
    //Patikrinam ar gerai ivesta komanda
    if( sscanf( params, "u", giveplayerID ) ){
      return SendClientMessage( playerid, -1, "/unmute [Vardas/ID]" );
    }
    //Patikrinam duoto zaidejo ID
    if( giveplayerID == INVALID_PLAYER_ID ){
      return SendClientMessage( playerid, -1, "Tokio zaidejo nera!" );
    }
    //Patikrinam ar zaidejas uzmutintas
    if( !PlayerMuted[ giveplayerID ] ){
      return SendClientMessage( playerid, -1, "Sis zaidejas nera uzmutintas!" );
    }
    // Uzmutiname zaideja
    Unmute( giveplayerID );
    return (true);
    }
    



  5. Susikuriame funkcijas kurių mums reikėjo komandose:
    	
    stock Mute( playerid, _seconds )	
    {	
    PlayerMuted[ playerid ] = true;	
    PlayerMuteTime[ playerid ] = ( gettime() + _seconds );	
    }	
    
    stock Unmute( playerid )	
    {	
    PlayerMuted[ playerid ] = false;	
    PlayerMuteTime[ playerid ] = 0;	
    }	
    
    stock IsMuted( playerid )	
    {	
    if( PlayerMuted[ playerid ])	
    {	
    //Zaidejui baigėsi mute laikas	
    if( PlayerMuteTime[ playerid ] < gettime( ) ){	
    Unmute( playerid );	
    return (false);	
    }	
    else	
    return (true);	
    }	
    else	
    return (false);	
    }	
    



  6. Naudoti galite ir komandose pvz:
    CMD:komanda(playerid)
    {
    if( IsMuted( playerid ) ){
      //tu uzmutintas
    }
    return (true);
    }
    


Pamoka kurta by Minion, jeigu reikia pagalbos rašykite PM.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3890 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...