Reikia Kad Pakoreguotumete

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
ShoX
Gana aktyvus vartotojas
Posts: 217
Joined: 2010 Nov 15 19:45
Location: Lithuania

Reikia Kad Pakoreguotumete

Post by ShoX »

Sveiki,gal kas gali is skripteriu pakorekuoti.
Reikia panaikinti visas zinnutes,kur raso chate.panaikinti tas komandas /hats,ir panaikinti Page (tiesiog kad jo nerodytu) ten prie pavadinimo to [page [1/10]
Reikia padaryti
Pavadinima padaryti raudona,ir skaicius.o funkcija geltonai.
padaryti kai zmogus prisijungia i serveri (kai spawnina) po 10sec ismeta ta meniu.
Flag: A (jei netiks pasikeisiu)
Kai pasikeicia mapas mestu vel pasirinkima
Ir kai pajemi hat suskamba ok.wav sound.
None Perkelti i gala prie exit

Code: Select all

#include <amxmodx>#include <amxmisc>#include <fakemeta> #define PLUG_NAME       "Plugin"#define PLUG_AUTH       "Named"#define PLUG_VERS       "0.1"#define PLUG_TAG        "-"#define PLUG_ADMIN      ADMIN_RCON      //Access flags required to give/remove hats#define PLUG_ADMINB     ADMIN_CHAT      //Access flags required to set personal hat if admin only is enabled #define OFFSET_GLOWSET  100 #define HAT_ALL         0#define HAT_ADMIN       1#define HAT_TERROR      2#define HAT_COUNTER     3 #define menusize        220#define maxTry          15              //Number of tries to get someone a non-admin random hat before giving up.#define modelpath       "models/hats" stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW) new g_HatEnt[33]new CurrentHat[33]new CurrentMenu[33] new HatFile[64]new MenuPages, TotalHats #define MAX_HATS 64new HATMDL[MAX_HATS][26]new HATNAME[MAX_HATS][26]new HATREST[MAX_HATS] new P_AdminOnlynew P_AdminHatsnew P_RandomJoinnew P_BotRandomnew P_ForceHatnew P_Glow public plugin_init() {    register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)    register_logevent("event_roundstart",   2,  "1=Round_Start")    register_event("TeamInfo",              "event_team_info",  "a" )        register_concmd("amx_givehat",      "Give_Hat",     PLUG_ADMIN,     "<nick> <mdl #>")    register_concmd("amx_removehats",   "Remove_Hat",   PLUG_ADMIN,     " - Removes hats from everyone.")        register_menucmd(register_menuid("\yHat Menu: [Page"),  (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")    register_clcmd("say /hats",         "ShowMenu", -1,     "Shows Knife menu")        P_AdminOnly     = register_cvar("hat_adminonly",    "0")    //Only admins can use the menu    P_AdminHats     = register_cvar("hat_adminhats",    "0")    //Allow hats for admins only (if 0, hats specifically for admins can be used by anyone)    P_RandomJoin    = register_cvar("hat_random",       "0")    //Random hats for players as they join    P_BotRandom     = register_cvar("hat_bots",         "0")    //Random hats for bots as they join    P_ForceHat      = register_cvar("hat_force",        "0")    //Force a specific hat (if not 0)    P_Glow          = register_cvar("hat_glow",         "0")    //0=None,1=GlowWithPlayer,2=TeamColor} public ShowMenu(id) {    if ((get_pcvar_num(P_AdminOnly) == 1 && get_user_flags(id) & PLUG_ADMIN) || (get_pcvar_num(P_AdminOnly) == 0 && get_pcvar_num(P_ForceHat) == 0)) {        CurrentMenu[id] = 1        ShowHats(id)    } else {        client_print(id,print_chat,"[%s] Only admins may currently use this menu.",PLUG_TAG)    }    return PLUGIN_HANDLED} public ShowHats(id) {    new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)        new szMenuBody[menusize + 1], WpnID    new nLen = format(szMenuBody, menusize, "\yHat Menu: [ %i/%i]^n",CurrentMenu[id],MenuPages)        new MnuClr[3]    // Get Hat Names And Add Them To The List    for (new hatid=0; hatid < 8; hatid++) {        WpnID = ((CurrentMenu[id] * 8) + hatid - 8)        if (WpnID < TotalHats) {            menucolor(id, WpnID, MnuClr)            nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w%i.%s %s", hatid + 1, MnuClr, HATNAME[WpnID])        }    }        // Next Page And Previous/Close    if (CurrentMenu[id] == MenuPages) {        nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Next Page")    } else {        nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Next Page")    }        if (CurrentMenu[id] > 1) {        nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Previous Page")    } else {        nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Close")    }    show_menu(id, keys, szMenuBody, -1)    return PLUGIN_HANDLED} public MenuCommand(id, key) {    switch(key)    {        case 8:     //9 - [Next Page]        {            if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++            ShowHats(id)            return PLUGIN_HANDLED        }        case 9:     //0 - [Close]        {            CurrentMenu[id]--            if (CurrentMenu[id] > 0) ShowHats(id)            return PLUGIN_HANDLED        }        default:        {            new HatID = ((CurrentMenu[id] * 8) + key - 8)            if (HatID < TotalHats) {                if ((get_pcvar_num(P_AdminHats) == 0 && HATREST[HatID] == HAT_ADMIN) || (get_pcvar_num(P_AdminHats) == 1 && HATREST[HatID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) || HATREST[HatID] == HAT_ALL || (HATREST[HatID] == get_user_team(id) + 1)) {                    Set_Hat(id,HatID,id)                } else {                    if (HATREST[HatID] == HAT_TERROR && get_user_team(id) == 2) {                        client_print(id,print_chat,"[%s] This hat is currently set as a Terrorist Hat.",PLUG_TAG)                    } else if (HATREST[HatID] == HAT_COUNTER && get_user_team(id) == 1) {                        client_print(id,print_chat,"[%s] This hat is currently set as Counter Terrorist.",PLUG_TAG)                    } else {                        client_print(id,print_chat,"[%s] This hat is currently set as Admin Only.",PLUG_TAG)                    }                }            }        }    }    return PLUGIN_HANDLED} public plugin_precache() {    new cfgDir[32]    get_configsdir(cfgDir,31)    formatex(HatFile,63,"%s/HatList.ini",cfgDir)    command_load()    new tmpfile [101]    for (new i = 1; i < TotalHats; ++i) {        format(tmpfile, 100, "%s/%s", modelpath, HATMDL[i])        if (file_exists (tmpfile)) {            precache_model(tmpfile)            server_print("[%s] Precached %s", PLUG_TAG, HATMDL[i])        } else {            server_print("[%s] Failed to precache %s", PLUG_TAG, tmpfile)        }    }} public client_putinserver(id) {    if (get_pcvar_num(P_ForceHat) == 1) {        new forceID = get_pcvar_num(P_ForceHat)        if (forceID <= TotalHats - 1) {            forcehat(id, forceID)        } else {            set_pcvar_num(P_ForceHat, 0)        }    } else if (get_pcvar_num(P_RandomJoin) == 1 || (get_pcvar_num(P_BotRandom) == 1 && is_user_bot(id))) {        if (get_pcvar_num(P_ForceHat) == 0) Random_Hat(id)    }    return PLUGIN_CONTINUE} public event_team_info() {    if (get_pcvar_num(P_ForceHat) != 0) return    new id = read_data(1)    if (HATREST[CurrentHat[id]] == HAT_ALL) return    if (HATREST[CurrentHat[id]] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) return        new team[3]    read_data(2, team, 2)    switch(team[0]) {        case 'C': {            if (HATREST[CurrentHat[id]] != HAT_COUNTER) Random_Hat(id)        }        case 'T': {            if (HATREST[CurrentHat[id]] != HAT_TERROR) Random_Hat(id)        }        case 'S': {            Set_Hat(id, 0, 0)        }    }    return}public event_roundstart() {    new forceID = get_pcvar_num(P_ForceHat)    for (new i = 0; i < get_maxplayers(); ++i) {        if (is_user_connected(i) && g_HatEnt[i] > 0) {            if (forceID != 0) {                forcehat(i, forceID)            }            glowhat(i)        }    }    return PLUGIN_CONTINUE} public Give_Hat(id, req_flag){    if( !(get_user_flags(id) & req_flag) )        return PLUGIN_HANDLED        new smodelnum[5], name[32]    read_argv(1,name,31)    read_argv(2,smodelnum,4)        new player = cmd_target(id,name,2)    if (!player) {        client_print(id,print_chat,"[%s] Player With That Name Does Not Exist.",PLUG_TAG)        return PLUGIN_HANDLED    }        new imodelnum = (str_to_num(smodelnum))    if (imodelnum > MAX_HATS) return PLUGIN_HANDLED        Set_Hat(player,imodelnum,id)     return PLUGIN_CONTINUE} public Remove_Hat(id, req_flag){    if( !(get_user_flags(id) & req_flag) )        return PLUGIN_HANDLED     for (new i = 0; i < get_maxplayers(); ++i) {        if (is_user_connected(i) && g_HatEnt[i] > 0) {            Set_Hat(id, 0, 0)        }    }    client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_TAG)    return PLUGIN_CONTINUE} public Random_Hat(id) {    new bool:foundrnd = false, cntTry = 0, randID = random_num (1, TotalHats - 1)    while (cntTry < maxTry && foundrnd == false) {        randID = random_num (1, TotalHats - 1)        cntTry += 1        if (HATREST[randID] == HAT_ALL) foundrnd = true        if (HATREST[randID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) foundrnd = true        if ((get_user_team(id) != 0) && HATREST[CurrentHat[id]] == get_user_team(id) + 1) foundrnd = true    }    if (foundrnd == true) { //If a valid random hat is found, apply it.        Set_Hat(id, randID , 0)    } else {                //Otherwise, don't use any hat.        Set_Hat(id, 0, 0)       }    return PLUGIN_CONTINUE} public Set_Hat(player, imodelnum, targeter) {    new name[32]    new tmpfile[101]    format(tmpfile, 100, "%s/%s", modelpath, HATMDL[imodelnum])    get_user_name(player, name, 31)    if (imodelnum == 0) {        if(g_HatEnt[player] > 0) {            fm_set_entity_visibility(g_HatEnt[player], 0)        }        if (targeter != 0) {            client_print(targeter, print_chat, "[%s] Removed hat from %s",PLUG_TAG,name)        }    } else if (file_exists(tmpfile)) {        if(g_HatEnt[player] < 1) {            g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))            if(g_HatEnt[player] > 0) {                set_pev(g_HatEnt[player], pev_movetype, MOVETYPE_FOLLOW)                set_pev(g_HatEnt[player], pev_aiment, player)                set_pev(g_HatEnt[player], pev_rendermode,   kRenderNormal)                engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)            }        } else {            engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)        }        glowhat(player)        CurrentHat[player] = imodelnum        if (targeter != 0) {            client_print(targeter, print_chat, "[%s] Set %s on %s",PLUG_TAG,HATNAME[imodelnum],name)        }    }} public command_load() {    if(file_exists(HatFile)) {        HATMDL[0] = ""        HATNAME[0] = "None"        TotalHats = 1        new TempCrapA[2]        new sfLineData[128]        new file = fopen(HatFile,"rt")        while(file && !feof(file)) {            fgets(file,sfLineData,127)                        // Skip Comment ; // and Empty Lines             if (sfLineData[0] == ';' || strlen(sfLineData) < 1 || (sfLineData[0] == '/' && sfLineData[1] == '/')) continue                        // BREAK IT UP!            parse(sfLineData, HATMDL[TotalHats], 25, HATNAME[TotalHats], 25, TempCrapA, 1)                        if (TempCrapA[0] == 'A' || TempCrapA[0] == '1') {                HATREST[TotalHats] = HAT_ADMIN            } else if (TempCrapA[0] == 'T' || TempCrapA[0] == '2') {                HATREST[TotalHats] = HAT_TERROR            } else if (TempCrapA[0] == 'C' || TempCrapA[0] == '3') {                HATREST[TotalHats] = HAT_COUNTER            } else {                HATREST[TotalHats] = HAT_ALL            }            TotalHats += 1            if(TotalHats >= MAX_HATS) {                server_print("[%s] Reached hat limit",PLUG_TAG)                break            }        }        if(file) fclose(file)    }    MenuPages = floatround((TotalHats / 8.0), floatround_ceil)    server_print("[%s] Loaded %i hats, and Generated %i pages",PLUG_TAG,TotalHats,MenuPages)}  menucolor(id, ItemID, MnuClr[3]) {    //If its the hat they currently have on    if (ItemID == CurrentHat[id]) {        MnuClr = "\d"        return    }    if (HATREST[ItemID] != HAT_ALL) {        //If its an AdminHat&They are NOT an admin        if (HATREST[ItemID] == HAT_ADMIN && get_pcvar_num(P_AdminHats) == 1) {            if (get_user_flags(id) & PLUG_ADMINB) {                MnuClr = "\y"            } else {                MnuClr = "\r"            }        //If this is a hat set for there team or not        } else if (HATREST[ItemID] != get_user_team(id) + 1) {            MnuClr = "\r"        } else {            MnuClr = "\y"        }    } else {        MnuClr = "\w"    }    return} glowhat(id) {    if (!pev_valid(g_HatEnt[id])) return    if (get_pcvar_num(P_Glow) != 0) {   //If Glowing Hats Are Enabled        set_pev(g_HatEnt[id], pev_renderfx, kRenderFxGlowShell)        if (get_pcvar_num(P_Glow) == 2) {   //If Not Team Specific, Use Player Glow On Hat            new Float:curcolors[3], Float:curamt            pev(id, pev_rendercolor, curcolors)            pev(id, pev_renderamt, curamt)            set_pev(g_HatEnt[id], pev_rendercolor, curcolors)            set_pev(g_HatEnt[id], pev_renderamt, curamt)        } else {                                //If Team Specific, Red=T, Blue=CT            if (get_user_team(id) == 1) {                set_pev(g_HatEnt[id], pev_rendercolor, {200.0, 0.0, 0.0})            } else if (get_user_team(id) == 2) {                set_pev(g_HatEnt[id], pev_rendercolor, {0.0, 0.0, 200.0})            }            set_pev(g_HatEnt[id], pev_renderamt,    50.0)        }    } else {        set_pev(g_HatEnt[id], pev_renderfx, kRenderFxNone)        set_pev(g_HatEnt[id], pev_renderamt,    0.0)    }    fm_set_entity_visibility(g_HatEnt[id], 1)    return} forcehat(id, forceID) {    if (forceID == 0) forceID = get_pcvar_num(P_ForceHat)    if (forceID != 0) {        if (forceID <= TotalHats - 1) {            if (forceID != CurrentHat[id]) Set_Hat(id, forceID, 0)        } else {            set_pcvar_num(P_ForceHat, 0)        }    }}
Last edited by ShoX on 2011 Feb 24 18:17, edited 1 time in total.

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

Re: Reikia Kad Pakoreguotumete

Post by aaarnas »

Šiaip labai jau daug prašai. Čia priklauso prie pluginų prašymų, o ne scripting pagalbos. Be to per naujo įkelk kodą, nes simbolius pavertė kodais.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
ShoX
Gana aktyvus vartotojas
Posts: 217
Joined: 2010 Nov 15 19:45
Location: Lithuania

Re: Reikia Kad Pakoreguotumete

Post by ShoX »

Ikeliau :/ :help:

Kaip supratau niekas nepades...

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: Reikia Kad Pakoreguotumete

Post by xFrostas »

Šiaip labai jau daug prašai
:)

gal jai kažkam užmokėtum, tai ir padarytu, galėčiau aš, bet esu perdaug užsiėmęs savo reikalais.

User avatar
ShoX
Gana aktyvus vartotojas
Posts: 217
Joined: 2010 Nov 15 19:45
Location: Lithuania

Re: Reikia Kad Pakoreguotumete

Post by ShoX »

Nu nelabai jau cia daug daugiau istrinti manau tai nera sunku o daugiau ten pakeisti iveta ir padaryti kad ji mestu po tam tikro laiko,sakyciau kodas ilgas o darbo mano manymu nedaug.

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: Reikia Kad Pakoreguotumete

Post by xFrostas »

tavo manymu, o mano manymu tu nescriptini? todėl nepatariu spėlioti.

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests