Ну, можно имя клана проверять на в хождение в список ахтунгов.
Да и как техашник подберется если у меня радар ?
А в радаре пока самое полезное это Взятие в таргет -
Код:
} else if (Cmd==0x23) { //23=TargetSelected:d(ObjectID)d(TargetID)d(X)d(Y)d(Z)d(0)
ParseMasked(SavedArg4, d(ObjectID)d(TargetID)d(X)d(Y)d(Z) 0);
Chars.SetTarget(ObjectID,TargetID);
swprintf(wstr, 199,L"%s -> %s",Chars.GetName(ObjectID), Chars.GetName(TargetID));
static DWORD PreviosID = 0;
if ((TargetID==UserID) && (ObjectID!=PreviosID)) {
PreviosID=ObjectID;
WriteUsrW(wstr);
PlaySound("TargetSelected.wav", NULL, SND_FILENAME | SND_ASYNC);
} else
WriteLogW(wstr);
fprintf(LogFile,"TargetSelected %s -> %s %i,%i,%i\n", NAME(ObjectID), NAME(TargetID), X, Y, Z);
да MoveToPawn:
Код:
} else if (Cmd==0x72) { //72=MoveToPawn:d(CreatureObjId)d(TargetObjID)d(Distance)d(CreatureX)d(CreatureY)d(CreatureZ)d(TargetX)d(TargetY)d(TargetZ)
ParseMasked(SavedArg4, d(ObjectID)d(TargetID)d(Distance)d(X)d(Y)d(Z)d(ToX)d(ToY)d(ToZ) 0);
Chars.SetXY(ObjectID, X, Y);
Chars.GotoXY(ObjectID, ToX, ToY, Distance);
swprintf(wstr,100,L"%s %i> %s", Chars.GetName(ObjectID), Distance, Chars.GetName(TargetID));
if (TargetID==UserID) WriteUsrW(wstr);
else if (ObjectID!=UserID) WriteLogW(wstr);
fprintf(LogFile,"MoveToPawn %s %i> %s %i,%i,%i -> %i,%i,%i\n", NAME(ObjectID), Distance, NAME(TargetID), X, Y, Z, ToX, ToY, ToZ);
Где по Distance можно прикинуть что именнно противоестественное хочет сделать со мной павнящий чар - 1000 и больше - лучник стрелу хочет всадить в мяккое место, поменьше (около 900-700) - маг скиллом хочет обласкать, еще меньше значит тирант хочет фаербол метнуть, ну а меньше 100 - это значит хотят проткнуть даггером, мечом или пикой.