Raised This Month: $51 Target: $400
 12% 

[ES] Orpheu: Objeto GameRules


  
 
 
Thread Tools Display Modes
Author Message
fezh
Veteran Member
Join Date: Dec 2008
Location: BANNED
Old 07-02-2010 , 16:18   [ES] Orpheu: Objeto GameRules
#1

Antes de empezar les sugiero que si no tienen idea de lo que es programación orientada a objetos (abreviada OO o POO) lean algo sobre el tema por que sino dudo que entiendan parte del thread.

Rant:
El thread original lo pueden encontrar acá. Esto es solo la traducción.


En juegos basados en el Half-Life, una porción del comportamiento del juego relacionado con las reglas del juego y los eventos esta agrupado en objetos derivados de un objeto llamado CGameRules. He juntado las funciones virtuales del mismo (dependientes del mod en cuestión o no) por lo que las puedes usar directamente luego de instalar este paquete.

Un paso obligatorio en la utilización de esas funciones es obtener las CGameRules derivadas del objeto mismo.

PHP Code:
#include <amxmodx>
#include <orpheu>
#include <orpheu_stocks>

new g_pGameRules

public plugin_precache()
{
    
OrpheuRegisterHook(OrpheuGetFunction("InstallGameRules"),"OnInstallGameRules",OrpheuHookPost)
}
public 
OnInstallGameRules()
{
    
g_pGameRules OrpheuGetReturn() 

Esto atrapa la función InstallGameRules que existe en todos los mods y crea el objeto que necesitamos. Después de esto, nuestra variable g_pGameRules contendrá una referencia a el objeto por lo que podemos llamar funciones del mismo. Como una nota al margen en el Team Fortress Classic (TFC) la función es un poco diferente por lo que la llamé InstallGameRules_tfc. Tenlo en cuenta si estás creando un plugin que debe funcionar en TFC.

Ahora, atrapando una función:
Ejemplo GetNextBestWeapon(CBasePlayer *, CBasePlayerItem *)
PHP Code:
public plugin_init()
{
/* GetNextBestWeapon es el nombre de la funcion. Puedes ver el nombre de la función en configs\orpheu\virtualFunctions\CGameRules   
    CGameRules es el objeto base y se va a utilizar en cada función del paquete.
    OnGetNextBestWeapon is the name of our hook function
*/
  
OrpheuRegisterHookFromObject(g_pGameRules,"GetNextBestWeapon","CGameRules","OnGetNextBestWeapon")
}

public 
OnGetNextBestWeapon(gameRules,playerID,weaponID)
{
    
// El objeto de las reglas del juego (Game rules) siempre es pasado como el primer argumento pero no lo necesitamos ya que ya lo tenemos en g_pGameRules

Ahora, llamemos una función:
Ejemplo: CanHaveAmmo(CBasePlayer *, char const *, int)
PHP Code:
new OrpheuFunction:CanHaveAmmo OrpheuGetFunctionFromObject(g_pGameRules,"CanHaveAmmo","CGameRules")
    
// Cuando llamas cualquiera de esas funciones tienes que pasar g_pGameRules siempre como el primer argumento.
new result OrpheuCall(CanHaveAmmo,g_pGameRules,id,"ammo_buckshot",30
Luego de instalar el paquete las funciones estarán en "configs\orpheu\virtualFunctions\CGameRul es". Chequea esa carpeta y cada archivo para saber los argumentos para cada función y en que mod funcionan.

Mods soportados:
Code:
cstrike
czero
dod
tfc
ns
ts
SvenCoop
valve
Lista de funciones:
Code:
AddToTeamScores
AllowAutoTargetCrosshair
AmmoShouldRespawn
BloodSprite
BloodStream
bodyDamage
Bubbles
BubbleTrails
BuildableBuilt
BuildableKilled
BuildMiniMap
BulletTracers
Camera
CanEntityDoDamageTo
CanHaveAmmo
CanHaveItem
CanHavePlayerItem
ChangeLevel
ChangePlayerTeam
ChangePlayerTeam_dod
CheckMapConditions
CheckWinConditions
CleanUpMap
ClientCommand
ClientCommandDeadOrAlive
ClientCommand_dod
ClientConnected
ClientDisconnected
ClientUserInfoChanged
DeadPlayerAmmo
DeadPlayerWeapons
DeathNotice
DeathNotice_dod
EndMultiplayerGame
Explosion
FAllowFlashlight
FAllowMonsters
FlAmmoRespawnTime
FlHealthChargerRechargeTime
FlHEVChargerRechargeTime
FlItemRespawnTime
FlPlayerFallDamage
FlPlayerSpawnTime
FlWeaponRespawnTime
FlWeaponTryRespawn
FPlayerCanRespawn
FPlayerCanTakeDamage
FShouldSwitchWeapon
gerVoice
GetArePlayersAllowedToJoinImmediately
GetCombatAttackingTeamNumber
GetCountdownStarted
GetGameDescription
GetGameStarted
GetGameTime
GetIndexedTeamName
GetIsClientAuthorizedToPlay
GetIsCombatMode
GetIsHamboneMode
GetIsIronMan
GetIsNSMode
GetIsTournamentMode
GetIsTrainingMode
getMapTime
GetMaxWaveTime
GetNextBestWeapon
GetPlayerSpawnSpot
GetTeamID
GetTeamIndex
getWaveTime
GiveC4
GoToIntermission
Init
InitHUD
IPointsForKill
IsAllowedToSpawn
IsClanMatch
IsClanMatchActive
IsCoOp
IsDeathmatch
IsFreezePeriod
IsMultiplayer
IsRoundFrozen
IsTeamplay
IsValidTeam
ItemShouldRespawn
Pain
PerformHardAuthorization
PlayerGotAmmo
PlayerGotItem
PlayerGotWeapon
PlayerKilled
PlayerKilled_dod
PlayerRelationship
PlayerSpawn
PlayerThink
PlayFootstepSounds
PlayTextureSounds
PopHelmet
ProcessRespawnCostForPlayer
Prone
RecalculateHandicap
RecalculateMapMode
RefreshSkillData
RemoveGuns
RestartRound
ReturnGameRules
RewardPlayerForKill
RoundReset
roundRestartSound
RoundState
ScreenFades
SelectSpawnPoint
SendMOTDToClient
SendTeamScores
ServerDeactivate
SetBloodSprite
SetBloodStream
SetbodyDamage
SetBubbles
SetBubbleTrails
SetBulletTracers
SetCamera
SetClanMatch
SetDefaultPlayerTeam
SetExplosion
SetGameStarted
SetgerVoice
SetMapChangeFromTime
setMapTime
SetPain
SetPopHelmet
SetProne
SetRestartTime
SetRocketTrail
SetRoundReset
SetroundRestartSound
SetRoundState
SetScreenFades
SetShards
SetSmoke
SetSparkShower
SetTeamScores
SetusVoice
setWaveTime
Shards
ShouldAutoAim
Smoke
SparkShower
StartTrail
TeamScores
Think
UpdateGameMode
usVoice
VoteKick
WeaponShouldRespawn
Como última nota joaquim nos dice que esto fue un trabajo extenso así que piensa que tuvo más de un error. Dice que le contemos si una función no funciona contándole el nombre, el mod y el sistema operativo en la que fue probada.
Attached Files
File Type: zip gamerules.zip (60.6 KB, 132 views)
__________________
"There is no knowledge, that is not power"

Last edited by fezh; 07-02-2010 at 16:41.
fezh is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:44.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode