Page 1 of 1

Deathrun Vip

Posted: 2012 Jun 09 12:11
by Tautviuxas
Sveiki, iškilo tokia problema pasidariau menu, kad paspaudus m raide atidarytu deathrun vipmenu ir t.t.
Taciau dabar gaunasi taip: zmogus atidaro menu, ir paspaudzia Deathrun Vipmenu ir jis viska gali imti bet kiek kartu per round ir betkada. Gal galite padaryti, kad zmogus galetu imti daigtus tik 1 karta per round ir tik viena daigta?

Code: Select all

#include <amxmodx>#include <amxmisc>#include <fun>#include <hamsandwich>#include <cstrike>#include <fakemeta>#include <xs>#include <engine> #define FLAG ADMIN_LEVEL_H new const VIP[] = "DeathRunVip"new const VIP_MODEL[] = "models/player/DeathRunVip/DeathRunVip.mdl" new const MENU_POPUP[] = "misc/DeathRunVip/vip_menu_popup.wav"new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav" #define TASKID_SHOWHUD  2931#define TASKID_MODEL        3810  new player_model[33][32]new Float: g_counternew bool: g_model[33]new g_hudsyncnew cvar_gravitynew cvar_speednew SayTxT new gCylinderSprite; public plugin_precache(){    precache_model(VIP_MODEL)        precache_sound(VIP_CONNECT)     precache_sound(MENU_POPUP)    precache_sound(MENU_OK)     gCylinderSprite = precache_model( "sprites/shockwave.spr" );} public plugin_init(){    register_plugin("Deathrun V.I.P", "1.0", "DoviuX")     cvar_gravity = register_cvar("dr_vip_gravity", "500")    cvar_speed = register_cvar("dr_vip_speed", "500")     RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)    register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")    register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")     g_hudsync = CreateHudSyncObj()    SayTxT = get_user_msgid("SayText");} public client_connect(client){    if(get_user_flags(client) & FLAG)    {        client_cmd(client, "spk %s", VIP_CONNECT)             new name[32];            get_user_name(client, name, 31);            set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );            show_hudmessage( 0, "Vip %s is connecting to the server!.", name);    }} public bacon_spawn(id){    if (!is_user_alive(id))        return        static CsTeams: team ; team = cs_get_user_team(id)        if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))    {            new iOrigin[ 3 ];        get_user_origin( id, iOrigin );         Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );        Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );        Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );     copy(player_model[id], 31, VIP)            new currentmodel[32];    fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);            if(!equal(currentmodel, player_model[id]))    {        Task_Model(id + TASKID_MODEL)        g_counter += 0.1;    }     if(!task_exists(TASKID_SHOWHUD + id))       set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)     set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)     }    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))    {         new iOrigin[ 3 ];        get_user_origin( id, iOrigin );         Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );        Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );        Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );     copy(player_model[id], 31, VIP)     strip_user_weapons(id)    give_item(id, "weapon_knife")            new currentmodel[32];    fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);            if(!equal(currentmodel, player_model[id]))    {        Task_Model(id + TASKID_MODEL)        g_counter += 0.1;    }     if(!task_exists(TASKID_SHOWHUD + id))       set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)     set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25)     }} public T_menu(id){    if(!is_user_alive(id))       return PLUGIN_HANDLED     client_cmd(id, "spk %s", MENU_POPUP)                new gmenu = menu_create("\r[\yCSPRO.LT\r]\w VIPMENU" , "Vip_Handler");        menu_additem(gmenu ,"\r255 \wGyvybes", "1" , 0);        menu_additem(gmenu ,"\r255 \wSarvai", "2" , 0);        menu_additem(gmenu ,"\wGravitacija", "3" , 0);        menu_additem(gmenu ,"\wGreitis", "4" , 0);        menu_additem(gmenu ,"\wDeagle su \r2 kulkom", "5" , 0);        menu_additem(gmenu ,"\wHe granata", "6" , 0);        menu_additem(gmenu ,"\wNaktinis matymas (\rTamsiems maps\w)", "7" , 0);         menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);         menu_display(id , gmenu , 0);     return PLUGIN_CONTINUE} public CT_menu(id){    if(!is_user_alive(id))       return PLUGIN_HANDLED            client_cmd(id, "spk %s", MENU_POPUP)         new gmenu = menu_create("\r[\yCSPRO.LT\r]\w VIPMENU" , "VipCt_Handler");        menu_additem(gmenu ,"\r255 \wGyvybes", "1" , 0);        menu_additem(gmenu ,"\r255 \wSarvai", "2" , 0);        menu_additem(gmenu ,"\wGravitacija", "3" , 0);        menu_additem(gmenu ,"\wGreitis", "4" , 0);        menu_additem(gmenu ,"\wHe granata", "5" , 0);        menu_additem(gmenu ,"\wNaktinis matymas (\rTamsiems maps\w)", "6" , 0);         menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);         menu_display(id , gmenu , 0);     return PLUGIN_CONTINUE} public Vip_Handler(id, gmenu, item, player){   if (item == MENU_EXIT)   {      menu_destroy(gmenu)      return PLUGIN_HANDLED   }    new data[6], iName[64]   new access, callback   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)      new key = str_to_num(data)      switch(key)   {      case 1:      {    client_cmd(id, "spk %s", MENU_OK)     set_user_health(id, 255)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /w255 /gGyvybes!")      }       case 2:      {    client_cmd(id, "spk %s", MENU_OK)     set_user_armor(id, 255)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /w255 /gSarvus!")      }       case 3:      {    client_cmd(id, "spk %s", MENU_OK)     new Float: gravity    gravity = get_pcvar_float(cvar_gravity) / 800     set_user_gravity(id, gravity)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /gGravitacija!")      }            case 4:      {    new Float: speed    speed   = get_pcvar_float(cvar_speed)     client_cmd(id, "spk %s", MENU_OK)     set_user_maxspeed(id, speed)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /gGreiti!")      }            case 5:      {    give_item(id, "weapon_deagle")     new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);    if(weapon_id)    {        cs_set_weapon_ammo(weapon_id, 2);    }     client_cmd(id, "spk %s", MENU_OK)     client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai deagle su /g2 /ykulkom!")      }            case 6:      {    give_item(id, "weapon_hegrenade")     client_cmd(id, "spk %s", MENU_OK)     client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /wsprogstancia /gHe /yGranata!")      }       case 7:      {    cs_set_user_nvg(id)     client_cmd(id, "spk %s", MENU_OK)     client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai Naktini matyma!")      }   }   menu_destroy(gmenu)   return PLUGIN_HANDLED;} public VipCt_Handler(id, gmenu, item, player){   if (item == MENU_EXIT)   {      menu_destroy(gmenu)      return PLUGIN_HANDLED   }    new data[6], iName[64]   new access, callback   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)      new key = str_to_num(data)      switch(key)   {      case 1:      {    client_cmd(id, "spk %s", MENU_OK)     set_user_health(id, 255)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /w255 /gGyvybes!")      }       case 2:      {    client_cmd(id, "spk %s", MENU_OK)     set_user_armor(id, 255)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /w255 /gSarvus!")      }       case 3:      {    client_cmd(id, "spk %s", MENU_OK)     new Float: gravity    gravity = get_pcvar_float(cvar_gravity) / 800     set_user_gravity(id, gravity)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /gGravitacija!")      }            case 4:      {    new Float: speed    speed   = get_pcvar_float(cvar_speed)     client_cmd(id, "spk %s", MENU_OK)     set_user_maxspeed(id, speed)    client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /gGreiti!")      }            case 5:      {    give_item(id, "weapon_hegrenade")     client_cmd(id, "spk %s", MENU_OK)     client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai /wsprogtancia /gHe /yGranata!")      }       case 6:      {    cs_set_user_nvg(id)     client_cmd(id, "spk %s", MENU_OK)     client_printcolor(player, "/g[V.I.P]/y: Tu pasirinkai Naktini matyma!")      }   }   menu_destroy(gmenu)   return PLUGIN_HANDLED;} public Task_ShowHUD(task){    new id = task - TASKID_SHOWHUD        if(!is_user_alive(id))        return PLUGIN_HANDLED        static health, armour    health = get_user_health(id)    armour = get_user_armor(id)        set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)    ShowSyncHudMsg(id, g_hudsync , ".::*Health: %d -|V.I.P|- Armour: %d*::.", health, armour)        set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)              return PLUGIN_CONTINUE} public client_PreThink(id){    if(is_user_alive(id))    {        if(get_user_flags(id) & FLAG)        {                        new oldbuttons = get_user_oldbutton(id);                                oldbuttons &= ~IN_JUMP;            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);        }    }}   public Task_Model(task){    new id = task - TASKID_MODEL         fm_set_user_model(id, player_model[id])} stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed ){    message_begin( MSG_PVS, SVC_TEMPENTITY, origin );     write_byte( TE_BEAMCYLINDER );    write_coord( origin[ 0 ] );    write_coord( origin[ 1 ] );    write_coord( origin[ 2 ] );    write_coord( origin[ 0 ] );    write_coord( origin[ 1 ] );    write_coord( origin[ 2 ] + addrad );    write_short( sprite );    write_byte( startfrate );    write_byte( framerate );    write_byte(life );    write_byte( width );    write_byte( amplitude );    write_byte( red );    write_byte( green );    write_byte( blue );    write_byte( brightness );    write_byte( speed );    message_end();} stock te_sprite(id, Float:origin[3], sprite, scale, brightness){    message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)    write_byte(TE_SPRITE)    write_coord(floatround(origin[0]))    write_coord(floatround(origin[1]))    write_coord(floatround(origin[2]))    write_short(sprite)    write_byte(scale)     write_byte(brightness)    message_end()} stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul){    new Float:fLen = xs_vec_len(fIn)    xs_vec_copy(fIn, fOut)        fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen    fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul} public fw_SetClientKeyValue(id, infobuffer, key[], value[]){       if (g_model[id] && equal(key, "model"))        return FMRES_SUPERCEDE        return FMRES_IGNORED} public fw_ClientUserInfoChanged(id, infobuffer){       if (!g_model[id])        return FMRES_IGNORED        new currentmodel[32];     fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);        if(!equal(currentmodel, player_model[id]))        fm_set_user_model(id, player_model[id])         return FMRES_IGNORED} stock fm_set_user_model(player, modelname[]){       engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)        g_model[player] = true} stock fm_get_user_model(player, model[], len){       engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)} stock fm_reset_user_model(player){             g_model[player] = false        dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))} stock client_printcolor(const id, const input[], any:...){    new count = 1, players[32];    static msg[191];    vformat(msg,190,input,3);    replace_all(msg,190,"/g","^4");// green txt    replace_all(msg,190,"/y","^1");// orange txt    replace_all(msg,190,"/ctr","^3");// team txt    replace_all(msg,190,"/w","^0");// team txt    if (id) players[0] = id; else get_players(players,count,"ch");    for (new i = 0; i < count; i++)        if (is_user_connected(players[i]))        {            message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);            write_byte(players[i]);            write_string(msg);            message_end();        }}   

Re: Deathrun Vip

Posted: 2012 Jun 09 17:57
by TETYYS
Ant itemo pasiemimo nustatyk sukurtą bool'ą į true, kitą kartą pasiimdamas dalyką tikrink ar true, jei taip tai nedauk, o ant raund starto ir vėl nustatyk false, tai gi paprasta.

Re: Deathrun Vip

Posted: 2012 Jun 15 09:08
by Tautviuxas
Gal galetumei padeti, arba sutvarkyti, jai nesunku?

Re: Deathrun Vip

Posted: 2012 Jun 15 09:45
by InvIs
Jei visiškai nesupranti apie scriptingą, kam tada išvis lendi? Čia scripting pagalba ir tau gali padėti tik iš dalies arba paaiškinti tai ko nesupranti. Darytis turi pats.

Re: Deathrun Vip

Posted: 2012 Jun 15 12:36
by Tautviuxas
Kam rasai posta, jai tavo pagalbos ir nuomones niekas neprase, as prasau pagalbos zmoniu, gal bus kas pades man, kam yra nesunku. Jai bandai primesti kazka, geriau isvis nerasyk.

Re: Deathrun Vip

Posted: 2012 Jun 15 13:46
by KamiN
Pagrindinis diskusijų puslapis » Scriptingas » Scripting pagalba
Ant itemo pasiemimo nustatyk sukurtą bool'ą į true, kitą kartą pasiimdamas dalyką tikrink ar true, jei taip tai nedauk, o ant raund starto ir vėl nustatyk false
Tau pasakė ką daryt. Jei tu nori, kad tau kitas žmogus redaguotų pluginą ne tam forume temą kuri.