Unreal Tournament 99 http://unrealtournament.99.free.fr/forum/ |
|
tuto: Nexgen : Pour eviter les Prevent from Dying http://unrealtournament.99.free.fr/forum/viewtopic.php?f=9&t=1236 |
Page 1 sur 1 |
Auteur: | Shado149 [ 26 Mar 2011, 16:54 ] |
Sujet du message: | tuto: Nexgen : Pour eviter les Prevent from Dying |
PREVENT DAMAGE ( The server has prevented you from dying) IL faut désactiver ces protections c'est elles qui provoque ce respawn avec ce message ( il vous evite de vous faire Tuer par la lave, les chutes ,ou les cannons automatiques si vous êtes sous spawnProtection) spawnProtectionTime=0 Reste a test ces 2 c'est quand un autre joueur vous tire dessus dans les parties par équipes ou le monsterhunt teamKillDamageProtectionTime=0 teamKillPushProtectionTime=0 ICI JE MET LE CODE : Code: /*************************************************************************************************** * * $DESCRIPTION Called when a pawn takes damage. * $PARAM actualDamage The amount of damage sustained by the pawn. * $PARAM victim Pawn that has become victim of the damage. * $PARAM instigatedBy The pawn that has instigated the damage to the victim. * $PARAM hitLocation Location where the damage was dealt. * $PARAM momentum Momentum of the damage that has been dealt. * $PARAM damageType Type of damage dealt to the victim. * $REQUIRE victim != none * $OVERRIDE * **************************************************************************************************/ function mutatorTakeDamage(out int actualDamage, Pawn victim, Pawn instigatedBy, out vector hitLocation, out vector momentum, name damageType) { local NexgenClient client; local byte bPreventDamage; local byte bResetPlayer; local int index; // Get client. client = getClient(victim); // Check if damage should be prevented. if (client != none && damageType != suicideDamageType) { checkPreventDamage(client, instigatedBy, damageType, actualDamage, bPreventDamage, bResetPlayer); // Prevent the damage. if (bool(bPreventDamage)) { actualDamage = 0; if (bool(bResetPlayer)) { level.game.restartPlayer(client.player); client.showMsg(lng.deathPreventedMsg); } } // Team kill? if (victim != instigatedBy && level.game.gameReplicationInfo.bTeamGame && instigatedBy != none && (instigatedBy.isA('PlayerPawn') || instigatedBy.isA('Bot')) && victim.playerReplicationInfo.team == instigatedBy.playerReplicationInfo.team) { // Yes, prevent damage & protect victim. client.tkPushProtectionTimeX = sConf.teamKillPushProtectionTime; if (!bool(bPreventDamage) && sConf.teamKillDamageProtectionTime > 0 && (!level.game.isA('TeamGamePlus') || TeamGamePlus(level.game).friendlyFireScale <= 0 )) { // Damage hasn't been prevented yet. actualDamage = 0; client.tkDmgProtectionTimeX = sConf.teamKillDamageProtectionTime; // Notify players if desired. if (sConf.broadcastTeamKillAttempts) { broadcastMsg(lng.teamKillAttemptMsg, instigatedBy.playerReplicationInfo.playerName, victim.playerReplicationInfo.playerName, , , instigatedBy.playerReplicationInfo); } } } } // Notify plugins. while (index < arrayCount(plugins) && plugins[index] != none) { plugins[index].mutatorTakeDamage(actualDamage, victim, instigatedBy, hitLocation, momentum, damageType); index++; } // Let other mutators do their job. if (nextDamageMutator != none) { nextDamageMutator.mutatorTakeDamage(actualDamage, victim, instigatedBy, hitLocation, momentum, damageType); } } /*************************************************************************************************** * * $DESCRIPTION Called when the server wants to check if a players death should be prevented. * $PARAM victim The pawn that was killed. * $PARAM killer The pawn that has killed the victim. * $PARAM damageType Type of damage dealt to the victim. * $PARAM hitLocation Location where the damage was dealt. * $RETURN True if the players death should be prevented, false if not. * $OVERRIDE * **************************************************************************************************/ function bool preventDeath(Pawn victim, Pawn killer, name damageType, vector hitLocation) { local NexgenClient client; local byte bPreventDamage; local byte bResetPlayer; local int index; // Get client. client = getClient(victim); // Check if damage should be prevented. if (client != none && damageType != suicideDamageType) { checkPreventDamage(client, killer, damageType, 99999, bPreventDamage, bResetPlayer); // Prevent the damage. if (bool(bPreventDamage)) { client.player.health = 100; if (bool(bResetPlayer)) { level.game.restartPlayer(client.player); client.showMsg(lng.deathPreventedMsg); } return true; } } // Notify plugins. while (index < arrayCount(plugins) && plugins[index] != none) { if (plugins[index].preventDeath(victim, killer, damageType, hitLocation)) return true; index++; } // Let other mutators do their job. if (nextMutator == none) { return false; } else { return nextMutator.preventDeath(victim, killer, damageType, hitLocation); } } /*************************************************************************************************** * * $DESCRIPTION Checks whether the specified damage to the client should be prevented. * $PARAM client The client for which the damage prevention check should be executed. * $PARAM instigator The pawn that has instigated the damage to the victim. * $PARAM damageType Type of damage the player has sustained. * $PARAM damage The amount of damage sustained by the client. * $PARAM bPreventDamage Whether the damage should be prevented or not. * $PARAM bResetPlayer Indicates if the player should restart if the damage is prevented. * $REQUIRE client != none * **************************************************************************************************/ function checkPreventDamage(NexgenClient client, Pawn instigator, name damageType, int damage, out byte bPreventDamage, out byte bResetPlayer) { // Check if player has switched to another team. if (client.team != client.player.playerReplicationInfo.team) { // Yes, don't prevent the damage. bPreventDamage = byte(false); bResetPlayer = byte(false); return; } // Spawn protection. if (client.spawnProtectionTimeX > 0) { bPreventDamage = byte(true); bResetPlayer = byte(client.player.playerReplicationInfo.hasFlag == none && (damageType == fallDamageType && client.player.health <= damage || damageType == burnDamageType || damageType == corrodeDamageType)); } // Team kill damage & push protection. if (!bool(bPreventDamage)) { bPreventDamage = byte(client.tkDmgProtectionTimeX > 0 && client.player == instigator || client.tkPushProtectionTimeX > 0 && (damageType == fallDamageType || damageType == burnDamageType || damageType == corrodeDamageType || instigator == none)); bResetPlayer = byte(client.tkPushProtectionTimeX > 0 && client.player.playerReplicationInfo.hasFlag == none && (damageType == fallDamageType && client.player.health <= damage || damageType == burnDamageType || damageType == corrodeDamageType)); } } |
Page 1 sur 1 | Heures au format UTC + 1 heure |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |