Quote
Quote
Mi dispiace, non riesco a trovare l'errore...
Comunque hai un mp
cmq evitiamo post inutili tipo: mi disp nn saprei" che sono totalmente inutili
già è stato detto
cmq speriamo che wesser legga lo script [/b]
E tu evita di fare il finto moderatore
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#22
Inviato il 07 agosto 2009 - 19:34
- Non hai bisogno di inserire l'opcode "0256" (player_defined) se lo hai precedentemente utilizzato. Se la prima volta la condizione è vera, non vedo perchè ricontrollare se l'attore è nuovamente definito (nel senso che è movibile).
- Non vi è modo per cui aggiunga nuovamente, per due volte, l'opcode "00FF" che controlli se CJ si trovi nelle vicinanze delle stesse coordinate (magari ce ne inserisci uno simile al primo utilizzato ma con coordinate differenti).
- Valori "wait" maggiori di "0" inutili da inserire all'interno di un loop. E' preferibile utilizzare sempre lo "0".
- "if and" inutile se non seguito da una condizione.
- Non hai inserito il "jump_if_false" dopo la condizione che controlli se il player abbia raggiunto o meno determinate coordinate ad un determinato raggio (da inserire al posto del comando "if" di cui ti ho appena parlato).
- Numerazione variabili incorretta, per cui, per un miglior ordine, iniziarle da "0" od "1" e proseguire.
- Variabile marker incorretta. Non puoi utilizzare lo stesso numero di essa che hai utilizzato per il pedone.
- Valore arma "30" non corrispondente all'mp5, quindi utilizzare "29". Per qualunque aiuto in merito a valori di qualsiasi genere e di ogni opcode, in Sanny Builder, andare su "Aiuto->Guida in linea->SCM Documentation->GTA SA".
- Inutile inserire l'opcode "0850" (as_actor_follow_actor) se si utilizza lo "05E2" (as_actor_kill_actor). In teoria, se un pedone è intenzionato ad eliminarne un altro, deve pur seguirlo per ucciderlo o sbaglio? No, non di certo.
- Meglio utilizzare l'opcode "0249" (model_destroy) al termine dello script, ond'evitare problemi di visibilità del modello e quindi della sua presenza o meno.
- Non utilizzare mai l'opcode "004E" ma lo "0A93" in cleo, altrimenti il codice potrebbe crashare o non funzionare correttamente.
{$CLEO} thread 'MODL' :MODL_11 wait 0 if Player.Defined($PLAYER_CHAR) jf @MODL_11 if 00FF: actor $PLAYER_ACTOR sphere 1 in_sphere 2491.5 -1667.5 13.35 radius 1.0 1.0 1.0 on_foot jf @MODL_11 Model.Load(#CELLPHONE) :MODL_84 wait 0 if Model.Available(#CELLPHONE) jf @MODL_84 0729: AS_actor $PLAYER_ACTOR hold_cellphone 1 03BF: set_player $PLAYER_CHAR ignored_by_everyone 1 0489: set_actor $PLAYER_ACTOR muted 1 wait 5000 0729: AS_actor $PLAYER_ACTOR hold_cellphone 0 03BF: set_player $PLAYER_CHAR ignored_by_everyone 0 0489: set_actor $PLAYER_ACTOR muted 0 :MODL_151 Model.Load(#WMYDRUG) Model.Load(#FAM1) Model.Load(#COLT45) Model.Load(#MP5LNG) :MODL_294 wait 0 if and Model.Available(#WMYDRUG) Model.Available(#FAM1) Model.Available(#COLT45) Model.Available(#MP5LNG) jf @MODL_294 1@ = Actor.Create(CivMale, #WMYDRUG, 2370.005, -1648.368, 13.53569) 2@ = Actor.Create(CivMale, #FAM1, 2370.002, -1646.136, 13.52261) 3@ = Marker.CreateAboveActor(1@) 4@ = Marker.CreateAboveActor(2@) 01B2: give_actor 1@ weapon 22 ammo 9999 // Load the weapon model before using this 01B2: give_actor 2@ weapon 29 ammo 9999 // Load the weapon model before using this Actor.Health(1@) = 70 Actor.Health(2@) = 70 05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR 05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR :MODL_480 wait 0 if Actor.Dead(1@) jf @MODL_506 Actor.RemoveReferences(1@) Marker.Disable(3@) :MODL_506 if Actor.Dead(2@) jf @MODL_537 Actor.RemoveReferences(2@) Marker.Disable(4@) :MODL_537 if and Actor.Dead(1@) Actor.Dead(2@) jf @MODL_480 Model.Destroy(#WMYDRUG) Model.Destroy(#FAM1) Model.Destroy(#COLT45) Model.Destroy(#MP5LNG) 0A93: end_custom_thread
Dopo tutto, sono stufo di vedere sempre gli stessi script, adottando sempre il copia-incolla. Me ne accorgo subito perchè sono sbagliati allo stesso modo di quelli della guida di ~>Snake95<~. Bisogna cercare di capire, non di voler creare una mod per il piacere di vederla scaricare. <_<
Questa è la parte del codice incriminata.
:MODL_480 wait 150 if Actor.Dead(1@) else_jump @MODL_480 Actor.RemoveReferences(1@) Marker.Disable(4@) :MODL_506 wait 150 if Actor.Dead(2@) else_jump @MODL_506 Actor.RemoveReferences(2@) Marker.Disable(5@) end_thread
Il "jump" della condizione, ovvero il "jump_if_false", ritorna sempre al label del thread in cui è contenuto (es. "MODL_480\506"), quindi occorre che muoia prima di tutti il primo attore per eliminare il segnale o "marker" del secondo (se è deceduto) ed ovviamente anche il suo riferimento, altrimenti il pedone rimarrà perennemente per terra.
Questa, invece, è la soluzione più conveniente ed efficente.
5@ = 0 :MODL_480 wait 0 if Actor.Dead(1@) else_jump @MODL_506 Actor.RemoveReferences(1@) Marker.Disable(3@) 5@ += 1 :MODL_506 if Actor.Dead(2@) else_jump @MODL_537 Actor.RemoveReferences(2@) Marker.Disable(4@) 5@ += 1 :MODL_537 if 5@ == 2 else_jump @MODL_480 0A93: end_custom_thread
Ho voluto che inparassi a strutturarlo diversamente perchè, come è possibile vedere, ho inserito un contatore di uccisioni effettuate.
#23
Inviato il 30 agosto 2009 - 21:02
#24
Inviato il 01 settembre 2009 - 20:11
Ultima domanda correlata a questo argomento: ma mi basta soltanto il file .cs per far si che funzioni? Io direi di si giusto?
#25
Inviato il 02 settembre 2009 - 11:24
Voglio fare uno script che:
- Mette un segnale sulla mappa in un certo punto.
- Quando vai lì vieni teletrasportato a delle coordinate.
- Il segnale sulla mappa viene rimosso, ma ne viene aggiunto un altro a delle "altre coordinate".
- Se vado alle "altre coordinate", il segnale sparisce.
- Voglio anche che sul punto in cui devo andare ci sia la classica "sfera" rossa...
Il codice che ho fatto (coordinate alla cazzo, è solo un esempio):
Il problema è che:
- I segnali sulla mappa non spariscono.
- La prima "sphere" rossa non appare.
- Non funzionano gli "show text box".
Per i Text Box:
Ho fatto con il notepad un file che ho salvato con estensione .fxt
Dentro ci ho scritto:
Msg1 Welcome Msg2 Drive to destination
Ma ingame le scritte non vengono caricare....
Sai aiutarmi con tutti questi problemoni?
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#26
Inviato il 02 settembre 2009 - 19:58
- Potrebbe essere un bug dello script. Per aggirarlo, evita di inserire l'opcode "02A8" in un loop, se la sua variabile (locale o globale che sia) è già stata definita dal medesimo.
- Il primo sphere non compare perchè hai impostato il wait a 1000, quindi ad 1 secondo. Devi inequivocabilmente impostarlo a 0 se vuoi che compaia.
- Per far sì che i testi dei file .fxt vengano letti, è necessario installare il plug-in cleo denominato "GXT Hook" ed averli inseriti in "CLEO\cleo_text". E' possibile scaricarlo dal sito ufficiale oppure prelevandolo dalla cartella "tools\CLEO3\plugins\gxthook", del Sanny Builder. Se vuoi inserire una text box permanente, utilizza l'opcode "0512".
- Come detto, evita di inserire opcode in un loop, se possono essere dichiarati anche una sola volta.
- I "wait" di troppo possono causare il mal funzionamento dello script. Meno se ne utilizzano, megliore sarà la lettura ed il profitto.
- Cerca di utilizzare variabili locali se esse non hanno bisogno di essere richiamate da altri thread, altrimenti utilizza quelle globali.
- Non hai bisogno di inserire il "jump" se il label impostato è praticamente il successivo. Il codice che segue verrà letto comunque.
- Non puoi inserire, come condizione, la dichiarazione di una variabile (riferendomi al secondo $ONMISSION). E' importante rispettare i segni:
- "=" per la dichiarazione.
- "==" per la condizione.
- "=" per la dichiarazione.
{$CLEO .cs} thread 'DOD' 02A8: 0@ = create_marker 26 at -1677.428 552.619 39.0109 03E5: show_text_box "MSG1" :DOD_1 wait 0 if and $ONMISSION == 0 00FE: actor $PLAYER_ACTOR sphere 1 in_sphere -1677.428 552.619 39.0109 radius 5.0 5.0 5.0 jf @DOD_1 0164: disable_marker 0@ 02A8: 1@ = create_marker 26 at -1694.428 568.619 39.0109 03E5: show_text_box "MSG2" 00A1: put_actor $PLAYER_ACTOR at -1676.428 551.619 38.0109 $ONMISSION = 1 :DOD_2 wait 0 if and $ONMISSION == 1 00FE: actor $PLAYER_ACTOR sphere 1 in_sphere -1694.428 568.619 39.0109 radius 5.0 5.0 5.0 jf @DOD_2 0164: disable_marker 1@ 0A93: end_custom_thread
Luigi96, mi spiace. Rileggi il primo post per aggiornamenti.
#27
Inviato il 02 settembre 2009 - 20:16
Ma siccome sono un rompiballe ho un' altra domanduccia....
Quando mi teletrasporto con
00A1: put_actor $PLAYER_ACTOR at xxxxxxxx
non mi mette allo Z Angle corretto...
Io aggiungo questo:
0173: set_actor $PLAYER_ACTOR Z_angle_to 315.1793
Eppure lo Z Angle non cambia
PS: non funziona se sono in macchina, a piedi funge....come faccio a fare sì che mi ruoti anche se sono su un veicolo?
Helpami
Grazzzie
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#28
Inviato il 03 settembre 2009 - 19:43
E' normale che quell'opcode funzioni solo se si è "a piedi" e non in auto, perchè e attribuibile solo ad un pedone\player. Cerca di creare un check del tipo:
if 00DF: actor $PLAYER_ACTOR driving then 03C0: 0@ = actor $PLAYER_ACTOR car 0175: set_car 0@ Z_angle_to 315.1793 else 0173: set_actor $PLAYER_ACTOR Z_angle_to 315.1793 end
Oppure, imposta come condizione che controlla se si ha raggiunto una determinata destinazione, l'opcode "00FF" (a piedi) o lo "0100" (in auto).
#29
Inviato il 03 settembre 2009 - 20:15
Quote
Ma perchè hai eliminato la richiesta precedente? Io non rispondevo perchè tu avevi intenzione di creare una gara, infatti la stavo preparando.
E' normale che quell'opcode funzioni solo se si è "a piedi" e non in auto, perchè e attribuibile solo ad un pedone\player. Cerca di creare un check del tipo:
if 00DF: actor $PLAYER_ACTOR driving then 03C0: 0@ = actor $PLAYER_ACTOR car 0175: set_car 0@ Z_angle_to 315.1793 else 0173: set_actor $PLAYER_ACTOR Z_angle_to 315.1793 end
Oppure, imposta come condizione che controlla se si ha raggiunto una determinata destinazione, l'opcode "00FF" (a piedi) o lo "0100" (in auto).
Grazie, dopo provo
Ho eliminato quella precedente perchè ero riuscito a risolvere alcuni di quei problemi XD
EDIT: era proprio quel codice che dovevo mettere
Grazie
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#31
Inviato il 04 settembre 2009 - 12:42
Ho risolto il problema settando che la missione inizia solo se:
00DD: actor $PLAYER_ACTOR driving_car_with_model #ELEGY
L'altro problema però, è che voglio fare in modo che se il player non è nel veicolo parte un contro di 30 secondi, alla fine dei quali la missione è fallita.
So come farlo +o- , ma non so come far si che questa condizione sia continua senza dover sempre inserire un jump al label della condizione in tutti gli altri label.... è possibile?
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#32
Inviato il 04 settembre 2009 - 23:24
Quote
Se vorrei mettere un pedone ad un posto e in quel posto fuma che codice devo mettere?
Prima di spawnarlo, devi caricare il suo modello e controllare se esso è stato caricato con successo, caricare quello della cigaretta, controllarlo ed attaccarlo al pedone. Per l'animazione, occorre che tu faccia lo stesso procedimento, tranne che al posto dello spawn devi assegnargli un'animazione, come di sotto riportato:
{$CLEO} :PEDSPWN thread 'PEDSPWN' :PEDSPWN_5 0247: load_model #WMYAMMO 0247: load_model 3044 04ED: load_animation "GANGS" :PEDSPWN_11 wait 0 if and 0248: model #WMYAMMO available 0248: model 3044 available 04EE: animation "GANGS" loaded jf @PEDSPWN_11 009A: 0@ = create_actor_pedtype 4 model #WMYAMMO at 0.0 0.0 0.0 00A0: store_actor 0@ position_to 1@ 2@ 3@ 0107: 4@ = create_object 3044 at 1@ 2@ 3@ 070A: AS_actor 0@ attach_to_object 4@ offset 0.0 0.1 -0.02 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1 0605: actor 0@ perform_animation_sequence "SMKCIG_PRTL" IFP_file "GANGS" 1.0 loop 1 0 0 0 time -1 // versionA 0669: 5@ = attach_particle "EXHALE" to_actor 0@ with_offset 0.0 0.0 0.0 flag 1 0883: attach_particle 5@ to_actor 0@ mode 5 :PEDSPWN_15 wait 0 if 8118: not actor 0@ dead jf @PEDSPWN_21 if 0611: actor 0@ performing_animation "SMKCIG_PRTL" jf @PEDSPWN_21 0613: 6@ = actor 0@ animation "SMKCIG_PRTL" time if and 6@ >= 0.5 0.55 > 6@ jf @PEDSPWN_17 064C: make_particle 5@ visible :PEDSPWN_17 0613: 6@ = actor 0@ animation "SMKCIG_PRTL" time if 6@ >= 1.0 jf @PEDSPWN_15 0650: destroy_particle 5@ jump @PEDSPWN_15 :PEDSPWN_21 01C2: remove_references_to_actor 0@ 0108: destroy_object 4@ 04EF: release_animation "GANGS" 0650: destroy_particle 5@ 0A93: end_custom_thread
Jake, non è molto difficile crearlo. Guarda e te ne renderai conto.
:TIMER_1 wait 0 if 00DF: actor $PLAYER_ACTOR driving jf @TIMER_2 03D5: remove_text 'NUMBER' // ~1~ 2@ = 0 32@ = 0 jump @TIMER_1 :TIMER_2 1@ = 5000 0062: 1@ -= 2@ // (int) 1@ /= 1000 03F0: set_text_draw_enabled 1 01E5: show_text_1number_highpriority GXT 'NUMBER' number 1@ time 0 flag 1 // ~1~ if 32@ > 1000 jf @TIMER_3 2@ += 1000 32@ = 0 :TIMER_3 if 2@ > 5000 jf @TIMER_1 // Mission failed jump @TIMER_1
Al posto del gxt entry "NUMBER" potresti scriverne un altro, magari inserendolo in un file .fxt.
NO_VEH ~s~Hai ~1~ secondi per tornare al tuo veicolo.
#33
Inviato il 05 settembre 2009 - 09:46
Solo che ho avuto dei problemini con questo codice, visto che a causa della mia inettitudine non riuscivo a dagli valenza infinita all'interno della missione.
Problema che ho risolto tramite vie traverse
(il codice che ho fatto di sicuro non è ottimizzato, però funziona , x ora mi accontento ).
E poi non so perchè quel timer partiva da 5 ed andava sotto zero
Grazie degli aiuti
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#35
Inviato il 06 settembre 2009 - 11:55
In pratica: i piloti delle gare "si rifiutano" di correre sullo sterrato, e cercano in ogni modo di seguire le strade.
Io vorrei che seguissero il percorso + breve per arrivare al checkpoint
So che le informazioni delle strade dovrebbero essere in qualche file criptato o roba simile, ma non sono sicuro se devo per forza aggiungere una strada o posso farcela con la cleo.
Inoltre i piloti non fanno nemmeno inversioni a U, non vanno nemmeno contromano
Io ho settato:
00AE: unknown_set_car 5@ to_ignore_traffic_lights 2
Eppure il tizio in questione continua a fare il perfettino e a non fare l'inversione a U che mi serve
Sai aiutarmi?
"Alme Sol, curru nitido diem qui promis et celas aliusque et idem nasceris, possis nihil urbe Roma visere maius"
/
#36
Inviato il 06 settembre 2009 - 12:00
Ultima domanda correlata a questo argomento: ma mi basta soltanto il file .cs per far si che funzioni? Io direi di si giusto?
#37
Inviato il 06 settembre 2009 - 15:41
Quote
I piloti delle gare "si rifiutano" di correre sullo sterrato, cercano in ogni modo di seguire le strade, non fanno ne inversioni a U e non vanno nemmeno contromano.
Prova con l'opcode "00AE" come segue:
03C0: 0@ = actor 1@ car 00AE: set_car 0@ traffic_behaviour_to 3
fra700, non hai bisogno di creare uno script cleo per questo tipo di modifica. E' già stato spiegato in maniera accurata nella prima pagina. Forse non ho capito bene, ma la tua incomprensione si riferisce proprio a quel post?
#38
Inviato il 27 settembre 2009 - 21:49
Visita il forum: http://paradisecityrp.tk/
Paradise City Roleplay:
Nome: Curtis_Smoke
Città: Los Santos
Fazione: Cosanostra
Rank: Padrino
Anni: 21
Lavoro: Drug Dealer
Veicoli: Sultan, ZR, Buffalo
Livello: 3
#39
Inviato il 28 settembre 2009 - 09:44
- Caricare il modello dell'oggetto da spawnare.
- Controllare se è stato correttamente caricato, ond'evitare problemi di crash inerenti al medesimo fatto.
- Spawnare il modello (ed inserire i relativi parametri opzionali).
{$CLEO} :OBJSPWN thread 'OBJSPWN' :OBJSPWN_5 0247: load_model #NULL :OBJSPWN_11 wait 0 if 0248: model #NULL available jf @OBJSPWN_11 0107: 0@ = create_object #NULL at 0.0 0.0 0.0 end_thread
Al posto della dicitura #NULL, inserisci l'ID del modello, prelevandolo preferibilmente con il MEd.
#40
Inviato il 28 settembre 2009 - 21:35
Visita il forum: http://paradisecityrp.tk/
Paradise City Roleplay:
Nome: Curtis_Smoke
Città: Los Santos
Fazione: Cosanostra
Rank: Padrino
Anni: 21
Lavoro: Drug Dealer
Veicoli: Sultan, ZR, Buffalo
Livello: 3