| Return Create A Forum - Home | |
| --------------------------------------------------------- | |
| IMVUElite | |
| https://imvusins.createaforum.com | |
| --------------------------------------------------------- | |
| ***************************************************** | |
| Return to: Discussions | |
| ***************************************************** | |
| #Post#: 108-------------------------------------------------- | |
| Imvu voice chat | |
| By: PATRON Date: January 3, 2018, 5:24 pm | |
| --------------------------------------------------------- | |
| is there a way for custom client with voice chat drivers to | |
| public users ? | |
| :/ :/ :/ | |
| #Post#: 109-------------------------------------------------- | |
| Re: Imvu voice chat | |
| By: Lags Date: January 3, 2018, 6:34 pm | |
| --------------------------------------------------------- | |
| Let me look into it. i need to figure out what client was the | |
| last client that had that and redirect the voice chat to a | |
| private server. cause that was a server it connected to to voice | |
| chat. | |
| #Post#: 110-------------------------------------------------- | |
| Re: Imvu voice chat | |
| By: Lags Date: January 3, 2018, 7:07 pm | |
| --------------------------------------------------------- | |
| I don't think its possible because the API's that consistence | |
| before are no longer there. i could keep looking into it :) | |
| [quote]function VoiceProduct(productObject, imvuCall, | |
| voiceTestController, vivoxControl, myFonts) { | |
| this.vivoxControl = vivoxControl; | |
| this.voiceTestController = voiceTestController; | |
| this.imvuCall = imvuCall; | |
| this.data = productObject; | |
| this.element = | |
| IMVU.Client.widget.ProductBase.template.cloneNode(true); | |
| this.elName = | |
| IMVU.Client.xpath.getFirstElement("descendant::div[@class='info' | |
| ]/h3", | |
| this.element); | |
| this.elPrice = | |
| IMVU.Client.xpath.getFirstElement("descendant::div[@class='price | |
| ']", | |
| this.element); | |
| this.elThumb = | |
| IMVU.Client.xpath.getFirstElement("descendant::div[@class='info' | |
| ]/div[@class='thumb | |
| clickable']/img", this.element); | |
| this.elTryX = | |
| IMVU.Client.xpath.getFirstElement("descendant::div[@class='try-x | |
| clickable']", this.element); | |
| this.elTryOn = | |
| IMVU.Client.xpath.getFirstElement("descendant::div[@class='try | |
| clickable']", this.element); | |
| this.elBuy = YAHOO.util.Selector.query(".buy.clickable", | |
| this.element, true); | |
| this.elName.innerHTML = this.data.displayName; | |
| this.elPrice.innerHTML = this.data.price; | |
| this.elThumb.src = 'img/voice_font_icon_100x80.png'; | |
| //this.data.displayImage; | |
| this.imvuCall('log', 'vivoxId: '+ this.data.vivoxId); | |
| this.imvuCall('log', 'name: '+ this.data.displayName); | |
| this.imvuCall('log', 'myFonts: '+ | |
| YAHOO.lang.JSON.stringify(myFonts)); | |
| if (myFonts.indexOf(this.data.vivoxId) != -1) { | |
| this.setOwned(true); | |
| } | |
| YAHOO.util.Dom.addClass(this.element, 'tryable'); | |
| YAHOO.util.Event.on(this.elTryOn, 'click', bind(this, | |
| this.clickTryOn)); | |
| YAHOO.util.Event.on(this.elBuy, 'click', this.clickBuy, | |
| this, true); | |
| this.buyClicked = new YAHOO.util.CustomEvent("buyClicked"); | |
| } | |
| VoiceProduct.prototype = { | |
| clickTryOn : function(e) { | |
| IMVU.log( 'clickTry, channel_uri: ' + | |
| this.vivoxControl.channel_uri ); | |
| this.vivoxControl.setVoiceFont(this.data.vivoxId); | |
| this.voiceTestController.spawnTestWindow(); | |
| }, | |
| clickTakeOff : function(e) { | |
| this.vivoxControl.setVoiceFont(0); | |
| }, | |
| clickBuy: function() { | |
| this.buyClicked.fire(this.data); | |
| }, | |
| setOwned: function(v) { | |
| if (v) { | |
| YAHOO.util.Dom.addClass(this.element, | |
| "in-inventory"); | |
| } else { | |
| YAHOO.util.Dom.removeClass(this.element, | |
| "in-inventory"); | |
| } | |
| } | |
| }; | |
| /*jslint forin: true */ | |
| function VoiceMode(baseDiv, paginatorDiv, moreHardwareDiv, | |
| vivoxControl, kwargs) { | |
| var voicetestShim = document.createElement('span'); | |
| YAHOO.util.Dom.setStyle(voicetestShim, 'display', 'none'); | |
| this.vivoxControl = vivoxControl; | |
| this.voiceTestController = new | |
| VoicetestController(voicetestShim, this.vivoxControl, false); | |
| this.vivoxControl.startVivox(bind(this, | |
| this.onVivoxLoginResult)); | |
| this.baseDiv = baseDiv; | |
| this.paginatorDiv = paginatorDiv; | |
| this.imvuCall = kwargs.imvuCall; | |
| this.net = kwargs.network; | |
| this.eventBus = kwargs.eventBus; | |
| this.url = IMVU.SERVICE_DOMAIN + '/api/voice.php'; | |
| this.paginatorDiv = paginatorDiv; | |
| this.moreHardwareDiv = moreHardwareDiv; | |
| if(parseInt(kwargs.perPage,10)>0) { | |
| this._itemsPerPage = parseInt(kwargs.perPage,10); | |
| } else { | |
| this._itemsPerPage = 8; | |
| } | |
| this._setupTopLevelTabs(); | |
| this.setIsLoading(true); | |
| this.myFonts = []; | |
| this.vivoxControl.getSessionFonts(bind(this, | |
| this.handleVoiceFonts)); | |
| var searchMoreHardware = new ImvuButton( | |
| this.moreHardwareDiv, | |
| { | |
| callback: function () { | |
| IMVU.Client.EventBus.fire('VoiceMode.SearchMoreAmazonClicked', | |
| {}); }, | |
| scope: this, | |
| grey: false | |
| } | |
| ); | |
| YAHOO.util.Event.on( | |
| ['voice_settings', 'voice_test_call'], | |
| 'click', | |
| function() { | |
| IMVU.Client.EventBus.fire('VoiceMode.SettingsClicked', {}); | |
| } | |
| ); | |
| IMVU.Client.util.turnLinksIntoLaunchUrls('voice_faq', | |
| this.imvuCall); | |
| } | |
| VoiceMode.prototype = { | |
| _dbg: function(t) { | |
| this.imvuCall('showErrorDialog', 'what', t); | |
| }, | |
| handleVoiceFonts: function(fonts){ | |
| for each (var f in fonts){ | |
| this.myFonts.push(f.ParentID); | |
| } | |
| this._getData(); | |
| }, | |
| setIsLoading: function(state) { | |
| var e = document.getElementById("loading-mask"); | |
| if (state) { | |
| YAHOO.util.Dom.addClass(e, "visible"); | |
| } else { | |
| YAHOO.util.Dom.removeClass(e, "visible"); | |
| } | |
| }, | |
| _getData: function() { | |
| var self = this; | |
| var cb = { | |
| success: function(o) { | |
| var data = null; | |
| try { | |
| data = | |
| YAHOO.lang.JSON.parse(o.responseText); | |
| self._onDataComplete(data); | |
| } catch (e) { | |
| if (e.constructor != SyntaxError) { | |
| throw e; | |
| } | |
| } | |
| }, | |
| failure: function(o) { | |
| self.imvuCall('showErrorDialog', 'Please Try | |
| Again', 'There was a network problem loading the voice effect | |
| store.'); | |
| self.imvuCall('endDialog', {}); | |
| } | |
| }; | |
| this.net.asyncRequest('GET', this.url, cb); | |
| }, | |
| _onDataComplete: function(data) { | |
| this._data = []; | |
| for each (var entry in data) { | |
| this._data.push(entry); | |
| } | |
| this._totalPages = | |
| parseInt(this._data.length/this._itemsPerPage,10); | |
| if(this._data.length%this._itemsPerPage) { | |
| this._totalPages++; | |
| } | |
| this.paginator = new Paginator(this.paginatorDiv, 1, | |
| this._totalPages); | |
| this.paginator.evtClick.subscribe(bind(this, | |
| this.handlePaginatorClick)); | |
| this.onCompletePageLoad(1); | |
| this.setIsLoading(false); | |
| }, | |
| handlePaginatorClick: function(evtData) { | |
| this.onCompletePageLoad(evtData.page); | |
| }, | |
| _setupTopLevelTabs: function() { | |
| var tabs = YAHOO.util.Selector.query("li.tab", | |
| 'tabs_main'); | |
| if (tabs.length) { | |
| YAHOO.util.Event.on( | |
| tabs, | |
| 'click', | |
| function() { | |
| if(YAHOO.util.Dom.hasClass(this, | |
| 'selected')) { | |
| return; | |
| } | |
| var a = | |
| ['tab_voice_fonts','tab_hardware','voice_fonts','hardware']; | |
| for (var i in a) { | |
| YAHOO.util.Dom.removeClass(a[i], | |
| 'selected'); | |
| } | |
| YAHOO.util.Dom.addClass(this.id.replace(/tab_/g, ''), | |
| 'selected'); | |
| YAHOO.util.Dom.addClass(this, 'selected'); | |
| // FIXME: | |
| IMVU.Client.EventBus.fire('VoiceMode.ReloadAd', {}); | |
| } | |
| ); | |
| } | |
| }, | |
| onCompletePageLoad: function(pageNum) { | |
| this.baseDiv.innerHTML = ''; | |
| this.currentProducts = []; | |
| var startIdx = (pageNum-1) * this._itemsPerPage; | |
| var endIdx = startIdx + this._itemsPerPage; | |
| if(endIdx > this._data.length) { | |
| endIdx = this._data.length; | |
| } | |
| for(var i=startIdx; i<endIdx; i++) { | |
| var vp = new VoiceProduct(this._data[i], | |
| this.imvuCall, this.voiceTestController, this.vivoxControl, | |
| this.myFonts); | |
| vp.buyClicked.subscribe(bind(this, | |
| this.onBuyClicked)); | |
| vp.element.id = 'voice_product_'+(i-startIdx); | |
| this.currentProducts.push(vp); | |
| this.baseDiv.appendChild(this.currentProducts[i-startIdx].elemen | |
| t); | |
| } | |
| this.paginator.update(pageNum,this._totalPages); | |
| }, | |
| onVivoxLoginResult: function(success) { | |
| var self = this; | |
| this.voiceTestController.handleVivoxStartResult(success); | |
| this.vivoxControl.getSessionFonts( | |
| function(){ | |
| bind(self, | |
| self.voiceTestController.handleVivoxStartResult(success) ); | |
| } | |
| ); | |
| }, | |
| onNetworkError: function() { | |
| this.imvuCall('showErrorDialog', 'Please Try Again', | |
| 'There was a network problem with your purchase'); | |
| }, | |
| onBuyClicked: function(eventType, args) { | |
| voiceFont = args[0]; | |
| var credits = | |
| parseInt(this.imvuCall('getCreditBalance'), 10); | |
| var predits = parseInt(this.imvuCall('getPromoBalance'), | |
| 10); | |
| if(voiceFont.price > (credits + predits)) { | |
| this.imvuCall( | |
| 'showConfirmationDialog', | |
| 'Insufficient Credit Balance', | |
| 'You do not have enough credits to purchase this | |
| voice effect.' | |
| ); | |
| return; | |
| } | |
| if(!this.imvuCall('showYesNoDialog', 'Confirm purchase', | |
| 'Are you sure you want to buy ' + voiceFont.displayName + '? It | |
| will cost ' + voiceFont.price + ' credits')) { | |
| return; | |
| } | |
| this.setIsLoading(true); | |
| url = IMVU.SERVICE_DOMAIN + | |
| '/api/voice_font_purchase.php'; | |
| var self = this; | |
| var cb = { | |
| success: function(o) { | |
| var data = o.responseText; | |
| self.setIsLoading(false); | |
| if (data.result != 'success') { | |
| self.onNetworkError(); | |
| } else { | |
| IMVU.Client.EventBus.fire('NewVoiceFont', | |
| {ID:voiceFont.vivoxId}); | |
| self.myFonts.push(voiceFont.vivoxId); | |
| for each (var product in | |
| self.currentProducts) { | |
| if | |
| (product.data.vivoxId==voiceFont.vivoxId) { | |
| product.setOwned(true); | |
| break; | |
| } | |
| } | |
| credits = self.imvuCall('getCreditBalance'); | |
| predits = self.imvuCall('getPromoBalance'); | |
| IMVU.Client.EventBus.fire('updateCreditBalances', { credits: | |
| credits - voiceFont.price, predits: predits }); | |
| self.imvuCall('showConfirmationDialog', | |
| 'Success', 'You spent ' + voiceFont.price + ' on ' + | |
| voiceFont.displayName); | |
| } | |
| }, | |
| failure: function(o) { | |
| self.setIsLoading(false); | |
| self.onNetworkError(); | |
| } | |
| }; | |
| this.net.asyncRequest('POST', url, cb, {voicefont_id: | |
| voiceFont.vivoxId}, true); | |
| } | |
| }; | |
| IMVU.Client.widget.ProductBase.createTemplate();[/quote] | |
| #Post#: 119-------------------------------------------------- | |
| Re: Imvu voice chat | |
| By: Lags Date: January 9, 2018, 8:56 pm | |
| --------------------------------------------------------- | |
| [center]~This Topic has been moved to Discussions~[/center] | |
| #Post#: 212-------------------------------------------------- | |
| Re: Imvu voice chat | |
| By: trukhronik Date: March 9, 2018, 10:01 pm | |
| --------------------------------------------------------- | |
| THAT WOULD BE LIT IF THERE 1 U CAN VID CHAT OR HAVE LIKE | |
| SOMTHING THT CAN TELL U IF THT PERSON IS CATFISHIN | |
| #Post#: 222-------------------------------------------------- | |
| Re: Imvu voice chat | |
| By: trukhronik Date: March 9, 2018, 10:46 pm | |
| --------------------------------------------------------- | |
| we need tht | |
| ***************************************************** |