Перейти к публикации
Планета Deus Ex

LoadLine Calibration

Invisible Hand
  • Публикации

    3011
  • Зарегистрирован

  • Посещение

Все публикации пользователя LoadLine Calibration

  1. LoadLine Calibration

    Вопросы Шрама

    Ладушки
  2. LoadLine Calibration

    Вопросы Шрама

    Да разве я против ? :)
  3. LoadLine Calibration

    Вопросы Шрама

    Посмотри для начала здесь: https://planetdeusex.ru/forum/index.php?showtopic=3391 ЗТЭ?
  4. С Наступившим 2009 Годом !
  5. Не хочу показаться хвастливой, но у меня был ученик :shock: Создай отдельную тему в этом форуме и задавай свои вопросы в ней. Я помогу тебе чем смогу. Английский знаешь ? Так ведь подобное уже сделано-- при желании аптечкой можно вылечить только определенную часть тела.
  6. Можно подробнее? Хорошая идея насчет того чтобы ложиться ! Я тоже об этом думала но так и не сделала.
  7. Раньше там были моды... В общем это был или есть еще один сайт по Игре
  8. Верно В твоем случае нужно отредактировать файл User.ini и прописать твою функцию DualmapF1 Еще давно я написала специальную программу чтобы не редактировать User.ini, ее можно взять здесь
  9. Нужно точное сообщение компилятора. Запусти cmd.exe, запусти компилятор оттуда а потом скопируй текст из окна консоли. Так сделано в HardCoreDX, но не знаю как именно.
  10. LoadLine Calibration

    the station

    На русском языке, если можно. Эта программа и 40% предупреждений помогут тебе.
  11. LoadLine Calibration

    Мульты

    Мне очень понравилось :) ;)
  12. Обычно так: if (!Owner.IsA('PlayerPawn')) Owner.AISendEvent('Distress', EAITYPE_Audio, volume, radius); Что именно вывел компилятор? Есть ли у тебя такой класс (CardScanner) ?
  13. Для одиночной, насколько мне известно -- не нужно Приведи пример
  14. Это отдельный класс: class MyCustomConplay extends conplay; // ok: Shane (that guy, of TNM fame) came up with this fix: the basic setup uses the checkobject property // which is set by native craziness..so, use the string objectname instead and cast to class with // dynamicloadobject (thanks UnrealWiki) // // ---------------------------------------------------------------------- // SetupEventCheckObject() // // Checks to see if the player has the given object. If so, then we'll // just fall through and continue running code. Otherwise we'll jump // to the supplied label. // ---------------------------------------------------------------------- function EEventAction SetupEventCheckObject( ConEventCheckObject event, out String nextLabel ) { local EEventAction nextAction; local Name keyName; local bool bHasObject; local class<inventory> CheckThing; local string seekname; // Okay this is some HackyHack stuff here. We want the ability to // check if the player has a particular nanokey. Sooooooo. if ((event.checkObject == None) && (Left(event.objectName, 3) == "NK_")) { // Look for key keyName = player.rootWindow.StringToName(Right(event.ObjectName, Len(event.ObjectName) - 3)); bHasObject = ((player.KeyRing != None) && (player.KeyRing.HasKey(keyName))); } else { //look for a fullstop, if not there, add deusex. to the beginning if(instr(event.objectname, ".") == -1) Seekname = "DeusEx." $ event.objectname; else Seekname = event.objectname; Checkthing = class<inventory>(DynamicLoadObject(Seekname, class'Class')); //grabs a class incidence from the name //now find it as before bHasObject = (player.FindInventoryType(checkthing) != None); } // Now branch appropriately if (bHasObject) { nextAction = EA_NextEvent; nextLabel = ""; } else { nextAction = EA_JumpToLabel; nextLabel = event.failLabel; } return nextAction; } // ---------------------------------------------------------------------- // SetupEventTransferObject() // // Gives a Pawn the specified object. The object will be created out of // thin air (spawned) if there's no "fromActor", otherwise it's // transfered from one pawn to another. // // We now allow this to work without the From actor, which can happen // in InfoLinks, since the FromActor may not even be on the map. // This is useful for tranferring DataVaultImages. // ---------------------------------------------------------------------- function EEventAction SetupEventTransferObject( ConEventTransferObject event, out String nextLabel ) { local EEventAction nextAction; local Inventory invItemFrom; local Inventory invItemTo; local ammo AmmoType; local bool bSpawnedItem; local bool bSplitItem; local int itemsTransferred; local class<inventory> CheckThing; local string seekname; /* log("SetupEventTransferObject()------------------------------------------"); log(" event = " $ event); log(" event.giveObject = " $ event.giveObject); log(" event.fromActor = " $ event.fromActor ); log(" event.toActor = " $ event.toActor ); */ itemsTransferred = 1; if ( event.failLabel != "" ) { nextAction = EA_JumpToLabel; nextLabel = event.failLabel; } else { nextAction = EA_NextEvent; nextLabel = ""; } // First verify that the receiver exists! if (event.toActor == None) { log("SetupEventTransferObject: WARNING! toActor does not exist!"); log(" Conversation = " $ con.conName); return nextAction; } //======================== // custom stuff!! //======================== //ok, we're going to reassign the checkobject to use checkthing instead, which //we'll make from the objectname. Hurrah! //look for a fullstop, if not there, add deusex. to the beginning if(instr(event.objectname, ".") == -1) Seekname = "DeusEx." $ event.objectname; else Seekname = event.objectname; Checkthing = class<inventory>(DynamicLoadObject(Seekname, class'Class')); //grabs a class incidence from the name if(checkthing == none) //oh noes! { log("SHIT! I done gone fucked up teh transfer! I was trying to load up"@seekname); return nextAction; //assume fail, essentially } //Ok! Now we're reading to rock and roll!!! // First, check to see if the giver actually has the object. If not, then we'll // fabricate it out of thin air. (this is useful when we want to allow // repeat visits to the same NPC so the player can restock on items in some // scenarios). // // Also check to see if the item already exists in the recipient's inventory if (event.fromActor != None) invItemFrom = Pawn(event.fromActor).FindInventoryType(Checkthing); invItemTo = Pawn(event.toActor).FindInventoryType(Checkthing); //log(" invItemFrom = " $ invItemFrom); //log(" invItemTo = " $ invItemTo); // If the player is doing the giving, make sure we remove it from // the object belt. // If the giver doesn't have the item then we must spawn a copy of it if (invItemFrom == None) { invItemFrom = Spawn(Checkthing); bSpawnedItem = True; } // If we're giving this item to the player and he does NOT yet have it, // then make sure there's enough room in his inventory for the // object! if ((invItemTo == None) && (DeusExPlayer(event.toActor) != None) && (DeusExPlayer(event.toActor).FindInventorySlot(invItemFrom, True) == False)) { // First destroy the object if we previously Spawned it if (bSpawnedItem) invItemFrom.Destroy(); return nextAction; } // Okay, there's enough room in the player's inventory or we're not // transferring to the player in which case it doesn't matter. // // Now check if the recipient already has the item. If so, we are just // going to give it to him, with a few special cases. Otherwise we // need to spawn a new object. if (invItemTo != None) { // Check if this item was in the player's hand, and if so, remove it RemoveItemFromPlayer(invItemFrom); // If this is ammo, then we want to just increment the ammo count // instead of adding another ammo to the inventory if (invItemTo.IsA('Ammo')) { // If this is Ammo and the player already has it, make sure the player isn't // already full of this ammo type! (UGH!) if (!Ammo(invItemTo).AddAmmo(Ammo(invItemFrom).AmmoAmount)) { invItemFrom.Destroy(); return nextAction; } // Destroy our From item invItemFrom.Destroy(); } // Pawn cannot have multiple weapons, but we do want to give the // player any ammo from the weapon else if ((invItemTo.IsA('Weapon')) && (DeusExPlayer(event.ToActor) != None)) { AmmoType = Ammo(DeusExPlayer(event.ToActor).FindInventoryType(Weapon(invItemTo).AmmoName)); if ( AmmoType != None ) { // Special case for Grenades and LAMs. Blah. if ((AmmoType.IsA('AmmoEMPGrenade')) || (AmmoType.IsA('AmmoGasGrenade')) || (AmmoType.IsA('AmmoNanoVirusGrenade')) || (AmmoType.IsA('AmmoLAM'))) { if (!AmmoType.AddAmmo(event.TransferCount)) { invItemFrom.Destroy(); return nextAction; } } else { if (!AmmoType.AddAmmo(Weapon(invItemTo).PickUpAmmoCount)) { invItemFrom.Destroy(); return nextAction; } event.TransferCount = Weapon(invItemTo).PickUpAmmoCount; itemsTransferred = event.TransferCount; } if (event.ToActor.IsA('DeusExPlayer')) DeusExPlayer(event.ToActor).UpdateAmmoBeltText(AmmoType); // Tell the player he just received some ammo! invItemTo = AmmoType; } else { // Don't want to show this as being received in a convo invItemTo = None; } // Destroy our From item invItemFrom.Destroy(); invItemFrom = None; } // Otherwise check to see if we need to transfer more than // one of the given item else { itemsTransferred = AddTransferCount(invItemFrom, invItemTo, event, Pawn(event.toActor), False); // If no items were transferred, then the player's inventory is full or // no more of these items can be stacked, so abort. if (itemsTransferred == 0) return nextAction; // Now destroy the originating object (which we either spawned // or is sitting in the giver's inventory), but check to see if this // item still has any copies left first if (((invItemFrom.IsA('DeusExPickup')) && (DeusExPickup(invItemFrom).bCanHaveMultipleCopies) && (DeusExPickup(invItemFrom).NumCopies <= 0)) || ((invItemFrom.IsA('DeusExPickup')) && (!DeusExPickup(invItemFrom).bCanHaveMultipleCopies)) || (!invItemFrom.IsA('DeusExPickup'))) { invItemFrom.Destroy(); invItemFrom = None; } } } // Okay, recipient does *NOT* have the item, so it must be give // to that pawn and the original destroyed else { // If the item being given is a stackable item and the // recipient isn't receiving *ALL* the copies, then we // need to spawn a *NEW* copy and give that to the recipient. // Otherwise just do a "SpawnCopy", which transfers ownership // of the object to the new owner. if ((invItemFrom.IsA('DeusExPickup')) && (DeusExPickup(invItemFrom).bCanHaveMultipleCopies) && (DeusExPickup(invItemFrom).NumCopies > event.transferCount)) { itemsTransferred = event.TransferCount; invItemTo = Spawn(checkthing); invItemTo.GiveTo(Pawn(event.toActor)); DeusExPickup(invItemFrom).NumCopies -= event.transferCount; bSplitItem = True; bSpawnedItem = True; } else { invItemTo = invItemFrom.SpawnCopy(Pawn(event.toActor)); } //log(" invItemFrom = "$ invItemFrom); //log(" invItemTo = " $ invItemTo); if (DeusExPlayer(event.toActor) != None) DeusExPlayer(event.toActor).FindInventorySlot(invItemTo); // Check if this item was in the player's hand *AND* that the player is // giving the item to someone else. if ((DeusExPlayer(event.fromActor) != None) && (!bSplitItem)) RemoveItemFromPlayer(invItemFrom); // If this was a DataVaultImage, then the image needs to be // properly added to the datavault if ((invItemTo.IsA('DataVaultImage')) && (event.toActor.IsA('DeusExPlayer'))) { DeusExPlayer(event.toActor).AddImage(DataVaultImage(invItemTo)); if (conWinThird != None) conWinThird.ShowReceivedItem(invItemTo, 1); else DeusExRootWindow(player.rootWindow).hud.receivedItems.AddItem(invItemTo, 1); invItemFrom = None; invItemTo = None; } // Special case for Credit Chits also else if ((invItemTo.IsA('Credits')) && (event.toActor.IsA('DeusExPlayer'))) { if (conWinThird != None) conWinThird.ShowReceivedItem(invItemTo, Credits(invItemTo).numCredits); else DeusExRootWindow(player.rootWindow).hud.receivedItems.AddItem(invItemTo, Credits(invItemTo).numCredits); player.Credits += Credits(invItemTo).numCredits; invItemTo.Destroy(); invItemFrom = None; invItemTo = None; } // Now check to see if the transfer event specified transferring // more than one copy of the object else { itemsTransferred = AddTransferCount(invItemFrom, invItemTo, event, Pawn(event.toActor), True); // If no items were transferred, then the player's inventory is full or // no more of these items can be stacked, so abort. if (itemsTransferred == 0) { invItemTo.Destroy(); return nextAction; } // Update the belt text if (invItemTo.IsA('Ammo')) player.UpdateAmmoBeltText(Ammo(invItemTo)); else player.UpdateBeltText(invItemTo); } } // Show the player that he/she/it just received something! if ((DeusExPlayer(event.toActor) != None) && (conWinThird != None) && (invItemTo != None)) { if (conWinThird != None) conWinThird.ShowReceivedItem(invItemTo, itemsTransferred); else DeusExRootWindow(player.rootWindow).hud.receivedItems.AddItem(invItemTo, itemsTransferred); } nextAction = EA_NextEvent; nextLabel = ""; return nextAction; } defaultproperties {} А это нужно вставить в класс игрока (у меня это был AV_Player) // ---------------------------------------------------------------------- // StartConversation() // // Overridden (hopefully) to allow my custom conplay // ---------------------------------------------------------------------- function bool StartConversation( Actor invokeActor, EInvokeMethod invokeMethod, optional Conversation con, optional bool bAvoidState, optional bool bForcePlay ) { local DeusExRootWindow root; root = DeusExRootWindow(rootWindow); // First check to see the actor has any conversations or if for some // other reason we're unable to start a conversation (typically if // we're alread in a conversation or there's a UI screen visible) if ((!bForcePlay) && ((invokeActor.conListItems == None) || (!CanStartConversation()))) return False; // Make sure the other actor can converse if ((!bForcePlay) && ((ScriptedPawn(invokeActor) != None) && (!ScriptedPawn(invokeActor).CanConverse()))) return False; // If we have a conversation passed in, use it. Otherwise check to see // if the passed in actor actually has a valid conversation that can be // started. if ( con == None ) con = GetActiveConversation(invokeActor, invokeMethod); // If we have a conversation, put the actor into "Conversation Mode". // Otherwise just return false. // // TODO: Scan through the conversation and put *ALL* actors involved // in the conversation into the "Conversation" state?? if ( con != None ) { // Check to see if this conversation is already playing. If so, // then don't start it again. This prevents a multi-bark conversation // from being abused. if ((conPlay != None) && (conPlay.con == con)) return False; // Now check to see if there's a conversation playing that is owned // by the InvokeActor *and* the player has a speaking part *and* // it's a first-person convo, in which case we want to abort here. if (((conPlay != None) && (conPlay.invokeActor == invokeActor)) && (conPlay.con.bFirstPerson) && (conPlay.con.IsSpeakingActor(Self))) return False; // Check if the person we're trying to start the conversation // with is a Foe and this is a Third-Person conversation. // If so, ABORT! if ((!bForcePlay) && ((!con.bFirstPerson) && (ScriptedPawn(invokeActor) != None) && (ScriptedPawn(invokeActor).GetPawnAllianceType(Self) == ALLIANCE_Hostile))) return False; // If the player is involved in this conversation, make sure the // scriptedpawn even WANTS to converse with the player. // // I have put a hack in here, if "con.bCanBeInterrupted" // (which is no longer used as intended) is set, then don't // call the ScriptedPawn::CanConverseWithPlayer() function if ((!bForcePlay) && ((con.IsSpeakingActor(Self)) && (!con.bCanBeInterrupted) && (ScriptedPawn(invokeActor) != None) && (!ScriptedPawn(invokeActor).CanConverseWithPlayer(Self)))) return False; // Hack alert! If this is a Bark conversation (as denoted by the // conversation name, since we don't have a field in ConEdit), // then force this conversation to be first-person if (Left(con.conName, Len(con.conOwnerName) + 5) == (con.conOwnerName $ "_Bark")) con.bFirstPerson = True; // Make sure the player isn't ducking. If the player can't rise // to start a third-person conversation (blocked by geometry) then // immediately abort the conversation, as this can create all // sorts of complications (such as the player standing through // geometry!!) if ((!con.bFirstPerson) && (ResetBasedPawnSize() == False)) return False; // If ConPlay exists, end the current conversation playing if (conPlay != None) { // If we're already playing a third-person conversation, don't interrupt with // another *radius* induced conversation (frobbing is okay, though). if ((conPlay.con != None) && (conPlay.con.bFirstPerson) && (invokeMethod == IM_Radius)) return False; conPlay.InterruptConversation(); conPlay.TerminateConversation(); } // If this is a first-person conversation _and_ a DataLink is already // playing, then abort. We don't want to give the user any more // distractions while a DL is playing, since they're pretty important. if ( dataLinkPlay != None ) { if (con.bFirstPerson) return False; else dataLinkPlay.AbortAndSaveHistory(); } // Found an active conversation, so start it conPlay = Spawn(class'MyCustomConPlay'); conPlay.SetStartActor(invokeActor); conPlay.SetConversation(con); conPlay.SetForcePlay(bForcePlay); conPlay.SetInitialRadius(VSize(Location - invokeActor.Location)); // If this conversation was invoked with IM_Named, then save away // the current radius so we don't abort until we get outside // of this radius + 100. if ((invokeMethod == IM_Named) || (invokeMethod == IM_Frob)) { conPlay.SetOriginalRadius(con.radiusDistance); con.radiusDistance = VSize(invokeActor.Location - Location); } // If the invoking actor is a ScriptedPawn, then force this person // into the conversation state if ((!bForcePlay) && (ScriptedPawn(invokeActor) != None )) ScriptedPawn(invokeActor).EnterConversationState(con.bFirstPerson, bAvoidState); // Do the same if this is a DeusExDecoration if ((!bForcePlay) && (DeusExDecoration(invokeActor) != None )) DeusExDecoration(invokeActor).EnterConversationState(con.bFirstPerson, bAvoidState); // If this is a third-person convo, we're pretty much going to // pause the game. If this is a first-person convo, then just // keep on going.. // // If this is a third-person convo *AND* 'bForcePlay' == True, // then use first-person mode, as we're playing an intro/endgame // sequence and we can't have the player in the convo state (bad bad bad!) if ((!con.bFirstPerson) && (!bForcePlay)) { GotoState('Conversation'); } else { if (!conPlay.StartConversation(Self, invokeActor, bForcePlay)) { AbortConversation(True); } } return True; } else { return False; } } Взято отсюда: http://www.dxediting.com/forums/showthread.php?t=2285 Потом нужно в ConEdit указывать так: МойПакет.МойКласс. Работает 100% !
  15. Что с ней не так? Я указываю в настройках путь где мой Deus Ex D:\DeusEX\system но при попытке получить список пакетов я вижу это
  16. Страница с нерабочими ссылками :) Это должно быть оправдание тому что многие ссылки не работают :) :? :x
  17. Взгляните на модель PS20 (HIDEAGUN) в Mesh Viewer. У нее есть две анимации выстрела-- Shoot и Shoot2 Shoot2 более короткая и думаю подойдет для данного случая. По умолчанию используеться именно Shoot но можно переопределить функцию в которой воспроизводиться анимация выстрела. simulated function playselectivefiring() { LoopAnim('shoot2',1.0, 0.01); }
  18. LoadLine Calibration

    Half-Life 2

    http://ru.wikipedia.org/wiki/%D0%93%D0%BE%...%BC%D0%B5%D0%BD http://www.lki.ru/text.php?id=3849 Очень интересно, по крайней мере для меня :lol:
  19. LoadLine Calibration

    Deus Ex: Skyward By Kronos

    Я так понимаю это модифицированный DeusEx.exe ? :lol:
  20. Я уже не помню. По моему до третьей миссии
  21. Да, кстати... Вот это ранняя версия перевода в виде исходника: http://veronika.3dn.ru/Translation_Zodiac/Zodiac_RUS_SRC.zip Я продолжу перевод как только смогу, а желающие могут скомпилировать данный исходник и поиграть в отчасти переведенный ЗОДИАК. Я не забыла про проект, просто пока нет времени на перевод.
  22. LoadLine Calibration

    карты *.unr и *.dx

    Наверное ошибаешься :lol: Там только нех-редактором расширение исправлено и иконки изменены (я так думаю)
  23. LoadLine Calibration

    Half-Life 2

    Мне в Episode 2 очень понравилась сцена с машиной :lol: И вообще весь Episode 2 в целом, а в Episode 1 очень понравилась глава "Прямое вмешательство" Вот только непонятно зачем Советники убили Илая и что будет в Эпизоде ТРИ
  24. LoadLine Calibration

    Просто flood

    Я вот смотрю на свой аватар -- а он же летний! А лето давно прошло...
  25. Я тоже всегда оставляю лицо по умолчанию. Я никогда не выбрасываю меч Зуб Дракона
×
×
  • Создать...