Page 1 of 1

Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 01 19:26
by Pukuotukas951
Bandau padaryti taip, kad perkėlus žaidėją į kitą komandą jo nenužudytų ir duotų tos komandos ginklą, taigi nesigauna, galit padėt?

Čia orginalus plmenu.amxx team transfer kodas:

Code: Select all

/* Team menu */ public actionTeamMenu(id, key){    switch (key)    {        case 7:        {            g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);            displayTeamMenu(id, g_menuPosition[id])        }        case 8: displayTeamMenu(id, ++g_menuPosition[id])        case 9: displayTeamMenu(id, --g_menuPosition[id])        default:        {            new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]            new authid[32], authid2[32], name[32], name2[32]             get_user_name(player, name2, 31)            get_user_authid(id, authid, 31)            get_user_authid(player, authid2, 31)            get_user_name(id, name, 31)                            log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")             show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);             if (g_cstrike)            {                if (is_user_alive(player))                {                    new deaths = cs_get_user_deaths(player)                    user_kill(player, 1)                    cs_set_user_deaths(player, deaths)                }                // This modulo math just aligns the option to the CsTeams-corresponding number                cs_set_user_team(player, (g_menuOption[id] % 3) + 1)                cs_reset_user_model(player)            } else {                new limit_setting = get_cvar_num("mp_limitteams")                                set_cvar_num("mp_limitteams", 0)                engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])                engclient_cmd(player, "joinclass", "1")                set_cvar_num("mp_limitteams", limit_setting)            }             displayTeamMenu(id, g_menuPosition[id])        }    }        return PLUGIN_HANDLED} displayTeamMenu(id, pos){    if (pos < 0)        return     get_players(g_menuPlayers[id], g_menuPlayersNum[id])     new menuBody[512]    new b = 0    new i, iteam    new name[32], team[4]    new start = pos * 7     if (start >= g_menuPlayersNum[id])        start = pos = g_menuPosition[id] = 0     new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))    new end = start + 7    new keys = MENU_KEY_0|MENU_KEY_8     if (end > g_menuPlayersNum[id])        end = g_menuPlayersNum[id]     for (new a = start; a < end; ++a)    {        i = g_menuPlayers[id][a]        get_user_name(i, name, 31)                if (g_cstrike)        {            iteam = _:cs_get_user_team(i)                        if (iteam == 1)            {                copy(team, 3, "TE")            }            else if (iteam == 2)            {                copy(team, 3, "CT")            }            else if (iteam == 3)            {                copy(team, 3, "SPE");                iteam = 6;            } else {                iteam = get_user_team(i, team, 3)            }        } else {            iteam = get_user_team(i, team, 3)        }         if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))        {            ++b                        if (g_coloredMenus)                len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)            else                len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)               } else {            keys |= (1<<b)                            if (is_user_admin(i))                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)            else                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)        }    }     len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])     if (end != g_menuPlayersNum[id])    {        format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")        keys |= MENU_KEY_9    }    else        format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")     show_menu(id, keys, menuBody, -1, "Team Menu")} public cmdTeamMenu(id, level, cid){    if (!cmd_access(id, level, cid, 1))        return PLUGIN_HANDLED     g_menuOption[id] = 0     displayTeamMenu(id, g_menuPosition[id] = 0)     return PLUGIN_HANDLED}  
o čia mano perdarytas, padėkit jaigu suprantat ir galit , + karma nepagailėsiu tikrai

Code: Select all

/* Team menu */ public actionTeamMenu(id, key){    switch (key)    {        case 7:        {            g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);            displayTeamMenu(id, g_menuPosition[id])        }        case 8: displayTeamMenu(id, ++g_menuPosition[id])        case 9: displayTeamMenu(id, --g_menuPosition[id])        default:        {            new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]            new authid[32], authid2[32], name[32], name2[32]             get_user_name(player, name2, 31)            get_user_authid(id, authid, 31)            get_user_authid(player, authid2, 31)            get_user_name(id, name, 31)                            log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")             show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);             if (g_cstrike)            {             iteam = _:cs_get_user_team(i)                            if (iteam == 1)                {                        ExecuteHam(Ham_Spawn, player);                        strip_user_weapons(player);                        give_item(player, "weapon_knife");                        give_item(player, "weapon_glock");                        cs_set_user_bpammo(player, CSW_GLOCK, 255);                    }                    else if (iteam == 2)                    {                        ExecuteHam(Ham_Spawn, player);                        strip_user_weapons(player);                        give_item(player, "weapon_knife");                        give_item(player, "weapon_usp");                        cs_set_user_bpammo(player, CSW_USP, 255);                    }                    else if (iteam == 3)                    {                        new deaths = cs_get_user_deaths(player)                        user_kill(player, 1)                        cs_set_user_deaths(player, deaths)                    }                 // This modulo math just aligns the option to the CsTeams-corresponding number                cs_set_user_team(player, (g_menuOption[id] % 3) + 1)                cs_reset_user_model(player)            } else {                new limit_setting = get_cvar_num("mp_limitteams")                                set_cvar_num("mp_limitteams", 0)                engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])                engclient_cmd(player, "joinclass", "1")                set_cvar_num("mp_limitteams", limit_setting)            }             displayTeamMenu(id, g_menuPosition[id])        }    }        return PLUGIN_HANDLED} displayTeamMenu(id, pos){    if (pos < 0)        return     get_players(g_menuPlayers[id], g_menuPlayersNum[id])     new menuBody[512]    new b = 0    new i, iteam    new name[32], team[4]    new start = pos * 7     if (start >= g_menuPlayersNum[id])        start = pos = g_menuPosition[id] = 0     new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))    new end = start + 7    new keys = MENU_KEY_0|MENU_KEY_8     if (end > g_menuPlayersNum[id])        end = g_menuPlayersNum[id]     for (new a = start; a < end; ++a)    {        i = g_menuPlayers[id][a]        get_user_name(i, name, 31)                if (g_cstrike)        {            iteam = _:cs_get_user_team(i)                        if (iteam == 1)            {                copy(team, 3, "TE")            }            else if (iteam == 2)            {                copy(team, 3, "CT")            }            else if (iteam == 3)            {                copy(team, 3, "SPE");                iteam = 6;            } else {                iteam = get_user_team(i, team, 3)            }        } else {            iteam = get_user_team(i, team, 3)        }         if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))        {            ++b                        if (g_coloredMenus)                len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)            else                len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)               } else {            keys |= (1<<b)                            if (is_user_admin(i))                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)            else                len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)        }    }     len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])     if (end != g_menuPlayersNum[id])    {        format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")        keys |= MENU_KEY_9    }    else        format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")     show_menu(id, keys, menuBody, -1, "Team Menu")} public cmdTeamMenu(id, level, cid){    if (!cmd_access(id, level, cid, 1))        return PLUGIN_HANDLED     g_menuOption[id] = 0     displayTeamMenu(id, g_menuPosition[id] = 0)     return PLUGIN_HANDLED} 

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 01 20:59
by newb
Kazkas tokio

Code: Select all

public actionTeamMenu(id, key){    switch (key)    {        case 7:        {            g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);            displayTeamMenu(id, g_menuPosition[id])        }        case 8: displayTeamMenu(id, ++g_menuPosition[id])        case 9: displayTeamMenu(id, --g_menuPosition[id])        default:        {            new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]            new authid[32], authid2[32], name[32], name2[32]             get_user_name(player, name2, 31)            get_user_authid(id, authid, 31)            get_user_authid(player, authid2, 31)            get_user_name(id, name, 31)                            log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")             show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);             if (g_cstrike)            {                cs_set_user_team(player, (g_menuOption[id] % 3) + 1)                cs_reset_user_model(player)                                if (is_user_alive(player)) {                    new CsTeams: team = cs_get_user_team(player)                                        if(team == CS_TEAM_SPECTATOR) {                        new deaths = cs_get_user_deaths(player)                        user_kill(player, 1)                        cs_set_user_deaths(player, deaths)                                                displayTeamMenu(id, g_menuPosition[id])                                                return PLUGIN_HANDLED                    }                                        ExecuteHam(Ham_Spawn, player)                                        strip_user_weapons(player)                                        give_item(player, "weapon_knife")                                        if(team == CS_TEAM_CT) {                        give_item(player, "weapon_usp")                        cs_set_user_bpammo(player, CSW_USP, 24)                                        } else {                        give_item(player, "weapon_glock18")                        cs_set_user_bpammo(player, CSW_GLOCK18, 40)                    }                                    }            } else {                new limit_setting = get_cvar_num("mp_limitteams")                                set_cvar_num("mp_limitteams", 0)                engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])                engclient_cmd(player, "joinclass", "1")                set_cvar_num("mp_limitteams", limit_setting)            }             displayTeamMenu(id, g_menuPosition[id])        }    }        return PLUGIN_HANDLED} 

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 01 22:01
by Pukuotukas951
Neveikia, būna taip: Kai esu T ir bandau permest save į CT tai duoda T komandos ginkla ir neperkelia, su CT tas pats kai bandau pereit į T. Į spectator išvis nk nereguoja. Dabar toks atvejis

Code: Select all

   if (g_cstrike)   {    if (get_user_team(player) == 1)    {     strip_user_weapons(player);     give_item(player, "weapon_knife");     give_item(player, "weapon_glock");     cs_set_user_bpammo(player, CSW_GLOCK, 255);     return PLUGIN_HANDLED;    }     if (get_user_team(player) == 2)    {     strip_user_weapons(player);     give_item(player, "weapon_knife");     give_item(player, "weapon_usp");     cs_set_user_bpammo(player, CSW_USP, 255);    }    // This modulo math just aligns the option to the CsTeams-corresponding number    cs_set_user_team(player, (g_menuOption[id] % 3) + 1)    cs_reset_user_model(player)
Sakė Arnas reikia daryt taip: get_user_team reiktų pakeisti kitu kintamuoju, nes neteisingai duos komandą šiuoje vietoje. Arba dėti po cs_set_user_team, bet nesupratau ką turėjo omenį.

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 01 22:04
by newb
Nezinau kur tu ten ka kopinai, bet man viskas veikia.

-- 2012 Bal 01 22:10 --

Idejau pilna actionTeamMenu.

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 01 22:12
by Pukuotukas951
Taip veikia, labai atsiprašau mano didelis fail, atsiprašau dar kartą. +KARMA

-- 2012 Bal 02 00:13 --

Po ilgo testavimo radau vieną klaidą, nepakeičia modelio, kai perikeli žaidėją į kitą team.

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 02 09:23
by newb
Det atskirai visur nera prasmes. Gali idet ji po viso is_user_alive tikrinimo.
Bet kazin ar bus be bugu, nes nezinau net kodel taip buna, gal koki delay reikia daryt.

Re: Transfer team, plmenu.amxx orginalus failas

Posted: 2012 Apr 02 11:41
by Pukuotukas951
Susitvarkiau :)