annuncio

Comprimi
Ancora nessun annuncio.

[Script Training on ZHI] - Esempi, Guide, Suggerimenti

Comprimi
Questa è una discussione evidenziata.
X
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #46
    Mmm non ci ho fatto caso grazie

    Comunque è per provare i vari metodi che sto provando per ora

    edit.

    codice:
    ///////////////////
    //Script By Rikku//
    ///////////////////
    
    use uo;
    use polsys;
    
    program textcmd_all(who, text)
    
    var livello := GetCmdLevelNumber(who);
    
    if(livello > 1)
    
       Broadcast("[STAFF]" + who.name + " : " + text, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR);
       
    else
    
       Broadcast("[PLAYER]" + who.name + " : " + text, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR);
       
    endif
    endprogram
    Eccovi il codice completo

    ps. Dedicato a Libernaxe XD
    Ultima modifica di Athomico94; 16-01-2010, 15:18.


    Kaos nel cuore

    Commenta


    • #47
      Si può fare di meglio :P

      Continua così.
      Xeon |



      Commenta


      • #48
        Ho una domanda per gli esperti:

        Qual'è la funzione per far si che usa un oggetto?

        Trovata, è UseItem, però come viene usato nelle parenti? Tipo UseItem( item.bandage ?!?!?
        Ultima modifica di Athomico94; 16-01-2010, 15:38.


        Kaos nel cuore

        Commenta


        • #49
          Originariamente inviato da Athomico94 Visualizza il messaggio
          Ho una domanda per gli esperti:

          Qual'è la funzione per far si che usa un oggetto?

          Trovata, è UseItem, però come viene usato nelle parenti? Tipo UseItem( item.bandage ?!?!?
          Spiegati meglio. Vuoi far fare qualcosa in particolare ad un oggetto, oppure vuoi far attivare uno script usando un oggetto(ad esempio doppiocliccandolo)?

          Dukan of Delucia [Kaos] - Dweyn [CK]

          Commenta


          • #50
            Vorrei un comando come quello del bandageself.

            Come posso far si che lui mi trova automaticamente l'oggetto che gli dico io e mi cura?


            Kaos nel cuore

            Commenta


            • #51
              Originariamente inviato da Athomico94 Visualizza il messaggio
              Vorrei un comando come quello del bandageself.

              Come posso far si che lui mi trova automaticamente l'oggetto che gli dico io e mi cura?
              Allora potresti fare in questo modo:

              codice:
              use uo;
              
              program textcmd_bandageself(who)
              
              foreach bende in EnumerateItemsInContainer(who.backpack)
                if(bende.objtype == OBJTYPE BENDE)
                    //cura
                else
                  SendSysMessage(who,"Non hai bende, scemo.");
                endif
              endforeach
              
              endprogram
              ovviamente è molto semplificato e ha pochi controlli, però per esercitarsi questa forma va più che bene. Unica cosa che devi trovare è l'objtype delle bende

              Dukan of Delucia [Kaos] - Dweyn [CK]

              Commenta


              • #52
                Originariamente inviato da Dunkan89 Visualizza il messaggio
                Allora potresti fare in questo modo:

                codice:
                use uo;
                
                program textcmd_bandageself(who)
                
                foreach bende in EnumerateItemsInContainer(who.backpack)
                  if(bende.objtype == OBJTYPE BENDE)
                      //cura
                  else
                    SendSysMessage(who,"Non hai bende, scemo.");
                  endif
                endforeach
                
                endprogram
                ovviamente è molto semplificato e ha pochi controlli, però per esercitarsi questa forma va più che bene. Unica cosa che devi trovare è l'objtype delle bende
                Ti chiedo scusa, ma cosi come fa dire al personaggio che deve utilizzare le bende su me ?


                Kaos nel cuore

                Commenta


                • #53
                  Vabbè, visto che non è uno script molto semplice se hai iniziato ora a smanettare con il pol, te lo butto giù io al volo in una versione molto semplificata. Poi amplialo tu come vuoi .

                  codice:
                  use uo;
                  use util;
                  use os;
                  use vitals;
                  
                  include "include/client"; 
                  
                  program textcmd_bendageself(who)
                  
                  foreach item in EnumerateItemsInContainer(who.backpack)// questa funzione scorre tutti gli oggetti nel backpack. 
                     if(item.objtype == OBJTYPE BENDE) // se trova delle bende
                          Heal(who,item); // starta la funzione "HEAL" (non esiste, la creiamo noi). 
                  
                    else // se non ci sono bende mando un messaggio e termino lo script
                      SendSysMessage(who,"Non hai bende manco sta volta, scemo de novo o_o'");
                      return;
                  
                    endif
                  endforeach
                  
                  endprogram
                  
                  function Heal(pg,benda) // dichiaro la mia funzione
                  
                  var healing := CInt(GetEffectiveSkill(pg, SKILLID_HEALING ) / 10 ); // divido l'healing del pg per 10. in questo modo ... 
                  var healed := healing + RandomInt(50); // ... aggiungendo un valore random compreso tra 1 e 50, ho creato un algoritmo molto semplice per stabilire di quanto si curerà il pg.
                  
                  SendSysMessage(who, "You start to heal yourself.");
                  sleep(3); // delay di cura. l'ho messo fisso per non impicciarti troppo le idee, in realtà sarebbe diverso e terrebbe conto di piu fattori, come ad esempio se il pg viene colpito ( "your fingers slip...")
                  HealDamage(pg,healed); // curo i danni
                  SubtractAmount(benda, 1); // tolgo le bende usate ( NON mi sono preoccupato di creare quelle insanguinate volutamente. ti distrarrebbe dal capire il resto).
                  SendSysMessage(who, "You healed " + healed + " damage.");
                  
                  endfunction
                  Chiaramente questo script è una versione mooooooolto semplificata del vero bandageself. Ma penso che per farti capire come funziona il tutto sia più che sufficente. Se hai qualche domanda chiedi pure ^_^

                  p.s.: io ragiono con pol097, se non ti torna qualche funzione è probabilmente perchè usi una versione differente

                  Dukan of Delucia [Kaos] - Dweyn [CK]

                  Commenta


                  • #54
                    beh se le bende le ha gia' implementate ne puo' riciclare lo script :P
                    si riduce a

                    UseItem(FindObjtypeInContainer(who.backpack,%bende _pulite%),who);

                    Disclaimer: No personal data collected.
                    Accuracy: 100-150km on average :-ç
                    Ti dice di dove SEI :P a volte canna di
                    brutto - non raccoglie dati personali e la
                    risposta è visibile solo al soggetto esaminato

                    Commenta


                    • #55
                      anche, ma se vuole imparare a scriptare credo sia meglio si studi lo script per intero

                      Dukan of Delucia [Kaos] - Dweyn [CK]

                      Commenta


                      • #56
                        codice:
                        use uo;
                        use util;
                        use os;
                        use vitals;
                        
                        include "include/client";
                        
                        program textcmd_bendageself(who)
                        
                        foreach item in EnumerateItemsInContainer(who.backpack)// questa funzione scorre tutti gli oggetti nel backpack.
                           if(item.objtype == /*OBJTYPE BENDE*/) // se trova delle bende
                                Heal(who,item); // starta la funzione "HEAL" (non esiste, la creiamo noi).
                        
                          else // se non ci sono bende mando un messaggio e termino lo script
                            SendSysMessage(who,"Non hai bende manco sta volta, scemo de novo o_o'");
                            return;
                        
                          endif
                        endforeach
                        
                        endprogram
                        
                        function Heal(/*pg,benda*/) // dichiaro la mia funzione
                        
                        var healing := CInt(GetEffectiveSkill(pg, SKILLID_HEALING ) / 10 ); // divido l'healing del pg per 10. in questo modo ...
                        var healed := healing + RandomInt(50); // ... aggiungendo un valore random compreso tra 1 e 50, ho creato un algoritmo molto semplice per stabilire di quanto si curerà il pg.
                        
                        SendSysMessage(who, "You start to heal yourself.");
                        sleep(3); // delay di cura. l'ho messo fisso per non impicciarti troppo le idee, in realtà sarebbe diverso e terrebbe conto di piu fattori, come ad esempio se il pg viene colpito ( "your fingers slip...")
                        HealDamage(pg,healed); // curo i danni
                        SubtractAmount(benda, 1); // tolgo le bende usate ( NON mi sono preoccupato di creare quelle insanguinate volutamente. ti distrarrebbe dal capire il resto).
                        SendSysMessage(who, "You healed " + healed + " damage.");
                        
                        endfunction
                        LE parti dove ho messo /* e */ non l'ho capita...

                        Cioè l'OBJType la manca (dove lo posso trovare?)
                        E nella funzione pg e benda posso metterli in italiano senza problemi?


                        Kaos nel cuore

                        Commenta


                        • #57
                          Allora l'objtype è un numero unico che indica un determinato tipo di oggetto. Cioè ad esempio, l'objtype 23, indicherà tutte le accette ( non è così, ho sparato a caso, è solo per farti capire :P). Ovviamente non sono numeri fissi, cambiano da server a server e sono definiti nei vari itemdesc.cfg. Per trovare quello delle bende prova a dare un occhiata all'itemdesc nella cartella di healing, si trova in pol/pkg e nelle sue eventuali sottocartelle.

                          pg,benda -> sono PARAMETRI, ai quali puoi dare qualsiasi nome tu voglia, come per le variabili.

                          chiamando la funzione Heal in questo modo: Heal(who,item) , passo alla funzione heal (da noi creata) il riferimento sia al pg che alle bende. Poi, quando definisco la funzione, scrivendo:

                          function Heal(pg,bende) salvo nelle 'variabili' pg e bende i riferimenti al personaggio e alle bende... avrei potuto anche chiamarli in modo diverso ad esmepio

                          function Heal(pippo, pluto): in questo caso nella 'variabile' pippo, verrà salvato who, mentre in pluto, item.

                          Spero di essermi spiegato, se non ti è ancora chiaro chiedi pure

                          Dukan of Delucia [Kaos] - Dweyn [CK]

                          Commenta


                          • #58
                            Ah ok apposto cosi

                            Ora vedo per l'obj type

                            Comunque avevi commesso un errore e l'ho fixato

                            codice:
                            ///////////////////
                            //Script By Rikku//
                            ///////////////////
                            
                            use uo;
                            use util;
                            use os;
                            use vitals;
                            
                            include "include/client";
                            
                            program textcmd_bendageself(who)
                            
                            foreach item in EnumerateItemsInContainer(who.backpack)// questa funzione scorre tutti gli oggetti nel backpack.
                               if(item.objtype == 0x0e21) // se trova delle bende
                                    Heal(who,item); // starta la funzione "HEAL" (non esiste, la creiamo noi!)
                            
                              else // se non ci sono bende mando un messaggio e termino lo script
                                SendSysMessage(who,"Non hai bende manco sta volta, scemo de novo o_o'");
                                return;
                            
                              endif
                            endforeach
                            
                            endprogram
                            
                            function Heal(pg,benda) // dichiaro la mia funzione
                            
                            var healing := CInt(GetEffectiveSkill(pg, SKILLID_HEALING ) / 10 ); // divido l'healing del pg per 10. in questo modo ...
                            var healed := healing + RandomInt(50); // ... aggiungendo un valore random compreso tra 1 e 50, ho creato un algoritmo molto semplice per stabilire di quanto si curerà il pg.
                            
                            SendSysMessage(pg, "You start to heal yourself.");
                            sleep(3); // delay di cura. l'ho messo fisso per non impicciarti troppo le idee, in realtà sarebbe diverso e terrebbe conto di piu fattori, come ad esempio se il pg viene colpito ( "your fingers slip...")
                            HealDamage(pg,healed); // curo i danni
                            SubtractAmount(benda, 1); // tolgo le bende usate ( NON mi sono preoccupato di creare quelle insanguinate volutamente. ti distrarrebbe dal capire il resto).
                            SendSysMessage(pg, "You healed " + healed + " damage.");
                            
                            endfunction
                            xD
                            Ultima modifica di Athomico94; 17-01-2010, 17:05.


                            Kaos nel cuore

                            Commenta


                            • #59
                              si, vero, è che sono abiutato ad usare sempre who :P. Cmq bene, significa che hai capito come funziona. Se serve altro a disposizione

                              Dukan of Delucia [Kaos] - Dweyn [CK]

                              Commenta


                              • #60
                                Ma ora che ci penso, ma nella funzione creata da te posso lasciare who,item ??

                                E un'altra cosa:

                                Mandami il tuo MSN su PM che te devo chiedere una cosetta


                                Kaos nel cuore

                                Commenta

                                Sto operando...
                                X