Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Деньги

Сообщений 1 страница 20 из 124

1

Вот такой вот вариант реализации денег(бонусов), как хотите. Скрипт работает очень просто - берет количество сообщений пользователя, умножает на стоимость одного сообщения, добавляет к этому значению число из какого-то дополнительного поля и в итоге вы видите кол-во денег пользователя.
И так, нам нужно дополнительное поле(любое название, но лучше чтобы совпадало с названием в скрипте), в которое каждому пользователю будут вносится поощрения или штрафы(отрицательные числа тоже можно) от администрации
Каждый пользователь будет получать плюс к своим деньгам за каждое сообщение, которое засчитывается в профиле.

<script type="text/javascript">
if(location.href.indexOf('viewtopic')!=-1) {
var field = 'fld1';
var diff = 2;
var default_name = 'Деньги';
var ul = $("#pun-main div.post div.post-author ul");
for(var i =0;i < ul.length;i++){
    var for_posts = parseInt($(ul[i]).find('li.pa-posts').text().replace(/Сообщений: /,""))*diff
    if(!$(ul[i]).find("li.pa-"+field).length) {
    $(ul[i]).find('li.pa-posts').after('<li class="pa-'+field+'">'+default_name+': '+for_posts+'</li>');
    }
    else {
    $(ul[i]).find("li.pa-"+field).html(default_name+': '+(parseInt($(ul[i]).find("li.pa-"+field).text().replace(/^(.*): (-?\d+)$/,"$2"))+for_posts))
    }
}
}
</script>

номер поля
цена одного сообщения
название поля(какое пропишите, такое и будет)
чуть не забыл - html-низ или форма ответа

+6

2

Хочу, хочу-хочу, представить вам плод моих новогодних выходных. Итак встречайте пузырь нового года - скрипт магазин
Данный скрипт на какой-нибудь странице рисует вот такую прекрасную табличку с товарами, которые могут быть администраторскими, а могут быть и пользовательскими и предлагает их заказать в n-ом количестве. Прошу обратить внимание на слово заказать, а не купить! Скрипт не обеспечивает покупку в реальном времени каким-либо пользователем. Что я подразумеваю под заказать: отправляется ЛС одному из назначенных вами в скрипте так называемых кураторов(я их так назвал, не ругайте за название, пожалуйста  :tomato: ) в котором будет указано кто у кого купил вещь, в каком количестве, по какой цене за штуку, а также итоговая цена покупки. Далее куратор должен будет зайти к покупателю, снять у него указанную сумму, добавить ему нужные вещи, зайти к продавцу, добавить ему нужную сумму, отнять у него вещи, зайти в магазин и снять нужное количество вещей из магазина. Квест не самый простой, но все же несложный.
Простите меня за творческий выхлоп, перейдем к скрипту

Код:
<script type="text/javascript">
function compare_item(item_id) {
	if(parseInt($('#item_'+item_id+' td.tc3').text())<parseInt($('#item_'+item_id+' input.count').val())){
alert('В наличие не хватает товара');
$('#item_'+item_id+' input.count').focus();
return false;
	}
	if(parseInt($('#item_'+item_id+' input.count').val())<1){
alert('Вы должны покупать товар в количестве 1 и более');
$('#item_'+item_id+' input.count').focus();
return false;
	}
	return true;
}
function buy(item_id,seller_id,seller_nickname){
	if(GroupID == 3) return false;
	if(!UserID || !UserLogin) return false;
	if(!compare_item) return false;
	$('#shop input[type="button"]').attr('disabled','disabled');
	if(!$('#send_message').length)
$("#pun-main").before('<div id="send_message" class="section"><p id="loading">Идет выполнение запроса...</p></div>')
	else
$('#send_message p#loading').html('Идет выполнение запроса...');
	var iframe = $('iframe#message')[0]
	iframe.className = 'main_iframe';
	var curator = Math.floor(Math.random() * window["curators"].length)
	iframe.src = 'http://'+location.hostname+'/messages.php?action=new&uid='+window['curators'][curator]+'#autoseller';
	iframe.onload = function(){wait_send('buy_send('+item_id+','+seller_id+',"'+seller_nickname+'",'+curator+')');};
}
function check_send(iframe){
	var iframe = $('iframe#message.main_iframe')[0];
	iframe.doc = (iframe.contentDocument ? iframe.contentDocument : (iframe.contentWindow.document ? iframe.contentWindow.document : iframe.document));
	if(/^Информация \((.*)\)$/.test(iframe.doc.getElementsByTagName('title')[0].innerHTML)) {
crash_send();
return false;
	}
	else {
$('#shop input[type="button"]').attr('disabled','');
$('#send_message p#loading').html('Запрос успешно отправлен');
	}
	iframe.onload = function(){return true;}
}
function wait_send(code_str){
	setTimeout(code_str, 2000);
}
function crash_send(){
	$('#shop input[type="button"]').attr('disabled','');
	$('#shop input[type="text"]').val('1');
	$('#send_message p#loading').html('Запрос не был отправлен. Проверьте введенные Вами данные и попробуйте повторить попытку');
	$('iframe#message.main_iframe')[0].onload = function(){return true;};
	return false;
}
function buy_send(item_id,seller_id,seller_nickname,curator) {
	var iframe = $('iframe#message.main_iframe')[0];
	if(iframe.src != 'http://'+location.hostname+'/messages.php?action=new&uid='+window['curators'][curator]+'#autoseller'){
return false;
	}
	iframe.doc = (iframe.contentDocument ? iframe.contentDocument : (iframe.contentWindow.document ? iframe.contentWindow.document : iframe.document))

	var send_message = true;
	if(GroupID == 3) send_message = false;
	if(!UserID || !UserLogin) send_message = false;
	if(!compare_item) send_message = false;

	var form = iframe.doc.getElementById('post') || false;
	if(form==false) send_message = form;

	if(!send_message) {
crash_send();
return false;
	}


	var seller = {id: seller_id,nickname: decodeURIComponent(seller_nickname)};
	var buyer = {id: UserID,nickname: UserLogin};
	var item = {id: item_id,name: $('#item_'+item_id+' td.tcl h3').text(), count: parseInt($('#item_'+item_id+' input.count').val()),price: parseInt($('#item_'+item_id+' td.tc2').text())};
	if(item.count > parseInt($('#shop tr#item_'+item.id+' td.tc3').text())) return crash_send();
	iframe.onload = function(){wait_send('check_send()');};
	form.req_subject.value = 'Покупка #'+item.id+'('+item.count+')';
	form.req_message.value = 'Пользователь [url=http://'+location.hostname+'/profile.php?section=fields&id?='+buyer.id+']'+buyer.nickname+'[/url] покупает "'+item.name+'" у пользователя [url=http://'+location.hostname+'/profile.php?section=fields&id?='+seller.id+']'+seller.nickname+'[/url] в количестве '+item.count+' по цене за штуку '+item.price+". \n"+'Сумма покупки: '+item.price*item.count;
	form.submit.click();	
}
if(window["shop_items"]) {
	$('#pun-main div.container').append('<table id="shop" cellspacing="0"><thead><tr><th class="tcl">Название</th> <th class="tc2">Цена</th> <th class="tc3">В наличие</th><th class="tcr">Заказать</th></tr></thead><tbody></tbody></table>');
	var shop_items = window["shop_items"];
	var action = '';
	for(var i=0;i<shop_items.length;i++){
var action = GroupID == 3 ? '<a href="http://'+location.hostname+'/login.php">Войдите</a> или <a href="http://'+location.hostname+'/register.php">зарегистрируйтесь</a>, чтобы совершить покупку' : '<input class="count" type="text" style="width: 40%;float: left; margin-right: 15px;" maxlength="100" value="1"><input type="button" onclick="buy('+(i+1)+','+shop_items[i].seller.id+',\''+encodeURIComponent(shop_items[i].seller.nickname)+'\');" value="Заказать">';
$('<tr id="item_'+(i+1)+'" class="alt'+(i%2 + 1)+'"><td class="tcl"><div class="intd"><div class="tclcon"><h3>'+shop_items[i].name+'</h3>'+shop_items[i].description+'</div></div></td><td class="tc2">'+shop_items[i].price+'</td><td class="tc3">'+shop_items[i].count+'</td><td class="tcr">'+action+'</td></tr>').appendTo($('table#shop tbody'));
	}
}
window["curators"] = [3,18,12];
</script>
<iframe id="message" width="0" height="0"></iframe>

находите эту строку (3-я с конца)

window["curators"] = [3,18,12];

выделенные цифры - ID пользователей, которых вы назначаете кураторами(можно менять). Эти пользователи должны быть хотя бы модераторами(самый крайний случай), а вообще администраторами. Их может быть сколько угодно, ниже несколько примеров:

window["curators"] = [3];

window["curators"] = [3,18];

window["curators"] = [3,18,12,31];

Это вставлять в html-низ
Перейдем к самой странице. Создайте, если у вас еще нет, страницу, на которой собираетесь разместить магазин, на этой странице больше ничего находится не будет, скрипт все потрет. На эту страницу вставьте

<script type="text/javascript">
//Shop items start
window["shop_items"] = [];
window["shop_items"][window["shop_items"].length] = {name: "Название товара/вещи",description: "Описание товара",price: "Цена за одну штуку",count: "Количество в продаже",seller: {id: "ID продавца", nickname: "Логин продавца"}};
...
//Shop items end
</script>

Выделенную строку можно копировать сколько угодно, изменяя указанны в кавычках параметры(вставлять ВМЕСТО многоточия), но можно еще воспользоваться такой штукой http://tests.bestff.ru/pages/elements тут все должно быть интуитивно понятно. Хотя поясню, если вы выбрали Добавить к уже имеющимся то полученный код надо ставить не вместо, а под уже имеющийся, то есть. У вас было

<script type="text/javascript">
//Shop items start
window["shop_items"] = [];
window["shop_items"][window["shop_items"].length] = {name: "Название товара/вещи",description: "Описание товара",price: "Цена за одну штуку",count: "Количество в продаже",seller: {id: "ID продавца", nickname: "Логин продавца"}};
//Shop items end
</script>

тогда новый код вы вставляете вот таак

<script type="text/javascript">
//Shop items start
window["shop_items"] = [];
window["shop_items"][window["shop_items"].length] = {name: "Название товара/вещи",description: "Описание товара",price: "Цена за одну штуку",count: "Количество в продаже",seller: {id: "ID продавца", nickname: "Логин продавца"}};

window["shop_items"][window["shop_items"].length] = {name: "Название товара/вещи 2",description: "Описание товара 2",price: "Цена за одну штуку 2",count: "Количество в продаже 2",seller: {id: "ID продавца 2", nickname: "Логин продавца 2"}};
//Shop items end
</script>

где вот такая строка новый товар
Тестируйте

+6

3

mkusher написал(а):

profile.id?=

В обоих случаях..

profile.php?id=

^^
Иначе на главную перекидывает, а не на профиль )

+3

4

Ого, ты уже самого Мкашера поправляешь!  :cool:

+1

5

Le Soleil написал(а):

В обоих случаях..

:blush:

rps написал(а):

самого Мкашера

:blush:  :blush:  :blush:
зы поправил скрипт

+1

6

Вау, наконец то)) Спасибо, пойду тестить)
Плюсану завтра, лимит(

0

7

mkusher написал(а):

алее куратор должен будет зайти к покупателю, снять у него указанную сумму

то есть удалить n количеств сообщений?

Le Soleil написал(а):

Иначе на главную перекидывает, а не на профиль )

А где это менять надо?

0

8

Vvladik написал(а):

А где это менять надо?

исправил

Vvladik написал(а):

то есть удалить n количеств сообщений?

в дополнительном поле можно отнять же

0

9

Что то у меня отображается только последняя строчка(((

0

10

mkusher написал(а):

в дополнительном поле можно отнять же

ВОт кстати этого я не поняла )
Если указать отриательное знаечение, то вместо денег отображается Nan ну или что-то типо того ))

Отредактировано Le Soleil (Вт, 4 Янв 2011 17:00:21)

0

11

Le Soleil написал(а):

Если указать отриательное знаечение, то вместо денег отображается Nan ну или что-то типо того ))

Вот именно:(

0

12

исправил

+2

13

Кстати, можно как то что бы деньги не от сообщений зависели? А то у меня в тыщах и миллионах, как то так не катит. Или я что то не поняла ><

0

14

Яхико написал(а):

А то у меня в тыщах и миллионах, как то так не катит.

Ну так можно просто поставить другую цену сообщения

Отредактировано Vvladik (Пн, 10 Янв 2011 15:53:45)

0

15

Vvladik
А разница? Мне нужно что бы деньги считались не от сообщения, а то, сколько персонаж заработал.
И вообще, после введения дополнительных полей, у меня Nan отображается.

Отредактировано Яхико (Пн, 10 Янв 2011 22:15:25)

0

16

mkusher

Огромное спасибо за корректировку скрипта на дополнительное поле "деньги"!
Все работает, все отлично, бывших багов больше нет. :)

Магазин тоже беру на тестирование, в ближайшее время отпишусь, что да как.

0

17

mkusher

я так поняла, что в варианте скрипта с магазином дополнительное поле "деньги" встроено... есть проблемка в этом варианте не работает начисление денег тем, у кого стоит в поле отрицательные значения.

Вот пример: http://forumd.ru/viewtopic.php?id=1440#p44070
https://forumupload.ru/uploads/0007/e3/f7/48209-1.jpg

В варианте просто скрипта на деньги такого бага нет.

0

18

a можа, плиз, второй сверху скрипт, заключить не в теги CODE, а в цитату, а то у мя не отображается?

0

19

Destator написал(а):

a можа, плиз, второй сверху скрипт, заключить не в теги CODE, а в цитату, а то у мя не отображается?

если его поставить в цитату, то он сильно растянет страницу и будет неудобно, а что за браузер в котором не отображается тег code?
Герда
скрипт денег и скрипт магазина разделены и друг от друга по большому счету не зависят.
Добавлено:
Действительно забыл удалить кусок, советую обновить всем

Отредактировано mkusher (Чт, 13 Янв 2011 00:06:47)

0

20

mkusher, ток не удивляйся, я захожу с телефона) а браузер: Opera-Mini Mod v.4.20 by Huntler (по моду DG-SG) в нём полоса прокрутки не отображается...

Отредактировано Destator (Чт, 13 Янв 2011 07:48:29)

0