Author Topic: [Tutorial] Script à 2 objectifs !  (Read 1471 times)

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« on: July 02, 2004, 12:44:31 PM »
Bon, ba, je sais que beaucoup de mappeurs cherche des scripts pour 2 objectifs, donc, ba, en voici un :

//**********************************************************
//******Légende*********************************************
//**********************************************************

- Les écritures en BLEU sont les explications, elles ne sont pas à mettre dans le script.

- Les écritures en GRAS sont les commandes que vous devez changer par les "configurations" de votre map.

SCRIPT : (Ne pas prendre le Quote, lol)

Quote


// Script pour une map à 2 objectifs
// Scripting by [NCC] ® Zaitsev-Snake007.Fr ©™
// Site du [NCC] : http://www.neocrusadeclan.com/

main:

         setcvar "g_obj_alliedtext1" "Votre texte"
         setcvar "g_obj_alliedtext2" "d'information"
         setcvar "g_obj_alliedtext3" "sur les objectifs"
         setcvar "g_obj_axistext1" "Votre texte"
         setcvar "g_obj_axistext2" "d'information"
         setcvar "g_obj_axistext3" "sur les objectifs"

         setcvar "g_scoreboardpic" "none"

         level waittill prespawn


         exec global/DMprecache.scr
         exec global/door_locked.scr::lock     //***Ligne de commande pour les portes fermées
         level.script = maps/obj/NOM_DE_VOTRE_MAP.scr
         exec global/ambient.scr
         thread global/exploder.scr::main


         level waittill spawn


         level.defusing_team = "axis" //*** Qui protège les objectifs ("axis" or "allies")

         level.planting_team = "allies" //*** Qui pose la bombe ("axis" or "allies")

         level.targets_to_destroy = 2 //*** Nombre d'objectifs

         level.bomb_damage = 200 //*** Ce qu'inflige les explsions

         level.bomb_explosion_radius = 2048 //*** Rayon d'intensité des explosions

         level.dmrespawning = 0 //*** (Pas de respawns = 0 ; Avec respawns = 1)

         level.dmroundlimit = 5 //*** Temps d'un round

         level.clockside = axis //*** Equipe qui gagne par le temps



         // level waittill roundstart   //*** Les 2 "//" devant le "level waittill roundstart" N'ont pas grande utilité, mise - à - part que avec ceci, vous pouvez posez les bombes, même quand vous êtes tout seul sur la map (UTILE quand vous creez une map à objectifs, pour tester...)


$Nom_Trigger_1ere_Objectif thread   global/obj_dm.scr::bomb_thinker
thread bomb1_exploded $Nom_Trigger_1ere_Objectif
$Nom_Trigger_2eme_Objectif thread global/obj_dm.scr::bomb_thinker
thread bomb2_exploded $Nom_Trigger_2eme _bjectif
thread allies_win_bomb $Nom_Trigger_1ere_Objectif $Nom_Trigger_2eme_Objectif
$Nom_Trigger_1ere_Objectif $Nom_Trigger_2eme_Objectif  thread axis_win_timer


   end //*** Fin de la partie MAIN



//*** --------------------------------------------
//*** "Allies Victory"
//*** --------------------------------------------

allies_win_bomb local.bomb1 local.bomb2:

   while (local.bomb1.exploded != 1)
  wait .1
   while (local.bomb2.exploded != 1)
  wait .1

   teamwin allies

end


//*** --------------------------------------------
//*** "Axis Victory"
//*** --------------------------------------------


axis_win_timer:

   level waittill axiswin

end


//*** --------------------------------------------
//*** "Bomb 1 Exploded"
//*** --------------------------------------------


bomb1_exploded local.bomb1:
while (local.bomb1.exploded != 1)
wait .1
iprintlnbold "PREMIER OBJECTIF DETRUIT"
$spawn_axis2 disablespawn
$spawn_axis3 enablespawn

end


//*** --------------------------------------------
//*** "Bomb 2 Exploded"
//*** --------------------------------------------


bomb2_exploded local.bomb2:
while (local.bomb2.exploded != 1)
wait .1
iprintlnbold "DEUXIEME OBJECTIF DETRUIT"
$spawn_axis2 disablespawn
$spawn_axis3 enablespawn

end





Voili Voilou, si il y a des questions, je suis à vous.  ;)

PS : Il est possible que j'eusses insérer une faute par erreur, dans ce cas, signalez-là ;)
« Last Edit: July 05, 2004, 03:28:37 PM by Zaitsev-Snake007 »
Signé Ang3^
Map (Crashed) : Rebooting...

Le-pitivier

  • Apprenti poseur de brushs
  • **
  • Posts: 99
[Tutorial] Script à 2 objectifs !
« Reply #1 on: July 25, 2004, 11:39:14 AM »
Et si on souhaite un objectif allie et axe? comment fais t'on?

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #2 on: August 26, 2004, 01:05:16 AM »
Script de "Marseille", je le prépare... veuillez patientez :P
Signé Ang3^
Map (Crashed) : Rebooting...

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #3 on: August 26, 2004, 08:59:23 PM »
Et si tu veux que tes 2 bombes soient télécommandées, dans la style de la première mission de médal (opération Torch), comment tu l'adaptes?
« Last Edit: August 26, 2004, 08:59:45 PM by jules »
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #4 on: August 26, 2004, 10:44:26 PM »
Je ne comprends pas. Télécommandées ?  :unsure:  ^^/  
Signé Ang3^
Map (Crashed) : Rebooting...

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #5 on: August 27, 2004, 12:26:15 PM »
La bombe avec une antenne qu'il faut poser sur le cul des chars tigres et qui n'explose que lorsque tout a été mis en place.
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #6 on: August 27, 2004, 01:05:04 PM »
Ca, je ne sais pas, mais, je vais chercher, je te tiens au courant ;)
Signé Ang3^
Map (Crashed) : Rebooting...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Script à 2 objectifs !
« Reply #7 on: August 27, 2004, 01:36:59 PM »
c'est tres simple. Tu ne dois pas utiliser de prefab pour ca. utile "parm.other" pour designer le joueur. par exemple:

if (parm.other.dmteam == "allies" && level.bombe == 0)
{
//le jouer est un allie et la bombe n'est pas posée

$bombe model machinchose //trouve le bon model
$bombe loopsound tictac //pour que ca fasse "tic tac".
}

Ma carte comportera un objtectif comme ca. si tu veux, contacte-moi sur msn et je te passe le script. mais attention: si tu le pompe, j'veux mon nom dans le scripting!!! :rolleyes:  

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #8 on: August 27, 2004, 02:58:09 PM »
J'y connait pas grand chose en scripting, mais si tu mets
Quote
$bombe loopsound tictac
Dès que le joueur va poser sa 1ère charge, ne va-t-il pas y avoir un tictac continuel jusqu'à ce que la deuxième bombe soit posée. Si c'est le cas, un, ça va être très désagréable, et deux, plus d'effet de surprise jusqu'a ce que la dernière bombe soit posée, où là il doit y avoir le tictac...
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Script à 2 objectifs !
« Reply #9 on: August 27, 2004, 05:00:17 PM »
Je n'ai fait qu'abrger le script, a toi de te depatouiller pour faire la 2nd bombe! bon, allez, je t'aide

Quote
main:
XXXX
level.bombe1 = spawan script_model
level.bombe2 = spawn script_mode //bombes allies
level.bombeA = scpawn script_model //bombe axe

level.temps = 30 //30secondes avant le boum!

level.bombe1_pose = 0 //bombe 1 non posee
level.bombe2_pose = 0 //bombe 2 non posee
level.bombeA_pose = 0 //bombeA non posee

end


//le trigger de la bombe1:

bombe1:
if (parm.other.dmteam == "allies" && level.bombe1_pose == 0)
{
//c'est un allie et la bombe 1 n'est pas en place

level.bombe1 model XXX //le model de la radiobombe
level.bombe1_pose = 1
thread bombe_allie
}

if (parm.other.dmteam == "axis" && level.bombe1 == 1)
{
//c'est un axe et la combe 1 est posee
level.bombe1 model YYY //radiobombe rouge clignotante
level.bombe1_pose = 0
}
end

bombe2:
if (parm.other.dmteam == "allies" && level.bombe2_pose == 0)
{
//c'est un allie et la bombe 2 n'est pas en place

level.bombe2 model XXX //le model de la radiobombe
level.bombe2_pose = 1
thread bombe_allie
}

if (parm.other.dmteam == "axis" && level.bombe2 == 1)
{
//c'est un axe et la combe 2 est posee
level.bombe2 model YYY //radiobombe rouge clignotante
level.bombe2_pose = 0
}
end

bombe_allie:
if (level.bombe1_pose == 1 && level.bombe2_pose == 1)
{
//les deux bombes sont en place

if (level.temps == 30) //le temps restant est de 30sec, on vient de poser les bombes
$player playsound XXX //"la charge est en place", trouve le bon texte

if (level.temps >=11)
{
//encore plus de 11secondes compris
level.bombe1 playsound tictac //c'est pas tictac le vrai mais bon, tu me comprend
level.bombe2 playsound tictac
level.temps = level.temps - 1
goto bombe_allie
end
}

if (level.temps <= 10)
{
//10secondes
level.bombe1 playsound bib //le TUUUUT quand y reste que 10sec
level.bombe2 playsound bib //de meme
level.temps = level.temps - 1
goto bombe_allie
end
}

if (level.temps == 0)
{
//plus de temps!
level.bombe1 model EXPLOSION.tik //BOUUUUUUM!
level.bombe2 model EXPLOSION.tik //BOOOOOOOOOM!
wait 3
teamwin allies //allies gagnent!
}
end

« Last Edit: August 27, 2004, 05:00:41 PM by snaky »

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Script à 2 objectifs !
« Reply #10 on: August 27, 2004, 05:01:06 PM »
script sous copyright!!! :D  

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #11 on: August 27, 2004, 05:06:52 PM »
Le model de la bombe télécommandée, c'est:
animate_item_radiobomb-pickup-pulsating
Si je ne me plante pas.

 
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #12 on: October 05, 2004, 11:53:25 AM »
J'arrive a faire ces objectifs là maintenant, je me suis aidé des BANGALORES d'omaha beach, tout une journée lol, ca m'a pris, mais le résultat est on ne peux plus éxellent :P

Je ferais un tutorial la-dessus, dans 1 semaine, peut'être si j'ai le temps ;)
« Last Edit: October 05, 2004, 11:54:15 AM by Zaitsev-Snake007 »
Signé Ang3^
Map (Crashed) : Rebooting...

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #13 on: October 05, 2004, 12:03:41 PM »
Sur ton script pour deux objectifs, est-ce qu'il y a moyen de régler le temps avant que la charge explose une fois qu'elle a été posée? Par ce que je souhaiterais faire varier ce délai entre les deux bombes.
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #14 on: October 05, 2004, 12:44:31 PM »
Je ne connais pas la commande, mais je vais chercher je te tiens au courant, je m'y met de suite ;)
Signé Ang3^
Map (Crashed) : Rebooting...

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #15 on: October 05, 2004, 12:47:45 PM »
Merci :wub:  
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #16 on: October 05, 2004, 01:04:15 PM »
J'ai cherché un peu, et j'ai trouvé ça :

(local.start_time + level.bomb_tick_time - 10)

Je sais pas si c'est ça, mais je vais faire des test ;)
Signé Ang3^
Map (Crashed) : Rebooting...

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Script à 2 objectifs !
« Reply #17 on: October 05, 2004, 01:40:56 PM »
Voilà : je suis pas sûr mais bon)

Tu rajoutes ça dans level waitill spawn

   level.bomb_defuse_time = 60 //tenths of a second
   level.bomb_set_time = 50  //tenths of a second
   level.bomb_tick_time = 45  //seconds (was 60 seconds, then 30 seconds)

Ensuite, il faut tester pour avoir de bonnes valeurs ;)

Résultat du test : Rien ne change, bizarre...  hummm  
« Last Edit: October 05, 2004, 02:09:26 PM by Zaitsev-Snake007 »
Signé Ang3^
Map (Crashed) : Rebooting...

jules

  • Squatteur de forum
  • Posts: 2182
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #18 on: October 05, 2004, 03:08:37 PM »
Quote
Résultat du test : Rien ne change
ça peut être génant hummm  
Veni, vidi, vici (un autre Jules)
Alors que moi, je suis venu, j'ai vu et... ils m'ont vaincu...

N'oubliez pas de cliquer là!

Danker

  • Legomaniaque
  • Posts: 1025
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #19 on: November 05, 2004, 04:19:24 PM »
Quote
Sur ton script pour deux objectifs, est-ce qu'il y a moyen de régler le temps avant que la charge explose une fois qu'elle a été posée? Par ce que je souhaiterais faire varier ce délai entre les deux bombes.
J'ai personnellement beaucoup travaillé sur le obj_dm.scr, et je vais vous expliquer comment régler certains paramètres :

Tout d'abord voici le thread auquel vous faites référence lorsque vous écrivez
$trigger thread global/obj_dm.scr::bomb_thinker
(j'ai rajouté des explications en plus de celles qui y sont déja !)

=====================================================

bomb_thinker:
// Steve says planting time = 6 seconds //Steve dit n'importe quoi.. (lol)
// defusing time = 12 second
// tick time = 36 seconds
   level.bomb_set = 0 //Cette variable est éronnée dans ce script car celui qui l'a écrit s'est trompé de commande pour l'incrémentation et la décrémentation en fontion de l'amorcage ou du désamorçage de la bombe...
Au départ elle aurait du servir a savoir si la bombe est posée ou pas ! (ps : elle est supprimée dans le script correcteur d'un des patch multi me moh) Mais bon là n'est pas notre problème, passons a la suite !


   level.bomb_defuse_time = 60 //tenths of a second //Cette valeur est en dixième de secondes et correspond au temps que l'on met pour désamorcer la bombe !

                level.bomb_set_time = 50  //tenths of a second //Cette valeur est en dixième de secondes et correspond au temps que l'on met pour amorcer la bombe !

   level.bomb_tick_time = 45  //seconds (was 60 seconds, then 30 seconds) // C'est la durée du tic-tac (BIP-BIP final compris) ; pour changer la durée du BIP-BIP final, il faut aller changer le nombre qui est de 10 dans la ligne dont a parlé Zeitsez un peu plus haut dans le sujet ! (Scripteurs non confirmés s'abstenir :P !)

//   level.wait_after_explode = 2  //seconds time after target is destroyed before the level ends (no longer used, done in code now) //on s'en fout ça existe plus...

   level.bomb_explosion_radius = 1054  //quake units //bon ca vous connaissez

   level.bomb_use_distance = 128 //quake units// ça c'est pour savoir a quelle distance maximale du trigger de la bombe vous pouvez rester pour l'activer!

   level.bomb_damage = 200 // ca vous connaissez aussi !

   level.bombusefov = 30 // cela définit un angle d'utilisation pour le trigger de la bombe ; je vous en dirait pas plus car dans le détail je ne sais pas a quoi ca correspond !

   level.subtitleX = 100
   level.subtitleY = 50 //ces 2 variables servent pour savoir où écrire les massages du genre : bombe posée ! , etc... (commande locprint)


   println "----------------------Z-----------------------"
   println "self = " self
   println "self.target (flak 88 or other) = " self.target
   println "self.target.destroyed_model = " self.target.destroyed_model
   println "self.target.target (collision entity) = " self.target.target
   println "self.trigger_name = " self.trigger_name
   println "self.exploder_set = " self.exploder_set
   println "self.explosion_fx = " self.explosion_fx
   println "self.explosion_sound = " self.explosion_sound
   println "self.killarea = " self.killarea
   println "----------------------Z-----------------------"

   self.target.collisionent = self.target.target
   self.target notsolid
   thread bomb_waittill_set
end

=====================================================

Bon très bien maintenant que vous savez tout :

--> Soit vous reproduisez le obj_dm.scr et vous changez les valeurs dont j'ai parlé plus haut... puis vous placez votre nouveau obj_dm.scr dans un dossier global dans votre pk3 ! Note : il vaut mieu le renommer pour pas qu'il n'y ait de confusion avez les autres obj_dm.scr (l'original et le corrigé), auquel cas il ne faudra pas mettre
$trigger thread global/obj_dm.scr::bomb_thinker MAIS
$trigger thread global/objectif.scr::bomb_thinker (si vous le renommez objectif.scr )

--> Soit vous reprenez toutes les variables et leurs valeurs situées au dessus des println "blablabla" et vous les mettez sous level waittill prespawn dans votre script. Puis a la place du traditionnel
$trigger thread global/obj_dm.scr::bomb_thinker, vous mettez :
$trigger thread global/obj_dm.scr::bomb_waittill_set

Voilà il me semble que j'ai tout expliquer, maintenant a mon tour de poser des questions  :P !

J'ai fait une bombe tout ce qu'il y a de plus normal et j'ai fait executer le obj_dm.scr ! Alors tout se passe bien mais le problème c'est qu'aucun dégat n'est infligé aux joueurs! Est-ce parceque ma bombe est en partie confondue dans un clip ou cela vient-il d'ailleur ? Merci ! ;)
« Last Edit: November 05, 2004, 04:24:24 PM by Danker »
De l'éducation les racines sont amères... Mais le fruit est doux !


Danker

  • Legomaniaque
  • Posts: 1025
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #20 on: November 10, 2004, 12:12:28 PM »
C'est bon, c'est rectifié, je crois qu'en fait c'est parceque je n'avais pas mis les valeurs dans level waittill spawn mais dans level waittill presapwn...
Il faut donc mettre les variables a propos de l'explosion dans le level waittill spawn !
De l'éducation les racines sont amères... Mais le fruit est doux !


snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Script à 2 objectifs !
« Reply #21 on: November 19, 2004, 06:44:23 PM »
unvalide waittill "spawn" for class "level".
Ca me met ca (ou a peu pres) dans la console, chaques fois que je met "level waittill spawn", c'est normal?

Danker

  • Legomaniaque
  • Posts: 1025
    • http://
[Tutorial] Script à 2 objectifs !
« Reply #22 on: November 19, 2004, 07:05:15 PM »
Chaque fois que tu mets level waittill spawn où ? Et tu px jouer quand même où ca fait planter ?

Je ne suis pas sûr mais je crois qu'on ne peut mettre le level waittill spawn qu'après le level waittill prespawn (ces repères sont à mettre obligatoirement dans tout script, mais tu dois le savoir  ;)  ) !! Après tu px si tu vx mettre le level waittill roundstart.
Voilà c'est tout ce que je px dire...
De l'éducation les racines sont amères... Mais le fruit est doux !


snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Script à 2 objectifs !
« Reply #23 on: November 19, 2004, 07:52:09 PM »
je crois qu'il n'y a aucune influance mais bon, ca fait desordre!
en effet, je n'avais pas mis de "prespawn", on va bien voir si ca retire ce bugg...

Qui peut me rendre un service? Faudra sois trouver des paroles que je vous dicte, sois les faire vous-meme (G plus de micro, dsl  :( )
« Last Edit: November 19, 2004, 07:53:43 PM by snaky »

Laurent

  • Tailleur de maps
  • Posts: 363
[Tutorial] Script à 2 objectifs !
« Reply #24 on: November 20, 2004, 10:55:05 AM »
euh erreur de syntaxe ou autre pk3 foutant le zouc....?

je vois pas pourquoi level waittill spawn provoquerait une erreur, où qu il soit placé dans un script....
c est juste une commande de base identique a self waittill death : on attend un evenement particulier sur un objet, et a priori level existe :)...

Quote
main:

//---------------------
level waittill prespawn//<- des que le bsp est chargé en memoire
//---------------------

level.script = obj_mamap.scr

//loading game parameters
//alias-cache des sons

//------------------
level waittill spawn //<-premier gars en spectateur active ca
//------------------

//preparation des parametres selon le niveau
//lancement des scripts d objets type ascensceur, etc
//lancement des sons

//-----------------------
level waittill roundstart//<- des que 1 joueur "ingame" dans chaque camp
//-----------------------

//activation des objectifs...
//lancement des threads de victoires....waiting for victory... :)

end
//---------------END OF MAIN SCRIPT----------------------------------



« Last Edit: December 30, 2004, 10:13:46 PM by Laurent »