pagalbos kodel negroja

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

pagalbos kodel negroja

Post by laimiukas3 »

cia del kbps gal ?

kai saundas turi sugroti konsoleja matau toki dalyka

warning: MP3_InitStream(35, wonround.mp3) failed
warning: MP3_InitStream(36, startaction_01.mp3) failed

Code: Select all

#include <amxmodx>#include <amxmisc>#include <cstrike> //These sounds are in arrays so we could match them with each othernew const MUSIC[][] ={    "startround_01.mp3",    //0    "startround_02.mp3",    //1    "startround_03.mp3",    //2    "startaction_01.mp3",   //3    "startaction_02.mp3",   //4    "startaction_03.mp3",   //5    "deathcam.mp3",     //6    "bombplanted.mp3",  //7    "bombtenseccount.mp3",  //8    "roundtenseccount.mp3", //9    "wonround.mp3",     //10    "lostround.mp3"     //11} // Setting task with their IDs so we can remove them laterenum (+= 100000){    TASKID_ROUND_TEN = 100000, // start with 100000    TASKID_BOMB_TEN} new player_cache[32], player_kit[32], player_folder[32][45];new bool_firstround = 1, bool_endofround, bool_bomb_planted ;new cvar_musickit_set, cvar_round_time, cvar_c4_time, cvar_freeze_time, cvar_musickit_howmany;new variant, client_cmds[6]; public plugin_init() {    register_event("HLTV", "Event_New_Round", "a", "1=0", "2=0");    register_message(get_user_msgid("TextMsg"),    "Event_End_Round");    register_event("DeathMsg", "Event_Death", "a");    register_logevent("Event_Start_Round", 2, "1=Round_Start");    register_logevent("Event_Bomb_Planted", 3, "2=Planted_The_Bomb");    register_logevent("Event_Round_Draw" , 4, "1=Round_Draw");    register_logevent("Event_Bomb_Defused", 3, "2=Defused_The_Bomb");    register_logevent("Event_BombTarget_Saved", 6, "3=Target_Saved") ;    register_logevent("Remove_Tasks", 2, "1=Round_End");        // CVARS    cvar_round_time = get_cvar_pointer("mp_roundtime");    cvar_c4_time = get_cvar_pointer("mp_c4timer");    cvar_freeze_time = get_cvar_pointer("mp_freezetime");    cvar_musickit_set = register_cvar("musickit_set", "1");    cvar_musickit_howmany = register_cvar("musickit_howmany", "1")            for(new i = 0; i <= get_pcvar_num(cvar_musickit_howmany); i++)    {        formatex(client_cmds, charsmax(client_cmds), "kit%d", i);        register_concmd(client_cmds, "ClientCommand_Select_Kit");    }} public plugin_precache() {         precache_generic("media\musickits\1\CT\bombplanted.mp3");    precache_generic("media\musickits\1\CT\bombtenseccount.mp3");    precache_generic("media\musickits\1\CT\deathcam.mp3");    precache_generic("media\musickits\1\CT\lostround.mp3");    precache_generic("media\musickits\1\CT\roundtenseccount.mp3");    precache_generic("media\musickits\1\CT\startaction_01.mp3");    precache_generic("media\musickits\1\CT\startaction_02.mp3");    precache_generic("media\musickits\1\CT\startaction_03.mp3");    precache_generic("media\musickits\1\CT\startround_01.mp3");    precache_generic("media\musickits\1\CT\startround_02.mp3");    precache_generic("media\musickits\1\CT\startround_03.mp3");    precache_generic("media\musickits\1\CT\wonround.mp3");    precache_generic("media\musickits\1\T\bombplanted.mp3");    precache_generic("media\musickits\1\T\bombtenseccount.mp3");    precache_generic("media\musickits\1\T\deathcam.mp3");    precache_generic("media\musickits\1\T\lostround.mp3");    precache_generic("media\musickits\1\T\roundtenseccount.mp3");    precache_generic("media\musickits\1\T\startaction_01.mp3");    precache_generic("media\musickits\1\T\startaction_02.mp3");    precache_generic("media\musickits\1\T\startaction_03.mp3");    precache_generic("media\musickits\1\T\startround_01.mp3");    precache_generic("media\musickits\1\T\startround_02.mp3");    precache_generic("media\musickits\1\T\startround_03.mp3");    precache_generic("media\musickits\1\T\wonround.mp3");   }  public ClientCommand_Select_Kit(id){    static cmd[6];    read_argv(0, cmd, 5);    new num = str_to_num(cmd[3]);        if(num <= 0)    {        player_kit[id] = 0;        player_cache[id] = 0;        client_cmd(id, "mp3 stop");        return    } else player_cache[id] = num;        client_print(id, print_chat, "Music Kit changed to %d.", num);    client_print(id, print_center, "Music Kit will change next round.");} public Event_New_Round(){    // Resetting some values for later    bool_endofround = 0;    bool_bomb_planted = 0;    Remove_Tasks();        new players[32], num;    get_players(players, num, "c");    for (new i = 1; i < num + 1; i++)    {        if(bool_firstround == 1)        {            player_cache[i] = get_pcvar_num(cvar_musickit_set);            player_kit[i] = player_cache[i];        }        else            player_kit[i] = player_cache[i];    }        if(get_pcvar_num(cvar_freeze_time) <= 2)    {        variant = random_num(0,2);        return    }     variant = random_num(0,2);    Play_Music(0 + variant, 0, 0);} public Event_Start_Round(){    if(bool_endofround == 1)        return        Play_Music(3 + variant, 0, 0);    new Float:SecUntilRoundEnd = float((get_pcvar_num(cvar_round_time) * 60) - 10); // We calculate when there's only ten seconds left of round time    set_task(SecUntilRoundEnd, "Round_Ten_Seconds_Left", TASKID_ROUND_TEN); // Setting task to play sound when only ten seconds of round time is left} public Round_Ten_Seconds_Left(){    if(bool_endofround == 1)        return     // If is already planted, function is ignored    if(bool_bomb_planted == 1)        return        Play_Music(9, 0, 0);} public Event_Bomb_Planted(){    if(bool_endofround == 1)        return        bool_bomb_planted = 1;    remove_task(TASKID_ROUND_TEN);        Play_Music(7, 0, 0);        new Float:SecUntilExplosion = float(get_pcvar_num(cvar_c4_time) - 10); // Calculating when ten seconds is left on the C4 timer    set_task(SecUntilExplosion, "Bomb_Ten_Seconds_Left", TASKID_BOMB_TEN); // Sets tasks when ten seconds of C4 timer is left } public Bomb_Ten_Seconds_Left(){    if(bool_endofround == 1)        return     Play_Music(8, 0, 0);} public Event_End_Round(id){    // We get what type of End Round we have...    static textmsg[22];    get_msg_arg_string(2, textmsg, charsmax(textmsg));        //...and play the appropriate sound to each player according to their team        if(equali(textmsg, "#Terrorists_Win")) //Terrorists Wins        Play_Music(10, 1, 1);        else if(equali(textmsg, "#CTs_Win")) //Counter-Terrorists Wins        Play_Music(10, 2, 1);        else if(equali(textmsg, "#Target_Bombed")) //C4 explodes, eliminates target        Play_Music(10, 1, 1);            else if(equali(textmsg, "#Hostages_Not_Rescued")) //Time ran out and hostages not rescued        Play_Music(10, 1, 1);        else if(equali(textmsg, "#VIP_Assassinated") || equali(textmsg, "#VIP_Not_Escaped")) //VIP killed or time ran out and VIP has not escaped        Play_Music(10, 1, 1);        else if(equali(textmsg, "#VIP_Escaped")) //VIP escapes        Play_Music(10, 2, 1);} // Plays victory sound for CT when C4 is defusedpublic Event_Bomb_Defused(id){    if(bool_endofround == 1)        return            Play_Music(10, 2, 1); } // Plays victory sound for CT when target has not been bombedpublic Event_BombTarget_Saved(id){    Play_Music(10, 2, 1); } public Event_Round_Draw(){    Play_Music(11, 0, 1);} public Event_Death(){    if(bool_endofround == 1)        return     new id = read_data(2) // Getting index of player who just died        Format_Music_Folder(id);    client_cmd(id, "mp3 play ^"%s%s^"", player_folder[id], MUSIC[6]);} public Remove_Tasks(){    //Removing set tasks    remove_task(TASKID_ROUND_TEN);    remove_task(TASKID_BOMB_TEN);} public Play_Music(music, team, end){    new players[32], num;    get_players(players, num, "c");    for (new i = 1; i < num + 1; i++)    {        Format_Music_Folder(i);        if(end == 1)        {            if(team) // If one team wins            {                if(get_user_team(i) == team)                    client_cmd(i, "mp3 play ^"%s%s^"", player_folder[i], MUSIC[10]);                else                    client_cmd(i, "mp3 play ^"%s%s^"", player_folder[i], MUSIC[11]);            }            else // When no one wins, everybody loses                client_cmd(i, "mp3 play ^"%s%s^"", player_folder[i], MUSIC[11]);                        bool_endofround = 1;            bool_bomb_planted = 0;            Remove_Tasks();                        // The 1st round is when players are still connecting and game has not commenced.            // To prevent the sound from playing after that, we do this check            if(bool_firstround == 1)            {                bool_firstround = 0;                return            }        }        else            client_cmd(i, "mp3 play ^"%s%s^"", player_folder[i], MUSIC[music]);     }} stock Format_Music_Folder(id){    new iFolder[45];        if(player_kit[id] == 1)    {        if(CsTeams:get_user_team(id) == CS_TEAM_T)            formatex(iFolder, charsmax(iFolder), "media/musickits/1/TER/");        else if(CsTeams:get_user_team(id) == CS_TEAM_CT)            formatex(iFolder, charsmax(iFolder), "media/musickits/1/CT/");        else            formatex(iFolder, charsmax(iFolder), "media/musickits/1/CT/");    }    else if(player_kit[id] >> 1)        formatex(iFolder, charsmax(iFolder), "media/musickits/%d/", player_kit[id]);            player_folder[id] = iFolder;}
kai pilnas 32/32
L 10/12/2016 - 22:40:42: [AMXX] Displaying debug trace (plugin "csgo_garsai.amxx")
L 10/12/2016 - 22:40:42: [AMXX] Run time error 4: index out of bounds
L 10/12/2016 - 22:40:42: [AMXX] [0] csgo_garsai.sma::Format_Music_Folder (line 292)
L 10/12/2016 - 22:40:42: [AMXX] [1] csgo_garsai.sma::Event_Death (line 240)
Image
Image
Image

InvIs2
Jau po truputį tampa savu
Posts: 149
Joined: 2013 Sep 29 12:47
Skype: pksoldierlt

Re: pagalbos kodel negroja

Post by InvIs2 »

player_kit[32] --> player_kit[33] ir apskritai visus masyvus į [33] pasidaryk.

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: pagalbos kodel negroja

Post by laimiukas3 »

InvIs2 wrote:player_kit[32] --> player_kit[33] ir apskritai visus masyvus į [33] pasidaryk.
aciu.
dar klausimelis senesniuse pluginuose new g_friend[MAX_PLAYERS] tai irgi reikia keisti new g_friend[33] ?
[AMXX] Run time error 4: index out of bounds
Image
Image
Image

DYaGesS
Flooderis arba specialistas
Posts: 875
Joined: 2013 Jan 16 01:01
Skype: usercs.com
Contact:

Re: pagalbos kodel negroja

Post by DYaGesS »

MAX_PLAYERS 33 priskirk tiesiog
Padėjau? +rep

User avatar
psychical
Viršininkas
Posts: 2094
Joined: 2011 Mar 12 22:19
Skype: tautvydas11
Location: Linksmakalnis
Contact:

Re: pagalbos kodel negroja

Post by psychical »

DYaGesS wrote:MAX_PLAYERS 33 priskirk tiesiog
https://www.amxmodx.org/api/amxconst
MAX_PLAYERS is not the same as MaxClients. MAX_PLAYERS is a hardcoded
value as an upper limit, used mainly to declare arrays big enough for
all possible server situations. MaxClients changes based on the
server the plugin is deployed on..
#define MAX_PLAYERS 32 /* Maximum number of players AMX Mod X supports */

public stock const MaxClients; /* Maximum number of players the server supports */
Kad ir kaip bebūtų keista, pačiame AMX (naujausiam) automatiškai MAX_PLAYERS yra priskiriamas 32 ir tai yra tiek iš loginės pusės, tiek iš programinės teisinga, nes 32 žaidėjų kiekio viršyti negalima. Tačiau žinant tai, kad masyvo reikšmės skaičiuojamos nuo 0, o ne nuo 1 šiuo atveju masyvą padarys tik iki 31. (čia šiaip blevyzgavonės :D )

Jei kalbant rimtai. Tai nesiūlau daryti MAX_PLAYERS 33, siūlau palikti MAX_PLAYERS 32, o pačiame kintamojo registre parašyti taip new g_friend[MAX_PLAYERS+1]. Beje, siūlymas visuose masyvuose (kai juos kuri) kuriuos kuri žaidėjams, rašyti ne 33, o tai kas buvo rašyta prieš tai, nes jei tarkim tau reiktų didinti masyvo vietą (arba ją mažinti) turėtum veiklos vaikščiodamas per kiekvieną iš jų ir keisdamas jų reikšmes.


Daug tiesos, daug melo, daug šlamšto išsirink kaip daryti tau yra geriau, taip ir daryk.

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: pagalbos kodel negroja

Post by laimiukas3 »

o kaip del sitos klaidos zaidimo konsoleja kartais sugroja garsas kartais ne
warning: MP3_InitStream(35, wonround.mp3) failed
warning: MP3_InitStream(36, startaction_01.mp3) failed
Image
Image
Image

Walter
Ar jis surinks 50 žinučių?
Posts: 34
Joined: 2016 Oct 23 22:17

Re: pagalbos kodel negroja

Post by Walter »

[quote="laimiukas3"]o kaip del sitos klaidos zaidimo konsoleja kartais sugroja garsas kartais ne

This Music Only when CT / TT Win and when round start and End ?

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: pagalbos kodel negroja

Post by laimiukas3 »

Walter wrote:
laimiukas3 wrote:o kaip del sitos klaidos zaidimo konsoleja kartais sugroja garsas kartais ne

This Music Only when CT / TT Win and when round start and End ?
no

Code: Select all

"startround_01.mp3",    //0    "startround_02.mp3",    //1    "startround_03.mp3",    //2    "startaction_01.mp3",   //3    "startaction_02.mp3",   //4    "startaction_03.mp3",   //5    "deathcam.mp3",     //6    "bombplanted.mp3",  //7    "bombtenseccount.mp3",  //8    "roundtenseccount.mp3", //9    "wonround.mp3",     //10    "lostround.mp3"     //11}
Image
Image
Image

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests