PDA

Просмотр полной версии : [Вопрос] Рекурсия



123
22.04.2018, 03:59
Скомпилировал мод с флагом -R

Результат:


Pawn compiler 3.10.5 Copyright (c) 1997-2006, ITB CompuPhase

recursion detected: function 40000004!=40000004 directly calls itself
recursion detected: function -40000004 indirectly calls itself:
-40000004 <- SetVehicleIndicator <- WC_OnPlayerKeyStateChange <- -40000004
recursion detected: function 40000004>40000004 indirectly calls itself:
40000004>40000004 <- UpdateSpeedometr <- WC_OnPlayerUpdate <- 40000004>40000004
recursion detected: function 40000004>=40000004 indirectly calls itself:
40000004>=40000004 <- DrugsTimer <- Fresh <- 40000004>=40000004
recursion detected: function 40000004<40000004 indirectly calls itself:
40000004<40000004 <- DrugsTimer <- Fresh <- 40000004<40000004
recursion detected: function 40000004<=40000004 indirectly calls itself:
40000004<=40000004 <- DrugsTimer <- Fresh <- 40000004<=40000004
recursion detected: function AngleBetweenPoints indirectly calls itself:
AngleBetweenPoints <- IsPlayerBehindPlayer <- InflictDamage <- AngleBetweenPoints
recursion detected: function AverageShootRate indirectly calls itself:
AverageShootRate <- WC_OnPlayerDamage <- OnPlayerDamage <- InflictDamage <- AverageShootRate
recursion detected: function CaptureUpd indirectly calls itself:
CaptureUpd <- WC_OnPlayerDeath <- CaptureUpd
recursion detected: function CheckBed indirectly calls itself:
CheckBed <- WC_OnPlayerKeyStateChange <- CheckBed
recursion detected: function CheckItem indirectly calls itself:
CheckItem <- SetPlayerSkinEx <- BuySkin <- WC_OnPlayerEnterCheckpoint <- CheckItem
recursion detected: function ClearPlayerDrugEffects indirectly calls itself:
ClearPlayerDrugEffects <- DrugsTimer <- Fresh <- ClearPlayerDrugEffects
recursion detected: function DamageFeedAddHit indirectly calls itself:
DamageFeedAddHit <- DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- DamageFeedAddHit
recursion detected: function DamageFeedAddHitGiven indirectly calls itself:
DamageFeedAddHitGiven <- OnPlayerDamageDone <- InflictDamage <- DamageFeedAddHitGiven
recursion detected: function DamageFeedAddHitTaken indirectly calls itself:
DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- DamageFeedAddHitTaken
recursion detected: function DamageFeedRemoveHit indirectly calls itself:
DamageFeedRemoveHit <- DamageFeedAddHit <- DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- DamageFeedRemoveHit
recursion detected: function DamageFeedUpdate indirectly calls itself:
DamageFeedUpdate <- DamageFeedAddHit <- DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- DamageFeedUpdate
recursion detected: function DamageFeedUpdateText indirectly calls itself:
DamageFeedUpdateText <- DamageFeedUpdate <- DamageFeedAddHit <- DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- DamageFeedUpdateText
recursion detected: function Dialog_Close indirectly calls itself:
Dialog_Close <- WC_OnPlayerSpawn <- Dialog_Close
recursion detected: function FIXES_ApplyAnimation indirectly calls itself:
FIXES_ApplyAnimation <- SelectAnimation <- FIXES_ApplyAnimation
recursion detected: function FIX_IsPlayerConnected indirectly calls itself:
FIX_IsPlayerConnected <- ClearKillFeed <- EndPaint <- FIX_IsPlayerConnected
recursion detected: function GetLastDamageArmour indirectly calls itself:
GetLastDamageArmour <- OnPlayerDamageDone <- InflictDamage <- GetLastDamageArmour
recursion detected: function GetLastDamageHealth indirectly calls itself:
GetLastDamageHealth <- OnPlayerDamageDone <- InflictDamage <- GetLastDamageHealth
recursion detected: function GiveItem indirectly calls itself:
GiveItem <- SetPlayerSkinEx <- BuySkin <- WC_OnPlayerEnterCheckpoint <- GiveItem
recursion detected: function GiveMoney indirectly calls itself:
GiveMoney <- ExitCasino <- WC_OnPlayerSpawn <- GiveMoney
recursion detected: function ISAMAFIA directly calls itself
recursion detected: function InflictDamage directly calls itself
recursion detected: function IsAArm indirectly calls itself:
IsAArm <- CheckBarrier <- WC_OnPlayerKeyStateChange <- IsAArm
recursion detected: function IsACop indirectly calls itself:
IsACop <- StartQuest <- Fresh <- IsACop
recursion detected: function IsAGang indirectly calls itself:
IsAGang <- StartQuest <- Fresh <- IsAGang
recursion detected: function IsAGreenZone directly calls itself
recursion detected: function IsBulletWeapon indirectly calls itself:
IsBulletWeapon <- InflictDamage <- IsBulletWeapon
recursion detected: function IsDamageFeedActive indirectly calls itself:
IsDamageFeedActive <- DamageFeedAddHit <- DamageFeedAddHitTaken <- OnPlayerDamageDone <- InflictDamage <- IsDamageFeedActive
recursion detected: function IsHighRateWeapon indirectly calls itself:
IsHighRateWeapon <- OnPlayerDamageDone <- InflictDamage <- IsHighRateWeapon
recursion detected: function IsMeleeWeapon indirectly calls itself:
IsMeleeWeapon <- InflictDamage <- IsMeleeWeapon
recursion detected: function IsPlayerBehindPlayer indirectly calls itself:
IsPlayerBehindPlayer <- InflictDamage <- IsPlayerBehindPlayer
recursion detected: function IsPlayerSpawned indirectly calls itself:
IsPlayerSpawned <- InflictDamage <- IsPlayerSpawned
recursion detected: function Iter_RemoveInternal indirectly calls itself:
Iter_RemoveInternal <- race_exitvehicle <- WC_OnPlayerExitVehicle <- Iter_RemoveInternal
recursion detected: function Iter_SafeRemoveInternal indirectly calls itself:
Iter_SafeRemoveInternal <- DestroyVehicleSafe <- Iter_SafeRemoveInternal
recursion detected: function MakePlayerFacePlayer indirectly calls itself:
MakePlayerFacePlayer <- InflictDamage <- MakePlayerFacePlayer
recursion detected: function OnPlayerDamage indirectly calls itself:
OnPlayerDamage <- InflictDamage <- OnPlayerDamage
recursion detected: function OnPlayerDamageDone indirectly calls itself:
OnPlayerDamageDone <- InflictDamage <- OnPlayerDamageDone
recursion detected: function OnPlayerPrepareDeath indirectly calls itself:
OnPlayerPrepareDeath <- PlayerDeath <- InflictDamage <- OnPlayerPrepareDeath
recursion detected: function PlayerDeath indirectly calls itself:
PlayerDeath <- InflictDamage <- PlayerDeath
recursion detected: function PlayerToKvadrat indirectly calls itself:
PlayerToKvadrat <- CheckBizWar <- Fresh <- PlayerToKvadrat
recursion detected: function ProxDetector indirectly calls itself:
ProxDetector <- OnPlayerUseDrug <- pc_cmd_drugs <- ProxDetector
recursion detected: function ProxDetectorS indirectly calls itself:
ProxDetectorS <- TransferDrugsPlayer <- ProxDetectorS
recursion detected: function ResetWeapons directly calls itself
recursion detected: function SendDead indirectly calls itself:
SendDead <- WC_OnPlayerDeath <- SendDead
recursion detected: function SendFamilyMessage indirectly calls itself:
SendFamilyMessage <- FinishBizWar <- Fresh <- SendFamilyMessage
recursion detected: function SetAttachToSkin indirectly calls itself:
SetAttachToSkin <- GiveItem <- SetPlayerSkinEx <- BuySkin <- WC_OnPlayerEnterCheckpoint <- SetAttachToSkin
recursion detected: function SetPPos directly calls itself
recursion detected: function SetPlayerExtra indirectly calls itself:
SetPlayerExtra <- Fresh <- SetPlayerExtra
recursion detected: function SetPlayerHealthAC indirectly calls itself:
SetPlayerHealthAC <- OnPlayerUseDrug <- pc_cmd_drugs <- SetPlayerHealthAC
recursion detected: function SetPlayerSkinEx indirectly calls itself:
SetPlayerSkinEx <- BuySkin <- WC_OnPlayerEnterCheckpoint <- SetPlayerSkinEx
recursion detected: function UpdateHealthBar directly calls itself
recursion detected: function UpdateSyncData indirectly calls itself:
UpdateSyncData <- MakePlayerFacePlayer <- InflictDamage <- UpdateSyncData
recursion detected: function WC_ApplyAnimation indirectly calls itself:
WC_ApplyAnimation <- FIXES_ApplyAnimation <- SelectAnimation <- WC_ApplyAnimation
recursion detected: function WC_ClearAnimations indirectly calls itself:
WC_ClearAnimations <- SetPlayerSkinEx <- BuySkin <- WC_OnPlayerEnterCheckpoint <- WC_ClearAnimations
recursion detected: function WC_GetPlayerState indirectly calls itself:
WC_GetPlayerState <- OnPlayerUseDrug <- pc_cmd_drugs <- WC_GetPlayerState
recursion detected: function WC_GetPlayerVirtualWorld indirectly calls itself:
WC_GetPlayerVirtualWorld <- StartSpectate <- WC_GetPlayerVirtualWorld
recursion detected: function WC_GetWeaponName indirectly calls itself:
WC_GetWeaponName <- UpdatePlayerInfo <- WC_OnPlayerUpdate <- WC_GetWeaponName
recursion detected: function WC_OnPlayerDamage indirectly calls itself:
WC_OnPlayerDamage <- OnPlayerDamage <- InflictDamage <- WC_OnPlayerDamage
recursion detected: function WC_OnPlayerDeath directly calls itself
recursion detected: function WC_OnPlayerLeaveCheckpoint indirectly calls itself:
WC_OnPlayerLeaveCheckpoint <- PlayerDeath <- InflictDamage <- WC_OnPlayerLeaveCheckpoint
recursion detected: function WC_PlayerTextDrawSetString indirectly calls itself:
WC_PlayerTextDrawSetString <- UpdateVehicleInfo <- WC_OnPlayerUpdate <- WC_PlayerTextDrawSetString
recursion detected: function WC_SetPlayerHealth indirectly calls itself:
WC_SetPlayerHealth <- SetPlayerHealthAC <- OnPlayerUseDrug <- pc_cmd_drugs <- WC_SetPlayerHealth
recursion detected: function WC_SetPlayerPos indirectly calls itself:
WC_SetPlayerPos <- SpawnPlayerEx <- WC_SetPlayerPos
recursion detected: function WC_TextDrawSetString indirectly calls itself:
WC_TextDrawSetString <- ExitCasino <- WC_OnPlayerSpawn <- WC_TextDrawSetString
recursion detected: function WC_TogglePlayerControllable indirectly calls itself:
WC_TogglePlayerControllable <- CheckBed <- WC_OnPlayerKeyStateChange <- WC_TogglePlayerControllable
recursion detected: function _FIXES_ApplyAnimationDelay indirectly calls itself:
_FIXES_ApplyAnimationDelay <- FIXES_ApplyAnimation <- SelectAnimation <- _FIXES_ApplyAnimationDelay
recursion detected: function _FIXES_GetAnimLibIndex indirectly calls itself:
_FIXES_GetAnimLibIndex <- FIXES_ApplyAnimation <- SelectAnimation <- _FIXES_GetAnimLibIndex
Header size: 22668 bytes
Code size: 6885268 bytes
Data size: 9592148 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:16516468 bytes


Не понятно что это значит, и как из этого определить рекурсию?

DeimoS
22.04.2018, 09:15
recursion detected: function AngleBetweenPoints indirectly calls itself:
AngleBetweenPoints <- IsPlayerBehindPlayer <- InflictDamage <- AngleBetweenPoints

Обнаружена рекурсия внутри функции AngleBetweenPoints. При этом, в рекурсии вызываются функции: InflictDamage и IsPlayerBehindPlayer.

То есть, у тебя где-то внутри AngleBetweenPoints вызывается InflictDamage, в которой, в свою очередь вызывается IsPlayerBehindPlayer, а уже внутри неё вызывается AngleBetweenPoints, из-за чего компилятор и видит рекурсию.