navy_seals
Ну вот смотри как я делал в своем старом моде..
Sprite REGMC0, 1024, 768 //Тут имя спрайта, и его разрешение, тоесть мой спрайт 1024x768
{
XScale 3.5
YScale 4.0
Patch REGMC0, 50, 0 /*Тут по моему надо указать картинку уменьшеного размера, такого размера будет спрайт который прописан до открытия скобок, картинка может быть просто прозрачной, главное ее размер(Но вот тут утверждать не буду т.к. почти не помню) Я же тут использовал тот же спрайт что и первый до скобок.*/
}
Вот собс-но и все... картинка спрайта лежит в папке Sprites(у меня pk3 архив) в ваде должна лежать между маркерами S_Start S_End
Больше никаких манипуляций не делал. Так надо прописать каждый кадр(картинку) твоего оружия,
Еще можно прописывать так:
define ITEMBOX 128 128
Но этот способ депрекатед помоему и не такой гибкий. Прописывается в lumps TEXTURES или HIRESTEX, последний депрекатед.
Сработало, всем спс. Перенес все это дело в pk3 и заработало.
Не за что. Давно пора pk3 юзать.
Кто разбирается.. Скажите пройденные hub уровни.. они остаются в оперативной памяти пк или где-то как кеш хранятся?
У меня сложилось мнение что где-то в оперативке.. потому что играется в мой мод нормально, но проходя через каждый уровень, 1,2,3 и когда я с 3его иду на 1 посредством Teleport to map, начинает лагать, пропадают модели, растягиваются. Я бы мог списать на скрипты или цыклы некоторые, но кажется все проверил, дело не в них, дело в оперативной памяти, т.к. запускал мод с открытым GZDB, Slade3, Opera, оперативки 1гб был, позакрывал все что смог, запустил опять, глюков не было.. так проверял несколько раз, проверял на ноуте там 4гб оперативы вообще таких лагов и близко нет. Кто что может подсказать, посоветовать?
Еще хочу спросить, можно ли делать так:
[code]Actor bbb
{
States{
Spawn:
TNT1 A 1 A_SetAngle()
SpawnLoop:
TNT1 A 3 A_SpawnItemEx("asdasd",22,22,22)
TNT1 A 1 A_ChangeVelocity(...)
TNT1 A 3 A_SpawnItemEx("asdasd",-22,-22,-22)
TNT1 A 1 A_ChangeVelocity(...)
Loop
}}
Actor asdasd
{MONSTER
+LOOKALLAROUND
States{
Spawn:
MEDI A 1
MEDI A 3 A_Look
Stop
See:
MEDI A 5 A_JumpIfCloser(64,"Damage")
Stop
Damage:
MEDI A 4 ACS_Execute(888,0) // В скрипте типо бьет игрока...
Stop
}}[/code]
актор bbb спавнит asdasd и если игрок коснется к asdasd то у игрока отнимается оз, актор asdasd существует не долго, это из-за того что актор bbb постоянно в движении и местоположение asdasd должно более менее соответствовать bbb. Перемещать актора asdasd по средством SetActorPosition в acs не могу или не хочу..
Пример кода грубый, но суть передает точно как надо.. Можно ли так делать? Сильно ли это загрузит гоззу? Актор asdasd бесконечно спавнится, пропадает и так по кругу...
Боязнь сильно часто юзать acs, скриптов и так уже довольно много+3д модели, получается не хилая нагрузка гоззе в следствии которой и появляются баги.
В общем вот оригинальный код некоторых акторов которые у меня вызывают сомнения, так мб более понятно будет:
1:
Скрытый текст:
Эта коряга еще не доделана в плане разных ее настроек т.к. думаю что такой код тормозит гоззу.
Actor TrapWood2 14619
{//$Category Trap
//$Color 12
+NOINTERACTION
Height 40
Radius 40
States
{
Spawn:
MODL A 1
MODL A 1 A_SpawnItemEx("TrapWoodInvisCenter",0,0,0)
SpawnLoop:
MODL A 0 A_JumpIf(ACS_NamedExecuteWithResult("Distance_New") > 2048, "Off")
MODL A 2 A_SpawnItemEx("TrapWoodInvis",0,0,80)
MODL A 2 A_SpawnItemEx("TrapWoodInvis",0,0,-100)
MODL B 2 A_SpawnItemEx("TrapWoodInvis",0,-40,70)
MODL B 2 A_SpawnItemEx("TrapWoodInvis",0,50,-90)
MODL C 2 A_SpawnItemEx("TrapWoodInvis",0,-75,60)
MODL C 2 A_SpawnItemEx("TrapWoodInvis",0,75,-80)
MODL D 2 A_SpawnItemEx("TrapWoodInvis",0,-100,35)
MODL D 2 A_SpawnItemEx("TrapWoodInvis",0,90,-50)
MODL E 2 A_SpawnItemEx("TrapWoodInvis",0,-110,0)
MODL E 2 A_SpawnItemEx("TrapWoodInvis",0,100,-20)
MODL F 2 A_SpawnItemEx("TrapWoodInvis",0,-110,-35)
MODL F 2 A_SpawnItemEx("TrapWoodInvis",0,100,10)
MODL G 2 A_SpawnItemEx("TrapWoodInvis",0,-100,-60)
MODL G 2 A_SpawnItemEx("TrapWoodInvis",0,90,35)
MODL H 2 A_SpawnItemEx("TrapWoodInvis",0,-65,-80)
MODL H 2 A_SpawnItemEx("TrapWoodInvis",0,70,60)
MODL I 2 A_SpawnItemEx("TrapWoodInvis",0,10,-100)
MODL I 2 A_SpawnItemEx("TrapWoodInvis",0,0,80)
Actor TrapWoodInvisCenter
{//$Category Trap
//$Color 12
MONSTER
+NOGRAVITY+LOOKALLAROUND+NOCLIP-SOLID
Height 40
Radius 40
States
{
Spawn:
TNT1 A 1 A_Look
Loop
See:
TNT1 A 1 A_JumpIfCloser(32,"Damage")
Loop
Damage:
TNT1 A 1 ACS_NamedExecute("WoodTrap",0)
Goto See
}
}
Actor TrapWoodInvis
{//$Category Trap
//$Color 12
MONSTER
+NOGRAVITY+LOOKALLAROUND+NOCLIP-SOLID
Height 32
Radius 32
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Look
TNT1 AAA 1 A_JumpIfCloser(32,"Damage")
Stop
See:
TNT1 AAAA 1 A_JumpIfCloser(32,"Damage")
Stop
Damage:
TNT1 A 1 ACS_NamedExecute("WoodTrap",0)
Stop
}
}
А вот для чего нужен этот код:
Скрытый текст:
В центре этой деревянной коряги спавнится 1 раз TrapWoodInvisCenter, и на почти на ее концах спавнится бесконечно TrapWoodInvis, сама коряга крутится по часовой стрелке, такая вот имитация... это одно их что меня волнует можно ли так делать? Мне кажется что возможно из-за нее иногда появляются баги.. пропадание 3д моделей, таких ловушек\коряг на уровне несколько.
2:
Скрытый текст:
Тут уже летает маленькая крутящаяся ловушка, типо коряги, но в 2.5 раз меньше.. и постоянно спавнит Trap1_LeftRightDamage если ловушка двигается, если в настройках thinga выставлено speed 0 по всем осям, ловушка не двигается, тогда спавнит 1 раз Trap1_DamageIfDontMove, код конечно может показатся запутанным потому и есть сомнения.. может это из-за такой ловушки вылезают баги с пропаданием моделей? Таких ловушек на уровнях довольно много т.к. 1 thing может двигаться по разному, что создает небольшую иллюзию разнообразия. В дальнейшем если не заброшу проект, этот код будет развиваться что бы мог настраивать скин для ловушки, ее размер и т.д., но вот не уверен что гозза выдержит такие "быдлокоды"
//==============================================================================
//Customize flying metal trap by Alekv ;)
Actor TrapMetalCustomize 14622
{//$Category Trap
//$Color 12
//$Arg0 "Time\Distance"
//$Arg0ToolTip "Counts loops"
//$Arg1 "Speed Move Z UpDown"
//$Arg1ToolTip "If Move X,Y,Z==0 trap dont move"
//$Arg2 "Speed Move X LeftRight"
//$Arg2ToolTip "If Move X,Y,Z==0 trap dont move"
//$Arg3 "Speed Move Y LeftRight"
//$Arg3ToolTip "If Move X,Y,Z==0 trap dont move"
//$Arg4 "Move type"
//$Arg4ToolTip "Type [Romb]=0\nType [Cube]=1\nType [Vertical]=2"
+NOGRAVITY-SOLID
Height 40
Radius 40
Scale 0.50
Var Int User_Time;
States
{
Spawn:
MODL A 1
MODL A 1 A_JumpIf(Args[4]==1,"Type_Cube")
MODL A 1 A_JumpIf(Args[4]==2,"Type_Diagonal")
MODL A 1 A_SetUserVar("User_Time",User_Time+Args[0])
MODL A 1 A_JumpIf(Args[1]+Args[2]+Args[3]==0,"DontMove")
//------------------------------------------------------------------------------
//Type Romb
MoveLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2],Args[3],Args[1]-Args[1]*2,CVF_REPLACE)
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2]-Args[2]*2,Args[3],Args[1]-Args[1]*2,CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"MoveLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
MoveReversLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2]-Args[2]*2,Args[3]-Args[3]*2,Args[1],CVF_REPLACE)
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2],Args[3]-Args[3]*2,Args[1],CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"MoveReversLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
Goto MoveLoop
//------------------------------------------------------------------------------
//Cube
Type_Cube:
MODL A 1 A_SetUserVar("User_Time",User_Time+Args[0])
Cube_MoveLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2],Args[3],0,CVF_REPLACE)
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(0,Args[3],Args[1]-Args[1]*2,CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"Cube_MoveLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
Cube_MoveReversLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2]-Args[2]*2,Args[3]-Args[3]*2,0,CVF_REPLACE)
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(0,Args[3]-Args[3]*2,Args[1],CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"Cube_MoveReversLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
Goto Cube_MoveLoop
//------------------------------------------------------------------------------
//Diagonal
Type_Diagonal:
MODL A 1 A_SetUserVar("User_Time",User_Time+Args[0])
Diagonal_MoveLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2],Args[3],Args[1],CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"Diagonal_MoveLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
Diagonal_MoveReversLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1 A_SpawnItemEx("Trap1_LeftRightDamage",0,0,0)
MODL K 1 A_ChangeVelocity(Args[2]-Args[2]*2,Args[3]-Args[3]*2,Args[1]-Args[1]*2,CVF_REPLACE)
MODL K 0 A_SetUserVar("User_Time",User_Time-1)
MODL K 0 A_JumpIf(User_Time>0,"Diagonal_MoveReversLoop")
MODL K 1 A_SetUserVar("User_Time",User_Time+Args[0])
Goto Diagonal_MoveLoop
//NoMove
DontMove:
MODL A 1 A_SpawnItemEx("Trap1_DamageIfDontMove",0,0,0)
DontMoveLoop:
MODL ABCDEFGHIJKABCDEFGHIJ 1
Goto DontMoveLoop
}
}
Actor Trap1_DamageIfDontMove
{MONSTER+NOGRAVITY-SOLID+LOOKALLAROUND+NOCLIP
RenderStyle None
States
{
Spawn:
TNT1 A 1
TNT1 A 1 A_Look
Loop
See:
TNT1 A 1 A_JumpIfCloser(32,"Damage")
Loop
Damage:
TNT1 A 1
TNT1 A 1 ACS_NamedExecute("WoodTrap",0)
Goto See
}
}
Actor Trap1_LeftRightDamage
{MONSTER+NOGRAVITY-SOLID+LOOKALLAROUND+NOCLIP
RenderStyle None
States
{
Spawn:
TNT1 A 1
TNT1 A 1 A_Look
Stop
See:
TNT1 A 1 A_JumpIfCloser(32,"Damage")
Stop
Damage:
TNT1 A 1
TNT1 A 1 ACS_NamedExecute("WoodTrap",0)
Stop
}
}
Я за то чтобы всё это выпилить нафиг и с нуля закодить с использованием ацс
Ну дак ты объясни что не так с кодом? Если ты про аргументы... не знаю как иначе, да и смысла не вижу. В Decorate отлично работает, но я не знаю можно ли спавнить бесконечно что-то что пропадает через пару тиков да еще и чекает дистанцию пока существует, вот это меня больше всего интересует. Это думаю можно и в acs замутить, но не будет ли еще хуже(хотя куда еще хуже)? хД
ZZYZX :
Очень плохой код имхо, абсолютно нечитаемо, ты специально обфусцируешь чтоли?
Actor Trap1_LeftRightDamage
{MONSTER+NOGRAVITY-SOLID+LOOKALLAROUND+NOCLIP
Да, я всегда так пишу флажки, для меня отлично читаемо и очень удобно, программе же плевать как оно будет записано?
А Trap1_LeftRightDamage так почти не пишу, иногда мб проскакивает.
Мне не нравятся повторяющиеся строчки в коде декора, там где меняется только пара аргументов. Имхо это можно было бы закодить циклом.
Спавнить можно. Оно даже не будет всерьёз лагать. Но злоупотреблять не советую, у торментора вон юзается похожий код на картах (только он юзает по назначению: а именно, эмулирует particl'ы спавном кучи акторов), они в итоге лагают так что жесть просто.
Мне не нравятся повторяющиеся строчки в коде декора, там где меняется только пара аргументов
Это какие? Во 2 там где аргументы? Там и так цыкл.
В 1, там не доделанно, он будет на вид такой же как и 2 скрипт, злоупотреблять придется, потому наверное лучше двигать невидимого актора с помощью acs... только вот не знаю игра уже лагает, начинаю чистить скрипты, проверять какой скрипт вызывает баги, но блин не так просто... =(
Вообще не понимаю почему у гоззы такие серьезные проблемы с производительностью, а разраб переходит на огл3, тем самым добавляя еще больше и в разы хуже баги... в 1.8+ версии все эти скрипты отлично работают, багов нет, но небольшое падение фпс из-за кол. моделей.. которое раздражает п...ц и главное никто не может ему написать о новых багах, вообще кажется что только я такой баг вижу -_-.
Я для уточнения... Если у монстра установлен флаг +NOCLIP, то флаг -SOLID прописывать не имеет смысла...
Знаю, когда код писал кучу флагов то добавлял то стирал, иногда бывает забываю или не обращаю внимания.. Кстати лишние флаги это не хорошо для производительности или просто как бы дурная манера кодера?
Plut :
Не видно ни нужных небес, ни музыки, ни названий, что делать?
1) В твоем ваде не ДВЕ копии лампа MAPINFO, часом?...
2) В других портах пробовал? (GZ в первую очередь имеется в виду)
3) Если в других портах тоже НЕ работает, значит возможно повредилась структура wad-файла (XWE например умеет, могёт такое делать)
Решение: разобрать вад по запчастям и воссоздать заново, в другом ваднике, с нуля. Это не слишком долго.
Причем сразу же проверить, работает ли конструкция:
Map MAP02 "Uroburos"
{
...
}
в новом ваднике (хотя, с чего бы ей там не работать?)
Параллельно, при добавлении обратно всех ресурсов в вад, внимательно следить, такая ошибка может вылезти снова (в случае, если инфа из MAPINFO конфликтует с какими-то другими lump-ами)
А ты уверен, что то, что ты предлагаешь схавать Зандронуму, он схавает?
Ведь формат текстовых лампов отличается даже в рамках одной гоззы... есть новые форматы и "deprecated".
Впрочем, как правило, и новые и deprecated хаваются Гоззой отлично,
либо же вылазит ошибка - "такая-то строка: неверный формат в DECORATE либо MAPINFO"
А если же компилятор проглатывает код, не применяя его, не выдавая никаких ошибок, то это как минимум странно...
Либо же идет некий 'override' более высокоприоритетными настройками, но я как дилетант, не знаю таковых (для MAPINFO).
Plut
Тогда копируй текст из MAPINFO, и вставь его в какой-нибудь 16-ричный вьювер, типа WinHex,
чтобы проверить не затесался ли какой-нибудь гадкий непечатаемый символ, который Зандро не переваривает, и боится как огня.
Больше ничего не могу посоветовать.
P.S. И еще раз - пробуй создавать новый вад с нуля, наращивая его тем же MAPINFO, и сразу проверить, работает ли в новой копии.