Скрипт на тп , то место которое запомнили(для серверов с тупой гео) Тестил на Interlude
Автор: pmen
Взято c сoderx.ru
Код:
var
// переменная
x:integer; y:integer;
a:integer; b:boolean; z:integer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
Begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2); x:=ReadD(6);
y:=ReadD(10); z:=ReadD(14);
SendMsc('Запомнен ObjectID = '+inttostr(a));
SendMsc('Запомнен x = '+inttostr(x));
SendMsc('Запомнен y = '+inttostr(y));
SendMsc('Запомнен z = '+inttostr(z));
b:=true;
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 6F 00 68 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
Writed(x);
Writed(y);
Writed(z);
SendToClient;
end;
end;
end.
Удобно Использовать вместе с скриптом на тп.Например ходить на твт(Сохранил точку где появился, тп в город за бафом и потом обратно на арену) .
как этим пользоваться пишет наведите на себя тарге я навожу пишет координаты а что дальше то?
Новейший, но уже успевший быть фикс, пакет на краш сервера. Заставляет сервер упасть, в следствии чего происходит рестарт. Вообще ни что иное, как стандартный оверфлоу (переполнение). Отправлять можно в окне выбора персонажей. И ещё, очень быстро палится аминами по логам и так же быстро фиксится.
Не работает: l2server.ru, lineage2.su (вроде фикс ), abyss, lineageii
как этим пользоваться пишет наведите на себя тарге я навожу пишет координаты а что дальше то?
1. Включаем скрипт.
2. Стаём в то место координаты которого нам нужно сохранить.
3. Бежим/тп куда угодно.
4. Как только нам надо тп в место которое мы сохранили пишем в чат .soh
5. Появляемся в том месте, юзаем любой скрипт, и вуоля...мы на сохраненном месте.
З.Ы. это за условия что на серере пашет тп скрипт.
Если же он работает, то работает и авторес. Да и любой другой скрипт на тп найденый в и-нете.
Скрипт собирать Рекомендации.для ХБ
в башку стукнуло наверно над в туалет
СУТЬ переделать скрипты расказывающие анекдоты
на собирание РЕКов.
В титул пишу За РЕК скажу Анекдот
чел рекает и ему в пм анекдот.норм наверн будит
я туп могу ток поменять в скрипте чтото как писать незнаю неумею необучен
анекдоты два скрипта как основа для пример
Цитата:
procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=true; //
timer1.interval:=1000;
temp[1]:='" Водка в стиле IT: ';
temp[2]:='0.1л - demo ';
temp[3]:='0.25л - trial version ';
temp[4]:='0.5л - personal edition ';
temp[5]:='0.7л - professional edition ';
temp[6]:='1.0л - network edition ';
temp[7]:='1.75л - enterprise ';
temp[8]:='3л - for small business ';
temp[9]:='5л - corporate edition ';
temp[10]:='Бутыль самогона - home edition ';
temp[11]:='"На посошок" - Service pack ';
temp[12]:='Рассол с утра - Recovery tool ';
temp[13]:='Закуска - plugins ';
temp[14]:='Пиво - patch ';
temp[15]:='Coca-cola, Fanta, 7 UP - trojan viruses';
temp[16]:='';
x:=1;
end;
procedure OnTimer(Sender: TObject);
begin
///
if temp
* <> '' then
begin
buf:=hstr('38');
writes(temp
* );
buf:=buf + hstr('01 00 00 00'); ///9- али // 3-пати // 01 - общий
sendtoserverex('ник');
end;
x:=x+1;
if x>= 19 then x:=19; //ЭТА СТРОКА ДЛЯ ТОГО ЧТОБ XELAT заценил глубину мысли! незнаю я синтаксиса-) и учиться лень-) там какойто АНТИЛ надо применять-) а зачем? и так все пашет.
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
end.
взато с А4
program autotarget;
// Автоматическое взятие в таргет атакующего вас игрока или моба
// Чтобы включить скрипт используйте в игре социальное действие - Yes
// Чтобы выключить скрипт используйте в игре социальное действие - No
// Автор: Furious
// Версия: 0.4
Цитата:
const
Name='NLObP'; //имя чара, с соблюдением регистра букв
//************************************************** ****************************
//основная часть скрипта, вызывается при приходе каждого пакета, если скрипт включен
begin
//не обрабатываем пустые пакеты
if pck='' then exit;
if (ConnectName=Name) and FromServer then
begin
case pck[1] of
//32=UserInfo(X)d(Y)d(Z)d(isInAirShip)d(ObjectID). ..
#$32: begin
i:=2;
MyX:=ReadD(i);
MyY:=ReadD(i);
MyZ:=ReadD(i);
ReadD(i); //пропускаем isInAirShip
MyOID:=ReadD(i);
end;
//33=Attack(AttackerID)d(TargetID)...
//48=MagicSkillUse(CharID)d(TargetID)...
#$33,#$48: begin
if Status then
begin
Attacker:=ReadD(2);
ObjectID:=ReadD(6);
if (Attacker<>ObjectID) and (MyOID=ObjectID) then TargetAttacker(Attacker);
end;
end;
end; //case
end; //if
if (ConnectName=Name) and FromClient then
begin
case pck[1] of
//34=RequestSocialAction(Action:Get.Func09)
#$34: begin
case ReadD(2) of
5: Status:=false;
6: Status:=true;
end;
end;
//59=ValidatePosition(X)d(Y)d(Z)...
#$59: begin
MyX:=ReadD(2); //получаю координату х моего чара
MyY:=ReadD(6); //получаю координату у моего чара
MyZ:=ReadD(10); //получаю координату z моего чара
end;
end; //case
end; //if
end.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). color="Yellow">THE BEST
Помог не Жалеем жмем"СПАСИБКУ" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось ~TheLast~; 27.06.2010 в 15:01.
var
// ник
x:integer; y:integer;
a:integer; b:boolean; z:integer;
procedure Init; // gamehack.xz.lt
begin
SendMsc('Target Char nick (gamehack.xz.lt)');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
Begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2); x:=ReadD(6);
y:=ReadD(10); z:=ReadD(14);
SendMsc('save ObjectID = '+inttostr(a));
SendMsc('Save x = '+inttostr(x));
SendMsc('Save y = '+inttostr(y));
SendMsc('Save z = '+inttostr(z));
b:=true;
end;
end;
Begin
If fromclient and (pck=hstr('38 2E 00 73 00 6F 00 68 00 00 00 00 00 00 00')) then
begin
buf:=#$28;
WriteD(a);
Writed(x);
Writed(y);
Writed(z);
SendToClient;
end;
end;
end.
const
myname='Ch1se'; //<<== пишем свой НИК
max=80; //<<== колличество ячеек в рюкзаке
enchantResult=16; //<<== на сколько точить
encSafe=3; //<<== на сколько безопасно точить
var
BaseItems:array[1..max,1..10] of integer;
EncItems:array[1..10] of integer;
Timer01,Timer02: TTimer;
mytext:string;
x,textID,vsego:integer;
enchantID,enchantObjectID:integer;
ItemOID,objectOID,selectObjectID,itemID:integer;
skrolObjectID,bskrolObjectID,skrolAmount,bskrolAmount,skrolID,bskrolID,skrolOID,bskrolOID:integer;
enchantLevel:word;
start,startenchant:Boolean;
//---
procedure SendMsg2(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClientEx(myname);
end;
//...
procedure ItemList;
var
i, j, k: integer;
ListSize: integer;
begin
j:=4; //пропускаем дo ListSize
ListSize:=ReadH(j);
for i:=1 to ListSize do
if (i<=ListSize) then begin
BaseItems[i,1]:=ReadH(j); //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); // q Amount:
j:=j+4; // q Amount:
BaseItems[i,6]:=ReadH(j); //ItemType2
BaseItems[i,7]:=ReadH(j); // CustomType1
BaseItems[i,8]:=ReadH(j); //isEquipped:
BaseItems[i,9]:=ReadD(j); //BodyPart
BaseItems[i,10]:=ReadH(j); //EnchantLevel
//SendMsg2( ' List; ItemID------- : '+IntToStr(BaseItems[i,3])+'' );
inc(j,30);// ФИНАЛ
end else for k:=1 to 10 do BaseItems[i,k]:=0; // забиваем нулями
if (0<ItemID) then objectOID:=GetObjectID(ItemID);//находим по ItemID предмет с ObjectID
end;
//===
//находим ItemID по ObjectID предмета
function GetItemID(enchantObjectID:integer) : integer;
var
i : integer;
begin
for i:=1 to max do
if (BaseItems[i,2]=selectObjectID) then begin
itemID:=BaseItems[i,3];
SendMsg2 ('- ID предмета для Заточки:'+IntToStr(itemID)+' ');
start:=true;
exit;
end;
end;
//===
//находим enchantID предмета по ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
i :integer;
begin
enchantLevel:=0;
vsego:=0;
for i:=1 to max do
if (BaseItems[i,3]=itemID) and (BaseItems[i,10]< enchantResult) then begin
vsego:=vsego+1;
EncItems[vsego]:=i;
if (vsego = 1) then begin
enchantLevel:=BaseItems[i,10];
enchantID:=BaseItems[i,2];
end;
if (vsego > 1) and (BaseItems[i,10] < enchantLevel) then begin
enchantLevel:=BaseItems[i,10];
enchantID:=BaseItems[i,2];
end;
end;
//SendMsg2( '- В Ы Б Р А Н предмет для Заточки');
//SendMsg2( '- ObjID предмета='+IntToStr(enchantID)+' ');
//SendMsg2( '- точим предмет до: '+IntToStr(enchantResult)+' ' );
SendMsg2( '- предметов для заточки: '+IntToStr(vsego)+' ' );
SendMsg2( '- минимально заточен на: '+IntToStr(enchantLevel)+' ' );
x:=1;
if startenchant then begin
Timer01.enabled:=true;
end else begin
SendMsg2( '- cоцдействие ДА для старта' );
end;
end;
//===
procedure OnTimer01(Sender: TObject);
begin
case x of
1:begin
buf:=#$19;
if enchantLevel < encSafe then begin
WriteD(skrolObjectID); //простая заточка
end else begin
WriteD(bskrolObjectID);//блессед заточка
end;
WriteD(0);
SendToServerEx(myname);
inc(x);
end;
2:begin
buf:=hstr('D04C00');
WriteD(enchantID);
SendToServerEx(myname);
Timer02.enabled:=true;
x:=0;
Timer01.enabled:=false;
end;
end;
end;
//---
procedure OnTimer02(Sender: TObject);
begin
buf:=#$5F;
WriteD(enchantID);
WriteD(0);
SendToServerEx(myname);
Timer02.enabled:=false;
SendMsg2( '- Т О Ч И М предмет: '+IntToStr(enchantID)+' ' );
end;
//----------------------------------------------------------------------------------- start
procedure Init;
begin
itemID:=0;
enchantID:=0;
enchantLevel:=0;
start:=false;
startenchant:=false;
skrolObjectID:=0;
bskrolObjectID:=0;
enchantObjectID:=0;
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=500; //<<== время выбора свитка и предмета
Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=2800; //<<== время между заточкой
SendMsg2( '- ***** скрипт включился *****' );
SendMsg2( '- ник: '+myname+', ячеек инвентаря: '+IntToStr(max)+' ' );
SendMsg2( '- будем точить до '+IntToStr(enchantResult)+' ' );
SendMsg2( '- выберите обычную заточку ' );
x:=0;
end;
procedure Free;
begin
Timer01.free;
Timer02.free;
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
24:begin
startenchant:=true;
x:=1;
Timer01.enabled:=true;
SendMsg2( '- П О Е Х А Л И -' );
SendMsg2( '- соцдействие НЕТ для остановки' );
buf:=hstr('14');
SendToServerEx(myname);
pck:='';
exit;
end;
25:begin
start:=false;
startenchant:=false;
Timer01.enabled:=false;
Timer02.enabled:=false;
SendMsg2( '- С Т О П -' );
SendMsg2( '- cоцдействие ДА для старта' );
pck:='';
exit;
end;
end;
end;
//=========
begin
if FromServer and (pck[1]=#$11) then ItemList;
if FromClient then
case pck[1] of
#$56:RequestActionUse;
#$19:if skrolObjectID = 0 then begin
skrolObjectID:=ReadD(2);
SendMsg2( '- ObjID обычного свитка: '+IntToStr(skrolObjectID)+'' );
SendMsg2( '- выберите блессед заточку' );
buf:=hstr('14');
SendToServerEx(myname);
end else if bskrolObjectID = 0 then begin
bskrolObjectID:=ReadD(2);
SendMsg2( '- ObjID блессед свитка: '+IntToStr(bskrolObjectID)+'' );
SendMsg2( '- заточите нужный предмет' );
buf:=hstr('14');
SendToServerEx(myname);
end;
#$D0:if ReadH(2)=76 then begin
selectObjectID:=ReadD(4);
end;
#$5F:begin
enchantObjectID:=ReadD(2);
ItemOID:=GetItemID(enchantObjectID);//находим по ObjectID предмет с ItemID
end;
end;
end.
Последний раз редактировалось ATJIaHTuK; 15.07.2010 в 15:04.
Нашел на максе очень интересный скрипт. Сам я в этом не шарю, но мб кому то пригодиться
Суть скрипта в том, что когда тебя рекают - человеку в ПМ пишет какой-то анекдот, так можно ходить по городу и писать "Рек-Анекдот в ПМ"
Собственно сам скрипт:
Код:
//by VORON
//скрипт который рассказывает анекдоты без бана:
///////////////////////////////////////////////////////////////////////////
var
temp: array [1..20] of string;
timer1: TTimer;
x: integer;
procedure Init; //Вызывается при включении скрипта
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer; //
timer1.enabled:=true; //
timer1.interval:=1000;
temp[1]:='" Водка в стиле IT: ';
temp[2]:='0.1л - demo ';
temp[3]:='0.25л - trial version ';
temp[4]:='0.5л - personal edition ';
temp[5]:='0.7л - professional edition ';
temp[6]:='1.0л - network edition ';
temp[7]:='1.75л - enterprise ';
temp[8]:='3л - for small business ';
temp[9]:='5л - corporate edition ';
temp[10]:='Бутыль самогона - home edition ';
temp[11]:='"На посошок" - Service pack ';
temp[12]:='Рассол с утра - Recovery tool ';
temp[13]:='Закуска - plugins ';
temp[14]:='Пиво - patch ';
temp[15]:='Coca-cola, Fanta, 7 UP - trojan viruses';
temp[16]:='';
x:=1;
end;
procedure OnTimer(Sender: TObject);
begin
///
if temp
<> '' then
begin
buf:=hstr('38');
writes(temp
);
buf:=buf + hstr('01 00 00 00'); ///9- али // 3-пати // 01 - общий
sendtoserverex('ник');
end;
x:=x+1;
if x>= 19 then x:=19; //ЭТА СТРОКА ДЛЯ ТОГО ЧТОБ XELAT заценил глубину мысли! незнаю я синтаксиса-) и учиться лень-) там какойто АНТИЛ надо применять-) а зачем? и так все пашет.
end;
procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
end.
Добавлено через 33 минуты Скрипт для 100% выигрыша в лотерею в квесте Seductive Whispers
Описание квеста
Код:
Название квеста: Seductive Whispers
Выполнять обязательно группой
Можно повторно взять квест
Расы: Все
Классы: Все
Требуемый левел: 50
Где брать квест: Town of Aden
У кого брать квест: Blacksmith Wilbert
Награда: Adena, или armor/weapon scrolls, или 60% B weapon receipes
Описание:
Кузнец Вилберт желает играть с вами в новую модную игру, но говорит, что для игры вам понадобятся бусинки. Вам нужно раздобыть их, чтобы начать играть.
1. Поговорите с Blacksmith Wilbert в кузнице Адена и возьмите задание.
2. Выбивайте итемы в Cemetry, Ancient Battleground, Fields of Massacre. Для одной игры нужно собрать 50 Spirit Beads.
3. Накопив минимум 50 бусин, вернитсь к Blacksmith Wilbert, чтобы играть.
Правила игры:
Когда вы скажете гному, что хотите играть с ним, просто кликайте по ссылке, чтобы тянуть карту, до тех пор, пока он не скажет вам, выиграли вы или проиграли. Если вы проиграли, то не получите ничего. Если выиграете, то можете или взять награду, или продолжить тянуть карты. Если вы отказывайтесь от предложенной награды и продолжите играть, то награда увеличивается. Вы можете попытать счастья получить более ценный приз, но, если в этом случае проиграете, то не получите ни его, ни то, что гном предлагал ранее.
Награда:
1 выигрышный раунд - 40,000а
2 выигрышных раунда - 80,000а
3 выигрышных раунда - 110,000а, EWD
4 выигрышных раунда - 199,000а, EWC
5 выигрышных раундов - 388,000а, 60% рецепт на B-grade weapon
6 выигрышных раундов - 675,000а, 1 кусок на B-grade weapon
7 выигрышных раундов - 1,284,000а, 2 EWB, 2 EAB
8 выигрышных раундов - 2,384,000а, 1 EWA, 2 EAA
Сам скрипт
Код:
# by minlexx
import sys
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "663_SeductiveWhispers"
# Npc
WILBERT = 30846
MOBS = [20674, 20678, 20954, 20955, 20956, 20957, 20958, 20959, 20960, 20961, 20962, 20974, 20975, 20976, 20996, 20997, 20998, 20999, 21001, 21002, 21006, 21007, 21008, 21009, 21010]
# Quest Item
SPIRIT_BEAD = 8766
# Drop chance, win chance need check for correct values
DROP_CHANCE = 80
WIN_ROUND_CHANCE = 66
# Reward items
ADENA = 57
EWA = 729 # Scroll: Enchant Weapon A
EAA = 730 # Scroll: Enchant Armor A
EWB = 947 # Scroll: Enchant Weapon B
EAB = 948 # Scroll: Enchant Armor B
EWC = 951 # Scroll: Enchant Weapon C
EWD = 955 # Scroll: Enchant Weapon D
# ====== Rewards - B grade 60% weapon recipes & keymats =========
# These are just most popular B weapons, need retail check here
# Blunts: Art of Battle Axe, Staff of Evil Spirits (2)
# Bows: Bow of Peril (1)
# Daggers: Demon Dagger, Kris (2)
# Fists: Bellion Cestus (1)
# Polearms: Lance (1)
# Swords: Great Sword, Keshanberk, Sword of Valhalla (3)
# ====== Total: 10; In that order they come in a set below: ======
B_RECIPES = [4963, 4966, 4967, 4968, 5001, 5003, 5004, 5005, 5006, 5007]
B_KEYMATS = [4101, 4107, 4108, 4109, 4115, 4117, 4118, 4119, 4120, 4121]
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = []
def onEvent (self,event,st) :
htmltext = event
if event == "Wilbert_IWantToPlay.htm": # quest accepted
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
st.set("cond","1")
st.set("round","0")
elif event == "Wilbert_ExitQuest.htm": # quest finished
st.playSound("ItemSound.quest_finish")
st.exitQuest(1)
elif event == "Wilbert_IWantToPractice.htm": # practice start dialog
beads=st.getQuestItemsCount(SPIRIT_BEAD)
if beads<1:
htmltext = "Wilbert_Practice_NotEnoughBeads.htm"
elif event == "Wilbert_Practice.htm": # "try luck" pressed (Practice)
beads=st.getQuestItemsCount(SPIRIT_BEAD) # get beads count, it must be > 1
if beads<1:
htmltext = "Wilbert_Practice_NotEnoughBeads.htm"
else:
st.takeItems(SPIRIT_BEAD,1) # take one bead as payment for luck test
random=st.getRandom(100)
if random<WIN_ROUND_CHANCE: # random value is in range [0..WIN_ROUND_CHANCE]
htmltext = "Wilbert_PracticeWon.htm"
else: # lose practice
htmltext = "Wilbert_PracticeLost.htm"
elif event == "Wilbert_LetsPlay.htm": # "Let's play" pressed
beads=st.getQuestItemsCount(SPIRIT_BEAD)
if beads<50:
htmltext = "Wilbert_Practice_NotEnoughBeads.htm"
else:
htmltext = "Wilbert_PlayRound1.htm"
st.set("round","0")
elif event == "Wilbert_PullCard.htm": # "Pull first or next card" pressed
round=st.getInt("round")
beads=st.getQuestItemsCount(SPIRIT_BEAD)
if beads<50 and round == 0: # check for 50 beads when game just starts only (round=0)
htmltext = "Wilbert_Practice_NotEnoughBeads.htm"
else:
if round == 0: # take 50 beads when game just starts only (round=0)
st.takeItems(SPIRIT_BEAD,50)
random=st.getRandom(100)
if random>WIN_ROUND_CHANCE: # random value is in range [WIN_ROUND_CHANCE..100]
htmltext = "Wilbert_PlayLose.htm"
st.set("round","0") # restart game
else: # next round won
round = round + 1
htmltext = st.showHtmlFile("Wilbert_PlayWin.htm").replace("NROUND", str(round))
if round == 1:
htmltext = htmltext.replace("MYPRIZE","40,000 adena")
if round == 2:
htmltext = htmltext.replace("MYPRIZE","80,000 adena")
if round == 3:
htmltext = htmltext.replace("MYPRIZE","110,000 adena, D-grade Enchant Weapon Scroll")
if round == 4:
htmltext = htmltext.replace("MYPRIZE","199,000 adena, C-grade Enchant Weapon Scroll")
if round == 5:
htmltext = htmltext.replace("MYPRIZE","388,000 adena, 1 recipe for a B-grade weapon")
if round == 6:
htmltext = htmltext.replace("MYPRIZE","675,000 adena, 1 essential ingredient for a B-grade weapon")
if round == 7:
htmltext = htmltext.replace("MYPRIZE","1,284,000 adena, 2 B-grade Enchant Weapon Scrolls, 2 B-grade Enchat Armor Scrolls")
if round == 8: # reached round 8; give prizes and restart game
round = 0
st.giveItems(ADENA,2384000)
st.giveItems(EWA,1) # Scroll: Enchant Weapon A
st.giveItems(EAA,2) # Scroll: Enchant Armor A
htmltext = "Wilbert_PlayWonRound8.htm"
st.set("round",str(round))
elif event == "Wilbert_TakePrize.htm": # player won round and wants to stop game and take prize
round=st.getInt("round")
if round == 0: # player did not win any round but wants to take prize? O_o
htmltext = "<html><body>You did not win any round! No prizes.</body></html>"
return htmltext
if round > 8: # some bug or hack?
st.set("round","0")
htmltext = "<html><body>Round cannot be > 8 !!!</body></html>"
return htmltext
st.set("round","0") # first set round to 0 - game ended.
htmltext = "Wilbert_PrizeTaken.htm"
# give prize depending on current round won
if round == 1:
st.giveItems(ADENA,40000)
elif round == 2:
st.giveItems(ADENA,80000)
elif round == 3:
st.giveItems(ADENA,110000)
st.giveItems(EWD,1) # Scroll: Enchant Weapon D
elif round == 4:
st.giveItems(ADENA,199000)
st.giveItems(EWC,1) # Scroll: Enchant Weapon C
elif round == 5:
st.giveItems(ADENA,388000)
# 60% B-weap. rec number is random
st.giveItems(B_RECIPES[st.getRandom(len(B_RECIPES))], 1)
elif round == 6:
st.giveItems(ADENA,675000)
# B-weap. key number is random
st.giveItems(B_KEYMATS[st.getRandom(len(B_KEYMATS))], 1)
elif round == 7:
st.giveItems(ADENA,1284000)
st.giveItems(EWB,2) # Scroll: Enchant Weapon B
st.giveItems(EAB,2) # Scroll: Enchant Armor B
# for round 8 prize is automatically when player wins 8 round
return htmltext
def onTalk (self,npc,player):
st = player.getQuestState(qn)
htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
if not st : return htmltext
npcId = npc.getNpcId()
id = st.getState()
# first talk to Wilbert
if npcId == WILBERT and id == State.CREATED:
if player.getLevel() >= 50 : # check player level
htmltext = "Wilbert_start.htm"
else:
htmltext = "<html><body>This quest is for characters above level 50 only.</body></html>"
st.exitQuest(1)
# talk to Wilbert when quest already in progress
elif npcId == WILBERT and id == State.STARTED :
htmltext = "Wilbert_QuestInProgress.htm"
return htmltext
def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
if st.getState() != State.STARTED : return
npcId = npc.getNpcId()
if npcId in MOBS:
if st.getRandom(100) < DROP_CHANCE:
st.giveItems(SPIRIT_BEAD,1)
st.playSound("ItemSound.quest_itemget")
return
QUEST = Quest(663,qn,"Seductive Whispers")
QUEST.addStartNpc(WILBERT)
QUEST.addTalkId(WILBERT)
for mobId in MOBS:
QUEST.addKillId(mobId)
Последний раз редактировалось BlackWinG; 24.07.2010 в 00:08.
Причина: Добавлено сообщение
var
Bypass:string;
autoText:Boolean;
TextType:integer;
//==========================================
// ShowHTML(HTML);
Procedure ShowHTML( _html : string );
begin
buf:=#$19;
WriteD(5);
WriteS(_HTML);
SendToClientEx(myname);
end;
//========================
procedure ActionUse; //2=PM, 3=Party, 4=Clan, 8=Trade, 9=Alli, 17=Hero
begin
Bypass:=ReadS(2);
case Bypass of
'Trade':begin autoText:=true;TextType:=8; end;//Trade
'Party':begin autoText:=true;TextType:=3; end;//Party
'Clan':begin autoText:=true;TextType:=4; end;//Clan
'Alli':begin autoText:=true;TextType:=9; end;//Alli
'PM':begin autoText:=true;TextType:=0; end;//PM
'Hero':begin autoText:=true;TextType:=17;end;//Hero
'stop':begin autoText:=false;TextType:=0;end;
end;
end;
//-----------------------------------------
procedure Init;
begin
TextType:=0;
autoText:=false;
end;
procedure Free;
begin
end;
//Tип: 0x4A (CreatureSay)
//Pазмер: 83+2
//Время прихода: 12:35:56:375
//0002 d ObjectID: 268899150 (0x1007134E)
//0006 d TextType: 15 (0x0000000F)
//000A s CharName: MaFaca
//0018 s Text: ВТТ ВАШ СЕПОР С СА, ПРЕДЛЫ ПМ
//=========================
begin
//не обрабатываем пустые пакеты
if pck='' then exit;
if FromClient and (pck[1]=#$34) and (ReadD(2)=06) then begin ShowHTML(HTML); pck:='';exit;end;
if FromClient and (pck[1]=#$23) then begin ActionUse; pck:='';exit;end; //
if FromServer and autoText and (pck[1]=#$4A) and (ReadD(6)=TextType) then begin
buf:=pck;
WriteD(15,6);
pck:=buf;
end;
Простенький скрипт для "глухих", перенаправляет сообщения))
немного добавил..
тестил на IT. Gracia Final
Добавлено через 5 минут
Авто заточка для любых хроник 100% рабочия
PHP код:
// для любых хроник
// в пати чат пишем уровень заточки
// можно менять в процесе работы скрипта
// заточить один раз чтоб запомнить чем и что точить
// точить для запоминания по одному предмету
// если будите точить разные предметы
// предметы должны соответствовать применяемому skrol
// СТАРТ нажать соцдействие ДА
// СТОП нажать соцдействие НЕТ
// включить системные сообщения соцдействие - приветствие \ hello
// выключить системные сообщения соцдействие - победа \ victory
// дальше скрипт сам точит до указаного уровня заточки
// все предметы одинаковые с первыми заточеными
// точит первый предмет до максима потом второй и т.д
// т.е если вы заточили несколько разных предметов
// одного класса армор или веапон они будут точиться
// АВТОР ==>>>> TAMBIK
program Enchant_gracia;
const
myname='TAMBIK'; //<<== пишем свой НИК
max=140;//<<== колличество ячеек в рюкзаке
var
BaseItems:array[1..max,1..11] of integer;
BaseID:array[1..max] of integer;
Timer01: TTimer;
Timer02: TTimer;
Timer03: TTimer;
flag,start,select,selectID,autoMsg:Boolean;
autostart:Boolean;
mytext:string;
ListSize,ItemEnch:word;
textID,itemID:integer;
enchantObjectID:integer;
enchantID,skrolObjectID:integer;
ItemOID,objectOID: integer;
sumskrol,sumitemID: integer;
key,x,y,ii:integer;
maxlvl: integer;
GetiD:integer;
skrolID,skrolObj:integer;
t,l,d:integer;
//-----------------------------------------
procedure SendMsg2(msg:string);
begin
if autoMsg then begin
buf:=#$4A;
WriteD(0);
WriteD(3);
WriteS('');
WriteS(msg);
SendToClientEx(myname);
end;
end;
//===========================================
procedure Resultmaxlvl;
var
i:integer;
begin
if FromClient and (pck[1]=#$49) then begin
i:=2;
mytext:=ReadS(i);
textID:=ReadD(i);
if (textID=3) then begin
maxlvl:=StrToInt(mytext);
SendMsg2( ' установлен Уровень Заточки: '+IntToStr(maxlvl)+'' );
pck:='';
exit;
end;
end;
end;
//..............................................................................
procedure ItemList;
var
i, j, k: integer;
count,x:integer;
begin
count:=0;
x:=0;
y:=0;
j:=4; //пропускаем дo ListSize
ListSize:=ReadH(j);
for i:=1 to ListSize do
if (i<=ListSize) then begin
BaseItems[i,1]:=ReadH(j); //ItemType1- 1:одето броня. 0:бижа. 4:в рюкзаке
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); // Amount:
BaseItems[i,6]:=ReadD(j); // Amount:
BaseItems[i,7]:=ReadH(j);//ItemType2
BaseItems[i,8]:=ReadH(j);// CustomType1
BaseItems[i,9]:=ReadH(j);//isEquipped:
BaseItems[i,10]:=ReadD(j);//BodyPart
BaseItems[i,11]:=ReadH(j);//EnchantLevel
inc(x); // счетчик
count:=round((Length(pck)-5) / ListSize);// длина блока
//y := пропускаем до следущего блока
y:=count*x-(j-6);// . 6= длина ListSize + 4 байта пропуска в начале пакета
inc(j,y);
end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
if (0 < skrolObjectID) then begin
sumskrol:=Getitem(skrolID,3,5);
SendMsg2 (' SKROL ... c ID : '+IntToStr(skrolID)+' = '+IntToStr(sumskrol)+' ШТ ');
if start and (0<sumskrol) then Timer01.enabled:=true;
if (sumskrol=0) then begin
Timer01.enabled:=false;
stopselectskrol;
SendMsg2 ('........ НЕДОСТАТОЧНО SKROL........ ');
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
end;
end;
end;
//=============================
procedure EnchantResult;
begin
end;
//=============================
procedure InventoryUpdate;
var
Id,ObjId:integer;
begin
ObjId:=ReadD(8);
Id:=ReadD(12);
SendMsg2 ('удален предмет Id : '+IntToStr(Id)+' ObjectID: '+IntToStr(ObjId)+' ');
deleteBase;
end;
//=============================
procedure deleteBase;
var
i,j,k:integer;
begin
for i:=1 to max do
if (BaseItems[i,2]=enchantID) then begin
BaseItems[i,1]:=0;
BaseItems[i,2]:=0; //ObjectID
BaseItems[i,3]:=0; //ItemID
BaseItems[i,4]:=0;
BaseItems[i,5]:=0;
BaseItems[i,6]:=0;
BaseItems[i,7]:=0;
BaseItems[i,8]:=0;
BaseItems[i,9]:=0;
BaseItems[i,10]:=0;
BaseItems[i,11]:=0;
inc(j,y);
end else for k:=1 to 11 do BaseItems[i,k]:=0; // забиваем нулями
end;
//===========================================
//
//===========================
function Getitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=BaseItems[i,down];
end;
end;
//===========================
function Getsumitem(Obj,up,down:integer): integer;
var
i: integer;
begin
Result:= 0; //В начале у нас 0
for i:=1 to max do
if (BaseItems[i,up]=Obj) then begin
Result:=Result+BaseItems[i,down];
end;
end;
//=================================
//добавляем в базу ID предмета
procedure addIDtoarray(ItemOID:integer);
begin
SendMsg2( '------------------------------------- ' );
SendMsg2 (' добавить в базу для заточки ID : '+IntToStr(ItemOID)+' Предмета ');
SendMsg2(' .................' );
flag:=false;
for ii:=1 to max do
if (BaseID[ii]=ItemOID) then begin // текущий ID уже есть в массиве,
flag := true;
sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
SendMsg2 (' предмет в базе есть с ID : '+IntToStr(ItemOID)+' = '+IntToStr(sumitemID)+' ШТ ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
if (flag = false) then begin
for ii:=1 to max do
if (BaseID[ii]=0) then begin // добавим ID в массив,
BaseID[ii]:=ItemOID;
sumitemID:=Getsumitem(ItemOID,3,5);//счет скоко предметов
SendMsg2 (' Добавлен Предмет с ID : '+IntToStr(ItemOID)+' = '+IntToStr(sumitemID)+' ШТ ');
SendMsg2( '------------------------------------- ' );
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//=============================
procedure ChooseInventory;
begin
if (itemID>0) then begin
objectOID:=GetObjectID(itemID);//находим по ItemID предмет с ObjectID
if (objectOID=0) then begin
stopselectskrol;
SendMsg2 (' предметов c ID : '+IntToStr(itemID)+' для заточки НЕТ ! ! ! ! ');
for ii:=1 to max do
if (BaseID[ii]=itemID) then begin
BaseID[ii]:=0;
SendMsg2 (' ..... ПОИСК ______ ПРЕДМЕТА..... ');
GetItemID ;
Break; // прерываем дальнейший перебор массива.
end;
if (itemID=0) then begin
SendMsg2 ('___НЕТ ПРЕДМЕТОВ ДЛЯ ЗАТОЧКИ___ ');
SendMsg2 (' ___ О С Т А Н О В Л Е Н О ___ ');
stopselectskrol;
start:=false;
end;
end;
end;
end;
//=================================
// GetiD:=GetItemID(itemID);//находим в базе ItemID предмет для Заточки
//находим ItemID предмета для Заточки в базе ItemID
procedure GetItemID ;
begin
if start then begin
if (maxlvl=0) then begin
SendMsg2 (' неуказан уровень заточки ');
stopselectskrol;
SendMsg2 ('___ О С Т А Н О В Л Е Н О ___ ');
end;
if (maxlvl>0) then begin
itemID:=0;
for ii:=1 to max do
if (BaseID[ii]<>0) then begin
itemID:=BaseID[ii];
SendMsg2 (' НАШЛИ ПРЕДМЕТ для ЗАТОЧКИ с ID = '+IntToStr(itemID)+' ');
Timer01.enabled:=true;
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
end;
//=================================
//находим enchantID предмета по ItemID для заточки
function GetObjectID(itemID:integer) : integer;
var
i:integer;
begin
enchantID:= 0;
ItemEnch:=0;
Result:= 0;
SendMsg2('------------------------------' );
if (itemID>0) then begin
SendMsg2 (' ищем ObjectID предмета с ID : ' +IntToStr(itemID)+' ');
SendMsg2('------------------------------' );
for i:=1 to max do
if (BaseItems[i,3]= itemID) and (BaseItems[i,11]< maxlvl) then begin
enchantID:=BaseItems[i,2];
Result:=BaseItems[i,2];
ItemEnch:=BaseItems[i,11];
SendMsg2(' ..... найден предмет для заточки ..... ');
SendMsg2(' ID : '+IntToStr( itemID)+' и ObjectID : '+IntToStr(enchantID)+' заточен до : '+IntToStr(ItemEnch)+' ');
SendMsg2('------------------------------' );
if (enchantID>0) then startselectEnch;
Break; // прерываем дальнейший перебор массива.
end;
end;
end;
//==========================
procedure stopselectskrol;
begin
buf:=hstr('D04E00');
SendToServerEx(myname);
end;
//===================================
procedure OnTimer01(Sender: TObject);
begin
buf:=#$19;
WriteD(skrolObjectID);
WriteD(0);
SendToServerEx(myname);
Timer01.enabled:=false;
end;
//--------------------------
procedure startselectEnch;
begin
Timer02.enabled:=true
end;
procedure OnTimer02(Sender: TObject);
begin
buf:=hstr('D04C00');
WriteD(enchantID);
SendToServerEx(myname);
Timer02.enabled:=false;
Timer03.enabled:=true;
end;
procedure OnTimer03(Sender: TObject);
begin
buf:=#$5F;
WriteD(enchantID);
WriteD(0);
SendToServerEx(myname);
Timer03.enabled:=false;
SendMsg2(' ..... Точим Предмет ..... ');
SendMsg2( ' ID : '+IntToStr(itemID)+' ObjectID : '+IntToStr(enchantID)+' - до : '+IntToStr(maxlvl)+' ' );
SendMsg2( '_______________________________' );
end;
//-----------------------------------------
procedure Init;
begin
t:=0;l:=0;d:=0;
autostart:=false;
flag:=false;
selectID:=false;
autoMsg:=true;
GetiD:=0;
sumskrol:=0;
objectOID:=0;
maxlvl:=0;
itemID:=0;
enchantID:=0;
ItemEnch:=0;
start:=false;
select:=false;
skrolObjectID:=0;
enchantObjectID:=0;
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=400; //<<== время выбора свитка
Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=400; //<<== время выбора предмета
Timer03:=TTimer.Create(nil);
Timer03.OnTimer:=@OnTimer03;
Timer03.enabled:=false;
Timer03.interval:=3000; //<<== время между заточкой
SendMsg2( 'в пати чат пишем уровень заточки' );
SendMsg2( ' заточить предметы один раз ! ! !' );
SendMsg2( ' СТАРТ соцдействие ДА ' );
SendMsg2( ' СТОП соцдействие НЕТ' );
SendMsg2('В К Л сообщения соцдействие-приветствие\hello ' );
SendMsg2('ВЫКЛ сообщения соцдействие-победа\victory ' );
SendMsg2( '------------------------------------- ' );
buf:=hstr('14');
SendToServerEx(myname);
for ii:=1 to max do
BaseID[ii]:=0;
end;
procedure Free;
begin
Timer01.free;
Timer02.free;
Timer03.free;
end;
//=========================
procedure RequestActionUse;
begin
case ReadD(2) of
12:begin autoMsg:=true; pck:=''; exit; end;
13:begin autoMsg:=false; pck:=''; exit; end;
24:begin
if (autostart=false) then SendMsg2( 'предмет незаточен или пакеты неприняты !' );
if autostart then begin
SendMsg2( ' ! ! ! П О Е Х А Л И ! ! !' );
SendMsg2( '_______________________________' );
start:=true;
GetItemID ;
pck:='';
exit;
end;
end;
25:begin
start:=false;
enchantID:=0;
ItemEnch:=0;
Timer01.enabled:=false;
Timer02.enabled:=false;
Timer03.enabled:=false;
SendMsg2( ' ! ! ! С Т О П ! ! ! ' );
stopselectskrol;
pck:='';
exit;
end;
end;
end;
//=========
begin
//не обрабатываем пустые пакеты
if pck='' then exit;
if FromServer and (pck[1]=#$87) then EnchantResult;
if FromServer and (pck[1]=#$21) and (ReadH(4)=3)then InventoryUpdate;
if FromServer and (pck[1]=#$11) then ItemList;
if FromServer and (pck[1]=#$7C) then ChooseInventory;
if FromClient and (pck[1]=#$49) then Resultmaxlvl;
if FromClient and (pck[1]=#$56) then RequestActionUse;
begin
if (start=false) and FromClient then
case pck[1] of
#$19:begin
t:=1;
skrolObjectID:=ReadD(2);
skrolID:= Getitem(skrolObjectID,2,3);//находим по ObjectID скрол с ItemID
SendMsg2(' .................' );
SendMsg2(' активирован SKROL ID : '+IntToStr(skrolID)+' ' );
SendMsg2(' .................' );
buf:=hstr('14');
SendToServerEx(myname);
end;
#$D0:if ReadH(2)=76 then begin
l:=1;
SendMsg2(' окно выбора предмета ' );
SendMsg2(' .................' );
end;
#$5F:begin
d:=1;
enchantObjectID:=ReadD(2);
if (t=1) and (l=1) and (d=1) then begin
autostart:=true;
ItemOID:= Getitem(enchantObjectID,2,3);//находим по ObjectID предмет с ItemID
SendMsg2 (' заточен предмет c ID : '+IntToStr(ItemOID)+' ');
SendMsg2(' .................' );
addIDtoarray(ItemOID);//добавляем в базу ID предмета
stopselectskrol;
end;
end;
end;
end;
end.
Добавлено через 19 минут
для лоу рейтов
Скрипты для валкера
Первая профа Human Wizard
Надо немного денег, и сое штук 10.
Не предусмотрено погибель чара. Так же цены могут не много не совподать
[Ссылки могут видеть только зарегистрированные пользователи. ]
Trade with Ivory Tower
Скрипт на выполнение даркэльфийского грибного квеста.
Запускать скрипт на даркэльфийской территории или в городу (у нубигайда).
В скрипте нет проверок на перегрузку и продажи хлама.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Скрипт на прохождение первой профы на Scaveneger'а. Два скрипта. Сначало первый, потом второй.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось Syava~; 25.07.2010 в 12:11.
Причина: Добавлено сообщение
var
// переменная
ValidatePosition:string;
a:integer; b:boolean;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьми себя в таргет!');
b:=false;
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEX(Name);
end;
//защитная часть
begin
begin
if FromClient and (pck[1]=#$04)and (not b) then
begin
a:=ReadD(2);
SendMsc('Запомнен ObjectID = '+inttostr(a));
b:=true;
end;
end;
If FromClient and (pck=hstr('38 2E 00 6F 00 6E 00 00 00 00 00 00 00')) then
begin
Buf:=#$9F;
WriteD(a);
buf:=buf+ hstr('01 00 00 00 56 0D 20 10 02 00 00 00');
SendToServerEX(Name);
end;
end.
Рабочийй скрипт на ИТ. Мало где фикс.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Рулит =)
Помог ??? Тыкай спасибку =)
Соблюдаю все правила Zhyk.ru =)
везде видел упоминание о скрипте на авто рес.. а может кто выложит?
Код:
//Скрипт на возрождение на месте после смерти.
//Включите скрипт,когда вы умерли возьмите себя в таргет и нажмите в город.
//Вы встанете наместе.
//Автор pmen ICQ - 479917081
//=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
const
//======================================
Name='Krisa'; //<-----Ник Персонажа
//======================================
var
a:integer;x:integer;MyID:string;
y:integer;z:integer;
b:boolean;ValidatePosition:string;
procedure Init; //Вызывается при включении скрпта
begin
SendMsc('Возьми себя в таргет'); //Системное сообщение
b:=false; //Условие b первоночально False
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
begin
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then
begin
//Сохраняем мой Обжект Ид
MyID:= pck[2]+pck[3]+pck[4]+pck[5];
a:=ReadD(2); x:=ReadD(6); //Читаем и запоминаем данные
y:=ReadD(10); z:=ReadD(14);
SendMsc('Все данные сохранены!'); //Оповещаем о том что все прошло успешно
b:=true;
end;
begin
if pck='' then exit; //Не читаем пустые пакеты
//Если от Клиента пакет RequestRestartPoint
//Запоминаем ValidatePosition до revive
//Посылаем клиенту TeleportToLocation
if FromClient and (ConnectName=Name) and (pck=hstr('6D 00 00 00 00')) then
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then ValidatePosition:=pck;
if FromServer and (ConnectName=Name) and (pck[1]=#$28) and (MyID= pck[2]+pck[3]+pck[4]+pck[5]) then
begin
pck:=''; //Убиваем стандартный пакет
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
buf:=#$28;
WriteD(A); //Obj.ID
WriteD(X); //Coord.X
WriteD(Y); //Coord.Y
WriteD(Z); //Coord.Z
SendtoclientEX(Name);
buf:=ValidatePosition; //посылаем ValidatePosition
SendToServerEX(Name);
end;
end;
end.
Добрый вечер, решил сделать скрипт для l2phx для автоматической проверки мультиселлов, но столкнулся с такой проблемой, если лист большой то слишком долго менять скрипт надо. За пример взял скрипт с Coderx.ru
Цитата:
var
TimerCycle:integer;
timer:TTimer;
procedure Init;
begin
timer:=TTimer.Create(nil);
timer.interval:=1;
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
TimerCycle:=1;
end;
begin
useforconnectid := ConnectID;
if FromClient and (pck=HStr('56 0D 00 00 00 00 00 00 00 00')) then timer.enabled:=true;
if FromClient and (pck=HStr('39 0F 02 00 00 00 00 00 00 00')) then timer.enabled:=false;
end.
Но при такой реализации необходимо каждый пакет добавлять в скрипт, самой лучшей реализацией было бы иметь в папке со скриптом файл например packet.pct в котором спосок мультиселлов а скрипт считывает построчно из этого файла эти пакеты пока они не кончатся. Прошу помочь реализовать данный скрипт, он будет полезен не только мне!