Вот тебе несколько вариантов, передается один аргумент и конвертируется в строку или же возвращает строку, по такой же логике можешь допилить остальное и оптимизировать.
function CheckChar takes string char returns integer
if char == "0" or char == "1" or char == "2" or char == "3" or char == "4" then
return 1;
elseif char == "5" or char == "6" or char == "7" or char == "8" or char == "9" then
return 1;
elseif char == "." then
return 10;
else
return 0
endif
endfunction
function LenghtArg takes string arg returns integer
local string char
local integer i = 0
local integer len = StringLength(arg)
local integer lenArg = 0
loop
exitwhen i >= len
set char = SubString(arg, i, i + 1)
set lenArg = CheckChar(char) + lenArg
set i = i + 1
endloop
return lenArg;
endfunction
function B2S takes boolean b returns string
if b then
return "true"
endif
return "false"
endfunction
function DS takes string arg returns nothing
//Храним длину аргумента
local integer lenght = StringLength(arg)
//Проверяем каждый символ и возвращаем длину
local integer len = LenghtArg(arg)
if arg == "true" then
call BJDebugMsg("boolean: " + arg)
/* ТВОЙ КОД */
return;
endif
if arg == "false" then
call BJDebugMsg("boolean: " + arg)
/* ТВОЙ КОД */
return;
endif
if lenght == 0 then
call BJDebugMsg("Пустая строка")
/* ТВОЙ КОД */
return;
endif
if lenght==(len - 9) then
call BJDebugMsg("real: " + arg)
/* ТВОЙ КОД */
return;
endif
if lenght==len then
call BJDebugMsg("int: " + arg)
/* ТВОЙ КОД */
return;
endif
call BJDebugMsg("str: " + arg)
/* ТВОЙ КОД */
endfunction
function DR takes string arg returns string
local integer lenght = StringLength(arg)
local integer len = LenghtArg(arg)
if arg == "true" then
return "true"
endif
if arg == "false" then
return "false"
endif
if lenght == 0 then
return "null"
endif
if lenght==(len - 9) then
return "real"
endif
if lenght==len then
return "int"
endif
return "str"
endfunction
function Trig_Smeto_Actions takes nothing returns nothing
local string str
local integer Int = 10
local real Real = 10.23
local boolean B = true
local string overload
call DS(R2S(Real)) //real
call DS(I2S(Int)) //int
call DS("") //Пустая строка
call DS("10") //int
call DS("10.001") //real
call DS("10.01") //real
call DS(" 10.01") //str
call DS("a") //str
call DS(B2S(B)) //boolean
/////////////НИЖЕ ИЗВРАЩЕНИЯ////////////////////
if DR("a") == "str" then
/* ТВОЙ КОД */
endif
////////////ДЛЯ ФУНКЦИЙ С типа АРГУМЕНТАМИ//////////////
set overload = DR("a")
if overload == "str" then
set DSTR = "Hello World"
call ExecuteFunc("D"+overload);
endif
set overload = DR(I2S(Int))
if overload == "int" then
set DINT = Int
call ExecuteFunc("D"+overload);
endif
set overload = DR(R2S(Real))
if overload == "real" then
set DREAL = Real
call ExecuteFunc("D"+overload);
endif
///////////ДЛЯ ФУНКЦИЙ БЕЗ АРГУМЕНТОВ//////////////////
call ExecuteFunc("D"+DR("a"))
endfunction
globals
string DSTR
integer DINT
real DREAL
endglobals
function Dstr takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), DSTR)
endfunction
function Dint takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), I2S(DINT))
endfunction
function Dreal takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), R2S(DREAL))
endfunction
//===========================================================================
function InitTrig_Smeto takes nothing returns nothing
set gg_trg_Smeto = CreateTrigger( )
call TriggerAddAction( gg_trg_Smeto, function Trig_Smeto_Actions )
endfunction
globals
region array regions
rect array rects
integer regionCount = 0
endglobals
function CreateRegionRect takes rect r returns region
local region reg = CreateRegion()
call RegionAddRect(reg, r)
set regions[regionCount] = reg
set rects[regionCount] = r
set regionCount = regionCount + 1
return reg
endfunction
function GetRectFromRegion takes region reg returns rect
local integer i = 0
loop
exitwhen i >= regionCount
if regions[i] == reg then
return rects[i]
endif
set i = i + 1
endloop
return null
endfunction
function OnEnterRegion takes nothing returns nothing
local region triggeringRegion = GetTriggeringRegion()
local rect triggeringRect = GetRectFromRegion(triggeringRegion)
local unit enteringUnit = GetTriggerUnit()
// Теперь у тебя есть прямоугольник, в который вошел юнит
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "Юнитыч вошёл в область ЫЫЫЫ: " + R2S(GetRectWidthBJ(triggeringRect)) + "x" + R2S(GetRectHeightBJ(triggeringRect)))
endfunction
function InitTrigSmetoGPT takes nothing returns nothing
local trigger t = CreateTrigger()
local rect r1 = Rect(0, 0, 512, 512)
local rect r2 = Rect(512, 512, 1024, 1024)
local region reg1 = CreateRegionRect(r1)
local region reg2 = CreateRegionRect(r2)
call TriggerRegisterEnterRegion(t, reg1, null)
call TriggerRegisterEnterRegion(t, reg2, null)
call TriggerAddAction(t, function OnEnterRegion)
endfunction
А если ручками не хочется Rectы делать, то динамическое создание триггеров в помощь
VPN не помогает, да в целом видео куда бы не загружено должно сразу показываться, а при такой скорости странно, что не всегда подгружается, YouTube сразу вообще картинка не грузит, только после нажатия
Ясно. А приколы в зависимости от графики так и остались с 2020 года.
Громовой удар, топот войны и множество звуков грома повторяются 3 раза после анимации с пользовательскими заклинаниями (не заклинаниями по умолчанию!).
Некоторые наборы звуков юнитов кажутся несовместимыми с некоторыми юнитами.
Эффекты молнии можно создавать, но не изменять (перекрашивать, перемещать, делать постоянными, удалять). То есть создать именно молнию постоянную call AddLightning “CLPB” , “CLSB” не получится
Все эти ошибки исправляются сами собой при переключении на классическую графику
» WarCraft 3 / Где можно найти модель фелривера?
» WarCraft 3 / Есть ли перегрузка функций в jass/vjass/cjass или где-то ещё тут?
» WarCraft 3 / Программа редактирования эффектов для HD графики
» WarCraft 3 / Погода
Ред. Smeto
» ВалактерисМод / Набор Нежити Валактериса
Ред. Smeto
» ВалактерисМод / Набор Нежити Валактериса
» WarCraft 3 / Tobirama Senju
» WarCraft 3 / Возможно ли получить область триггера? - [Jass]
» WarCraft 3 / Doctor Strange (MCU)
» WarCraft 3 / Doctor Strange (MCU)
» WarCraft 3 / HulkBuster
» Chronicles of the Ring REBIRTH / Гендальф белый
Ред. Smeto
» Администрация XGM / Не подгружается картинка видео при переходе на ресурс и так далее
» WarCraft 3 / Иллюзии
» WarCraft 3 / Нефрен Рук Инсания [300 Heroes]
» WarCraft 3 / Нефрен Рук Инсания [300 Heroes]
» WarCraft 3 / Как лучше всего передать данные во внешнюю программу?
Ред. Smeto
» WarCraft 3 / Удаление области
Ред. Smeto
» WarCraft 3 / Удаление области
» WarCraft 3 / Warcraft III: Reforged 2.0.1
» WarCraft 3 / Warcraft III: Reforged 2.0.1
» WarCraft 3 / Рефоржет перестал запускаться! Чёрный экран - виснет намертво!
» WarCraft 3 / Рефоржет перестал запускаться! Чёрный экран - виснет намертво!
Ваниль же на рубатле 1.27b (умирает, но реанимация тут как тут)
» WarCraft 3 / Рефоржет перестал запускаться! Чёрный экран - виснет намертво!