├── resources └── Musiness Banager │ └── Translations │ ├── zh.txt │ ├── ko.txt │ ├── es.txt │ ├── pl.txt │ ├── de.txt │ └── fr.txt └── MusinessBanagersource.lua /resources/Musiness Banager/Translations/zh.txt: -------------------------------------------------------------------------------- 1 | @Author=zzzz#5116 2 | @Version=0.3.2 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="!, 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=地堡 15 | BUSINESS=产业 16 | MCBUSINESS=摩托帮产业 17 | WAREHOUSE=仓库 18 | NIGHTCLUB=夜总会 19 | NIGHTCLUBSAFE=夜总会保险箱 20 | SPECIALCARGO=特种货物 21 | SELLMISSION=出售任务 22 | BUYMISSION=购买任务 23 | START=开始 24 | MONEY=金钱 25 | STOCK=库存 26 | SUPPLIES=补给品 27 | CRATES=板条箱 28 | PRODUCT=产品 29 | INFOOVERLAY=信息显示 30 | TERRORBYTE=恐霸 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=无法建立与远程的连接. 35 | HTTPINVALID=收到来自远程的无效响应! 这可能是由于 Cloudflare 或您的杀毒软件阻止了连接. 请使用VPN连接或切换网络. 36 | HTTPFAILSAFE=由于故障保护而激活自毁开关. 37 | SCRIPTOUTOFDATE=脚本过时了! 请重新启动脚本以从仓库中获取最新版本! 38 | 39 | KILLSWITCH_SAFELOOP=由于自毁开关,强制关闭了夜总会保险箱刷钱 40 | KILLSWITCH_SPECIALCARGO=由于自毁开关,强制关闭了特种货物 41 | KILLSWITCH_MAXSELLPRICE=由于自毁开关,强制关闭了最大出售价格 42 | KILLSWITCH_AUTOCOMPLETE=由于自毁开关,强制关闭了自动完成 43 | 44 | TRANSACTIONSSTUCK_TOAST=您的交易似乎卡住了. 请切换战局或重新启动游戏. 45 | BEALONE_TOAST=您的战局里有太多玩家! 正在卡单 46 | 47 | PREFIX_SAFELOOP=\n[保险箱刷钱] {1} 48 | PREFIX_SPECIALCARGO=\n[特种货物] {1} 49 | PREFIX_TOTALEARNED=总收入: {1} 50 | PREFIX_MOTD=\n今日信息: {1} 51 | ! {1} is a number, the amount of money earned in total. 52 | PREFIX={1} {2} 53 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 54 | 55 | INFO_SCWAREHOUSE=特种货物仓库 {1}: {2}/{3} 56 | ! {1} is slot {2} is amount {3} is capacity 57 | INFO_HUBBUSINESS=夜总会仓库 {1}: {2}/{3} 58 | ! {1} is name {2} is stock {3} is max capacity 59 | INFO_NCSAFE=夜总会保险箱 $: {1} 60 | ! {1} is value 61 | INFO_MCBUSINESS=摩托帮 {1}: {2}% | {3}/{4} 62 | ! {1} is name {2} is supplies {3} is product {4} is capacity 63 | INFO_BUNKER=地堡: {1}% | {2}/{3} 64 | ! {1} is supplies {2} is product {3} is capacity 65 | 66 | FINDSAFERWAYS=寻找更安全的赚钱方式 67 | FINDSAFERWAYS_DESC=在继续使用下面的金钱选项之前,请至少先阅读此内容. 68 | 69 | 70 | MAXSELLPRICE=最大销售价格 71 | MAXSELLPRICE_DESC=以尽可能高的价格出售您的{1},无论您有多少{2}. 72 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 73 | 74 | MONITOR=显示器 75 | 76 | MONITOR_EXTRA=显示器 {1} 77 | MONITOR_DESC=使用 {3} 显示您{2}的{1}数量. 78 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY]. {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 79 | 80 | BYPASSCOOLDOWN=绕过 {1} 冷却 81 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 82 | BYPASSCOOLDOWN_DESC=让您无需等待冷却即可{1}另一个新的{2}. 83 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 84 | 85 | SETPRODUCT=设置产品 86 | SETPRODUCT_DESC=直接设置您有多少此库存产品. 87 | SETPRODUCT_TOAST=产品已设置. 88 | 89 | MAXPRODUCTALL=最大产品 90 | MAXPRODUCTALL_DESC=将您的所有库存产品的数量设置为最大值. 91 | MAXPRODUCTALL_TOAST=已将所有库存产品的数量修改为最大值. 92 | 93 | MAXPRODUCTIONSPEED=最大生产速度 94 | MCMAXPRODUCTIONSPEED_DESC=立即生效. 95 | NCMAXPRODUCTIONSPEED_DESC=将在一个产品完成生产后生效. 96 | MAXPRODUCTIONSPEED_TOAST=已最大化生产速度. 97 | MAXPRODUCTIONSPEEDSLOW_TOAST=已最大化生产速度. 将在生产出一个产品后生效. 98 | 99 | MAXIMUMCAPACITY=最大容量 100 | MAXIMUMCAPACITY_DESC=影响您库存可持有的最大容量. 101 | MAXIMUMCAPACITY_TOAST=已修改最大容量. 102 | 103 | SUPPLYPRODUCTRATIO=原材料->产品比例 104 | SUPPLYPRODUCTRATIO_DESC=设置生产一种产品所需的原材料数量. 较低的值意味着更高的效率. 105 | SUPPLYPRODUCTRATIO_TOAST=比例已修改. 106 | 107 | RESUPPLY=补满原材料 108 | RESUPPLY_DESC=将立即免费为您的企业补满原材料. 109 | 110 | TRIGGERPRODUCTION=修改保险箱金额 111 | TRIGGERPRODUCTION_DESC=使每日收入立即生效. 112 | TRIGGERPRODUCTION_TOAST=每日收入已触发. 113 | 114 | ENFORCEEASIESTMISSION=执行最简单的任务 115 | ENFORCEEASIESTMISSION_DESC=这将确保您始终获得最快和最简单的出售任务. 虽然,如果您太快,您可能不会得到报酬? 116 | 117 | SPECIALCARGOLIST_DESC=注意: 出售价格的上限是 $600万. 118 | 119 | SPECIALCARGOWAREHOUSE_DESC=选择要显示和修改的仓库,因为您最多可以拥有5个仓库. 120 | SPECIALCARGOMONITOR_DESC=显示您在所选的仓库中有多少特种货物板条箱. 121 | SPECIALCARGONOWAREHOUSE=未购买仓库 122 | SPECIALCARGONOWAREHOUSE_DESC=您在此槽位中没有仓库! 123 | SPECIALCARGOMAXSELLPRICE_DESC=将您的特种货物板条箱的出售价格更改为$600万.\n保持启用以确保对未来出售的正确计算. 124 | OPENSCREEN=打开 {1} 屏幕 125 | OPENSCREEN_DESC=打开 {1} 屏幕. 126 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 127 | SELLACRATE=出售一个特种货物板条箱 128 | SELLACRATE_DESC=自动出售一个特种货物板条箱. 129 | 130 | NOTINSELECTEDWAREHOUSE_TOAST=您不在您当前选择的仓库里! 131 | 132 | AUTOCOMPLETE=自动完成 {1} 133 | AUTOCOMPLETE_DESC=使 {1} 自动完成. 134 | ! {1} could be [SELLMISSION] or [BUYMISSION] 135 | 136 | NCLIST_DESC=注意: 出售价格的上限是 $400万.\n不要试图"出售全部货物" 137 | NCREVENUE=每日收入 138 | NCREVENUE_DESC=编辑您夜总会获得的收入,无论人气值是多少. 139 | NCREVENUE_TOAST=每日收入已设置. 140 | 141 | NCMAXPOPULARITY=满夜总会人气 142 | NCMAXPOPULARITY_DESC=将您的夜总会人气设置为 100%. 143 | NCMAXPOPULARITY_TOAST=已最大化夜总会的人气. 144 | 145 | NCSAFELOOP=挂机循环刷钱 146 | NCSAFELOOP_DESC=在使用此功能前请先打开您的夜总会保险箱!\n将使您大约每4-5秒获得$30万. 147 | 148 | NCSAFELOOPDELAY=循环延迟 149 | NCSAFELOOPDELAY_DESC=将设置挂机循环刷钱在主要步骤之间等待多长时间(毫秒). 150 | NCSAFELOOPDELAY_TOAST=延迟修改. 151 | 152 | NCSAFELOOPTRANSACTIONTIMEOUT=交易超时 153 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=设置在因交易时间过长放弃之前等待的交易处理时间(毫秒). 154 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=交易超时已修改. 155 | 156 | NCSAFELOOPSTOP=设置到 $x 后停止 157 | NCSAFELOOPSTOP_DESC=当金钱到达设定的金额后将自动停止挂机循环刷钱. 158 | NCSAFELOOPSTOP_TOAST=限制设置. 159 | 160 | NCRESETSAFEVALUE=重置保险箱数值 161 | ! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 162 | NCRESETSAFEVALUE_DESC=如果您的夜总会保险箱高于$30万或低于$0,那该功能应该可以解决此问题. 163 | NCRESETSAFEVALUEWAIT_TOAST=正在重置您的夜总会保险箱,请稍候. 164 | NCRESETSAFEVALUESUCCESS_TOAST=您的夜总会保险箱现在应该已被重置. 165 | NCRESETSAFEVALUESKIP_TOAST=您的夜总会保险箱似乎没问题. 166 | 167 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=已达到最大值! 168 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=您似乎不在您的夜总会里. 在使用此功能之前,请确保您在您的夜总会里并打开了保险箱! 169 | NCSAFELOOPTIMEOUT_TOAST=好像您遇到了交易超时. 170 | NCSAFELOOPSAFEOVERLIMIT_TOAST=呃噢,好像保险箱超出了限制. 请使用 "重置保险箱数值" 然后重试. 171 | ! References [NCRESETSAFEVALUE] 172 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=事情没有按预期方式进行...如果您可以重现此问题,请到Discord报告. 173 | 174 | MCLIST_DESC=注意: 出售价格的上限是 $250万. 175 | 176 | BUNKERLIST_DESC=注意: 出售价格的上限是 $270万. 177 | 178 | TELEPORTTO=传送到 {1} 179 | TELEPORTTO_DESC=传送您到您的 {1}. 180 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 181 | 182 | NOTINNIGHTCLUB_TOAST=您不在您的夜总会! 183 | 184 | 185 | SHOWMOTDBLANK_TOAST=今日信息为空. 186 | WARNINGRISKY_TOAST=警告:此脚本中的所有功能都被认为是有风险的! 您有可能会在未来的未知天数内被封号(封号有随机延迟). 您已经被警告过. 187 | 188 | ! Nightclub 189 | ALREADYINPROPERTY=您已在您的 {1}! 190 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 191 | 192 | ! Nightclub categories 193 | HUBCARGO=运输货物 194 | HUBWEED=有机农产品 195 | HUBWEAPONS=体育用品 196 | HUBMETH=药学研究产品 197 | HUBCOCAINE=南美进口货 198 | HUBCASH=印钞 199 | HUBFORGERY=印刷品 200 | 201 | ! MC categories 202 | MCFORGERY=伪造证件 203 | MCWEED=大麻 204 | MCCASH=假钞 205 | MCMETH=冰毒 206 | MCCOCAINE=可卡因 207 | MCBUNKER=地堡 208 | 209 | ! Special Cargo 210 | SPECIALCARGONOMORECRATES=您的仓库里已经没有板条箱了! 211 | SPECIALCARGONEEDCEO=您目前在摩托帮里! 您需要成为CEO. 212 | SPECIALCARGOMAXCRATESOURCE=最大板条箱获取量 213 | SPECIALCARGOMAXCRATESOURCE_DESC=设置您的员工将交付的板条箱数量 214 | SPECIALCARGOSETDELIVERTIME=尽量缩短交货时间 215 | SPECIALCARGOSETDELIVERTIME_DESC=将员工交付之前经过的时间数值设置为零 -------------------------------------------------------------------------------- /resources/Musiness Banager/Translations/ko.txt: -------------------------------------------------------------------------------- 1 | @Author=HADES#6368 2 | @Version=1.0.0 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="!, 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=벙커 15 | BUSINESS=비즈니스 16 | MCBUSINESS=MC 비즈니스 17 | WAREHOUSE=창고 18 | NIGHTCLUB=나이트클럽 19 | NIGHTCLUBSAFE=나이트클럽 금고 20 | SPECIALCARGO=스페셜 카고 21 | SELLMISSION=판매 미션 22 | BUYMISSION=구매 미션 23 | START=시작 24 | MONEY=돈 25 | STOCK=재고 26 | SUPPLIES=보급품 27 | CRATES=상자 28 | PRODUCT=제품 29 | INFOOVERLAY=오버레이 정보 30 | TERRORBYTE=테러바이트 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=서버에 연결을 설정하지 못했습니다. 35 | HTTPINVALID=서버에서 잘못된 응답을 받았습니다! CloudFlare 또는 바이러스 백신으로 인해 연결이 차단되었을 수 있습니다. 새 VPN 연결을 설정하거나 네트워크를 전환하십시오. 36 | HTTPFAILSAFE=안전 장치로 인해 킬 스위치가 활성화 되었습니다. 37 | SCRIPTOUTOFDATE=스크립트가 오래되었습니다! 저장소에서 최신 정보를 얻으려면 스크립트를 다시 시작하십시오! 38 | 39 | KILLSWITCH_SAFELOOP=킬 스위치로 인해 나이트클럽 금고 AFK 머니 반복이 비활성화 되었습니다. 40 | KILLSWITCH_SPECIALCARGO=킬 스위치로 인해 스페셜 카고가 비활성화 되었습니다. 41 | KILLSWITCH_MAXSELLPRICE=킬 스위치로 인해 최대 판매 가격이 비활성화 되었습니다. 42 | KILLSWITCH_AUTOCOMPLETE=킬 스위치로 인해 자동 미션 완료가 비활성화 되었습니다. 43 | 44 | TRANSACTIONSSTUCK_TOAST=거래가 중단된 것 같습니다. 세션을 전환하거나 게임을 다시 시작하세요. 45 | BEALONE_TOAST=로비에 플레이어가 너무 많습니다! 1인 로비로 전환했습니다. 46 | 47 | PREFIX_SAFELOOP=[금고 반복] {1} 48 | PREFIX_SPECIALCARGO=[스페셜 카고] {1} 49 | PREFIX_TOTALEARNED=총 수입: {1} 50 | PREFIX_MOTD=MOTD: {1} 51 | ! {1} is a number, the amount of money earned in total. 52 | PREFIX={1} {2} 53 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 54 | 55 | INFO_SCWAREHOUSE=SC 창고 {1}: {2}/{3} 56 | ! {1} is slot {2} is amount {3} is capacity 57 | INFO_HUBBUSINESS=허브 {1}: {2}/{3} 58 | ! {1} is name {2} is stock {3} is max capacity 59 | INFO_NCSAFE=나이트클럽 금고 $: {1} 60 | ! {1} is value 61 | INFO_MCBUSINESS=MC {1}: {2}% | {3}/{4} 62 | ! {1} is name {2} is supplies {3} is product {4} is capacity 63 | INFO_BUNKER=벙커: {1}% | {2}/{3} 64 | ! {1} is supplies {2} is product {3} is capacity 65 | 66 | FINDSAFERWAYS=돈을 버는 더 안전한 방법 찾기 67 | FINDSAFERWAYS_DESC=아래에 있는 돈 옵션을 진행하기 전에 최소한 이 내용을 읽으십시오. 68 | 69 | RETREIVINGINFO=정보를 검색하는 중... 70 | SALESABUSE_DIVIDER=비즈니스 목록 71 | 72 | MAXSELLPRICE=최대 판매 가격 73 | MAXSELLPRICE_DESC=보유하고 있는 {2}의 양에 상관없이 가능한 최대 가격으로 {1}을(를) 판매하십시오. 74 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 75 | 76 | MONITOR=오버레이 정보 77 | 78 | MONITOR_EXTRA=모니터 {1} 79 | MONITOR_DESC={3}을(를) 사용하여 {2}에 있는 {1}의 양을 보여줍니다. 80 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 81 | 82 | BYPASSCOOLDOWN={1} 쿨다운 우회 83 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 84 | BYPASSCOOLDOWN_DESC=재사용 대기시간 없이 {1}과 {2}을 할 수 있습니다. 85 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 86 | 87 | SETPRODUCT=제품 설정 88 | SETPRODUCT_DESC=보유하고 있는 제품의 양을 직접 설정 89 | SETPRODUCT_TOAST=제품이 설정되었습니다. 90 | 91 | MAXPRODUCTALL=제품의 양을 최대로 설정 92 | MAXPRODUCTALL_DESC=모든 제품의 양을 최대로 설정합니다. 93 | MAXPRODUCTALL_TOAST=모든 제품이 최대치입니다. 94 | 95 | MAXPRODUCTIONSPEED=최대 생산 속도 96 | MCMAXPRODUCTIONSPEED_DESC=즉시 적용 97 | NCMAXPRODUCTIONSPEED_DESC=제품 생산이 완료된 후 적용됩니다 98 | MAXPRODUCTIONSPEED_TOAST=생산 속도가 최대화되었습니다. 99 | MAXPRODUCTIONSPEEDSLOW_TOAST=생산 속도가 최대화되었습니다. 상품이 생산되면 효력이 발생합니다. 100 | 101 | MAXIMUMCAPACITY=최대 용량 102 | MAXIMUMCAPACITY_DESC=보유할 수 있는 재고의 양을 변경시킵니다. 103 | MAXIMUMCAPACITY_TOAST=용량이 수정되었습니다. 104 | 105 | SUPPLYPRODUCTRATIO=공급->제품 비율 106 | SUPPLYPRODUCTRATIO_DESC=하나의 제품을 만드는 데 필요한 공급량을 설정합니다. 낮은 값은 더 나은 효율성을 의미합니다 107 | SUPPLYPRODUCTRATIO_TOAST=비율이 수정되었습니다. 108 | 109 | RESUPPLY=재보급 110 | RESUPPLY_DESC=무료로 즉시 귀하의 비즈니스에 보급품을 배달합니다. 111 | 112 | TRIGGERPRODUCTION=생산 시작 113 | TRIGGERPRODUCTION_DESC=생산을 즉시 시행합니다. 114 | TRIGGERPRODUCTION_TOAST=생산이 시작되었습니다. 115 | 116 | ENFORCEEASIESTMISSION=쉬운 판매 미션 117 | ENFORCEEASIESTMISSION_DESC=이렇게 하면 항상 가장 빠르고 쉬운 판매 임무를 얻을 수 있습니다. 하지만 너무 빠르면 돈을 받지 못할 수도 있습니다. 118 | 119 | SPECIALCARGOLIST_DESC=판매 가치의 상한선은 $600만입니다. 120 | 121 | SPECIALCARGOWAREHOUSE_DESC=5개의 창고를 소유할 수 있으므로 모니터링하고 수정할 창고를 선택하십시오. 122 | SPECIALCARGOMONITOR_DESC=선택한 창고에 있는 스페셜 카고 상자의 수를 표시합니다. 123 | SPECIALCARGONOWAREHOUSE=창고 없음 124 | SPECIALCARGONOWAREHOUSE_DESC=이 슬롯에는 창고가 없습니다! 125 | SPECIALCARGOMAXSELLPRICE_DESC=CEO의 스페셜 카고 상자의 판매 가격을 6백만 달러로 변경합니다. 향후 판매에 대한 적절한 계산을 위해 이 기능을 활성화된 상태로 유지하십시오. 126 | OPENSCREEN={1} 화면 열기 127 | OPENSCREEN_DESC={1} 화면을 엽니다. 128 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 129 | SELLACRATE=상자를 판매하려면 누르십시오 130 | SELLACRATE_DESC=스페셜 카고 상자 1개 자동 판매 131 | 132 | NOTINSELECTEDWAREHOUSE_TOAST=현재 선택한 창고에 없습니다! 133 | 134 | AUTOCOMPLETE={1} 자동 완료 135 | AUTOCOMPLETE_DESC={1}을(를) 자동으로 완료합니다. 136 | ! {1} could be [SELLMISSION] or [BUYMISSION] 137 | 138 | NCLIST_DESC=판매 가치의 상한선은 $400만입니다.\n'모두 판매'하려고 하지 마십시오. 139 | NCREVENUE=수익 140 | NCREVENUE_DESC=인기에 관계없이 나이트클럽이 얻는 수익을 수정합니다. 141 | NCREVENUE_TOAST=수익이 설정되었습니다. 142 | 143 | NCMAXPOPULARITY=최대 나이트 클럽 인기도 144 | NCMAXPOPULARITY_DESC=나이트클럽 인기도를 100%로 설정 145 | NCMAXPOPULARITY_TOAST=최대 나이트 클럽 인기도로 설정되었습니다. 146 | 147 | NCSAFELIST_DESC= 148 | 149 | NCSAFELOOP=AFK 머니 반복 150 | NCSAFELOOP_DESC=이 기능을 활성화하기 전에 나이트클럽 금고를 여세요!\n4-5초마다 $300,000를 수동적으로 얻을 수 있습니다. 151 | 152 | NCSAFELOOPDELAY=반복 지연 153 | NCSAFELOOPDELAY_DESC=주요 단계 사이에 AFK 반복을 대기하는 시간(밀리초)을 설정합니다. 154 | NCSAFELOOPDELAY_TOAST=지연 수정됨. 155 | 156 | NCSAFELOOPTRANSACTIONTIMEOUT=트랜잭션 시간 초과 157 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=트랜잭션이 처리될 때까지 기다리는 시간을 설정합니다. 158 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=트랜잭션 시간 초과가 수정되었습니다. 159 | 160 | NCSAFELOOPSTOP=$x 금액 후 반복 중지 161 | NCSAFELOOPSTOP_DESC=설정된 금액을 획득한 후 AFK 머니 반복을 중지합니다. 162 | NCSAFELOOPSTOP_TOAST=제한이 설정되었습니다. 163 | 164 | NCRESETSAFEVALUE=금고 값 재설정 165 | ! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 166 | NCRESETSAFEVALUE_DESC=나이트클럽 금고가 $300,000 이상 또는 $0 미만인 경우 해결해야 합니다. 167 | NCRESETSAFEVALUEWAIT_TOAST=나이트클럽 금고가 초기화되는 동안 잠시 기다려 주십시오. 168 | NCRESETSAFEVALUESUCCESS_TOAST=나이트클럽 금고가 초기화 되었습니다. 169 | NCRESETSAFEVALUESKIP_TOAST=나이트클럽 금고는 괜찮은 것 같습니다 170 | 171 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=최대값에 도달했습니다! 172 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=당신은 당신의 나이트 클럽에 없는 것 같습니다. 이 기능을 사용하기 전에 금고가 열려 있는 나이트클럽에 있는지 확인하십시오! 173 | NCSAFELOOPTIMEOUT_TOAST=트랜잭션 시간 초과에 도달한 것 같습니다. 174 | NCSAFELOOPSAFEOVERLIMIT_TOAST=어, 금고가 한계를 넘은 것 같군요. '금고 값 재설정'을 사용한 후 다시 시도하십시오. 175 | ! References [NCRESETSAFEVALUE] 176 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=문제가 발생했습니다... 이 문제를 재현할 수 있으면 신고해 주세요. 177 | 178 | MCLIST_DESC=판매 가치의 상한선은 $250만입니다. 179 | 180 | BUNKERLIST_DESC=판매 가치의 상한선은 $270만입니다. 181 | 182 | TELEPORTTO={1}로 텔레포트 183 | TELEPORTTO_DESC={1}으로 텔레포트합니다. 184 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 185 | 186 | NOTINNIGHTCLUB_TOAST=당신은 당신의 나이트 클럽에 없습니다! 187 | 188 | JOINDISCORD=디스코드 189 | SHOWMOTD=MOTD 표시 190 | SHOWMOTDBLANK_TOAST=MOTD가 비어 있습니다. 191 | WARNINGRISKY_TOAST=경고: 이 스크립트의 모든 기능은 위험한 것으로 간주됩니다! 알 수 없는 일 수 내에 금지될 가능성이 있습니다(금지는 무작위로 지연됨). 경고를 받았습니다. 192 | 193 | ! Nightclub 194 | ALREADYINPROPERTY=귀하는 이미 {1}에 있습니다! 195 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 196 | 197 | ! Nightclub categories 198 | HUBCARGO=패키지와 화물 199 | HUBWEED=유기농 작물 200 | HUBWEAPONS=사냥 용품 201 | HUBMETH=연구용 약품 202 | HUBCOCAINE=남미산 수입품 203 | HUBCASH=현금 창출 204 | HUBFORGERY=인쇄 복사 205 | 206 | ! MC categories 207 | MCFORGERY=위조서류 208 | MCWEED=마리화나 209 | MCCASH=위조지폐 210 | MCMETH=필로폰 211 | MCCOCAINE=코카인 212 | MCBUNKER=벙커 213 | 214 | ! Special Cargo 215 | SPECIALCARGONOMORECRATES=창고에 더 이상 상자가 없습니다! 216 | SPECIALCARGONEEDCEO=당신은 MC입니다! CEO가 되어야 합니다. 217 | SPECIALCARGOMAXCRATESOURCE=상자 배송량 최대화 218 | SPECIALCARGOMAXCRATESOURCE_DESC=직원이 배달할 상자의 양을 최대로 설정합니다. 219 | SPECIALCARGOSETDELIVERTIME=배달 시간 최소화 220 | SPECIALCARGOSETDELIVERTIME_DESC=직원이 배달할 시간을 0으로 설정합니다. -------------------------------------------------------------------------------- /resources/Musiness Banager/Translations/es.txt: -------------------------------------------------------------------------------- 1 | @Author=shsrk#7066 2 | @Version=0.3.2 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="! 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=Bunker 15 | BUSINESS=Negiocio 16 | MCBUSINESS=Negocio del club de moteros 17 | WAREHOUSE=Almacén 18 | NIGHTCLUB=Club nocturno 19 | NIGHTCLUBSAFE=Nightclub Safe 20 | SPECIALCARGO=Mercancía especial 21 | SELLMISSION=Misión de venta 22 | BUYMISSION=Misión de compra 23 | START=Empezar 24 | MONEY=Dinero 25 | STOCK=Stock 26 | SUPPLIES=Suministros 27 | CRATES=Mercancía 28 | PRODUCT=Producto 29 | INFOOVERLAY=Overlay de información 30 | TERRORBYTE=Terrorbyte 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=No se pudo establecer una conexión con el servidor. 35 | HTTPINVALID=Se recibió una respuesta invalida del servidor! Esto puede ser debido a Cloudflare o tu antivirus que está bloqueando la conexión. Por favor establece una nueva conexión en tu VPN y/o cambia de red. 36 | HTTPFAILSAFE=Desactivando algunas opciones debido a un fallo al conectarse con el servidor. 37 | SCRIPTOUTOFDATE=Script desactualizado! Por favor reinicia el script o instala la versión mas reciente desde el repositorio! 38 | 39 | KILLSWITCH_SAFELOOP=Killing Nightclub Safe AFK Money Loop due to killswitch 40 | ! This was edited to be more clear 41 | KILLSWITCH_SPECIALCARGO=Killing Special Cargo due to killswitch 42 | KILLSWITCH_MAXSELLPRICE=Killing Max Sell Price due to killswitch 43 | KILLSWITCH_AUTOCOMPLETE=Killing Auto Complete due to killswitch 44 | 45 | TRANSACTIONSSTUCK_TOAST=Parece que tus transacciones estan 'estancadas'. Por favor cambia de sesión o reinicia el juego. 46 | BEALONE_TOAST=Hay muchos jugadores en tu sesión! Ejecutando bealone 47 | 48 | PREFIX_SAFELOOP=[Loop de caja fuerte] {1} 49 | PREFIX_SPECIALCARGO=[Mercancía especial] {1} 50 | PREFIX_TOTALEARNED=Ganancias totales: {1} 51 | PREFIX_MOTD=Mensaje del dia: {1} 52 | ! {1} is a number, the amount of money earned in total. 53 | PREFIX={1} {2} 54 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 55 | 56 | INFO_SCWAREHOUSE=SC Almacén {1}: {2}/{3} 57 | ! {1} is slot {2} is amount {3} is capacity 58 | INFO_HUBBUSINESS=Hub {1}: {2}/{3} 59 | ! {1} is name {2} is stock {3} is max capacity 60 | INFO_NCSAFE=Caja fuerte del club nocturno $: {1} 61 | ! {1} is value 62 | INFO_MCBUSINESS=Club de moteros {1}: {2}% | {3}/{4} 63 | ! {1} is name {2} is supplies {3} is product {4} is capacity 64 | INFO_BUNKER=Bunker: {1}% | {2}/{3} 65 | ! {1} is supplies {2} is product {3} is capacity 66 | 67 | FINDSAFERWAYS=Encuentra formas más seguras de hacer dinero 68 | FINDSAFERWAYS_DESC=Por favor lee esto antes de usar las opciones de dinero de abajo 69 | RETREIVINGINFO=Consiguiendo información... 70 | 71 | SALESABUSE_DIVIDER=Abuso de ventas 72 | 73 | MAXSELLPRICE=Precio máximo de venta 74 | MAXSELLPRICE_DESC=Vende la cantidad maxima de {1}, sin importar la cantidad de {2} que tengas 75 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 76 | 77 | MONITOR=Monitorear 78 | 79 | MONITOR_EXTRA=Monitor {1} 80 | MONITOR_DESC=Muestra la cantidad de {1} que tienes en tu {2}, usando el {3} 81 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 82 | 83 | BYPASSCOOLDOWN=Eliminar tiempo de espera para la próxima {1} 84 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 85 | BYPASSCOOLDOWN_DESC=Te permite {1} otra {2} sin tener que esperar 86 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 87 | 88 | SETPRODUCT=Establecer producto 89 | SETPRODUCT_DESC=Establece directamente cuanto producto tienes 90 | SETPRODUCT_TOAST=Producto establecido. 91 | 92 | MAXPRODUCTALL=Maximizar cantidad de productos 93 | MAXPRODUCTALL_DESC=Establece todos tus productos al máximo 94 | MAXPRODUCTALL_TOAST=Todos los productos han sido maximizados. 95 | 96 | MAXPRODUCTIONSPEED=Velocidad de producción máxima 97 | MCMAXPRODUCTIONSPEED_DESC=Hace efecto instantáneamente 98 | NCMAXPRODUCTIONSPEED_DESC=Hace efecto despues de que una unidad se termine de producir 99 | MAXPRODUCTIONSPEED_TOAST=Velocidad de producción maximizada. 100 | MAXPRODUCTIONSPEEDSLOW_TOAST=Velocidad de producción 'maxeada'. Hará efecto una vez que se produzca una unidad. 101 | 102 | MAXIMUMCAPACITY=Capacidad máxima 103 | MAXIMUMCAPACITY_DESC=Afecta cuanto stock puedes tener 104 | MAXIMUMCAPACITY_TOAST=Capacidad modificada. 105 | 106 | SUPPLYPRODUCTRATIO=Proporción Suministro->Producto 107 | SUPPLYPRODUCTRATIO_DESC=Establece cuantos suministros se necesitan para fabricar un producto. Valores mas bajos significan una mayor eficiencia 108 | SUPPLYPRODUCTRATIO_TOAST=Proporción modificada. 109 | 110 | RESUPPLY=Reabastecer 111 | RESUPPLY_DESC=Entregará productos a tus negocios instantaneamente, sin costos 112 | 113 | TRIGGERPRODUCTION=Generar productos 114 | TRIGGERPRODUCTION_DESC=Activa la producción inmediatamente 115 | TRIGGERPRODUCTION_TOAST=Se generaron los productos. 116 | 117 | ENFORCEEASIESTMISSION=Forzar misiones de venta más fáciles 118 | ENFORCEEASIESTMISSION_DESC=Esta opción se asegurará de que siempre obtengas las misiones de venta más rapidas y fáciles. Aunque, si lo haces muy rapido tal vez no recibas ninguna paga ? 119 | 120 | SPECIALCARGOLIST_DESC=Nota: el límite de los precios de venta es $6m 121 | 122 | SPECIALCARGOWAREHOUSE_DESC=Selecciona en que almacén las opciones de monitorear y modificar van a ser usadas, ya que puedes tener hasta 5. 123 | SPECIALCARGOMONITOR_DESC=Muestra cuantas cajas de mercancía especial tienes en el almacén seleccionado 124 | SPECIALCARGONOWAREHOUSE=Ningún almacén 125 | SPECIALCARGONOWAREHOUSE_DESC=No tienes ningun almacén en este espacio! 126 | SPECIALCARGOMAXSELLPRICE_DESC=Cambia el precio de venta de la mercancía especial de tu CEO a $6m. Mantén esto activado para asegurar matemáticas propias en ventas futuras 127 | 128 | OPENSCREEN=Abrir pantalla del {1} 129 | OPENSCREEN_DESC=Abre la pantalla de tu {1} 130 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 131 | SELLACRATE=Presiona para vender mercancía 132 | SELLACRATE_DESC=Automáticamente vende 1 caja de mercancía especial 133 | 134 | NOTINSELECTEDWAREHOUSE_TOAST=No estás en el almacén seleccionado! 135 | 136 | AUTOCOMPLETE=Autocompletar {1} 137 | AUTOCOMPLETE_DESC=Hace que la {1} se complete automáticamente 138 | ! {1} could be [SELLMISSION] or [BUYMISSION] 139 | 140 | NCLIST_DESC=Nota: el límite de los precios de venta es $4m.\nNO intentes usar 'vender todos' 141 | NCREVENUE=Ingresos 142 | NCREVENUE_DESC=Edita los ingresos de tu club nocturno sin importar su popularidad 143 | NCREVENUE_TOAST=Ingresos establecidos. 144 | 145 | NCMAXPOPULARITY=Popularidad del club nocturno máxima 146 | NCMAXPOPULARITY_DESC=Establece la popularidad de tu club nocturno al 100% 147 | NCMAXPOPULARITY_TOAST=Popularidad máxima establecida. 148 | 149 | NCSAFELIST_DESC= 150 | 151 | NCSAFELOOP=Loop AFK de dinero 152 | NCSAFELOOP_DESC=Abre tu caja fuerte antes de activar esta opción!\nTe permite ganar $300k pasivamente cada ~4-5 segundos 153 | 154 | NCSAFELOOPDELAY=Tiempo de espera del Loop 155 | NCSAFELOOPDELAY_DESC=Establece cuanto tiempo (en milisegundos) espera el loop entre cada 'paso' 156 | NCSAFELOOPDELAY_TOAST=Tiempo de espera modificado. 157 | 158 | NCSAFELOOPTRANSACTIONTIMEOUT=Limite de transacciones 159 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=Establece cuanto tiempo esperar a que una transaccion se procese antes de rendirse 160 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=Se modificó el tiempo de espera en caso de un limite de transacciones. 161 | 162 | NCSAFELOOPSTOP=Parar Loop despues de $x 163 | NCSAFELOOPSTOP_DESC=Va a parar el Loop AFK de dinero despues de conseguir la cantidad establecida 164 | NCSAFELOOPSTOP_TOAST=Límite establecido. 165 | 166 | NCRESETSAFEVALUE=Reiniciar valor de la caja fuerte 167 | ! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 168 | NCRESETSAFEVALUE_DESC=Si tu caja fuerte sobrepasó los $300k o está debajo de $0 esto debería arreglarlo. 169 | NCRESETSAFEVALUEWAIT_TOAST=Por favor espera mientras se reinicia tu caja fuerte. 170 | NCRESETSAFEVALUESUCCESS_TOAST=Tu caja fuerte debería haber sido reiniciada. 171 | NCRESETSAFEVALUESKIP_TOAST=Tu caja fuerte parece estar bien 172 | 173 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=Se alcanzó el máximo valor! 174 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=No pareces estar en tu club nocturno. Asegúrate de estar en él y de abrir la caja fuerte antes de usar esta opción! 175 | NCSAFELOOPTIMEOUT_TOAST=Parece que llegaste al limite de transacciones. Solo te queda esperar. 176 | NCSAFELOOPSAFEOVERLIMIT_TOAST=Oh oh, parece que la caja fuerte sobrepasó el limite. Usa [Reiniciar valor de la caja fuerte] e intenta de nuevo 177 | ! References [NCRESETSAFEVALUE] 178 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=Algo no fue como se esperaba... Si puedes reproducir este problema por favor repórtalo. 179 | 180 | MCLIST_DESC=Nota: el límite de los precios de venta es $2.5m 181 | 182 | BUNKERLIST_DESC=Nota: el límite de los precios de venta es $2.7m 183 | 184 | TELEPORTTO=Teletransportarse a {1} 185 | TELEPORTTO_DESC=Teleports you to your {1} 186 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 187 | 188 | NOTINNIGHTCLUB_TOAST=No estas en tu club nocturno! 189 | 190 | JOINDISCORD=Únete al servidor de discord 191 | SHOWMOTD=Mostrar mensaje del día 192 | SHOWMOTDBLANK_TOAST=No hay mensaje del día. 193 | WARNINGRISKY_TOAST=ADVERTENCIA: Todas opciones en este script se consideran riesgosas! Hay una chance de que seas baneado dentro de una cantidad desconocida de días (los bans son atrasados al azar). Fuiste advertido. 194 | 195 | ALREADYINPROPERTY=Ya estás en tu {1}! 196 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 197 | 198 | ! Nightclub categories 199 | HUBCARGO=Mercancía especial 200 | HUBWEED=Marihuana 201 | HUBWEAPONS=Armas 202 | HUBMETH=Metanfetamina 203 | HUBCOCAINE=Cocaina 204 | HUBCASH=Dinero 205 | HUBFORGERY=Falsificación de documentos 206 | 207 | ! MC categories 208 | MCFORGERY=Falsificación de documentos 209 | MCWEED=Marihuana 210 | MCCASH=Dinero 211 | MCMETH=Metanfetamina 212 | MCCOCAINE=Cocaina 213 | MCBUNKER=Bunker 214 | 215 | ! Special Cargo 216 | SPECIALCARGONOMORECRATES=No tienes mercancía en tu almacén! 217 | SPECIALCARGONEEDCEO=Estas en tu club de moteros! Necesitas estar en tu oficina de CEO 218 | SPECIALCARGOMAXCRATESOURCE=Maximizar cantidad de abastecimiento de mercancía 219 | SPECIALCARGOMAXCRATESOURCE_DESC=Establece la cantidad de mercancía que tu personal va a entregar 220 | SPECIALCARGOSETDELIVERTIME=Minimizar tiempo de envío 221 | SPECIALCARGOSETDELIVERTIME_DESC=Establece la cantidad de tiempo que pasa antes de que tu personal entrega a cero -------------------------------------------------------------------------------- /resources/Musiness Banager/Translations/pl.txt: -------------------------------------------------------------------------------- 1 | @Author = DumbBird#0007 2 | @Version = 0.3.2 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="! 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=Bunkier 15 | BUSINESS=Biznes 16 | MCBUSINESS=Biznesy Klubu Motocyklowego 17 | WAREHOUSE=Magazyn 18 | NIGHTCLUB=Klub Nocny 19 | NIGHTCLUBSAFE=Sejf w Klubie Nocnym 20 | SPECIALCARGO=Specjalne Ładunki 21 | SELLMISSION=Misja Sprzedaży 22 | BUYMISSION=Misja Kupna 23 | START=Start 24 | MONEY=Gotówka 25 | STOCK=Magazyn 26 | SUPPLIES=Zasoby 27 | CRATES=Skrzynki 28 | PRODUCT=Produkty 29 | INFOOVERLAY=Nakładka 30 | TERRORBYTE=Terrorbyte 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=Nie udało połączyć się z serwerem. 35 | HTTPINVALID=Otrzymano niepoprawną odpowiedź od serwera! Może być to spowodowane przez Cloudfire lub antywirusa blokującego połączenie. Proszę cię połącz się ponownie do serwera VPN lub/oraz zmień sieć. 36 | HTTPFAILSAFE=Aktywowanie zabezpieczeń ze względu na zagrożenie. 37 | SCRIPTOUTOFDATE=Skrypt nie jest zaktualizowany! Proszę cię zrestartuj skrypt w celu uzyskania najnowszej wersji z repozytorium. 38 | 39 | KILLSWITCH_SAFELOOP=Wyłączanie AFK zapętlanie sejfu Klubu Nocnego ze względu na zabezpieczenia. 40 | ! This was edited to be more clear 41 | KILLSWITCH_SPECIALCARGO=Wyłączanie Specjalnego Ładunku ze względu na zabezpieczenia. 42 | KILLSWITCH_MAXSELLPRICE=Wyłączanie Sprzedaj po Maksymalnej Cenie ze względu na zabezpieczenia. 43 | KILLSWITCH_AUTOCOMPLETE=Wyłączanie Automatycznego Ukończenia ze względu na zabezpieczenia. 44 | 45 | TRANSACTIONSSTUCK_TOAST=Wygląda na to, że transakcja zacięła się. Proszę cię zmień sesje, lub zrestartuj grę. 46 | BEALONE_TOAST=Na sesji jest za dużo graczy! Aktywowano polecenie Zostań Sam 47 | 48 | PREFIX_SAFELOOP=[Zapętlenie Sejfu] {1} 49 | PREFIX_SPECIALCARGO=[Specjalne Ładunki] {1} 50 | PREFIX_TOTALEARNED=Łącznie Zdobyto: {1} 51 | PREFIX_MOTD=MOTD: {1} 52 | ! {1} is a number, the amount of money earned in total. 53 | PREFIX={1} {2} 54 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 55 | 56 | INFO_SCWAREHOUSE=Magazyn SŁ {1}: {2}/{3} 57 | ! {1} is slot {2} is amount {3} is capacity 58 | INFO_HUBBUSINESS=Podgląd {1}: {2}/{3} 59 | ! {1} is name {2} is stock {3} is max capacity 60 | INFO_NCSAFE=Sejf Klubu nocnego $: {1} 61 | ! {1} is value 62 | INFO_MCBUSINESS=KM {1}: {2}% | {3}/{4} 63 | ! {1} is name {2} is supplies {3} is product {4} is capacity 64 | INFO_BUNKER=Bunkier: {1}% | {2}/{3} 65 | ! {1} is supplies {2} is product {3} is capacity 66 | 67 | FINDSAFERWAYS=Znajdź bezpieczniejsze sposoby na zarobek 68 | FINDSAFERWAYS_DESC=Proszę cię, przed użycie opcji poniżej, przeczytaj chociaż tą wiadomość. 69 | RETREIVINGINFO=Odzyskiwanie Informacji... 70 | 71 | SALESABUSE_DIVIDER=Nadużycie Sprzedaży 72 | 73 | MAXSELLPRICE=Maksymalna Cena Sprzedaży 74 | MAXSELLPRICE_DESC=Sprzedaje twoje {1} za maksymalną możliwą cenę nie zwracając uwagi na to ile {2} posiadasz. 75 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 76 | 77 | MONITOR=Monitor 78 | 79 | MONTIOR_EXTRA=Monitor {1} 80 | MONITOR_DESC=Pokazuje aktualne zaopatrzenie {1} w {2}, korzystając z {3} 81 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 82 | 83 | BYPASSCOOLDOWN=Omiń Odnowienie {1} 84 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 85 | BYPASSCOOLDOWN_DESC=Pozwala na {1} kolejnej misji {2} omijając czas oczekiwania 86 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 87 | 88 | SETPRODUCT=Ustaw Produkt 89 | SETPRODUCT_DESC=Ustaw bezpośrednio ile masz produktu 90 | SETPRODUCT_TOAST=Ustawiono produkt. 91 | 92 | MAXPRODUCTALL=Maksimum Wszystkich Produktów 93 | MAXPRODUCTALL_DESC=Ustawia wszystkie twoje produkty na maksimum 94 | MAXPRODUCTALL_TOAST=Ustawiono wszystkie produkty na maksimum. 95 | 96 | MAXPRODUCTIONSPEED=Maksymalna Prędkość Produkcji 97 | MCMAXPRODUCTIONSPEED_DESC=Daje natychmiastowy rezultat 98 | NCMAXPRODUCTIONSPEED_DESC=Rezultat widoczny po ukończeniu produkcji jednej jednostki 99 | MAXPRODUCTIONSPEED_TOAST=Prędkość produkcji zwiększona maksymalnie. 100 | MAXPRODUCTIONSPEEDSLOW_TOAST=Prędkość produkcji zwiększona maksymalnie. Efekt będzie widoczny po wyprodukowaniu towaru. 101 | 102 | MAXIMUMCAPACITY=Maksymalna Pojemność 103 | MAXIMUMCAPACITY_DESC=Wpływa na ilość zapasów, które można potencjalnie posiadać 104 | MAXIMUMCAPACITY_TOAST=Pojemność zmieniona. 105 | 106 | SUPPLYPRODUCTRATIO=Zasoby->Współczynnik Produktu 107 | SUPPLYPRODUCTRATIO_DESC=Ustawia ile zasobów wymaga stworzenie jednego produktu. Mniejsze wartości oznaczją większą efektywnosć. 108 | SUPPLYPRODUCTRATIO_TOAST=Współczynnik zmieniony. 109 | 110 | RESUPPLY=Uzupełnij 111 | RESUPPLY_DESC=Natychmiastowo dostarczy za darmo zasoby do biznesów 112 | 113 | TRIGGERPRODUCTION=Aktywuj Produkcję 114 | TRIGGERPRODUCTION_DESC=Natychmiastowo rozpoczyna produkcje 115 | TRIGGERPRODUCTION_TOAST=Produkcja Aktywowana. 116 | 117 | ENFORCEEASIESTMISSION=Wymuś najłatwiejszą Misję Sprzedaży 118 | ENFORCEEASIESTMISSION_DESC=Spowoduje, że zawsze dostaniesz najszybszą oraz najłatwiejszą misję sprzedaży. Jeżeli misja zostanie wykonana za szybko nie zostanie przyznana wypłata. 119 | 120 | SPECIALCARGOLIST_DESC=Pamiętaj, że maksymalna wartość sprzedaży to $6m 121 | 122 | SPECIALCARGOWAREHOUSE_DESC=Wybierz, który magazyn będzie monitorowany oraz modyfikowany, ze względu na to, że możesz posiadać pięć magazynów. 123 | SPECIALCARGOMONITOR_DESC=Wyświetla ile specjalnych skrzynek z zasobami posiadasz w wybranym magazynie. 124 | SPECIALCARGONOWAREHOUSE=Brak Magazynu 125 | SPECIALCARGONOWAREHOUSE_DESC=Nie posiadasz żadnego magazynu na tej pozycji! 126 | SPECIALCARGOMAXSELLPRICE_DESC=Zmienia wartość sprzedaży specjalnych skrzyń CEO na $6m. Pozostaw tęopcję włączoną, aby zapewnić prawidłowe naliczanie przy przyszłych sprzedażach. 127 | 128 | OPENSCREEN=Otwórz Ekran {1} 129 | OPENSCREEN_DESC=Otwiera Ekran {1} 130 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 131 | SELLACRATE=Wciśnij Żeby Sprzedać Skrzynię 132 | SELLACRATE_DESC=Automatycznie sprzedaje jedną Skrzynię Specjalnego Ładunku 133 | 134 | NOTINSELECTEDWAREHOUSE_TOAST=Nie jesteś aktualnie w wybrany magazynie! 135 | 136 | AUTOCOMPLETE=Automatycznie ukończ {1} 137 | AUTOCOMPLETE_DESC=Powoduje, że {1} jest zakańczana automatycznie 138 | ! {1} could be [SELLMISSION] or [BUYMISSION] 139 | 140 | NCLIST_DESC=Pamiętaj, że maksymalna wartość sprzedaży to $4m \nNie próbuj "sprzedaj wszystko" 141 | NCREVENUE=Dochody 142 | NCREVENUE_DESC=Zmienia dochody klubu nocnego, bez względu na popularność. 143 | NCREVENUE_TOAST=Dochody ustawione. 144 | 145 | NCMAXPOPULARITY=Zwiększ Maksymalnie Popularność Klubu Nocnego 146 | NCMAXPOPULARITY_DESC=Ustawia twoją popularność klubu nocnego na 100% 147 | NCMAXPOPULARITY_TOAST=Zwiększono maksymalnie popularność klubu nocnego. 148 | 149 | NCSAFELIST_DESC= 150 | 151 | NCSAFELOOP=AFK Pętla Pieniędzy 152 | NCSAFELOOP_DESC=Otwórz swój sejf w klubie nocnym przed włączeniem tej opcji!\nPozwoli na pasywne zarabianie $300k co każde 4~5 sekund 153 | 154 | NCSAFELOOPDELAY=Odstęp Pętli 155 | NCSAFELOOPDELAY_DESC=Ustawi odstęp pomiędzy transakcjami AFK pętli (podane w milisekundach 156 | NCSAFELOOPDELAY_TOAST=Odstęp zmieniony. 157 | 158 | NCSAFELOOPTRANSACTIONTIMEOUT=Limit Czasu transakcji 159 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=Określa, jaka długa musi być przerwa pomiędzy transakcjami, żeby zakończyć pracę. 160 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=Limit Czasu Transakcji zmieniony. 161 | 162 | NCSAFELOOPSTOP=Zatrzymaj Pętle po Zarobieniu $x 163 | NCSAFELOOPSTOP_DESC=Zatrzyma AFK Pętle Pieniędzy po zarobieniu określonej ilości 164 | NCSAFELOOPSTOP_TOAST=Limit ustawiony. 165 | 166 | NCRESETSAFEVALUE=Zresetuj Zawartość Sejfu 167 | ! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 168 | NCRESETSAFEVALUE_DESC=Jeżeli zawartość twojego sejfu w Klubie Nocnym wynosi powyżej $300k lub poniżej $0, ta opcja ci pomoże. 169 | NCRESETSAFEVALUEWAIT_TOAST=Proszę czekaj, twój sejf w Klubie Nocnym jest resetowany. 170 | NCRESETSAFEVALUESUCCESS_TOAST=Twój sejf w Klubie Nocnym pownien zostać zresetowany. 171 | NCRESETSAFEVALUESKIP_TOAST=Twój sejf w Klubie Nocnym zdaje się działać poprawnie 172 | 173 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=Maksymalna wartość została osiągnięta! 174 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=Nie wygląda na to, że jesteś w swoim Klubie Nocnym. Upewnij się, że jesteś w Klubie Nocnym oraz masz otwarty sejf przed użyciem tej opcji! 175 | NCSAFELOOPTIMEOUT_TOAST=Wygląda na to, że został osiągnięty limit czasu transakcji. 176 | NCSAFELOOPSAFEOVERLIMIT_TOAST=Uhm, wygląda na to, że limit sejfu został przekroczony. Użyj "Zresetuj Zawartość Sejfu" i spróbuj ponownie 177 | ! References [NCRESETSAFEVALUE] 178 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=Coś nie poszło tak jak powinno... jeżeli możesz to odtworzyć, proszę zgłoś to. 179 | 180 | MCLIST_DESC=Pamiętaj, że maksymalna wartość sprzedaży to $2.5m 181 | 182 | BUNKERLIST_DESC=Pamiętaj, że maksymalna wartość sprzedaży to $62.7m 183 | 184 | TELEPORTTO=Teleportuj do {1} 185 | TELEPORTTO_DESC=Teleportuje ciebnie do twojego {1} 186 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 187 | 188 | NOTINNIGHTCLUB_TOAST=Nie jesteś w swoim Klubie Nocnym 189 | 190 | JOINDISCORD=Dołącz na nasz serwer Discord 191 | SHOWMOTD=Pokaż MOTD 192 | SHOWMOTDBLANK_TOAST=MOTD jest puste. 193 | WARNINGRISKY_TOAST=OSTRZEŻENIE: Wszystkie opcje w tym skrypcie są uznawane za ryzykowne! Istnieje szansa, że na konto zostanie nałożona blokada na nieznaną liczbę dni (blokady są opóźnione losowo). Zostałeś/aś ostrzeżony/a. 194 | 195 | ! Nightclub 196 | ALREADYINPROPERTY=Jesteś już w swoim {1}! 197 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 198 | 199 | ! Nightclub categories 200 | HUBCARGO=Towar i Przesyłki 201 | HUBWEED=Produkty Organiczne 202 | HUBWEAPONS=Sprzęt Sportowy 203 | HUBMETH=Wyroby Farmaceutyczne 204 | HUBCOCAINE=Towary z Ameryki Płd. 205 | HUBCASH=Matryce i Odlewy 206 | HUBFORGERY=Kopie i Wydruki 207 | 208 | ! MC categories 209 | MCFORGERY=Podrabiane Dokumenty 210 | MCWEED=Marihuana 211 | MCCASH=Fałszywe Banknoty 212 | MCMETH=Metamfetamina 213 | MCCOCAINE=Kokaina 214 | MCBUNKER=Bunkier 215 | 216 | ! Special Cargo 217 | SPECIALCARGONOMORECRATES=Nie masz już więcej skrzyć w swoim magazynie! 218 | SPECIALCARGONEEDCEO=Jesteś w MC! Musisz być w CEO. 219 | SPECIALCARGOMAXCRATESOURCE=Maksymalna Ilość Dostarczanych Skrzyń 220 | SPECIALCARGOMAXCRATESOURCE_DESC=Ustawia ile twoi pracownicy będą dostarczać skrzyń 221 | SPECIALCARGOSETDELIVERTIME=Minimalizacja Czasu Dostawy 222 | SPECIALCARGOSETDELIVERTIME_DESC=Ustawia czas potrzebny do dostarczenia skrzyń przez twoich pracowników na natychmiastowy -------------------------------------------------------------------------------- /resources/Musiness Banager/Translations/de.txt: -------------------------------------------------------------------------------- 1 | @Author=- THEKING -#8311 2 | @Version=0.3.2 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="! 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=Bunker 15 | BUSINESS=Unternehmen 16 | MCBUSINESS=MC Unternehmen 17 | WAREHOUSE=Lagerhaus 18 | NIGHTCLUB=Nachtclub 19 | NIGHTCLUBSAFE=Nachclub Tresor 20 | SPECIALCARGO=Spezial Fracht 21 | SELLMISSION=Verkaufs Mission 22 | BUYMISSION=Kauf Mission 23 | START=Start 24 | MONEY=Geld 25 | STOCK=Vorrat 26 | SUPPLIES=Vorräte 27 | CRATES=Kisten 28 | PRODUCT=Produkt 29 | INFOOVERLAY=Info-Overlay 30 | TERRORBYTE=Terrorbyte 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=Fehler beim herstellen der Verbindung zum Server. 35 | HTTPINVALID=Ungültige Antwort vom Server erhalten! Das kann an CloudFlare liegen oder an deinem Antiviren-Programm, welches eine Verbindung zum Server verhindert. Stelle entweder eine neue VPN Verbindung her oder wechsel deine Netzwerkverbindung. 36 | HTTPFAILSAFE=Killswitch aufgrund eines Speicherfehlers aktiviert. 37 | SCRIPTOUTOFDATE=Dein Script ist nicht mehr aktuell! Bitte starte es neu um die aktuellste Version aus der Repository zu bekommen! 38 | 39 | KILLSWITCH_SAFELOOP=Nachtclub-Tresor loop aufgrund des Killswitches abgebrochen 40 | KILLSWITCH_SPECIALCARGO=Spezialfracht aufgrund des Killswitches abgebrochen 41 | KILLSWITCH_MAXSELLPRICE=Maximaler Verkaufspreis aufgrund des Killswitches abgebrochenh 42 | KILLSWITCH_AUTOCOMPLETE=Missionen automatisch abschliessen aufgrund des Killswitches abgebrochen 43 | 44 | TRANSACTIONSSTUCK_TOAST=Es scheint so, als würden deine Transaktionen hängen. Bitte wechsel die Sitzung oder starte das Spiel neu. 45 | BEALONE_TOAST=Es sind zu viele Spieler in deiner Sitzung! bealone ausgelöst! 46 | 47 | PREFIX_SAFELOOP=[Nachtclub-Tresor Loop] {1} 48 | PREFIX_SPECIALCARGO=[Spezialfracht] {1} 49 | PREFIX_TOTALEARNED=insgesamt verdient: {1} 50 | PREFIX_MOTD=MOTD: {1} 51 | ! {1} is a number, the amount of money earned in total. 52 | PREFIX={1} {2} 53 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 54 | 55 | INFO_SCWAREHOUSE=Spezial Fracht Lagerhaus {1}: {2}/{3} 56 | ! {1} is slot {2} is amount {3} is capacity 57 | INFO_HUBBUSINESS=Hub {1}: {2}/{3} 58 | ! {1} is name {2} is stock {3} is max capacity 59 | INFO_NCSAFE=Nachclub Tresor $: {1} 60 | ! {1} is value 61 | INFO_MCBUSINESS=MC {1}: {2}% | {3}/{4} 62 | ! {1} is name {2} is supplies {3} is product {4} is capacity 63 | INFO_BUNKER=Bunker: {1}% | {2}/{3} 64 | ! {1} is supplies {2} is product {3} is capacity 65 | 66 | FINDSAFERWAYS=Sicherere Methoden um Geld zu bekommen. 67 | FINDSAFERWAYS_DESC=Bitte lies dir das zuerst durch, bevor du die Methoden, die du unten siehst ausnutzt. 68 | RETREIVINGINFO=Informationen werden abgerufen... 69 | 70 | SALESABUSE_DIVIDER=Unternehmen ausnutzen 71 | 72 | MAXSELLPRICE=Maximaler Verkaufspreis 73 | MAXSELLPRICE_DESC=Ermöglicht es dir deine {1} für den maximal möglichen Preis zu verkaufen. Dabei ist es egal wie viele {2} du hast. 74 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 75 | 76 | MONITOR=Informationen anzeigen 77 | 78 | MONITOR_EXTRA=überwache {1} 79 | MONITOR_DESC=Zeigt dir mithilfe des {3} an, wie viel {1} du in dem {2} hast. 80 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 81 | 82 | 83 | BYPASSCOOLDOWN={1} Abklingzeit umgehen 84 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 85 | BYPASSCOOLDOWN_DESC=Ermöglicht es dir, eine weitere {2} zu {1}, ohne die Abklingzeit abwarten zu müssen. 86 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 87 | 88 | SETPRODUCT=Produkt festlegen 89 | SETPRODUCT_DESC=Lege fest, wie viele Produkte du hast. 90 | SETPRODUCT_TOAST=Produkte festgelegt. 91 | 92 | MAXPRODUCTALL=Maximum an Produkten bei allen. 93 | MAXPRODUCTALL_DESC=Setzt die Anzahl aller Produkte aufs maximale 94 | MAXPRODUCTALL_TOAST=Alle Produkte Maximal aufgefüllt 95 | 96 | MAXPRODUCTIONSPEED=Maximale Produktionsgeschwindigkeit 97 | MCMAXPRODUCTIONSPEED_DESC=tritt sofort ein 98 | NCMAXPRODUCTIONSPEED_DESC=Tritt ein, nachdem eine Einheit die Produktion beendet hat. 99 | MAXPRODUCTIONSPEED_TOAST=Maximale Produktionsgeschwindigkeit. 100 | MAXPRODUCTIONSPEEDSLOW_TOAST=Maximale Produktionsgeschwindigkeit. Sie wird wirksam, sobald eine Ware produziert wurde. 101 | 102 | MAXIMUMCAPACITY=Maximale Kapazität 103 | MAXIMUMCAPACITY_DESC=Beeinflusst, wie viel Warenbestand du potenziell halten kannst 104 | MAXIMUMCAPACITY_TOAST=Lagerkapazitä geändert. 105 | 106 | SUPPLYPRODUCTRATIO=Vorrat->Produktherstellung 107 | SUPPLYPRODUCTRATIO_DESC=Legt fest, wie viel Vorrat zur Herstellung eines Produkts benötigt wird. Ein kleinerer Wert bedeute effizientere Arbeit. 108 | SUPPLYPRODUCTRATIO_TOAST=Verhältnis geändert. 109 | 110 | RESUPPLY=Erneute Lieferung 111 | RESUPPLY_DESC=Liefert sofort kostenlos Waren in dein Unternehmen 112 | 113 | TRIGGERPRODUCTION=Produktion auslösen 114 | TRIGGERPRODUCTION_DESC=Setzt die Produktion sofort in Gang 115 | TRIGGERPRODUCTION_TOAST=Produktion Ausgelöst. 116 | 117 | ENFORCEEASIESTMISSION=Leichteste Verkaufsmission erzwingen 118 | ENFORCEEASIESTMISSION_DESC=Hierdurch wirst du immer die schnellsten und einfachsten Verkaufsmission erhalten. Wenn du zu schnell bist, wirst du vielleicht nicht bezahlt?!. 119 | 120 | SPECIALCARGOLIST_DESC=Beachte, dass das Verkaufslimit bei $6Mio. liegt. 121 | SPECIALCARGOWAREHOUSE_DESC=Wähle aus, welches Lagerhaus du überwachen und ändern möchtest. Du kannst 5 besitzen. 122 | SPECIALCARGOMONITOR_DESC=Zeigt an, wie viele Spezialfrachtkisten du in deinem ausgewählten Lagerhaus hast. 123 | SPECIALCARGONOWAREHOUSE=Kein Lagerhaus 124 | SPECIALCARGONOWAREHOUSE_DESC=Du hast kein Lagerhaus in diesem Slot! 125 | SPECIALCARGOMAXSELLPRICE_DESC=Ändert den Verkaufspreis der Spezialfrachtkisten deines CEO's auf $6Mio. . Lasse es aktiviert, um eine korrekte Berechnung bei zukünftigen Verkäufen zu gewährleisten. 126 | 127 | 128 | OPENSCREEN=Öffne {1} Bildschirm 129 | OPENSCREEN_DESC=Öffnet den {1} Bildschirm 130 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 131 | SELLACRATE=Drücke um ein Spezialfracht zu verkaufen 132 | SELLACRATE_DESC=Verkauft eine Spezialfracht 133 | 134 | NOTINSELECTEDWAREHOUSE_TOAST=Du befindest dich momentan nicht in deinem ausgewählten Lager! 135 | 136 | AUTOCOMPLETE=Automatisch {1} abschließen 137 | AUTOCOMPLETE_DESC=Schließt die {1} automatisch ab. 138 | ! {1} could be [SELLMISSION] or [BUYMISSION] 139 | 140 | NCLIST_DESC=Beachte, dass das Verkaufslimit bei $4Mio. liegt.\nVERSUCHE NICHT, 'alles zu verkaufen'. 141 | NCREVENUE=Einnahmen 142 | NCREVENUE_DESC=Beeinflusst die Höhe der Einnahmen deines Nachtclubs, unabhängig davon, wie beliebt er ist. 143 | NCREVENUE_TOAST=Einnahme festgelegt. 144 | 145 | NCMAXPOPULARITY=Maximale Nachtclub Popularität 146 | NCMAXPOPULARITY_DESC=Setzt die Popularität deines Nachtclubs auf 100%. 147 | NCMAXPOPULARITY_TOAST=Nachtclub Popolarität aufs maximale geändert. 148 | 149 | NCSAFELIST_DESC=Ist der Tresor in deinem nachtclub. 150 | 151 | NCSAFELOOP=AFK Money Loop 152 | NCSAFELOOP_DESC=Öffne den Nachtclub Tresor, bevor du den loop aktivierst!\nMacht es dir möglich, alle ~4-5 sekunden $300.000 zu verdienen 153 | 154 | NCSAFELOOPDELAY=Loop Verzögerung 155 | NCSAFELOOPDELAY_DESC=Legt fest, wie lange es dauert bis das Geld erneut eingesammelt wird (in Millisekunden). 156 | NCSAFELOOPDELAY_TOAST=Verzögerung geändert. 157 | 158 | NCSAFELOOPTRANSACTIONTIMEOUT=Zeitüberschreitung bei Transaktionen 159 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=Legt fest, wie lange auf die Bearbeitung einer Transaktion gewartet werden soll, bevor sie abgebrochen wird 160 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=Transaktions-Timeout geändert. 161 | 162 | NCSAFELOOPSTOP=Loop nach $x-Betrag anhalten 163 | NCSAFELOOPSTOP_DESC=Stoppt den AFK Loop, nachdem du den eingestellten Betrag verdient hast 164 | NCSAFELOOPSTOP_TOAST=Limit gesetzt. 165 | 166 | NCRESETSAFEVALUE=Nachtclub-Tresorinhalt zurücksetzen 167 | NCRESETSAFEVALUE_DESC=Wenn dein Nachtclub Tresor über $300.000 beinhaltet oder unter $0 liegt, sollte dies das Problem beheben. 168 | NCRESETSAFEVALUEWAIT_TOAST=Bitte warte, während der Nachtclub Tresor zurückgesetzt wird. 169 | NCRESETSAFEVALUESUCCESS_TOAST=Dein Nachtclub Tresor sollte jetzt zurückgesetzt worden sein. 170 | NCRESETSAFEVALUESKIP_TOAST=Dein Nachtclub Tresor scheint in Ordnung zu sein 171 | 172 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=Der Maximalwert wurde erreicht! 173 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=Du scheinst nicht in deinem Nachtclub zu sein. Vergewissere dich, dass du in deinem Nachtclub bist und der Tresor geöffnet ist, bevor du diese Funktion nutzen! 174 | NCSAFELOOPTIMEOUT_TOAST=Es scheint so, als hättest du eine Transaktions-Timeout erreicht. 175 | NCSAFELOOPSAFEOVERLIMIT_TOAST=Oh, es scheint so, als hätte der Tresor den Grenzwert überschritten. Verwende [Tresorinhalt zurücksetzen] und versuche es erneut. 176 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=Irgendetwas ist nicht so gelaufen, wie es sollte... wenn du das Problem reproduzieren kannst, melden es bitte. 177 | 178 | MCLIST_DESC=Beachte, dass das Verkaufslimit bei $2,5Mio. liegt. 179 | 180 | BUNKERLIST_DESC=Beachte, dass das Verkaufslimit bei $2,7Mio. liegt. 181 | 182 | TELEPORTTO=Zum {1} teleportieren 183 | TELEPORTTO_DESC=Teleportiert dich zu deinem {1}. 184 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 185 | 186 | NOTINNIGHTCLUB_TOAST=Du bist nicht in deinem Nachtclub!\num dich zu deinem Tresor zu teleportieren, musst du in deinem Nachtclub sein. 187 | 188 | JOINDISCORD=Tritt dem Discord bei! 189 | SHOWMOTD=Nachricht des Tages 190 | SHOWMOTDBLANK_TOAST=Es gibt keine Nachricht des Tages. 191 | WARNINGRISKY_TOAST=ACHTUNG!: Alle Funktionen in diesem Skript könnten riskant sein! Es besteht die Möglichkeit, dass du innerhalb eines unbekannten Zeitraums gebannt wirst. (Banns sind zufällig verzögert). Du wurdest gewarnt ;). 192 | 193 | ALREADYINPROPERTY=Du bist bereits in deinem {1}! 194 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 195 | 196 | ! Nightclub categories 197 | HUBCARGO=Fracht 198 | HUBWEED=Marihuana 199 | HUBWEAPONS=Waffen 200 | HUBMETH=Meth 201 | HUBCOCAINE=Kokain 202 | HUBCASH=Geld 203 | HUBFORGERY=Forschung 204 | 205 | ! MC categories 206 | MCFORGERY=Forschung 207 | MCWEED=Marihuana 208 | MCCASH=Geld 209 | MCMETH=Meth 210 | MCCOCAINE=Kokain 211 | MCBUNKER=Lager 212 | 213 | ! Special Cargo 214 | SPECIALCARGONOMORECRATES=Du hast keine Kisten mehr in deinem Lagerhaus! 215 | SPECIALCARGONEEDCEO=Du bist in einem MC! Du musst in einem CEO sein. 216 | SPECIALCARGOMAXCRATESOURCE=Maximale Beschaffungsmenge für Kisten 217 | SPECIALCARGOMAXCRATESOURCE_DESC=Legt die Anzahl der Kisten fest, die deine Mitarbeiter liefern sollen 218 | SPECIALCARGOSETDELIVERTIME=Lieferzeit minimieren 219 | SPECIALCARGOSETDELIVERTIME_DESC=Setzt die Zeitspanne, die vergehen soll, bevor deine Mitarbeiter liefern, auf null -------------------------------------------------------------------------------- /resources/Musiness Banager/Translations/fr.txt: -------------------------------------------------------------------------------- 1 | @Author=Leif.Erickson#7120 2 | @Version=0.3.2 3 | ! Thank you for choosing to translate Musiness Banager into your language! 4 | ! Please do not change anything before the "="! 5 | ! Additions in the labels list will be marked with "+ " before the label, but without the quotes. You can search the file for "+ " every update to find the new labels! 6 | ! Deletions in the labels list will be marked with "- " before the label. PLEASE DELETE THE ENTIRE LINE. The deletions are left in to help you understand if something was replaced! 7 | ! For lines that begin with "+ ", remove the "+ ". 8 | ! Lines with a "!" or "+" or "@" at the beginnning mark the line as a comment and that line will be ignored. 9 | ! The labels that contain "{x}" where x is a number, indicate an additional piece of text. Do not add or remove or change the numbers inside of them. 10 | ! You may however, move them around. For example if a line is "Press {1} to open {2}", you can move them around in any way you want such as "To open {2} press {1}". 11 | ! It has been added to make it easier for languages that read right to left instead of the usual left to right. 12 | ! One more thing: the two characters "\n" represents a new line. In game, there will be a new line where "\n" is. 13 | 14 | BUNKER=Bunker 15 | BUSINESS=PDG 16 | MCBUSINESS=Affaires de Club de Motards 17 | WAREHOUSE=Entrepôt 18 | NIGHTCLUB=Boite de nuit 19 | NIGHTCLUBSAFE=Coffre-fort de Boite de nuit 20 | SPECIALCARGO=Marchandises spéciales 21 | SELLMISSION=Mission de vente 22 | BUYMISSION=Mission d'achat 23 | START=Début 24 | MONEY=argent 25 | STOCK=stock 26 | SUPPLIES=fournitures 27 | CRATES=caisses 28 | PRODUCT=productions 29 | INFOOVERLAY=Infos superposées 30 | TERRORBYTE=Terrorbyte 31 | ! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 32 | ! You might want to leave TERRORBYTE the same, unless the game calls it something different 33 | 34 | HTTPGIVEUP=Erreur de connexion avec le serveur distant. 35 | HTTPINVALID=Réponse invalide reçue du serveur distant ! Cela peut être dû à Cloudflare ou à votre antivirus qui bloque la connexion. Veuillez établir une nouvelle connexion VPN ou changer de réseau. 36 | HTTPFAILSAFE=Activation des coupe-circuits en raison du mode sans échec 37 | SCRIPTOUTOFDATE=Le script n'est plus à jour ! Veuillez redémarrer le script pour obtenir la dernière version du répertoire! 38 | 39 | KILLSWITCH_SAFELOOP=Désactivation de la boucle AFK du coffre-fort par le coupe-circuit 40 | KILLSWITCH_SPECIALCARGO=Désactivation de la vente de cargaison spéciale par le coupe-circuit 41 | KILLSWITCH_MAXSELLPRICE=Désactivation de la vente au prix maximum par le coupe-circuit 42 | KILLSWITCH_AUTOCOMPLETE=Désactivation de l'auto-complete par le coupe-circuit 43 | 44 | TRANSACTIONSSTUCK_TOAST=Il semble que vos transactions soient bloquées. Veuillez changer de session ou redémarrer le jeu. 45 | BEALONE_TOAST=Il y a trop de joueurs dans votre lobby ! On vide la session. 46 | 47 | PREFIX_SAFELOOP=[Boucle Boite de nuit] {1} 48 | PREFIX_SPECIALCARGO=[Cargaisons Spéciales] {1} 49 | PREFIX_TOTALEARNED=Total gagné: {1} 50 | PREFIX_MOTD=Annonce du jour: {1} 51 | ! {1} is a number, the amount of money earned in total. 52 | PREFIX={1} {2} 53 | ! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 54 | 55 | INFO_SCWAREHOUSE=Entrepôt SC{1}: {2}/{3} 56 | ! {1} is slot {2} is amount {3} is capacity 57 | INFO_HUBBUSINESS=Entrepôt Discothèque {1}: {2}/{3} 58 | ! {1} is name {2} is stock {3} is max capacity 59 | INFO_NCSAFE=Coffre-fort boite de nuit $: {1} 60 | ! {1} is value 61 | INFO_MCBUSINESS=Club de Motards {1}: {2}% | {3}/{4} 62 | ! {1} is name {2} is supplies {3} is product {4} is capacity 63 | INFO_BUNKER=Bunker: {1}% | {2}/{3} 64 | ! {1} is supplies {2} is product {3} is capacity 65 | 66 | FINDSAFERWAYS=Trouvez des moyens plus sûrs de gagner de l'argent 67 | FINDSAFERWAYS_DESC=Veuillez au moins lire ceci avant d'utiliser les options d'argent ci-dessous 68 | RETREIVINGINFO=Récupération des infos ... 69 | 70 | SALESABUSE_DIVIDER=Ventes hors-limites 71 | 72 | MAXSELLPRICE=Vente au prix maximum 73 | MAXSELLPRICE_DESC=Vendez votre/vos {1} au prix maximum possible, quelle que soit la quantité de {2} que vous avez 74 | ! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 75 | 76 | MONITOR=Monitorer 77 | MONITOR_EXTRA=Monitore les {1} 78 | MONITOR_DESC=Montre la quantité de {1} que vous avez dans votre {2}, en utilisant les {3} 79 | ! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 80 | 81 | BYPASSCOOLDOWN=Contourner tempo de {1} 82 | ! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 83 | BYPASSCOOLDOWN_DESC=Permet de {1} une autre mission de {2} sans avoir à attendre un certain délai 84 | ! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 85 | 86 | SETPRODUCT=Définir la quantité de produits 87 | SETPRODUCT_DESC=Définit la quantité de produit que vous avez directement 88 | SETPRODUCT_TOAST=Définir la quantité de produits 89 | 90 | MAXPRODUCTALL=Prix maximum pour toutes les productions 91 | MAXPRODUCTALL_DESC=Fixe le montant de toutes vos productions au maximum 92 | MAXPRODUCTALL_TOAST=Prix maximum pour toutes les productions 93 | 94 | MAXPRODUCTIONSPEED=Vitesse de production maximale 95 | MCMAXPRODUCTIONSPEED_DESC=Prend effet instantanément 96 | NCMAXPRODUCTIONSPEED_DESC=Prend effet dès qu'une unité a fini de produire 97 | MAXPRODUCTIONSPEED_TOAST=Vitesse de production maximale 98 | MAXPRODUCTIONSPEEDSLOW_TOAST=Vitesse de production maximale. Elle prendra effet dès qu'un bien aura été produit 99 | 100 | MAXIMUMCAPACITY=Capacité maximale 101 | MAXIMUMCAPACITY_DESC=Affecte la quantité de stock que vous pouvez potentiellement détenir 102 | MAXIMUMCAPACITY_TOAST=Capacité modifiée 103 | 104 | SUPPLYPRODUCTRATIO=Ratio offre/produit 105 | SUPPLYPRODUCTRATIO_DESC=Définit la quantité d'approvisionnement nécessaire pour fabriquer un produit. Des valeurs plus faibles signifient une meilleure efficacité 106 | SUPPLYPRODUCTRATIO_TOAST=Ratio modifié 107 | 108 | RESUPPLY=Réapprovisionnement 109 | RESUPPLY_DESC=Livrera instantanément des fournitures à votre entreprise, gratuitement 110 | 111 | TRIGGERPRODUCTION=Déclencher la production 112 | TRIGGERPRODUCTION_DESC=Met immédiatement la production en route 113 | TRIGGERPRODUCTION_TOAST=Déclenchement de la production 114 | 115 | ENFORCEEASIESTMISSION=Sélectionne la mission de vente la plus facile 116 | ENFORCEEASIESTMISSION_DESC=Cela vous permettra de toujours obtenir la mission de vente la plus rapide et la plus facile. Cependant, si vous êtes trop rapide, vous risquez de ne pas être payé... 117 | 118 | SPECIALCARGOLIST_DESC=Notez que les valeurs de vente sont limitées à 6 millions de dollars 119 | SPECIALCARGOWAREHOUSE_DESC=Sélectionnez l'entrepôt à surveiller et à modifier, puisque vous pouvez en posséder cinq 120 | SPECIALCARGOMONITOR_DESC=Affiche le nombre de caisses de marchandises spéciales que vous avez dans l'entrepôt sélectionné 121 | SPECIALCARGONOWAREHOUSE=Aucun entrepôt 122 | SPECIALCARGONOWAREHOUSE_DESC=Vous n'avez pas d'entrepôt dans cet emplacement ! 123 | SPECIALCARGOMAXSELLPRICE_DESC=Change le prix de vente des caisses de cargaison spéciale de votre PDG à 6 millions de dollars. Gardez cette option activée pour assurer un calcul correct des ventes futures 124 | 125 | OPENSCREEN=Ouvrir écran {1} 126 | OPENSCREEN_DESC=Ouvre l'écran {1} 127 | ! {1} could be [TERRORBYTE] or [WAREHOUSE] 128 | SELLACRATE=Sélectionner pour vendre une caisse 129 | SELLACRATE_DESC=Vendre automatiquement une caisse de cargaison spéciale 130 | 131 | NOTINSELECTEDWAREHOUSE_TOAST=Vous n'êtes pas dans l'entrepôt que vous avez sélectionné ! 132 | 133 | AUTOCOMPLETE=Auto-compléter la {1} 134 | AUTOCOMPLETE_DESC=Termine automatiquement la {1} 135 | ! {1} could be [SELLMISSION] or [BUYMISSION] 136 | 137 | 138 | NCLIST_DESC=Notez que les valeurs de vente sont limitées à 4 millions de dollars. \nN'essayez PAS de tout vendre d'un seul coup 139 | NCREVENUE=Revenu de la boite de nuit 140 | NCREVENUE_DESC=Modifie le montant des revenus de votre boite de nuit, quelle que soit votre popularité 141 | NCREVENUE_TOAST=Revenu défini. 142 | 143 | NCMAXPOPULARITY=Maximise la popularité de votre boite de nuit 144 | NCMAXPOPULARITY_DESC=Définit la popularité de votre boîte de nuit à 100% 145 | NCMAXPOPULARITY_TOAST=Maximise la popularité de votre boite de nuit 146 | 147 | NCSAFELIST_DESC= 148 | 149 | NCSAFELOOP=Boucle d'argent AFK 150 | NCSAFELOOP_DESC=Ouvrez votre coffre-fort de boîte de nuit avant d'activer cette fonction!\nVous permettra de gagner passivement 300 000 $ toutes les ~4-5 secondes 151 | 152 | NCSAFELOOPDELAY=Délai de temporisation 153 | NCSAFELOOPDELAY_DESC=Définit le temps d'attente de la boucle afk (en millisecondes) entre les étapes majeures 154 | NCSAFELOOPDELAY_TOAST=Délai modifié. 155 | 156 | NCSAFELOOPTRANSACTIONTIMEOUT=Limite de temps de transaction 157 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC=Définit le temps d'attente pour le traitement d'une transaction avant abandon 158 | NCSAFELOOPTIMEOUTMODIFIED_TOAST=Limite de temps de transaction modifiée 159 | 160 | NCSAFELOOPSTOP=Arrêter la boucle après un montant de xxx $ 161 | NCSAFELOOPSTOP_DESC=Arrêtera la boucle d'argent AFK après avoir gagné le montant défini 162 | NCSAFELOOPSTOP_TOAST=Limite fixée. 163 | 164 | NCRESETSAFEVALUE=Réinitialiser la valeur du coffre-fort 165 | ! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 166 | NCRESETSAFEVALUE_DESC=Si le montant du coffre-fort de votre boîte de nuit est supérieur à 300 000 $ ou inférieur à 0 $, ceci devrait le corriger 167 | NCRESETSAFEVALUEWAIT_TOAST=Veuillez patienter pendant que le montant de votre coffre-fort de boîte de nuit est réinitialisé 168 | NCRESETSAFEVALUESUCCESS_TOAST=Le montant de votre coffre-fort de boîte de nuit devrait être réinitialisé maintenant 169 | NCRESETSAFEVALUESKIP_TOAST=Votre coffre-fort semble être okay maintenant 170 | 171 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST=La valeur maximale a été atteinte 172 | NCSAFELOOPNOTINNIGHTCLUB_TOAST=Vous ne semblez pas être dans votre boîte de nuit. Assurez-vous d'être dans votre boite de nuit avec le coffre ouvert avant d'utiliser cette fonction ! 173 | NCSAFELOOPTIMEOUT_TOAST=Il semble que vous ayez atteint le délai d'attente de la transaction 174 | NCSAFELOOPSAFEOVERLIMIT_TOAST=Huhum, il semble que le coffre-fort ait dépassé la limite. Utilisez [Réinitialiser la valeur du coffre-fort] puis réessayez 175 | ! -- Références NCRESETSAFEVALUE 176 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST=Quelque chose ne s'est pas passé comme prévu... si vous pouvez reproduire ce problème, merci de le signaler 177 | 178 | ! MCLIST=Business de Clubs de Motards 179 | MCLIST_DESC=Merci de noter que les valeurs de vente sont limitées à 2,5 millions de dollars 180 | 181 | BUNKERLIST_DESC=Merci de noter que les ventes sont limitées à 2,7 millions de dollars 182 | 183 | TELEPORTTO=TP à votre {1} 184 | TELEPORTTO_DESC=Vous téléporte à votre {1} 185 | ! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 186 | NOTINNIGHTCLUB_TOAST=Vous n'êtes pas dans votre Boite de Nuit! 187 | 188 | JOINDISCORD=Rejoignez le Discord 189 | SHOWMOTD=Afficher l'annonce du jour 190 | SHOWMOTDBLANK_TOAST=L'annonce du jour est vide 191 | WARNINGRISKY_TOAST=AVERTISSEMENT : Toutes les fonctionnalités de ce script sont considérées comme risquées ! Il y a une chance que vous soyez banni dans un nombre inconnu de jours (les bannissements sont retardés de façon aléatoire). Vous avez été averti. 192 | 193 | ALREADYINPROPERTY=Vous êtes déjà dans votre {1}! 194 | ! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 195 | 196 | ! Nightclub categories 197 | HUBCARGO=Marchandises 198 | HUBWEED=Cannabis 199 | HUBWEAPONS=Armes 200 | HUBMETH=Méth 201 | HUBCOCAINE=Cocaine 202 | HUBCASH=Fausse Monnaie 203 | HUBFORGERY=Contrefaçon 204 | 205 | ! MC categories 206 | MCFORGERY=Contrefaçon 207 | MCWEED=Cannabis 208 | MCCASH=Fausse monnaie 209 | MCMETH=Méth 210 | MCCOCAINE=Cocaine 211 | MCBUNKER=Bunker 212 | 213 | ! Special Cargo 214 | SPECIALCARGONOMORECRATES=Vous n'avez plus de caisses dans votre entrepôt ! 215 | SPECIALCARGONEEDCEO=Vous êtes dans un Club de Motards ! Vous devez être dans un PDG. 216 | SPECIALCARGOMAXCRATESOURCE=Nombre maximum de caisses 217 | SPECIALCARGOMAXCRATESOURCE_DESC=Définit la quantité de caisses que votre personnel livrera. 218 | SPECIALCARGOSETDELIVERTIME=Réduire le délai de livraison 219 | SPECIALCARGOSETDELIVERTIME_DESC=Met à zéro le temps qui doit s'écouler avant que votre personnel n'effectue la livraison. -------------------------------------------------------------------------------- /MusinessBanagersource.lua: -------------------------------------------------------------------------------- 1 | --[[ https://imgur.com/a/kchuhXW 2 | 3 | Credits: 4 | - https://www.unknowncheats.me/forum/3337151-post1560.html <3 boredom1234 5 | 6 | Script created by ICYPhoenix#0727 and Ren#5219 7 | ]] 8 | --util.require_natives(1651208000) 9 | local IS_RELEASE_VERSION = false 10 | local IS_BETA_VERSION = false 11 | local IGNORE_VERSION_DIFFERENCE = false 12 | local THIS_RELEASE_VERSION = "1.0.0" 13 | local STAND_RESOURCE_DIR = filesystem.resources_dir() 14 | local MB_RESOUCES_DIR = STAND_RESOURCE_DIR .. "Musiness Banager/" 15 | local MB_TRANSLATIONS_DIR = MB_RESOUCES_DIR .. "Translations/" 16 | local MBPrefix = "[MusinessBanager] " 17 | local og_toast = util.toast 18 | local og_log = util.log 19 | local nullsub = function() --[[util.toast("nullsub")]] end 20 | util.toast = function(str, flag) assert(str != nil, "No string given") if flag ~= nil then og_toast(MBPrefix .. tostring(str), flag) else og_toast(MBPrefix .. tostring(str)) end end 21 | util.log = function(str) assert(str != nil, "No string given") og_log(MBPrefix .. tostring(str)) end 22 | util.yield_x = function(int) for i = 1, int do util.yield_once() end end -- yields x amount of ticks 23 | local menu, players, entities, directx, util, v3, lang, filesystem, async_http, memory = menu, players, entities, directx, util, v3, lang, filesystem, async_http, memory 24 | 25 | --#region natives 26 | -- regex for removing comments in the native arguments: --\[\[(?:(?:\w)|(?:\d)|\*)*(?: \((?:(?:\w)|(?:\d)|\*)*\))*\]\] 27 | -- regex for finding natives in the script that have not yet been converted to local-natives: [A-Z][A-Z][A-Z]\.(?:_|[A-Z][A-Z][A-Z][A-Z][A-Z]) 28 | local nv = native_invoker 29 | local ENTITY_SET_ENTITY_COORDS_NO_OFFSET = function(entity,xPos,yPos,zPos,xAxis,yAxis,zAxis)nv.begin_call();nv.push_arg_int(entity);nv.push_arg_float(xPos);nv.push_arg_float(yPos);nv.push_arg_float(zPos);nv.push_arg_bool(xAxis);nv.push_arg_bool(yAxis);nv.push_arg_bool(zAxis);nv.end_call("239A3351AC1DA385");end 30 | local ENTITY_GET_ENTITY_COORDS = function(entity,alive)nv.begin_call();nv.push_arg_int(entity);nv.push_arg_bool(alive);nv.end_call("3FEF770D40960D5A");return nv.get_return_value_vector3();end 31 | local ENTITY_FREEZE_ENTITY_POSITION = function(entity,toggle)nv.begin_call();nv.push_arg_int(entity);nv.push_arg_bool(toggle);nv.end_call("428CA6DBD1094446");end 32 | local CAM_CREATE_CAM_WITH_PARAMS = function(camName,posX,posY,posZ,rotX,rotY,rotZ,fov,p8,p9)nv.begin_call();nv.push_arg_string(camName);nv.push_arg_float(posX);nv.push_arg_float(posY);nv.push_arg_float(posZ);nv.push_arg_float(rotX);nv.push_arg_float(rotY);nv.push_arg_float(rotZ);nv.push_arg_float(fov);nv.push_arg_bool(p8);nv.push_arg_int(p9);nv.end_call("B51194800B257161");return nv.get_return_value_int();end 33 | local CAM_DESTROY_CAM = function(cam,bScriptHostCam)nv.begin_call();nv.push_arg_int(cam);nv.push_arg_bool(bScriptHostCam);nv.end_call("865908C81A2C22E9");end 34 | local CAM_GET_FINAL_RENDERED_CAM_FOV = function()nv.begin_call();nv.end_call("80EC114669DAEFF4");return nv.get_return_value_float();end 35 | local CAM_GET_FINAL_RENDERED_CAM_ROT = function(rotationOrder)nv.begin_call();nv.push_arg_int(rotationOrder);nv.end_call("5B4E4C817FCC2DFB");return nv.get_return_value_vector3();end 36 | local CAM_SET_CAM_ACTIVE = function(cam,active)nv.begin_call();nv.push_arg_int(cam);nv.push_arg_bool(active);nv.end_call("026FB97D0A425F84");end 37 | local CAM_RENDER_SCRIPT_CAMS = function(render,ease,easeTime,p3,p4,p5)nv.begin_call();nv.push_arg_bool(render);nv.push_arg_bool(ease);nv.push_arg_int(easeTime);nv.push_arg_bool(p3);nv.push_arg_bool(p4);nv.push_arg_int(p5);nv.end_call("07E5B515DB0636FC");end 38 | local GRAPHICS_TOGGLE_PAUSED_RENDERPHASES = function(toggle)nv.begin_call();nv.push_arg_bool(toggle);nv.end_call("DFC252D8A3E15AB7");end 39 | local GRAPHICS_DONT_RENDER_IN_GAME_UI = function(p0)nv.begin_call();nv.push_arg_bool(p0);nv.end_call("22A249A53034450A");end 40 | local PAD_SET_CONTROL_VALUE_NEXT_FRAME = function(padIndex,control,amount)nv.begin_call();nv.push_arg_int(padIndex);nv.push_arg_int(control);nv.push_arg_float(amount);nv.end_call("E8A25867FBA3B05E");return nv.get_return_value_bool();end 41 | local PAD_SET_CURSOR_POSITION = function(x,y)nv.begin_call();nv.push_arg_float(x);nv.push_arg_float(y);nv.end_call("FC695459D4D0E219");return nv.get_return_value_bool();end 42 | local PLAYER_PLAYER_PED_ID = function()nv.begin_call();nv.end_call("D80958FC74E988A6");return nv.get_return_value_int();end 43 | local SYSTEM_START_NEW_SCRIPT = function(scriptName,stackSize)nv.begin_call();nv.push_arg_string(scriptName);nv.push_arg_int(stackSize);nv.end_call("E81651AD79516E48");return nv.get_return_value_int();end 44 | local SCRIPT_GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH = function(scriptHash)nv.begin_call();nv.push_arg_int(scriptHash);nv.end_call("2C83A9DA6BFFC4F9");return nv.get_return_value_int();end 45 | local SCRIPT_DOES_SCRIPT_EXIST = function(scriptName)nv.begin_call();nv.push_arg_string(scriptName);nv.end_call("FC04745FBE67C19A");return nv.get_return_value_bool();end 46 | local SCRIPT_REQUEST_SCRIPT = function(scriptName)nv.begin_call();nv.push_arg_string(scriptName);nv.end_call("6EB5F71AA68F2E8E");end 47 | local SCRIPT_HAS_SCRIPT_LOADED = function(scriptName)nv.begin_call();nv.push_arg_string(scriptName);nv.end_call("E6CC9F3BA0FB9EF1");return nv.get_return_value_bool();end 48 | local SCRIPT_SET_SCRIPT_AS_NO_LONGER_NEEDED = function(scriptName)nv.begin_call();nv.push_arg_string(scriptName);nv.end_call("C90D2DCACD56184C");end 49 | local STATS_STAT_GET_INT = function(statHash,outValue,p2)nv.begin_call();nv.push_arg_int(statHash);nv.push_arg_pointer(outValue);nv.push_arg_int(p2);nv.end_call("767FBC2AC802EF3D");return nv.get_return_value_bool();end 50 | local STATS_STAT_SET_INT = function(statName,value,save)nv.begin_call();nv.push_arg_int(statName);nv.push_arg_int(value);nv.push_arg_bool(save);nv.end_call("B3271D7AB655B441");return nv.get_return_value_bool();end 51 | local STATS_STAT_SET_BOOL = function(statName,value,save)native_invoker.begin_call();native_invoker.push_arg_int(statName);native_invoker.push_arg_bool(value);native_invoker.push_arg_bool(save);native_invoker.end_call("4B33C4243DE0C432");return native_invoker.get_return_value_bool();end 52 | local STATS_STAT_GET_BOOL = function(statHash,outValue,p2)native_invoker.begin_call();native_invoker.push_arg_int(statHash);native_invoker.push_arg_pointer(outValue);native_invoker.push_arg_int(p2);native_invoker.end_call("11B5E6D2AE73F48E");return native_invoker.get_return_value_bool();end 53 | local STATS_SET_PACKED_STAT_BOOL_CODE = function(index,value,characterSlot)native_invoker.begin_call();native_invoker.push_arg_int(index);native_invoker.push_arg_bool(value);native_invoker.push_arg_int(characterSlot);native_invoker.end_call("DB8A58AEAA67CD07");end 54 | local STATS_GET_PACKED_STAT_BOOL_CODE = function(index,characterSlot)native_invoker.begin_call();native_invoker.push_arg_int(index);native_invoker.push_arg_int(characterSlot);native_invoker.end_call("DA7EBFC49AE3F1B0");return native_invoker.get_return_value_bool();end 55 | local NETSHOPPING_NET_GAMESERVER_TRANSACTION_IN_PROGRESS = function()native_invoker.begin_call()native_invoker.end_call_2(0x613F125BA3BD2EB9)return native_invoker.get_return_value_bool();end 56 | local TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME = function(scriptName)native_invoker.begin_call()native_invoker.push_arg_string(scriptName)native_invoker.end_call_2(0x9DC711BC69C548DF)end 57 | 58 | --#endregion natives 59 | 60 | local MenuLabels = { 61 | BUNKER="Bunker", 62 | BUSINESS="Business", 63 | MCBUSINESS="MC Business", 64 | WAREHOUSE="Warehouse", 65 | NIGHTCLUB="Nightclub", 66 | NIGHTCLUBSAFE="Nightclub Safe", 67 | SPECIALCARGO="Special Cargo", 68 | SELLMISSION="Sell Mission", 69 | BUYMISSION="Buy Mission", 70 | START="Start", 71 | MONEY="Money", 72 | STOCK="Stock", 73 | SUPPLIES="Supplies", 74 | CRATES="Crates", 75 | PRODUCT="Product", 76 | INFOOVERLAY="Info Overlay", 77 | TERRORBYTE="Terrorbyte", 78 | --! STOCK, SUPPLIES, PRODUCT should all be what the game calls it, or something equivalent 79 | --! You might want to leave TERRORBYTE the same, unless the game calls it something different 80 | 81 | HTTPGIVEUP="Failed to establish connection to remote.", 82 | HTTPINVALID="Received an invalid response from remote! This may be due to Cloudflare or your antivirus blocking the connection. Please either establish a new VPN connection, and or switch networks.", 83 | HTTPFAILSAFE="Activating Killswitches due to failsafe.", 84 | SCRIPTOUTOFDATE="Script is out of date! Please restart the script to get the latest from the repository!", 85 | 86 | KILLSWITCH_SAFELOOP="Killing Nightclub Safe AFK Money Loop due to killswitch", 87 | KILLSWITCH_SPECIALCARGO="Killing Special Cargo due to killswitch", 88 | KILLSWITCH_MAXSELLPRICE="Killing Max Sell Price due to killswitch", 89 | KILLSWITCH_AUTOCOMPLETE="Killing Auto Complete due to killswitch", 90 | 91 | TRANSACTIONSSTUCK_TOAST="It seems that your transactions are stuck. Please switch sessions or restart the game.", 92 | BEALONE_TOAST="There are too many players in your lobby! Triggering bealone", 93 | 94 | PREFIX_SAFELOOP="[Safe Loop] {1}", 95 | PREFIX_SPECIALCARGO="[Special Cargo] {1}", 96 | PREFIX_TOTALEARNED="Total Earned: {1}", 97 | PREFIX_MOTD="MOTD: {1}", 98 | --! {1} is a number, the amount of money earned in total. 99 | PREFIX="{1} {2}", 100 | --! This can be '[x1] x2' where x1 is the prefix, and x2 is the message. This might go unused though.. 101 | 102 | INFO_SCWAREHOUSE="SC Warehouse {1}: {2}/{3}", 103 | --! {1} is slot {2} is amount {3} is capacity 104 | INFO_HUBBUSINESS="Hub {1}: {2}/{3}", 105 | --! {1} is name {2} is stock {3} is max capacity 106 | INFO_NCSAFE="Nightclub Safe $: {1}", 107 | --! {1} is value 108 | INFO_MCBUSINESS="MC {1}: {2}% | {3}/{4}", 109 | --! {1} is name {2} is supplies {3} is product {4} is capacity 110 | INFO_BUNKER="Bunker: {1}% | {2}/{3}", 111 | --! {1} is supplies {2} is product {3} is capacity 112 | 113 | FINDSAFERWAYS="Find safer ways to make money", 114 | FINDSAFERWAYS_DESC="Please at least read this before proceeding with the money options found below", 115 | 116 | MAXSELLPRICE="Max Sell Price", 117 | MAXSELLPRICE_DESC="Sell your {1} for the maximum possible price no matter how much {2} you have", 118 | --! {1} and {2} are the same, and may be one of the following: [STOCK], [SUPPLIES], or [PRODUCT] 119 | 120 | MONITOR="Monitor", 121 | 122 | MONITOR_EXTRA="Monitor {1}", 123 | MONITOR_DESC="Shows you the amount of {1} you have in your {2}, using the {3}", 124 | --! {1} could be [STOCK], [SUPPLIES], [PRODUCT], or [MONEY] {2} could be [NIGHTCLUBSAFE], [BUSINESS], or [WAREHOUSE]. {3} is [INFOOVERLAY] for now, but could be changed in the future. 125 | 126 | BYPASSCOOLDOWN="Bypass {1} Cooldown", 127 | --! {1} may be one of the following: [SELLMISSION], [BUYMISSION] 128 | BYPASSCOOLDOWN_DESC="Allows you to {1} another {2} without having to wait on a cooldown", 129 | --! {1} is [START] for now, and {2} could be [SELLMISSION] or [BUYMISSION] for now. 130 | 131 | SETPRODUCT="Set Product", 132 | SETPRODUCT_DESC="Set how much product you have directly", 133 | SETPRODUCT_TOAST="Product set.", 134 | 135 | MAXPRODUCTALL="Max Product of All", 136 | MAXPRODUCTALL_DESC="Sets all of your product amount to max", 137 | MAXPRODUCTALL_TOAST="All product maxed.", 138 | 139 | MAXPRODUCTIONSPEED="Max Production Speed", 140 | MCMAXPRODUCTIONSPEED_DESC="Takes effect instantly", 141 | NCMAXPRODUCTIONSPEED_DESC="Takes effect after a unit finishes producing", 142 | MAXPRODUCTIONSPEED_TOAST="Production speed maxed.", 143 | MAXPRODUCTIONSPEEDSLOW_TOAST="Production speed maxed. It will take effect once a good has been produced.", 144 | 145 | MAXIMUMCAPACITY="Maximum Capacity", 146 | MAXIMUMCAPACITY_DESC="Affects how much stock you can potentially hold", 147 | MAXIMUMCAPACITY_TOAST="Capacity modified.", 148 | 149 | SUPPLYPRODUCTRATIO="Supply->Product Ratio", 150 | SUPPLYPRODUCTRATIO_DESC="Sets how much supply it takes to make one product. Lower values means better efficiency", 151 | SUPPLYPRODUCTRATIO_TOAST="Ratio modified.", 152 | 153 | RESUPPLY="Resupply", 154 | RESUPPLY_DESC="Will instantly deliver supplies to your business, free of charge", 155 | 156 | FORCERESUPPLY="Force Resupply", 157 | FORCERESUPPLY_DESC="If automatic resupply stops working and you are *OUT* of supplies, press this once and hope that it kickstarts everything. Also try restarting your business.", 158 | 159 | TRIGGERPRODUCTION="Trigger Production", 160 | TRIGGERPRODUCTION_DESC="Puts production into effect immediately", 161 | TRIGGERPRODUCTION_TOAST="Production Triggered.", 162 | 163 | ENFORCEEASIESTMISSION="Enforce Easiest Sell Mission", 164 | ENFORCEEASIESTMISSION_DESC="This will make sure you always get the quickest and easiest sell mission. Although, if you're too quick you may not get paid?", 165 | 166 | SPECIALCARGOLIST_DESC="Note that sell values cap out at $6m.", 167 | 168 | SPECIALCARGOWAREHOUSE_DESC="Select which warehouse to monitor and modify, since you can own five of them.", 169 | SPECIALCARGOMONITOR_DESC="Displays how many special cargo crates you have in the selected warehouse", 170 | SPECIALCARGONOWAREHOUSE="No Warehouse", 171 | SPECIALCARGONOWAREHOUSE_DESC="You don't have a warehouse in this slot!", 172 | SPECIALCARGOMAXSELLPRICE_DESC="Changes the sell price of your CEO's Special Cargo crates to $6m. Keep this enabled to ensure proper math on future sales", 173 | OPENSCREEN="Open {1} Screen", 174 | OPENSCREEN_DESC="Opens the {1} Screen", 175 | --! {1} could be [TERRORBYTE] or [WAREHOUSE] 176 | SELLACRATE="Press To Sell A Crate", 177 | SELLACRATE_DESC="Automatically sells one Special Cargo Crate", 178 | 179 | NOTINSELECTEDWAREHOUSE_TOAST="You are not at your currently selected warehouse!", 180 | 181 | AUTOCOMPLETE="Autocomplete {1}", 182 | AUTOCOMPLETE_DESC="Makes the {1} complete automatically", 183 | --! {1} could be [SELLMISSION] or [BUYMISSION] 184 | 185 | NCLIST_DESC="Note that sell values cap out at $4m.\nDO NOT attempt to 'sell all'", 186 | NCREVENUE="Revenue", 187 | NCREVENUE_DESC="Edits how much revenue your Nightclub gains, no matter how popular you are", 188 | NCREVENUE_TOAST="Revenue set.", 189 | 190 | NCMAXPOPULARITY="Max Nightclub Popularity", 191 | NCMAXPOPULARITY_DESC="Sets your Nightclub popularity to 100%", 192 | NCMAXPOPULARITY_TOAST="Maxed Nightclub popularity.", 193 | 194 | NCSAFELOOP="AFK Money Loop", 195 | NCSAFELOOP_DESC="Open your Nightclub safe before enabling this feature!\nWill allow you to passively gain $300k every ~4-5 seconds", 196 | 197 | NCSAFELOOPDELAY="Loop Delay", 198 | NCSAFELOOPDELAY_DESC="Will set how long the afk loop waits (in milliseconds) in between major steps", 199 | NCSAFELOOPDELAY_TOAST="Delay modified.", 200 | 201 | NCSAFELOOPTRANSACTIONTIMEOUT="Transaction Timeout", 202 | NCSAFELOOPTRANSACTIONTIMEOUT_DESC="Sets how long to wait for a transaction to process before giving up", 203 | NCSAFELOOPTIMEOUTMODIFIED_TOAST="Transaction Timeout modified.", 204 | 205 | NCSAFELOOPSTOP="Stop Loop After $x Amount", 206 | NCSAFELOOPSTOP_DESC="Will stop the AFK Money Loop after you earn the set amount", 207 | NCSAFELOOPSTOP_TOAST="Limit set.", 208 | 209 | NCRESETSAFEVALUE="Reset Safe Value", 210 | --! Referenced in [NCSAFELOOPSAFEOVERLIMIT_TOAST] 211 | NCRESETSAFEVALUE_DESC="If your Nightclub Safe is above $300k or below $0 then this should fix it.", 212 | NCRESETSAFEVALUEWAIT_TOAST="Please wait while your Nightclub Safe is being reset.", 213 | NCRESETSAFEVALUESUCCESS_TOAST="Your Nightclub Safe should be reset now.", 214 | NCRESETSAFEVALUESKIP_TOAST="Your Nightclub Safe appears to be fine", 215 | 216 | NCSAFELOOPMAXIMUMVALUEREACHED_TOAST="Maximum value has been reached!", 217 | NCSAFELOOPNOTINNIGHTCLUB_TOAST="You don't appear to be in your Nightclub. Make sure you are in your Nightclub with the safe open before using this feature!", 218 | NCSAFELOOPTIMEOUT_TOAST="Seems like you've hit transaction timeout.", 219 | NCSAFELOOPSAFEOVERLIMIT_TOAST="Uh oh, it seems like the safe went over the limit. Use 'Reset Safe Value' then try again", 220 | --! References [NCRESETSAFEVALUE] 221 | NCSAFELOOPSOMETHINGWENTWRONG_TOAST="Something didn't go as it should... if you can reproduce this issue, please report it.", 222 | 223 | MCLIST_DESC="Note that sell values cap out at $2.5m.", 224 | 225 | BUNKERLIST_DESC="Note that sell values cap out at $2.7m.", 226 | 227 | TELEPORTTO="Teleport to {1}", 228 | TELEPORTTO_DESC="Teleports you to your {1}", 229 | --! {1} may be one of the following: [PROPERTY], [WAREHOUSE], [NIGHTCLUB], or [NIGHTCLUBSAFE] 230 | 231 | NOTINNIGHTCLUB_TOAST="You are not in your Nightclub!", 232 | 233 | SHOWMOTDBLANK_TOAST="The MOTD is blank.", 234 | WARNINGRISKY_TOAST="WARNING: All features in this script are considered risky! There is a chance you will get banned within an unknown number of days (bans are delayed randomly). You have been warned.", 235 | 236 | --! Nightclub 237 | ALREADYINPROPERTY="You are already in your {1}!", 238 | --! {1} may be [NIGHTCLUB], [WAREHOUSE], [BUSINESS] 239 | 240 | --! Nightclub categories 241 | HUBCARGO="Cargo", 242 | HUBWEED="Weed", 243 | HUBWEAPONS="Weapons", 244 | HUBMETH="Meth", 245 | HUBCOCAINE="Cocaine", 246 | HUBCASH="Cash", 247 | HUBFORGERY="Forgery", 248 | 249 | --! MC categories 250 | MCFORGERY="Forgery", 251 | MCWEED="Weed", 252 | MCCASH="Cash", 253 | MCMETH="Meth", 254 | MCCOCAINE="Cocaine", 255 | MCBUNKER="Bunker", 256 | 257 | --! Special Cargo 258 | SPECIALCARGONOMORECRATES="You have no more crates in your warehouse!", 259 | SPECIALCARGONEEDCEO="You are in an MC! You need to be in a CEO.", 260 | SPECIALCARGOMAXCRATESOURCE="Max Crate Sourcing Amount", 261 | SPECIALCARGOMAXCRATESOURCE_DESC="Sets the amount of crates your staff will deliver", 262 | SPECIALCARGOSETDELIVERTIME="Minimize Delivery Time", 263 | SPECIALCARGOSETDELIVERTIME_DESC="Sets the amount of time to pass before you staff will deliver, to zero", 264 | } 265 | 266 | -- Register English labels now 267 | for k, v in MenuLabels do 268 | MenuLabels[k] = lang.register(v) 269 | end 270 | 271 | local MCBusinessPropertyInfo = { 272 | [1] = {name = "Paleto Bay Meth Lab", coords = {x = 52.903, y = 6338.585, z = 31.35 }, type = 3}, -- "MP_BWH_METH_1", 273 | [2] = {name = "Mount Chiliad Weed Farm", coords = {x = 416.7524, y = 6520.753, z = 27.7121}, type = 1}, -- "MP_BWH_WEED_1", 274 | [3] = {name = "Paleto Bay Cocaine Lockup", coords = {x = 51.7653, y = 6486.163, z = 31.428 }, type = 4}, -- "MP_BWH_CRACK_1", 275 | [4] = {name = "Paleto Bay Counterfeit Cash Factory", coords = {x = -413.6606, y = 6171.938, z = 31.4782}, type = 2}, -- "MP_BWH_CASH_1", 276 | [5] = {name = "Paleto Bay Forgery Office", coords = {x = -163.6828, y = 6334.845, z = 31.5808}, type = 0}, -- "MP_BWH_FAKEID_1", 277 | [6] = {name = "El Burro Heights Meth Lab", coords = {x = 1454.671, y = -1651.986, z = 67 }, type = 3}, -- "MP_BWH_METH_2", 278 | [7] = {name = "Downtown Vinewood Weed Farm", coords = {x = 102.14, y = 175.26, z = 104.56 }, type = 1}, -- "MP_BWH_WEED_2", 279 | [8] = {name = "Morningwood Cocaine Lockup", coords = {x = -1462.622, y = -381.826, z = 38.802 }, type = 4}, -- "MP_BWH_CRACK_2", 280 | [9] = {name = "Vespucci Canals Counterfeit Cash Factory", coords = {x = -1171.005, y = -1380.922, z = 4.937 }, type = 2}, -- "MP_BWH_CASH_2", 281 | [10] = {name = "Textile City Forgery Office", coords = {x = 299.071, y = -759.072, z = 29.333 }, type = 0}, -- "MP_BWH_FAKEID_2", 282 | [11] = {name = "Senora Desert Meth Lab", coords = {x = 201.8909, y = 2461.782, z = 55.6885}, type = 3}, -- "MP_BWH_METH_3", 283 | [12] = {name = "San Chianski Weed Farm", coords = {x = 2848.369, y = 4450.147, z = 48.5139}, type = 1}, -- "MP_BWH_WEED_3", 284 | [13] = {name = "Zancudo River Cocaine Lockup", coords = {x = 387.5332, y = 3585.042, z = 33.2922}, type = 4}, -- "MP_BWH_CRACK_3", 285 | [14] = {name = "Senora Desert Counterfeit Cash Factory", coords = {x = 636.6344, y = 2785.126, z = 42.0111}, type = 2}, -- "MP_BWH_CASH_3", 286 | [15] = {name = "Grapeseed Forgery Office", coords = {x = 1657.066, y = 4851.732, z = 41.9882}, type = 0}, -- "MP_BWH_FAKEID_3", 287 | [16] = {name = "Terminal Meth Lab", coords = {x = 1181.44, y = -3113.82, z = 6.03 }, type = 3}, -- "MP_BWH_METH_4", 288 | [17] = {name = "Elysian Island Weed Farm", coords = {x = 136.973, y = -2472.795, z = 5.98 }, type = 1}, -- "MP_BWH_WEED_4", 289 | [18] = {name = "Elysian Island Cocaine Lockup", coords = {x = -253.31, y = -2591.15, z = 5.97 }, type = 4}, -- "MP_BWH_CRACK_4", 290 | [19] = {name = "Cypress Flats Counterfeit Cash Factory", coords = {x = 671.451, y = -2667.502, z = 6.0812 }, type = 2}, -- "MP_BWH_CASH_4", 291 | [20] = {name = "Elysian Island Forgery Office", coords = {x = -331.52, y = -2778.97, z = 5.12 }, type = 0}, -- "MP_BWH_FAKEID_4", 292 | [21] = {name = "Grand Senora Oilfields Bunker", coords = {x = 492.8395, y = 3014.057, z = 39.9793}, type = 5}, -- "MP_BUNKER_1", 293 | [22] = {name = "Grand Senora Desert Bunker", coords = {x = 849.603, y = 3021.697, z = 40.3076}, type = 5}, -- "MP_BUNKER_2", 294 | [23] = {name = "Route 68 Bunker", coords = {x = 39.5967, y = 2930.506, z = 54.8034}, type = 5}, -- "MP_BUNKER_3", 295 | [24] = {name = "Farmhouse Bunker", coords = {x = 1572.078, y = 2226.001, z = 77.2829}, type = 5}, -- "MP_BUNKER_4", 296 | [25] = {name = "Smoke Tree Road Bunker", coords = {x = 2110.019, y = 3326.12, z = 44.3526}, type = 5}, -- "MP_BUNKER_5", 297 | [26] = {name = "Thomson Scrapyard Bunker", coords = {x = 2489.36, y = 3162.12, z = 48.0015}, type = 5}, -- "MP_BUNKER_6", 298 | [27] = {name = "Grapeseed Bunker", coords = {x = 1801.273, y = 4705.483, z = 38.8253}, type = 5}, -- "MP_BUNKER_7", 299 | [28] = {name = "Paleto Forest Bunker", coords = {x = -755.5687, y = 5943.835, z = 18.9008}, type = 5}, -- "MP_BUNKER_9", 300 | [29] = {name = "Raton Canyon Bunker", coords = {x = -388.8392, y = 4340.109, z = 55.1741}, type = 5}, -- "MP_BUNKER_10", 301 | [30] = {name = "Lago Zancudo Bunker", coords = {x = -3031.356, y = 3334.059, z = 9.1805 }, type = 5}, -- "MP_BUNKER_11", 302 | [31] = {name = "Chumash Bunker", coords = {x = -3157.599, y = 1376.695, z = 15.866 }, type = 5}, -- "MP_BUNKER_12", 303 | } 304 | 305 | local WarehousePropertyInfo = { 306 | [1] = {name = "Pacific Bait Storage", capacity = 16, coords = {x = 54.191, y = -2569.248, z = 6.0046 }}, -- "MP_WHOUSE_0", 307 | [2] = {name = "White Widow Garage", capacity = 16, coords = {x = -1083.054, y = -1261.893, z = 5.534 }}, -- "MP_WHOUSE_1", 308 | [3] = {name = "Celltowa Unit", capacity = 16, coords = {x = 896.3665, y = -1035.749, z = 35.1096}}, -- "MP_WHOUSE_2", 309 | [4] = {name = "Convenience Store Lockup", capacity = 16, coords = {x = 247.473, y = -1956.943, z = 23.1908}}, -- "MP_WHOUSE_3", 310 | [5] = {name = "Foreclosed Garage", capacity = 16, coords = {x = -424.828, y = 185.825, z = 80.775 }}, -- "MP_WHOUSE_4", 311 | [6] = {name = "Xero Gas Factory", capacity = 111, coords = {x = -1042.482, y = -2023.516, z = 13.1616}}, -- "MP_WHOUSE_5", 312 | [7] = {name = "Derriere Lingerie Backlot", capacity = 42, coords = {x = -1268.119, y = -812.2741, z = 17.1075}}, -- "MP_WHOUSE_6", 313 | [8] = {name = "Bilgeco Warehouse", capacity = 111, coords = {x = -873.65, y = -2735.948, z = 13.9438}}, -- "MP_WHOUSE_7", 314 | [9] = {name = "Pier 400 Utility Building", capacity = 16, coords = {x = 274.5224, y = -3015.413, z = 5.6993 }}, -- "MP_WHOUSE_8", 315 | [10] = {name = "GEE Warehouse", capacity = 42, coords = {x = 1569.69, y = -2129.792, z = 78.3351}}, -- "MP_WHOUSE_9", 316 | [11] = {name = "LS Marine Building 3", capacity = 42, coords = {x = -315.551, y = -2698.654, z = 7.5495 }}, -- "MP_WHOUSE_10", 317 | [12] = {name = "Railyard Warehouse", capacity = 42, coords = {x = 499.81, y = -651.982, z = 24.909 }}, -- "MP_WHOUSE_11", 318 | [13] = {name = "Fridgit Annexe", capacity = 42, coords = {x = -528.5296, y = -1784.573, z = 21.5853}}, -- "MP_WHOUSE_12", 319 | [14] = {name = "Disused Factory Outlet", capacity = 42, coords = {x = -295.8596, y = -1353.238, z = 31.3138}}, -- "MP_WHOUSE_13", 320 | [15] = {name = "Discount Retail Unit", capacity = 42, coords = {x = 349.839, y = 328.889, z = 104.272}}, -- "MP_WHOUSE_14", 321 | [16] = {name = "Logistics Depot", capacity = 111, coords = {x = 926.2818, y = -1560.311, z = 30.7404}}, -- "MP_WHOUSE_15", 322 | [17] = {name = "Darnell Bros Warehouse", capacity = 111, coords = {x = 759.566, y = -909.466, z = 25.244 }}, -- "MP_WHOUSE_16", 323 | [18] = {name = "Wholesale Furniture", capacity = 111, coords = {x = 1037.813, y = -2173.062, z = 31.5334}}, -- "MP_WHOUSE_17", 324 | [19] = {name = "Cypress Warehouses", capacity = 111, coords = {x = 1019.116, y = -2511.69, z = 28.302 }}, -- "MP_WHOUSE_18", 325 | [20] = {name = "West Vinewood Backlot", capacity = 111, coords = {x = -245.3405, y = 203.3286, z = 83.818 }}, -- "MP_WHOUSE_19", 326 | [21] = {name = "Old Power Station", capacity = 42, coords = {x = 539.346, y = -1945.682, z = 24.984 }}, -- "MP_WHOUSE_20", 327 | [22] = {name = "Walker & Sons Warehouse", capacity = 111, coords = {x = 96.1538, y = -2216.4, z = 6.1712 }}, -- "MP_WHOUSE_21", 328 | } 329 | 330 | local NightclubPropertyInfo = { 331 | [1] = {name = "La Mesa Nightclub", coords = {x = 757.009, y = -1332.32, z = 27.1802 }}, 332 | [2] = {name = "Mission Row Nightclub", coords = {x = 345.7519, y = -978.8848, z = 29.2681 }}, 333 | [3] = {name = "Strawberry Nightclub", coords = {x = -120.906, y = -1260.49, z = 29.2088 }}, 334 | [4] = {name = "West Vinewood Nightclub", coords = {x = 5.53709, y = 221.35, z = 107.6566}}, 335 | [5] = {name = "Cypress Flats Nightclub", coords = {x = 871.47, y = -2099.57, z = 30.3768 }}, 336 | [6] = {name = "LSIA Nightclub", coords = {x = -676.625, y = -2458.15, z = 13.8444 }}, 337 | [7] = {name = "Elysian Island Nightclub", coords = {x = 195.534, y = -3168.88, z = 5.7903 }}, 338 | [8] = {name = "Downtown Vinewood Nightclub", coords = {x = 373.05, y = 252.13, z = 102.9097}}, 339 | [9] = {name = "Del Perro Nightclub", coords = {x = -1283.38, y = -649.916, z = 26.5198 }}, 340 | [10] = {name = "Vespucci Canals Nightclub", coords = {x = -1174.85, y = -1152.3, z = 5.56128 }}, 341 | } 342 | 343 | local HubTypesOrderedWithLabels = { 344 | [0] = {name = "Cargo", label = MenuLabels.HUBCARGO}, 345 | [1] = {name = "Weapons", label = MenuLabels.HUBWEAPONS}, 346 | [2] = {name = "Cocaine", label = MenuLabels.HUBCOCAINE}, 347 | [3] = {name = "Meth", label = MenuLabels.HUBMETH}, 348 | [4] = {name = "Weed", label = MenuLabels.HUBWEED}, 349 | [5] = {name = "Forgery", label = MenuLabels.HUBFORGERY}, 350 | [6] = {name = "Cash", label = MenuLabels.HUBCASH}, 351 | } 352 | 353 | local MCBusinessTypesOrderedWithLabels = { 354 | [0] = {name = "Forgery", label = MenuLabels.MCFORGERY}, 355 | [1] = {name = "Weed", label = MenuLabels.MCWEED}, 356 | [2] = {name = "Cash", label = MenuLabels.MCCASH}, 357 | [3] = {name = "Meth", label = MenuLabels.MCMETH}, 358 | [4] = {name = "Cocaine", label = MenuLabels.MCCOCAINE}, 359 | [5] = {name = "Bunker", label = MenuLabels.MCBUNKER}, 360 | } 361 | 362 | local MyBusinesses = { 363 | [0] = {property = 0, type = "None"}, 364 | [1] = {property = 0, type = "None"}, 365 | [2] = {property = 0, type = "None"}, 366 | [3] = {property = 0, type = "None"}, 367 | [4] = {property = 0, type = "None"}, 368 | [5] = {property = 0, type = "None"}, 369 | 370 | ["Forgery"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false}, 371 | ["Weed"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false}, 372 | ["Cash"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false}, 373 | ["Meth"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false}, 374 | ["Cocaine"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false}, 375 | ["Bunker"] = {slot = 0, property = 0, product = 0, supplies = 0, upgraded = false, research = 0}, 376 | 377 | ["Hub"] = { 378 | ["Cargo"] = 0, -- 0 -- CEO? 379 | ["Weapons"] = 0, -- 1 380 | ["Cocaine"] = 0, -- 2 381 | ["Meth"] = 0, -- 3 382 | ["Weed"] = 0, -- 4 383 | ["Forgery"] = 0, -- 5 384 | ["Cash"] = 0, -- 6 385 | } 386 | } 387 | 388 | local MenuCurrentWarehouses = { 389 | [0] = {"Name", {}, ""}, 390 | [1] = {"Name", {}, ""}, 391 | [2] = {"Name", {}, ""}, 392 | [3] = {"Name", {}, ""}, 393 | [4] = {"Name", {}, ""}, 394 | } 395 | 396 | local Selected_Warehouse = 0 397 | local NCSafePos = {x = -1615.6832, y = -3015.7546, z = -75.204994} 398 | 399 | local tunables_global = 262145 400 | local globals = { 401 | Hub = { 402 | MaxSellPrice = 4000000 - 2100000, 403 | ProSpd = 1000, 404 | SellCooldownActive = 1964109+7+1, -- appbusinesshub 405 | 406 | Cargo = { 407 | SellDefaultValue = 10000, 408 | ProSpdDefaultValue = 8400000, 409 | CapDefaultValue = 50, 410 | }, 411 | 412 | Weapons = { 413 | SellDefaultValue = 5000, 414 | ProSpdDefaultValue = 4800000, 415 | CapDefaultValue = 100, 416 | }, 417 | 418 | Cocaine = { 419 | SellDefaultValue = 27000, 420 | ProSpdDefaultValue = 14400000, 421 | CapDefaultValue = 10, 422 | }, 423 | 424 | Meth = { 425 | SellDefaultValue = 11475, 426 | ProSpdDefaultValue = 7200000, 427 | CapDefaultValue = 20, 428 | }, 429 | 430 | Weed = { 431 | SellDefaultValue = 2025, 432 | ProSpdDefaultValue = 2400000, 433 | CapDefaultValue = 80, 434 | }, 435 | 436 | Forgery = { 437 | SellDefaultValue = 1350, 438 | ProSpdDefaultValue = 1800000, 439 | CapDefaultValue = 60, 440 | }, 441 | 442 | Cash = { 443 | SellDefaultValue = 4725, 444 | ProSpdDefaultValue = 3600000, 445 | CapDefaultValue = 40, 446 | }, 447 | }, 448 | 449 | MC = { 450 | MaxSellPrice = 2000000, 451 | 452 | Forgery = { 453 | Sell1DefaultValue = 1350, 454 | Sell2DefaultValue = 1.5, 455 | ProSpd1DefaultValue = 300000, 456 | ProSpd2DefaultValue = 300000, 457 | Ratio1DefaultValue = 4, 458 | Ratio2DefaultValue = 2, 459 | CapDefaultValue = 60, 460 | }, 461 | 462 | Cash = { 463 | Sell1DefaultValue = 4725, 464 | Sell2DefaultValue = 1.5, 465 | ProSpd1DefaultValue = 720000, 466 | ProSpd2DefaultValue = 720000, 467 | Ratio1DefaultValue = 10, 468 | Ratio2DefaultValue = 5, 469 | CapDefaultValue = 40, 470 | }, 471 | 472 | Cocaine = { 473 | Sell1DefaultValue = 27000, 474 | Sell2DefaultValue = 1.5, 475 | ProSpd1DefaultValue = 3000000, 476 | ProSpd2DefaultValue = 3000000, 477 | Ratio1DefaultValue = 50, 478 | Ratio2DefaultValue = 25, 479 | CapDefaultValue = 10, 480 | }, 481 | 482 | Meth = { 483 | Sell1DefaultValue = 11475, 484 | Sell2DefaultValue = 1.5, 485 | ProSpd1DefaultValue = 1800000, 486 | ProSpd2DefaultValue = 1800000, 487 | Ratio1DefaultValue = 24, 488 | Ratio2DefaultValue = 12, 489 | CapDefaultValue = 20, 490 | }, 491 | 492 | Weed = { 493 | Sell1DefaultValue = 2025, 494 | Sell2DefaultValue = 1.5, 495 | ProSpd1DefaultValue = 360000, 496 | ProSpd2DefaultValue = 360000, 497 | Ratio1DefaultValue = 4, 498 | Ratio2DefaultValue = 2, 499 | CapDefaultValue = 80, 500 | }, 501 | 502 | Bunker = { 503 | Sell1DefaultValue = 5000, 504 | Sell2DefaultValue = 1.5, 505 | ProSpd1DefaultValue = 600000, 506 | ProSpd2DefaultValue = 90000, 507 | ProSpd3DefaultValue = 90000, 508 | Ratio1DefaultValue = 10, 509 | Ratio2DefaultValue = 5, 510 | CapDefaultValue = 100, 511 | }, 512 | }, 513 | 514 | SafeLimit = 300000, 515 | SafeStatus1 = 1673941, -- freemode, bitset below "CLUB_PAY" 516 | SafeStatus2 = 2708714, -- freemode 517 | 518 | MCSupplyTime = 1673807+1, -- freemode, above "BPLJT_LOWW", if (!func_XXXXX(bVar1)), +1 because array 519 | 520 | SpecialCargoMaxSellPriceValue = 6000000, 521 | 522 | SpecialCargoSellFuncSomething = 1950043, -- gb_contraband_sell, PED::SET_PED_SHOOT_RATE(iParam0, == 1 523 | SpecialCargoDeliveryCrates = 1882537+13, -- freemode, "SRC_CRG_TICKER_1", == 1 524 | 525 | IsUsingComputerScreen = 77342, -- freemode 526 | } 527 | 528 | local locals = { 529 | ---------------- 530 | -- Special Cargo 531 | ---------------- 532 | --appsecuroserv 533 | SpecialCargoSecuroString = "appsecuroserv", 534 | SpecialCargoSecuroArgs = 4592, -- arg count needed to properly start the script, possibly outdated 535 | SpecialCargoCurrentProperty = 759, -- warehouse property id (non-global-index based)) 536 | SpecialCargoScreenStatus = 582, -- status: 3011 = sold? 1 = error, 3012 = confirm? 537 | SpecialCargoCratesToSell = 763, -- "MP_WH_SELL", "WH 538 | SpecialCargoSellFromOption = 764, -- ^^^^^^^ (not current property id, but buttons [1-3]) 539 | SpecialCargoCurrentBitset = 583, -- ^^^^^^^ bit 13 controls if it is warehouse or securoserv 540 | SpecialCargoStartingPosX = 780, -- struct<3> Local_ -- float (if distance to this from self is greater than 5f to this local, kill script) 541 | SpecialCargoStartingPosY = 780+1, -- ^^^^^^^ 542 | SpecialCargoStartingPosZ = 780+2, -- ^^^^^^^ 543 | 544 | --gb_contraband_sell 545 | SpecialCargoSellString = "gb_contraband_sell", 546 | SpecialCargoSellType = 567+584, 547 | SpecialCargoSellSubType = 567+7, -- return 5000; 548 | SpecialCargoSellAmount = 567+57, -- ^ in function below 549 | SpecialCargoSellStatus = 567+583, 550 | 551 | --gb_contraband_buy 552 | SpecialCargoBuyString = "gb_contraband_buy", 553 | SpecialCargoBuyComplete = 625+192, 554 | SpecialCargoBuyCollected = 625+186, 555 | SpecialCargoBuyCollected2 = 500, 556 | 557 | --appHackerTruck 558 | SpecialCargoBuyScreenString = "appHackerTruck", 559 | SpecialCargoBuyScreenArgs = 4592, -- arg count needed to properly start the script, possibly outdated 560 | 561 | ---------------- 562 | -- NightClub 563 | ---------------- 564 | NCSafeScriptString = "freemode", 565 | NCSafeTransactionStatus = 20362+1, -- , 39, 0); 566 | NCSafeAddMoneyAmount = 20362+2, -- same as above 567 | 568 | NCHubScriptString = "appbusinesshub", 569 | NCHubSellCooldown = 143, -- a local 570 | NCHubSellCooldownBit = 27, -- a bitset bit 571 | 572 | ----EZNCMission = , 573 | 574 | ---------------- 575 | -- MC 576 | ---------------- 577 | MCSellScriptString = "gb_biker_contraband_sell", 578 | MCEZMissionStarted = 729+122, -- == 3 && (Local 579 | MCEZMission = 729+17, -- ^ function below 580 | 581 | MCLaptopString = "appbikerbusiness", 582 | MCLaptopCurrentProperty = 548, -- (iVar2 > -1 && iVar2 < 7) && 583 | } 584 | 585 | -- Also search for [[update]] 586 | 587 | --#region Generated by internal tooling 588 | globals.Hub.Cargo.Sell = tunables_global+24057 589 | globals.Hub.Cargo.ProSpd = tunables_global+24042 590 | globals.Hub.Cargo.Cap = tunables_global+24064 591 | globals.Hub.Weapons.Sell = tunables_global+24051 592 | globals.Hub.Weapons.ProSpd = tunables_global+24036 593 | globals.Hub.Weapons.Cap = tunables_global+24058 594 | globals.Hub.Cocaine.Sell = tunables_global+24052 595 | globals.Hub.Cocaine.ProSpd = tunables_global+24037 596 | globals.Hub.Cocaine.Cap = tunables_global+24059 597 | globals.Hub.Meth.Sell = tunables_global+24053 598 | globals.Hub.Meth.ProSpd = tunables_global+24038 599 | globals.Hub.Meth.Cap = tunables_global+24060 600 | globals.Hub.Weed.Sell = tunables_global+24054 601 | globals.Hub.Weed.ProSpd = tunables_global+24039 602 | globals.Hub.Weed.Cap = tunables_global+24061 603 | globals.Hub.Forgery.Sell = tunables_global+24055 604 | globals.Hub.Forgery.ProSpd = tunables_global+24040 605 | globals.Hub.Forgery.Cap = tunables_global+24062 606 | globals.Hub.Cash.Sell = tunables_global+24056 607 | globals.Hub.Cash.ProSpd = tunables_global+24041 608 | globals.Hub.Cash.Cap = tunables_global+24063 609 | globals.MC.Forgery.Sell1 = tunables_global+17408 610 | globals.MC.Forgery.Sell2 = tunables_global+18964 611 | globals.MC.Forgery.ProSpd1 = tunables_global+17382 612 | globals.MC.Forgery.Ratio1 = tunables_global+17396 613 | globals.MC.Forgery.Ratio2 = tunables_global+17402 614 | globals.MC.Forgery.Cap = tunables_global+18833 615 | globals.MC.Cash.Sell1 = tunables_global+17409 616 | globals.MC.Cash.Sell2 = tunables_global+18964 617 | globals.MC.Cash.ProSpd1 = tunables_global+17383 618 | globals.MC.Cash.Ratio1 = tunables_global+17397 619 | globals.MC.Cash.Ratio2 = tunables_global+17403 620 | globals.MC.Cash.Cap = tunables_global+18841 621 | globals.MC.Cocaine.Sell1 = tunables_global+17410 622 | globals.MC.Cocaine.Sell2 = tunables_global+18964 623 | globals.MC.Cocaine.ProSpd1 = tunables_global+17381 624 | globals.MC.Cocaine.Ratio1 = tunables_global+17398 625 | globals.MC.Cocaine.Ratio2 = tunables_global+17404 626 | globals.MC.Cocaine.Cap = tunables_global+18825 627 | globals.MC.Meth.Sell1 = tunables_global+17411 628 | globals.MC.Meth.Sell2 = tunables_global+18964 629 | globals.MC.Meth.ProSpd1 = tunables_global+17380 630 | globals.MC.Meth.Ratio1 = tunables_global+17399 631 | globals.MC.Meth.Ratio2 = tunables_global+17405 632 | globals.MC.Meth.Cap = tunables_global+18817 633 | globals.MC.Weed.Sell1 = tunables_global+17412 634 | globals.MC.Weed.Sell2 = tunables_global+18964 635 | globals.MC.Weed.ProSpd1 = tunables_global+17379 636 | globals.MC.Weed.Ratio1 = tunables_global+17400 637 | globals.MC.Weed.Ratio2 = tunables_global+17406 638 | globals.MC.Weed.Cap = tunables_global+18809 639 | globals.MC.Bunker.Sell1 = tunables_global+21343 640 | globals.MC.Bunker.Sell2 = tunables_global+21316 641 | globals.MC.Bunker.ProSpd1 = tunables_global+21338 642 | globals.MC.Bunker.ProSpd2 = tunables_global+21339 643 | globals.MC.Bunker.ProSpd3 = tunables_global+21340 644 | globals.MC.Bunker.Ratio1 = tunables_global+21095 645 | globals.MC.Bunker.Ratio2 = tunables_global+21096 646 | globals.MC.Bunker.Cap = tunables_global+21337 647 | globals.SafeCap = tunables_global+23769 648 | globals.SafeRevenue = tunables_global+23746 649 | globals.MCSupplyDelay = tunables_global+18853 650 | globals.BunkSupplyDelay = tunables_global+21363 651 | globals.SpecialCargoBypassBuyCooldown = tunables_global+15588 652 | globals.SpecialCargoBypassSellCooldown = tunables_global+15589 653 | globals.SpecialCargoCrateMaxThreshold = tunables_global+15820 654 | globals.SpecialCargoRewardPerCrate = tunables_global+15841 655 | globals.SpecialCargoCrateMultiplier3 = tunables_global+16682 656 | globals.SpecialCargoCrateMultiplier2 = tunables_global+16683 657 | globals.SpecialCargoCrateMultiplier1 = tunables_global+16684 658 | globals.SpecialCargoBonus = tunables_global+15613 659 | globals.SpecialCargoDeliveryTime = tunables_global+31962 660 | --#endregion Generated by internal tooling 661 | 662 | local TotalEarnedTypes = { 663 | --type = {prefix = label, amount = 0} 664 | -- Do not use GetLabelText in here, these are prefixes and will be converted later 665 | safeloop = {prefix = MenuLabels.PREFIX_SAFELOOP, amount = 0}, 666 | specialcargo = {prefix = MenuLabels.PREFIX_SPECIALCARGO, amount = 0}, 667 | } 668 | 669 | local I32_MAX = 2147483647 670 | 671 | ----------------------------------- 672 | -- String Functions 673 | ----------------------------------- 674 | --#region String Functions 675 | 676 | local function ReplacePlaceholder(str, rep, num) 677 | local b, e = str:find("{"..num.."}") 678 | if b and e then 679 | return (str:sub(0, b-1) .. rep .. str:sub(e+1, -1)) 680 | else 681 | util.log(string.format("Expected {%i} Placeholder in: %s", num, str)) 682 | return str 683 | end 684 | end 685 | 686 | ---@param label string 687 | ---@param ... string|integer 688 | ---@return string 689 | local function GetLabelText(label, ...) 690 | -- Usage: GetLabelText("Press {1} to interact.", "E") -- Returns "Press E to interact." 691 | -- Usage: GetLabelText("Press {1} to open {2}.", "X", "the menu") -- Returns "Press X to open the menu." 692 | -- Usage: GetLabelText("Press {2} to open {1}.", "in fullscreen", "F") -- Returns "Press F to open in fullscreen." 693 | -- Note: NUMBER OF ARGS GIVEN TO FUNCTION AND ARGS IN LABEL MUST MATCH! 694 | -- Note: EMPTY ARGS OR DUPLICATE ARGS IN LABEL IS UNDEFINED BEHAVIOUR! 695 | local args = {...} 696 | local str = lang.get_localised(label) 697 | for i = 1, #args do 698 | str = ReplacePlaceholder(str, lang.get_localised(args[i]), i) 699 | end 700 | return str 701 | end 702 | local function GetLabelTextLiteral(label, ...) 703 | local args = {...} 704 | local str = lang.get_localised(label) 705 | for i = 1, #args do 706 | str = ReplacePlaceholder(str, args[i], i) 707 | end 708 | return str 709 | end 710 | 711 | local function GetKeyValueFromLine(line, size) 712 | local find = string.find(line, "=") 713 | if not find then return end 714 | size = size or 2 715 | local key = string.sub(line, 0, find-size) 716 | local value = string.sub(line, find+size, -1) 717 | return key, value 718 | end 719 | 720 | local function GetCharacterFromString(str, charpos) 721 | return str:sub(charpos, charpos) 722 | --return str[charpos] -- pluto only 723 | end 724 | --#endregion String Functions 725 | 726 | ----------------------------------- 727 | -- Version Functions 728 | ----------------------------------- 729 | --#region Version Functions 730 | 731 | local function VersionStringToTable(str) 732 | local result = {} 733 | local s = str .. "." 734 | for match in string.gmatch(s, "(.-)%.") do 735 | table.insert(result, match) 736 | end 737 | return result 738 | end 739 | 740 | ---@param lversion string 741 | ---@param rversion string 742 | ---@param vtypes table? 743 | ---@return boolean 744 | ---@return string 745 | -- returns true if up to date or above date, false if out of date 746 | local function VersionCheck(lversion, rversion, vtypes) 747 | local lvtable = VersionStringToTable(lversion) 748 | local rvtable = VersionStringToTable(rversion) 749 | for index in ipairs(lvtable) do 750 | if lvtable[index] < rvtable[index] then 751 | return false, "out of date by a " .. (vtypes and vtypes[index] or index) .. " version" 752 | elseif lvtable[index] > rvtable[index] then 753 | break 754 | end 755 | end 756 | return true, "is not out of date" 757 | end 758 | --#endregion Version Functions 759 | 760 | ----------------------------------- 761 | -- Translation Functions 762 | ----------------------------------- 763 | --#region Translation Functions 764 | 765 | ---@return boolean 766 | ---@return table 767 | local function GetTranslationFileMetadata(path) 768 | local metadata = {} 769 | local file, err = io.open(path, "r") 770 | if file then 771 | local line = file:read("l") 772 | local iter = 0 773 | while GetCharacterFromString(line, 1) == "@" do 774 | local key, value = GetKeyValueFromLine(line:sub(2), 1) 775 | if key then 776 | metadata[key] = value 777 | else 778 | --util.log("Failure in getting key-value from line:\n"..line) 779 | if not SCRIPT_SILENT_START then 780 | util.toast("Failure in reading translation file!") 781 | end 782 | break 783 | end 784 | if iter >= 10 then 785 | break 786 | end 787 | iter = iter + 1 788 | line = file:read("l") 789 | end 790 | file:close() 791 | else 792 | --util.log("Failure in opening:\n"..path.."\nReason: "..(err or "unspecified")) 793 | return false, metadata 794 | end 795 | return true, metadata 796 | end 797 | 798 | ---@param language table|string 799 | local function TranslateLabels(path) 800 | local lvalue, rvalue 801 | for line in io.lines(path) do 802 | local first_char = GetCharacterFromString(line, 1) 803 | if first_char == "!" or first_char == "#" or first_char == "@" then 804 | 805 | else 806 | lvalue, rvalue = GetKeyValueFromLine(line, 1) 807 | if lvalue then 808 | if MenuLabels[lvalue] ~= nil then 809 | lang.translate(MenuLabels[lvalue], rvalue:gsub("\\n", "\n") or "ERROR") 810 | else 811 | util.toast("Error occurred while reading Translation file. Translation file may be corrupt or out of date.") 812 | --util.log("Translation file attempted to assign a non-existant MenuLabel a value. $"..lvalue) 813 | end 814 | end 815 | end 816 | end 817 | end 818 | 819 | do 820 | local l = lang.get_current() 821 | local path = MB_TRANSLATIONS_DIR .. l .. ".txt" 822 | if filesystem.exists(path) then 823 | lang.set_translate(l) 824 | TranslateLabels(path) 825 | end 826 | end 827 | --#endregion Translation Functions 828 | 829 | local menu_findsaferways = menu.hyperlink(menu.my_root(), MenuLabels.FINDSAFERWAYS, "https://stand.sh/help/money", MenuLabels.FINDSAFERWAYS_DESC) 830 | if not SCRIPT_SILENT_START then 831 | util.toast(lang.get_string(MenuLabels.WARNINGRISKY_TOAST, lang.get_current())) 832 | end 833 | 834 | ----------------------------------- 835 | -- HTTP Functions 836 | ----------------------------------- 837 | --#region HTTP Functions 838 | local MOTD = "" 839 | 840 | local HTTPHosts = { 841 | {HOST = "gist.githubusercontent.com", PATH = "/VSussyImpostor/8cf3bf39ae47218c4ee20a9ef96871ca/raw"}, 842 | {HOST = "pastebin.com", PATH = "/raw/yaMG2Vz1"}, 843 | } 844 | 845 | --HTTP Contents below 846 | --[[ 847 | motd = "" 848 | version = "0.3.2" 849 | killswitch_safeloop = false 850 | killswitch_specialcargo = false 851 | killswitch_maxsellprice = false 852 | killswitch_autocomplete = false 853 | ]] 854 | 855 | local HTTP = { 856 | PENDING = false, 857 | SUCCESS = false, 858 | TRIES = 0, 859 | HOST = HTTPHosts[1].HOST, 860 | PATH = HTTPHosts[1].PATH, 861 | HOST_NUMBER = 1, 862 | SUCCESS_WAIT_TIME = (90 * 1000), -- 1 minute, 30 seconds 863 | GIVEUP_TIME = (30 * 1000), -- 30 seconds 864 | WAIT_TIME = (3 * 1000), -- 3 seconds 865 | FAILSAFE = false, 866 | } 867 | 868 | local remote = { 869 | motd = "", 870 | version = "", 871 | killswitches = { 872 | ["safeloop"] = false, 873 | ["specialcargo"] = false, 874 | ["maxsellprice"] = false, 875 | ["autocomplete"] = false, 876 | }, 877 | } 878 | 879 | local function StringToBoolean(str) 880 | return str == "true" 881 | end 882 | 883 | local function LinesToTable(lines) 884 | local result = {} 885 | for s in lines:gmatch("[^\r\n]+") do 886 | table.insert(result, s) 887 | end 888 | return result 889 | end 890 | 891 | local function IsKeyKillswitch(key) 892 | return key:startswith("killswitch_") 893 | end 894 | 895 | local function GetKillswitchFromKey(key) 896 | -- 12 is the length of "killswitch_" 897 | return string.sub(key, 12, -1) 898 | end 899 | 900 | local function ActivateFailsafe() 901 | if not HTTP.FAILSAFE then 902 | util.toast(MenuLabels.HTTPFAILSAFE .. " (HTTP E3)") 903 | for name, value in pairs(remote.killswitches) do 904 | remote.killswitches[name] = true 905 | end 906 | HTTP.FAILSAFE = true -- in order to avoid this chunk of code running multiple times 907 | end 908 | end 909 | 910 | local function HandleHTTPResponse(response) 911 | for index, line in ipairs(LinesToTable(response)) do 912 | local key, value = GetKeyValueFromLine(line) 913 | if not key or not value then 914 | util.toast(MenuLabels.HTTPINVALID .. " (HTTP E2)") 915 | HTTP.SUCCESS = false -- don't immmediately trigger failsafe, treat this as a failed request 916 | return -- jump out of handling, try again 917 | end 918 | if IsKeyKillswitch(key) then 919 | remote.killswitches[GetKillswitchFromKey(key)] = StringToBoolean(value) 920 | else 921 | remote[key] = string.sub(value, 2, -2) -- drop the quotes 922 | end 923 | end 924 | 925 | HTTP.FAILSAFE = false -- reset failsafe if it triggered before 926 | 927 | if not IGNORE_VERSION_DIFFERENCE and IS_RELEASE_VERSION and not VersionCheck(THIS_RELEASE_VERSION, remote.version) then 928 | util.toast(lang.get_localised(MenuLabels.SCRIPTOUTOFDATE), TOAST_ALL) 929 | end 930 | end 931 | 932 | local function HTTPGiveUp() 933 | util.toast(MenuLabels.HTTPGIVEUP .. " (HTTP E1)", TOAST_ALL) 934 | ActivateFailsafe() 935 | end 936 | 937 | local function HTTPSwitchHost() 938 | HTTP.HOST_NUMBER = HTTP.HOST_NUMBER == #HTTPHosts and 1 or HTTP.HOST_NUMBER + 1 939 | HTTP.HOST = HTTPHosts[HTTP.HOST_NUMBER].HOST 940 | HTTP.PATH = HTTPHosts[HTTP.HOST_NUMBER].PATH 941 | end 942 | 943 | local function HTTPFail() 944 | -- if not IS_RELEASE_VERSION then 945 | -- util.toast("HTTP Attempt Failed.", TOAST_ALL) 946 | -- end 947 | HTTP.PENDING = false 948 | HTTP.SUCCESS = false 949 | HTTP.TRIES = HTTP.TRIES + 1 950 | end 951 | 952 | local function HTTPSuccess(response) 953 | -- if not IS_RELEASE_VERSION then 954 | -- util.toast("HTTP Attempt Succeeded.", TOAST_ALL) 955 | -- end 956 | HTTP.PENDING = false 957 | HTTP.SUCCESS = true 958 | HandleHTTPResponse(response) 959 | end 960 | 961 | local function HTTPTry() 962 | while HTTP.PENDING do -- prevent two http requests at once 963 | util.yield() 964 | end 965 | HTTP.PENDING = true 966 | async_http.init(HTTP.HOST, HTTP.PATH, HTTPSuccess, HTTPFail) 967 | async_http.dispatch() 968 | while HTTP.PENDING do 969 | util.yield() 970 | end 971 | return HTTP.SUCCESS 972 | end 973 | 974 | local function HTTPHeartbeat() 975 | HTTPTry() 976 | if HTTP.SUCCESS then 977 | util.yield(HTTP.SUCCESS_WAIT_TIME) 978 | elseif HTTP.TRIES == 1 then 979 | util.yield(HTTP.WAIT_TIME) 980 | elseif HTTP.TRIES == 2 then 981 | util.yield(HTTP.WAIT_TIME) 982 | HTTPSwitchHost() 983 | elseif HTTP.TRIES == 3 then 984 | util.yield(HTTP.WAIT_TIME) 985 | elseif HTTP.TRIES >= 4 then -- Forcing an HTTP connection by debug functions will increment the count, so we do >= to account for that case 986 | -- Our connection is fucked, give up 987 | HTTPGiveUp() 988 | util.yield(HTTP.GIVEUP_TIME) 989 | HTTP.TRIES = 0 990 | end 991 | end 992 | 993 | --#endregion HTTP Functions 994 | 995 | ----------------------------------- 996 | -- Custom Command Functions 997 | ----------------------------------- 998 | --#region Custom Command Functions 999 | local function RegisterUpdatingReadOnlyCommand(list, title, value_func) 1000 | local command = menu.readonly(list, title, value_func()) 1001 | local handler = menu.on_tick_in_viewport(command, function() 1002 | menu.set_value(command, value_func()) 1003 | end) 1004 | return command, handler 1005 | end 1006 | --#endregion Custom Command Functions 1007 | 1008 | ----------------------------------- 1009 | -- Basic Functions 1010 | ----------------------------------- 1011 | --#region Basic Functions 1012 | 1013 | local function SetBits(int, ...) 1014 | local bits = {...} 1015 | for ind, bit in ipairs(bits) do 1016 | int = int | (1 << bit) 1017 | end 1018 | return int 1019 | end 1020 | 1021 | local function ClearBits(int, ...) 1022 | local bits = {...} 1023 | for ind, bit in ipairs(bits) do 1024 | int = int & ~(1 << bit) 1025 | end 1026 | return int 1027 | end 1028 | 1029 | local function IsBitSet(int, offset) 1030 | return ((int >> offset) & 1) == 1 1031 | end 1032 | 1033 | local function IntToBitString(int) 1034 | local bits = {} 1035 | for i = 0, 31 do 1036 | bits[31 - i] = IsBitSet(int, i) and 1 or 0 1037 | end 1038 | return table.concat(bits, "", 0) 1039 | end 1040 | 1041 | local prefix = "MP" .. util.get_char_slot() .. "_" 1042 | local stat_ptr = memory.alloc(4) 1043 | ---@return integer|nil 1044 | local function GetStatInt(stat) 1045 | if STATS_STAT_GET_INT(util.joaat(stat), stat_ptr, -1) then 1046 | return memory.read_int(stat_ptr) 1047 | else 1048 | --util.log("Failed to get stat " .. stat) 1049 | end 1050 | return nil 1051 | end 1052 | 1053 | local function GetStatBool(stat) 1054 | if STATS_STAT_GET_BOOL(util.joaat(stat), stat_ptr, -1) then 1055 | return memory.read_bool(stat_ptr) 1056 | else 1057 | --util.log("Failed to get stat " .. stat) 1058 | end 1059 | return nil 1060 | end 1061 | 1062 | local function GetPackedStatBool(stat) 1063 | return STATS_GET_PACKED_STAT_BOOL_CODE(stat, util.get_char_slot()) 1064 | end 1065 | 1066 | local function SetStatInt(stat, value) 1067 | if STATS_STAT_SET_INT(util.joaat(stat), value, true) then 1068 | return true 1069 | else 1070 | --util.log("Failed to set stat "..stat.." to "..value) 1071 | end 1072 | return false 1073 | end 1074 | 1075 | local function SetStatBool(stat, value) 1076 | if STATS_STAT_SET_BOOL(util.joaat(stat), value, true) then 1077 | return true 1078 | else 1079 | --util.log("Failed to set stat "..stat.." to "..value) 1080 | end 1081 | return false 1082 | end 1083 | 1084 | local function SetPackedStatBool(stat, value) 1085 | STATS_SET_PACKED_STAT_BOOL_CODE(stat, value, util.get_char_slot()) 1086 | end 1087 | 1088 | local function GetGlobalInt(address) 1089 | return memory.read_int(memory.script_global(address)) 1090 | end 1091 | 1092 | local function GetGlobalFloat(address) 1093 | return memory.read_float(memory.script_global(address)) 1094 | end 1095 | 1096 | local function SetGlobalInt(address, value) 1097 | memory.write_int(memory.script_global(address), value) 1098 | end 1099 | 1100 | local function SetGlobalFloat(address, value) 1101 | memory.write_float(memory.script_global(address), value) 1102 | end 1103 | 1104 | local function SetGlobalBits(address, ...) 1105 | local value = GetGlobalInt(address) 1106 | if value then 1107 | return SetGlobalInt(address, SetBits(value, ...)) 1108 | end 1109 | end 1110 | 1111 | local function GetLocalInt(script_str, script_local) 1112 | local addr = memory.script_local(script_str, script_local) 1113 | return addr ~= 0 and memory.read_int(addr) or nil 1114 | end 1115 | 1116 | local function GetLocalFloat(script_str, script_local) 1117 | local addr = memory.script_local(script_str, script_local) 1118 | return addr ~= 0 and memory.read_float(addr) or nil 1119 | end 1120 | 1121 | local function GetLocalString(script_str, script_local) 1122 | local addr = memory.script_local(script_str, script_local) 1123 | return addr ~= 0 and memory.read_string(addr) or nil 1124 | end 1125 | 1126 | local function ClearGlobalBits(address, ...) 1127 | local value = GetGlobalInt(address) 1128 | if value then 1129 | return SetGlobalInt(address, ClearBits(value, ...)) 1130 | end 1131 | end 1132 | 1133 | local function SetLocalInt(script_str, script_local, value) 1134 | local addr = memory.script_local(script_str, script_local) 1135 | if addr ~= 0 then 1136 | memory.write_int(addr, value) 1137 | end 1138 | return addr ~= 0 1139 | end 1140 | 1141 | local function SetLocalFloat(script_str, script_local, value) 1142 | local addr = memory.script_local(script_str, script_local) 1143 | if addr ~= 0 then 1144 | memory.write_float(addr, value) 1145 | end 1146 | return addr ~= 0 1147 | end 1148 | 1149 | local function SetLocalString(script_str, script_local, value) 1150 | local addr = memory.script_local(script_str, script_local) 1151 | if addr ~= 0 then 1152 | memory.write_string(addr, value) 1153 | end 1154 | return addr ~= 0 1155 | end 1156 | 1157 | local function SetLocalBits(script_str, script_local, ...) 1158 | local value = GetLocalInt(script_str, script_local) 1159 | if value then 1160 | return SetLocalInt(script_str, script_local, SetBits(value, ...)) 1161 | end 1162 | end 1163 | 1164 | local function ClearLocalBits(script_str, script_local, ...) 1165 | local value = GetLocalInt(script_str, script_local) 1166 | if value then 1167 | return SetLocalInt(script_str, script_local, ClearBits(value, ...)) 1168 | end 1169 | end 1170 | 1171 | local function IsScriptRunning(str) 1172 | return SCRIPT_GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(util.joaat(str)) > 0 1173 | end 1174 | 1175 | local function StartScript(str, arg_count) 1176 | if not SCRIPT_DOES_SCRIPT_EXIST(str) then 1177 | return false 1178 | end 1179 | if IsScriptRunning(str) then 1180 | return true 1181 | end 1182 | SCRIPT_REQUEST_SCRIPT(str) 1183 | while not SCRIPT_HAS_SCRIPT_LOADED (str) do 1184 | util.yield() 1185 | end 1186 | SYSTEM_START_NEW_SCRIPT(str, arg_count or 0) 1187 | SCRIPT_SET_SCRIPT_AS_NO_LONGER_NEEDED(str) 1188 | return true 1189 | end 1190 | 1191 | local function IsInSession() 1192 | return util.is_session_started() and not util.is_session_transition_active() 1193 | end 1194 | 1195 | local function PressScaleformButton(buttonID) 1196 | PAD_SET_CONTROL_VALUE_NEXT_FRAME(2, buttonID, 1) 1197 | util.yield() 1198 | PAD_SET_CONTROL_VALUE_NEXT_FRAME(2, buttonID, 0) -- this line is probably not needed but oh well 1199 | end 1200 | 1201 | 1202 | local function PressEnterOnScaleform() 1203 | PressScaleformButton(201) 1204 | end 1205 | 1206 | local function PressBackOnScaleform() 1207 | PressScaleformButton(202) 1208 | end 1209 | 1210 | local function SetEntityCoords(entity, coords) 1211 | ENTITY_SET_ENTITY_COORDS_NO_OFFSET(entity, coords.x, coords.y, coords.z, false, false, false) 1212 | end 1213 | 1214 | local function TeleportTo(coords) 1215 | local ent = entities.get_user_vehicle_as_handle(false) 1216 | if ent == INVALID_GUID then ent = players.user_ped() end 1217 | SetEntityCoords(ent, coords) 1218 | end 1219 | 1220 | local function LoadArea(coords) 1221 | local has_ground, ground_z = util.get_ground_z(coords.x, coords.y, coords.z) 1222 | if not has_ground then 1223 | local rot = CAM_GET_FINAL_RENDERED_CAM_ROT(2) 1224 | local cam = CAM_CREATE_CAM_WITH_PARAMS("DEFAULT_SCRIPTED_CAMERA", coords.x, coords.y, coords.z+2, rot.x, rot.y, rot.z, CAM_GET_FINAL_RENDERED_CAM_FOV(), true, 2) 1225 | CAM_SET_CAM_ACTIVE(cam, true) 1226 | CAM_RENDER_SCRIPT_CAMS(true, false, 0, false, false, 0) 1227 | local count = 0 1228 | local max = 500 1229 | while not has_ground and count < max do 1230 | has_ground, ground_z = util.get_ground_z(coords.x, coords.y, coords.z+count) 1231 | count = count + 1 1232 | util.yield() 1233 | end 1234 | CAM_RENDER_SCRIPT_CAMS(false, false, 0, false, false, 0) 1235 | CAM_SET_CAM_ACTIVE(cam, false) 1236 | CAM_DESTROY_CAM(cam, false) 1237 | return max > count 1238 | end 1239 | return true 1240 | end 1241 | 1242 | local function AddToTotalEarned(amount, type) 1243 | type.amount = type.amount + amount 1244 | local str = type and GetLabelTextLiteral(type.prefix, GetLabelTextLiteral(MenuLabels.PREFIX_TOTALEARNED, type.amount)) or GetLabelTextLiteral(MenuLabels.PREFIX_TOTALEARNED, type.amount) 1245 | util.toast(str, TOAST_ABOVE_MAP | TOAST_LOGGER) 1246 | end 1247 | --#endregion Basic Functions 1248 | 1249 | ----------------------------------- 1250 | -- Global Functions 1251 | ----------------------------------- 1252 | --#region Global Functions 1253 | 1254 | -- [[update]] 1255 | local function GetOrgOffset() 1256 | -- GPBD_FM_3 1257 | return (1892653 + 1 + (players.user() * 615) + 10) 1258 | end 1259 | 1260 | local function IsInOrg() 1261 | return GetGlobalInt(GetOrgOffset()) ~= -1 1262 | end 1263 | 1264 | local function GetOrgType() 1265 | -- Returns -1, 0, 1. None, CEO, MC. This will only work if you are the boss of the org 1266 | return GetGlobalInt(GetOrgOffset() + 433) 1267 | end 1268 | 1269 | local function RegisterAsCEO() 1270 | if IsInSession() and not IsInOrg() then 1271 | SetGlobalInt(GetOrgOffset(), players.user()) -- Set self as boss 1272 | SetGlobalInt(GetOrgOffset() + 433, 0) -- Set type to CEO 1273 | end 1274 | end 1275 | 1276 | -- Business / Other Online Work Stuff [[update]] 1277 | local function GetOnlineWorkOffset() 1278 | -- GLOBAL_PLAYER_STAT 1279 | return (1845250 + 1 + (players.user() * 880) + 260) 1280 | end 1281 | 1282 | local function GetNightClubHubOffset() 1283 | return (GetOnlineWorkOffset() + 320) 1284 | end 1285 | 1286 | local function GetNightClubOffset() 1287 | return (GetOnlineWorkOffset() + 364) -- CLUB_OWNER_X 1288 | end 1289 | 1290 | local function GetWarehouseOffset() 1291 | return (GetOnlineWorkOffset() + 128) + 1 1292 | end 1293 | 1294 | local function GetMCBusinessOffset() 1295 | return (GetOnlineWorkOffset() + 205) + 1 1296 | end 1297 | 1298 | -- Nightclub 1299 | local function GetHubValueOffsetFromSlot(slot) 1300 | return (GetNightClubHubOffset() + 8 + 1) + slot 1301 | end 1302 | 1303 | local function GetHubValueFromSlot(slot) 1304 | return GetGlobalInt(GetHubValueOffsetFromSlot(slot)) 1305 | end 1306 | 1307 | local function SetHubValueFromSlot(slot, value) 1308 | SetGlobalInt(GetHubValueOffsetFromSlot(slot), value) 1309 | end 1310 | 1311 | local function GetHubProductOfTypeFromStat(slot) 1312 | return GetStatInt(prefix .. "HUB_PROD_TOTAL_" .. slot) 1313 | end 1314 | 1315 | local function GetSafeCashValueFromStat() 1316 | return GetStatInt(prefix .. "CLUB_SAFE_CASH_VALUE") 1317 | end 1318 | 1319 | local function GetNightClubPropertyID() 1320 | return GetGlobalInt(GetNightClubOffset()) 1321 | end 1322 | 1323 | -- MC Businesses 1324 | local function GetMCBusinessDataOffset(slot) 1325 | return GetMCBusinessOffset() + (slot * 13) 1326 | end 1327 | 1328 | local function GetMCBusinessProductionSpeed2(slot) 1329 | return GetMCBusinessDataOffset(slot) + 9 1330 | end 1331 | 1332 | local function GetBusinessSuppliesFromStat(slot) 1333 | return GetStatInt(prefix .. "MATTOTALFORFACTORY" .. slot) 1334 | end 1335 | 1336 | local function GetBusinessProductFromStat(slot) 1337 | return GetStatInt(prefix .. "PRODTOTALFORFACTORY" .. slot) 1338 | end 1339 | 1340 | local function GetBunkerResearchFromStat() 1341 | return GetStatInt(prefix .. "RESEARCHTOTALFORFACTORY5") 1342 | end 1343 | 1344 | local function GetMCBusinessEquipmentUpgradeStatusFromStat(slot) 1345 | return GetStatInt(prefix .. "FACTORYUPGRADES" .. slot) 1346 | end 1347 | 1348 | local function GetMCBusinessStaffUpgradeStatusFromStat(slot) 1349 | return GetStatInt(prefix .. "FACTORYUPGRADES" .. slot .. "_1") 1350 | end 1351 | 1352 | -- Special Cargo 1353 | local function GetSpecialCargoCrateAmountOffset(slot) 1354 | return GetWarehouseOffset() + (slot * 3) + 1 1355 | end 1356 | 1357 | local function GetSpecialCargoCrateAmount(warehouse) 1358 | return GetGlobalInt(GetSpecialCargoCrateAmountOffset(warehouse)) 1359 | end 1360 | 1361 | local function SetSpecialCargoCrateAmount(warehouse, value) 1362 | return SetGlobalInt(GetSpecialCargoCrateAmountOffset(warehouse), value) 1363 | end 1364 | --#endregion Global Functions 1365 | 1366 | local function PopulateMyBusinessesTable() 1367 | if util.is_session_started() then 1368 | for slot = 0, 4 do 1369 | local property = GetStatInt(prefix .. "factoryslot" .. slot) -- returns a property ID number 1370 | local property_info = MCBusinessPropertyInfo[property] 1371 | local type_number = property_info and property_info.type or -1 1372 | local type_string = property_info and MCBusinessTypesOrderedWithLabels[type_number].name or "None" 1373 | 1374 | 1375 | MyBusinesses[slot] = {property = property, type = type_number} 1376 | MyBusinesses[type_string] = { 1377 | slot = slot, property = property, 1378 | product = GetBusinessProductFromStat(slot), supplies = GetBusinessSuppliesFromStat(slot), 1379 | } 1380 | end 1381 | 1382 | do -- Bunker 1383 | local slot_and_type = 5 1384 | local property = GetStatInt(prefix .. "factoryslot" .. slot_and_type) -- returns a property ID number 1385 | local type_string = MCBusinessTypesOrderedWithLabels[slot_and_type].name 1386 | 1387 | 1388 | MyBusinesses[slot_and_type] = {property = property, type = slot_and_type} 1389 | MyBusinesses[type_string] = {property = property, slot = 5, 1390 | product = GetBusinessProductFromStat(slot_and_type), supplies = GetBusinessSuppliesFromStat(slot_and_type), 1391 | research = GetBunkerResearchFromStat() 1392 | } 1393 | end 1394 | 1395 | for index, data in pairs(HubTypesOrderedWithLabels) do 1396 | --MyBusinesses.Hub[data.name] = GetHubProductOfType(index) -- this reads the stat, Set Product manipluates the global only. Set Max Sell Price with this wont work. 1397 | MyBusinesses.Hub[data.name] = GetHubValueFromSlot(index) -- however, this one will work since its reading the global. 1398 | end 1399 | end 1400 | end 1401 | 1402 | -- returns true if already alone, false if it it had to bealone 1403 | local function CheckIfAlone() 1404 | if #players.list() > 1 then 1405 | util.toast(lang.get_localised(MenuLabels.BEALONE_TOAST)) 1406 | menu.trigger_commands("bealone") 1407 | util.yield(1000) 1408 | return false 1409 | end 1410 | return true 1411 | end 1412 | 1413 | -- [[update]] 1414 | local function GetPlayerPropertyOffset() 1415 | -- GlobalplayerBD 1416 | return (2658291 + 1 + (players.user() * 468) + 325 + 8) 1417 | end 1418 | 1419 | local function GetPlayerPropertyID() 1420 | return GetGlobalInt(GetPlayerPropertyOffset()) 1421 | end 1422 | 1423 | local function SetPlayerPropertyID(id) 1424 | return SetGlobalInt(GetPlayerPropertyOffset(), id) 1425 | end 1426 | 1427 | local function SetPlayerInOrgWork(work_id) 1428 | if IsInSession() then 1429 | SetGlobalInt(GetOrgOffset() + 34, work_id) 1430 | SetGlobalInt(GetOrgOffset() + 36, work_id) 1431 | end 1432 | end 1433 | 1434 | local function GetPlayerInOrgWork() 1435 | return IsInSession() and GetGlobalInt(GetOrgOffset() + 34) or -1 1436 | end 1437 | 1438 | -- Special Cargo 1439 | local function GetWarehouseSlotFromProperty(warehouse) 1440 | for slot = 0, 4 do 1441 | if GetGlobalInt(GetWarehouseOffset() + (slot * 3)) == warehouse then 1442 | return slot 1443 | end 1444 | end 1445 | return -1 1446 | end 1447 | 1448 | local function GetWarehousePropertyFromSlot(slot) 1449 | return GetGlobalInt(GetWarehouseOffset() + (slot * 3)) 1450 | end 1451 | 1452 | local function SetSpecialCargoValues(state) 1453 | local MaxSellPrice = globals.SpecialCargoMaxSellPriceValue 1454 | if state then 1455 | util.create_thread(function() 1456 | local warehouse = GetLocalInt(locals.SpecialCargoSecuroString, locals.SpecialCargoCurrentProperty) 1457 | if warehouse ~= nil then 1458 | if warehouse ~= 0 and warehouse ~= GetWarehousePropertyFromSlot(Selected_Warehouse) then 1459 | util.toast(lang.get_localised(MenuLabels.NOTINSELECTEDWAREHOUSE_TOAST)) 1460 | end 1461 | end 1462 | end) 1463 | 1464 | local crate_amount = GetSpecialCargoCrateAmount(Selected_Warehouse) 1465 | 1466 | if crate_amount > 0 then 1467 | SetGlobalInt(globals.SpecialCargoCrateMaxThreshold, 0) 1468 | SetGlobalInt(globals.SpecialCargoRewardPerCrate, MaxSellPrice) 1469 | local rounded = math.floor(100 / crate_amount) 1470 | local ceiled = math.ceil(100 / crate_amount) 1471 | if (crate_amount <= 6) or (crate_amount >= 100) then 1472 | SetGlobalInt(globals.SpecialCargoCrateMultiplier3, ceiled) 1473 | SetGlobalInt(globals.SpecialCargoCrateMultiplier2, ceiled) 1474 | SetGlobalInt(globals.SpecialCargoCrateMultiplier1, ceiled) 1475 | else 1476 | SetGlobalInt(globals.SpecialCargoCrateMultiplier3, rounded) 1477 | SetGlobalInt(globals.SpecialCargoCrateMultiplier2, rounded) 1478 | SetGlobalInt(globals.SpecialCargoCrateMultiplier1, rounded) 1479 | end 1480 | end 1481 | else 1482 | SetGlobalInt(globals.SpecialCargoCrateMaxThreshold, 111) -- 111 1483 | SetGlobalInt(globals.SpecialCargoRewardPerCrate, 20000) -- 20000 1484 | SetGlobalInt(globals.SpecialCargoCrateMultiplier3, 100) -- 100 1485 | SetGlobalInt(globals.SpecialCargoCrateMultiplier2, 50) -- 50 1486 | SetGlobalInt(globals.SpecialCargoCrateMultiplier1, 20) -- 20 1487 | end 1488 | end 1489 | 1490 | local function GetSpecialCargoCrateAmountFromStat(slot) 1491 | return GetStatInt(prefix .. "contotalforwhouse" .. slot) or 0 1492 | end 1493 | 1494 | -- Nightclub 1495 | local function GetSafeCashValueGlobal() 1496 | return GetGlobalInt(GetNightClubOffset() + 5) 1497 | end 1498 | 1499 | local function IsPlayerInNightclub() 1500 | return (GetPlayerPropertyID() > 101) and (GetPlayerPropertyID() < 112) 1501 | end 1502 | 1503 | local function TriggerNCSafeAddMoneyTransaction(amount, bypass_rollover_protection) 1504 | if not IsInSession() then 1505 | return 1506 | end 1507 | local aaa = GetLocalInt(locals.NCSafeScriptString, locals.NCSafeAddMoneyAmount) 1508 | if not aaa then 1509 | return 1510 | end 1511 | local SafeValue = GetSafeCashValueGlobal() 1512 | local safemax = 300000 1513 | 1514 | if not bypass_rollover_protection then 1515 | if (SafeValue > safemax) then 1516 | amount = I32_MAX - SafeValue + 2 1517 | elseif (SafeValue + amount) > safemax then 1518 | util.toast("The amount given would put you over the maximum limit! Cancelling addition.", TOAST_ALL) --! Needs a label, but this should never be seen by the user anyways 1519 | return 1520 | elseif (SafeValue == -2147483648) then 1521 | amount = 2147483647 1522 | elseif (SafeValue < 0) then 1523 | amount = math.abs(SafeValue) 1524 | end 1525 | end 1526 | 1527 | SetLocalInt(locals.NCSafeScriptString, locals.NCSafeAddMoneyAmount, amount) 1528 | SetGlobalInt(globals.SafeStatus1, ClearBits(GetGlobalInt(globals.SafeStatus1), 1)) 1529 | SetLocalInt(locals.NCSafeScriptString, locals.NCSafeTransactionStatus, 2) 1530 | SetGlobalInt(globals.SafeStatus2, 2) 1531 | util.yield(3000) 1532 | end 1533 | 1534 | local function FixNCSafe() 1535 | local GetSafeValue = GetSafeCashValueFromStat 1536 | if not (IsInSession() and (GetSafeValue() > 300000 or GetSafeValue() < 0)) then 1537 | util.toast(lang.get_localised(MenuLabels.NCRESETSAFEVALUESKIP_TOAST)) 1538 | return 1539 | end 1540 | while IsInSession() and (GetSafeValue() > 300000 or GetSafeValue() < 0) do 1541 | if IsPlayerInNightclub() then 1542 | TeleportTo({x = -1620.5, y = -3014.9, z = -75.2}) 1543 | end 1544 | local before = GetSafeValue() 1545 | TriggerNCSafeAddMoneyTransaction(300000, false) 1546 | local after = GetSafeValue() 1547 | if before == after then 1548 | util.toast(lang.get_localised(MenuLabels.TRANSACTIONSSTUCK_TOAST)) 1549 | return 1550 | elseif (after <= 300000 and after >= 0) then 1551 | util.toast(lang.get_localised(MenuLabels.NCRESETSAFEVALUESUCCESS_TOAST)) 1552 | return 1553 | end 1554 | util.yield() 1555 | end 1556 | end 1557 | 1558 | local function FixNCHubCapacities() 1559 | SetGlobalBits((GetNightClubHubOffset() + 4), 0, 1, 2, 3, 4) -- This will correct your nightclub capacity values if for some reason rockstar decided to fuck you over, although its only a temp fix. thanks r* 1560 | end 1561 | 1562 | local function SetNightclubPayTimeLeft(time) 1563 | return SetStatInt(prefix .. "CLUB_PAY_TIME_LEFT", time or -1) 1564 | end 1565 | 1566 | -- MC Business 1567 | local function ResupplyBusinessSlot(slot) 1568 | SetGlobalInt(globals.MCSupplyTime + slot, 1) 1569 | end 1570 | 1571 | local function TeleportToMCProperty(property_id) 1572 | if property_id ~= 0 and IsInSession() then 1573 | local coords = MCBusinessPropertyInfo[property_id].coords 1574 | if LoadArea(coords) then 1575 | TeleportTo(coords) 1576 | end 1577 | end 1578 | end 1579 | 1580 | ---------------------------------- 1581 | -- Start of menu options 1582 | ---------------------------------- 1583 | 1584 | ---------------------------------- 1585 | -- Nightclub Shit 1586 | ---------------------------------- 1587 | --#region Nightclub Shit 1588 | local NCMan = menu.list(menu.my_root(), MenuLabels.NIGHTCLUB, {}, MenuLabels.NCLIST_DESC) 1589 | 1590 | menu.action(NCMan, GetLabelText(MenuLabels.TELEPORTTO, MenuLabels.NIGHTCLUB), {"tpnightclub"}, GetLabelText(MenuLabels.TELEPORTTO_DESC, MenuLabels.NIGHTCLUB), function() 1591 | if IsInSession() then 1592 | local property = GetNightClubPropertyID() 1593 | if property ~= 0 and IsInSession() then 1594 | local coords = NightclubPropertyInfo[property].coords 1595 | if LoadArea(coords) then 1596 | TeleportTo(coords) 1597 | end 1598 | end 1599 | end 1600 | end) 1601 | 1602 | menu.toggle_loop(NCMan, GetLabelText(MenuLabels.BYPASSCOOLDOWN, MenuLabels.SELLMISSION), {}, GetLabelText(MenuLabels.BYPASSCOOLDOWN_DESC, MenuLabels.START, MenuLabels.SELLMISSION), function() 1603 | if IsInSession() then 1604 | SetGlobalInt(globals.Hub.SellCooldownActive, 0) 1605 | 1606 | if IsScriptRunning(locals.NCHubScriptString) then 1607 | local int = GetLocalInt(locals.NCHubScriptString, locals.NCHubSellCooldown) 1608 | if int then 1609 | ClearLocalBits(locals.NCHubScriptString, locals.NCHubSellCooldown, locals.NCHubSellCooldownBit) 1610 | end 1611 | end 1612 | end 1613 | end) 1614 | 1615 | -- Generate Nightclub options 1616 | for index = 0, #HubTypesOrderedWithLabels do 1617 | local name = HubTypesOrderedWithLabels[index].name 1618 | local label = HubTypesOrderedWithLabels[index].label 1619 | local list = menu.list(NCMan, label) 1620 | 1621 | menu.toggle_loop(list, MenuLabels.MONITOR, {"monitorhub"..name}, GetLabelText(MenuLabels.MONITOR_DESC, MenuLabels.STOCK, MenuLabels.NIGHTCLUB, MenuLabels.INFOOVERLAY), function() 1622 | if IsInSession() then 1623 | local value = GetGlobalInt(globals.Hub[name].Cap) 1624 | util.draw_debug_text(GetLabelTextLiteral(MenuLabels.INFO_HUBBUSINESS, lang.get_localised(label), MyBusinesses.Hub[name], value)) 1625 | end 1626 | end) 1627 | 1628 | menu.toggle_loop(list, MenuLabels.MAXSELLPRICE, {"maxsellhub"..name}, GetLabelText(MenuLabels.MAXSELLPRICE_DESC, MenuLabels.STOCK, MenuLabels.STOCK), function() 1629 | if remote.killswitches.maxsellprice then 1630 | util.toast(lang.get_localised(MenuLabels.KILLSWITCH_MAXSELLPRICE)) 1631 | SetGlobalInt(globals.Hub[name].Sell, globals.Hub[name].SellDefaultValue) 1632 | util.stop_thread() 1633 | return 1634 | end 1635 | 1636 | if IsInSession() then 1637 | if MyBusinesses.Hub[name] ~= 0 then 1638 | CheckIfAlone() 1639 | SetGlobalInt(globals.Hub[name].Sell, globals.Hub.MaxSellPrice // MyBusinesses.Hub[name]) 1640 | end 1641 | end 1642 | end, function() 1643 | SetGlobalInt(globals.Hub[name].Sell, globals.Hub[name].SellDefaultValue) 1644 | end) 1645 | 1646 | local toggle_active 1647 | menu.toggle(list, MenuLabels.MAXPRODUCTIONSPEED, {"maxprodhub"..name}, MenuLabels.NCMAXPRODUCTIONSPEED_DESC, function(toggle) 1648 | toggle_active = toggle 1649 | if toggle then 1650 | --! Missing Global Here (one that goes into effect immediately) 1651 | util.toast(lang.get_localised(MenuLabels.MAXPRODUCTIONSPEEDSLOW_TOAST)) 1652 | end 1653 | while toggle_active do 1654 | if IsInSession() then 1655 | SetGlobalInt(globals.Hub[name].ProSpd, globals.Hub.ProSpd) 1656 | end 1657 | util.yield() 1658 | end 1659 | end) 1660 | 1661 | menu.click_slider(list, MenuLabels.MAXIMUMCAPACITY, {"setcaphub"..name}, MenuLabels.MAXIMUMCAPACITY_DESC, 1, 999, GetGlobalInt(globals.Hub[name].Cap), 5, function(value) 1662 | if IsInSession() then 1663 | SetGlobalInt(globals.Hub[name].Cap, value) 1664 | util.toast(lang.get_localised(MenuLabels.MAXIMUMCAPACITY_TOAST)) 1665 | end 1666 | end) 1667 | 1668 | -- if not IS_RELEASE_VERSION then 1669 | --! this was probably patched by rockstar? cant be arsed to fix this, nobody really used it anyways? 1670 | -- menu.click_slider(list, "[DEBUG] " .. MenuLabels.SETPRODUCT, {"setproducthub"..name}, MenuLabels.SETPRODUCT_DESC, 0, GetGlobalInt(globals.Hub[name].Cap), GetGlobalInt(globals.Hub[name].Cap), 1, function(value) --! implement default values for set product limits 1671 | -- if IsInSession() then 1672 | -- SetHubValueFromSlot(index, value) 1673 | -- util.toast(lang.get_localised(MenuLabels.SETPRODUCT_TOAST)) 1674 | -- end 1675 | -- end) 1676 | -- end 1677 | end 1678 | 1679 | ---------------------------------- 1680 | -- Nightclub Safes 1681 | ---------------------------------- 1682 | 1683 | local NCSafe = menu.list(NCMan, MenuLabels.NIGHTCLUBSAFE) 1684 | menu.toggle_loop(NCSafe, MenuLabels.MONITOR, {"monitorncsafe"}, GetLabelText(MenuLabels.MONITOR_DESC, MenuLabels.MONEY, MenuLabels.NIGHTCLUBSAFE, MenuLabels.INFOOVERLAY), function() 1685 | if IsInSession() then 1686 | local safeval = GetSafeCashValueFromStat() 1687 | util.draw_debug_text(GetLabelTextLiteral(MenuLabels.INFO_NCSAFE, safeval)) 1688 | end 1689 | end) 1690 | 1691 | menu.action(NCSafe, GetLabelText(MenuLabels.TELEPORTTO, MenuLabels.NIGHTCLUBSAFE), {"tpncsafe"}, GetLabelText(MenuLabels.TELEPORTTO_DESC, MenuLabels.NIGHTCLUBSAFE), function() 1692 | if IsInSession() then 1693 | if IsPlayerInNightclub() then 1694 | TeleportTo(NCSafePos) 1695 | else 1696 | util.toast(lang.get_localised(MenuLabels.NOTINNIGHTCLUB_TOAST)) 1697 | menu.trigger_commands("tpnightclub") 1698 | end 1699 | end 1700 | end) 1701 | 1702 | menu.action(NCSafe, MenuLabels.NCMAXPOPULARITY, {"resupplyncsafe"}, MenuLabels.NCMAXPOPULARITY_DESC, function() 1703 | if IsInSession() then 1704 | menu.trigger_commands("clubpopularity 100") 1705 | util.toast(lang.get_localised(MenuLabels.NCMAXPOPULARITY_TOAST)) 1706 | end 1707 | end) 1708 | 1709 | menu.action(NCSafe, MenuLabels.TRIGGERPRODUCTION, {"triggerncsafe"}, MenuLabels.TRIGGERPRODUCTION_DESC, function() 1710 | if IsInSession() then 1711 | if SetNightclubPayTimeLeft(-1) then 1712 | util.toast(lang.get_localised(MenuLabels.TRIGGERPRODUCTION_TOAST)) 1713 | end 1714 | end 1715 | end) 1716 | 1717 | menu.click_slider(NCSafe, MenuLabels.MAXIMUMCAPACITY, {"setcapncsafe"}, MenuLabels.MAXIMUMCAPACITY_DESC, 1, 300000, 210000, 10000, function(value) 1718 | if IsInSession() then 1719 | local address = memory.script_global(globals.SafeCap) 1720 | memory.write_int(address, value) 1721 | util.toast(lang.get_localised(MenuLabels.MAXIMUMCAPACITY_TOAST)) 1722 | end 1723 | end) 1724 | 1725 | menu.click_slider(NCSafe, MenuLabels.NCREVENUE, {"revenuencsafe"}, MenuLabels.NCREVENUE_DESC, 1, 300000, 50000, 10000, function(value) 1726 | if IsInSession() then 1727 | for i = 1, 20 do 1728 | SetGlobalInt(globals.SafeRevenue + i, globals.SafeLimit) 1729 | end 1730 | end 1731 | end) 1732 | 1733 | if false then 1734 | local NCSafeLoopDelay = 200 1735 | local NCSafeLoopTransactionTimeout = 30000 1736 | local NCSafeLoopUserLimit = 0 1737 | 1738 | menu.toggle_loop(NCSafe, MenuLabels.NCSAFELOOP, {"ncafkloop"}, MenuLabels.NCSAFELOOP_DESC, function(toggle) 1739 | if remote.killswitches.safeloop then 1740 | util.toast(lang.get_localised(MenuLabels.KILLSWITCH_SAFELOOP), TOAST_ALL) 1741 | util.stop_thread() 1742 | return 1743 | end 1744 | 1745 | if IsInSession() then 1746 | 1747 | local function StopSafeLoop(msg) 1748 | util.toast(msg, TOAST_ALL) 1749 | util.stop_thread() 1750 | end 1751 | 1752 | if NCSafeLoopUserLimit ~= 0 and (TotalEarnedTypes.safeloop.amount >= NCSafeLoopUserLimit) then 1753 | StopSafeLoop(lang.get_localised(MenuLabels.NCSAFELOOPMAXIMUMVALUEREACHED_TOAST)) 1754 | elseif not IsPlayerInNightclub() then 1755 | StopSafeLoop(lang.get_localised(MenuLabels.NCSAFELOOPNOTINNIGHTCLUB_TOAST)) 1756 | end 1757 | 1758 | if GetGlobalInt(globals.SafeCap) ~= globals.SafeLimit then 1759 | SetGlobalInt(globals.SafeCap, globals.SafeLimit) 1760 | for i = 1, 20 do 1761 | SetGlobalInt(globals.SafeRevenue + i, globals.SafeLimit) 1762 | end 1763 | end 1764 | 1765 | local MyPed = PLAYER_PLAYER_PED_ID() 1766 | ENTITY_FREEZE_ENTITY_POSITION(MyPed, true) 1767 | 1768 | local ValueBeforeAdding = GetSafeCashValueFromStat() 1769 | 1770 | SetEntityCoords(MyPed, NCSafePos) 1771 | 1772 | if ValueBeforeAdding == globals.SafeLimit then 1773 | local timeout = util.current_time_millis() + NCSafeLoopTransactionTimeout 1774 | while timeout > util.current_time_millis() and ValueBeforeAdding == GetSafeCashValueFromStat() do 1775 | util.yield() 1776 | end 1777 | if ValueBeforeAdding > GetSafeCashValueFromStat() then 1778 | -- we've picked it up! 1779 | ValueBeforeAdding = GetSafeCashValueFromStat() 1780 | else 1781 | StopSafeLoop(GetLabelText(MenuLabels.PREFIX_SAFELOOP, MenuLabels.NCSAFELOOPTIMEOUT_TOAST) .. " (1)") 1782 | end 1783 | elseif ValueBeforeAdding > globals.SafeLimit then 1784 | StopSafeLoop(lang.get_localised(MenuLabels.NCSAFELOOPSAFEOVERLIMIT_TOAST)) 1785 | end 1786 | 1787 | -- okay, so far so good, fill the safe 1788 | SetNightclubPayTimeLeft(-1) 1789 | 1790 | -- check if the safe value changes 1791 | local timeout = util.current_time_millis() + NCSafeLoopTransactionTimeout 1792 | while timeout > util.current_time_millis() and ValueBeforeAdding == GetSafeCashValueFromStat() do 1793 | util.yield() 1794 | end 1795 | 1796 | -- if the safe doesn't change 1797 | if timeout < util.current_time_millis() and ValueBeforeAdding == GetSafeCashValueFromStat() then 1798 | -- we've hit transaction timeout... shit 1799 | StopSafeLoop(GetLabelText(MenuLabels.PREFIX_SAFELOOP, MenuLabels.NCSAFELOOPTIMEOUT_TOAST) .. " (2)") 1800 | end 1801 | 1802 | local ValueAfterAdding = GetSafeCashValueFromStat() 1803 | 1804 | if ValueAfterAdding > globals.SafeLimit then 1805 | -- shit, its over 300k 1806 | StopSafeLoop(MenuLabels.NCSAFELOOPSAFEOVERLIMIT_TOAST) 1807 | end 1808 | 1809 | SetEntityCoords(MyPed, NCSafePos) 1810 | 1811 | timeout = util.current_time_millis() + NCSafeLoopTransactionTimeout 1812 | while timeout > util.current_time_millis() and ValueAfterAdding == GetSafeCashValueFromStat() do 1813 | -- wait for the user to collect the money 1814 | util.yield() 1815 | end 1816 | 1817 | -- if the safe doesn't change 1818 | if timeout < util.current_time_millis() and ValueAfterAdding == GetSafeCashValueFromStat() then 1819 | -- we've hit transaction timeout... shit 1820 | StopSafeLoop(GetLabelText(MenuLabels.PREFIX_SAFELOOP, MenuLabels.NCSAFELOOPTIMEOUT_TOAST) .. " (3)") 1821 | end 1822 | 1823 | if ValueAfterAdding > GetSafeCashValueFromStat() then 1824 | -- success! user has collected the money 1825 | AddToTotalEarned(globals.SafeLimit, TotalEarnedTypes.safeloop) 1826 | if NCSafeLoopDelay and NCSafeLoopDelay > 0 then 1827 | util.yield(NCSafeLoopDelay) 1828 | end 1829 | else 1830 | StopSafeLoop(MenuLabels.NCSAFELOOPSOMETHINGWENTWRONG_TOAST) 1831 | end 1832 | 1833 | util.yield() 1834 | end 1835 | end, function() 1836 | ENTITY_FREEZE_ENTITY_POSITION(PLAYER_PLAYER_PED_ID(), false) 1837 | if remote.killswitches.safeloop then 1838 | return 1839 | end 1840 | TeleportTo({x = -1615.86, y = -3015.5, z = -75.2}) 1841 | end) 1842 | 1843 | menu.slider(NCSafe, MenuLabels.NCSAFELOOPSTOP, {"ncafkamount"}, MenuLabels.NCSAFELOOPSTOP_DESC, 0, 999999999, 0, 300000, function(value) 1844 | NCSafeLoopUserLimit = value 1845 | util.toast(lang.get_localised(MenuLabels.NCSAFELOOPSTOP_TOAST)) 1846 | end) 1847 | 1848 | menu.slider(NCSafe, MenuLabels.NCSAFELOOPDELAY, {"ncafkloopdelay"}, MenuLabels.NCSAFELOOPDELAY_DESC, 0, 100000, NCSafeLoopDelay, 100, function(peepeepoopoo) 1849 | NCSafeLoopDelay = peepeepoopoo -- clever 1850 | util.toast(lang.get_localised(MenuLabels.NCSAFELOOPDELAY_TOAST)) 1851 | end) 1852 | 1853 | menu.slider(NCSafe, MenuLabels.NCSAFELOOPTRANSACTIONTIMEOUT, {"ncafktransactiontimeout"}, MenuLabels.NCSAFELOOPTRANSACTIONTIMEOUT_DESC, 1000, NCSafeLoopTransactionTimeout, NCSafeLoopTransactionTimeout, 100, function(peepeepoopoo) 1854 | NCSafeLoopTransactionTimeout = peepeepoopoo -- clever 1855 | util.toast(lang.get_localised(MenuLabels.NCSAFELOOPTIMEOUTMODIFIED_TOAST)) 1856 | end) 1857 | end 1858 | 1859 | menu.action(NCSafe, MenuLabels.NCRESETSAFEVALUE, {}, MenuLabels.NCRESETSAFEVALUE_DESC, FixNCSafe) 1860 | 1861 | if not IS_RELEASE_VERSION then 1862 | menu.action(NCSafe, "[DEBUG] Fuck The Safe", {}, "", function() 1863 | TriggerNCSafeAddMoneyTransaction(300000, true) 1864 | end) 1865 | 1866 | menu.toggle(NCSafe, "[DEBUG] Disable Rendering", {}, "", function(toggle) 1867 | GRAPHICS.TOGGLE_PAUSED_RENDERPHASES(not toggle) 1868 | GRAPHICS.DONT_RENDER_IN_GAME_UI(toggle) 1869 | end) 1870 | end 1871 | --#endregion Nightclub Shit 1872 | 1873 | ---------------------------------- 1874 | -- MC Club Shit 1875 | ---------------------------------- 1876 | --#region MC Club Shit 1877 | local MCMan = menu.list(menu.my_root(), GetLabelText(MenuLabels.MCBUSINESS), {}, MenuLabels.MCLIST_DESC) 1878 | 1879 | menu.toggle_loop(MCMan, MenuLabels.ENFORCEEASIESTMISSION, {}, MenuLabels.ENFORCEEASIESTMISSION_DESC, function() 1880 | local value = GetLocalInt(locals.MCSellScriptString, locals.MCEZMission) 1881 | if value and value ~= 0 then 1882 | SetLocalInt(locals.MCSellScriptString, locals.MCEZMission, 0) 1883 | end 1884 | end) 1885 | 1886 | if not IS_RELEASE_VERSION and not IS_BETA_VERSION then 1887 | menu.toggle_loop(MCMan, "[DEBUG] Autocomplete Sell Mission", {}, "This doesnt work too well lol", function() 1888 | if GetLocalInt(locals.MCSellScriptString, 696) then 1889 | util.toast("Script is running") 1890 | if GetLocalInt(locals.MCSellScriptString, locals.MCEZMissionStarted) then 1891 | util.toast("mission started, waiting 30 secs") 1892 | util.yield(30000) 1893 | SetLocalInt(locals.MCSellScriptString, locals.MCEZMissionStarted, 1) 1894 | else 1895 | util.toast(GetLocalInt(locals.MCSellScriptString, locals.MCEZMissionStarted)) 1896 | end 1897 | end 1898 | end) 1899 | end 1900 | 1901 | -- Generate MC Business options 1902 | for index = 0, 4 do 1903 | local name = MCBusinessTypesOrderedWithLabels[index].name 1904 | local label = MCBusinessTypesOrderedWithLabels[index].label 1905 | 1906 | 1907 | local list = menu.list(MCMan, label) 1908 | 1909 | menu.toggle_loop(list, MenuLabels.MONITOR, {"monitor"..name}, GetLabelText(MenuLabels.MONITOR_DESC, MenuLabels.PRODUCT, MenuLabels.BUSINESS, MenuLabels.INFOOVERLAY), function() 1910 | if IsInSession() then 1911 | local capacity = GetGlobalInt(globals.MC[name].Cap) 1912 | util.draw_debug_text(GetLabelTextLiteral(MenuLabels.INFO_MCBUSINESS, lang.get_localised(label), MyBusinesses[name].supplies, MyBusinesses[name].product, capacity)) 1913 | end 1914 | end) 1915 | 1916 | menu.toggle_loop(list, MenuLabels.RESUPPLY, {"resupply"..name}, MenuLabels.RESUPPLY_DESC, function() 1917 | if IsInSession() then 1918 | if MyBusinesses[name].property ~= 0 then 1919 | if MyBusinesses[name].supplies < 50 then 1920 | ResupplyBusinessSlot(MyBusinesses[name].slot) 1921 | util.yield(5000) 1922 | end 1923 | end 1924 | end 1925 | end) 1926 | 1927 | menu.toggle_loop(list, MenuLabels.MAXSELLPRICE, {"maxsell"..name}, GetLabelText(MenuLabels.MAXSELLPRICE_DESC, MenuLabels.PRODUCT, MenuLabels.PRODUCT), function() 1928 | if remote.killswitches.maxsellprice then 1929 | util.toast(lang.get_localised(MenuLabels.KILLSWITCH_MAXSELLPRICE)) 1930 | SetGlobalInt(globals.MC[name].Sell1, globals.MC[name].Sell1DefaultValue) 1931 | SetGlobalFloat(globals.MC[name].Sell2, globals.MC[name].Sell2DefaultValue) 1932 | util.stop_thread() 1933 | return 1934 | end 1935 | 1936 | if IsInSession() then 1937 | if MyBusinesses[name].property ~= 0 then 1938 | CheckIfAlone() 1939 | if MyBusinesses[name].product > 0 then 1940 | SetGlobalInt(globals.MC[name].Sell1, globals.MC.MaxSellPrice // MyBusinesses[name].product) 1941 | SetGlobalFloat(globals.MC[name].Sell2, 1) 1942 | end 1943 | end 1944 | end 1945 | end, function() 1946 | SetGlobalInt(globals.MC[name].Sell1, globals.MC[name].Sell1DefaultValue) 1947 | SetGlobalFloat(globals.MC[name].Sell2, globals.MC[name].Sell2DefaultValue) 1948 | end) 1949 | 1950 | local var 1951 | menu.toggle(list, MenuLabels.MAXPRODUCTIONSPEED, {"maxprod"..name}, MenuLabels.MCMAXPRODUCTIONSPEED_DESC, function(toggle) 1952 | var = toggle 1953 | if var then 1954 | SetGlobalInt(GetMCBusinessProductionSpeed2(MyBusinesses[name].slot), 0) 1955 | util.toast(lang.get_localised(MenuLabels.MAXPRODUCTIONSPEED_TOAST)) 1956 | end 1957 | while var do 1958 | SetGlobalInt(globals.MC[name].ProSpd1, 500) 1959 | util.yield() 1960 | end 1961 | SetGlobalInt(globals.MC[name].ProSpd1, globals.MC[name].ProSpd1DefaultValue) 1962 | end) 1963 | 1964 | menu.click_slider(list, MenuLabels.SUPPLYPRODUCTRATIO, {"ratio"..name}, MenuLabels.SUPPLYPRODUCTRATIO_DESC, 1, 4, 1, 1, function(value) 1965 | if IsInSession() then 1966 | SetGlobalInt(globals.MC[name].Ratio1, value) 1967 | SetGlobalInt(globals.MC[name].Ratio2, value) 1968 | util.toast(lang.get_localised(MenuLabels.SUPPLYPRODUCTRATIO_TOAST)) 1969 | end 1970 | end) 1971 | 1972 | menu.click_slider(list, MenuLabels.MAXIMUMCAPACITY, {"setcap"..name}, MenuLabels.MAXIMUMCAPACITY_DESC, 1, 999, globals.MC[name].CapDefaultValue, 1, function(value) 1973 | if IsInSession() then 1974 | SetGlobalInt(globals.MC[name].Cap, value) 1975 | util.toast(lang.get_localised(MenuLabels.MAXIMUMCAPACITY_TOAST)) 1976 | end 1977 | end) 1978 | 1979 | menu.action(list, GetLabelText(MenuLabels.TELEPORTTO, MenuLabels.BUSINESS), {"tpbusiness"..name}, GetLabelText(MenuLabels.TELEPORTTO_DESC, MenuLabels.BUSINESS), function() 1980 | if IsInSession() then 1981 | TeleportToMCProperty(MyBusinesses[name].property) 1982 | end 1983 | end) 1984 | end 1985 | --#endregion MC Club Shit 1986 | 1987 | -------------------------- 1988 | -- Bunker Shit 1989 | -------------------------- 1990 | --#region Bunker Shit 1991 | local BunkMan = menu.list(menu.my_root(), MenuLabels.BUNKER, {}, MenuLabels.BUNKERLIST_DESC) 1992 | menu.toggle_loop(BunkMan, MenuLabels.MONITOR, {"monitorbunker"}, GetLabelText(MenuLabels.MONITOR_DESC, MenuLabels.PRODUCT, MenuLabels.BUNKER, MenuLabels.INFOOVERLAY), function() 1993 | if IsInSession() then 1994 | local capacity = GetGlobalInt(globals.MC.Bunker.Cap) 1995 | util.draw_debug_text(GetLabelTextLiteral(MenuLabels.INFO_BUNKER, MyBusinesses.Bunker.supplies, MyBusinesses.Bunker.product, capacity)) 1996 | end 1997 | end) 1998 | 1999 | menu.toggle_loop(BunkMan, MenuLabels.RESUPPLY, {"resupplybunker"}, MenuLabels.RESUPPLY_DESC, function() 2000 | if IsInSession() then 2001 | if MyBusinesses.Bunker.property ~= 0 then 2002 | if MyBusinesses.Bunker.supplies <= 9 then 2003 | ResupplyBusinessSlot(MyBusinesses.Bunker.slot) 2004 | util.yield(5000) 2005 | end 2006 | end 2007 | end 2008 | end) 2009 | 2010 | menu.action(BunkMan, MenuLabels.FORCERESUPPLY, {"forceresupply"}, MenuLabels.FORCERESUPPLY_DESC, function() 2011 | if IsInSession() and MyBusinesses.Bunker.property ~= 0 then 2012 | ResupplyBusinessSlot(MyBusinesses.Bunker.slot) 2013 | end 2014 | end) 2015 | 2016 | menu.toggle_loop(BunkMan, MenuLabels.MAXSELLPRICE, {"maxsellbunker"}, GetLabelText(MenuLabels.MAXSELLPRICE_DESC, MenuLabels.PRODUCT, MenuLabels.PRODUCT), function() 2017 | if remote.killswitches.maxsellprice then 2018 | util.toast(lang.get_localised(MenuLabels.KILLSWITCH_MAXSELLPRICE)) 2019 | SetGlobalInt(globals.MC.Bunker.Sell1, globals.MC.Bunker.Sell1DefaultValue) 2020 | SetGlobalFloat(globals.MC.Bunker.Sell2, globals.MC.Bunker.Sell2DefaultValue) 2021 | util.stop_thread() 2022 | return 2023 | end 2024 | 2025 | if IsInSession() then 2026 | if MyBusinesses.Bunker.product ~= 0 then 2027 | CheckIfAlone() 2028 | SetGlobalInt(globals.MC.Bunker.Sell1, 2500000 // MyBusinesses.Bunker.product) 2029 | SetGlobalFloat(globals.MC.Bunker.Sell2, 1) 2030 | end 2031 | end 2032 | end, function() 2033 | SetGlobalInt(globals.MC.Bunker.Sell1, globals.MC.Bunker.Sell1DefaultValue) 2034 | SetGlobalFloat(globals.MC.Bunker.Sell2, globals.MC.Bunker.Sell2DefaultValue) 2035 | end) 2036 | 2037 | local BunkProSpdVar 2038 | menu.toggle(BunkMan, MenuLabels.MAXPRODUCTIONSPEED, {"maxprodbunker"}, MenuLabels.MCMAXPRODUCTIONSPEED_DESC, function(peepeepoopoo) 2039 | BunkProSpdVar = peepeepoopoo 2040 | if BunkProSpdVar then 2041 | SetGlobalInt(GetMCBusinessProductionSpeed2(MyBusinesses.Bunker.slot), 0) 2042 | util.toast(lang.get_localised(MenuLabels.MAXPRODUCTIONSPEED_TOAST)) 2043 | else 2044 | SetGlobalInt(globals.MC.Bunker.ProSpd1, 600000) 2045 | SetGlobalInt(globals.MC.Bunker.ProSpd2, 90000) 2046 | SetGlobalInt(globals.MC.Bunker.ProSpd3, 90000) 2047 | end 2048 | while BunkProSpdVar do 2049 | if IsInSession() then 2050 | SetGlobalInt(globals.MC.Bunker.ProSpd1, 1000) -- base 2051 | SetGlobalInt(globals.MC.Bunker.ProSpd2, 1000) -- equipment 2052 | SetGlobalInt(globals.MC.Bunker.ProSpd3, 1000) -- staff upg 2053 | end 2054 | util.yield() 2055 | end 2056 | end) 2057 | 2058 | menu.click_slider(BunkMan, MenuLabels.SUPPLYPRODUCTRATIO, {"ratiobunker"}, MenuLabels.SUPPLYPRODUCTRATIO_DESC, 1, 10, 10, 1, function(value) 2059 | if IsInSession() then 2060 | SetGlobalInt(globals.MC.Bunker.Ratio1, value) -- no upgrade 2061 | SetGlobalInt(globals.MC.Bunker.Ratio2, value) -- with upgrade 2062 | util.toast(lang.get_localised(MenuLabels.SUPPLYPRODUCTRATIO_TOAST)) 2063 | end 2064 | end) 2065 | 2066 | menu.click_slider(BunkMan, MenuLabels.MAXIMUMCAPACITY, {"setcapbunker"}, MenuLabels.MAXIMUMCAPACITY_DESC, 1, 999, 100, 1, function(value) 2067 | if IsInSession() then 2068 | SetGlobalInt(globals.MC.Bunker.Cap, value) 2069 | util.toast(lang.get_localised(MenuLabels.MAXIMUMCAPACITY_TOAST)) 2070 | end 2071 | end) 2072 | 2073 | menu.action(BunkMan, GetLabelText(MenuLabels.TELEPORTTO, MenuLabels.BUNKER), {"tpbunker"}, GetLabelText(MenuLabels.TELEPORTTO_DESC, MenuLabels.BUNKER), function() 2074 | TeleportToMCProperty(MyBusinesses.Bunker.property) 2075 | end) 2076 | --#endregion Bunker Shit 2077 | 2078 | -------------------------- 2079 | -- Debug Shit 2080 | -------------------------- 2081 | if not IS_RELEASE_VERSION then 2082 | local MBDebug = menu.list(menu.my_root(), "Debug Shit", {"mbdebug"}) 2083 | local MBDebug_MC = menu.list(MBDebug, "MC Shit", {"mbdebugmc"}) 2084 | for i = 0, 5 do 2085 | --local type = MCBusinessTypesInOrder[i] 2086 | local type = MCBusinessTypesOrderedWithLabels[i].name 2087 | local label = MCBusinessTypesOrderedWithLabels[i].label 2088 | 2089 | local thislist = menu.list(MBDebug_MC, label, {"mbdebugmc"..type}) 2090 | RegisterUpdatingReadOnlyCommand(thislist, "Slot" , function() return MyBusinesses[type].slot end) 2091 | RegisterUpdatingReadOnlyCommand(thislist, "Property" , function() return MyBusinesses[type].property end) 2092 | RegisterUpdatingReadOnlyCommand(thislist, "Product" , function() 2093 | return MyBusinesses[type].product 2094 | end) 2095 | RegisterUpdatingReadOnlyCommand(thislist, "Supplies " , function() return MyBusinesses[type].supplies end) 2096 | menu.action(thislist, GetLabelText(MenuLabels.TELEPORTTO, MenuLabels.BUSINESS), {}, GetLabelText(MenuLabels.TELEPORTTO_DESC, MenuLabels.BUSINESS), function() 2097 | local coords = MCBusinessPropertyInfo[MyBusinesses[type].property].coords 2098 | if coords then 2099 | if LoadArea(coords) then 2100 | TeleportTo(coords) 2101 | end 2102 | else 2103 | util.toast("You do not have a "..type) 2104 | end 2105 | end) 2106 | end 2107 | 2108 | local MBDebug_NC = menu.list(MBDebug, "NC Shit", {"mbdebugnc"}) 2109 | for i = 0, #HubTypesOrderedWithLabels do 2110 | local name = HubTypesOrderedWithLabels[i].name 2111 | local label = HubTypesOrderedWithLabels[i].label 2112 | local thislist = menu.list(MBDebug_NC, label, {"mbdebugnc"..name}) 2113 | RegisterUpdatingReadOnlyCommand(thislist, "Product" , function() return MyBusinesses.Hub[name] end) 2114 | RegisterUpdatingReadOnlyCommand(thislist, "Capacity" , function() return GetGlobalInt(globals.Hub[name].Cap) end) 2115 | end 2116 | menu.click_slider(MBDebug_NC, "Set Product All", {}, "Will not put it over your cap", 0, 100, 0, 1, function(value) 2117 | for i = 0, #HubTypesOrderedWithLabels do 2118 | local cap = GetGlobalInt(globals.Hub[HubTypesOrderedWithLabels[i].name].Cap) 2119 | SetGlobalInt(GetHubValueOffsetFromSlot(i), value > cap and cap or value) 2120 | end 2121 | end) 2122 | 2123 | --menu.action(MBDebug_CEO, "Sync Globals With Stats") 2124 | end 2125 | -------------------------- 2126 | -- End Debug Shit 2127 | -------------------------- 2128 | 2129 | util.create_tick_handler(function() 2130 | prefix = "MP" .. util.get_char_slot() .. "_" -- update our prefix live incase the user switches characters while script is running 2131 | 2132 | if IsInSession() then 2133 | PopulateMyBusinessesTable() 2134 | 2135 | FixNCHubCapacities() 2136 | end 2137 | return true 2138 | end) 2139 | --------------------------------------------------------------------------------