function int GetSoulShotID(int weapGrade)
{
switch (GetGradeByIndex(weapGrade))
{
case 'NOGRADE':
return 1835;
break;
case 'D':
return 1463;
break;
case 'C':
return 1464;
break;
case 'B':
return 1465;
break;
case 'A':
return 1466;
break;
case 'S':
return 1467;
break;
}
}
GetSoulShotID(weapGrade, SoulShotID.ClassID, , тут приходит ваша строка);
function FindAllShotsByWeapGrade(int weapGrade)
{
GetSoulShotID(weapGrade, SoulShotID.ClassID, , Atss);
GetSpiritShotID(weapGrade, SpiritShotID.ClassID, , Atss);
soulIndex = InvItem.FindItem( SoulShotID );
spiritIndex = InvItem.FindItem( SpiritShotID );
}
я для себя вообще то делаю, и само собой мало что понимаю иначе бы не делал темузабей, автор походу дела хочет чтобы за него все сделали, даже не удосужится посмотреть какие аргументы принимает та или иная функция, вангую скорое появление "конкурента"
ну это другой разговоря для себя вообще то делаю, и само собой мало что понимаю иначе бы не делал тему
Не стебайся. Человек учится. Все так начинали.ну это другой разговора купить у нас например?
я не стебусь, я маркетингом занимаюсь в тихуюНе стебайся. Человек учится. Все так начинали.
Удачи вам. Все разложено по полочкам. Нужна теперь только внимательность.
function FindAllShotsByWeapGrade(int weapGrade)
{
local ItemID SoulShotID;
local ItemID SpiritShotID;
GetSoulShotID(weapGrade, SoulShotID.ClassID, , Atss);
GetSpiritShotID(weapGrade, SpiritShotID.ClassID, , Atss);
soulIndex = InvItem.FindItem( SoulShotID );
spiritIndex = InvItem.FindItem( SpiritShotID );
}
local ItemID SoulShotID;
local ItemID SpiritShotID;
цена как раз таки меня дала мотивацию покопаться в сурсах самомуну это другой разговора купить у нас например?
Чтобы копаться и править сурсы Дедза нужно понимание Unreal Script.цена как раз таки меня дала мотивацию покопаться в сурсах самому
по сути в сурсах дедза есть весь нужный функционал, разобраться в этом, довести до ума и можно юзать у себя на проекте вполне, я думаю
цена как раз таки меня дала мотивацию покопаться в сурсах самому
по сути в сурсах дедза есть весь нужный функционал, разобраться в этом, довести до ума и можно юзать у себя на проекте вполне, я думаю
да я уже понял, с работой отображения дебафов (нубл итд) разобрался и спокойно и добавил новые иды уменийдля новичка будет накладно
да я уже понял, с работой отображения дебафов (нубл итд) разобрался и спокойно и добавил новые иды умений
по мелочи исправил автозаточку и автоточку скилов, в целом проблем не возникло пока не взялся за эти автососки
даже сейчас когда все раписали как нужно сделать, я просто не могу победить компилятор, все написал правильно а он мне выдает ошибку скобки в строке где все правильно, похоже тонкий намек пока выпилить эти автососки из патча
убрал 2 int, оставил 3 параметра в 552 строке, с optional точно такая же ошибка в этой строке на скобку, если убрать optional то уже другая ошибка - Error, Call to 'GetSoulShotID': bad or missing parameter 3Вы наверное опять забыли пропустить свой 2 инт.
Лучше его уберите из функции тогда, и там где дергаете функцию тоже убери. Должны остаться 3 параметра.
приписка optional намекает на то что эти значения можно не прописывать. Но т.к. у тебя функции должна вернуть эти значения- то убери optional и смотри по ошибкам.) А вообще нормальные автососки на UC - тут столько нужно будет учесть.
Пример- соски есть но не хватает для использования. Нужно 6 а у тебя 3 в итоге постоянно клиент будет отправлять на использование и пытаться дернуть соску.
И если используете optional то проверяйте, то чтобы прийти к последнему значению- нужно объявить все предыдущие значения даже если они не нужны.
var string Atss;// <- Т.к. она не прописана локально. В самый верх файла.
function FindAllShotsByWeapGrade(int weapGrade)
{
local ItemID SoulShotID;
local ItemID SpiritShotID;
SoulShotID.ClassID = SoulShotIDClassID;
SpiritShotID.ClassID = SpiritShotIDClassID;
GetSoulShotID(weapGrade, SoulShotIDClassID, Atss);
GetSpiritShotID(weapGrade, SpiritShotIDClassID, Atss);
soulIndex = InvItem.FindItemByClassID( SoulShotID );
spiritIndex = InvItem.FindItemByClassID( SpiritShotID );
}
function GetSpiritShotID(int weapGrade, out int int1, out string string1)
{
switch (GetGradeByIndex(weapGrade))
{
case 'NOGRADE':
int1 = 3947;
string1 = "NOGRADE";
break;
case 'D':
int1 = 3948;
string1 = "D";
break;
case 'C':
int1 = 3949;
string1 = "C";
break;
case 'B':
int1 = 3950;
string1 = "B";
break;
case 'A':
int1 = 3951;
string1 = "A";
break;
case 'S':
int1 = 3952;
string1 = "S";
// int2 = 22076;
break;
}
}
var string Atss;// <- Т.к. она не прописана локально. В самый верх файла.
function FindAllShotsByWeapGrade(int weapGrade)
{
local int SoulShotID;
local int SpiritShotID;
GetSoulShotID(weapGrade, SoulShotID, Atss);
GetSpiritShotID(weapGrade, SpiritShotID, Atss);
soulIndex = InvItem.FindItemByClassID( GetItemID(SoulShotID) );
spiritIndex = InvItem.FindItemByClassID( GetItemID(SpiritShotID) );
}
function ItemID GetItemID(int ID)
{
local ItemID cID;
cID.ClassID = ID;
return cID;
}
function GetSpiritShotID(int weapGrade, out int int1, out string string1)
{
switch (GetGradeByIndex(weapGrade))
{
case 'NOGRADE':
int1 = 3947;
string1 = "NOGRADE";
break;
case 'D':
int1 = 3948;
string1 = "D";
break;
case 'C':
int1 = 3949;
string1 = "C";
break;
case 'B':
int1 = 3950;
string1 = "B";
break;
case 'A':
int1 = 3951;
string1 = "A";
break;
case 'S':
int1 = 3952;
string1 = "S";
// int2 = 22076;
break;
}
}
[CODE]var string Atss;// <- Т.к. она не прописана локально. В самый верх файла.
function FindAllShotsByWeapGrade(int weapGrade)
{
local ItemID SoulShotID;
local ItemID SpiritShotID;
local int SoulShotIDClassID, SpiritShotIDClassID;
GetSoulShotID(weapGrade, SoulShotIDClassID, Atss);
GetSpiritShotID(weapGrade, SpiritShotIDClassID, Atss);
SoulShotID.ClassID = SoulShotIDClassID;
SpiritShotID.ClassID = SpiritShotIDClassID;
soulIndex = InvItem.FindItemByClassID( SoulShotID );
spiritIndex = InvItem.FindItemByClassID( SpiritShotID );
}
function GetSpiritShotID(int weapGrade, out int int1, out string string1)
{
switch (GetGradeByIndex(weapGrade))
{
case 'NOGRADE':
int1 = 3947;
string1 = "NOGRADE";
break;
case 'D':
int1 = 3948;
string1 = "D";
break;
case 'C':
int1 = 3949;
string1 = "C";
break;
case 'B':
int1 = 3950;
string1 = "B";
break;
case 'A':
int1 = 3951;
string1 = "A";
break;
case 'S':
int1 = 3952;
string1 = "S";
// int2 = 22076;
break;
}
}
function GetSetEx(string a_ItemWindow, string a_SetItemWindow, ItemID ID, optional int clear, optional iteminfo out_iteminfo)
{
local int IndexTmp;
local iteminfo InfoTmp;
IndexTmp = class'UIAPI_ITEMWINDOW'.static.FindItem( a_ItemWindow, ID);
if(class'UIAPI_ITEMWINDOW'.static.GetItem( a_ItemWindow, IndexTmp, InfoTmp))
{
if(clear==1)
class'UIAPI_ITEMWINDOW'.static.Clear(a_SetItemWindow);
class'UIAPI_ITEMWINDOW'.static.AddItem( a_SetItemWindow, InfoTmp );
out_iteminfo = InfoTmp;
}
}
этот вариант не будет работать так как ты хочешь, у тебя int1 никогда не вернется равным 3952, он всегда будет равен 22076, по сабжу, напиши в скайп, помогу с этой проблемой@BadStealth, с вашими двумя вариантами все компилируется но только стоит добавить int2 как вы писали раньше, опять при компиляции идут ошибки на ту строку
но зато теперь появился второй вариант и он работает
Посмотреть вложение 28692
да похоже я рано радовался ибо в инвентаре было сразу 2 типа сосок и юзался последнийэтот вариант не будет работать так как ты хочешь, у тебя int1 никогда не вернется равным 3952, он всегда будет равен 22076, по сабжу, напиши в скайп, помогу с этой проблемой
class AutoBSS extends UICommonAPI;
const LOOP_COUNT = 1;
var WindowHandle Me;
var ItemWindowHandle Shot3;
var ItemWindowHandle Shot4;
var ItemWindowHandle InvItem;
var AnimTextureHandle Animation3;
var AnimTextureHandle Animation4;
var TextureHandle texBG3;
var ItemInfo BeastSoulShot;
var ItemInfo BeastSpiritShot;
var int BeastsoulIndex;
var int BeastspiritIndex;
var bool isUsedBeastSoul;
var bool isUsedBeastSpirit;
var bool isExistBeastSoul;
var bool isExistBeastSpirit;
var bool isAttacking;
var SkillInfo UsedSkill;
function OnLoad()
{
Me = GetWindowHandle("AutoBSS");
Shot3 = GetItemWindowHandle("AutoBSS.Item3");
Shot4 = GetItemWindowHandle("AutoBSS.Item4");
texBG3 = GetTextureHandle("AutoBSS.BGBeastSpirit");
Animation3 = GetAnimTextureHandle("AutoBSS.Anim3");
Animation4 = GetAnimTextureHandle("AutoBSS.Anim4");
InvItem = GetItemWindowHandle("InventoryWnd.InventoryItem");
}
function OnRegisterEvent()
{
RegisterEvent(EV_GamingStateEnter);
RegisterEvent(EV_UpdateUserInfo);
RegisterEvent(EV_ReceiveMagicSkillUse);
RegisterEvent(EV_ReceiveAttack);
RegisterEvent(EV_PetStatusShow);
RegisterEvent(EV_SummonedStatusShow);
RegisterEvent(EV_PetSummonedStatusClose);
}
function OnEvent( int EventID, String param )
{
switch(EventID)
{
case EV_PetSummonedStatusClose:
Me.HideWindow();
break;
case EV_GamingStateEnter:
SetBSSPosition();
break;
case EV_PetStatusShow:
SetBSSPosition();
EnterTheVoid2();
break;
case EV_SummonedStatusShow:
SetBSSPosition();
EnterTheVoid2();
break;
case EV_UpdateUserInfo:
if (GetUIState() == "GAMINGSTATE"&&
class'UIAPI_CHECKBOX'.static.IsChecked("FlexOptionWnd.enableAutoBSS"))
//EnterTheVoid2();
break;
case EV_ReceiveMagicSkillUse:
if (GetUIState() == "GAMINGSTATE"&&
class'UIAPI_CHECKBOX'.static.IsChecked("FlexOptionWnd.enableAutoBSS"))
BeastSkillCast(param);
break;
case EV_ReceiveAttack:
if (GetUIState() == "GAMINGSTATE"&&
class'UIAPI_CHECKBOX'.static.IsChecked("FlexOptionWnd.enableAutoBSS"))
AttackBeast(param);
break;
}
}
function SetBSSPosition()
{
local bool IsExpand1;
local bool IsExpand2;
local bool IsExpand3;
local bool IsExpand4;
local bool IsExpand5;
local bool isVertical;
isVertical = GetOptionBool( "Game", "IsShortcutWndVertical" );
IsExpand1 = GetOptionBool( "Game", "Is1ExpandShortcutWnd" );
IsExpand2 = GetOptionBool( "Game", "Is2ExpandShortcutWnd" );
IsExpand3 = GetOptionBool( "Game", "Is3ExpandShortcutWnd" );
IsExpand4 = GetOptionBool( "Game", "Is4ExpandShortcutWnd" );
IsExpand5 = GetOptionBool( "Game", "Is5ExpandShortcutWnd" );
if (class'UIAPI_WINDOW'.static.IsShowWindow("AutoSS"))
{
if (!isVertical)
{
Me.SetWindowSize(108, 24);
Me.SetAnchor("AutoSS", "TopRight", "TopLeft", 10, 0); ////horizont
Animation4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 30, 0);
Shot4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 29, -1);
texBG3.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 30, 0);
return;
}
else
{
Me.SetWindowSize(24, 108);
Me.SetAnchor("AutoSS", "BottomLeft", "TopLeft", 0, 10); //// vertical
Animation4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 0, 30);
Shot4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , -1, 29);
texBG3.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 0, 30);
return;
}
}
if (!isVertical)
{
Me.SetWindowSize(108, 24);
Animation4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 30, 0);
Shot4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 29, -1);
texBG3.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 30, 0);
if (IsExpand5)
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal_5", 36, -34);
}
else if (IsExpand4)
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal_4", 36, -34);
}
else if (IsExpand3)
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal_3", 36, -34);
}
else if (IsExpand2)
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal_2", 36, -34);
}
else if (IsExpand1)
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal_1", 36, -34);
}
else
{
AnchorBSS("ShortcutWnd.ShortcutWndHorizontal", 36, -34);
}
}
else
{
Me.SetWindowSize(24, 108);
Animation4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 0, 30);
Shot4.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , -1, 29);
texBG3.SetAnchor("AutoBSS", "TopLeft", "TopLeft" , 0, 30);
if (IsExpand5)
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical_5", -34, 36);
}
else if (IsExpand4)
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical_4", -34, 36);
}
else if (IsExpand3)
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical_3", -34, 36);
}
else if (IsExpand2)
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical_2", -34, 36);
}
else if (IsExpand1)
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical_1", -34, 36);
}
else
{
AnchorBSS("ShortcutWnd.ShortcutWndVertical", -34, 36);
}
}
}
function BeastSkillCast (string a_Param)
{
local int AttackerID;
local int SkillID;
local int SkillLevel;
local float SkillHitTime;
local UserInfo PetInfo;
local UserInfo AttackerInfo;
local int SkillHitTime_ms;
ParseInt(a_Param,"AttackerID",AttackerID);
ParseInt(a_Param,"SkillID",SkillID);
ParseInt(a_Param,"SkillLevel",SkillLevel);
ParseFloat(a_Param,"SkillHitTime",SkillHitTime);
if ( SkillHitTime > 0 )
SkillHitTime_ms = int(SkillHitTime * 1000) + 300;
else
SkillHitTime_ms = 100;
GetUserInfo(AttackerID,AttackerInfo);
GetPlayerInfo(PetInfo);
GetSkillInfo( SkillID, SkillLevel, UsedSkill );
isAttacking = false;
if (PetInfo.nID == AttackerID && !isBeastSoulSkill(SkillID) && !isBeastSpiritSkill(SkillID))
{
Me.KillTimer(1112);
isUsedBeastSoul = false;
isUsedBeastSpirit = false;
Me.SetTimer(1112, SkillHitTime_ms + 50);
}
else if (PetInfo.nID == AttackerID && isBeastSoulSkill(SkillID))
{
isUsedBeastSoul = true;
Me.KillTimer(1112);
}
else if (PetInfo.nID == AttackerID && isBeastSpiritSkill(SkillID))
{
isUsedBeastSpirit = true;
Me.KillTimer(1112);
}
}
function AttackBeast (string a_Param)
{
local int AttackerID;
local UserInfo PetInfo;
local UserInfo AttackerInfo;
ParseInt(a_Param,"AttackerID",AttackerID);
GetUserInfo(AttackerID,AttackerInfo);
GetPlayerInfo(PetInfo);
isAttacking = true;
if (PetInfo.nID == AttackerID)
{
Me.KillTimer(1112);
isUsedBeastSoul = false;
isUsedBeastSpirit = false;
Me.SetTimer(1112, 50);
}
}
function bool isBeastSoulSkill(int skillid)
{
switch (skillid)
{
case 22036:
return true;
default:
return false;
break;
}
}
function bool isBeastSpiritSkill(int skillid)
{
switch (skillid)
{
case 22037:
case 22038:
return true;
default:
return false;
break;
}
}
function OnTimer(int TimerID)
{
local UserInfo check;
local UserInfo kek;
if (GetPlayerInfo(check))
{
if (check.nCurHP <= 0)
{
Me.KillTimer(1112);
return;
}
}
GetTargetInfo(kek);
switch (TimerID)
{
case 1112:
if (!isUsedBeastSoul && isExistBeastSoul && UsedSkill.IsMagic == 0 && (UsedSkill.IsDebuff || UsedSkill.OperateType == 0) )
{
InvItem.GetItem(BeastsoulIndex, BeastSoulShot);
if (BeastSoulShot.ItemNum > IntToInt64(0))
{
if (kek.nID > 0)
{
//RequestTargetUser(kek.nID);
}
RequestUseItem(BeastSoulShot.ID);
}
else
{
StopThree();
}
}
if (!isUsedBeastSpirit && isExistBeastSpirit && !isAttacking && UsedSkill.IsMagic == 1)
{
InvItem.GetItem(BeastspiritIndex, BeastSpiritShot);
if (BeastSpiritShot.ItemNum > IntToInt64(0))
{
if (kek.nID > 0)
{
//RequestTargetUser(kek.nID);
}
RequestUseItem(BeastSpiritShot.ID);
}
else
{
StopFour();
}
}
Me.KillTimer(1112);
Me.SetTimer(1112, 50);
break;
}
}
function StartAnimThree()
{
Animation3.Stop();
Animation3.SetLoopCount(-1);
Animation3.Play();
}
function StartAnimFour()
{
Animation4.Stop();
Animation4.SetLoopCount(-1);
Animation4.Play();
}
function StopThree()
{
Animation3.Stop();
Shot3.Clear();
isExistBeastSoul = false;
}
function StopFour()
{
Animation4.Stop();
Shot4.Clear();
isExistBeastSpirit = false;
}
function FindAllBeastShots()
{
local ItemID BeastSoulShotID;
local ItemID BeastSpiritShotID;
BeastSoulShotID.ClassID = 6645;
BeastSpiritShotID.ClassID = 6647;////6646
BeastsoulIndex = InvItem.FindItem( BeastSoulShotID );
BeastspiritIndex = InvItem.FindItem( BeastSpiritShotID );
}
function EnterTheVoid2()
{
FindAllBeastShots();
if (BeastsoulIndex != -1)
AddBeastSoulShot(BeastsoulIndex);
else
StopThree();
if (BeastspiritIndex != -1)
AddBeastSpiritShot(BeastspiritIndex);
else
StopFour();
}
function AddBeastSoulShot(int index)
{
local ItemInfo soulInfo;
InvItem.GetItem(index, soulInfo);
Shot3.Clear();
Shot3.AddItem(soulInfo);
StartAnimThree();
RequestAutoBeastSoulShots(index);
isExistBeastSoul = true;
}
function AddBeastSpiritShot(int index)
{
local ItemInfo spiritInfo;
InvItem.GetItem(index, spiritInfo);
Shot4.Clear();
Shot4.AddItem(spiritInfo);
StartAnimFour();
RequestAutoBeastSoulShots(index);
isExistBeastSpirit = true;
}
function RequestAutoBeastSoulShots(int index)
{
if (index == BeastsoulIndex)
{
InvItem.GetItem(index, BeastSoulShot);
RequestUseItem(BeastSoulShot.ID);
}
else if (index == BeastspiritIndex)
{
InvItem.GetItem(index, BeastSpiritShot);
RequestUseItem(BeastSpiritShot.ID);
}
}
function AnchorBSS(string window, int x, int y)
{
Me.SetAnchor(window, "TopLeft", "TopLeft", x, y);
}
defaultproperties
{
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?