Перейти к содержанию

Подпись вещей


Break

Рекомендуемые сообщения

Скрипт раритетный, чей он был не знаю, думаю разберешься.


prontera,160,185,5 script Именные вещи 878,{
mes "Здраствуйте!";
mes "Я могу дать вещи ваше имя";
mes "Или имя Гильдии!";
mes "Это стоит 1,000,000 zeny";
switch(select("Дать моё имя вещи!","Дать имя моей Гильдии!","Уйти")){
case 1:
if (Zeny < 1000000) goto noz;
mes "Хорошо, теперь оденьте вещь";
mes "И напишите его ID";
input @id;
if(getequipid(1)==@id) callfunc "getitem",@id;
if(getequipid(2)==@id) callfunc "getitem",@id;
if(getequipid(3)==@id) callfunc "getitem",@id;
if(getequipid(4)==@id) callfunc "getitem",@id;
if(getequipid(5)==@id) callfunc "getitem",@id;
if(getequipid(6)==@id) callfunc "getitem",@id;
if(getequipid(7)==@id) callfunc "getitem",@id;
if(getequipid(8)==@id) callfunc "getitem",@id;
if(getequipid(9)==@id) callfunc "getitem",@id;
if(getequipid(10)==@id) callfunc "getitem",@id;
mes "Не найдено одетой вещи!";
close;
break;
case 2:
mes "Хорошо, теперь оденьте вещь";
mes "И напишите его ID";
if (Zeny < 1000000) goto noz;
input @id;
if (strcharinfo(2)=="") goto nog;
if(getequipid(1)==@id) callfunc "getitem2",@id;
if(getequipid(2)==@id) callfunc "getitem2",@id;
if(getequipid(3)==@id) callfunc "getitem2",@id;
if(getequipid(4)==@id) callfunc "getitem2",@id;
if(getequipid(5)==@id) callfunc "getitem2",@id;
if(getequipid(6)==@id) callfunc "getitem2",@id;
if(getequipid(7)==@id) callfunc "getitem2",@id;
if(getequipid(8)==@id) callfunc "getitem2",@id;
if(getequipid(9)==@id) callfunc "getitem2",@id;
if(getequipid(10)==@id) callfunc "getitem2",@id;
mes "Не найдено одетой вещи!";
close;
break;
case 3:
close;
break;
}
noz:
mes "Не хватает зени.";
close;
nog:
mes "Вы не в Гильдии";
close;
}
function script getitem {
set @id, getarg(0);
getnameditem @id,strcharinfo(0);
delitem @id,1;
set Zeny, Zeny-1000000;
close;
end;
}
function script getitem2 {
set @id, getarg(0);
getnameditem @id,strcharinfo(2);
delitem @id,1;
set Zeny, Zeny-1000000;
close;
end;
}
}

Ссылка на комментарий
Поделиться на другие сайты

Читай описание getnameditem: You may not inscribe items with arbitrary strings, only with

names of characters that actually exist.

этот скрипт не будет работать ни при каких условиях.

По теме - теория такая. Подпись осуществляется путем забивки 2 слотов карт по 16 бит одного 32-битного значения - а именно char id, остальные биты идут на что-то еще, это все есть в доках. Когда клиент получает такую вещь, он видит, что каких-то там старших бит в одном из слотов недостает, и он короче понимает, что это char id, а не id карт. Далее он делает асинхронный запрос на сервер типа - как зовут чара с id = тому что лежит в картах, и получает коллбэк вида "чара с id = 12345 зовут Нагибатор228", и в этот момент у вещи появляется подпись.

Таким образом, что тут можно придумать. Резервируешь допустим числа от 800000 до 900000 - под id гильдий, и подписываешь вещи номером id гильдии + 800000. Когда клиент делает запрос на имя чара например 800228 мы видим, что в этом диапазоне лежат гильдии. вычитаем 800000 и получается id гильдии 228. Отсылаем клиенту ответ - персонажа 800228 зовут ГильдияБатек, думаю понятно, что произойдет.

Изменено пользователем ph1047
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика