home *** CD-ROM | disk | FTP | other *** search
/ GameSpot.it / GameSpot Italia (2001).bin / demo / severancedemo / data1.cab / Program_Files / Scripts / dm.py < prev    next >
Encoding:
Text File  |  2000-10-13  |  5.5 KB  |  200 lines

  1. import netgame
  2. if netgame.GetNetState() == 1:
  3.     #--------------------[ \/ Server Deathmatch module \/ ]--------------------------#
  4.     import Basic_Funcs
  5.     import Damage
  6.     
  7.     def TimeRespawnAlive(e_name, time):
  8.         pj = Bladex.GetEntity(e_name)
  9.         pj.Alpha = pj.Alpha+0.005
  10.         if pj.Alpha>=1.0:
  11.             pj.Alpha=1.0;
  12.             pj.TimerFunc  = ""
  13.             pj.RemoveFromList("Timer30")
  14.         if pj.InvRight <> '':
  15.             Der          = Bladex.GetEntity(pj.InvRight)
  16.             Der.Alpha=pj.Alpha        
  17.         else:
  18.             INV  = pj.GetInventory()
  19.             i=SearchPlayerDescriptor(e_name)
  20.             sword=Bladex.CreateEntity("WeaponINVPrb1",PlayersList[i][4],0,0,0)
  21.             swordName = sword.Name
  22.             sword.Weapon=1
  23.             Breakings.SetBreakableWS(swordName)
  24.             INV.AddWeapon(swordName)
  25.             INV.LinkRightHand(swordName)
  26.             
  27.             
  28.         if pj.InvLeft <> '':
  29.             Izq          = Bladex.GetEntity(pj.InvLeft)
  30.             Izq.Alpha=pj.Alpha
  31.         else:
  32.             INV  = pj.GetInventory()
  33.             i=SearchPlayerDescriptor(e_name)
  34.             Shield = Bladex.CreateEntity("escudo",PlayersList[i][5],0,0,0)
  35.             shieldname = Shield.Name
  36.             Sparks.MakeShield(shieldname)
  37.             Breakings.SetBreakableWS(shieldname)
  38.             
  39.             Sparks.MakeShield(shieldname)
  40.             INV.AddShield(shieldname)
  41.             INV.LinkLeftHand(shieldname)
  42.     
  43.     def TimeRespawnDisolve(e_name, time):
  44.         pj = Bladex.GetEntity(e_name)
  45.         pj.Alpha = pj.Alpha-0.0025
  46.         if pj.Alpha<=0.0 :
  47.             pj.Alpha = 0.01
  48.             pj.TimerFunc  = TimeRespawnAlive
  49.             pj.Data.ReSpawn(e_name)
  50.             pj.Position = netgame.GetNextPosition()        
  51.             
  52.     
  53.         if pj.InvRight <> '':
  54.             Der          = Bladex.GetEntity(pj.InvRight)
  55.             Der.Alpha=pj.Alpha
  56.         if pj.InvLeft <> '':
  57.             Izq          = Bladex.GetEntity(pj.InvLeft)
  58.             Izq.Alpha=pj.Alpha
  59.     
  60.     def ReSpawPlayer(name):
  61.         pj = Bladex.GetEntity(name)
  62.         pj.SubscribeToList("Timer30")
  63.         pj.TimerFunc  = TimeRespawnDisolve
  64.     
  65.     
  66.     def ReadUserString(id,type,cad):
  67.       print `type`+" : "+cad
  68.     
  69.     PlayersList=[[-1,char.Name,netdata[0],netdata[1],netdata[2],netdata[3],0]] # Lista de jugadores
  70.     #                    0:netid    1:object   2:Name    3:Race       4:Weapon      5:Shield     6:Frags
  71.     
  72.     def FillFrags():
  73.         s=""
  74.         for x in PlayersList:
  75.             s = s+"\n"+x[2]+": "+`x[6]`
  76.         wPlayersFrags.SetText(s)
  77.         netgame.SendUserString(0,s)
  78.     
  79.     def JoinFunc(id,objname,name,race,weapon,shield):
  80.     
  81.         print name," has join to the arena:"    
  82.         
  83.         PlayersList.append([ id, objname, name, race, weapon, shield, 0])     # Lo agrega a la lista de jugadores con frags = 0
  84.         
  85.         CHAR = Bladex.GetEntity(objname)
  86.         CHAR.Level=0
  87.         CHAR.PartialLevel=0
  88.         CHAR.SendTriggerSectorMsgs=1
  89.         CHAR.Data=Basic_Funcs.PlayerPerson(CHAR)
  90.         
  91.         INV  = CHAR.GetInventory()
  92.         
  93.         sword=Bladex.CreateEntity("WeaponINVPrb1",weapon,0,0,0)
  94.         swordName = sword.Name
  95.         sword.Weapon=1
  96.         Breakings.SetBreakableWS(swordName)
  97.         INV.AddWeapon(swordName)
  98.         INV.LinkRightHand(swordName)
  99.         print "  weapon :",weapon
  100.         
  101.         # Crea el escudo
  102.         Shield = Bladex.CreateEntity("escudo",shield,0,0,0)
  103.         shieldname = Shield.Name
  104.         Sparks.MakeShield(shieldname)
  105.         Breakings.SetBreakableWS(shieldname)
  106.         
  107.         Sparks.MakeShield(shieldname)
  108.         INV.AddShield(shieldname)
  109.         INV.LinkLeftHand(shieldname)
  110.         print "  weapon :",shield
  111.         FillFrags()
  112.     
  113.         #### Probando arco y flecha ####
  114.         
  115.         o=Bladex.CreateEntity("WeaponInvPrb3","Arco",0,0,0)
  116.         o.Weapon=1
  117.         INV.AddBow(o.Name)    
  118.         
  119.         o=Bladex.CreateEntity("QuiverInvPrb1","Carcaj",0,0,0)
  120.         ItemTypes.ItemDefaultFuncs (o)
  121.         INV=CHAR.GetInventory()
  122.         INV.AddQuiver(o.Name)
  123.     
  124.         #### Probando arco y flecha ####
  125.         
  126.         o=Bladex.CreateEntity("WeaponInvPrb1","Hacha",0,0,0)
  127.         name = o.Name
  128.         o.Weapon=1
  129.         INV=CHAR.GetInventory()
  130.         INV.AddWeapon(name)    
  131.         
  132.         o=Bladex.CreateEntity("EscudoInvPrb3","Escudo3",0,0,0)
  133.         name = o.Name
  134.         o.Weapon=1
  135.         INV.AddShield(name)    
  136.     
  137.     def ByeFunc(i,s):
  138.         global PlayersList
  139.         print "Bye Bye "+s
  140.         id = SearchPlayerId(i)
  141.         if id != -1:
  142.             PlayersList.remove(PlayersList[id])
  143.             FillFrags()
  144.             pj = Bladex.GetEntity(s)
  145.             pj.SubscribeToList("Pin")
  146.         
  147.     
  148.     def SearchPlayerDescriptor(entity):
  149.         global PlayersList
  150.         for i in range(len(PlayersList)):
  151.             if PlayersList[i][1] == entity:
  152.                 return i
  153.         return -1
  154.     
  155.     def SearchPlayerId(id):
  156.         global PlayersList
  157.         for i in range(len(PlayersList)):
  158.             if PlayersList[i][0] == id:
  159.                 return i
  160.         return -1
  161.             
  162.     netgame.SetJoinPlayerFunc(JoinFunc)
  163.     netgame.SetByePlayerFunc(ByeFunc)
  164.     netgame.SetStringUserFunc(ReadUserString)
  165.     
  166.     def PlayerHurt( VictimName, AttackerName, Life, prevLife):
  167.         global PlayersList
  168.         print VictimName+" <- "+AttackerName+" Life:"+`Life`+" Previous life:"+`prevLife`
  169.         if Life <= 0:
  170.             if prevLife >= 0:
  171.                 x = SearchPlayerDescriptor(AttackerName)
  172.                 if x != -1:
  173.                     PlayersList[x][6] = PlayersList[x][6]+1
  174.                     print VictimName+" killed by "+AttackerName
  175.                     print AttackerName+" "+`PlayersList[x][6]`+" frags"
  176.                     FillFrags()                                
  177.                     ReSpawPlayer(VictimName)
  178.                     #Bladex.AddScheduledFunc(Bladex.GetTime()+15.0,ReSpawPlayer,(VictimName,))
  179.                 else:
  180.                     print "Error, "+AttackerName+"Not found"
  181.     
  182.     Damage.PlayerHitFunc = PlayerHurt
  183.     
  184.     FillFrags()
  185.     
  186.     print "Server:DeathMatch Mode"
  187.     #--------------------[ /\ Server Deathmatch module /\ ]--------------------------#
  188. else:
  189.     #--------------------[ \/ Client deathmatch module \/ ]--------------------------#
  190.     def ReadUserString(id,type,cad):
  191.         print `type`+" : "+cad
  192.         if(type==0):
  193.             wPlayersFrags.SetText(cad)
  194.             
  195.     
  196.     netgame.SetStringUserFunc(ReadUserString)
  197.     cam = Bladex.GetEntity("Camera")
  198.     cam.PViewType = 3
  199.     print "Client:DeathMatch Mode"
  200.     #--------------------[ /\ Client deathmatch module /\ ]--------------------------#