Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.06.2012, 23:29   #1
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

зеос.
на формочке\тдатамодуле с именем dmdata лежит

delphi Код:
object SqlConnection: TZConnection   Protocol = 'mysql-4.1'   HostName = '192.168.0.1'   Port = 3306   Database = 'qqqq'   User = 'wwww'   Password = 'eeeee'   Catalog = 'mysql'   AutoCommit = False end

есть класс прослойка.позволяющий юзать квери с любой нити без последствий.
delphi Код:
TZQueryWrapper = class   private     Z : TZQuery;     function getsql: tstrings;     procedure setsql(const Value: tstrings);   protected     Procedure SynchCreate;     Procedure SynchDestroy;     procedure SynchOpen;     procedure SynchClose;     procedure SynchExecSql;     procedure SynchNext;   public     procedure Open;     procedure Close;     procedure ExecSql;     procedure next;     Function RowsAffected : integer;     Function Eof : boolean;     function GetBlobFieldData(FieldNo: Integer; var Buffer: TBlobByteData): Integer;     Function FieldByName(const name : string):Tfield;     property sql : tstrings read getsql write setsql;     Constructor Create;     Destructor destroy; override;   end; { TZQueryWrapper } procedure TZQueryWrapper.Close; begin   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchClose)   else     SynchClose; end; constructor TZQueryWrapper.Create; begin   z := nil;   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchCreate)   else     SynchCreate; end; destructor TZQueryWrapper.destroy; begin   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchDestroy)   else     SynchDestroy;   inherited; end; function TZQueryWrapper.Eof: boolean; begin   result := z.Eof; end; procedure TZQueryWrapper.ExecSql; begin   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchExecSql)   else     SynchExecSql; end; function TZQueryWrapper.FieldByName(const name: string): Tfield; begin   Result := z.FieldByName(name); end; function TZQueryWrapper.GetBlobFieldData(FieldNo: Integer;   var Buffer: TBlobByteData): Integer; begin   result := z.GetBlobFieldData(FieldNo,Buffer); end; function TZQueryWrapper.getsql: tstrings; begin   result := Z.SQL; end; procedure TZQueryWrapper.next; begin   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchNext)   else     SynchNext;   end; procedure TZQueryWrapper.Open; begin   if GetCurrentThreadId <> MainThreadID then     TThread.Synchronize(nil, SynchOpen)   else     SynchOpen; end; function TZQueryWrapper.RowsAffected: integer; begin   Result := z.RowsAffected; end; procedure TZQueryWrapper.setsql(const Value: tstrings); begin   Z.SQL := Value; end; procedure TZQueryWrapper.SynchClose; begin   z.Close; end; procedure TZQueryWrapper.SynchCreate; begin   if not dmDB.SqlConnection.Connected then     dmDB.SqlConnection.Connect;   Z := TZQuery.Create(nil);   z.Connection := dmDB.SqlConnection; end; procedure TZQueryWrapper.SynchDestroy; begin   z.free; end; procedure TZQueryWrapper.SynchExecSql; begin   z.ExecSQL; end; procedure TZQueryWrapper.SynchNext; begin   z.Next; end; procedure TZQueryWrapper.SynchOpen; begin   z.Open; end;

есть глобально обьявленная функция.
delphi Код:
Function NewUpdateQuery(sQuesry : string):TZQueryWrapper; begin   result := TZQueryWrapper.Create;   result.sql.Text := sQuesry; end;

ну. и в итоге, юзаем как то так.
delphi Код:
with NewUpdateQuery(format('select id from build_parsers where buildnum = %d',[NewBuild])) do       begin         open;         while not eof do         begin           DeleteFile(pchar(format('%s\%d.bin',[OutputDir,FieldByName('id').AsInteger])));           next;         end;         Close;         Destroy;       end;
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 12.06.2012, 02:13   #2
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

круто. спасиба пасаны)
Миниатюры
Нажмите на изображение для увеличения
Название: clip.jpg
Просмотров: 26
Размер:	23.7 Кб
ID:	2687  
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 12.06.2012, 15:21   #3
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

чтото немогу найти значения битовых флагов для слотов, где там в сервере

опытным путем установил тока
Код:
 BODY_LHAND = 128;  //weapon
 BODY_RHAND = 256;  // dual weapon or shield
Добавлено через 13 минут
типы вепонов в цифрах тоже ненашол. например какая цифра соответствует dualsword

Добавлено через 56 минут
части тела пробил через клиент.
осталость гдето взять ид вепонов
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 12.06.2012 в 15:21. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 12.06.2012, 19:14   #4
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

mira, L2Item
Цитата:
public static final int TYPE1_WEAPON_RING_EARRING_NECKLACE = 0;
public static final int TYPE1_SHIELD_ARMOR = 1;
public static final int TYPE1_OTHER = 2;
public static final int TYPE1_ITEM_QUESTITEM_ADENA = 4;

public static final byte TYPE2_WEAPON = 0;
public static final byte TYPE2_SHIELD_ARMOR = 1;
public static final byte TYPE2_ACCESSORY = 2;
public static final byte TYPE2_QUEST = 3;
public static final byte TYPE2_MONEY = 4;
public static final byte TYPE2_OTHER = 5;
public static final byte TYPE2_PET_WOLF = 6;
public static final byte TYPE2_PET_HATCHLING = 7;
public static final byte TYPE2_PET_STRIDER = 8;
public static final byte TYPE2_NODROP = 9;
public static final byte TYPE2_PET_GWOLF = 10;
public static final byte TYPE2_PENDANT = 11;
public static final byte TYPE2_PET_BABY = 12;

public static final int SLOT_NONE = 0x00000;
public static final int SLOT_UNDERWEAR = 0x00001;
public static final int SLOT_CLOAK = 0x0003; //TODO:????

public static final int SLOT_R_EAR = 0x00002;
public static final int SLOT_L_EAR = 0x00004;

public static final int SLOT_NECK = 0x00008;

public static final int SLOT_R_FINGER = 0x00010;
public static final int SLOT_L_FINGER = 0x00020;

public static final int SLOT_HEAD = 0x00040;
public static final int SLOT_R_HAND = 0x00080;
public static final int SLOT_L_HAND = 0x00100;
public static final int SLOT_GLOVES = 0x00200;
public static final int SLOT_CHEST = 0x00400;
public static final int SLOT_LEGS = 0x00800;
public static final int SLOT_FEET = 0x01000;
public static final int SLOT_BACK = 0x02000;
public static final int SLOT_LR_HAND = 0x04000;
public static final int SLOT_FULL_ARMOR = 0x08000;
public static final int SLOT_HAIR = 0x10000;
public static final int SLOT_FORMAL_WEAR = 0x20000;
public static final int SLOT_DHAIR = 0x40000;
public static final int SLOT_HAIRALL = 0x80000;
public static final int SLOT_R_BRACELET = 0x100000;
public static final int SLOT_L_BRACELET = 0x200000;
public static final int SLOT_DECO = 0x400000;
public static final int SLOT_SIGIL = 0x000000; // TODO: fix
public static final int SLOT_BELT = 0x10000000;
public static final int SLOT_WOLF = -100;
public static final int SLOT_HATCHLING = -101;
public static final int SLOT_STRIDER = -102;
public static final int SLOT_BABYPET = -103;
public static final int SLOT_GWOLF = -104;
public static final int SLOT_PENDANT = -105;
Добавлено через 3 минуты
Цитата:
Сообщение от mira Посмотреть сообщение
Добавлено через 13 минут
типы вепонов в цифрах тоже ненашол. например какая цифра соответствует dualsword
про какие именно цифры идёт речь?
__________________
Начало.

Последний раз редактировалось supernewbie, 12.06.2012 в 19:14. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием
Старый 12.06.2012, 19:52   #5
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Код:
  {  body equip bitmask }
 BODY_LHAND = 128;  //weapon
 BODY_RHAND = 256;  // dual weapon or shield
 BODY_FINGERS= 48;
 BODY_EARS   = 6;
 BODY_NECK   = 8;
 BODY_BELT   = $10000000;
 BODY_BACK   = $2000; // cloack
 BODY_UNDERWEAR = 1;
 BODY_HEAD   = 64;
 BODY_UPPER  = 1024;
 BODY_LOWER  = 2048;
 BODY_GLOVE  = 512;
 BODY_FEET   = 4096;
 BODY_HAIR   = 65536;
 BODY_FACE   = $40000;
 BODY_HAIRALL= $80000;
с слотами так сделал, в принцыпе как у тебя. чето может нехватает но петомцы пока пофиг)
Код:
 {weapon flags} 
weapon_Dual_Sword=1;
weapon_Sword=2;
weapon_Big_Sword=4;
weapon_Blunt=8;
weapon_Big_Blunt=16;
weapon_Dagger=32;
weapon_Dual_Fist=64;
weapon_Bow=128;
weapon_Dual_Dagger=256;
weapon_Pole=512;
weapon_Shield=1024;
weapon_Magic=2048;
weapon_Light=4096;
weapon_Heavy=8192;
weapon_Rapier=16384;
weapon_Ancient=32768;
weapon_Crossbow=65536;
weapon_Sigil=131072;
weapon_Fist=262144;
weapon_Rod=524288;
weapon_Etc=1048576;
випоны сам задал, на пакетном уровне типа оружия не передаетса всеравно такчто пофиг
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 12.06.2012, 21:15   #6
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

mira, ты что очередного бота делаешь?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 13.06.2012, 00:45   #7
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Yegor Посмотреть сообщение
mira, ты что очередного бота делаешь?
почему очередного. этот тоже самый

просто решил научить его юзать итемы через AI а не через хардкод useitem в скрипте. ну типа чтоб сам знал что у него в сумке и куда это мона применить)
зы - со скилами вроде все получилось

Добавлено через 7 минут
Цитата:
Сообщение от Breadfan Посмотреть сообщение
сначала надо составить таблицу умений и бафов от ситков. их соотношение. что если чтото висит с бафа - не юзал свиток. Чисто теоретически в сборках есть параметр указывающий на тип бафа свитка - посмотри на него.
delphi Код:
<item id="3926" type="EtcItem" name="L2Day - Scroll of Guidance">         <set name="icon" val="icon.etc_scroll_white_i00" />         <set name="default_action" val="skill_reduce" />         <set name="etcitem_type" val="scroll" />         <set name="material" val="paper" />         <set name="weight" val="120" />         <set name="is_stackable" val="true" />         <set name="is_oly_restricted" val="true" />         <set name="handler" val="ItemSkills" />         <set name="item_skill" val="2050-1" />         <set name="use_condition" val="{{uc_transmode_exclude;{tt_flying}}}" />     </item>
я все уже что надо в датапак бота впилил. остальось в ядре задействовать и отладить
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 13.06.2012 в 00:45. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:23.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!