# All configuration is done from inside bbuy_config.py import es, popuplib, playerlib, gamethread, usermsg, random, bbuy_config from bbuy_config import * info = es.AddonInfo() info['name'] = "bbuy" info['version'] = "2.3" info['author'] = "Bonbon AKA: Bonbon367" info['url'] = "http://addons.eventscripts.com/addons/view/bbuy" info['description'] = "A Zombie buy" es.ServerVar('bbuy_version', info['version'], 'bbuy made by Bonbon AKA Bonbon367').makepublic() weapon_damage = {'5.56': 0, '5.7': 0, '9mm': 0, 'buckshot': 0, '.45': 0, '.357': 0, '.50': 0} upgrademenu = None def load2(): global upgrademenu mmenu = popuplib.easymenu('Bonbon Buy', '_popup_choice', mm_select) pmenu = popuplib.easymenu('Pistols', '_popup_choice', p_select) imenu = popuplib.easymenu('Items', '_popup_choice', i_select) smgmenu = popuplib.easymenu('Smgs', '_popup_choice', smg_select) smenu = popuplib.easymenu('Shotguns', '_popup_choice', s_select) rmenu = popuplib.easymenu('Rifles', '_popup_choice', r_select) snipmenu = popuplib.easymenu('Snipers', '_popup_choice', snip_select) weapmenu = popuplib.easymenu('Weapons', '_popup_choice', weap_select) upgrademenu = popuplib.easymenu('Upgrades', '_popup_choice', upgrade_select) speedmenu = popuplib.easymenu('Speed', '_popup_choice', speed_select) propmenu = popuplib.easymenu('Props', '_popup_choice', prop_select) gravmenu = popuplib.easymenu('Gravity', '_popup_choice', gravity_select) healthmenu = popuplib.easymenu('Health', '_popup_choice', health_select) mmenu.addoption('Weapons', 'Weapons') if not es.exists('saycommand', '!buy'): es.regsaycmd('!buy', 'bbuy/do_buy') if not es.exists('clientcommand', '!buy'): es.regclientcmd('!buy', 'bbuy/do_buy') if not es.exists('saycommand', '!sell'): es.regsaycmd('!sell', 'bbuy/sell') if not es.exists('clientcommand', '!sell'): es.regclientcmd('!sell', 'bbuy/sell') for a in enabled_menus['Weapons']: if enabled_menus['Weapons'][a]: weapmenu.addoption(a, a) for a in enabled_menus['Bonbon Buy']: if enabled_menus['Bonbon Buy'][a]: mmenu.addoption(a, a) for b in guns['Pistols']: if guns['Pistols'][b]['Enabled']: pmenu.addoption(b, '%s$%s'%(b[0].capitalize() + b[1:].ljust(15), guns['Pistols'][b]['Cost'])) for c in guns['Smgs']: if guns['Smgs'][c]['Enabled']: smgmenu.addoption(c, '%s$%s'%(c[0].capitalize() + c[1:].ljust(15), guns['Smgs'][c]['Cost'])) for d in guns['Items']: if guns['Items'][d]['Enabled']: imenu.addoption(d, '%s$%s'%(d[0].capitalize() + d[1:].ljust(15), str(guns['Items'][d]['Cost']))) for e in guns['Shotguns']: if guns['Shotguns'][e]['Enabled']: smenu.addoption(e, '%s$%s'%(e[0].capitalize() + e[1:].ljust(15), str(guns['Shotguns'][e]['Cost']))) for f in guns['Rifles']: if guns['Rifles'][f]['Enabled']: rmenu.addoption(f, '%s$%s'%(f[0].capitalize() + f[1:].ljust(15), str(guns['Rifles'][f]['Cost']))) for g in guns['Snipers']: if guns['Snipers'][g]['Enabled']: snipmenu.addoption(g, '%s$%s'%(g[0].capitalize() + g[1:].ljust(15), str(guns['Snipers'][g]['Cost']))) for a in (pmenu, smgmenu, smenu, rmenu, snipmenu): a.submenu(0, 'Weapons') for b in (imenu, upgrademenu, weapmenu, speedmenu, propmenu, gravmenu, healthmenu): b.submenu(0, 'Bonbon Buy') for h in upgrade_cost: upgrademenu.addoption(h, '%s$%s'%(h.ljust(15), str(upgrade_cost[h]))) for i in other_cost['Speed']: speedmenu.addoption(i, '%s$%s'%(i[0].capitalize() + i[1:].ljust(15), str(other_cost['Speed'][i]))) for j in other_cost['Gravity']: gravmenu.addoption(j, '%s$%s'%(j[0].capitalize() + j[1:].ljust(15), str(other_cost['Gravity'][j]))) for k in other_cost['Props']: propmenu.addoption(k, '%s$%s'%(k.split('/')[-1][0].capitalize() + k.split('/')[-1][1:].ljust(15), str(other_cost['Props'][k]))) for l in other_cost['Health']: healthmenu.addoption(l, '%s$%s'%(l[0].capitalize() + l[1:].ljust(15), str(other_cost['Health'][l]))) def unload(): if es.exists('saycommand', '!buy'): es.unregsaycmd('!buy') if es.exists('clientcommand', '!buy'): es.unregclientcmd('!buy') if es.exists('clientcommand', '!sell'): es.unregclientcmd('!sell') if es.exists('saycommand', '!sell'): es.unregsaycmd('!sell') for a in ('Pistols', 'Items', 'Smgs', 'Shotguns', 'Rifles', 'Snipers', 'Health', 'Speed', 'Props', 'Gravity'): popuplib.delete(a) def mm_select(userid, choice, popupid): popuplib.send(choice, userid) def p_select(userid, choice, poupid): # Pistols menu(userid).buy(choice, 1) def i_select(userid, choice, popupid): # Items menu(userid).buy(choice, 1) def smg_select(userid, choice, popupid): # Smgs menu(userid).buy(choice, 1) def s_select(userid, choice, popupid): # Shotguns menu(userid).buy(choice, 1) def r_select(userid, choice, popupid): # Rifles menu(userid).buy(choice, 1) def snip_select(userid, choice, popupid): # Snipers menu(userid).buy(choice, 1) def spec_select(userid, choice, popupid): # Specials menu(userid).buy(choice, 1) def weap_select(userid, choice, poupid): # Weapon menu popuplib.send(choice, userid) def speed_select(userid, choice, popupid): menu(userid).buy(choice, 1) def prop_select(userid, choice, popupid): menu(userid).buy(choice, 1) def gravity_select(userid, choice, popupid): menu(userid).buy(choice, 1) def health_select(userid, choice, popupid): menu(userid).buy(choice, 1) def do_buy(): userid = es.getcmduserid() if es.getargc() == 1: popuplib.send('Bonbon Buy', userid) else: menu(userid).buy(es.getargv(1).lower(), 0) def upgrade_select(userid, choice, popupid): if playerlib.getPlayer(userid).get('cash') >= upgrade_cost[choice]: if not weapon_damage[choice]: es.msg('#multi', '#green[#lightgreenBBuy#green]: #lightgreen%s #greenhas upgraded #lightgreen%s#green! Everyone thank him and/or her'%(playerlib.getPlayer(userid).get('name'), choice)) global weapon_damage weapon_damage[choice] = damage[choice] playerlib.getPlayer(userid).set('cash', playerlib.getPlayer(userid).get('cash') - upgrade_cost[choice]) upgrademenu.setoption(choice, '%s -- Done'%choice) else: es.tell(userid, '#multi', '#green[#lightgreenBBuy#green]: Sorry, #lightgreen%s#green is already upgraded'%choice) else: es.tell(userid, '#multi', '#green[#lightgreenBBuy#green]: You do not have enough money to buy #lightgreen%s#green!'%upgrade_cost[choice]) def sell(): menu(es.getcmduserid()).sell() class menu: def __init__(self, userid): self.userid = userid def buy(self, weapon, from_menu): if self.return_class(weapon): weapon_class = self.return_class(weapon) if not playerlib.getPlayer(self.userid).get('isdead'): if playerlib.getPlayer(self.userid).get('cash') >= guns[weapon_class][weapon]['Cost']: if not weapon in ['nvgs', 'hegrenade', 'flashbang', 'primary', 'secondary']: if not playerlib.getPlayer(self.userid).get(self.weaponslot(weapon)) == '0': es.sexec(self.userid, 'use weapon_%s'%playerlib.getPlayer(self.userid).get(self.weaponslot(weapon))) es.cexec(self.userid, 'drop') es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You have purchased a #lightgreen%s!'%weapon) playerlib.getPlayer(self.userid).set('cash', playerlib.getPlayer(self.userid).get('cash') - guns[weapon_class][weapon]['Cost']) if weapon == 'primary': playerlib.getPlayer(self.userid).set('ammo', [1, 2000]) playerlib.getPlayer(self.userid).set('clip', [1, playerlib.getPlayer(self.userid).get('clip', 'primary') * 2]) elif weapon == 'secondary': playerlib.getPlayer(self.userid).set('ammo', [2, 2000]) playerlib.getPlayer(self.userid).set('clip', [2, playerlib.getPlayer(self.userid).get('clip', 'secondary') * 2]) else: gamethread.delayed(0.1, playerlib.getPlayer(self.userid).set, ('ammo', ['weapon_%s'%weapon, 1000])) es.server.queuecmd('es_xgive %s %s'%(self.userid, self.return_weapon(weapon))) if not weapon == 'nvgs': if not playerlib.getPlayer(self.userid).get('primary') == '0': es.server.queuecmd('playerset ammo %s 1 1000'%(self.userid)) gamethread.delayed(1, es.server.queuecmd, 'playerset ammo %s 1 1000'%self.userid) if not playerlib.getPlayer(self.userid).get('secondary') == '0': es.server.queuecmd('playerset ammo %s 2 1000'%(self.userid)) gamethread.delayed(1, es.server.queuecmd, 'playerset ammo %s 2 1000'%self.userid) else: es.cexec(self.userid, 'play buttons/weapon_cant_buy') es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You need #lightgreen%s #green for a #lightgreen%s'%(guns[weapon_class][weapon]['Cost'], weapon)) else: es.cexec(self.userid, 'play buttons/weapon_cant_buy') es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You must be alive to use this feature!') elif self.return_special_class(weapon): if not playerlib.getPlayer(self.userid).get('isdead'): i_class = self.return_special_class(weapon) if playerlib.getPlayer(self.userid).get('cash') >= other_cost[i_class][weapon]: player = playerlib.getPlayer(self.userid) if i_class == 'Speed': player.set('speed', weapon) elif i_class == 'Gravity': es.server.queuecmd('est_setgravity %s %s'%(self.userid, int(weapon) / 100.0)) elif i_class == 'Props': es.server.queuecmd('es_prop_physics_create %s %s'%(self.userid, weapon)) elif i_class == 'Health': player.set('health', player.get('health') + int(weapon)) player.set('cash', player.get('cash') - int(other_cost[i_class][weapon])) es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You have purchased #lightgreen%s!'%(str(weapon) + ' ' + i_class if not i_class == 'Props' else str(weapon))) else: es.cexec(self.userid, 'play buttons/weapon_cant_buy') es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You need #lightgreen%s #green for a #lightgreen%s'%(other_cost[i_class][weapon], weapon)) else: es.cexec(self.userid, 'play buttons/weapon_cant_buy') es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: You must be alive to use this feature!') else: es.tell(self.userid, '#multi', '#green[#lightgreenBBuy#green]: Sorry, #lightgreen%s#green was not found in the menu!'%weapon) es.cexec(self.userid, 'play buttons/weapon_cant_buy') def return_class(self, weapon): for a in guns: if weapon in guns[a]: return a return None def return_weapon(self, weapon): if weapon in ['nvgs', 'assaultsuit']: return 'item_%s'%weapon return 'weapon_%s'%weapon def weaponslot(self, weapon): if weapon.lower() in ['glock', 'usp', 'p228', 'deagle', 'fiveseven', 'elite']: return 'secondary' return 'primary' def sell(self): if bbuy_enable_sell: if not playerlib.getPlayer(self.userid).get('isdead'): es.ServerVar('gun').set(0) es.server.queuecmd('est_getgun gun %s'%self.userid) gamethread.delayed(0.05, sell2, self.userid) def return_special_class(self, item): for a in other_cost: if item in other_cost[a]: return a return None def sell2(userid): if not str(es.ServerVar('gun')) == '0': if not playerlib.getPlayer(userid).get('isdead'): if menu(userid).return_class(str(es.ServerVar('gun')).replace('weapon_', '')) and not menu(userid).return_class(str(es.ServerVar('gun')).replace('weapon_', '')) == 'Items': playerlib.getPlayer(userid).set('cash', playerlib.getPlayer(userid).get('cash') + guns[menu(userid).return_class(str(es.ServerVar('gun')).replace('weapon_', ''))][str(es.ServerVar('gun')).replace('weapon_', '')]['Sellprice']) es.tell(userid, '#multi', '#green[#lightgreenBBuy#green]: You have sold your weapon for #lightgreen%s'%guns[menu(userid).return_class(str(es.ServerVar('gun')).replace('weapon_', ''))][str(es.ServerVar('gun')).replace('weapon_', '')]['Sellprice']) es.server.queuecmd('est_removeweapon %s %s'%(userid, es.ServerVar('gun'))) es.ServerVar('gun').set(0) def round_end(ev): for userid in playerlib.getUseridList('#all'): gamethread.cancelDelayed('roid_%s'%userid) def round_start(ev): es.msg('#multi', '#green[#lightgreenBBuy#green]: Type #lightgreen!buy#green to access the buy menu or #lightgreen!buy #green for a shortcut') def es_map_start(ev): global weapon_damage for a in weapon_damage: weapon_damage[a] = 0 upgrademenu = popuplib.easymenu('Upgrades', '_popup_choice', upgrade_select) for h in upgrade_cost: upgrademenu.addoption(h, '%s$%s'%(h.ljust(15), str(upgrade_cost[h]))) def player_hurt(ev): if enabled_menus['Bonbon Buy']['Upgrades']: if menu(ev['userid']).return_class(str(ev['weapon']).replace('weapon_', '')): multiplier = weapon_damage[guns[menu(ev['userid']).return_class(ev['weapon'].replace('weapon_', ''))][ev['weapon'].replace('weapon_', '')]['Ammo']] if menu(ev['userid']).return_class(ev['weapon'].replace('weapon_', '')) and not ev['weapon'] == 'point_hurt': if float(multiplier) > 0: es.server.queuecmd('damage %s %s 32 %s'%(ev['userid'], int(ev['dmg_health']) * float(multiplier), ev['attacker'])) def popup_select(ev): if str(ev['popupname']) in ('Bonbon Buy', 'Pistols', 'Smgs', 'Shotguns', 'Rifles', 'Snipers', 'Items', 'Upgrades', 'Speed', 'Gravity', 'Health', 'Props'): es.cexec(ev['userid'], 'play buttons/button14') gamethread.delayed(0, load2)